From 044081b2027b020445f4f3c2a4742934e9c64dfc Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 4 Aug 2026 07:09:28 +0200 Subject: [PATCH] wifi: mt76: mt7996: program a link we already hold again The firmware wants active links removed from the BSSINFO table as the interface is destroyed, so a link stays registered from its first chanctx assignment until the interface goes away, and adding one the driver already holds does nothing. mac80211 hands a non-AP MLD a fresh address whenever it sets a link up, though, so a link coming back after a failed attempt carries an address the hardware was never told about, on a BSS that was never revisited: it authenticates from an address nothing answers, every time, until the interface is torn down for good. Program the address and the BSS again, the pair the initial add sets up, which is for a station what mt7996_mcu_mld_link_oper() does for an AP. Signed-off-by: Felix Fietkau --- mt7996/main.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/mt7996/main.c b/mt7996/main.c index 1afb926c..5e8493aa 100644 --- a/mt7996/main.c +++ b/mt7996/main.c @@ -310,7 +310,14 @@ int mt7996_vif_link_add(struct mt76_phy *mphy, struct ieee80211_vif *vif, if (vif->type == NL80211_IFTYPE_AP) return mt7996_mcu_mld_link_oper(dev, link_conf, link, true); - return 0; + + /* update the link address */ + ret = mt7996_mcu_add_dev_info(phy, vif, link_conf, mlink, true); + if (ret) + return ret; + + return mt7996_mcu_add_bss_info(phy, vif, link_conf, mlink, + msta_link, true); } mlink->idx = __ffs64(~dev->mt76.vif_mask);