diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/iface.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index d019b42e4a65..31da72ce76ef 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -749,10 +749,12 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, u32 hw_reconf_flags = 0; int i, flushed; struct ps_data *ps; + bool cancel_scan; clear_bit(SDATA_STATE_RUNNING, &sdata->state); - if (rcu_access_pointer(local->scan_sdata) == sdata) + cancel_scan = rcu_access_pointer(local->scan_sdata) == sdata; + if (cancel_scan) ieee80211_scan_cancel(local); /* @@ -959,6 +961,9 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, ieee80211_recalc_ps(local, -1); + if (cancel_scan) + flush_delayed_work(&local->scan_work); + if (local->open_count == 0) { ieee80211_stop_device(local); |