|
|
@ -1116,3 +1116,31 @@ |
|
|
|
{0x000081ec, 0x00000000},
|
|
|
|
{0x000081ec, 0x00000000},
|
|
|
|
{0x000081f0, 0x00000000},
|
|
|
|
{0x000081f0, 0x00000000},
|
|
|
|
{0x000081f4, 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,
|
|
|
|