mac80211: merge a few pending fixes for channel switch handling (backport of r27783)
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 26 Jul 2011 16:24:24 +0000 (16:24 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Tue, 26 Jul 2011 16:24:24 +0000 (16:24 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@27784 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/mac80211/patches/300-pending_work.patch

index 7e3160a1db14662707f7f53b93d2b4a4359d3aff..f2e4fdb44525c531a2978021223349eb6fc0585b 100644 (file)
        {0x000081ec, 0x00000000},
        {0x000081f0, 0x00000000},
        {0x000081f4, 0x00000000},
        {0x000081ec, 0x00000000},
        {0x000081f0, 0x00000000},
        {0x000081f4, 0x00000000},
+--- a/net/mac80211/work.c
++++ b/net/mac80211/work.c
+@@ -1075,14 +1075,13 @@ static void ieee80211_work_work(struct w
+                       continue;
+               if (wk->chan != local->tmp_channel)
+                       continue;
+-              if (ieee80211_work_ct_coexists(wk->chan_type,
+-                                             local->tmp_channel_type))
++              if (!ieee80211_work_ct_coexists(wk->chan_type,
++                                              local->tmp_channel_type))
+                       continue;
+               remain_off_channel = true;
+       }
+       if (!remain_off_channel && local->tmp_channel) {
+-              bool on_oper_chan = ieee80211_cfg_on_oper_channel(local);
+               local->tmp_channel = NULL;
+               /* If tmp_channel wasn't operating channel, then
+                * we need to go back on-channel.
+@@ -1092,7 +1091,7 @@ static void ieee80211_work_work(struct w
+                * we still need to do a hardware config.  Currently,
+                * we cannot be here while scanning, however.
+                */
+-              if (ieee80211_cfg_on_oper_channel(local) && !on_oper_chan)
++              if (!ieee80211_cfg_on_oper_channel(local))
+                       ieee80211_hw_config(local, 0);
+               /* At the least, we need to disable offchannel_ps,