wifi: mac80211: fix deactivated link CSA

If the link is deactivated and the CSA completes, then that
needs to update the link station's bandwidth (only the AP STA
can exist at this point, no TDLS on inactive links) and set
the CSA to no longer be active. Fix this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250609213231.07f120cf687d.I5a868c501ee73fcc2355d61c2ee06e5f444b350f@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Johannes Berg 2025-06-09 21:35:18 +03:00
parent bc7566fbc4
commit 6f9e701c16

View file

@ -2381,9 +2381,26 @@ static void ieee80211_csa_switch_work(struct wiphy *wiphy,
* update cfg80211 directly.
*/
if (!ieee80211_vif_link_active(&sdata->vif, link->link_id)) {
struct link_sta_info *link_sta;
struct sta_info *ap_sta;
link->conf->chanreq = link->csa.chanreq;
cfg80211_ch_switch_notify(sdata->dev, &link->csa.chanreq.oper,
link->link_id);
link->conf->csa_active = false;
ap_sta = sta_info_get(sdata, sdata->vif.cfg.ap_addr);
if (WARN_ON(!ap_sta))
return;
link_sta = wiphy_dereference(wiphy,
ap_sta->link[link->link_id]);
if (WARN_ON(!link_sta))
return;
link_sta->pub->bandwidth =
_ieee80211_sta_cur_vht_bw(link_sta,
&link->csa.chanreq.oper);
return;
}