]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: mt76: route nullfunc frames to PSD/ALTX queue
authorFelix Fietkau <nbd@nbd.name>
Mon, 9 Mar 2026 06:07:28 +0000 (06:07 +0000)
committerFelix Fietkau <nbd@nbd.name>
Tue, 24 Mar 2026 15:49:31 +0000 (15:49 +0000)
ieee80211_is_data() returns true for nullfunc/QoS-nullfunc frames, so
they bypass the PSD queue routing and go through the regular VO data
queue. This means firmware processes them through the normal TID queue
instead of the ALTX queue, which doesn't guarantee immediate
transmission.

Use ieee80211_is_data_present() instead, which returns false for both
management frames and nullfunc/QoS-nullfunc (no payload), routing them
to MT_TXQ_PSD. Firmware maps PSD to the ALTX queue, which transmits
immediately without PS buffering.

This only affects frames from the mt76_tx() pending path. Regular
mac80211 TXQ scheduling is unchanged.

Link: https://patch.msgid.link/20260309060730.87840-9-nbd@nbd.name
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/tx.c

index ab62591b7a2604be58a31637518f402f86a88f94..7b0fae694f120afdfb2271cb2001b483d344443c 100644 (file)
@@ -632,7 +632,7 @@ 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_data_present(hdr->frame_control) &&
                    (!ieee80211_is_bufferable_mmpdu(skb) ||
                     ieee80211_is_deauth(hdr->frame_control) ||
                     head == &wcid->tx_offchannel))