diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2021-02-02 18:01:04 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-02-03 17:41:01 -0800 |
commit | 82154580a7f72ed5b16f0b7829a6514542a6bd98 (patch) | |
tree | 872990bf37de855ed65179fae26f7510aee2b782 /drivers/net/ethernet/chelsio/cxgb/common.h | |
parent | fec7fa0a750c2127b01adb626e4945509da96462 (diff) | |
download | linux-82154580a7f72ed5b16f0b7829a6514542a6bd98.tar.bz2 |
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>
Diffstat (limited to 'drivers/net/ethernet/chelsio/cxgb/common.h')
-rw-r--r-- | drivers/net/ethernet/chelsio/cxgb/common.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/drivers/net/ethernet/chelsio/cxgb/common.h b/drivers/net/ethernet/chelsio/cxgb/common.h index e999a9b9fe6c..0321be77366c 100644 --- a/drivers/net/ethernet/chelsio/cxgb/common.h +++ b/drivers/net/ethernet/chelsio/cxgb/common.h @@ -346,7 +346,6 @@ int t1_get_board_rev(adapter_t *adapter, const struct board_info *bi, int t1_init_hw_modules(adapter_t *adapter); int t1_init_sw_modules(adapter_t *adapter, const struct board_info *bi); void t1_free_sw_modules(adapter_t *adapter); -void t1_fatal_err(adapter_t *adapter); void t1_link_changed(adapter_t *adapter, int port_id); void t1_link_negotiated(adapter_t *adapter, int port_id, int link_stat, int speed, int duplex, int pause); |