Linux wireless drivers development
 help / color / mirror / Atom feed
From: Johannes Berg <johannes@sipsolutions.net>
To: linux-wireless@vger.kernel.org
Cc: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Subject: [PATCH 16/29] iwlwifi: first config the SCD queues, then activate them
Date: Wed,  6 Jun 2012 15:21:57 +0200	[thread overview]
Message-ID: <1338988930-11561-16-git-send-email-johannes@sipsolutions.net> (raw)
In-Reply-To: <1338988930-11561-1-git-send-email-johannes@sipsolutions.net>

From: Emmanuel Grumbach <emmanuel.grumbach@intel.com>

The DMA channels of the FH should be activated after the
configuration of the SCD queues too.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
---
 drivers/net/wireless/iwlwifi/pcie/trans.c |   36 ++++++++++++++---------------
 1 file changed, 18 insertions(+), 18 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c
index a267fda..2d33015 100644
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
@@ -1030,6 +1030,10 @@ static void iwl_tx_start(struct iwl_trans *trans)
 
 	spin_lock_irqsave(&trans_pcie->irq_lock, flags);
 
+	/* make sure all queue are not stopped/used */
+	memset(trans_pcie->queue_stopped, 0, sizeof(trans_pcie->queue_stopped));
+	memset(trans_pcie->queue_used, 0, sizeof(trans_pcie->queue_used));
+
 	trans_pcie->scd_base_addr =
 		iwl_read_prph(trans, SCD_SRAM_BASE_ADDR);
 	a = trans_pcie->scd_base_addr + SCD_CONTEXT_MEM_LOWER_BOUND;
@@ -1050,17 +1054,6 @@ static void iwl_tx_start(struct iwl_trans *trans)
 	iwl_write_prph(trans, SCD_DRAM_BASE_ADDR,
 		       trans_pcie->scd_bc_tbls.dma >> 10);
 
-	/* Enable DMA channel */
-	for (chan = 0; chan < FH_TCSR_CHNL_NUM ; chan++)
-		iwl_write_direct32(trans, FH_TCSR_CHNL_TX_CONFIG_REG(chan),
-				FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE |
-				FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE);
-
-	/* Update FH chicken bits */
-	reg_val = iwl_read_direct32(trans, FH_TX_CHICKEN_BITS_REG);
-	iwl_write_direct32(trans, FH_TX_CHICKEN_BITS_REG,
-			   reg_val | FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN);
-
 	iwl_write_prph(trans, SCD_QUEUECHAIN_SEL,
 		       SCD_QUEUECHAIN_SEL_ALL(trans, trans_pcie));
 	iwl_write_prph(trans, SCD_AGGR_SEL, 0);
@@ -1082,15 +1075,8 @@ static void iwl_tx_start(struct iwl_trans *trans)
 				SCD_QUEUE_CTX_REG2_FRAME_LIMIT_MSK));
 	}
 
-	/* Activate all Tx DMA/FIFO channels */
-	iwl_trans_txq_set_sched(trans, IWL_MASK(0, 7));
-
 	iwl_trans_set_wr_ptrs(trans, trans_pcie->cmd_queue, 0);
 
-	/* make sure all queue are not stopped/used */
-	memset(trans_pcie->queue_stopped, 0, sizeof(trans_pcie->queue_stopped));
-	memset(trans_pcie->queue_used, 0, sizeof(trans_pcie->queue_used));
-
 	for (i = 0; i < trans_pcie->n_q_to_fifo; i++) {
 		int fifo = trans_pcie->setup_q_to_fifo[i];
 
@@ -1100,6 +1086,20 @@ static void iwl_tx_start(struct iwl_trans *trans)
 					      fifo, true);
 	}
 
+	/* Activate all Tx DMA/FIFO channels */
+	iwl_trans_txq_set_sched(trans, IWL_MASK(0, 7));
+
+	/* Enable DMA channel */
+	for (chan = 0; chan < FH_TCSR_CHNL_NUM ; chan++)
+		iwl_write_direct32(trans, FH_TCSR_CHNL_TX_CONFIG_REG(chan),
+				   FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE |
+				   FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE);
+
+	/* Update FH chicken bits */
+	reg_val = iwl_read_direct32(trans, FH_TX_CHICKEN_BITS_REG);
+	iwl_write_direct32(trans, FH_TX_CHICKEN_BITS_REG,
+			   reg_val | FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN);
+
 	spin_unlock_irqrestore(&trans_pcie->irq_lock, flags);
 
 	/* Enable L1-Active */
