Message ID | 20220225171618.31733-1-snelson@pensando.io (mailing list archive) |
---|---|
State | Accepted |
Commit | 688a5efe0ced8e2d33624b475ecc96d31020a313 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] ionic: no transition while stopping | expand |
Hello: This patch was applied to netdev/net-next.git (master) by David S. Miller <davem@davemloft.net>: On Fri, 25 Feb 2022 09:16:18 -0800 you wrote: > Make sure we don't try to transition the fw_status_ready > while we're still in the FW_STOPPING state, else we can > get stuck in limbo waiting on a transition that already > happened. > > While we're here we can remove a superfluous check on > the lif pointer. > > [...] Here is the summary with links: - [net-next] ionic: no transition while stopping https://git.kernel.org/netdev/net-next/c/688a5efe0ced You are awesome, thank you!
diff --git a/drivers/net/ethernet/pensando/ionic/ionic_dev.c b/drivers/net/ethernet/pensando/ionic/ionic_dev.c index faeedc8db6f4..9d0514cfeb5c 100644 --- a/drivers/net/ethernet/pensando/ionic/ionic_dev.c +++ b/drivers/net/ethernet/pensando/ionic/ionic_dev.c @@ -202,21 +202,25 @@ int ionic_heartbeat_check(struct ionic *ionic) } } + dev_dbg(ionic->dev, "fw_status 0x%02x ready %d idev->ready %d last_hb 0x%x state 0x%02lx\n", + fw_status, fw_status_ready, idev->fw_status_ready, + idev->last_fw_hb, lif->state[0]); + /* is this a transition? */ - if (fw_status_ready != idev->fw_status_ready) { + if (fw_status_ready != idev->fw_status_ready && + !test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { bool trigger = false; idev->fw_status_ready = fw_status_ready; - if (!fw_status_ready && lif && + if (!fw_status_ready && !test_bit(IONIC_LIF_F_FW_RESET, lif->state) && !test_and_set_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { dev_info(ionic->dev, "FW stopped 0x%02x\n", fw_status); trigger = true; - } else if (fw_status_ready && lif && - test_bit(IONIC_LIF_F_FW_RESET, lif->state) && - !test_bit(IONIC_LIF_F_FW_STOPPING, lif->state)) { + } else if (fw_status_ready && + test_bit(IONIC_LIF_F_FW_RESET, lif->state)) { dev_info(ionic->dev, "FW running 0x%02x\n", fw_status); trigger = true; }
Make sure we don't try to transition the fw_status_ready while we're still in the FW_STOPPING state, else we can get stuck in limbo waiting on a transition that already happened. While we're here we can remove a superfluous check on the lif pointer. Signed-off-by: Shannon Nelson <snelson@pensando.io> --- drivers/net/ethernet/pensando/ionic/ionic_dev.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-)