aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2011-08-26 02:11:12 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-08-29 15:30:28 -0400
commit9d6b2cb1ccf9c1e00a0891eff78b93eb1a1fc372 (patch)
tree72b7ea6fdff869101c01442a68ccdbde91f4e775
parentdda61a4482661d71034cc132d1f474f19ce34a4d (diff)
iwlagn: move Keep Warm to transport layer
It is relevant for PCIe only. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-trans.c8
3 files changed, 7 insertions, 4 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index abc011834b9b..30963bba75c1 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1239,7 +1239,6 @@ struct iwl_priv {
1239 /* Tx DMA processing queues */ 1239 /* Tx DMA processing queues */
1240 struct iwl_tx_queue *txq; 1240 struct iwl_tx_queue *txq;
1241 unsigned long txq_ctx_active_msk; 1241 unsigned long txq_ctx_active_msk;
1242 struct iwl_dma_ptr kw; /* keep warm address */
1243 1242
1244 /* counts mgmt, ctl, and data packets */ 1243 /* counts mgmt, ctl, and data packets */
1245 struct traffic_stats tx_stats; 1244 struct traffic_stats tx_stats;
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h b/drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h
index af2d47820d05..c258b3f47627 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h
+++ b/drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h
@@ -95,6 +95,7 @@ struct iwl_rx_queue {
95 * @trans: pointer to the generic transport area 95 * @trans: pointer to the generic transport area
96 * @scd_base_addr: scheduler sram base address in SRAM 96 * @scd_base_addr: scheduler sram base address in SRAM
97 * @scd_bc_tbls: pointer to the byte count table of the scheduler 97 * @scd_bc_tbls: pointer to the byte count table of the scheduler
98 * @kw: keep warm address
98 */ 99 */
99struct iwl_trans_pcie { 100struct iwl_trans_pcie {
100 struct iwl_rx_queue rxq; 101 struct iwl_rx_queue rxq;
@@ -115,6 +116,7 @@ struct iwl_trans_pcie {
115 u32 inta_mask; 116 u32 inta_mask;
116 u32 scd_base_addr; 117 u32 scd_base_addr;
117 struct iwl_dma_ptr scd_bc_tbls; 118 struct iwl_dma_ptr scd_bc_tbls;
119 struct iwl_dma_ptr kw;
118}; 120};
119 121
120#define IWL_TRANS_GET_PCIE_TRANS(_iwl_trans) \ 122#define IWL_TRANS_GET_PCIE_TRANS(_iwl_trans) \
diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.c b/drivers/net/wireless/iwlwifi/iwl-trans.c
index 4f3fdcaa63bc..14c22b7e8d6f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-trans.c
+++ b/drivers/net/wireless/iwlwifi/iwl-trans.c
@@ -489,7 +489,7 @@ static void iwl_trans_pcie_tx_free(struct iwl_trans *trans)
489 kfree(priv->txq); 489 kfree(priv->txq);
490 priv->txq = NULL; 490 priv->txq = NULL;
491 491
492 iwlagn_free_dma_ptr(trans, &priv->kw); 492 iwlagn_free_dma_ptr(trans, &trans_pcie->kw);
493 493
494 iwlagn_free_dma_ptr(trans, &trans_pcie->scd_bc_tbls); 494 iwlagn_free_dma_ptr(trans, &trans_pcie->scd_bc_tbls);
495} 495}
@@ -527,7 +527,7 @@ static int iwl_trans_tx_alloc(struct iwl_trans *trans)
527 } 527 }
528 528
529 /* Alloc keep-warm buffer */ 529 /* Alloc keep-warm buffer */
530 ret = iwlagn_alloc_dma_ptr(trans, &priv->kw, IWL_KW_SIZE); 530 ret = iwlagn_alloc_dma_ptr(trans, &trans_pcie->kw, IWL_KW_SIZE);
531 if (ret) { 531 if (ret) {
532 IWL_ERR(trans, "Keep Warm allocation failed\n"); 532 IWL_ERR(trans, "Keep Warm allocation failed\n");
533 goto error; 533 goto error;
@@ -567,6 +567,8 @@ static int iwl_tx_init(struct iwl_trans *trans)
567 unsigned long flags; 567 unsigned long flags;
568 bool alloc = false; 568 bool alloc = false;
569 struct iwl_priv *priv = priv(trans); 569 struct iwl_priv *priv = priv(trans);
570 struct iwl_trans_pcie *trans_pcie =
571 IWL_TRANS_GET_PCIE_TRANS(trans);
570 572
571 if (!priv->txq) { 573 if (!priv->txq) {
572 ret = iwl_trans_tx_alloc(trans); 574 ret = iwl_trans_tx_alloc(trans);
@@ -581,7 +583,7 @@ static int iwl_tx_init(struct iwl_trans *trans)
581 iwl_write_prph(priv, SCD_TXFACT, 0); 583 iwl_write_prph(priv, SCD_TXFACT, 0);
582 584
583 /* Tell NIC where to find the "keep warm" buffer */ 585 /* Tell NIC where to find the "keep warm" buffer */
584 iwl_write_direct32(priv, FH_KW_MEM_ADDR_REG, priv->kw.dma >> 4); 586 iwl_write_direct32(priv, FH_KW_MEM_ADDR_REG, trans_pcie->kw.dma >> 4);
585 587
586 spin_unlock_irqrestore(&trans->shrd->lock, flags); 588 spin_unlock_irqrestore(&trans->shrd->lock, flags);
587 589