aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/mvm/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/utils.c')
-rw-r--r--drivers/net/wireless/iwlwifi/mvm/utils.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/utils.c b/drivers/net/wireless/iwlwifi/mvm/utils.c
index ac249da8a22b..1958f298ac8b 100644
--- a/drivers/net/wireless/iwlwifi/mvm/utils.c
+++ b/drivers/net/wireless/iwlwifi/mvm/utils.c
@@ -6,6 +6,7 @@
6 * GPL LICENSE SUMMARY 6 * GPL LICENSE SUMMARY
7 * 7 *
8 * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. 8 * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
9 * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
9 * 10 *
10 * This program is free software; you can redistribute it and/or modify 11 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of version 2 of the GNU General Public License as 12 * it under the terms of version 2 of the GNU General Public License as
@@ -31,6 +32,7 @@
31 * BSD LICENSE 32 * BSD LICENSE
32 * 33 *
33 * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. 34 * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.
35 * Copyright(c) 2013 - 2014 Intel Mobile Communications GmbH
34 * All rights reserved. 36 * All rights reserved.
35 * 37 *
36 * Redistribution and use in source and binary forms, with or without 38 * Redistribution and use in source and binary forms, with or without
@@ -387,15 +389,19 @@ struct iwl_error_event_table {
387struct iwl_umac_error_event_table { 389struct iwl_umac_error_event_table {
388 u32 valid; /* (nonzero) valid, (0) log is empty */ 390 u32 valid; /* (nonzero) valid, (0) log is empty */
389 u32 error_id; /* type of error */ 391 u32 error_id; /* type of error */
390 u32 pc; /* program counter */
391 u32 blink1; /* branch link */ 392 u32 blink1; /* branch link */
392 u32 blink2; /* branch link */ 393 u32 blink2; /* branch link */
393 u32 ilink1; /* interrupt link */ 394 u32 ilink1; /* interrupt link */
394 u32 ilink2; /* interrupt link */ 395 u32 ilink2; /* interrupt link */
395 u32 data1; /* error-specific data */ 396 u32 data1; /* error-specific data */
396 u32 data2; /* error-specific data */ 397 u32 data2; /* error-specific data */
397 u32 line; /* source code line of error */ 398 u32 data3; /* error-specific data */
398 u32 umac_ver; /* umac version */ 399 u32 umac_fw_ver; /* UMAC version */
400 u32 umac_fw_api_ver; /* UMAC FW API ver */
401 u32 frame_pointer; /* core register 27*/
402 u32 stack_pointer; /* core register 28 */
403 u32 cmd_header; /* latest host cmd sent to UMAC */
404 u32 nic_isr_pref; /* ISR status register */
399} __packed; 405} __packed;
400 406
401#define ERROR_START_OFFSET (1 * sizeof(u32)) 407#define ERROR_START_OFFSET (1 * sizeof(u32))
@@ -409,7 +415,7 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm)
409 415
410 base = mvm->umac_error_event_table; 416 base = mvm->umac_error_event_table;
411 417
412 if (base < 0x800000 || base >= 0x80C000) { 418 if (base < 0x800000) {
413 IWL_ERR(mvm, 419 IWL_ERR(mvm,
414 "Not valid error log pointer 0x%08X for %s uCode\n", 420 "Not valid error log pointer 0x%08X for %s uCode\n",
415 base, 421 base,
@@ -428,14 +434,19 @@ static void iwl_mvm_dump_umac_error_log(struct iwl_mvm *mvm)
428 434
429 IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id, 435 IWL_ERR(mvm, "0x%08X | %-28s\n", table.error_id,
430 desc_lookup(table.error_id)); 436 desc_lookup(table.error_id));
431 IWL_ERR(mvm, "0x%08X | umac uPc\n", table.pc);
432 IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1); 437 IWL_ERR(mvm, "0x%08X | umac branchlink1\n", table.blink1);
433 IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2); 438 IWL_ERR(mvm, "0x%08X | umac branchlink2\n", table.blink2);
434 IWL_ERR(mvm, "0x%08X | umac interruptlink1\n", table.ilink1); 439 IWL_ERR(mvm, "0x%08X | umac interruptlink1\n", table.ilink1);
435 IWL_ERR(mvm, "0x%08X | umac interruptlink2\n", table.ilink2); 440 IWL_ERR(mvm, "0x%08X | umac interruptlink2\n", table.ilink2);
436 IWL_ERR(mvm, "0x%08X | umac data1\n", table.data1); 441 IWL_ERR(mvm, "0x%08X | umac data1\n", table.data1);
437 IWL_ERR(mvm, "0x%08X | umac data2\n", table.data2); 442 IWL_ERR(mvm, "0x%08X | umac data2\n", table.data2);
438 IWL_ERR(mvm, "0x%08X | umac version\n", table.umac_ver); 443 IWL_ERR(mvm, "0x%08X | umac data3\n", table.data3);
444 IWL_ERR(mvm, "0x%08X | umac version\n", table.umac_fw_ver);
445 IWL_ERR(mvm, "0x%08X | umac api version\n", table.umac_fw_api_ver);
446 IWL_ERR(mvm, "0x%08X | frame pointer\n", table.frame_pointer);
447 IWL_ERR(mvm, "0x%08X | stack pointer\n", table.stack_pointer);
448 IWL_ERR(mvm, "0x%08X | last host cmd\n", table.cmd_header);
449 IWL_ERR(mvm, "0x%08X | isr status reg\n", table.nic_isr_pref);
439} 450}
440 451
441void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) 452void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm)