|
@@ -481,6 +481,9 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
|
|
|
{
|
|
|
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
|
|
|
u16 rd_ptr, wr_ptr;
|
|
|
+ u32 stts_addr = trans_pcie->scd_base_addr +
|
|
|
+ SCD_TX_STTS_QUEUE_OFFSET(txq_id);
|
|
|
+ static const u32 zero_val[4] = {};
|
|
|
int n_bd = trans_pcie->txq[txq_id].q.n_bd;
|
|
|
|
|
|
if (!test_and_clear_bit(txq_id, trans_pcie->queue_used)) {
|
|
@@ -494,6 +497,9 @@ void iwl_trans_pcie_txq_disable(struct iwl_trans *trans, int txq_id)
|
|
|
WARN_ONCE(rd_ptr != wr_ptr, "queue %d isn't empty: [%d,%d]",
|
|
|
txq_id, rd_ptr, wr_ptr);
|
|
|
|
|
|
+ _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);
|
|
|
}
|