aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2012-05-28 09:33:48 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-06-06 07:21:17 -0400
commit588d932044169979bf028eab2155f9acd1d0418d (patch)
tree7c281d1f88b54073662aef58accf8bc6bd417295 /drivers/net/wireless/iwlwifi
parentd370493f9be79530950dfab23b980ce60bc84f34 (diff)
iwlwifi: SCD_INT_MSK is obsolete - don't update it
The scheduler can issue an interrupt when moving the read pointer. To get this interrupt, the driver needs to configure what queue can issue an interrupt when its read pointer moves in the scheduler: this is the SCD_INT_MSK. The driver also needs to enable the interrupt in CSR_INT_MASK (bit CSR_INT_BIT_SCD). Since we don't enable the scheduler interrupt in CSR_INT_MASK, there is no point in requesting an interrupt from the scheduler: it will be masked anyway. So don't configure the scheduler to issue interrupts at all. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/trans.c3
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/tx.c4
2 files changed, 0 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
index a19ce40c0092..a267fda69f36 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -1082,9 +1082,6 @@ static void iwl_tx_start(struct iwl_trans *trans)
1082 SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK)); 1082 SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK));
1083 } 1083 }
1084 1084
1085 iwl_write_prph(trans, SCD_INTERRUPT_MASK,
1086 IWL_MASK(0, trans->cfg->base_params->num_of_queues));
1087
1088 /* Activate all Tx DMA/FIFO channels */ 1085 /* Activate all Tx DMA/FIFO channels */
1089 iwl_trans_txq_set_sched(trans, IWL_MASK(0, 7)); 1086 iwl_trans_txq_set_sched(trans, IWL_MASK(0, 7));
1090 1087
diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c
index 583451c710e3..8a331a90f28e 100644
--- a/drivers/net/wireless/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/tx.c
@@ -480,8 +480,6 @@ void iwl_trans_pcie_tx_agg_setup(struct iwl_trans *trans, int txq_id, int fifo,
480 ((frame_limit << SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS) & 480 ((frame_limit << SCD_QUEUE_CTX_REG2_FRAME_LIMIT_POS) &
481 SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK)); 481 SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK));
482 482
483 iwl_set_bits_prph(trans, SCD_INTERRUPT_MASK, (1 << txq_id));
484
485 /* Set up Status area in SRAM, map to Tx DMA/FIFO, activate the queue */ 483 /* Set up Status area in SRAM, map to Tx DMA/FIFO, activate the queue */
486 iwl_trans_tx_queue_set_status(trans, &trans_pcie->txq[txq_id], 484 iwl_trans_tx_queue_set_status(trans, &trans_pcie->txq[txq_id],
487 fifo, true); 485 fifo, true);
@@ -506,8 +504,6 @@ void iwl_trans_pcie_tx_agg_disable(struct iwl_trans *trans, int txq_id)
506 trans_pcie->txq[txq_id].q.write_ptr = 0; 504 trans_pcie->txq[txq_id].q.write_ptr = 0;
507 iwl_trans_set_wr_ptrs(trans, txq_id, 0); 505 iwl_trans_set_wr_ptrs(trans, txq_id, 0);
508 506
509 iwl_clear_bits_prph(trans, SCD_INTERRUPT_MASK, BIT(txq_id));
510
511 iwl_trans_tx_queue_set_status(trans, &trans_pcie->txq[txq_id], 507 iwl_trans_tx_queue_set_status(trans, &trans_pcie->txq[txq_id],
512 0, false); 508 0, false);
513} 509}