DPDK patches and discussions
 help / color / mirror / Atom feed
From: Bruce Richardson <bruce.richardson@intel.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>,
	dev@dpdk.org, Thomas Monjalon <thomas@monjalon.net>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	jerinj@marvell.com, Ciara Power <ciara.power@intel.com>
Subject: Re: [dpdk-dev] [v1] ethdev: add telemetry endpoint for device info
Date: Mon, 11 Oct 2021 16:40:13 +0100	[thread overview]
Message-ID: <YWRa3ULmUtdjCjv/@bricha3-MOBL.ger.corp.intel.com> (raw)
In-Reply-To: <53e36586-89a5-68c3-5dc1-b61524bbe4cf@intel.com>

On Mon, Oct 11, 2021 at 03:40:58PM +0100, Ferruh Yigit wrote:
> On 9/29/2021 5:25 AM, Gowrishankar Muthukrishnan wrote:
> > Add telemetry endpoint /ethdev/info for device info.
> > 
> > Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com>
> > Change-Id: I3e6ee2bd1a80675473adf0bd884b194f98e28536
> > ---
> >   lib/ethdev/rte_ethdev.c | 92 +++++++++++++++++++++++++++++++++++++++++
> >   1 file changed, 92 insertions(+)
> > 
> > diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> > index daf5ca9242..9b7bfa5f63 100644
> > --- a/lib/ethdev/rte_ethdev.c
> > +++ b/lib/ethdev/rte_ethdev.c
> > @@ -6242,6 +6242,96 @@ eth_dev_handle_port_link_status(const char *cmd __rte_unused,
> >   	return 0;
> >   }
> > +static int
> > +eth_dev_handle_port_info(const char *cmd __rte_unused,
> > +		const char *params,
> > +		struct rte_tel_data *d)
> > +{
> > +	struct rte_tel_data *rxq_state, *txq_state;
> > +	char mac_addr[RTE_ETHER_ADDR_LEN];
> > +	struct rte_eth_dev *eth_dev;
> > +	char *end_param;
> > +	int port_id, i;
> > +
> > +	if (params == NULL || strlen(params) == 0 || !isdigit(*params))
> > +		return -1;
> > +
> > +	port_id = strtoul(params, &end_param, 0);
> > +	if (*end_param != '\0')
> > +		RTE_ETHDEV_LOG(NOTICE,
> > +			"Extra parameters passed to ethdev telemetry command, ignoring");
> > +
> > +	if (!rte_eth_dev_is_valid_port(port_id))
> > +		return -EINVAL;
> > +
> > +	eth_dev = &rte_eth_devices[port_id];
> > +	if (!eth_dev)
> > +		return -EINVAL;
> > +
> > +	rxq_state = rte_tel_data_alloc();
> > +	if (!rxq_state)
> > +		return -ENOMEM;
> > +
> > +	txq_state = rte_tel_data_alloc();
> > +	if (!txq_state)
> > +		return -ENOMEM;
> > +
> > +	rte_tel_data_start_dict(d);
> > +	rte_tel_data_add_dict_string(d, "name", eth_dev->data->name);
> > +	rte_tel_data_add_dict_int(d, "state", eth_dev->state);
> > +	rte_tel_data_add_dict_int(d, "nb_rx_queues",
> > +			eth_dev->data->nb_rx_queues);
> > +	rte_tel_data_add_dict_int(d, "nb_tx_queues",
> > +			eth_dev->data->nb_tx_queues);
> > +	rte_tel_data_add_dict_int(d, "port_id", eth_dev->data->port_id);
> > +	rte_tel_data_add_dict_int(d, "mtu", eth_dev->data->mtu);
> > +	rte_tel_data_add_dict_int(d, "rx_mbuf_size_min",
> > +			eth_dev->data->min_rx_buf_size);
> > +	rte_tel_data_add_dict_int(d, "rx_mbuf_alloc_fail",
> > +			eth_dev->data->rx_mbuf_alloc_failed);
> > +	snprintf(mac_addr, RTE_ETHER_ADDR_LEN, "%02x:%02x:%02x:%02x:%02x:%02x",
> > +			 eth_dev->data->mac_addrs->addr_bytes[0],
> > +			 eth_dev->data->mac_addrs->addr_bytes[1],
> > +			 eth_dev->data->mac_addrs->addr_bytes[2],
> > +			 eth_dev->data->mac_addrs->addr_bytes[3],
> > +			 eth_dev->data->mac_addrs->addr_bytes[4],
> > +			 eth_dev->data->mac_addrs->addr_bytes[5]);
> > +	rte_tel_data_add_dict_string(d, "mac_addr", mac_addr);
> > +	rte_tel_data_add_dict_int(d, "promiscuous",
> > +			eth_dev->data->promiscuous);
> > +	rte_tel_data_add_dict_int(d, "scattered_rx",
> > +			eth_dev->data->scattered_rx);
> > +	rte_tel_data_add_dict_int(d, "all_multicast",
> > +			eth_dev->data->all_multicast);
> > +	rte_tel_data_add_dict_int(d, "dev_started", eth_dev->data->dev_started);
> > +	rte_tel_data_add_dict_int(d, "lro", eth_dev->data->lro);
> > +	rte_tel_data_add_dict_int(d, "dev_configured",
> > +			eth_dev->data->dev_configured);
> > +
> > +	rte_tel_data_start_array(rxq_state, RTE_TEL_INT_VAL);
> > +	for (i = 0; i < eth_dev->data->nb_rx_queues; i++)
> > +		rte_tel_data_add_array_int(rxq_state,
> > +				eth_dev->data->rx_queue_state[i]);
> > +
> > +	rte_tel_data_start_array(txq_state, RTE_TEL_INT_VAL);
> > +	for (i = 0; i < eth_dev->data->nb_tx_queues; i++)
> > +		rte_tel_data_add_array_int(txq_state,
> > +				eth_dev->data->tx_queue_state[i]);
> > +
> > +	rte_tel_data_add_dict_container(d, "rxq_state", rxq_state, 0);
> > +	rte_tel_data_add_dict_container(d, "txq_state", txq_state, 0);
> > +	rte_tel_data_add_dict_int(d, "numa_node", eth_dev->data->numa_node);
> > +	rte_tel_data_add_dict_int(d, "dev_flags", eth_dev->data->dev_flags);
> > +	rte_tel_data_add_dict_int(d, "rx_offloads",
> > +			eth_dev->data->dev_conf.rxmode.offloads);
> > +	rte_tel_data_add_dict_int(d, "tx_offloads",
> > +			eth_dev->data->dev_conf.txmode.offloads);
> > +	rte_tel_data_add_dict_int(d, "ethdev_rss_hf",
> > +			eth_dev->data->dev_conf.rx_adv_conf.rss_conf.rss_hf);
> > +
> > +	return 0;
> > +}
> > +
> >   int
> >   rte_eth_hairpin_queue_peer_update(uint16_t peer_port, uint16_t peer_queue,
> >   				  struct rte_hairpin_peer_info *cur_info,
> > @@ -6323,4 +6413,6 @@ RTE_INIT(ethdev_init_telemetry)
> >   	rte_telemetry_register_cmd("/ethdev/link_status",
> >   			eth_dev_handle_port_link_status,
> >   			"Returns the link status for a port. Parameters: int port_id");
> > +	rte_telemetry_register_cmd("/ethdev/info", eth_dev_handle_port_info,
> > +			"Returns the device info for a port. Parameters: int port_id");
> >   }
> > 
> 
> @Ciara, @Bruce, can you please review the set from telemetry perspective?
> 
> And overall looks like good idea to provide more ethdev information via telemetry,
> but when we have this it becomes interface since applications may rely on it,
> is extending it breaks the apps?
> If so perhaps we should consider multiple small commands instead of one big 'info'
> one, what do you think?
> 

