mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-05 22:28:00 +00:00
iwlwifi: mvm: disable aggregation queues in station DB in FW
When disabling aggregation, disable the queues in the station DB in the firmware, otherwise we leave the tfd_queue_mask in a wrong state after an aggregation session has been torn down. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
f58220f6b9
commit
f7f89e7bae
1 changed files with 11 additions and 1 deletions
|
@ -948,8 +948,16 @@ int iwl_mvm_sta_tx_agg_stop(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
|
||||||
}
|
}
|
||||||
|
|
||||||
tid_data->ssn = 0xffff;
|
tid_data->ssn = 0xffff;
|
||||||
|
tid_data->state = IWL_AGG_OFF;
|
||||||
|
mvm->queue_to_mac80211[txq_id] = IWL_INVALID_MAC80211_QUEUE;
|
||||||
|
spin_unlock_bh(&mvmsta->lock);
|
||||||
|
|
||||||
|
ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
|
||||||
|
|
||||||
|
iwl_mvm_sta_tx_agg(mvm, sta, tid, txq_id, false);
|
||||||
|
|
||||||
iwl_trans_txq_disable(mvm->trans, txq_id, true);
|
iwl_trans_txq_disable(mvm->trans, txq_id, true);
|
||||||
/* fall through */
|
return 0;
|
||||||
case IWL_AGG_STARTING:
|
case IWL_AGG_STARTING:
|
||||||
case IWL_EMPTYING_HW_QUEUE_ADDBA:
|
case IWL_EMPTYING_HW_QUEUE_ADDBA:
|
||||||
/*
|
/*
|
||||||
|
@ -1003,6 +1011,8 @@ int iwl_mvm_sta_tx_agg_flush(struct iwl_mvm *mvm, struct ieee80211_vif *vif,
|
||||||
if (iwl_mvm_flush_tx_path(mvm, BIT(txq_id), true))
|
if (iwl_mvm_flush_tx_path(mvm, BIT(txq_id), true))
|
||||||
IWL_ERR(mvm, "Couldn't flush the AGG queue\n");
|
IWL_ERR(mvm, "Couldn't flush the AGG queue\n");
|
||||||
|
|
||||||
|
iwl_mvm_sta_tx_agg(mvm, sta, tid, txq_id, false);
|
||||||
|
|
||||||
iwl_trans_txq_disable(mvm->trans, tid_data->txq_id, true);
|
iwl_trans_txq_disable(mvm->trans, tid_data->txq_id, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue