From patchwork Mon Dec 4 18:37:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 134826 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 03A9E4366C; Mon, 4 Dec 2023 19:38:58 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 66FEC42DC9; Mon, 4 Dec 2023 19:37:39 +0100 (CET) Received: from mail-pg1-f176.google.com (mail-pg1-f176.google.com [209.85.215.176]) by mails.dpdk.org (Postfix) with ESMTP id 2F08042DC0 for ; Mon, 4 Dec 2023 19:37:37 +0100 (CET) Received: by mail-pg1-f176.google.com with SMTP id 41be03b00d2f7-5c66bbb3d77so821743a12.0 for ; Mon, 04 Dec 2023 10:37:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1701715056; x=1702319856; darn=dpdk.org; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:from:to:cc:subject:date:message-id:reply-to; bh=73K00ySoFs3je5V4QpPH77DDqUSKwBKtc4bzM10DRv0=; b=Dx9o/sbx/hzzcRykeDT4NpnXauouLMA+CtShgiwK8zAQl4NQ+Sk/S68V9GdXarllr0 Q4s7JQp0HXPXDQfQ+F4nZn3HYUMsn58Sqw7wLQ3RD2gBpuG9EY1OO2qeK2wJxQnnc52g Kjb0jQeLz87j6o88PvjFIKSqFfWaklspMHGzc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701715056; x=1702319856; h=mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=73K00ySoFs3je5V4QpPH77DDqUSKwBKtc4bzM10DRv0=; b=n3ZpNv4FXYbciNY5+Yzwy36WJ5A0M5fWpaBEUV5rohSsjnQQ1TVUeENanGPgA2DJPn 0olxGHI5Kn6pJ6mU3sId6BHzxpcpbBsxCbhcujH0TBwLR+qCvZ0U17hnSAaNNjh5dr+0 BFP53Gx3TQ4HBOdSkfekXeI8XIahEewjj9fC65r2w0w2MGKk9KzLdfTytr8N+qpTYZtX IEixCiKSLuAk5A+I4fECpVi3QOFX7RIw5L90MFiD3AoAOwyUjznwzQJRKgfGN8YH+qJH 3rVxeihNYVHywUgrymRriDDClRrsVrc/UoG0i6jlF7oPinty6JXtnSFivh7kbtl2yek5 WuAw== X-Gm-Message-State: AOJu0YxxExPSJqopyXSx7QYCadlNvIwNwmgX8bWgineVug617YUDjhmA xuMnLlOI+oMC5/EsvX/0D4HSrcF0ca0tq0bfxG21E95m44Mv3LUTheiqNVFDcXWI2jIqOUxC39K CpwJEvy9En1mK2L9VWb4JHl2n+0k2kpugqsHaf+KWKRoTZIi3l5Fa7rEmMUK+neZPEC8+ X-Google-Smtp-Source: AGHT+IEHwHjTviexBytle8kWqjH0oHM7oRkdz/xysNQYuv9JszZoaF4EQBG2NhY5zcy9wZ8/EIbkVg== X-Received: by 2002:a05:6a21:30c4:b0:18f:97c:8271 with SMTP id yf4-20020a056a2130c400b0018f097c8271mr1840660pzb.123.1701715055757; Mon, 04 Dec 2023 10:37:35 -0800 (PST) Received: from C02GC2QQMD6T.wifi.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id s3-20020a056a00178300b006be5af77f06sm4236664pfg.2.2023.12.04.10.37.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 10:37:35 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , Somnath Kotur Subject: [PATCH 12/14] net/bnxt: retry HWRM ver get if the command fails Date: Mon, 4 Dec 2023 10:37:08 -0800 Message-Id: <20231204183710.86921-13-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.2 (Apple Git-143) In-Reply-To: <20231204183710.86921-1-ajit.khaparde@broadcom.com> References: <20231204183710.86921-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org 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 Reviewed-by: Kalesh AP Reviewed-by: Somnath Kotur --- 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 8f3bd858da..0ae6697940 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -5442,6 +5442,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; @@ -5450,8 +5451,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; }