summaryrefslogtreecommitdiff
path: root/net/mac80211/iface.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2012-06-06 22:40:06 +0400
committerJohn W. Linville <linville@tuxdriver.com>2012-06-06 22:40:06 +0400
commit7c9c46c16d2d1d232f3296924162de293477f017 (patch)
tree4dba9e4da9ad99a73251b4b0563f910f727894fb /net/mac80211/iface.c
parentfdbfff73408f99799724f583cbc2a0ce3263c6a7 (diff)
parent2d4524ac18a3965051f6279aff5e9b1d72ac9d7f (diff)
downloadlinux-7c9c46c16d2d1d232f3296924162de293477f017.tar.xz
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
Conflicts: drivers/net/wireless/iwlwifi/iwl-drv.c
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r--net/mac80211/iface.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index bebc45db9c7a..ede5f4959904 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -637,6 +637,18 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
ieee80211_configure_filter(local);
break;
default:
+ mutex_lock(&local->mtx);
+ if (local->hw_roc_dev == sdata->dev &&
+ local->hw_roc_channel) {
+ /* ignore return value since this is racy */
+ drv_cancel_remain_on_channel(local);
+ ieee80211_queue_work(&local->hw, &local->hw_roc_done);
+ }
+ mutex_unlock(&local->mtx);
+
+ flush_work(&local->hw_roc_start);
+ flush_work(&local->hw_roc_done);
+
flush_work(&sdata->work);
/*
* When we get here, the interface is marked down.