diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-06-18 12:32:20 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-06-18 15:11:14 -0400 |
commit | 543708be320d7df692d24b349ca01a947b340764 (patch) | |
tree | 7ca928290eb276ea25afbc6b12d8d8f63dfea167 | |
parent | 8223d2f540c96f46f762fbd93f59a08bb80601c1 (diff) |
mac80211: fix sw scan bracketingmaster-2010-06-18
Currently, detection in hwsim and ath9k can
detect that two sw scans are in flight at the
same time, which isn't really true. It is
caused by a race condition, because the scan
complete callback is called too late, after
the lock has been dropped, so that a new scan
can be started before it is called.
It is also called too early semantically, as
it is currently called _after_ the return to
the operating channel -- it should be before
so that drivers know this is the operating
channel again.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | net/mac80211/scan.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index e1b0be7a57b..36eb6dd7c75 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c @@ -286,6 +286,8 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted) local->scanning = 0; local->scan_channel = NULL; + drv_sw_scan_complete(local); + /* we only have to protect scan_req and hw/sw scan */ mutex_unlock(&local->scan_mtx); @@ -295,8 +297,6 @@ void ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted) ieee80211_configure_filter(local); - drv_sw_scan_complete(local); - ieee80211_offchannel_return(local, true); done: |