diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2011-08-26 02:11:12 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-08-29 15:30:28 -0400 |
commit | 9d6b2cb1ccf9c1e00a0891eff78b93eb1a1fc372 (patch) | |
tree | 72b7ea6fdff869101c01442a68ccdbde91f4e775 | |
parent | dda61a4482661d71034cc132d1f474f19ce34a4d (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.h | 1 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-trans.c | 8 |
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 | */ |
99 | struct iwl_trans_pcie { | 100 | struct 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 | ||