struct iwl_priv *priv;
        struct ieee80211_hw *hw;
        u16 num_mac;
+       u32 ucode_flags;
 
        /************************
         * 1. Allocating HW data
         ************************/
        iwl_set_hw_params(priv);
 
+       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;
+
+
        /*******************
         * 6. Setup priv
         *******************/
                 "%s", fw->fw_version);
 
        priv->new_scan_threshold_behaviour =
-               !!(fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_NEWSCAN);
+               !!(ucode_flags & IWL_UCODE_TLV_FLAGS_NEWSCAN);
 
-       if (fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_PAN) {
+       if (ucode_flags & IWL_UCODE_TLV_FLAGS_PAN) {
                priv->sta_key_max_num = STA_KEY_MAX_NUM_PAN;
                priv->shrd->cmd_queue = IWL_IPAN_CMD_QUEUE_NUM;
        } else {
                fw->ucode_capa.standard_phy_calibration_size + 1;
 
        /* initialize all valid contexts */
-       iwl_init_context(priv, fw->ucode_capa.flags);
+       iwl_init_context(priv, ucode_flags);
 
        /**************************************************
         * This is still part of probe() in a sense...
 
                nic->inst_evtlog_size =
                        cfg->base_params->max_event_log_size;
        nic->inst_errlog_ptr = pieces.inst_errlog_ptr;
-#ifndef CONFIG_IWLWIFI_P2P
-       fw->ucode_capa.flags &= ~IWL_UCODE_TLV_FLAGS_PAN;
-#endif
+
        /*
         * figure out the offset of chain noise reset and gain commands
         * base on the size of standard phy calibration commands table size
                fw->ucode_capa.standard_phy_calibration_size =
                        IWL_MAX_STANDARD_PHY_CALIBRATE_TBL_SIZE;
 
-       if (!(cfg->sku & EEPROM_SKU_CAP_IPAN_ENABLE))
-               fw->ucode_capa.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 (!(fw->ucode_capa.flags & IWL_UCODE_TLV_FLAGS_PAN))
-               fw->ucode_capa.flags &= ~IWL_UCODE_TLV_FLAGS_P2P;
-
        /* We have our copies now, allow OS release its copies */
        release_firmware(ucode_raw);
        complete(&nic->request_firmware_complete);