Browse Source

iwlwifi: pcie: allocate shorter TX queues for 22000 devices

When support for shorter TX queues was introduced, it
didn't include the actual allocation of shorter queue,
which is the main motive for the change.

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Sara Sharon 7 years ago
parent
commit
e0498146c8

+ 1 - 1
drivers/net/wireless/intel/iwlwifi/pcie/tx-gen2.c

@@ -993,7 +993,7 @@ static void iwl_pcie_gen2_txq_free_memory(struct iwl_trans *trans,
 	/* De-alloc circular buffer of TFDs */
 	/* De-alloc circular buffer of TFDs */
 	if (txq->tfds) {
 	if (txq->tfds) {
 		dma_free_coherent(dev,
 		dma_free_coherent(dev,
-				  trans_pcie->tfd_size * TFD_QUEUE_SIZE_MAX,
+				  trans_pcie->tfd_size * txq->n_window,
 				  txq->tfds, txq->dma_addr);
 				  txq->tfds, txq->dma_addr);
 		dma_free_coherent(dev,
 		dma_free_coherent(dev,
 				  sizeof(*txq->first_tb_bufs) * txq->n_window,
 				  sizeof(*txq->first_tb_bufs) * txq->n_window,

+ 3 - 0
drivers/net/wireless/intel/iwlwifi/pcie/tx.c

@@ -495,6 +495,9 @@ int iwl_pcie_txq_alloc(struct iwl_trans *trans, struct iwl_txq *txq,
 	if (WARN_ON(txq->entries || txq->tfds))
 	if (WARN_ON(txq->entries || txq->tfds))
 		return -EINVAL;
 		return -EINVAL;
 
 
+	if (trans->cfg->use_tfh)
+		tfd_sz = trans_pcie->tfd_size * slots_num;
+
 	timer_setup(&txq->stuck_timer, iwl_pcie_txq_stuck_timer, 0);
 	timer_setup(&txq->stuck_timer, iwl_pcie_txq_stuck_timer, 0);
 	txq->trans_pcie = trans_pcie;
 	txq->trans_pcie = trans_pcie;