From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id 17188A0547;
	Wed, 18 Aug 2021 07:39:14 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id D73AA4069E;
	Wed, 18 Aug 2021 07:39:13 +0200 (CEST)
Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com
 [209.85.216.50]) by mails.dpdk.org (Postfix) with ESMTP id 45B0D40042
 for <dev@dpdk.org>; Wed, 18 Aug 2021 07:39:12 +0200 (CEST)
Received: by mail-pj1-f50.google.com with SMTP id
 w13-20020a17090aea0db029017897a5f7bcso1555486pjy.5
 for <dev@dpdk.org>; Tue, 17 Aug 2021 22:39:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google;
 h=from:to:cc:subject:date:message-id:mime-version;
 bh=vFk7pVfJjN5tVPMp5rVxkwUct0q6Jow0gX8hXN+0t7g=;
 b=XJQoLVeyuQbH6InEksDi3sSQ9DmkK/JdLZzBawsaDS3Wu3EgaS7/FW57g7xlpfJ48Z
 dPZ/a7sTy1sOxudQp5JbIBXkV46/m0PL3sV1fO+SDCWgO7bnTIFNwahQ/YvhYMdne5iG
 L0tAChWf4JF34TJ0fOdLD3EmF++nDYXF+eX+U=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20161025;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version;
 bh=vFk7pVfJjN5tVPMp5rVxkwUct0q6Jow0gX8hXN+0t7g=;
 b=fNGhvljKAeJMRbtJtrdGyG204zvdvBNxWSkBHU1ttcMrbh2frv7/dFJBvYqn5B3kS2
 AW9J5Bwpwv70ERc+gI4ysxrt5o4lVOIFnnNgUS9s6Y/KCqor2ls2imeLsa5ADTrJ/4yB
 /iJH7zdce2uxdQbxCvBYS7wP7dEeRT0DA8anvWRDYmAtrqLejUAeNewBgmvZTmav4W74
 /8US4fiBeAI6FaJFgqq4zACbnT2y70tqLQ7VOdExjcM/I+AMlRCIpV6FsmowZihZ9ilI
 5aFej3lSFEr+FM6RGyQCwVz9J86Ed63nK5SZzn/LChnxDlNNUhygewzUAAwAvCud3SRt
 7qkg==
X-Gm-Message-State: AOAM53360NfzNAaIDIT+XynyXnuUvVkD5j0Dh1YiV57Naw7P4ultWX5D
 CyrrM3zGm36LpLmSHjsPCsaMPOWFVMhyNJox2i32nyHhvtPK2Skozg3JLI5uda3GL+D3NWS/Ype
 VTdLEmTQBNrUN8SgqQUE9/J8JymuA5XlSPr1qE40SlQlPli27Do1FitgcEHtuc1g=
X-Google-Smtp-Source: ABdhPJzLlIQ0CjbITh1gtVoFXPOCx4IwHExFS8N0OFQVFAvFViQ8aSv8N3QD8CGdbT29nWraiAZ2tw==
X-Received: by 2002:a17:90a:ce0a:: with SMTP id
 f10mr7552726pju.71.1629265151021; 
 Tue, 17 Aug 2021 22:39:11 -0700 (PDT)
Received: from localhost.localdomain ([136.52.99.246])
 by smtp.gmail.com with ESMTPSA id c17sm3715990pjq.16.2021.08.17.22.39.08
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 17 Aug 2021 22:39:10 -0700 (PDT)
From: Ajit Khaparde <ajit.khaparde@broadcom.com>
To: dev@dpdk.org
Cc: stable@dpdk.org,
	Somnath Kotur <somnath.kotur@broadcom.com>
Date: Tue, 17 Aug 2021 22:39:02 -0700
Message-Id: <20210818053902.71231-1-ajit.khaparde@broadcom.com>
X-Mailer: git-send-email 2.21.1 (Apple Git-122.3)
MIME-Version: 1.0
Content-Type: multipart/signed; protocol="application/pkcs7-signature";
 micalg=sha-256; boundary="00000000000098fbc205c9cedaeb"
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: [dpdk-dev] [PATCH] net/bnxt: update ring group after ring stop start
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

--00000000000098fbc205c9cedaeb
Content-Transfer-Encoding: 8bit

A Rx ring stop start sequence may result in the FW returning
a different set of Rx ring and AGG ring IDs. If the ring group
is not updated with the new IDs, the HW sees the host driver using
incorrect BD types for the Rx ring and AGG ring. This can cause
the chip to go into a bad state or encounter RE_flush issue
or leak MBUFs in the HW.

Fix this by issuing a bnxt_hwrm_ring_grp_free() and an
bnxt_hwrm_ring_grp_alloc() to refresh the ring group information.

Fixes: 9b63c6fd70e3 ("net/bnxt: support Rx/Tx queue start/stop")
Cc: stable@dpdk.org

Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
---
 drivers/net/bnxt/bnxt_hwrm.c | 3 +++
 drivers/net/bnxt/bnxt_ring.c | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 73deb41f81..eb9de45cb9 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -2717,6 +2717,9 @@ void bnxt_free_hwrm_rx_ring(struct bnxt *bp, int queue_index)
 	struct bnxt_ring *ring = rxr->rx_ring_struct;
 	struct bnxt_cp_ring_info *cpr = rxq->cp_ring;
 
+	if (BNXT_HAS_RING_GRPS(bp))
+		bnxt_hwrm_ring_grp_free(bp, queue_index);
+
 	bnxt_hwrm_ring_free(bp, ring,
 			    HWRM_RING_FREE_INPUT_RING_TYPE_RX,
 			    cpr->cp_ring_struct->fw_ring_id);
diff --git a/drivers/net/bnxt/bnxt_ring.c b/drivers/net/bnxt/bnxt_ring.c
index b05c470766..957b175f1b 100644
--- a/drivers/net/bnxt/bnxt_ring.c
+++ b/drivers/net/bnxt/bnxt_ring.c
@@ -631,6 +631,12 @@ int bnxt_alloc_hwrm_rx_ring(struct bnxt *bp, int queue_index)
 	if (rc)
 		goto err_out;
 
+	if (BNXT_HAS_RING_GRPS(bp)) {
+		rc = bnxt_hwrm_ring_grp_alloc(bp, queue_index);
+		if (rc)
+			goto err_out;
+	}
+
 	if (rxq->rx_started) {
 		if (bnxt_init_one_rx_ring(rxq)) {
 			PMD_DRV_LOG(ERR, "bnxt_init_one_rx_ring failed!\n");
-- 
2.21.1 (Apple Git-122.3)


--00000000000098fbc205c9cedaeb--