mac80211: minor fix for the offchannel status change notification
authorFelix Fietkau <nbd@openwrt.org>
Fri, 30 Jul 2010 10:52:51 +0000 (10:52 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Fri, 30 Jul 2010 10:52:51 +0000 (10:52 +0000)
SVN-Revision: 22417

package/mac80211/patches/524-mac80211_offchannel_fix.patch [new file with mode: 0644]

diff --git a/package/mac80211/patches/524-mac80211_offchannel_fix.patch b/package/mac80211/patches/524-mac80211_offchannel_fix.patch
new file mode 100644 (file)
index 0000000..ce594b0
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -99,11 +99,13 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
+       int ret = 0;
+       int power;
+       enum nl80211_channel_type channel_type;
++      u32 offchannel_flag;
+       might_sleep();
+       scan_chan = local->scan_channel;
++      offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
+       if (scan_chan) {
+               chan = scan_chan;
+               channel_type = NL80211_CHAN_NO_HT;
+@@ -117,8 +119,9 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed)
+               channel_type = local->_oper_channel_type;
+               local->hw.conf.flags &= ~IEEE80211_CONF_OFFCHANNEL;
+       }
++      offchannel_flag ^= local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL;
+-      if (chan != local->hw.conf.channel ||
++      if (offchannel_flag || chan != local->hw.conf.channel ||
+           channel_type != local->hw.conf.channel_type) {
+               local->hw.conf.channel = chan;
+               local->hw.conf.channel_type = channel_type;