iwlwifi: first deactivate a queue, then wipe out its data
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Sun, 14 Oct 2012 14:36:36 +0000 (16:36 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 16 Oct 2012 14:33:28 +0000 (16:33 +0200)
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>
drivers/net/wireless/iwlwifi/pcie/tx.c

index f3c23afbbe63f34c07212cc1346872090274522d..39ead8cc7e73034ecfebab4aba8f0eeb87b038ed 100644 (file)
@@ -491,6 +491,8 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
                return;
        }
 
+       iwl_txq_set_inactive(trans, txq_id);
+
        rd_ptr = iwl_read_prph(trans, SCD_QUEUE_RDPTR(txq_id)) & (n_bd - 1);
        wr_ptr = iwl_read_prph(trans, SCD_QUEUE_WRPTR(txq_id));
 
@@ -500,7 +502,6 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
        _iwl_write_targ_mem_dwords(trans, stts_addr,
                                   zero_val, ARRAY_SIZE(zero_val));
 
-       iwl_txq_set_inactive(trans, txq_id);
        IWL_DEBUG_TX_QUEUES(trans, "Deactivate queue %d\n", txq_id);
 }