ionic: leave dev cmd request contents alone on FW timeout
authorShannon Nelson <snelson@pensando.io>
Fri, 20 Mar 2020 02:31:49 +0000 (19:31 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 22 Mar 2020 02:56:04 +0000 (19:56 -0700)
It is possible (but unlikely) that FW was busy and missed a heartbeat
check but is still alive and will process the pending request, so don't
clean the dev_cmd in this case.  This occasionally occurs when working
with a card that is supporting many devices and is trying to shut them
all down at once, but still wants to see that last LIF disable request.

Fixes: 97ca486592c0 ("ionic: add heartbeat check")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/pensando/ionic/ionic_main.c

index c5e3d76..a0dc100 100644 (file)
@@ -360,7 +360,10 @@ try_again:
                done, duration / HZ, duration);
 
        if (!done && hb) {
-               ionic_dev_cmd_clean(ionic);
+               /* It is possible (but unlikely) that FW was busy and missed a
+                * heartbeat check but is still alive and will process this
+                * request, so don't clean the dev_cmd in this case.
+                */
                dev_warn(ionic->dev, "DEVCMD %s (%d) failed - FW halted\n",
                         ionic_opcode_to_str(opcode), opcode);
                return -ENXIO;