wifi: mt76: fix queue assignment for deauth packets
authorFelix Fietkau <nbd@nbd.name>
Mon, 7 Jul 2025 15:47:02 +0000 (17:47 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 7 Jul 2025 16:02:26 +0000 (18:02 +0200)
When running in AP mode and deauthenticating a client that's in powersave
mode, the disassoc/deauth packet can get stuck in a tx queue along with
other buffered frames. This can fill up hardware queues with frames
that are only released after the WTBL slot is reused for another client.

Fix this by moving deauth packets to the ALTX queue.

Reported-by: Chad Monroe <chad.monroe@adtran.com>
Link: https://patch.msgid.link/20250707154702.1726-2-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/tx.c

index 251ee3ce5e4d1833ae1fbca7da7dda37e063809b..e6cf16706667e783168dbd7fefe3254f0797ae67 100644 (file)
@@ -615,7 +615,8 @@ mt76_txq_schedule_pending_wcid(struct mt76_phy *phy, struct mt76_wcid *wcid,
                if ((dev->drv->drv_flags & MT_DRV_HW_MGMT_TXQ) &&
                    !(info->flags & IEEE80211_TX_CTL_HW_80211_ENCAP) &&
                    !ieee80211_is_data(hdr->frame_control) &&
-                   !ieee80211_is_bufferable_mmpdu(skb))
+                   (!ieee80211_is_bufferable_mmpdu(skb) ||
+                    ieee80211_is_deauth(hdr->frame_control)))
                        qid = MT_TXQ_PSD;
 
                q = phy->q_tx[qid];