From: Kalle Valo Date: Mon, 8 Feb 2021 17:04:02 +0000 (+0200) Subject: Merge tag 'mt76-for-kvalo-2021-01-29' of https://github.com/nbd168/wireless X-Git-Tag: v5.12-rc1~200^2~62^2~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1299616023a0db19be4ff5588db4fb61d8cd51f9;p=thirdparty%2Fkernel%2Flinux.git Merge tag 'mt76-for-kvalo-2021-01-29' of https://github.com/nbd168/wireless mt76 patches for 5.12 * add new mt7921e driver * factor out common code shared between 7615/7663 and 7921 * performance optimizations * 7915 dbdc fixes * 802.11 encap offload support * support for multiple pcie gen1 host interfaces on 7915 * 7915 testmode support * bugfixes * testmode support enhancements * endian fixes * 7915 txbf support --- 1299616023a0db19be4ff5588db4fb61d8cd51f9 diff --cc drivers/net/wireless/mediatek/mt76/mt7915/mcu.c index e211a2bd4d3c0,0296f2aa7997d..195929242b72f --- a/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7915/mcu.c @@@ -255,10 -248,10 +248,10 @@@ mt7915_mcu_send_message(struct mt76_de { struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76); struct mt7915_mcu_txd *mcu_txd; - u8 seq, pkt_fmt, qidx; - enum mt76_txq_id txq; + enum mt76_mcuq_id qid; __le32 *txd; u32 val; + u8 seq; /* TODO: make dynamic based on msg type */ mdev->mcu.timeout = 20 * HZ; @@@ -267,22 -260,16 +260,16 @@@ if (!seq) seq = ++dev->mt76.mcu.msg_seq & 0xf; - if (cmd == -MCU_CMD_FW_SCATTER) { + if (cmd == MCU_CMD(FW_SCATTER)) { - txq = MT_MCUQ_FWDL; + qid = MT_MCUQ_FWDL; goto exit; } mcu_txd = (struct mt7915_mcu_txd *)skb_push(skb, sizeof(*mcu_txd)); - - if (test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state)) { + if (test_bit(MT76_STATE_MCU_RUNNING, &dev->mphy.state)) - txq = MT_MCUQ_WA; + qid = MT_MCUQ_WA; - qidx = MT_TX_MCU_PORT_RX_Q0; - pkt_fmt = MT_TX_TYPE_CMD; - } else { + else - txq = MT_MCUQ_WM; + qid = MT_MCUQ_WM; - qidx = MT_TX_MCU_PORT_RX_Q0; - pkt_fmt = MT_TX_TYPE_CMD; - } txd = mcu_txd->txd; @@@ -326,9 -310,25 +310,25 @@@ exit if (wait_seq) *wait_seq = seq; - return mt76_tx_queue_skb_raw(dev, mdev->q_mcu[txq], skb, 0); + return mt76_tx_queue_skb_raw(dev, mdev->q_mcu[qid], skb, 0); } + static void + mt7915_mcu_wa_cmd(struct mt7915_dev *dev, int cmd, u32 a1, u32 a2, u32 a3) + { + struct { + __le32 args[3]; + } req = { + .args = { + cpu_to_le32(a1), + cpu_to_le32(a2), + cpu_to_le32(a3), + }, + }; + + mt76_mcu_send_msg(&dev->mt76, cmd, &req, sizeof(req), true); + } + static void mt7915_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif) {