]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: mt7996: fix wrong DMAD length when using MAC TXP
authorShayne Chen <shayne.chen@mediatek.com>
Tue, 3 Feb 2026 15:55:29 +0000 (23:55 +0800)
committerFelix Fietkau <nbd@nbd.name>
Tue, 24 Mar 2026 15:49:30 +0000 (15:49 +0000)
The struct mt76_connac_fw_txp is used for HIF TXP. Change to use the
struct mt76_connac_hw_txp to fix the wrong DMAD length for MAC TXP.

Fixes: cb6ebbdffef2 ("wifi: mt76: mt7996: support writing MAC TXD for AddBA Request")
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Link: https://patch.msgid.link/20260203155532.1098290-1-shayne.chen@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/mac.c

index c6028fabd7d135aad980f7f91aab3424994ae841..208ed20d0bf952f1f5631650f288d361e252d2fa 100644 (file)
@@ -1100,10 +1100,10 @@ int mt7996_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
         * req
         */
        if (le32_to_cpu(ptr[7]) & MT_TXD7_MAC_TXD) {
-               u32 val;
+               u32 val, mac_txp_size = sizeof(struct mt76_connac_hw_txp);
 
                ptr = (__le32 *)(txwi + MT_TXD_SIZE);
-               memset((void *)ptr, 0, sizeof(struct mt76_connac_fw_txp));
+               memset((void *)ptr, 0, mac_txp_size);
 
                val = FIELD_PREP(MT_TXP0_TOKEN_ID0, id) |
                      MT_TXP0_TOKEN_ID0_VALID_MASK;
@@ -1122,6 +1122,8 @@ int mt7996_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
                                  tx_info->buf[1].addr >> 32);
 #endif
                ptr[3] = cpu_to_le32(val);
+
+               tx_info->buf[0].len = MT_TXD_SIZE + mac_txp_size;
        } else {
                struct mt76_connac_txp_common *txp;