Merge tag 'mt76-for-kvalo-2021-01-29' of https://github.com/nbd168/wireless
authorKalle Valo <kvalo@codeaurora.org>
Mon, 8 Feb 2021 17:04:02 +0000 (19:04 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Mon, 8 Feb 2021 17:04:02 +0000 (19:04 +0200)
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

1  2 
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c
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;
        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)
  {