aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-02-13 08:21:45 -0500
committerJohannes Berg <johannes.berg@intel.com>2013-02-15 03:41:11 -0500
commit5b36ebd8249f403c7edf7cf68d68e9a0d0f55243 (patch)
tree48b2490c4a7e4876960f348de4ee3838597fbdf9 /net
parent5bbe754d9ecc4a09994ecd0cf3b167224e114da5 (diff)
mac80211: always unblock CSA queue stop when disconnecting
In some cases when disconnecting after (or during?) CSA the queues might not recover, and then the only way to recover is reloading the module. Fix this by always unblocking the queue CSA reason when disconnecting. Cc: stable@vger.kernel.org Reported-by: Jan-Michael Brummer <jan.brummer@tabos.org> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/mlme.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index a7fb276d87cb..99be3b61a225 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1819,6 +1819,8 @@ static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
1819 WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY, 1819 WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY,
1820 true, frame_buf); 1820 true, frame_buf);
1821 ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED; 1821 ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED;
1822 ieee80211_wake_queues_by_reason(&sdata->local->hw,
1823 IEEE80211_QUEUE_STOP_REASON_CSA);
1822 mutex_unlock(&ifmgd->mtx); 1824 mutex_unlock(&ifmgd->mtx);
1823 1825
1824 /* 1826 /*
@@ -1859,8 +1861,6 @@ static void ieee80211_csa_connection_drop_work(struct work_struct *work)
1859 container_of(work, struct ieee80211_sub_if_data, 1861 container_of(work, struct ieee80211_sub_if_data,
1860 u.mgd.csa_connection_drop_work); 1862 u.mgd.csa_connection_drop_work);
1861 1863
1862 ieee80211_wake_queues_by_reason(&sdata->local->hw,
1863 IEEE80211_QUEUE_STOP_REASON_CSA);
1864 __ieee80211_disconnect(sdata); 1864 __ieee80211_disconnect(sdata);
1865} 1865}
1866 1866