]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: check txs format before getting skb by pid
authorPeter Chiu <chui-hao.chiu@mediatek.com>
Thu, 7 Dec 2023 23:35:39 +0000 (07:35 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 22 Feb 2024 08:55:16 +0000 (09:55 +0100)
The PPDU TxS does not include the error bit so it cannot use to report
status to mac80211.

Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac2_mac.h
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c

index bd2a92467a97f4cac305b116042afba23bb4478b..5f132115ebfc4ef4d2b723c2843f3f047457c9d2 100644 (file)
@@ -32,6 +32,11 @@ enum {
        MT_LMAC_PSMP0,
 };
 
+enum {
+       MT_TXS_MPDU_FMT = 0,
+       MT_TXS_PPDU_FMT = 2,
+};
+
 #define MT_TX_FREE_MSDU_CNT            GENMASK(9, 0)
 #define MT_TX_FREE_WLAN_ID             GENMASK(23, 14)
 #define MT_TX_FREE_COUNT               GENMASK(12, 0)
index 630c6402ec25761f230455e9f01eb8bd37e286ec..b841bf628d02670895f9b157970052fd6be293af 100644 (file)
@@ -716,6 +716,9 @@ bool mt76_connac2_mac_add_txs_skb(struct mt76_dev *dev, struct mt76_wcid *wcid,
        struct sk_buff_head list;
        struct sk_buff *skb;
 
+       if (le32_get_bits(txs_data[0], MT_TXS0_TXS_FORMAT) == MT_TXS_PPDU_FMT)
+               return false;
+
        mt76_tx_status_lock(dev, &list);
        skb = mt76_tx_status_skb_get(dev, wcid, pid, &list);
        if (skb) {