From: Stephen Hemminger <stephen@networkplumber.org>
To: Dimon Zhao <dimon.zhao@nebula-matrix.com>
Cc: dev@dpdk.org, Kyo Liu <kyo.liu@nebula-matrix.com>,
Leon Yu <leon.yu@nebula-matrix.com>,
Sam Chen <sam.chen@nebula-matrix.com>
Subject: Re: [PATCH v8 16/17] net/nbl: add nbl device xstats and stats
Date: Fri, 12 Sep 2025 08:13:31 -0700 [thread overview]
Message-ID: <20250912081331.38bac355@hermes.local> (raw)
In-Reply-To: <20250912061752.2091320-17-dimon.zhao@nebula-matrix.com>
On Thu, 11 Sep 2025 23:17:51 -0700
Dimon Zhao <dimon.zhao@nebula-matrix.com> wrote:
> +static int nbl_dev_update_hw_xstats(struct nbl_dev_mgt *dev_mgt, struct rte_eth_xstat *xstats,
> + u16 hw_xstats_cnt, u16 *xstats_cnt)
> +{
> + struct nbl_dev_net_mgt *net_dev = dev_mgt->net_dev;
> + struct nbl_common_info *common = NBL_DEV_MGT_TO_COMMON(dev_mgt);
> + struct nbl_dispatch_ops *disp_ops = NBL_DEV_MGT_TO_DISP_OPS(dev_mgt);
> + int i;
> + u16 count = *xstats_cnt;
> +
> + disp_ops->get_private_stat_data(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt),
> + common->eth_id, net_dev->hw_xstats,
> + net_dev->hw_xstats_size);
> + for (i = 0; i < hw_xstats_cnt; i++) {
> + xstats[count].value = net_dev->hw_xstats[i] - dev_mgt->net_dev->hw_xstats_offset[i];
> + xstats[count].id = count;
> + count++;
> + }
> +
> + *xstats_cnt = count;
> + return 0;
> +}
> +
> +int nbl_xstats_get(struct rte_eth_dev *eth_dev, struct rte_eth_xstat *xstats, unsigned int n)
> +{
> + struct nbl_adapter *adapter = ETH_DEV_TO_NBL_DEV_PF_PRIV(eth_dev);
> + struct nbl_dev_mgt *dev_mgt = NBL_ADAPTER_TO_DEV_MGT(adapter);
> + struct nbl_common_info *common = NBL_DEV_MGT_TO_COMMON(dev_mgt);
> + struct nbl_dispatch_ops *disp_ops = NBL_DEV_MGT_TO_DISP_OPS(dev_mgt);
> + int ret = 0;
> + u16 txrx_xstats_cnt = 0, hw_xstats_cnt = 0, xstats_cnt = 0;
> +
> + if (!xstats)
> + return 0;
> +
> + ret = disp_ops->get_txrx_xstats_cnt(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt), &txrx_xstats_cnt);
> + if (!common->is_vf)
> + ret |= disp_ops->get_hw_xstats_cnt(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt),
> + &hw_xstats_cnt);
> + if (ret)
> + return -EIO;
> +
> + if (n < (txrx_xstats_cnt + hw_xstats_cnt))
> + return txrx_xstats_cnt + hw_xstats_cnt;
> +
> + if (txrx_xstats_cnt)
> + ret = disp_ops->get_txrx_xstats(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt),
> + xstats, &xstats_cnt);
> + if (hw_xstats_cnt)
> + ret |= nbl_dev_update_hw_xstats(dev_mgt, xstats, hw_xstats_cnt, &xstats_cnt);
> +
> + if (ret)
> + return -EIO;
> +
> + return xstats_cnt;
> +}
> +
> +int nbl_xstats_get_names(struct rte_eth_dev *eth_dev,
> + struct rte_eth_xstat_name *xstats_names,
> + __rte_unused unsigned int limit)
> +{
> + struct nbl_adapter *adapter = ETH_DEV_TO_NBL_DEV_PF_PRIV(eth_dev);
> + struct nbl_dev_mgt *dev_mgt = NBL_ADAPTER_TO_DEV_MGT(adapter);
> + struct nbl_common_info *common = NBL_DEV_MGT_TO_COMMON(dev_mgt);
> + struct nbl_dispatch_ops *disp_ops = NBL_DEV_MGT_TO_DISP_OPS(dev_mgt);
> + u16 txrx_xstats_cnt = 0, hw_xstats_cnt = 0, xstats_cnt = 0;
> + int ret = 0;
> +
> + ret = disp_ops->get_txrx_xstats_cnt(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt), &txrx_xstats_cnt);
> + if (!common->is_vf)
> + ret |= disp_ops->get_hw_xstats_cnt(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt),
> + &hw_xstats_cnt);
> + if (ret)
> + return -EIO;
> +
> + if (!xstats_names)
> + return txrx_xstats_cnt + hw_xstats_cnt;
> +
> + if (txrx_xstats_cnt)
> + ret = disp_ops->get_txrx_xstats_names(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt),
> + xstats_names, &xstats_cnt);
> + if (hw_xstats_cnt)
> + ret |= disp_ops->get_hw_xstats_names(NBL_DEV_MGT_TO_DISP_PRIV(dev_mgt),
> + xstats_names, &xstats_cnt);
> + if (ret)
> + return -EIO;
> +
> + return xstats_cnt;
> +}
> +
You need to check the limit value.
The API is designed so that application is allowed to request only a subset
of the counters.
next prev parent reply other threads:[~2025-09-12 15:13 UTC|newest]
Thread overview: 141+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-27 1:40 [PATCH v3 00/16] NBL PMD for Nebulamatrix NICs dimon.zhao
2025-06-27 1:40 ` [PATCH v3 01/16] net/nbl: add doc and minimum nbl build framework dimon.zhao
2025-06-27 1:40 ` [PATCH v3 02/16] net/nbl: add simple probe/remove and log module dimon.zhao
2025-08-20 19:51 ` Stephen Hemminger
2025-06-27 1:40 ` [PATCH v3 03/16] net/nbl: add PHY layer definitions and implementation dimon.zhao
2025-06-27 1:40 ` [PATCH v3 04/16] net/nbl: add Channel " dimon.zhao
2025-06-27 1:40 ` [PATCH v3 05/16] net/nbl: add Resource " dimon.zhao
2025-06-27 1:40 ` [PATCH v3 06/16] net/nbl: add Dispatch " dimon.zhao
2025-06-27 1:40 ` [PATCH v3 07/16] net/nbl: add Dev " dimon.zhao
2025-06-27 1:40 ` [PATCH v3 08/16] net/nbl: add complete device init and uninit functionality dimon.zhao
2025-06-27 1:40 ` [PATCH v3 09/16] net/nbl: add UIO and VFIO mode for nbl dimon.zhao
2025-06-27 1:40 ` [PATCH v3 10/16] net/nbl: add nbl coexistence " dimon.zhao
2025-06-27 1:40 ` [PATCH v3 11/16] net/nbl: add nbl ethdev configuration dimon.zhao
2025-06-27 1:40 ` [PATCH v3 12/16] net/nbl: add nbl device rxtx queue setup and release ops dimon.zhao
2025-06-27 1:40 ` [PATCH v3 13/16] net/nbl: add nbl device start and stop ops dimon.zhao
2025-06-27 1:40 ` [PATCH v3 14/16] net/nbl: add nbl device Tx and Rx burst dimon.zhao
2025-06-27 1:40 ` [PATCH v3 15/16] net/nbl: add nbl device xstats and stats dimon.zhao
2025-06-27 1:40 ` [PATCH v3 16/16] net/nbl: nbl device support set MTU and promisc dimon.zhao
2025-06-27 21:07 ` [PATCH v3 00/16] NBL PMD for Nebulamatrix NICs Stephen Hemminger
2025-06-27 21:40 ` Thomas Monjalon
2025-08-13 6:43 ` [PATCH v4 " Dimon Zhao
2025-08-13 6:43 ` [PATCH v4 01/16] net/nbl: add doc and minimum nbl build framework Dimon Zhao
2025-08-13 14:43 ` Stephen Hemminger
2025-08-19 22:32 ` Stephen Hemminger
2025-08-13 6:43 ` [PATCH v4 02/16] net/nbl: add simple probe/remove and log module Dimon Zhao
2025-08-13 6:43 ` [PATCH v4 03/16] net/nbl: add PHY layer definitions and implementation Dimon Zhao
2025-08-13 9:30 ` Ivan Malov
2025-08-13 14:19 ` Stephen Hemminger
2025-08-13 6:43 ` [PATCH v4 04/16] net/nbl: add Channel " Dimon Zhao
2025-08-13 9:54 ` Ivan Malov
2025-08-13 14:21 ` Stephen Hemminger
2025-08-13 14:22 ` Stephen Hemminger
2025-08-13 14:25 ` Stephen Hemminger
2025-08-13 14:28 ` Stephen Hemminger
2025-08-13 6:43 ` [PATCH v4 05/16] net/nbl: add Resource " Dimon Zhao
2025-08-13 6:44 ` [PATCH v4 06/16] net/nbl: add Dispatch " Dimon Zhao
2025-08-13 6:44 ` [PATCH v4 07/16] net/nbl: add Dev " Dimon Zhao
2025-08-13 10:12 ` Ivan Malov
2025-08-13 6:44 ` [PATCH v4 08/16] net/nbl: add complete device init and uninit functionality Dimon Zhao
2025-08-13 6:44 ` [PATCH v4 09/16] net/nbl: add UIO and VFIO mode for nbl Dimon Zhao
2025-08-13 6:44 ` [PATCH v4 10/16] net/nbl: add nbl coexistence " Dimon Zhao
2025-08-13 10:35 ` Ivan Malov
2025-08-13 6:44 ` [PATCH v4 11/16] net/nbl: add nbl ethdev configuration Dimon Zhao
2025-08-13 10:40 ` Ivan Malov
2025-08-13 6:44 ` [PATCH v4 12/16] net/nbl: add nbl device rxtx queue setup and release ops Dimon Zhao
2025-08-13 12:00 ` Ivan Malov
2025-08-15 3:47 ` 回复:[PATCH " Dimon
2025-08-15 8:00 ` Ivan Malov
2025-08-18 2:59 ` 回复:回复:[PATCH " Dimon
2025-08-13 6:44 ` [PATCH v4 13/16] net/nbl: add nbl device start and stop ops Dimon Zhao
2025-08-13 6:44 ` [PATCH v4 14/16] net/nbl: add nbl device Tx and Rx burst Dimon Zhao
2025-08-13 11:31 ` Ivan Malov
2025-08-13 6:44 ` [PATCH v4 15/16] net/nbl: add nbl device xstats and stats Dimon Zhao
2025-08-13 11:48 ` Ivan Malov
2025-08-13 14:27 ` Stephen Hemminger
2025-08-18 10:11 ` 回复:[PATCH " Dimon
2025-08-13 6:44 ` [PATCH v4 16/16] net/nbl: nbl device support set MTU and promisc Dimon Zhao
2025-08-13 12:06 ` Ivan Malov
2025-08-19 10:22 ` [PATCH v5 00/17] NBL PMD for Nebulamatrix NICs Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 01/17] net/nbl: add doc and minimum nbl build framework Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 02/17] net/nbl: add simple probe/remove and log module Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 03/17] net/nbl: add HW layer definitions and implementation Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 04/17] net/nbl: add Channel " Dimon Zhao
2025-08-19 22:05 ` Stephen Hemminger
2025-08-20 16:16 ` Stephen Hemminger
2025-08-21 3:19 ` 回复:[PATCH " Dimon
2025-08-19 10:22 ` [PATCH v5 05/17] net/nbl: add Resource " Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 06/17] net/nbl: add Dispatch " Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 07/17] net/nbl: add Dev " Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 08/17] net/nbl: add complete device init and uninit functionality Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 09/17] net/nbl: add UIO and VFIO mode for nbl Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 10/17] net/nbl: add nbl coexistence " Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 11/17] net/nbl: add nbl ethdev configuration Dimon Zhao
2025-08-19 15:30 ` Stephen Hemminger
2025-08-19 10:22 ` [PATCH v5 12/17] net/nbl: add nbl device rxtx queue setup and release ops Dimon Zhao
2025-08-19 22:35 ` Stephen Hemminger
2025-08-19 10:22 ` [PATCH v5 13/17] net/nbl: add nbl device start and stop ops Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 14/17] net/nbl: add nbl device Tx and Rx burst Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 15/17] net/nbl: add nbl ethdev infos get Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 16/17] net/nbl: add nbl device xstats and stats Dimon Zhao
2025-08-19 10:22 ` [PATCH v5 17/17] net/nbl: nbl device support set MTU and promisc Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 00/17] NBL PMD for Nebulamatrix NICs Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 01/17] net/nbl: add doc and minimum nbl build framework Dimon Zhao
2025-08-27 16:27 ` Stephen Hemminger
2025-08-28 3:06 ` 回复:[PATCH " Dimon
2025-08-22 9:03 ` [PATCH v6 02/17] net/nbl: add simple proybe/remove and log module Dimon Zhao
2025-08-27 16:30 ` Stephen Hemminger
2025-08-22 9:03 ` [PATCH v6 03/17] net/nbl: add HW layer definitions and implementation Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 04/17] net/nbl: add Channel " Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 05/17] net/nbl: add Resource " Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 06/17] net/nbl: add Dispatch " Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 07/17] net/nbl: add Dev " Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 08/17] net/nbl: add complete device init and uninit functionality Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 09/17] net/nbl: add UIO and VFIO mode for nbl Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 10/17] net/nbl: add nbl coexistence " Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 11/17] net/nbl: add nbl ethdev configuration Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 12/17] net/nbl: add nbl device rxtx queue setup and release ops Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 13/17] net/nbl: add nbl device start and stop ops Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 14/17] net/nbl: add nbl device Tx and Rx burst Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 15/17] net/nbl: add nbl ethdev infos get Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 16/17] net/nbl: add nbl device xstats and stats Dimon Zhao
2025-08-22 9:03 ` [PATCH v6 17/17] net/nbl: nbl device support set MTU and promisc Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 00/17] NBL PMD for Nebulamatrix NICs Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 01/17] net/nbl: add doc and minimum nbl build framework Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 02/17] net/nbl: add simple probe/remove and log module Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 03/17] net/nbl: add HW layer definitions and implementation Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 04/17] net/nbl: add Channel " Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 05/17] net/nbl: add Resource " Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 06/17] net/nbl: add Dispatch " Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 07/17] net/nbl: add Dev " Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 08/17] net/nbl: add complete device init and uninit functionality Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 09/17] net/nbl: add UIO and VFIO mode for nbl Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 10/17] net/nbl: add nbl coexistence " Dimon Zhao
2025-08-29 3:27 ` [PATCH v7 11/17] net/nbl: add nbl ethdev configuration Dimon Zhao
2025-08-29 3:28 ` [PATCH v7 12/17] net/nbl: add nbl device rxtx queue setup and release ops Dimon Zhao
2025-08-29 3:28 ` [PATCH v7 13/17] net/nbl: add nbl device start and stop ops Dimon Zhao
2025-08-29 3:28 ` [PATCH v7 14/17] net/nbl: add nbl device Tx and Rx burst Dimon Zhao
2025-08-29 3:28 ` [PATCH v7 15/17] net/nbl: add nbl ethdev infos get Dimon Zhao
2025-08-29 3:28 ` [PATCH v7 16/17] net/nbl: add nbl device xstats and stats Dimon Zhao
2025-08-29 3:28 ` [PATCH v7 17/17] net/nbl: nbl device support set MTU and promisc Dimon Zhao
2025-09-09 21:34 ` [PATCH v7 00/17] NBL PMD for Nebulamatrix NICs Stephen Hemminger
2025-09-12 6:17 ` [PATCH v8 " Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 01/17] net/nbl: add doc and minimum nbl build framework Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 02/17] net/nbl: add simple probe/remove and log module Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 03/17] net/nbl: add HW layer definitions and implementation Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 04/17] net/nbl: add Channel " Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 05/17] net/nbl: add Resource " Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 06/17] net/nbl: add Dispatch " Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 07/17] net/nbl: add Dev " Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 08/17] net/nbl: add complete device init and uninit functionality Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 09/17] net/nbl: add UIO and VFIO mode for nbl Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 10/17] net/nbl: add nbl coexistence " Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 11/17] net/nbl: add nbl ethdev configuration Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 12/17] net/nbl: add nbl device rxtx queue setup and release ops Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 13/17] net/nbl: add nbl device start and stop ops Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 14/17] net/nbl: add nbl device Tx and Rx burst Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 15/17] net/nbl: add nbl ethdev infos get Dimon Zhao
2025-09-12 6:17 ` [PATCH v8 16/17] net/nbl: add nbl device xstats and stats Dimon Zhao
2025-09-12 15:13 ` Stephen Hemminger [this message]
2025-09-12 6:17 ` [PATCH v8 17/17] net/nbl: add nbl device set MTU and promisc Dimon Zhao
2025-09-12 15:25 ` Stephen Hemminger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250912081331.38bac355@hermes.local \
--to=stephen@networkplumber.org \
--cc=dev@dpdk.org \
--cc=dimon.zhao@nebula-matrix.com \
--cc=kyo.liu@nebula-matrix.com \
--cc=leon.yu@nebula-matrix.com \
--cc=sam.chen@nebula-matrix.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).