From patchwork Mon Dec 11 17:11:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 135039 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 C080F436C8; Mon, 11 Dec 2023 18:12:56 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C43A842DD8; Mon, 11 Dec 2023 18:11:44 +0100 (CET) Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) by mails.dpdk.org (Postfix) with ESMTP id 4BBF042DDF for ; Mon, 11 Dec 2023 18:11:43 +0100 (CET) Received: by mail-qk1-f172.google.com with SMTP id af79cd13be357-77f320ca2d5so347033085a.1 for ; Mon, 11 Dec 2023 09:11:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1702314702; x=1702919502; 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=tmqjWk9MFRDUctyRn+WtIb/J5GfDiBOT+EZzibIcv/U=; b=LINOhY1zjeLgacQk1nTP1fytSiJ0I5h6ilYWINGsS0LcMmaTIoYPtG8gBAVuo8qmmO ZQ3vdFg4WYJ5u5q+XHqCC0t+mpgIOA5T8YySGXFBYtcq26Ykq8N1Ji0MXHUh9rpTmcCd mtiU2+glLLGeRq4+igo02PngzbbV7zI+9X7xE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702314702; x=1702919502; 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=tmqjWk9MFRDUctyRn+WtIb/J5GfDiBOT+EZzibIcv/U=; b=YSUrLvV1SiNv22TJkSHtJQgBhculMkk/yHcFG8+AXNHvu+KlCOdSlBYQKH8mw2OHYa InJPXfbtsvMn3WP/JYenO9/n/J5Eox6e8Vpp6w1sIjZmD0kMWm7ge4LIMLvbkuM5Db5G xxSypRavUOp0bH6wpI2kqeuwhHjIeoYtF2rg9rIQqwqkyumTQ+DoHsBL095SXlPOgI4s z6cqzVPK99wvuvw1fxM5Yfl8jRnmOw3rx1m0kUEfVoJY/Xr7MuGFdzwBK5S6QIcYSESj 0l07retoV5Ft1DGGANbzRUf+AEFzyNDd22VP+f4YomCxR9t/WmML/M3FSfwwZP+hOuqx YG/Q== X-Gm-Message-State: AOJu0YxC5j206lI+IjoHu97h17JpcPZtwsjfq/Q3KZcSTC46kJu0JYOF dbC5yIpyt2ETd+PnC5ABz0WPqx1Sr0I3ZFGLBqSBh96rOaiLjK+MxCEqkeNbgtiQVs+GO899itE b2NFoyKcXvb0Umj9HV7nNHCqAO/6MOJJrME4Iddn9N0FNtYTiwNDzodTUdLtBta0MbjnL X-Google-Smtp-Source: AGHT+IH6lipbq4dte+yFWXCpd/Nuph5CXYVEnwE901CtYd5jL83JEx6KJBjV11LYY82vPilqLL8JpQ== X-Received: by 2002:a05:620a:31aa:b0:77d:84d1:a594 with SMTP id bi42-20020a05620a31aa00b0077d84d1a594mr7940607qkb.10.1702314702325; Mon, 11 Dec 2023 09:11:42 -0800 (PST) Received: from C02GC2QQMD6T.wifi.broadcom.net ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id qz16-20020a05620a8c1000b0077efdfbd730sm3094581qkn.34.2023.12.11.09.11.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Dec 2023 09:11:40 -0800 (PST) From: Ajit Khaparde To: dev@dpdk.org Cc: Kalesh AP , Somnath Kotur Subject: [PATCH v3 12/14] net/bnxt: retry HWRM ver get if the command fails Date: Mon, 11 Dec 2023 09:11:07 -0800 Message-Id: <20231211171109.89716-13-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.39.2 (Apple Git-143) In-Reply-To: <20231211171109.89716-1-ajit.khaparde@broadcom.com> References: <20231211171109.89716-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 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; }