From patchwork Tue Jun 16 15:36:13 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ferruh Yigit X-Patchwork-Id: 71640 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id CD321A04A3; Tue, 16 Jun 2020 17:36:20 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2942F1BF85; Tue, 16 Jun 2020 17:36:20 +0200 (CEST) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 4F1131BF7C; Tue, 16 Jun 2020 17:36:18 +0200 (CEST) IronPort-SDR: HLHJWO4WspRQ9GJHkN4xA+rVVF9WXInkrDBARhPkSguMYzdQJ1q2ntEAWGyouAsgCbkRs61Lx+ EUEpsQi/ksRw== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Jun 2020 08:36:17 -0700 IronPort-SDR: kp72BNtGOFnz5vNU7a8e0Hmu+hOSf4j1VPguTY2ijSkR6RAEWupIruZq5gQavBGVCWpBD0XNau C1npeNMapjhA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,518,1583222400"; d="scan'208";a="261457513" Received: from silpixa00399752.ir.intel.com (HELO silpixa00399752.ger.corp.intel.com) ([10.237.222.180]) by fmsmga007.fm.intel.com with ESMTP; 16 Jun 2020 08:36:15 -0700 From: Ferruh Yigit To: Ajit Khaparde , Somnath Kotur Cc: dev@dpdk.org, Ferruh Yigit , stable@dpdk.org Date: Tue, 16 Jun 2020 16:36:13 +0100 Message-Id: <20200616153613.1071713-1-ferruh.yigit@intel.com> X-Mailer: git-send-email 2.25.4 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH] net/bnxt: fix xstats by id 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" The xstat by id device operation seems wrong, it fills 'xstats' struct via 'bnxt_dev_xstats_get_op()' call, but the retrieved values are not transferred to user input 'values' array. ethdev layer 'rte_eth_xstats_get_by_id()' & 'rte_eth_xstats_get_names_by_id' already provides "by id" support when device operations are missing. It is good for PMD to provide these device operations if it has a more performant way to get by id. But current implementation in PMD already does same thing with the ethdev APIs, so removing them provides same functionality. Fixes: 88920136688c ("net/bnxt: support xstats get by id") Cc: stable@dpdk.org Signed-off-by: Ferruh Yigit --- drivers/net/bnxt/bnxt_ethdev.c | 2 - drivers/net/bnxt/bnxt_stats.c | 69 ---------------------------------- 2 files changed, 71 deletions(-) diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c index e8b4c058a1..0dcdb44adf 100644 --- a/drivers/net/bnxt/bnxt_ethdev.c +++ b/drivers/net/bnxt/bnxt_ethdev.c @@ -4160,8 +4160,6 @@ static const struct eth_dev_ops bnxt_dev_ops = { .txq_info_get = bnxt_txq_info_get_op, .dev_led_on = bnxt_dev_led_on_op, .dev_led_off = bnxt_dev_led_off_op, - .xstats_get_by_id = bnxt_dev_xstats_get_by_id_op, - .xstats_get_names_by_id = bnxt_dev_xstats_get_names_by_id_op, .rx_queue_count = bnxt_rx_queue_count_op, .rx_descriptor_status = bnxt_rx_descriptor_status_op, .tx_descriptor_status = bnxt_tx_descriptor_status_op, diff --git a/drivers/net/bnxt/bnxt_stats.c b/drivers/net/bnxt/bnxt_stats.c index 8df6922f52..2b753cd1b8 100644 --- a/drivers/net/bnxt/bnxt_stats.c +++ b/drivers/net/bnxt/bnxt_stats.c @@ -827,75 +827,6 @@ int bnxt_dev_xstats_reset_op(struct rte_eth_dev *eth_dev) return ret; } -int bnxt_dev_xstats_get_by_id_op(struct rte_eth_dev *dev, const uint64_t *ids, - uint64_t *values, unsigned int limit) -{ - struct bnxt *bp = dev->data->dev_private; - const unsigned int stat_cnt = RTE_DIM(bnxt_rx_stats_strings) + - RTE_DIM(bnxt_tx_stats_strings) + - RTE_DIM(bnxt_func_stats_strings) + - RTE_DIM(bnxt_rx_ext_stats_strings) + - RTE_DIM(bnxt_tx_ext_stats_strings) + - bnxt_flow_stats_cnt(bp); - struct rte_eth_xstat xstats[stat_cnt]; - uint64_t values_copy[stat_cnt]; - uint16_t i; - int rc; - - rc = is_bnxt_in_error(bp); - if (rc) - return rc; - - if (!ids) - return bnxt_dev_xstats_get_op(dev, xstats, stat_cnt); - - bnxt_dev_xstats_get_by_id_op(dev, NULL, values_copy, stat_cnt); - for (i = 0; i < limit; i++) { - if (ids[i] >= stat_cnt) { - PMD_DRV_LOG(ERR, "id value isn't valid"); - return -EINVAL; - } - values[i] = values_copy[ids[i]]; - } - return stat_cnt; -} - -int bnxt_dev_xstats_get_names_by_id_op(struct rte_eth_dev *dev, - struct rte_eth_xstat_name *xstats_names, - const uint64_t *ids, unsigned int limit) -{ - struct bnxt *bp = dev->data->dev_private; - const unsigned int stat_cnt = RTE_DIM(bnxt_rx_stats_strings) + - RTE_DIM(bnxt_tx_stats_strings) + - RTE_DIM(bnxt_func_stats_strings) + - RTE_DIM(bnxt_rx_ext_stats_strings) + - RTE_DIM(bnxt_tx_ext_stats_strings) + - bnxt_flow_stats_cnt(bp); - struct rte_eth_xstat_name xstats_names_copy[stat_cnt]; - uint16_t i; - int rc; - - rc = is_bnxt_in_error(bp); - if (rc) - return rc; - - if (!ids) - return bnxt_dev_xstats_get_names_op(dev, xstats_names, - stat_cnt); - bnxt_dev_xstats_get_names_by_id_op(dev, xstats_names_copy, NULL, - stat_cnt); - - for (i = 0; i < limit; i++) { - if (ids[i] >= stat_cnt) { - PMD_DRV_LOG(ERR, "id value isn't valid"); - return -EINVAL; - } - strcpy(xstats_names[i].name, - xstats_names_copy[ids[i]].name); - } - return stat_cnt; -} - /* Update the input context memory with the flow counter IDs * of the flows that we are interested in. * Also, update the output tables with the current local values