return trans;
 }
 
-int iwl_trans_init(struct iwl_trans *trans)
+int iwl_trans_init(struct iwl_trans *trans, unsigned int txcmd_size,
+                  unsigned int txcmd_align)
 {
-       int txcmd_size, txcmd_align;
-
        /* check if name/num_rx_queues were set as a proxy for info being set */
        if (WARN_ON(!trans->info.name || !trans->info.num_rxqs))
                return -EINVAL;
 
-       if (!trans->mac_cfg->gen2) {
-               txcmd_size = sizeof(struct iwl_tx_cmd_v6);
-               txcmd_align = sizeof(void *);
-       } else if (trans->mac_cfg->device_family < IWL_DEVICE_FAMILY_AX210) {
-               txcmd_size = sizeof(struct iwl_tx_cmd_v9);
-               txcmd_align = 64;
-       } else {
-               txcmd_size = sizeof(struct iwl_tx_cmd);
-               txcmd_align = 128;
-       }
-
        txcmd_size += sizeof(struct iwl_cmd_header);
        txcmd_size += 36; /* biggest possible 802.11 header */
 
 
 struct iwl_trans *iwl_trans_alloc(unsigned int priv_size,
                          struct device *dev,
                          const struct iwl_mac_cfg *cfg_trans);
-int iwl_trans_init(struct iwl_trans *trans);
+int iwl_trans_init(struct iwl_trans *trans, unsigned int txcmd_size,
+                  unsigned int txcmd_align);
 void iwl_trans_free(struct iwl_trans *trans);
 
 static inline bool iwl_trans_is_hw_error_value(u32 val)
 
 #include "fw/dbg.h"
 #include "fw/api/tx.h"
 #include "fw/acpi.h"
+#include "fw/api/tx.h"
 #include "mei/iwl-mei.h"
 #include "internal.h"
 #include "iwl-fh.h"
        };
        struct iwl_trans *iwl_trans;
        struct iwl_trans_pcie *trans_pcie;
+       unsigned int txcmd_size, txcmd_align;
        int ret;
 
        iwl_trans = iwl_trans_pcie_alloc(pdev, trans, &info);
 
        iwl_trans_set_info(iwl_trans, &info);
 
-       ret = iwl_trans_init(iwl_trans);
+       if (!iwl_trans->mac_cfg->gen2) {
+               txcmd_size = sizeof(struct iwl_tx_cmd_v6);
+               txcmd_align = sizeof(void *);
+       } else if (iwl_trans->mac_cfg->device_family <
+                  IWL_DEVICE_FAMILY_AX210) {
+               txcmd_size = sizeof(struct iwl_tx_cmd_v9);
+               txcmd_align = 64;
+       } else {
+               txcmd_size = sizeof(struct iwl_tx_cmd);
+               txcmd_align = 128;
+       }
+       ret = iwl_trans_init(iwl_trans, txcmd_size, txcmd_align);
+
        if (ret)
                goto out_free_trans;