Index: chromeos/compat-wireless/net/mac80211/main.c |
diff --git a/chromeos/compat-wireless/net/mac80211/main.c b/chromeos/compat-wireless/net/mac80211/main.c |
index cd669529b34c079bedf472841185177329b88d6e..bf0938f7e71b8e533231a8f84b3f359c80d17413 100644 |
--- a/chromeos/compat-wireless/net/mac80211/main.c |
+++ b/chromeos/compat-wireless/net/mac80211/main.c |
@@ -112,7 +112,8 @@ int ieee80211_hw_config(struct ieee80211_local *local, u32 changed) |
chan = scan_chan; |
channel_type = NL80211_CHAN_NO_HT; |
local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; |
- } else if (local->tmp_channel) { |
+ } else if (local->tmp_channel && |
+ local->oper_channel != local->tmp_channel) { |
Sam Leffler
2010/12/01 00:23:44
<come back to this>
|
chan = scan_chan = local->tmp_channel; |
channel_type = local->tmp_channel_type; |
local->hw.conf.flags |= IEEE80211_CONF_OFFCHANNEL; |
@@ -738,6 +739,12 @@ void ieee80211_unregister_hw(struct ieee80211_hw *hw) |
rtnl_unlock(); |
+ /* |
+ * Now all work items will be gone, but the |
+ * timer might still be armed, so delete it |
+ */ |
+ del_timer_sync(&local->work_timer); |
+ |
cancel_work_sync(&local->reconfig_filter); |
ieee80211_clear_tx_pending(local); |