Commit 302ff8b7 authored by Ilan Peer's avatar Ilan Peer Committed by Johannes Berg

mac80211: Fail association when AP has no legacy rates

The MLME logic had a workaround that allowed to continue an
association with an AP even if the AP did not provide any basic
rates in its supported rates in the association response, assuming
that the first (non basic) legacy rate could be used as a basic rate.
However, this did not consider the case where the AP (which is
obviously buggy) did not provide any legacy rate.

Fix this by failing the association, as this can result in
an unexpected failure in the low level driver and FW, e.g., in
rate scale logic etc.
Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
Signed-off-by: default avatarLuca Coelho <luciano.coelho@intel.com>
Link: https://lore.kernel.org/r/iwlwifi.20200326150855.d70a1450d83f.I6e6ce5efda351a8544c0e7bfeee260fe3360d401@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 0c197f16
...@@ -5036,8 +5036,16 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata, ...@@ -5036,8 +5036,16 @@ static int ieee80211_prep_connection(struct ieee80211_sub_if_data *sdata,
* doesn't happen any more, but keep the workaround so * doesn't happen any more, but keep the workaround so
* in case some *other* APs are buggy in different ways * in case some *other* APs are buggy in different ways
* we can connect -- with a warning. * we can connect -- with a warning.
* Allow this workaround only in case the AP provided at least
* one rate.
*/ */
if (!basic_rates && min_rate_index >= 0) { if (min_rate_index < 0) {
sdata_info(sdata,
"No legacy rates in association response\n");
sta_info_free(local, new_sta);
return -EINVAL;
} else if (!basic_rates) {
sdata_info(sdata, sdata_info(sdata,
"No basic rates, using min rate instead\n"); "No basic rates, using min rate instead\n");
basic_rates = BIT(min_rate_index); basic_rates = BIT(min_rate_index);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment