mt76: mt7915: fix processing txfree events
authorFelix Fietkau <nbd@nbd.name>
Sun, 27 Sep 2020 14:36:25 +0000 (16:36 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 4 Dec 2020 12:46:14 +0000 (13:46 +0100)
In the MT7915 info, the fields for the WLAN index / queue overlap with the
token id, and the MT_TX_FREE_PAIR bit indicates, which one is present.

If MT_TX_FREE_PAIR is set, skip processing the token index, since the data
will not be valid.

This fixes accidentally freeing tokens which are still in use by the
hardware with a wrong station pointer.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7915/mac.c

index 44a5b4f..3456d95 100644 (file)
@@ -972,6 +972,7 @@ void mt7915_mac_tx_free(struct mt7915_dev *dev, struct sk_buff *skb)
                        if (list_empty(&msta->poll_list))
                                list_add_tail(&msta->poll_list, &dev->sta_poll_list);
                        spin_unlock_bh(&dev->sta_poll_lock);
+                       continue;
                }
 
                msdu = FIELD_GET(MT_TX_FREE_MSDU_ID, info);