aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c10
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h27
2 files changed, 32 insertions, 5 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 3526d5ee4755..8a002c6f3a61 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -1843,6 +1843,7 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
1843 u32 data2, line; 1843 u32 data2, line;
1844 u32 desc, time, count, base, data1; 1844 u32 desc, time, count, base, data1;
1845 u32 blink1, blink2, ilink1, ilink2; 1845 u32 blink1, blink2, ilink1, ilink2;
1846 u32 pc, hcmd;
1846 1847
1847 if (priv->ucode_type == UCODE_INIT) 1848 if (priv->ucode_type == UCODE_INIT)
1848 base = le32_to_cpu(priv->card_alive_init.error_event_table_ptr); 1849 base = le32_to_cpu(priv->card_alive_init.error_event_table_ptr);
@@ -1865,6 +1866,7 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
1865 } 1866 }
1866 1867
1867 desc = iwl_read_targ_mem(priv, base + 1 * sizeof(u32)); 1868 desc = iwl_read_targ_mem(priv, base + 1 * sizeof(u32));
1869 pc = iwl_read_targ_mem(priv, base + 2 * sizeof(u32));
1868 blink1 = iwl_read_targ_mem(priv, base + 3 * sizeof(u32)); 1870 blink1 = iwl_read_targ_mem(priv, base + 3 * sizeof(u32));
1869 blink2 = iwl_read_targ_mem(priv, base + 4 * sizeof(u32)); 1871 blink2 = iwl_read_targ_mem(priv, base + 4 * sizeof(u32));
1870 ilink1 = iwl_read_targ_mem(priv, base + 5 * sizeof(u32)); 1872 ilink1 = iwl_read_targ_mem(priv, base + 5 * sizeof(u32));
@@ -1873,6 +1875,7 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
1873 data2 = iwl_read_targ_mem(priv, base + 8 * sizeof(u32)); 1875 data2 = iwl_read_targ_mem(priv, base + 8 * sizeof(u32));
1874 line = iwl_read_targ_mem(priv, base + 9 * sizeof(u32)); 1876 line = iwl_read_targ_mem(priv, base + 9 * sizeof(u32));
1875 time = iwl_read_targ_mem(priv, base + 11 * sizeof(u32)); 1877 time = iwl_read_targ_mem(priv, base + 11 * sizeof(u32));
1878 hcmd = iwl_read_targ_mem(priv, base + 22 * sizeof(u32));
1876 1879
1877 trace_iwlwifi_dev_ucode_error(priv, desc, time, data1, data2, line, 1880 trace_iwlwifi_dev_ucode_error(priv, desc, time, data1, data2, line,
1878 blink1, blink2, ilink1, ilink2); 1881 blink1, blink2, ilink1, ilink2);
@@ -1881,10 +1884,9 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
1881 "data1 data2 line\n"); 1884 "data1 data2 line\n");
1882 IWL_ERR(priv, "%-28s (#%02d) %010u 0x%08X 0x%08X %u\n", 1885 IWL_ERR(priv, "%-28s (#%02d) %010u 0x%08X 0x%08X %u\n",
1883 desc_lookup(desc), desc, time, data1, data2, line); 1886 desc_lookup(desc), desc, time, data1, data2, line);
1884 IWL_ERR(priv, "blink1 blink2 ilink1 ilink2\n"); 1887 IWL_ERR(priv, "pc blink1 blink2 ilink1 ilink2 hcmd\n");
1885 IWL_ERR(priv, "0x%05X 0x%05X 0x%05X 0x%05X\n", blink1, blink2, 1888 IWL_ERR(priv, "0x%05X 0x%05X 0x%05X 0x%05X 0x%05X 0x%05X\n",
1886 ilink1, ilink2); 1889 pc, blink1, blink2, ilink1, ilink2, hcmd);
1887
1888} 1890}
1889 1891
1890#define EVENT_START_OFFSET (4 * sizeof(u32)) 1892#define EVENT_START_OFFSET (4 * sizeof(u32))
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 6383d9f8c9b3..74d6887c7500 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -512,8 +512,9 @@ struct iwl_init_alive_resp {
512 * 512 *
513 * Entries without timestamps contain only event_id and data. 513 * Entries without timestamps contain only event_id and data.
514 * 514 *
515 *
515 * 2) error_event_table_ptr indicates base of the error log. This contains 516 * 2) error_event_table_ptr indicates base of the error log. This contains
516 * information about any uCode error that occurs. For 4965, the format 517 * information about any uCode error that occurs. For agn, the format
517 * of the error log is: 518 * of the error log is:
518 * 519 *
519 * __le32 valid; (nonzero) valid, (0) log is empty 520 * __le32 valid; (nonzero) valid, (0) log is empty
@@ -529,6 +530,30 @@ struct iwl_init_alive_resp {
529 * __le32 bcon_time; beacon timer 530 * __le32 bcon_time; beacon timer
530 * __le32 tsf_low; network timestamp function timer 531 * __le32 tsf_low; network timestamp function timer
531 * __le32 tsf_hi; network timestamp function timer 532 * __le32 tsf_hi; network timestamp function timer
533 * __le32 gp1; GP1 timer register
534 * __le32 gp2; GP2 timer register
535 * __le32 gp3; GP3 timer register
536 * __le32 ucode_ver; uCode version
537 * __le32 hw_ver; HW Silicon version
538 * __le32 brd_ver; HW board version
539 * __le32 log_pc; log program counter
540 * __le32 frame_ptr; frame pointer
541 * __le32 stack_ptr; stack pointer
542 * __le32 hcmd; last host command
543 * __le32 isr0; isr status register LMPM_NIC_ISR0: rxtx_flag
544 * __le32 isr1; isr status register LMPM_NIC_ISR1: host_flag
545 * __le32 isr2; isr status register LMPM_NIC_ISR2: enc_flag
546 * __le32 isr3; isr status register LMPM_NIC_ISR3: time_flag
547 * __le32 isr4; isr status register LMPM_NIC_ISR4: wico interrupt
548 * __le32 isr_pref; isr status register LMPM_NIC_PREF_STAT
549 * __le32 wait_event; wait event() caller address
550 * __le32 l2p_control; L2pControlField
551 * __le32 l2p_duration; L2pDurationField
552 * __le32 l2p_mhvalid; L2pMhValidBits
553 * __le32 l2p_addr_match; L2pAddrMatchStat
554 * __le32 lmpm_pmg_sel; indicate which clocks are turned on (LMPM_PMG_SEL)
555 * __le32 u_timestamp; indicate when the date and time of the compilation
556 * __le32 reserved;
532 * 557 *
533 * The Linux driver can print both logs to the system log when a uCode error 558 * The Linux driver can print both logs to the system log when a uCode error
534 * occurs. 559 * occurs.