linux-stable/drivers/net/ethernet/chelsio/cxgb
Sebastian Andrzej Siewior 82154580a7 chelsio: cxgb: Disable the card on error in threaded interrupt
t1_fatal_err() is invoked from the interrupt handler. The bad part is
that it invokes (via t1_sge_stop()) del_timer_sync() and tasklet_kill().
Both functions must not be called from an interrupt because it is
possible that it will wait for the completion of the timer/tasklet it
just interrupted.

In case of a fatal error, use t1_interrupts_disable() to disable all
interrupt sources and then wake the interrupt thread with
F_PL_INTR_SGE_ERR as pending flag. The threaded-interrupt will stop the
card via t1_sge_stop() and not re-enable the interrupts again.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-02-03 17:41:01 -08:00
..
common.h chelsio: cxgb: Disable the card on error in threaded interrupt 2021-02-03 17:41:01 -08:00
cphy.h
cpl5_cmd.h
cxgb2.c chelsio: cxgb: Disable the card on error in threaded interrupt 2021-02-03 17:41:01 -08:00
elmer0.h
espi.c
espi.h
fpga_defs.h
gmac.h
Makefile
mv88e1xxx.c
mv88e1xxx.h
mv88x201x.c
my3126.c chelsio: Fix a typo in a function name 2019-07-21 11:48:25 -07:00
pm3393.c
regs.h
sge.c chelsio: cxgb: Disable the card on error in threaded interrupt 2021-02-03 17:41:01 -08:00
sge.h chelsio: cxgb: Disable the card on error in threaded interrupt 2021-02-03 17:41:01 -08:00
subr.c chelsio: cxgb: Disable the card on error in threaded interrupt 2021-02-03 17:41:01 -08:00
suni1x10gexp_regs.h
tp.c
tp.h
vsc7326.c
vsc7326_reg.h