iwlwifi: mvm: fix the dump_umac_error_log
authorEran Harary <eran.harary@intel.com>
Sun, 24 Aug 2014 05:02:46 +0000 (08:02 +0300)
committerEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Wed, 3 Sep 2014 19:33:15 +0000 (22:33 +0300)
1. the base_address limitation was wrong, address can be bigger than
0x80C000
2. the ucode data_struct changed.

Signed-off-by: Eran Harary <eran.harary@intel.com>
Reviewed-by: Liad Kaufman <liad.kaufman@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
drivers/net/wireless/iwlwifi/mvm/utils.c

index ac249da..20fdca4 100644 (file)
@@ -387,15 +387,19 @@ struct iwl_error_event_table {
 struct iwl_umac_error_event_table {
        u32 valid;              /* (nonzero) valid, (0) log is empty */
        u32 error_id;           /* type of error */
-       u32 pc;                 /* program counter */
        u32 blink1;             /* branch link */
        u32 blink2;             /* branch link */
        u32 ilink1;             /* interrupt link */
        u32 ilink2;             /* interrupt link */
        u32 data1;              /* error-specific data */
        u32 data2;              /* error-specific data */
-       u32 line;               /* source code line of error */
-       u32 umac_ver;           /* umac version */
+       u32 data3;              /* error-specific data */
+       u32 umac_fw_ver;        /* UMAC version */
+       u32 umac_fw_api_ver;    /* UMAC FW API ver */
+       u32 frame_pointer;      /* core register 27*/
+       u32 stack_pointer;      /* core register 28 */
+       u32 cmd_header; /* latest host cmd sent to UMAC */
+       u32 nic_isr_pref;       /* ISR status register */
 } __packed;
 
 #define ERROR_START_OFFSET  (1 * sizeof(u32))
@@ -409,7 +413,7 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm)
 
        base = mvm->umac_error_event_table;
 
-       if (base < 0x800000 || base >= 0x80C000) {
+       if (base < 0x800000) {
                IWL_ERR(mvm,
                        "Not valid error log pointer 0x%08X for %s uCode\n",
                        base,
@@ -428,14 +432,19 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm)
 
        IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id,
                desc_lookup(table.error_id));
-       IWL_ERR(mvm, "0x%08X | umac uPc\n", table.pc);
        IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1);
        IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2);
        IWL_ERR(mvm, "0x%08X | umac interruptlink1\n", table.ilink1);
        IWL_ERR(mvm, "0x%08X | umac interruptlink2\n", table.ilink2);
        IWL_ERR(mvm, "0x%08X | umac data1\n", table.data1);
        IWL_ERR(mvm, "0x%08X | umac data2\n", table.data2);
-       IWL_ERR(mvm, "0x%08X | umac version\n", table.umac_ver);
+       IWL_ERR(mvm, "0x%08X | umac data3\n", table.data3);
+       IWL_ERR(mvm, "0x%08X | umac version\n", table.umac_fw_ver);
+       IWL_ERR(mvm, "0x%08X | umac api version\n", table.umac_fw_api_ver);
+       IWL_ERR(mvm, "0x%08X | frame pointer\n", table.frame_pointer);
+       IWL_ERR(mvm, "0x%08X | stack pointer\n", table.stack_pointer);
+       IWL_ERR(mvm, "0x%08X | last host cmd\n", table.cmd_header);
+       IWL_ERR(mvm, "0x%08X | isr status reg\n", table.nic_isr_pref);
 }
 
 void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)