From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A49B7A0547 for ; Wed, 18 Aug 2021 07:39:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9B99B40042; Wed, 18 Aug 2021 07:39:12 +0200 (CEST) Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) by mails.dpdk.org (Postfix) with ESMTP id E8E1540042 for ; Wed, 18 Aug 2021 07:39:11 +0200 (CEST) Received: by mail-pl1-f170.google.com with SMTP id u1so1129554plr.1 for ; Tue, 17 Aug 2021 22:39:11 -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=JPhAUbBCbmebg6kMmhmO+3WapzcoUDJASgwwnFqX5J0=; b=SDx+kGRS9rK1DgtrbgJY0n6wFqLgam3zJndaWaunQbH2RRtZoZSY3deKIYk1VA0G20 vJBAgwuGQ+H/Cqn61CZHb1EiTe/9lCuvoonjGp8UsNesqYeXRY7rFl25IbwGRHAvWW4m U8vB6AS+3z2Ng6nuHofTNUjxkEx0cOY3MWO+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=JPhAUbBCbmebg6kMmhmO+3WapzcoUDJASgwwnFqX5J0=; b=UiPGrxyasgxq+QsZYsc69rn+xjM0UoqmAZKi/E8NXxj/YRnGk+B1ZDPwDnlOktlOyB ar8ialCrwcbpvd2Mf0InhCh/z3Z9wjuVRhtnMXrJXaxnP/8/pJNiHf6QKvIYAyi+Zv32 ct1ZlW5zBxCLq1M37jpFJRpGSiFVFRIIcKsAdimABcGcd4/zrymMTUSvb8aR0dR+oiW2 h78pTNBwk27oYU/PZgrLuiTY4XzJCLn6sMHe9jqcV6ZE4KdPtpxR6EOl157nvs5gLDPJ Tdb8cCg8Uz9L0Ar3qU0H7bu2wfI9fSe2cbXcS9Fto0s4YKj+zic/zv7atw7uoCOrXT2s 6goA== X-Gm-Message-State: AOAM532F2AVTUTLKQkRCMSz/lyT2fUuhl4nBdc0/UpiI0j5dtMWECFhs sc+ILbqbkOrYT8KWzdRf+hxNlw== 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 To: dev@dpdk.org Cc: stable@dpdk.org, Somnath Kotur 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="0000000000009708e605c9cedaca" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-stable] [PATCH] net/bnxt: update ring group after ring stop start X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" --0000000000009708e605c9cedaca 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 Reviewed-by: Somnath Kotur --- 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) --0000000000009708e605c9cedaca--