iwlwifi: move bc_pool to a common trans header
The bc_pool code is not directly related to the PCIe transport, so move the structures it uses to the common iwl-trans.h header. Signed-off-by: Mordechay Goodstein <mordechay.goodstein@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20200924162105.f6469c62665d.Id920f1ae8f70886b66a98956a6412726d29a9481@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
		
							parent
							
								
									fda1bd0d4a
								
							
						
					
					
						commit
						a26014e2de
					
				| @ -66,6 +66,7 @@ | ||||
| #include "iwl-trans.h" | ||||
| #include "iwl-drv.h" | ||||
| #include "iwl-fh.h" | ||||
| #include <linux/dmapool.h> | ||||
| 
 | ||||
| struct iwl_trans *iwl_trans_alloc(unsigned int priv_size, | ||||
| 				  struct device *dev, | ||||
| @ -110,6 +111,22 @@ struct iwl_trans *iwl_trans_alloc(unsigned int priv_size, | ||||
| 	trans->ops = ops; | ||||
| 	trans->num_rx_queues = 1; | ||||
| 
 | ||||
| 	if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) | ||||
| 		trans->txqs.bc_tbl_size = sizeof(struct iwl_gen3_bc_tbl); | ||||
| 	else | ||||
| 		trans->txqs.bc_tbl_size = sizeof(struct iwlagn_scd_bc_tbl); | ||||
| 	/*
 | ||||
| 	 * For gen2 devices, we use a single allocation for each byte-count | ||||
| 	 * table, but they're pretty small (1k) so use a DMA pool that we | ||||
| 	 * allocate here. | ||||
| 	 */ | ||||
| 	if (trans->trans_cfg->gen2) { | ||||
| 		trans->txqs.bc_pool = dmam_pool_create("iwlwifi:bc", dev, | ||||
| 						       trans->txqs.bc_tbl_size, | ||||
| 						       256, 0); | ||||
| 		if (!trans->txqs.bc_pool) | ||||
| 			return NULL; | ||||
| 	} | ||||
| 	snprintf(trans->dev_cmd_pool_name, sizeof(trans->dev_cmd_pool_name), | ||||
| 		 "iwl_cmd_pool:%s", dev_name(trans->dev)); | ||||
| 	trans->dev_cmd_pool = | ||||
|  | ||||
| @ -914,6 +914,8 @@ struct iwl_trans_txqs { | ||||
| 	unsigned long queue_used[BITS_TO_LONGS(IWL_MAX_TVQM_QUEUES)]; | ||||
| 	unsigned long queue_stopped[BITS_TO_LONGS(IWL_MAX_TVQM_QUEUES)]; | ||||
| 	struct iwl_txq *txq[IWL_MAX_TVQM_QUEUES]; | ||||
| 	struct dma_pool *bc_pool; | ||||
| 	size_t bc_tbl_size; | ||||
| 	struct { | ||||
| 		u8 fifo; | ||||
| 		u8 q_id; | ||||
|  | ||||
| @ -451,7 +451,6 @@ struct iwl_trans_pcie { | ||||
| 	u32 scd_base_addr; | ||||
| 	struct iwl_dma_ptr scd_bc_tbls; | ||||
| 	struct iwl_dma_ptr kw; | ||||
| 	struct dma_pool *bc_pool; | ||||
| 
 | ||||
| 	struct iwl_txq *txq_memory; | ||||
| 
 | ||||
|  | ||||
| @ -3649,24 +3649,6 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev, | ||||
| 
 | ||||
| 	init_waitqueue_head(&trans_pcie->sx_waitq); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * For gen2 devices, we use a single allocation for each byte-count | ||||
| 	 * table, but they're pretty small (1k) so use a DMA pool that we | ||||
| 	 * allocate here. | ||||
| 	 */ | ||||
| 	if (cfg_trans->gen2) { | ||||
| 		size_t bc_tbl_size; | ||||
| 
 | ||||
| 		if (cfg_trans->device_family >= IWL_DEVICE_FAMILY_AX210) | ||||
| 			bc_tbl_size = sizeof(struct iwl_gen3_bc_tbl); | ||||
| 		else | ||||
| 			bc_tbl_size = sizeof(struct iwlagn_scd_bc_tbl); | ||||
| 
 | ||||
| 		trans_pcie->bc_pool = dmam_pool_create("iwlwifi:bc", &pdev->dev, | ||||
| 						       bc_tbl_size, 256, 0); | ||||
| 		if (!trans_pcie->bc_pool) | ||||
| 			goto out_no_pci; | ||||
| 	} | ||||
| 
 | ||||
| 	if (trans_pcie->msix_enabled) { | ||||
| 		ret = iwl_pcie_init_msix_handler(pdev, trans_pcie); | ||||
|  | ||||
| @ -1225,7 +1225,7 @@ void iwl_pcie_gen2_txq_free_memory(struct iwl_trans *trans, | ||||
| 
 | ||||
| 	kfree(txq->entries); | ||||
| 	if (txq->bc_tbl.addr) | ||||
| 		dma_pool_free(trans_pcie->bc_pool, txq->bc_tbl.addr, | ||||
| 		dma_pool_free(trans->txqs.bc_pool, txq->bc_tbl.addr, | ||||
| 			      txq->bc_tbl.dma); | ||||
| 	kfree(txq); | ||||
| } | ||||
| @ -1273,18 +1273,14 @@ int iwl_trans_pcie_dyn_txq_alloc_dma(struct iwl_trans *trans, | ||||
| 				     struct iwl_txq **intxq, int size, | ||||
| 				     unsigned int timeout) | ||||
| { | ||||
| 	struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); | ||||
| 	size_t bc_tbl_size, bc_tbl_entries; | ||||
| 	struct iwl_txq *txq; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) { | ||||
| 		bc_tbl_size = sizeof(struct iwl_gen3_bc_tbl); | ||||
| 		bc_tbl_entries = bc_tbl_size / sizeof(u16); | ||||
| 	} else { | ||||
| 		bc_tbl_size = sizeof(struct iwlagn_scd_bc_tbl); | ||||
| 		bc_tbl_entries = bc_tbl_size / sizeof(u16); | ||||
| 	} | ||||
| 	WARN_ON(!trans->txqs.bc_tbl_size); | ||||
| 
 | ||||
| 	bc_tbl_size = trans->txqs.bc_tbl_size; | ||||
| 	bc_tbl_entries = bc_tbl_size / sizeof(u16); | ||||
| 
 | ||||
| 	if (WARN_ON(size > bc_tbl_entries)) | ||||
| 		return -EINVAL; | ||||
| @ -1293,7 +1289,7 @@ int iwl_trans_pcie_dyn_txq_alloc_dma(struct iwl_trans *trans, | ||||
| 	if (!txq) | ||||
| 		return -ENOMEM; | ||||
| 
 | ||||
| 	txq->bc_tbl.addr = dma_pool_alloc(trans_pcie->bc_pool, GFP_KERNEL, | ||||
| 	txq->bc_tbl.addr = dma_pool_alloc(trans->txqs.bc_pool, GFP_KERNEL, | ||||
| 					  &txq->bc_tbl.dma); | ||||
| 	if (!txq->bc_tbl.addr) { | ||||
| 		IWL_ERR(trans, "Scheduler BC Table allocation failed\n"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user