iwlwifi: Add bool mvm_ucode to iwl_fw
authorDavid Spinadel <david.spinadel@intel.com>
Sat, 10 Mar 2012 21:00:15 +0000 (13:00 -0800)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 12 Mar 2012 18:22:10 +0000 (14:22 -0400)
mvm_ucode is true when mvm TLVs arive.

Signed-off-by: David Spinadel <david.spinadel@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-drv.c
drivers/net/wireless/iwlwifi/iwl-fw.h

index 54e0969..6f312c7 100644 (file)
@@ -636,14 +636,17 @@ static int iwl_parse_tlv_firmware(struct iwl_drv *drv,
                 case IWL_UCODE_TLV_SEC_RT:
                        iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR,
                                            tlv_len);
+                       drv->fw.mvm_fw = true;
                        break;
                case IWL_UCODE_TLV_SEC_INIT:
                        iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT,
                                            tlv_len);
+                       drv->fw.mvm_fw = true;
                        break;
                case IWL_UCODE_TLV_SEC_WOWLAN:
                        iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN,
                                            tlv_len);
+                       drv->fw.mvm_fw = true;
                        break;
                case IWL_UCODE_TLV_DEF_CALIB:
                        if (tlv_len != sizeof(struct iwl_tlv_calib_data))
@@ -870,7 +873,11 @@ static void iwl_ucode_callback(const struct firmware *ucode_raw, void *context)
                goto try_again;
        }
 
-       if (validate_sec_sizes(drv, &pieces, cfg))
+       /*
+        * In mvm uCode there is no difference between data and instructions
+        * sections.
+        */
+       if (!fw->mvm_fw && validate_sec_sizes(drv, &pieces, cfg))
                goto try_again;
 
        /* Allocate ucode buffers for card's bus-master loading ... */
index 5d634f3..8e36bdc 100644 (file)
@@ -170,6 +170,8 @@ struct iwl_fw {
 
        u64 default_calib[IWL_UCODE_TYPE_MAX];
        u32 phy_config;
+
+       bool mvm_fw;
 };
 
 #endif  /* __iwl_fw_h__ */