On 09/29/2010 09:48 AM, Johannes Berg wrote:
On Wed, 2010-09-29 at 08:30 -0700, Ben Greear wrote:
Does this portion seem useful as a stand-alone patch? It does not
depend on the other scan-one logic.
Somewhat, but it seems a bit buggy?
diff --git a/net/mac80211/work.c b/net/mac80211/work.c
index ae344d1..1bfc1e0 100644
--- a/net/mac80211/work.c
+++ b/net/mac80211/work.c
@@ -910,12 +910,17 @@ static void ieee80211_work_work(struct work_struct *work)
* happen to be on the same channel as
* the requested channel
*/
- ieee80211_offchannel_stop_beaconing(local);
- ieee80211_offchannel_stop_station(local);
-
- local->tmp_channel = wk->chan;
- local->tmp_channel_type = wk->chan_type;
- ieee80211_hw_config(local, 0);
+ if (!(wk->chan == local->scan_channel ||
+ (wk->chan == local->oper_channel&&
I don't think work items will ever run while scanning? And also, this
might need to check the channel type as well, which isn't quite
necessary right now (since no works requires HT channels) but would seem
cleaner.
Just in case work ever does happen when scanning, I think we should
leave this check in.
I'll add a check for channel_type being the same as well.
+ !local->scan_channel))) {
+ /* Only change channels if we need to */
+ ieee80211_offchannel_stop_beaconing(local);
+ ieee80211_offchannel_stop_station(local);
+
+ local->tmp_channel = wk->chan;
+ local->tmp_channel_type = wk->chan_type;
+ ieee80211_hw_config(local, 0);
+ }
started = true;
wk->timeout = jiffies;
Also, I believe it needs matching code to not do all the return stuff
since we never left the channel, and I think it still needs to set
tmp_channel so that nothing will switch away underneath or so... not
quite sure.
Ok, that sounds good. I'll work on a revised patch when I get a chance.
Thanks,
Ben
--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc http://www.candelatech.com
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html