-- 
1.7.10


  parent reply	other threads:[~2012-06-06 13:23 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-06 13:21 [PATCH 01/29] iwlwifi: Check BSS ctx active before call mac80211 Johannes Berg
2012-06-06 13:21 ` [PATCH 02/29] iwlwifi: handle race condition in ROC flow Johannes Berg
2012-06-06 13:21 ` [PATCH 03/29] iwlwifi: make a lot of functions static Johannes Berg
2012-06-06 13:21 ` [PATCH 04/29] iwlwifi: use mac80211 channel in connection init Johannes Berg
2012-06-06 13:21 ` [PATCH 05/29] iwlwifi: trust mac80211 channel setting Johannes Berg
2012-06-06 13:21 ` [PATCH 06/29] iwlwifi: use mac80211 channels for reset scan Johannes Berg
2012-06-06 13:21 ` [PATCH 07/29] iwlwifi: use mac80211 channel for radar check Johannes Berg
2012-06-06 13:21 ` [PATCH 08/29] iwlwifi: give HT format to mac80211/radiotap Johannes Berg
2012-06-06 13:21 ` [PATCH 09/29] iwlwifi: clear STATUS_SCAN_HW when PAN_PARAMS fails Johannes Berg
2012-06-06 13:21 ` [PATCH 10/29] iwlwifi: move PCIe into subdirectory Johannes Berg
2012-06-06 13:21 ` [PATCH 11/29] iwlwifi: trust mac80211 HT40 setting Johannes Berg
2012-06-06 13:21 ` [PATCH 12/29] iwlwifi: move DVM code into subdirectory Johannes Berg
2012-06-06 13:21 ` [PATCH 13/29] iwlwifi: unify tx_chains_num setting Johannes Berg
2012-06-06 13:21 ` [PATCH 14/29] iwlwifi: move ht40 bitmap into config Johannes Berg
2012-06-06 13:21 ` [PATCH 15/29] iwlwifi: SCD_INT_MSK is obsolete - don't update it Johannes Berg
2012-06-06 13:21 ` Johannes Berg [this message]
2012-06-06 13:21 ` [PATCH 17/29] iwlwifi: use iwl_trans_set_wr_ptrs to init the queues Johannes Berg
2012-06-06 13:21 ` [PATCH 18/29] iwlwifi: s/txq_agg_disable/txq_disable Johannes Berg
2012-06-06 13:22 ` [PATCH 19/29] iwlwifi: s/txq_setup/txq_enable Johannes Berg
2012-06-06 13:22 ` [PATCH 20/29] iwlwifi: update mask value for SCD queue config Johannes Berg
2012-06-06 13:22 ` [PATCH 21/29] iwlwifi: allocate Tx cmd pool per device Johannes Berg
2012-06-06 13:22 ` [PATCH 22/29] iwlwifi: add iwl_set_bits_mask Johannes Berg
2012-06-06 13:22 ` [PATCH 23/29] iwlwifi: fix rf configuration Johannes Berg
2012-06-06 13:22 ` [PATCH 24/29] iwlwifi: configure the SKU in the HW Johannes Berg
2012-06-06 13:22 ` [PATCH 25/29] iwlwifi: refactor EEPROM reading/parsing Johannes Berg
2012-06-06 13:22 ` [PATCH 26/29] iwlwifi: fix typo 'IWL_WATCHHDOG_DISABLED' Johannes Berg
2012-06-06 13:22 ` [PATCH 27/29] iwlwifi: configure PHY version for 1000 series Johannes Berg
2012-06-06 13:22 ` [PATCH 28/29] iwlwifi: move RF config into NIC config Johannes Berg
2012-06-06 13:22 ` [PATCH 29/29] iwlwifi: remove extern opmode ops declarations Johannes Berg
2012-06-06 13:27 ` [PATCH 00/29] iwlwifi updates for 3.6 Johannes Berg
2012-06-06 13:28   ` Johannes Berg
2012-06-06 13:36   ` Johannes Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1338988930-11561-16-git-send-email-johannes@sipsolutions.net \
    --to=johannes@sipsolutions.net \
    --cc=emmanuel.grumbach@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox