From: Jon Cooper <jcoo...@solarflare.com>

This function wasn't being called in this particular case when the MC
 reboots. This caused resource reallocations to not be handled properly
 and often ended up disabling the interface.

Signed-off-by: Edward Cree <ec...@solarflare.com>
---
 drivers/net/ethernet/sfc/mcdi.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/sfc/mcdi.c b/drivers/net/ethernet/sfc/mcdi.c
index 24b271b..fae647d 100644
--- a/drivers/net/ethernet/sfc/mcdi.c
+++ b/drivers/net/ethernet/sfc/mcdi.c
@@ -716,8 +716,11 @@ static int _efx_mcdi_rpc_finish(struct efx_nic *efx, 
unsigned int cmd,
                if (cmd == MC_CMD_REBOOT && rc == -EIO) {
                        /* Don't reset if MC_CMD_REBOOT returns EIO */
                } else if (rc == -EIO || rc == -EINTR) {
-                       netif_err(efx, hw, efx->net_dev, "MC fatal error %d\n",
-                                 -rc);
+                       netif_err(efx, hw, efx->net_dev, "MC reboot 
detected\n");
+                       netif_dbg(efx, hw, efx->net_dev, "MC rebooted during 
command %d rc %d\n",
+                                 cmd, -rc);
+                       if (efx->type->mcdi_reboot_detected)
+                               efx->type->mcdi_reboot_detected(efx);
                        efx_schedule_reset(efx, RESET_TYPE_MC_FAILURE);
                } else if (proxy_handle && (rc == -EPROTO) &&
                           efx_mcdi_get_proxy_handle(efx, hdr_len, data_len,

Reply via email to