diff options
author | Eliad Peller <eliad@wizery.com> | 2016-01-05 16:28:06 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2016-01-14 11:10:20 +0100 |
commit | 2bc533bd9dcf48eaf4af6fb89a338734a9e8f76e (patch) | |
tree | 28c71b45c5e1e3e38ff73918fae71cdecd965069 /net/mac80211/main.c | |
parent | 1a57081add2529fb4d8d11e7385990e7e550d30b (diff) |
mac80211: handle sched_scan_stopped vs. hw restart race
On hw restart, mac80211 might try to reconfigure already
stopped sched scan, if ieee80211_sched_scan_stopped_work()
wasn't scheduled yet.
This in turn will keep the device driver with scheduled scan
configured, while both mac80211 and cfg80211 will clear
their sched scan state once the work is scheduled.
Fix it by ignoring ieee80211_sched_scan_stopped() calls
while in hw restart, and flush the work before starting
the reconfiguration.
Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/main.c')
-rw-r--r-- | net/mac80211/main.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c index ed4c8e66b44a..8190bf27ebff 100644 --- a/net/mac80211/main.c +++ b/net/mac80211/main.c @@ -248,6 +248,7 @@ static void ieee80211_restart_work(struct work_struct *work) /* wait for scan work complete */ flush_workqueue(local->workqueue); + flush_work(&local->sched_scan_stopped_work); WARN(test_bit(SCAN_HW_SCANNING, &local->scanning), "%s called with hardware scan in progress\n", __func__); |