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,