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

Commit ddfe49b4 authored by Johannes Berg's avatar Johannes Berg
Browse files

mac80211: continue using disabled channels while connected



In case the AP has different regulatory information than we do,
it can happen that we connect to an AP based on e.g. the world
roaming regulatory data, and then update our database with the
AP's country information disables the channel the AP is using.
If this happens on an HT AP, the bandwidth tracking code will
hit the WARN_ON() and disconnect. Since that's not very useful,
ignore the channel-disable flag in bandwidth tracking.

Cc: stable@vger.kernel.org
Reported-by: default avatarChris Wright <chrisw@sous-sol.org>
Tested-by: default avatarChris Wright <chrisw@sous-sol.org>
Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 74418ede
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -335,7 +335,16 @@ ieee80211_determine_chantype(struct ieee80211_sub_if_data *sdata,
	if (ret & IEEE80211_STA_DISABLE_VHT)
		vht_chandef = *chandef;

	/*
	 * Ignore the DISABLED flag when we're already connected and only
	 * tracking the APs beacon for bandwidth changes - otherwise we
	 * might get disconnected here if we connect to an AP, update our
	 * regulatory information based on the AP's country IE and the
	 * information we have is wrong/outdated and disables the channel
	 * that we're actually using for the connection to the AP.
	 */
	while (!cfg80211_chandef_usable(sdata->local->hw.wiphy, chandef,
					tracking ? 0 :
						   IEEE80211_CHAN_DISABLED)) {
		if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) {
			ret = IEEE80211_STA_DISABLE_HT |