diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/utils.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/utils.c | 23 |
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 { | |||
387 | struct iwl_umac_error_event_table { | 389 | struct 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 | ||
441 | void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) | 452 | void iwl_mvm_dump_nic_error_log(struct iwl_mvm *mvm) |