]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt76: mt7996: revise TXS size
authorBenjamin Lin <benjamin-jw.lin@mediatek.com>
Tue, 11 Mar 2025 10:36:38 +0000 (11:36 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:12:33 +0000 (11:12 +0200)
[ Upstream commit 593c829b4326f7b3b15a69e97c9044ecbad3c319 ]

Size of MPDU/PPDU TXS is 12 DWs.
In mt7996/mt7992, last 4 DWs are reserved, so TXS size was mistakenly
considered to be 8 DWs. However, in mt7990, 9th DW of TXS starts to be used.

Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Link: https://patch.msgid.link/20250311103646.43346-1-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt76_connac3_mac.h
drivers/net/wireless/mediatek/mt76/mt7996/mac.c

index db0c29e65185ca72a5bd2ee915e961f08ce6abb5..487ad716f872adcc30553ecda1606cc0e2dc496a 100644 (file)
@@ -314,6 +314,9 @@ enum tx_frag_idx {
 #define MT_TXFREE_INFO_COUNT           GENMASK(27, 24)
 #define MT_TXFREE_INFO_STAT            GENMASK(29, 28)
 
+#define MT_TXS_HDR_SIZE                        4 /* Unit: DW */
+#define MT_TXS_SIZE                    12 /* Unit: DW */
+
 #define MT_TXS0_BW                     GENMASK(31, 29)
 #define MT_TXS0_TID                    GENMASK(28, 26)
 #define MT_TXS0_AMPDU                  BIT(25)
index 88f9d9059d5f250d980fe1acfc10d7fb0a7697c6..c7e833602733407e61eb2aa8c9bebc401ba091fa 100644 (file)
@@ -1413,7 +1413,7 @@ bool mt7996_rx_check(struct mt76_dev *mdev, void *data, int len)
                mt7996_mac_tx_free(dev, data, len);
                return false;
        case PKT_TYPE_TXS:
-               for (rxd += 4; rxd + 8 <= end; rxd += 8)
+               for (rxd += MT_TXS_HDR_SIZE; rxd + MT_TXS_SIZE <= end; rxd += MT_TXS_SIZE)
                        mt7996_mac_add_txs(dev, rxd);
                return false;
        case PKT_TYPE_RX_FW_MONITOR:
@@ -1456,7 +1456,7 @@ void mt7996_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                mt7996_mcu_rx_event(dev, skb);
                break;
        case PKT_TYPE_TXS:
-               for (rxd += 4; rxd + 8 <= end; rxd += 8)
+               for (rxd += MT_TXS_HDR_SIZE; rxd + MT_TXS_SIZE <= end; rxd += MT_TXS_SIZE)
                        mt7996_mac_add_txs(dev, rxd);
                dev_kfree_skb(skb);
                break;