mt76: mt7921: update mt7921_skb_add_usb_sdio_hdr to support usb
authorLorenzo Bianconi <lorenzo@kernel.org>
Mon, 14 Mar 2022 15:10:27 +0000 (16:10 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 16 Mar 2022 16:40:23 +0000 (17:40 +0100)
This is a preliminary patch to add mt7921u driver support.

Tested-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mcu.c

index 3952247659fa2d6ee108b80c6192bda8b9220dd3..39ad75af988c5352dc895f978bef2164cf566f6e 100644 (file)
@@ -352,12 +352,14 @@ static inline void mt7921_mcu_tx_cleanup(struct mt7921_dev *dev)
        mt76_queue_tx_cleanup(dev, dev->mt76.q_mcu[MT_MCUQ_WA], false);
 }
 
-static inline void mt7921_skb_add_sdio_hdr(struct sk_buff *skb,
-                                          enum mt7921_sdio_pkt_type type)
+static inline void
+mt7921_skb_add_usb_sdio_hdr(struct mt7921_dev *dev, struct sk_buff *skb,
+                           int type)
 {
-       u32 hdr;
+       u32 hdr, len;
 
-       hdr = FIELD_PREP(MT7921_SDIO_HDR_TX_BYTES, skb->len + sizeof(hdr)) |
+       len = mt76_is_usb(&dev->mt76) ? skb->len : skb->len + sizeof(hdr);
+       hdr = FIELD_PREP(MT7921_SDIO_HDR_TX_BYTES, len) |
              FIELD_PREP(MT7921_SDIO_HDR_PKT_TYPE, type);
 
        put_unaligned_le32(hdr, skb_push(skb, sizeof(hdr)));
index 09bcabd6cb8a315e97f4f2bbebafe5f3368e4837..248d3f3cdb0860d9041cf41f48a7704bd47e6ec7 100644 (file)
@@ -183,7 +183,7 @@ int mt7921s_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
        pktid = mt76_tx_status_skb_add(&dev->mt76, wcid, skb);
        mt7921s_write_txwi(dev, wcid, qid, sta, key, pktid, skb);
 
-       mt7921_skb_add_sdio_hdr(skb, MT7921_SDIO_DATA);
+       mt7921_skb_add_usb_sdio_hdr(dev, skb, MT7921_SDIO_DATA);
        pad = round_up(skb->len, 4) - skb->len;
 
        err = mt76_skb_adjust_pad(skb, pad);
index 5d8af18c702671db30e2a41a3ded9a6ea8548645..54a5c712a3c3e017c49879f6111d4ff332d04077 100644 (file)
@@ -36,7 +36,7 @@ mt7921s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,
        if (cmd == MCU_CMD(FW_SCATTER))
                type = MT7921_SDIO_FWDL;
 
-       mt7921_skb_add_sdio_hdr(skb, type);
+       mt7921_skb_add_usb_sdio_hdr(dev, skb, type);
        pad = round_up(skb->len, 4) - skb->len;
        __skb_put_zero(skb, pad);