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 ACB6CA0C43 for ; Mon, 16 Aug 2021 16:30:28 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A7ED641163; Mon, 16 Aug 2021 16:30:28 +0200 (CEST) Received: from relay.smtp-ext.broadcom.com (relay.smtp-ext.broadcom.com [192.19.166.231]) by mails.dpdk.org (Postfix) with ESMTP id 3A6CD41157 for ; Mon, 16 Aug 2021 16:30:27 +0200 (CEST) Received: from dhcp-10-123-153-22.dhcp.broadcom.net (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22]) by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 008EAEA for ; Mon, 16 Aug 2021 07:30:25 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 008EAEA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1629124226; bh=+Hns0KwrQKMvjgRRKr/rcihkkoa3HJ/jR51it3qgOWs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=wSH6glFmmJ6QtqGyp9A70r1MTlEFacuE78asSF74YThUU2cTJlTv2JPGv90PoB0Ha LkAkPQFf5GjuFwGL+1+RzDj/hkKQl6JIgU8fuYf2OnbF5ArBOcT5uKM5KdzpbDeSUY kBLNDA1Op7SFQZuIjKJ2xFYLPnNQn4ng++o6Gu3Y= From: Kalesh A P To: stable@dpdk.org Date: Mon, 16 Aug 2021 20:20:59 +0530 Message-Id: <20210816145059.31065-7-kalesh-anakkur.purayil@broadcom.com> X-Mailer: git-send-email 2.10.1 In-Reply-To: <20210816145059.31065-1-kalesh-anakkur.purayil@broadcom.com> References: <20210816145059.31065-1-kalesh-anakkur.purayil@broadcom.com> Subject: [dpdk-stable] [PATCH 19.11 6/6] net/bnxt: clear cached statistics 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" From: Kalesh AP [ upstream commit 84fd852caac19795d0a05af8dabce8f011fe61a4 ] As part of the workaround put in the commit "219842b9990c", driver caches the last read stats values from the hardware. But this is not cleared during the clear stats operation. This results in showing up stale stats values while reading the stats after the clear operation. Fixes: 219842b9990c ("net/bnxt: workaround spurious zero stats in Thor") Signed-off-by: Kalesh AP Reviewed-by: Ajit Khaparde Reviewed-by: Lance Richardson Reviewed-by: Somnath Kotur --- drivers/net/bnxt/bnxt_stats.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c index 2b8b927..b9538bb 100644 --- a/drivers/net/bnxt/bnxt_stats.c +++ b/drivers/net/bnxt/bnxt_stats.c @@ -475,6 +475,16 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev, return rc; } +static void bnxt_clear_prev_stat(struct bnxt *bp) +{ + /* + * Clear the cached values of stats returned by HW in the previous + * get operation. + */ + memset(bp->prev_rx_ring_stats, 0, sizeof(struct bnxt_ring_stats) * bp->rx_cp_nr_rings); + memset(bp->prev_tx_ring_stats, 0, sizeof(struct bnxt_ring_stats) * bp->tx_cp_nr_rings); +} + int bnxt_stats_reset_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = eth_dev->data->dev_private; @@ -497,6 +507,8 @@ int bnxt_stats_reset_op(struct rte_eth_dev *eth_dev) rte_atomic64_clear(&rxq->rx_mbuf_alloc_fail); } + bnxt_clear_prev_stat(bp); + return ret; } @@ -662,5 +674,7 @@ int bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev) PMD_DRV_LOG(ERR, "Failed to reset xstats: %s\n", strerror(-ret)); + bnxt_clear_prev_stat(bp); + return ret; } -- 2.10.1