diff options
author | Josh Boyer <jwboyer@redhat.com> | 2013-08-01 08:49:55 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@redhat.com> | 2013-08-01 08:50:16 -0400 |
commit | 5481645f3ccf95c1c6f22c844a541e7a970bfa7f (patch) | |
tree | d2d71b387846e54f2454fa10c1c715e1cbe43f5b /mac80211-continue-using-disabled-channels-while-connected.patch | |
parent | c35d85bd25d1673fa355e99055352b0141a3c1ef (diff) | |
download | kernel-5481645f3ccf95c1c6f22c844a541e7a970bfa7f.tar.gz kernel-5481645f3ccf95c1c6f22c844a541e7a970bfa7f.tar.xz kernel-5481645f3ccf95c1c6f22c844a541e7a970bfa7f.zip |
Fix mac80211 connection issues (rhbz 981445)
Diffstat (limited to 'mac80211-continue-using-disabled-channels-while-connected.patch')
-rw-r--r-- | mac80211-continue-using-disabled-channels-while-connected.patch | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/mac80211-continue-using-disabled-channels-while-connected.patch b/mac80211-continue-using-disabled-channels-while-connected.patch new file mode 100644 index 000000000..91dd1d7db --- /dev/null +++ b/mac80211-continue-using-disabled-channels-while-connected.patch @@ -0,0 +1,43 @@ +From ddfe49b42d8ad4bfdf92d63d4a74f162660d878d Mon Sep 17 00:00:00 2001 +From: Johannes Berg <johannes.berg@intel.com> +Date: Wed, 31 Jul 2013 18:52:03 +0000 +Subject: 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: Chris Wright <chrisw@sous-sol.org> +Tested-by: Chris Wright <chrisw@sous-sol.org> +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- +diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c +index 077a953..cc9e02d 100644 +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -335,8 +335,17 @@ out: + 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, +- IEEE80211_CHAN_DISABLED)) { ++ tracking ? 0 : ++ IEEE80211_CHAN_DISABLED)) { + if (WARN_ON(chandef->width == NL80211_CHAN_WIDTH_20_NOHT)) { + ret = IEEE80211_STA_DISABLE_HT | + IEEE80211_STA_DISABLE_VHT; +-- +cgit v0.9.2 |