sfc: fully reset if MC_REBOOT event received without warm_boot_count increment
authorDaniel Pieczko <dpieczko@solarflare.com>
Fri, 9 Oct 2015 09:40:35 +0000 (10:40 +0100)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Oct 2015 12:35:25 +0000 (05:35 -0700)
commitc577e59ed7f55be398a2a730447a7f37d72eaa57
tree0b61982b1be2d9ad6ec605010d14febf1ce00cdf
parentd5404915a92de00cc2a6bd1d1b7f923b70effbd1
sfc: fully reset if MC_REBOOT event received without warm_boot_count increment

On EF10, MC_CMD_VPORT_RECONFIGURE can cause a CODE_MC_REBOOT event
to be sent to a function without incrementing the (adapter-wide)
warm_boot_count.  In this case, the reboot is not detected by the
loop on efx_mcdi_poll_reboot(), so prepare for recovery from an MC
reboot anyway.  When this codepath is run, the MC has always just
rebooted, so this recovery is valid.

The loop on efx_mcdi_poll_reboot() is still required for other MC
reboot cases, so that actions in response to an MC reboot are
performed, such as clearing locally calculated statistics.
Siena NICs are unaffected by this change as the above scenario
does not apply.

Signed-off-by: Shradha Shah <sshah@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/sfc/ef10.c
drivers/net/ethernet/sfc/mcdi.c
drivers/net/ethernet/sfc/net_driver.h