mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-28 14:43:12 +00:00
When an MCDI command times out (whether or not we find it
completed when we poll), call efx_mcdi_abandon(), which tells
all subsequent MCDI calls to fail-fast, and queues up an FLR.
Because an FLR doesn't lead to receiving any reboot even from
the MC (unlike most other types of reset), we have to call
efx_ef10_reset_mc_allocations.
In efx_start_all(), if a reset (of any kind) is pending, we
bail out.
Without this, attempts to reconfigure (e.g. change mtu) can
cause driver/mc state inconsistency if the first MCDI call
triggers an FLR.
For similar reasons, on EF10, in
efx_reset_down(method=RESET_TYPE_MCDI_TIMEOUT), set the number
of active queues to zero before calling efx_stop_all().
And, on farch, in efx_reset_up(method=RESET_TYPE_MCDI_TIMEOUT),
set active_queues and flushes pending & outstanding to zero.
efx_mcdi_mode_{poll,event}() should not take us out of fail-fast
mode. Instead, this is done by efx_mcdi_reset() after the FLR
completes.
The new FLR reset_type RESET_TYPE_MCDI_TIMEOUT doesn't really
fit into the hierarchy of reset 'scopes' whereby efx_reset()
decides some resets subsume others. Thus, it uses separate logic.
Also, fixed up some inconsistency around RESET_TYPE_MC_BIST,
which was in the wrong place in that hierarchy.
Signed-off-by: Shradha Shah <sshah@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
|---|---|---|
| .. | ||
| bitfield.h | ||
| ef10_regs.h | ||
| ef10.c | ||
| efx.c | ||
| efx.h | ||
| enum.h | ||
| ethtool.c | ||
| falcon_boards.c | ||
| falcon.c | ||
| farch_regs.h | ||
| farch.c | ||
| filter.h | ||
| io.h | ||
| Kconfig | ||
| Makefile | ||
| mcdi_mon.c | ||
| mcdi_pcol.h | ||
| mcdi_port.c | ||
| mcdi.c | ||
| mcdi.h | ||
| mdio_10g.c | ||
| mdio_10g.h | ||
| mtd.c | ||
| net_driver.h | ||
| nic.c | ||
| nic.h | ||
| phy.h | ||
| ptp.c | ||
| qt202x_phy.c | ||
| rx.c | ||
| selftest.c | ||
| selftest.h | ||
| siena_sriov.c | ||
| siena.c | ||
| tenxpress.c | ||
| tx.c | ||
| txc43128_phy.c | ||
| vfdi.h | ||
| workarounds.h | ||