[PATCH v3 12/14] net/bnxt: retry HWRM ver get if the command fails
Ajit Khaparde
ajit.khaparde at broadcom.com
Mon Dec 11 18:11:07 CET 2023
Retry HWRM ver get if the command timesout because of PCI FLR.
When the PCI driver issues an FLR during device initialization,
the firmware may have to block the PXP target traffic till the FLR
is complete.
HWRM_VER_GET command issued during that window may time out.
So retry the command again in such a scenario.
Signed-off-by: Ajit Khaparde <ajit.khaparde at broadcom.com>
Reviewed-by: Kalesh AP <kalesh-anakkur.purayil at broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur at broadcom.com>
---
drivers/net/bnxt/bnxt.h | 1 +
drivers/net/bnxt/bnxt_ethdev.c | 12 +++++++++++-
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h
index f7a60eb9a1..7aed4c3da3 100644
--- a/drivers/net/bnxt/bnxt.h
+++ b/drivers/net/bnxt/bnxt.h
@@ -879,6 +879,7 @@ struct bnxt {
/* default command timeout value of 500ms */
#define DFLT_HWRM_CMD_TIMEOUT 500000
+#define PCI_FUNC_RESET_WAIT_TIMEOUT 1500000
/* short command timeout value of 50ms */
#define SHORT_HWRM_CMD_TIMEOUT 50000
/* default HWRM request timeout value */
diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 81a30eb983..75e968394f 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -5441,6 +5441,7 @@ static int bnxt_map_hcomm_fw_status_reg(struct bnxt *bp)
static int bnxt_get_config(struct bnxt *bp)
{
uint16_t mtu;
+ int timeout;
int rc = 0;
bp->fw_cap = 0;
@@ -5449,8 +5450,17 @@ static int bnxt_get_config(struct bnxt *bp)
if (rc)
return rc;
- rc = bnxt_hwrm_ver_get(bp, DFLT_HWRM_CMD_TIMEOUT);
+ timeout = BNXT_CHIP_P7(bp) ?
+ PCI_FUNC_RESET_WAIT_TIMEOUT :
+ DFLT_HWRM_CMD_TIMEOUT;
+try_again:
+ rc = bnxt_hwrm_ver_get(bp, timeout);
if (rc) {
+ if (rc == -ETIMEDOUT && timeout == PCI_FUNC_RESET_WAIT_TIMEOUT) {
+ bp->flags &= ~BNXT_FLAG_FW_TIMEDOUT;
+ timeout = DFLT_HWRM_CMD_TIMEOUT;
+ goto try_again;
+ }
bnxt_check_fw_status(bp);
return rc;
}
--
2.39.2 (Apple Git-143)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4218 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://mails.dpdk.org/archives/dev/attachments/20231211/2ea0652a/attachment-0001.bin>
More information about the dev
mailing list