summaryrefslogtreecommitdiffstats
path: root/mac80211-continue-using-disabled-channels-while-connected.patch
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2013-08-01 08:49:55 -0400
committerJosh Boyer <jwboyer@redhat.com>2013-08-01 08:50:16 -0400
commit5481645f3ccf95c1c6f22c844a541e7a970bfa7f (patch)
treed2d71b387846e54f2454fa10c1c715e1cbe43f5b /mac80211-continue-using-disabled-channels-while-connected.patch
parentc35d85bd25d1673fa355e99055352b0141a3c1ef (diff)
downloadkernel-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.patch43
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