From 5591bb92ced3a841398eec4444f593a22b1ca6ea Mon Sep 17 00:00:00 2001 From: Kalesh AP Date: Wed, 27 Apr 2022 20:28:19 +0530 Subject: [PATCH] net/bnxt: recheck FW readiness if in reset process If Firmware is still in reset process and returns the error HWRM_ERR_CODE_HOT_RESET_PROGRESS, retry VER_GET command. We have to do it in bnxt_handle_if_change_status(). Fixes: 0b533591238f ("net/bnxt: inform firmware about IF state changes") Cc: stable@dpdk.org Signed-off-by: Kalesh AP Reviewed-by: Somnath Kotur Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/bnxt_ethdev.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index 69f1117ffa..abcb534af6 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -177,6 +177,7 @@ static int bnxt_restore_vlan_filters(struct bnxt *bp); static void bnxt_dev_recover(void *arg); static void bnxt_free_error_recovery_info(struct bnxt *bp); static void bnxt_free_rep_info(struct bnxt *bp); +static int bnxt_check_fw_ready(struct bnxt *bp); int is_bnxt_in_error(struct bnxt *bp) { @@ -1350,6 +1351,11 @@ static int bnxt_handle_if_change_status(struct bnxt *bp) /* clear fatal flag so that re-init happens */ bp->flags &= ~BNXT_FLAG_FATAL_ERROR; + + rc = bnxt_check_fw_ready(bp); + if (rc) + return rc; + rc = bnxt_init_resources(bp, true); bp->flags &= ~BNXT_FLAG_IF_CHANGE_HOT_FW_RESET_DONE; @@ -4324,7 +4330,7 @@ static int bnxt_restore_filters(struct bnxt *bp) static int bnxt_check_fw_ready(struct bnxt *bp) { - int timeout = bp->fw_reset_max_msecs; + int timeout = bp->fw_reset_max_msecs ? : BNXT_MAX_FW_RESET_TIMEOUT; int rc = 0; do { -- 2.20.1