/* TODO: remove fw from shared data later */
        priv->shrd->fw = fw;
 
-       /************************
-        * 2. Setup HW constants
-        ************************/
-       iwl_set_hw_params(priv);
+       /*
+        * Populate the state variables that the transport layer needs
+        * to know about.
+        */
+       trans_cfg.op_mode = op_mode;
 
        ucode_flags = fw->ucode_capa.flags;
 
 #ifndef CONFIG_IWLWIFI_P2P
        ucode_flags &= ~IWL_UCODE_TLV_FLAGS_PAN;
 #endif
-       if (!(hw_params(priv).sku & EEPROM_SKU_CAP_IPAN_ENABLE))
-               ucode_flags &= ~IWL_UCODE_TLV_FLAGS_PAN;
-
-       /*
-        * if not PAN, then don't support P2P -- might be a uCode
-        * packaging bug or due to the eeprom check above
-        */
-       if (!(ucode_flags & IWL_UCODE_TLV_FLAGS_PAN))
-               ucode_flags &= ~IWL_UCODE_TLV_FLAGS_P2P;
-
-
-       /*****************************
-        * Configure transport layer
-        *****************************/
-       /*
-        * Populate the state variables that the transport layer needs
-        * to know about.
-        */
-       trans_cfg.op_mode = op_mode;
 
        if (ucode_flags & IWL_UCODE_TLV_FLAGS_PAN) {
                priv->sta_key_max_num = STA_KEY_MAX_NUM_PAN;
        spin_lock_init(&priv->statistics.lock);
 
        /***********************
-        * 3. Read REV register
+        * 2. Read REV register
         ***********************/
        IWL_INFO(priv, "Detected %s, REV=0x%X\n",
                cfg(priv)->name, trans(priv)->hw_rev);
                goto out_free_traffic_mem;
 
        /*****************
-        * 4. Read EEPROM
+        * 3. Read EEPROM
         *****************/
-       /* Read the EEPROM */
        err = iwl_eeprom_init(trans(priv), trans(priv)->hw_rev);
        /* Reset chip to save power until we load uCode during "up". */
        iwl_trans_stop_hw(trans(priv));
                priv->hw->wiphy->n_addresses++;
        }
 
+       /************************
+        * 4. Setup HW constants
+        ************************/
+       iwl_set_hw_params(priv);
+
+       if (!(hw_params(priv).sku & EEPROM_SKU_CAP_IPAN_ENABLE)) {
+               IWL_DEBUG_INFO(priv, "Your EEPROM disabled PAN");
+               ucode_flags &= ~IWL_UCODE_TLV_FLAGS_PAN;
+               /*
+                * if not PAN, then don't support P2P -- might be a uCode
+                * packaging bug or due to the eeprom check above
+                */
+               ucode_flags &= ~IWL_UCODE_TLV_FLAGS_P2P;
+               priv->sta_key_max_num = STA_KEY_MAX_NUM;
+               trans_cfg.cmd_queue = IWL_DEFAULT_CMD_QUEUE_NUM;
+
+               /* Configure transport layer again*/
+               iwl_trans_configure(trans(priv), &trans_cfg);
+       }
+
        /*******************
-        * 6. Setup priv
+        * 5. Setup priv
         *******************/
 
        err = iwl_init_drv(priv);
        /* At this point both hw and priv are initialized. */
 
        /********************
-        * 7. Setup services
+        * 6. Setup services
         ********************/
        iwl_setup_deferred_work(priv);
        iwl_setup_rx_handlers(priv);
        /**************************************************
         * This is still part of probe() in a sense...
         *
-        * 9. Setup and register with mac80211 and debugfs
+        * 7. Setup and register with mac80211 and debugfs
         **************************************************/
        err = iwlagn_mac_setup_register(priv, &fw->ucode_capa);
        if (err)