Skip to content

Commit

Permalink
wifi: mac80211: also verify requirements in EXT_SUPP_RATES
Browse files Browse the repository at this point in the history
Parse both the Supported Rates and BSS Membership Selectors as well as
the extended version of the tag when verifying whether we support all
features.

Signed-off-by: Benjamin Berg <benjamin.berg@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://patch.msgid.link/20250101070249.f1840f19afa7.I12e3a0e634ce7014f5067256d9a6215fec6bf165@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
  • Loading branch information
Benjamin Berg authored and Johannes Berg committed Jan 13, 2025
1 parent 8ee0b20 commit 708d06b
Showing 1 changed file with 10 additions and 3 deletions.
13 changes: 10 additions & 3 deletions net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -593,16 +593,21 @@ ieee80211_verify_sta_eht_mcs_support(struct ieee80211_sub_if_data *sdata,
static void ieee80211_get_rates(struct ieee80211_supported_band *sband,
const u8 *supp_rates,
unsigned int supp_rates_len,
const u8 *ext_supp_rates,
unsigned int ext_supp_rates_len,
u32 *rates, u32 *basic_rates,
unsigned long *unknown_rates_selectors,
bool *have_higher_than_11mbit,
int *min_rate, int *min_rate_index)
{
int i, j;

for (i = 0; i < supp_rates_len; i++) {
int rate = supp_rates[i] & 0x7f;
bool is_basic = !!(supp_rates[i] & 0x80);
for (i = 0; i < supp_rates_len + ext_supp_rates_len; i++) {
u8 supp_rate = i < supp_rates_len ?
supp_rates[i] :
ext_supp_rates[i - supp_rates_len];
int rate = supp_rate & 0x7f;
bool is_basic = !!(supp_rate & 0x80);

if ((rate * 5) > 110 && have_higher_than_11mbit)
*have_higher_than_11mbit = true;
Expand Down Expand Up @@ -923,6 +928,7 @@ ieee80211_determine_chan_mode(struct ieee80211_sub_if_data *sdata,
sband = sdata->local->hw.wiphy->bands[channel->band];

ieee80211_get_rates(sband, elems->supp_rates, elems->supp_rates_len,
elems->ext_supp_rates, elems->ext_supp_rates_len,
NULL, NULL, unknown_rates_selectors, NULL, NULL,
NULL);

Expand Down Expand Up @@ -5183,6 +5189,7 @@ static int ieee80211_mgd_setup_link_sta(struct ieee80211_link_data *link,
sband = local->hw.wiphy->bands[cbss->channel->band];

ieee80211_get_rates(sband, bss->supp_rates, bss->supp_rates_len,
NULL, 0,
&rates, &basic_rates, NULL,
&have_higher_than_11mbit,
&min_rate, &min_rate_index);
Expand Down

0 comments on commit 708d06b

Please sign in to comment.