From patchwork Tue Apr 17 01:11:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 38267 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 84D1D1B029; Tue, 17 Apr 2018 03:12:01 +0200 (CEST) Received: from rnd-relay.smtp.broadcom.com (rnd-relay.smtp.broadcom.com [192.19.229.170]) by dpdk.org (Postfix) with ESMTP id 83EB2CFA4 for ; Tue, 17 Apr 2018 03:11:40 +0200 (CEST) Received: from nis-sj1-27.broadcom.com (nis-sj1-27.lvn.broadcom.net [10.75.144.136]) by rnd-relay.smtp.broadcom.com (Postfix) with ESMTP id 08DE430C025 for ; Mon, 16 Apr 2018 18:11:38 -0700 (PDT) Received: from C02VPB22HTD6.vpn.broadcom.net (unknown [10.10.117.92]) by nis-sj1-27.broadcom.com (Postfix) with ESMTP id 7680AAC0797 for ; Mon, 16 Apr 2018 18:11:37 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Date: Mon, 16 Apr 2018 18:11:21 -0700 Message-Id: <20180417011126.12622-10-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.15.1 (Apple Git-101) In-Reply-To: <20180417011126.12622-1-ajit.khaparde@broadcom.com> References: <20180417011126.12622-1-ajit.khaparde@broadcom.com> Subject: [dpdk-dev] [PATCH 09/14] net/bnxt: maintain rx_mbuf_alloc_fail per RxQ X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Currently we have a single counter for mbuf alloc failure. Make it per RxQ instead. Signed-off-by: Ajit Khaparde --- drivers/net/bnxt/bnxt.h | 1 - drivers/net/bnxt/bnxt_ethdev.c | 1 - drivers/net/bnxt/bnxt_rxq.c | 1 + drivers/net/bnxt/bnxt_rxq.h | 1 + drivers/net/bnxt/bnxt_rxr.c | 8 ++++---- drivers/net/bnxt/bnxt_stats.c | 10 ++++++++-- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h index d3eab8d36..bdca2622f 100644 --- a/drivers/net/bnxt/bnxt.h +++ b/drivers/net/bnxt/bnxt.h @@ -295,7 +295,6 @@ struct bnxt { uint16_t geneve_fw_dst_port_id; uint32_t fw_ver; uint32_t hwrm_spec_code; - rte_atomic64_t rx_mbuf_alloc_fail; struct bnxt_led_info leds[BNXT_MAX_LED]; uint8_t num_leds; diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index b7aab65ab..3cf845089 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -3129,7 +3129,6 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev) bp = eth_dev->data->dev_private; - rte_atomic64_init(&bp->rx_mbuf_alloc_fail); bp->dev_stopped = 1; if (rte_eal_process_type() != RTE_PROC_PRIMARY) diff --git a/drivers/net/bnxt/bnxt_rxq.c b/drivers/net/bnxt/bnxt_rxq.c index ce3f0a1d9..d797a47e9 100644 --- a/drivers/net/bnxt/bnxt_rxq.c +++ b/drivers/net/bnxt/bnxt_rxq.c @@ -336,6 +336,7 @@ int bnxt_rx_queue_setup_op(struct rte_eth_dev *eth_dev, rc = -ENOMEM; goto out; } + rte_atomic64_init(&rxq->rx_mbuf_alloc_fail); out: return rc; diff --git a/drivers/net/bnxt/bnxt_rxq.h b/drivers/net/bnxt/bnxt_rxq.h index 616163e63..3350d7719 100644 --- a/drivers/net/bnxt/bnxt_rxq.h +++ b/drivers/net/bnxt/bnxt_rxq.h @@ -32,6 +32,7 @@ struct bnxt_rx_queue { uint32_t rx_buf_use_size; /* useable size */ struct bnxt_rx_ring_info *rx_ring; struct bnxt_cp_ring_info *cp_ring; + rte_atomic64_t rx_mbuf_alloc_fail; }; void bnxt_free_rxq_stats(struct bnxt_rx_queue *rxq); diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index d9b4d768d..4bc320430 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -41,7 +41,7 @@ static inline int bnxt_alloc_rx_data(struct bnxt_rx_queue *rxq, mbuf = __bnxt_alloc_rx_data(rxq->mb_pool); if (!mbuf) { - rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail); + rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); return -ENOMEM; } @@ -62,7 +62,7 @@ static inline int bnxt_alloc_ag_data(struct bnxt_rx_queue *rxq, mbuf = __bnxt_alloc_rx_data(rxq->mb_pool); if (!mbuf) { - rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail); + rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); return -ENOMEM; } @@ -299,7 +299,7 @@ static inline struct rte_mbuf *bnxt_tpa_end( struct rte_mbuf *new_data = __bnxt_alloc_rx_data(rxq->mb_pool); RTE_ASSERT(new_data != NULL); if (!new_data) { - rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail); + rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); return NULL; } tpa_info->mbuf = new_data; @@ -767,7 +767,7 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq) rxr->tpa_info[i].mbuf = __bnxt_alloc_rx_data(rxq->mb_pool); if (!rxr->tpa_info[i].mbuf) { - rte_atomic64_inc(&rxq->bp->rx_mbuf_alloc_fail); + rte_atomic64_inc(&rxq->rx_mbuf_alloc_fail); return -ENOMEM; } } diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c index 5a1c07388..1b586f333 100644 --- a/drivers/net/bnxt/bnxt_stats.c +++ b/drivers/net/bnxt/bnxt_stats.c @@ -221,6 +221,8 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev, bnxt_stats, 1); if (unlikely(rc)) return rc; + bnxt_stats->rx_nombuf += + rte_atomic64_read(&rxq->rx_mbuf_alloc_fail); } for (i = 0; i < bp->tx_cp_nr_rings; i++) { @@ -235,13 +237,13 @@ int bnxt_stats_get_op(struct rte_eth_dev *eth_dev, rc = bnxt_hwrm_func_qstats(bp, 0xffff, bnxt_stats); if (unlikely(rc)) return rc; - bnxt_stats->rx_nombuf = rte_atomic64_read(&bp->rx_mbuf_alloc_fail); return rc; } void bnxt_stats_reset_op(struct rte_eth_dev *eth_dev) { struct bnxt *bp = (struct bnxt *)eth_dev->data->dev_private; + unsigned int i; if (!(bp->flags & BNXT_FLAG_INIT_DONE)) { PMD_DRV_LOG(ERR, "Device Initialization not complete!\n"); @@ -249,7 +251,11 @@ void bnxt_stats_reset_op(struct rte_eth_dev *eth_dev) } bnxt_clear_all_hwrm_stat_ctxs(bp); - rte_atomic64_clear(&bp->rx_mbuf_alloc_fail); + for (i = 0; i < bp->rx_cp_nr_rings; i++) { + struct bnxt_rx_queue *rxq = bp->rx_queues[i]; + + rte_atomic64_clear(&rxq->rx_mbuf_alloc_fail); + } } int bnxt_dev_xstats_get_op(struct rte_eth_dev *eth_dev,