Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d61272cb authored by Tomas Winkler's avatar Tomas Winkler Committed by John W. Linville
Browse files

mac80211: fix basic rates setting from association response



In previous code all the rates were marked as basic.

Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarJohannes Berg <johannes@sipsolutions.net>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent ab1ef980
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -1291,29 +1291,35 @@ static void ieee80211_rx_mgmt_assoc_resp(struct ieee80211_sub_if_data *sdata,

	for (i = 0; i < elems.supp_rates_len; i++) {
		int rate = (elems.supp_rates[i] & 0x7f) * 5;
		bool is_basic = !!(elems.supp_rates[i] & 0x80);

		if (rate > 110)
			have_higher_than_11mbit = true;

		for (j = 0; j < sband->n_bitrates; j++) {
			if (sband->bitrates[j].bitrate == rate)
			if (sband->bitrates[j].bitrate == rate) {
				rates |= BIT(j);
			if (elems.supp_rates[i] & 0x80)
				if (is_basic)
					basic_rates |= BIT(j);
				break;
			}
		}
	}

	for (i = 0; i < elems.ext_supp_rates_len; i++) {
		int rate = (elems.ext_supp_rates[i] & 0x7f) * 5;
		bool is_basic = !!(elems.supp_rates[i] & 0x80);

		if (rate > 110)
			have_higher_than_11mbit = true;

		for (j = 0; j < sband->n_bitrates; j++) {
			if (sband->bitrates[j].bitrate == rate)
			if (sband->bitrates[j].bitrate == rate) {
				rates |= BIT(j);
			if (elems.ext_supp_rates[i] & 0x80)
				if (is_basic)
					basic_rates |= BIT(j);
				break;
			}
		}
	}