|
@@ -980,11 +980,11 @@ static void ieee80211_chswitch_work(struct work_struct *work)
|
|
|
mutex_lock(&local->mtx);
|
|
|
sdata->vif.csa_active = false;
|
|
|
/* XXX: wait for a beacon first? */
|
|
|
- if (!ieee80211_csa_needs_block_tx(local))
|
|
|
- ieee80211_wake_queues_by_reason(&local->hw,
|
|
|
- IEEE80211_MAX_QUEUE_MAP,
|
|
|
- IEEE80211_QUEUE_STOP_REASON_CSA,
|
|
|
- false);
|
|
|
+ if (sdata->csa_block_tx) {
|
|
|
+ ieee80211_wake_vif_queues(local, sdata,
|
|
|
+ IEEE80211_QUEUE_STOP_REASON_CSA);
|
|
|
+ sdata->csa_block_tx = false;
|
|
|
+ }
|
|
|
mutex_unlock(&local->mtx);
|
|
|
|
|
|
ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED;
|
|
@@ -1114,10 +1114,8 @@ ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
|
|
|
sdata->csa_block_tx = csa_ie.mode;
|
|
|
|
|
|
if (sdata->csa_block_tx)
|
|
|
- ieee80211_stop_queues_by_reason(&local->hw,
|
|
|
- IEEE80211_MAX_QUEUE_MAP,
|
|
|
- IEEE80211_QUEUE_STOP_REASON_CSA,
|
|
|
- false);
|
|
|
+ ieee80211_stop_vif_queues(local, sdata,
|
|
|
+ IEEE80211_QUEUE_STOP_REASON_CSA);
|
|
|
mutex_unlock(&local->mtx);
|
|
|
|
|
|
if (local->ops->channel_switch) {
|
|
@@ -1833,11 +1831,11 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
|
|
|
ieee80211_vif_release_channel(sdata);
|
|
|
|
|
|
sdata->vif.csa_active = false;
|
|
|
- if (!ieee80211_csa_needs_block_tx(local))
|
|
|
- ieee80211_wake_queues_by_reason(&local->hw,
|
|
|
- IEEE80211_MAX_QUEUE_MAP,
|
|
|
- IEEE80211_QUEUE_STOP_REASON_CSA,
|
|
|
- false);
|
|
|
+ if (sdata->csa_block_tx) {
|
|
|
+ ieee80211_wake_vif_queues(local, sdata,
|
|
|
+ IEEE80211_QUEUE_STOP_REASON_CSA);
|
|
|
+ sdata->csa_block_tx = false;
|
|
|
+ }
|
|
|
mutex_unlock(&local->mtx);
|
|
|
|
|
|
sdata->encrypt_headroom = IEEE80211_ENCRYPT_HEADROOM;
|
|
@@ -2083,11 +2081,11 @@ static void __ieee80211_disconnect(struct ieee80211_sub_if_data *sdata)
|
|
|
|
|
|
mutex_lock(&local->mtx);
|
|
|
sdata->vif.csa_active = false;
|
|
|
- if (!ieee80211_csa_needs_block_tx(local))
|
|
|
- ieee80211_wake_queues_by_reason(&local->hw,
|
|
|
- IEEE80211_MAX_QUEUE_MAP,
|
|
|
- IEEE80211_QUEUE_STOP_REASON_CSA,
|
|
|
- false);
|
|
|
+ if (sdata->csa_block_tx) {
|
|
|
+ ieee80211_wake_vif_queues(local, sdata,
|
|
|
+ IEEE80211_QUEUE_STOP_REASON_CSA);
|
|
|
+ sdata->csa_block_tx = false;
|
|
|
+ }
|
|
|
mutex_unlock(&local->mtx);
|
|
|
|
|
|
cfg80211_tx_mlme_mgmt(sdata->dev, frame_buf,
|