iwlwifi: introduce device family AX210
[linux-block.git] / drivers / net / wireless / intel / iwlwifi / pcie / trans-gen2.c
index e2d64378c932214cc2ce927582081764c59a8b02..9c203ca75de9069e9ce4a769d18b3af402ab7076 100644 (file)
@@ -171,7 +171,7 @@ void _iwl_trans_pcie_gen2_stop_device(struct iwl_trans *trans, bool low_power)
        }
 
        iwl_pcie_ctxt_info_free_paging(trans);
-       if (trans->cfg->device_family == IWL_DEVICE_FAMILY_22560)
+       if (trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560)
                iwl_pcie_ctxt_info_gen3_free(trans);
        else
                iwl_pcie_ctxt_info_free(trans);
@@ -234,6 +234,7 @@ void iwl_trans_pcie_gen2_stop_device(struct iwl_trans *trans, bool low_power)
 static int iwl_pcie_gen2_nic_init(struct iwl_trans *trans)
 {
        struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
+       int queue_size = max_t(u32, TFD_CMD_SLOTS, trans->cfg->min_txq_size);
 
        /* TODO: most of the logic can be removed in A0 - but not in Z0 */
        spin_lock(&trans_pcie->irq_lock);
@@ -247,7 +248,7 @@ static int iwl_pcie_gen2_nic_init(struct iwl_trans *trans)
                return -ENOMEM;
 
        /* Allocate or reset and init all Tx and Command queues */
-       if (iwl_pcie_gen2_tx_init(trans, trans_pcie->cmd_queue, TFD_CMD_SLOTS))
+       if (iwl_pcie_gen2_tx_init(trans, trans_pcie->cmd_queue, queue_size))
                return -ENOMEM;
 
        /* enable shadow regs in HW */
@@ -332,7 +333,7 @@ int iwl_trans_pcie_gen2_start_fw(struct iwl_trans *trans,
                goto out;
        }
 
-       if (trans->cfg->device_family == IWL_DEVICE_FAMILY_22560)
+       if (trans->cfg->device_family >= IWL_DEVICE_FAMILY_22560)
                ret = iwl_pcie_ctxt_info_gen3_init(trans, fw);
        else
                ret = iwl_pcie_ctxt_info_init(trans, fw);