提交 9d6b2cb1 编写于 作者: E Emmanuel Grumbach 提交者: John W. Linville

iwlagn: move Keep Warm to transport layer

It is relevant for PCIe only.
Signed-off-by: NEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: NWey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 dda61a44
...@@ -1239,7 +1239,6 @@ struct iwl_priv { ...@@ -1239,7 +1239,6 @@ struct iwl_priv {
/* Tx DMA processing queues */ /* Tx DMA processing queues */
struct iwl_tx_queue *txq; struct iwl_tx_queue *txq;
unsigned long txq_ctx_active_msk; unsigned long txq_ctx_active_msk;
struct iwl_dma_ptr kw; /* keep warm address */
/* counts mgmt, ctl, and data packets */ /* counts mgmt, ctl, and data packets */
struct traffic_stats tx_stats; struct traffic_stats tx_stats;
......
...@@ -95,6 +95,7 @@ struct iwl_rx_queue { ...@@ -95,6 +95,7 @@ struct iwl_rx_queue {
* @trans: pointer to the generic transport area * @trans: pointer to the generic transport area
* @scd_base_addr: scheduler sram base address in SRAM * @scd_base_addr: scheduler sram base address in SRAM
* @scd_bc_tbls: pointer to the byte count table of the scheduler * @scd_bc_tbls: pointer to the byte count table of the scheduler
* @kw: keep warm address
*/ */
struct iwl_trans_pcie { struct iwl_trans_pcie {
struct iwl_rx_queue rxq; struct iwl_rx_queue rxq;
...@@ -115,6 +116,7 @@ struct iwl_trans_pcie { ...@@ -115,6 +116,7 @@ struct iwl_trans_pcie {
u32 inta_mask; u32 inta_mask;
u32 scd_base_addr; u32 scd_base_addr;
struct iwl_dma_ptr scd_bc_tbls; struct iwl_dma_ptr scd_bc_tbls;
struct iwl_dma_ptr kw;
}; };
#define IWL_TRANS_GET_PCIE_TRANS(_iwl_trans) \ #define IWL_TRANS_GET_PCIE_TRANS(_iwl_trans) \
......
...@@ -489,7 +489,7 @@ static void iwl_trans_pcie_tx_free(struct iwl_trans *trans) ...@@ -489,7 +489,7 @@ static void iwl_trans_pcie_tx_free(struct iwl_trans *trans)
kfree(priv->txq); kfree(priv->txq);
priv->txq = NULL; 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); iwlagn_free_dma_ptr(trans, &trans_pcie->scd_bc_tbls);
} }
...@@ -527,7 +527,7 @@ static int iwl_trans_tx_alloc(struct iwl_trans *trans) ...@@ -527,7 +527,7 @@ static int iwl_trans_tx_alloc(struct iwl_trans *trans)
} }
/* Alloc keep-warm buffer */ /* 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) { if (ret) {
IWL_ERR(trans, "Keep Warm allocation failed\n"); IWL_ERR(trans, "Keep Warm allocation failed\n");
goto error; goto error;
...@@ -567,6 +567,8 @@ static int iwl_tx_init(struct iwl_trans *trans) ...@@ -567,6 +567,8 @@ static int iwl_tx_init(struct iwl_trans *trans)
unsigned long flags; unsigned long flags;
bool alloc = false; bool alloc = false;
struct iwl_priv *priv = priv(trans); struct iwl_priv *priv = priv(trans);
struct iwl_trans_pcie *trans_pcie =
IWL_TRANS_GET_PCIE_TRANS(trans);
if (!priv->txq) { if (!priv->txq) {
ret = iwl_trans_tx_alloc(trans); ret = iwl_trans_tx_alloc(trans);
...@@ -581,7 +583,7 @@ static int iwl_tx_init(struct iwl_trans *trans) ...@@ -581,7 +583,7 @@ static int iwl_tx_init(struct iwl_trans *trans)
iwl_write_prph(priv, SCD_TXFACT, 0); iwl_write_prph(priv, SCD_TXFACT, 0);
/* Tell NIC where to find the "keep warm" buffer */ /* 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); spin_unlock_irqrestore(&trans->shrd->lock, flags);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册