iwlagn: move Keep Warm to transport layer
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Fri, 26 Aug 2011 06:11:12 +0000 (23:11 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 29 Aug 2011 19:30:28 +0000 (15:30 -0400)
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>
drivers/net/wireless/iwlwifi/iwl-dev.h
drivers/net/wireless/iwlwifi/iwl-trans-int-pcie.h
drivers/net/wireless/iwlwifi/iwl-trans.c

index abc011834b9ba7a0a65e7aed5daf228e89954ca5..30963bba75c166345ea13154fea4a0897b147c9b 100644 (file)
@@ -1239,7 +1239,6 @@ struct iwl_priv {
        /* Tx DMA processing queues */
        struct iwl_tx_queue *txq;
        unsigned long txq_ctx_active_msk;
-       struct iwl_dma_ptr  kw; /* keep warm address */
 
        /* counts mgmt, ctl, and data packets */
        struct traffic_stats tx_stats;
index af2d47820d057d7b1f881aa9b555348e5f1513b8..c258b3f476278f6581512521bfd14957d52cb453 100644 (file)
@@ -95,6 +95,7 @@ struct iwl_rx_queue {
  * @trans: pointer to the generic transport area
  * @scd_base_addr: scheduler sram base address in SRAM
  * @scd_bc_tbls: pointer to the byte count table of the scheduler
+ * @kw: keep warm address
  */
 struct iwl_trans_pcie {
        struct iwl_rx_queue rxq;
@@ -115,6 +116,7 @@ struct iwl_trans_pcie {
        u32 inta_mask;
        u32 scd_base_addr;
        struct iwl_dma_ptr scd_bc_tbls;
+       struct iwl_dma_ptr kw;
 };
 
 #define IWL_TRANS_GET_PCIE_TRANS(_iwl_trans) \
index 4f3fdcaa63bccbbc0068de9947fd2033b5d4a95e..14c22b7e8d6fc7f3b23ff18296574613f1c8bb7b 100644 (file)
@@ -489,7 +489,7 @@ static void iwl_trans_pcie_tx_free(struct iwl_trans *trans)
        kfree(priv->txq);
        priv->txq = NULL;
 
-       iwlagn_free_dma_ptr(trans, &priv->kw);
+       iwlagn_free_dma_ptr(trans, &trans_pcie->kw);
 
        iwlagn_free_dma_ptr(trans, &trans_pcie->scd_bc_tbls);
 }
@@ -527,7 +527,7 @@ static int iwl_trans_tx_alloc(struct iwl_trans *trans)
        }
 
        /* Alloc keep-warm buffer */
-       ret = iwlagn_alloc_dma_ptr(trans, &priv->kw, IWL_KW_SIZE);
+       ret = iwlagn_alloc_dma_ptr(trans, &trans_pcie->kw, IWL_KW_SIZE);
        if (ret) {
                IWL_ERR(trans, "Keep Warm allocation failed\n");
                goto error;
@@ -567,6 +567,8 @@ static int iwl_tx_init(struct iwl_trans *trans)
        unsigned long flags;
        bool alloc = false;
        struct iwl_priv *priv = priv(trans);
+       struct iwl_trans_pcie *trans_pcie =
+               IWL_TRANS_GET_PCIE_TRANS(trans);
 
        if (!priv->txq) {
                ret = iwl_trans_tx_alloc(trans);
@@ -581,7 +583,7 @@ static int iwl_tx_init(struct iwl_trans *trans)
        iwl_write_prph(priv, SCD_TXFACT, 0);
 
        /* Tell NIC where to find the "keep warm" buffer */
-       iwl_write_direct32(priv, FH_KW_MEM_ADDR_REG, priv->kw.dma >> 4);
+       iwl_write_direct32(priv, FH_KW_MEM_ADDR_REG, trans_pcie->kw.dma >> 4);
 
        spin_unlock_irqrestore(&trans->shrd->lock, flags);