wifi: mac80211: make ieee80211_check_rate_mask() link-aware
authorJohannes Berg <johannes.berg@intel.com>
Mon, 11 Jul 2022 13:13:20 +0000 (15:13 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 15 Jul 2022 09:43:21 +0000 (11:43 +0200)
Change ieee80211_check_rate_mask() to use a link rather than
the sdata and deflink/bss_conf.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/cfg.c
net/mac80211/mlme.c
net/mac80211/rate.c
net/mac80211/rate.h

index a9f8042..bdc3d74 100644 (file)
@@ -2524,7 +2524,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
                                         params->basic_rates_len,
                                         &sdata->vif.bss_conf.basic_rates);
                changed |= BSS_CHANGED_BASIC_RATES;
-               ieee80211_check_rate_mask(sdata);
+               ieee80211_check_rate_mask(&sdata->deflink);
        }
 
        if (params->ap_isolate >= 0) {
index b55d104..5c08b25 100644 (file)
@@ -2361,7 +2361,7 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata,
        memcpy(link->u.mgd.bssid, cbss->bssid, ETH_ALEN);
        memcpy(sdata->vif.cfg.ap_addr, cbss->bssid, ETH_ALEN);
 
-       ieee80211_check_rate_mask(sdata);
+       ieee80211_check_rate_mask(link);
 
        if (sdata->vif.p2p ||
            sdata->vif.driver_flags & IEEE80211_VIF_GET_NOA_UPDATE) {
index 7947e9a..d5ea5f5 100644 (file)
@@ -270,17 +270,18 @@ static void rate_control_free(struct ieee80211_local *local,
        kfree(ctrl_ref);
 }
 
-void ieee80211_check_rate_mask(struct ieee80211_sub_if_data *sdata)
+void ieee80211_check_rate_mask(struct ieee80211_link_data *link)
 {
+       struct ieee80211_sub_if_data *sdata = link->sdata;
        struct ieee80211_local *local = sdata->local;
        struct ieee80211_supported_band *sband;
-       u32 user_mask, basic_rates = sdata->vif.bss_conf.basic_rates;
+       u32 user_mask, basic_rates = link->conf->basic_rates;
        enum nl80211_band band;
 
-       if (WARN_ON(!sdata->vif.bss_conf.chandef.chan))
+       if (WARN_ON(!link->conf->chandef.chan))
                return;
 
-       band = sdata->vif.bss_conf.chandef.chan->band;
+       band = link->conf->chandef.chan->band;
        if (band == NL80211_BAND_S1GHZ) {
                /* TODO */
                return;
index d89c135..d6190f1 100644 (file)
@@ -85,7 +85,7 @@ static inline void rate_control_add_debugfs(struct ieee80211_local *local)
 #endif
 }
 
-void ieee80211_check_rate_mask(struct ieee80211_sub_if_data *sdata);
+void ieee80211_check_rate_mask(struct ieee80211_link_data *link);
 
 /* Get a reference to the rate control algorithm. If `name' is NULL, get the
  * first available algorithm. */