ionic: catch transition back to RUNNING with fw_generation 0
authorShannon Nelson <snelson@pensando.io>
Thu, 17 Feb 2022 22:02:49 +0000 (14:02 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 19 Feb 2022 04:37:14 +0000 (20:37 -0800)
commit12b1b997c0e5604f1a5c081f51ff67f4c814b7dd
treeff0b8779d5ae8af03e191d167a24aa121c5f90f7
parent86213f80da1b1d007721cc22e04b5f5d0da33127
ionic: catch transition back to RUNNING with fw_generation 0

In some graceful updates that get initially triggered by the
RESET event, especially with older firmware, the fw_generation
bits don't change but the fw_status is seen to go to 0 then back
to 1.  However, the driver didn't perform the restart, remained
waiting for fw_generation to change, and got left in limbo.

This is because the clearing of idev->fw_status_ready to 0
didn't happen correctly as it was buried in the transition
trigger: since the transition down was triggered not here
but in the RESET event handler, the clear to 0 didn't happen,
so the transition back to 1 wasn't detected.

Fix this particular case by bringing the setting of
idev->fw_status_ready back out to where it was before.

Fixes: 398d1e37f960 ("ionic: add FW_STOPPING state")
Signed-off-by: Shannon Nelson <snelson@pensando.io>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/pensando/ionic/ionic_dev.c