diff options
-rw-r--r-- | net/mac80211/main.c | 1 | ||||
-rw-r--r-- | net/mac80211/scan.c | 8 |
2 files changed, 9 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) | |||
248 | 248 | ||
249 | /* wait for scan work complete */ | 249 | /* wait for scan work complete */ |
250 | flush_workqueue(local->workqueue); | 250 | flush_workqueue(local->workqueue); |
251 | flush_work(&local->sched_scan_stopped_work); | ||
251 | 252 | ||
252 | WARN(test_bit(SCAN_HW_SCANNING, &local->scanning), | 253 | WARN(test_bit(SCAN_HW_SCANNING, &local->scanning), |
253 | "%s called with hardware scan in progress\n", __func__); | 254 | "%s called with hardware scan in progress\n", __func__); |
diff --git a/net/mac80211/scan.c b/net/mac80211/scan.c index a413e52f7691..8eb68ef42e8c 100644 --- a/net/mac80211/scan.c +++ b/net/mac80211/scan.c | |||
@@ -1213,6 +1213,14 @@ void ieee80211_sched_scan_stopped(struct ieee80211_hw *hw) | |||
1213 | 1213 | ||
1214 | trace_api_sched_scan_stopped(local); | 1214 | trace_api_sched_scan_stopped(local); |
1215 | 1215 | ||
1216 | /* | ||
1217 | * this shouldn't really happen, so for simplicity | ||
1218 | * simply ignore it, and let mac80211 reconfigure | ||
1219 | * the sched scan later on. | ||
1220 | */ | ||
1221 | if (local->in_reconfig) | ||
1222 | return; | ||
1223 | |||
1216 | schedule_work(&local->sched_scan_stopped_work); | 1224 | schedule_work(&local->sched_scan_stopped_work); |
1217 | } | 1225 | } |
1218 | EXPORT_SYMBOL(ieee80211_sched_scan_stopped); | 1226 | EXPORT_SYMBOL(ieee80211_sched_scan_stopped); |