iwlwifi: mvm: support v2 of mfuart load notification
authorGolan Ben-Ami <golan.ben.ami@intel.com>
Mon, 7 Nov 2016 15:40:43 +0000 (17:40 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 3 Feb 2017 14:26:38 +0000 (16:26 +0200)
Add to the v1 of the mfuart loading notification, the size
of the mfuart image, and write it to dmesg once the notification
is received.

Signed-off-by: Golan Ben-Ami <golan.ben.ami@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/fw-api.h
drivers/net/wireless/intel/iwlwifi/mvm/fw.c

index 563b17796017cde0d0eb062a30c0ae787bb4629c..0b77073e719aa9b6395d00d87937f16da8825f24 100644 (file)
@@ -1256,13 +1256,16 @@ struct iwl_missed_beacons_notif {
  * @external_ver: external image version
  * @status: MFUART loading status
  * @duration: MFUART loading time
+ * @image_size: MFUART image size in bytes
 */
 struct iwl_mfuart_load_notif {
        __le32 installed_ver;
        __le32 external_ver;
        __le32 status;
        __le32 duration;
-} __packed; /*MFU_LOADER_NTFY_API_S_VER_1*/
+       /* image size valid only in v2 of the command */
+       __le32 image_size;
+} __packed; /*MFU_LOADER_NTFY_API_S_VER_2*/
 
 /**
  * struct iwl_set_calib_default_cmd - set default value for calibration.
index dd8c8d8e9f18781029cd71639439b5001102335c..3c70fb1199d7fe7e3e28e41cc65f04732e57edd9 100644 (file)
@@ -1407,10 +1407,19 @@ void iwl_mvm_rx_mfuart_notif(struct iwl_mvm *mvm,
        struct iwl_rx_packet *pkt = rxb_addr(rxb);
        struct iwl_mfuart_load_notif *mfuart_notif = (void *)pkt->data;
 
-       IWL_DEBUG_INFO(mvm,
-                      "MFUART: installed ver: 0x%08x, external ver: 0x%08x, status: 0x%08x, duration: 0x%08x\n",
-                      le32_to_cpu(mfuart_notif->installed_ver),
-                      le32_to_cpu(mfuart_notif->external_ver),
-                      le32_to_cpu(mfuart_notif->status),
-                      le32_to_cpu(mfuart_notif->duration));
+       if (iwl_rx_packet_payload_len(pkt) == sizeof(*mfuart_notif))
+               IWL_DEBUG_INFO(mvm,
+                              "MFUART: installed ver: 0x%08x, external ver: 0x%08x, status: 0x%08x, duration: 0x%08x, image size: 0x%08x\n",
+                              le32_to_cpu(mfuart_notif->installed_ver),
+                              le32_to_cpu(mfuart_notif->external_ver),
+                              le32_to_cpu(mfuart_notif->status),
+                              le32_to_cpu(mfuart_notif->duration),
+                              le32_to_cpu(mfuart_notif->image_size));
+       else
+               IWL_DEBUG_INFO(mvm,
+                              "MFUART: installed ver: 0x%08x, external ver: 0x%08x, status: 0x%08x, duration: 0x%08x\n",
+                              le32_to_cpu(mfuart_notif->installed_ver),
+                              le32_to_cpu(mfuart_notif->external_ver),
+                              le32_to_cpu(mfuart_notif->status),
+                              le32_to_cpu(mfuart_notif->duration));
 }