Skip to content

Commit

Permalink
net/bnxt: recheck FW readiness if in reset process
Browse files Browse the repository at this point in the history
[ upstream commit 5591bb9 ]

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: 0b53359 ("net/bnxt: inform firmware about IF state changes")

Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
  • Loading branch information
Kalesh AP authored and kevintraynor committed May 25, 2022
1 parent 2ff3768 commit fa1a893
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion drivers/net/bnxt/bnxt_ethdev.c
Expand Up @@ -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)
{
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -4325,7 +4331,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 {
Expand Down

0 comments on commit fa1a893

Please sign in to comment.