wifi: mac80211: use only channel width in ieee80211_parse_bitrates()
authorJohannes Berg <johannes.berg@intel.com>
Fri, 1 Jul 2022 12:01:59 +0000 (14:01 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 15 Jul 2022 09:43:18 +0000 (11:43 +0200)
For MLO, we may not have a full chandef here later, so change
the API to pass only the width.

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

index e0ddecbb50aa480554fba53bc596a515d76af9a8..a9f8042be36d377ddb9101e55f78ff9e766cf94f 100644 (file)
@@ -1633,7 +1633,7 @@ static int sta_link_apply_parameters(struct ieee80211_local *local,
 
        if (params->supported_rates &&
            params->supported_rates_len) {
-               ieee80211_parse_bitrates(&link->conf->chandef,
+               ieee80211_parse_bitrates(link->conf->chandef.width,
                                         sband, params->supported_rates,
                                         params->supported_rates_len,
                                         &link_sta->pub->supp_rates[sband->band]);
@@ -2518,7 +2518,7 @@ static int ieee80211_change_bss(struct wiphy *wiphy,
        }
 
        if (params->basic_rates) {
-               ieee80211_parse_bitrates(&sdata->vif.bss_conf.chandef,
+               ieee80211_parse_bitrates(sdata->vif.bss_conf.chandef.width,
                                         wiphy->bands[sband->band],
                                         params->basic_rates,
                                         params->basic_rates_len,
index dc38f57fcdc9b7d678557c0f10aa76b398ca78ca..74d5fc5889bb1869584123b04760f5f362985a06 100644 (file)
@@ -1102,9 +1102,9 @@ sdata_assert_lock(struct ieee80211_sub_if_data *sdata)
 }
 
 static inline int
-ieee80211_chandef_get_shift(struct cfg80211_chan_def *chandef)
+ieee80211_chanwidth_get_shift(enum nl80211_chan_width width)
 {
-       switch (chandef->width) {
+       switch (width) {
        case NL80211_CHAN_WIDTH_5:
                return 2;
        case NL80211_CHAN_WIDTH_10:
@@ -1114,6 +1114,12 @@ ieee80211_chandef_get_shift(struct cfg80211_chan_def *chandef)
        }
 }
 
+static inline int
+ieee80211_chandef_get_shift(struct cfg80211_chan_def *chandef)
+{
+       return ieee80211_chanwidth_get_shift(chandef->width);
+}
+
 static inline int
 ieee80211_vif_get_shift(struct ieee80211_vif *vif)
 {
@@ -2346,7 +2352,7 @@ u8 *ieee80211_ie_build_he_cap(ieee80211_conn_flags_t disable_flags, u8 *pos,
 void ieee80211_ie_build_he_6ghz_cap(struct ieee80211_sub_if_data *sdata,
                                    struct sk_buff *skb);
 u8 *ieee80211_ie_build_he_oper(u8 *pos, struct cfg80211_chan_def *chandef);
-int ieee80211_parse_bitrates(struct cfg80211_chan_def *chandef,
+int ieee80211_parse_bitrates(enum nl80211_chan_width width,
                             const struct ieee80211_supported_band *sband,
                             const u8 *srates, int srates_len, u32 *rates);
 int ieee80211_add_srates_ie(struct ieee80211_sub_if_data *sdata,
index e2472c0927ac213e30497e26bd9d24ba4d8e41e2..e0b290730bafcb6dca3808cd0a73b86f8b31bc83 100644 (file)
@@ -819,7 +819,8 @@ static int ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
                 * in the association request (e.g. D-Link DAP 1353 in
                 * b-only mode)...
                 */
-               rates_len = ieee80211_parse_bitrates(&chanctx_conf->def, sband,
+               rates_len = ieee80211_parse_bitrates(chanctx_conf->def.width,
+                                                    sband,
                                                     assoc_data->supp_rates,
                                                     assoc_data->supp_rates_len,
                                                     &rates);
index 9394aef30ba482d47a37702a3a69861eb1874984..6d6ba23aa0741cbaa1474752b764a8a18b2ee41d 100644 (file)
@@ -3689,12 +3689,12 @@ bool ieee80211_chandef_s1g_oper(const struct ieee80211_s1g_oper_ie *oper,
        return true;
 }
 
-int ieee80211_parse_bitrates(struct cfg80211_chan_def *chandef,
+int ieee80211_parse_bitrates(enum nl80211_chan_width width,
                             const struct ieee80211_supported_band *sband,
                             const u8 *srates, int srates_len, u32 *rates)
 {
-       u32 rate_flags = ieee80211_chandef_rate_flags(chandef);
-       int shift = ieee80211_chandef_get_shift(chandef);
+       u32 rate_flags = ieee80211_chanwidth_rate_flags(width);
+       int shift = ieee80211_chanwidth_get_shift(width);
        struct ieee80211_rate *br;
        int brate, rate, i, j, count = 0;