mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
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 <[email protected]>
This commit is contained in:
+8
-1
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user