aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2012-10-14 10:36:36 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-10-16 10:33:28 -0400
commitac928f8dc8e8ee6c402f623723cad22a14394277 (patch)
tree2cb50d0ec15af77e3897e69c981cabf2b71a894c /drivers
parent0adb52dee209ee816ba86da51d01977fdb173b22 (diff)
iwlwifi: first deactivate a queue, then wipe out its data
Doing the opposite is wrong, the SCD wouldn't like someone to clear its data while the queue is still active. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/tx.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
index f3c23afbbe63..39ead8cc7e73 100644
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
@@ -491,6 +491,8 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
491 return; 491 return;
492 } 492 }
493 493
494 iwl_txq_set_inactive(trans, txq_id);
495
494 rd_ptr = iwl_read_prph(trans, SCD_QUEUE_RDPTR(txq_id)) & (n_bd - 1); 496 rd_ptr = iwl_read_prph(trans, SCD_QUEUE_RDPTR(txq_id)) & (n_bd - 1);
495 wr_ptr = iwl_read_prph(trans, SCD_QUEUE_WRPTR(txq_id)); 497 wr_ptr = iwl_read_prph(trans, SCD_QUEUE_WRPTR(txq_id));
496 498
@@ -500,7 +502,6 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
500 _iwl_write_targ_mem_dwords(trans, stts_addr, 502 _iwl_write_targ_mem_dwords(trans, stts_addr,
501 zero_val, ARRAY_SIZE(zero_val)); 503 zero_val, ARRAY_SIZE(zero_val));
502 504
503 iwl_txq_set_inactive(trans, txq_id);
504 IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", txq_id); 505 IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", txq_id);
505} 506}
506 507