wifi: mt76: account non-AQL frames per peer rather than per link

The driver increments wcid->non_aql_packets when a frame goes to the
hardware queue. The completion path decrements the counter again.

For an MLO peer, the hardware reports the completion on the link that it
used for the transmission. This link can differ from the link that the
driver queued the frame on. In that case, the increment and the
decrement go to different link wcids, and the count drifts upwards until
it blocks the station.

Keep the count on the wcid of the primary link, like the other peer-wide
state.

Link: https://patch.msgid.link/[email protected]
Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2026-08-18 15:42:32 +02:00
parent 90f731f6c9
commit 2c84469c8f
2 changed files with 15 additions and 3 deletions
+7
View File
@@ -1434,6 +1434,13 @@ mtxq_to_txq(struct mt76_txq *mtxq)
return container_of(ptr, struct ieee80211_txq, drv_priv);
}
/* peer-wide state uses the wcid of the primary link */
static inline struct mt76_wcid *
mt76_wcid_primary(struct mt76_wcid *wcid)
{
return wcid->def_wcid ? wcid->def_wcid : wcid;
}
static inline struct ieee80211_sta *
wcid_to_sta(struct mt76_wcid *wcid)
{