wifi: mt76: mt7996: Add all active links to poll list in mt7996_mac_tx_free()

Add all valid links to poll list for Airtime Fairness/AQL accounting when
tx-free event occurs.

Co-developed-by: Bo Jiao <Bo.Jiao@mediatek.com>
Signed-off-by: Bo Jiao <Bo.Jiao@mediatek.com>
Co-developed-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250904-mt7996-mlo-more-fixes-v1-2-89d8fed67f20@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Lorenzo Bianconi 2025-09-04 09:56:40 +02:00 committed by Felix Fietkau
parent a3ea1c309b
commit 9aa03d1823

View File

@ -1253,6 +1253,9 @@ mt7996_mac_tx_free(struct mt7996_dev *dev, void *data, int len)
info = le32_to_cpu(*cur_info);
if (info & MT_TXFREE_INFO_PAIR) {
struct ieee80211_sta *sta;
unsigned long valid_links;
struct mt7996_sta *msta;
unsigned int id;
u16 idx;
idx = FIELD_GET(MT_TXFREE_INFO_WLAN_ID, info);
@ -1267,7 +1270,21 @@ mt7996_mac_tx_free(struct mt7996_dev *dev, void *data, int len)
if (!link_sta)
goto next;
mt76_wcid_add_poll(&dev->mt76, wcid);
msta = (struct mt7996_sta *)sta->drv_priv;
valid_links = sta->valid_links ?: BIT(0);
/* For MLD STA, add all link's wcid to sta_poll_list */
for_each_set_bit(id, &valid_links,
IEEE80211_MLD_MAX_NUM_LINKS) {
struct mt7996_sta_link *msta_link;
msta_link = rcu_dereference(msta->link[id]);
if (!msta_link)
continue;
mt76_wcid_add_poll(&dev->mt76,
&msta_link->wcid);
}
next:
/* ver 7 has a new DW with pair = 1, skip it */
if (ver == 7 && ((void *)(cur_info + 1) < end) &&