aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-12-09 02:47:46 -0500
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>2013-12-17 15:32:58 -0500
commiteef31718ebfa6b56f9d32ff25110ede982abecdc (patch)
treeaccbbfc7e84a291f7724ecb40ea09b191bd4a32d /drivers/net/wireless/iwlwifi
parentcf4ef65446443eb485afe9419ea82b2efbe582a7 (diff)
iwlwifi: pcie: clean up ICT allocation code
Since iwl_trans_pcie_alloc_ict is called in the PCIe allocation code, we always set CSR_INT_BIT_RX_PERIODIC. Move that bit to the default list of interrupts we enable and simplify the code. Also use dma_zalloc_ and avoid to memset the memory afterwards. trans_pcie->ict_index is 0 since trans_pcie has just been kzalloced, remove the redundant assignment. Reviewed-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-csr.h3
-rw-r--r--drivers/net/wireless/iwlwifi/pcie/rx.c15
2 files changed, 6 insertions, 12 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-csr.h b/drivers/net/wireless/iwlwifi/iwl-csr.h
index da4eca8b3007..bbab26e937c6 100644
--- a/drivers/net/wireless/iwlwifi/iwl-csr.h
+++ b/drivers/net/wireless/iwlwifi/iwl-csr.h
@@ -198,7 +198,8 @@
198 CSR_INT_BIT_RF_KILL | \ 198 CSR_INT_BIT_RF_KILL | \
199 CSR_INT_BIT_SW_RX | \ 199 CSR_INT_BIT_SW_RX | \
200 CSR_INT_BIT_WAKEUP | \ 200 CSR_INT_BIT_WAKEUP | \
201 CSR_INT_BIT_ALIVE) 201 CSR_INT_BIT_ALIVE | \
202 CSR_INT_BIT_RX_PERIODIC)
202 203
203/* interrupt flags in FH (flow handler) (PCI busmaster DMA) */ 204/* interrupt flags in FH (flow handler) (PCI busmaster DMA) */
204#define CSR_FH_INT_BIT_ERR (1 << 31) /* Error */ 205#define CSR_FH_INT_BIT_ERR (1 << 31) /* Error */
diff --git a/drivers/net/wireless/iwlwifi/pcie/rx.c b/drivers/net/wireless/iwlwifi/pcie/rx.c
index 7aeec5ccefa5..b3e6564af537 100644
--- a/drivers/net/wireless/iwlwifi/pcie/rx.c
+++ b/drivers/net/wireless/iwlwifi/pcie/rx.c
@@ -1048,7 +1048,7 @@ int iwl_pcie_alloc_ict(struct iwl_trans *trans)
1048 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); 1048 struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
1049 1049
1050 trans_pcie->ict_tbl = 1050 trans_pcie->ict_tbl =
1051 dma_alloc_coherent(trans->dev, ICT_SIZE, 1051 dma_zalloc_coherent(trans->dev, ICT_SIZE,
1052 &trans_pcie->ict_tbl_dma, 1052 &trans_pcie->ict_tbl_dma,
1053 GFP_KERNEL); 1053 GFP_KERNEL);
1054 if (!trans_pcie->ict_tbl) 1054 if (!trans_pcie->ict_tbl)
@@ -1060,17 +1060,10 @@ int iwl_pcie_alloc_ict(struct iwl_trans *trans)
1060 return -EINVAL; 1060 return -EINVAL;
1061 } 1061 }
1062 1062
1063 IWL_DEBUG_ISR(trans, "ict dma addr %Lx\n", 1063 IWL_DEBUG_ISR(trans, "ict dma addr %Lx ict vir addr %p\n",
1064 (unsigned long long)trans_pcie->ict_tbl_dma); 1064 (unsigned long long)trans_pcie->ict_tbl_dma,
1065 trans_pcie->ict_tbl);
1065 1066
1066 IWL_DEBUG_ISR(trans, "ict vir addr %p\n", trans_pcie->ict_tbl);
1067
1068 /* reset table and index to all 0 */
1069 memset(trans_pcie->ict_tbl, 0, ICT_SIZE);
1070 trans_pcie->ict_index = 0;
1071
1072 /* add periodic RX interrupt */
1073 trans_pcie->inta_mask |= CSR_INT_BIT_RX_PERIODIC;
1074 return 0; 1067 return 0;
1075} 1068}
1076 1069