]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mac80211: fix deactivated link CSA
authorJohannes Berg <johannes.berg@intel.com>
Mon, 9 Jun 2025 18:35:18 +0000 (21:35 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 9 Jul 2025 09:52:35 +0000 (11:52 +0200)
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>
net/mac80211/mlme.c

index b5fdbdb401012f49cd7122f8b23621d704a1ef5f..2c700d12eef600e773417b940447d311e72461fb 100644 (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;
        }