I think the info command is fine enough granularity as it is. Since
(currently) the only output format used is json, we don't need to worry
about adding in extra info later, because AFAIK referencing json nodes is by
name, rather than by offset. For example, "response['tx_offloads']" should be
valid no matter how many extra fields are added into the response later on.

/Bruce

  reply	other threads:[~2021-10-11 15:44 UTC|newest]

Thread overview: 121+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-29 15:25 [dpdk-dev] [v1, 0/3] common/cnxk: enable npa telemetry Gowrishankar Muthukrishnan
2021-07-29 15:25 ` [dpdk-dev] [v1, 1/3] telemetry: enable storing pointer value Gowrishankar Muthukrishnan
2021-07-29 15:48   ` Bruce Richardson
2021-07-30 12:08     ` [dpdk-dev] [EXT] " Gowrishankar Muthukrishnan
2021-08-01 17:40       ` Gowrishankar Muthukrishnan
2021-07-29 15:25 ` [dpdk-dev] [v1, 2/3] test/telemetry: add unit tests for " Gowrishankar Muthukrishnan
2021-07-29 15:25 ` [dpdk-dev] [v1, 3/3] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-08-01 17:37 ` [dpdk-dev] [v2, 0/3] common/cnxk: enable npa telemetry Gowrishankar Muthukrishnan
2021-08-01 17:37   ` [dpdk-dev] [v2, 1/3] telemetry: enable storing pointer value Gowrishankar Muthukrishnan
2021-08-01 17:37   ` [dpdk-dev] [v2, 2/3] test/telemetry: add unit tests for " Gowrishankar Muthukrishnan
2021-08-01 17:37   ` [dpdk-dev] [v2, 3/3] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-08-03  8:05   ` [dpdk-dev] [v3, 0/3] common/cnxk: enable npa telemetry Gowrishankar Muthukrishnan
2021-08-03  8:05     ` [dpdk-dev] [v3, 1/3] telemetry: enable storing pointer value Gowrishankar Muthukrishnan
2021-08-03  8:05     ` [dpdk-dev] [v3, 2/3] test/telemetry: add unit tests for " Gowrishankar Muthukrishnan
2021-08-03  8:05     ` [dpdk-dev] [v3, 3/3] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-08-11 15:59     ` [dpdk-dev] [v3, 0/3] common/cnxk: enable npa telemetry Power, Ciara
2021-08-11 16:18       ` Gowrishankar Muthukrishnan
2021-08-24  8:53         ` Gowrishankar Muthukrishnan
2021-08-25 10:09         ` Thomas Monjalon
2021-08-25 14:38           ` [dpdk-dev] [EXT] " Gowrishankar Muthukrishnan
2021-08-26 17:15     ` [dpdk-dev] [v4, 0/2] cnxk: enable npa and mempool telemetry Gowrishankar Muthukrishnan
2021-08-26 17:15       ` [dpdk-dev] [v4, 1/2] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-08-26 18:06         ` Bruce Richardson
2021-08-27  6:43           ` [dpdk-dev] [EXT] " Gowrishankar Muthukrishnan
2021-08-26 17:15       ` [dpdk-dev] [v4, 2/2] mempool/cnxk: add telemetry end points Gowrishankar Muthukrishnan
2021-08-27  6:41       ` [dpdk-dev] [v5, 0/2] cnxk: enable npa and mempool telemetry Gowrishankar Muthukrishnan
2021-08-27  6:41         ` [dpdk-dev] [v5, 1/2] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-08-27  6:41         ` [dpdk-dev] [v5, 2/2] mempool/cnxk: add telemetry end points Gowrishankar Muthukrishnan
2021-09-04  3:25         ` [dpdk-dev] [v6, 0/4] cnxk: enable telemetry endpoints Gowrishankar Muthukrishnan
2021-09-04  3:25           ` [dpdk-dev] [v6, 1/4] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-09-04  3:25           ` [dpdk-dev] [v6, 2/4] mempool/cnxk: add telemetry end points Gowrishankar Muthukrishnan
2021-09-04  3:25           ` [dpdk-dev] [v6, 3/4] common/cnxk: add telemetry endpoints to nix Gowrishankar Muthukrishnan
2021-09-04  3:25           ` [dpdk-dev] [v6, 4/4] net/cnxk: add telemetry endpoing to ethdev Gowrishankar Muthukrishnan
2021-09-08 17:03         ` [dpdk-dev] [v7, 0/6] cnxk: enable telemetry endpoints Gowrishankar Muthukrishnan
2021-09-08 17:03           ` [dpdk-dev] [v7, 1/6] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-09-08 17:03           ` [dpdk-dev] [v7, 2/6] mempool/cnxk: add telemetry end points Gowrishankar Muthukrishnan
2021-09-08 17:03           ` [dpdk-dev] [v7, 3/6] common/cnxk: add telemetry endpoints to nix Gowrishankar Muthukrishnan
2021-09-08 17:03           ` [dpdk-dev] [v7, 4/6] net/cnxk: add telemetry endpoing to ethdev Gowrishankar Muthukrishnan
2021-09-08 17:03           ` [dpdk-dev] [v7, 5/6] telemetry: fix json output buffer size Gowrishankar Muthukrishnan
2021-09-21 11:02             ` [dpdk-dev] [v2] " Gowrishankar Muthukrishnan
2021-09-22  9:21               ` Power, Ciara
2021-09-23  5:53                 ` Gowrishankar Muthukrishnan
2021-09-30  8:47                   ` Power, Ciara
2021-09-30  9:00                     ` Gowrishankar Muthukrishnan
2021-10-07  9:04                       ` Power, Ciara
2021-09-23  6:21               ` [dpdk-dev] [v3] " Gowrishankar Muthukrishnan
2021-09-23  6:26                 ` [dpdk-dev] [v4] " Gowrishankar Muthukrishnan
2021-09-29  4:18                   ` [dpdk-dev] [v5] " Gowrishankar Muthukrishnan
2021-10-06 17:38                     ` Thomas Monjalon
2021-10-07  4:58                       ` [dpdk-dev] [EXT] " Gowrishankar Muthukrishnan
2021-10-07  7:22                         ` Thomas Monjalon
2021-10-07  8:36                           ` Gowrishankar Muthukrishnan
2021-10-11 10:54                     ` [dpdk-dev] [v6] telemetry: remove limitation on JSON output buffer length Gowrishankar Muthukrishnan
2021-10-13 11:06                       ` Power, Ciara
2021-10-13 15:25                         ` Thomas Monjalon
2021-09-08 17:03           ` [dpdk-dev] [v7, 6/6] crypto/cnxk: add telemetry endpoints to cryptodev Gowrishankar Muthukrishnan
2021-09-21 11:32             ` [dpdk-dev] [v2] " Gowrishankar Muthukrishnan
2021-09-29  6:45               ` [dpdk-dev] [v1] cryptodev: add telemetry endpoint for cryptodev info Gowrishankar Muthukrishnan
2021-10-22 12:28                 ` [dpdk-dev] [v2] cryptodev: add telemetry endpoint for cryptodev capabilities Gowrishankar Muthukrishnan
2021-10-22 12:37                   ` [dpdk-dev] [v5] crypto/cnxk: add telemetry endpoints to cryptodev Gowrishankar Muthukrishnan
2021-10-22 12:59                   ` [dpdk-dev] [v6] " Gowrishankar Muthukrishnan
2021-10-22 12:57                 ` [dpdk-dev] [v3] cryptodev: add telemetry endpoint for cryptodev capabilities Gowrishankar Muthukrishnan
2021-10-22 16:02                   ` [dpdk-dev] [v7] crypto/cnxk: add telemetry endpoints to cryptodev Gowrishankar Muthukrishnan
2021-10-26 13:44                     ` [dpdk-dev] [v8] " Gowrishankar Muthukrishnan
2021-10-26 14:10                       ` Akhil Goyal
2021-11-03  4:43                         ` Gowrishankar Muthukrishnan
2021-10-30 17:41                       ` [dpdk-dev] [v9] " Gowrishankar Muthukrishnan
2021-10-30 17:45                       ` [dpdk-dev] [v1] security: add telemetry endpoint for cryptodev security capabilities Gowrishankar Muthukrishnan
2021-10-31  5:24                         ` [dpdk-dev] [v2] " Gowrishankar Muthukrishnan
2021-11-02 14:42                         ` [dpdk-dev] [v3] " Gowrishankar Muthukrishnan
2021-11-02 14:52                           ` [dpdk-dev] [v4] " Gowrishankar Muthukrishnan
2021-11-03 19:37                             ` Akhil Goyal
2021-11-04  4:29                               ` Gowrishankar Muthukrishnan
2021-11-04  5:11                             ` [dpdk-dev] [v5] " Gowrishankar Muthukrishnan
2021-11-04 10:50                               ` Akhil Goyal
2021-10-25  7:26                   ` [dpdk-dev] [v3] cryptodev: add telemetry endpoint for cryptodev capabilities Akhil Goyal
2021-10-26 13:13                   ` [dpdk-dev] [v5] " Gowrishankar Muthukrishnan
2021-10-26 14:12                     ` Akhil Goyal
2021-10-26 15:44                       ` Gowrishankar Muthukrishnan
2021-10-26 18:34                         ` Akhil Goyal
2021-10-26 12:52                 ` [dpdk-dev] [v4] " Gowrishankar Muthukrishnan
2021-09-29  7:01               ` [dpdk-dev] [v3] crypto/cnxk: add telemetry endpoints to cryptodev Gowrishankar Muthukrishnan
2021-09-29  8:56                 ` [dpdk-dev] [v4] " Gowrishankar Muthukrishnan
2021-09-16  8:52           ` [dpdk-dev] [v7, 0/6] cnxk: enable telemetry endpoints Jerin Jacob
2021-09-21 10:52         ` [dpdk-dev] [v8, 0/4] cnxk: enable telemetry endpoints for mempool and ethdev Gowrishankar Muthukrishnan
2021-09-21 10:52           ` [dpdk-dev] [v8, 1/4] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-09-21 10:52           ` [dpdk-dev] [v8, 2/4] mempool/cnxk: add telemetry end points Gowrishankar Muthukrishnan
2021-09-29  6:40             ` [dpdk-dev] [v1] mempool: add telemetry endpoint for mempool info Gowrishankar Muthukrishnan
2021-10-13 15:21               ` Thomas Monjalon
2021-10-13 15:26                 ` Bruce Richardson
2021-10-13 15:40               ` Bruce Richardson
2021-10-22  3:28               ` [dpdk-dev] [v2] " Gowrishankar Muthukrishnan
2021-10-22  5:55                 ` David Marchand
2021-10-22 16:11               ` [dpdk-dev] [v3] " Gowrishankar Muthukrishnan
2021-10-22 20:38                 ` Thomas Monjalon
2021-09-21 10:52           ` [dpdk-dev] [v8, 3/4] common/cnxk: add telemetry endpoints to nix Gowrishankar Muthukrishnan
2021-09-21 10:52           ` [dpdk-dev] [v8, 4/4] net/cnxk: add telemetry endpoing to ethdev Gowrishankar Muthukrishnan
2021-09-21 11:27             ` Jerin Jacob
2021-09-21 11:53               ` Bruce Richardson
2021-09-21 12:16                 ` Olivier Matz
2021-09-29  4:25             ` [dpdk-dev] [v1] ethdev: add telemetry endpoint for device info Gowrishankar Muthukrishnan
2021-10-11 14:40               ` Ferruh Yigit
2021-10-11 15:40                 ` Bruce Richardson [this message]
2021-10-11 15:44                   ` Ferruh Yigit
2021-10-14 21:47               ` Ferruh Yigit
2021-09-29  6:54           ` [dpdk-dev] [v9 0/4] cnxk: enable telemetry endpoints Gowrishankar Muthukrishnan
2021-09-29  6:55             ` [dpdk-dev] [v9 1/4] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-10-14 15:22               ` [dpdk-dev] [EXT] " Harman Kalra
2021-09-29  6:55             ` [dpdk-dev] [v9 2/4] common/cnxk: add telemetry endpoints to nix Gowrishankar Muthukrishnan
2021-10-14 16:37               ` [dpdk-dev] [EXT] " Harman Kalra
2021-09-29  6:55             ` [dpdk-dev] [v9 3/4] mempool/cnxk: add telemetry endpoints mempool Gowrishankar Muthukrishnan
2021-10-14 16:43               ` [dpdk-dev] [EXT] " Harman Kalra
2021-09-29  6:55             ` [dpdk-dev] [v9 4/4] net/cnxk: add telemetry endpoints to ethdev Gowrishankar Muthukrishnan
2021-10-14 16:47               ` [dpdk-dev] [EXT] " Harman Kalra
2021-10-19 11:27             ` [dpdk-dev] [v10 0/4] cnxk: enable telemetry endpoints Gowrishankar Muthukrishnan
2021-10-19 11:27               ` [dpdk-dev] [v10 1/4] common/cnxk: add telemetry endpoints to npa Gowrishankar Muthukrishnan
2021-10-19 11:27               ` [dpdk-dev] [v10 2/4] common/cnxk: add telemetry endpoints to nix Gowrishankar Muthukrishnan
2021-10-19 11:27               ` [dpdk-dev] [v10 3/4] mempool/cnxk: add telemetry endpoints mempool Gowrishankar Muthukrishnan
2021-10-19 11:27               ` [dpdk-dev] [v10 4/4] net/cnxk: add telemetry endpoints to ethdev Gowrishankar Muthukrishnan
2021-10-19 16:42             ` [dpdk-dev] [v9 0/4] cnxk: enable telemetry endpoints Jerin Jacob
2021-10-20 13:30               ` Ferruh Yigit

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=YWRa3ULmUtdjCjv/@bricha3-MOBL.ger.corp.intel.com \
    --to=bruce.richardson@intel.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=ciara.power@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=gmuthukrishn@marvell.com \
    --cc=jerinj@marvell.com \
    --cc=thomas@monjalon.net \
    /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).