mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 10:33:41 +02:00
wifi: mac80211: also verify requirements in EXT_SUPP_RATES
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>
This commit is contained in:
parent
8ee0b202d0
commit
708d06b33b
|
|
@ -593,6 +593,8 @@ 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,
|
||||
|
|
@ -600,9 +602,12 @@ static void ieee80211_get_rates(struct ieee80211_supported_band *sband,
|
|||
{
|
||||
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;
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user