From patchwork Sun Dec 10 01:24:53 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 134991 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 93D57436BE; Sun, 10 Dec 2023 02:33:17 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C1C6C40EE3; Sun, 10 Dec 2023 02:32:00 +0100 (CET) Received: from mail-oo1-f51.google.com (mail-oo1-f51.google.com [209.85.161.51]) by mails.dpdk.org (Postfix) with ESMTP id BA44D40A6E for ; Sun, 10 Dec 2023 02:31:56 +0100 (CET) Received: by mail-oo1-f51.google.com with SMTP id 006d021491bc7-58d08497aa1so1994064eaf.0 for ; Sat, 09 Dec 2023 17:31:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1702171916; x=1702776716; 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=OsR9PAu33LPA/ufJyPYB4f5f2xOqqvLAH56w0VyMeyU=; b=go14DKNEjc0imPihfuynah++qbJz9uINfKXPcGIbk7c3bjmOoB0ivvBe6pKUF4frJl +T95d2Eej9E2nk525ClNxA3WAwYmWabG/gd5476Nfaax4xUkmmxL94NjBvQ1LITE50F+ iG3DBYi+YhOz9U7plkBAKAIJw9oHiz3HgJJQQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702171916; x=1702776716; 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=OsR9PAu33LPA/ufJyPYB4f5f2xOqqvLAH56w0VyMeyU=; b=WYwbH7R2uYOykX20jNMfNJnPLrAjCcqNnUx7qbuSJwQ4NFPKh5NCnaQ7sHUMGK3l8w T61x6Ph9VpIfO5nTQ9l4fN2cRnwZvn8kdQ59s38BxUtHv86HaGozWdrcpa1x7KWkUUgn oeiCtdKeSTaz2IprMggO3HRQLlZY/rNpicErlcZj+yzb2xxoLx/01Rcmt5X6jBIJ9wY8 +pXycTp3qc6ttAF9qaUEBop46/9S9ap55VXNdkO3JrbkkpiuqKAZSmQ9C0FMPBOrsBjW yyqIeYFlcmD/EZ+iCoy3TXvavcns5D8H3zrZy6fFE8pIwVGN9bH5jjcsZkDg7lvwJAXU R4wg== X-Gm-Message-State: AOJu0YwhnSdEsomcYpcLISn9bBBA3d3e08+DPJbW7w3ONt9Idz8IkOvv i5y685MCZ8Vn87LTtzPqPCGDIvR21Ulir+IMxf7biSvVkMh63s6gQk4iDtHDqC9Kdpu/wf2tBok 1f6q6Or5RwbmfF7mpI2D5vig4wEi2r2ICjgpn+MolItnSEKzCJ6zqapPDFpj84WW+RtvB X-Google-Smtp-Source: AGHT+IEPraQvWA9E/d4tOswo23fyTzzkoY3wMnY2QMDrd75aqUNFzrn/5AeuvSxTmYrgTT3biQ+gOA== X-Received: by 2002:a05:6358:9d94:b0:170:3684:315d with SMTP id d20-20020a0563589d9400b001703684315dmr2977684rwo.45.1702171915589; Sat, 09 Dec 2023 17:31:55 -0800 (PST) Received: from localhost.localdomain ([2605:a601:a780:1400:6d20:fff:e413:282a]) by smtp.gmail.com with ESMTPSA id q3-20020a170902f78300b001d083fed5f3sm4006050pln.60.2023.12.09.17.31.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 Dec 2023 17:31:54 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , Somnath Kotur Subject: [PATCH v2 12/14] net/bnxt: retry HWRM ver get if the command fails Date: Sat, 9 Dec 2023 17:24:53 -0800 Message-Id: <20231210012455.20229-13-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.2 (Apple Git-143) In-Reply-To: <20231210012455.20229-1-ajit.khaparde@broadcom.com> References: <20231210012455.20229-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 6282f16a7d..8aca3c6fba 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; }