iwlwifi: don't disable AGG queues that are not enabled
If the BA session is torn down before we had a chance to start it we shouldn't disable the AGG tx queues that weren't enabled. This can happen in two cases: 1) We get a delBA before we drained our Tx queues in agg start flow 2) We didn't get the (successfull) addBA response on time Reported-by: Daniel Chyan <dchyan@princeton.edu> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
a46c3e424b
commit
8ff44ef26a
|
@ -590,11 +590,17 @@ turn_off:
|
||||||
spin_unlock_bh(&priv->sta_lock);
|
spin_unlock_bh(&priv->sta_lock);
|
||||||
|
|
||||||
if (test_bit(txq_id, priv->agg_q_alloc)) {
|
if (test_bit(txq_id, priv->agg_q_alloc)) {
|
||||||
/* If the transport didn't know that we wanted to start
|
/*
|
||||||
* agreggation, don't tell it that we want to stop them
|
* If the transport didn't know that we wanted to start
|
||||||
|
* agreggation, don't tell it that we want to stop them.
|
||||||
|
* This can happen when we don't get the addBA response on
|
||||||
|
* time, or we hadn't time to drain the AC queues.
|
||||||
*/
|
*/
|
||||||
if (agg_state != IWL_AGG_STARTING)
|
if (agg_state == IWL_AGG_ON)
|
||||||
iwl_trans_tx_agg_disable(priv->trans, txq_id);
|
iwl_trans_tx_agg_disable(priv->trans, txq_id);
|
||||||
|
else
|
||||||
|
IWL_DEBUG_TX_QUEUES(priv, "Don't disable tx agg: %d\n",
|
||||||
|
agg_state);
|
||||||
iwlagn_dealloc_agg_txq(priv, txq_id);
|
iwlagn_dealloc_agg_txq(priv, txq_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue