iwlwifi: remember the last uCode sysassert error code
When sysassert happen, uCode will report the error code, driver dump the information to dmesg. Here also remember the last error code for future reference. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
This commit is contained in:
Родитель
cf6da94acb
Коммит
6e6ebf4bef
|
@ -1278,7 +1278,6 @@ static void iwl_irq_tasklet_legacy(struct iwl_priv *priv)
|
|||
IWL_ERR(priv, "Microcode SW error detected. "
|
||||
" Restarting 0x%X.\n", inta);
|
||||
priv->isr_stats.sw++;
|
||||
priv->isr_stats.sw_err = inta;
|
||||
iwl_irq_handle_error(priv);
|
||||
handled |= CSR_INT_BIT_SW_ERR;
|
||||
}
|
||||
|
@ -1459,7 +1458,6 @@ static void iwl_irq_tasklet(struct iwl_priv *priv)
|
|||
IWL_ERR(priv, "Microcode SW error detected. "
|
||||
" Restarting 0x%X.\n", inta);
|
||||
priv->isr_stats.sw++;
|
||||
priv->isr_stats.sw_err = inta;
|
||||
iwl_irq_handle_error(priv);
|
||||
handled |= CSR_INT_BIT_SW_ERR;
|
||||
}
|
||||
|
@ -2467,6 +2465,7 @@ void iwl_dump_nic_error_log(struct iwl_priv *priv)
|
|||
}
|
||||
|
||||
desc = iwl_read_targ_mem(priv, base + 1 * sizeof(u32));
|
||||
priv->isr_stats.err_code = desc;
|
||||
pc = iwl_read_targ_mem(priv, base + 2 * sizeof(u32));
|
||||
blink1 = iwl_read_targ_mem(priv, base + 3 * sizeof(u32));
|
||||
blink2 = iwl_read_targ_mem(priv, base + 4 * sizeof(u32));
|
||||
|
|
|
@ -575,10 +575,10 @@ static ssize_t iwl_dbgfs_interrupt_read(struct file *file,
|
|||
priv->isr_stats.hw);
|
||||
pos += scnprintf(buf + pos, bufsz - pos, "SW Error:\t\t\t %u\n",
|
||||
priv->isr_stats.sw);
|
||||
if (priv->isr_stats.sw > 0) {
|
||||
if (priv->isr_stats.sw || priv->isr_stats.hw) {
|
||||
pos += scnprintf(buf + pos, bufsz - pos,
|
||||
"\tLast Restarting Code: 0x%X\n",
|
||||
priv->isr_stats.sw_err);
|
||||
priv->isr_stats.err_code);
|
||||
}
|
||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
||||
pos += scnprintf(buf + pos, bufsz - pos, "Frame transmitted:\t\t %u\n",
|
||||
|
|
|
@ -945,7 +945,7 @@ enum iwl_pa_type {
|
|||
struct isr_statistics {
|
||||
u32 hw;
|
||||
u32 sw;
|
||||
u32 sw_err;
|
||||
u32 err_code;
|
||||
u32 sch;
|
||||
u32 alive;
|
||||
u32 rfkill;
|
||||
|
|
|
@ -1730,7 +1730,6 @@ static void iwl3945_irq_tasklet(struct iwl_priv *priv)
|
|||
IWL_ERR(priv, "Microcode SW error detected. "
|
||||
"Restarting 0x%X.\n", inta);
|
||||
priv->isr_stats.sw++;
|
||||
priv->isr_stats.sw_err = inta;
|
||||
iwl_irq_handle_error(priv);
|
||||
handled |= CSR_INT_BIT_SW_ERR;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче