diff options
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/sta.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/sta.c b/drivers/net/wireless/iwlwifi/mvm/sta.c index 85d4bbe52157..563f559b902d 100644 --- a/drivers/net/wireless/iwlwifi/mvm/sta.c +++ b/drivers/net/wireless/iwlwifi/mvm/sta.c | |||
@@ -915,6 +915,7 @@ int iwl_mvm_sta_tx_agg_flush(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
915 | struct iwl_mvm_sta *mvmsta = (void *)sta->drv_priv; | 915 | struct iwl_mvm_sta *mvmsta = (void *)sta->drv_priv; |
916 | struct iwl_mvm_tid_data *tid_data = &mvmsta->tid_data[tid]; | 916 | struct iwl_mvm_tid_data *tid_data = &mvmsta->tid_data[tid]; |
917 | u16 txq_id; | 917 | u16 txq_id; |
918 | enum iwl_mvm_agg_state old_state; | ||
918 | 919 | ||
919 | /* | 920 | /* |
920 | * First set the agg state to OFF to avoid calling | 921 | * First set the agg state to OFF to avoid calling |
@@ -924,13 +925,17 @@ int iwl_mvm_sta_tx_agg_flush(struct iwl_mvm *mvm, struct ieee80211_vif *vif, | |||
924 | txq_id = tid_data->txq_id; | 925 | txq_id = tid_data->txq_id; |
925 | IWL_DEBUG_TX_QUEUES(mvm, "Flush AGG: sta %d tid %d q %d state %d\n", | 926 | IWL_DEBUG_TX_QUEUES(mvm, "Flush AGG: sta %d tid %d q %d state %d\n", |
926 | mvmsta->sta_id, tid, txq_id, tid_data->state); | 927 | mvmsta->sta_id, tid, txq_id, tid_data->state); |
928 | old_state = tid_data->state; | ||
927 | tid_data->state = IWL_AGG_OFF; | 929 | tid_data->state = IWL_AGG_OFF; |
928 | spin_unlock_bh(&mvmsta->lock); | 930 | spin_unlock_bh(&mvmsta->lock); |
929 | 931 | ||
930 | if (iwl_mvm_flush_tx_path(mvm, BIT(txq_id), true)) | 932 | if (old_state >= IWL_AGG_ON) { |
931 | IWL_ERR(mvm, "Couldn't flush the AGG queue\n"); | 933 | if (iwl_mvm_flush_tx_path(mvm, BIT(txq_id), true)) |
934 | IWL_ERR(mvm, "Couldn't flush the AGG queue\n"); | ||
935 | |||
936 | iwl_trans_txq_disable(mvm->trans, tid_data->txq_id); | ||
937 | } | ||
932 | 938 | ||
933 | iwl_trans_txq_disable(mvm->trans, tid_data->txq_id); | ||
934 | mvm->queue_to_mac80211[tid_data->txq_id] = | 939 | mvm->queue_to_mac80211[tid_data->txq_id] = |
935 | IWL_INVALID_MAC80211_QUEUE; | 940 | IWL_INVALID_MAC80211_QUEUE; |
936 | 941 | ||