wifi: mac80211: remove only own link stations during stop_ap
authorAditya Kumar Singh <quic_adisi@quicinc.com>
Mon, 5 Feb 2024 16:29:52 +0000 (21:59 +0530)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 12 Feb 2024 20:15:34 +0000 (21:15 +0100)
Currently, whenever AP link is brought down via ieee80211_stop_ap()
function, all stations connected to the sdata are flushed. However, in case
of MLO there is a requirement to flush only stations connected to that link
and not all.

For instance - Consider 2 GHz and 5 GHz are AP MLD. Now due to some reason
5 GHz link of this AP is going down (link removal or any other case). All
stations connected, even legacy stations connected to 2 GHz link AP would
also be flushed. Flushing of other link stations is not desirable.

Fix this issue by passing self link ID to sta_flush() function. This would
then only remove the stations which are still using the passed link
ID as their link sta. Other stations will not be affected.

Signed-off-by: Aditya Kumar Singh <quic_adisi@quicinc.com>
Link: https://msgid.link/20240205162952.1697646-4-quic_adisi@quicinc.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/cfg.c

index 41fca30c896e6f9d571a95ceb22a2d3ef8f62231..0744113f3535dbb5a57c74db457692cd05164c65 100644 (file)
@@ -1616,7 +1616,7 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev,
        link_conf->ema_ap = false;
        link_conf->bssid_indicator = 0;
 
-       __sta_info_flush(sdata, true, -1);
+       __sta_info_flush(sdata, true, link_id);
        ieee80211_free_keys(sdata, true);
 
        link_conf->enable_beacon = false;