On Tue, Sep 21, 2021 at 4:23 PM Gowrishankar Muthukrishnan <gmuthukri...@marvell.com> wrote: > > Add telemetry endpoint to ethdev. > > Signed-off-by: Gowrishankar Muthukrishnan <gmuthukri...@marvell.com> > --- > drivers/net/cnxk/cnxk_ethdev_telemetry.c | 129 +++++++++++++++++++++++ > drivers/net/cnxk/meson.build | 1 + > 2 files changed, 130 insertions(+) > create mode 100644 drivers/net/cnxk/cnxk_ethdev_telemetry.c > > diff --git a/drivers/net/cnxk/cnxk_ethdev_telemetry.c > b/drivers/net/cnxk/cnxk_ethdev_telemetry.c > new file mode 100644 > index 0000000000..de8c468670 > --- /dev/null > +++ b/drivers/net/cnxk/cnxk_ethdev_telemetry.c > @@ -0,0 +1,129 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(C) 2021 Marvell International Ltd. > + */ > + > +#include <rte_telemetry.h> > + > +#include "cnxk_ethdev.h" > + > +/* Macro to count no of words in eth_info_s size */ > +#define ETH_INFO_SZ > \ > + (RTE_ALIGN_CEIL(sizeof(struct eth_info_s), sizeof(uint64_t)) / > \ > + sizeof(uint64_t)) > +#define MACADDR_LEN 18 > + > +static int > +ethdev_tel_handle_info(const char *cmd __rte_unused, > + const char *params __rte_unused, struct rte_tel_data > *d) > +{ > + struct rte_eth_dev *eth_dev; > + struct rte_tel_data *i_data; > + struct cnxk_eth_dev *dev; > + union eth_info_u { > + struct eth_info_s { > + /** PF/VF information */ > + uint16_t pf_func; > + /** No of rx queues */ > + uint16_t rx_queues; > + /** No of tx queues */ > + uint16_t tx_queues; > + /** Port ID */ > + uint16_t port_id; > + /** MAC entries */ > + char mac_addr[MACADDR_LEN]; > + uint8_t max_mac_entries; > + bool dmac_filter_ena; > + uint8_t dmac_filter_count; > + uint16_t flags; > + uint8_t ptype_disable; > + bool scalar_ena; > + bool ptp_ena; > + /* Offload capabilities */ > + uint64_t rx_offload_capa; > + uint64_t tx_offload_capa; > + uint32_t speed_capa; > + /* Configured offloads */ > + uint64_t rx_offloads; > + uint64_t tx_offloads; > + /* Platform specific offload flags */ > + uint16_t rx_offload_flags; > + uint16_t tx_offload_flags; > + /* ETHDEV RSS HF bitmask */ > + uint64_t ethdev_rss_hf;
+ Ethdev, , mempool and telemetry maintainers All of the above data except[1] is generic data that can be derived from ethdev APIs or ethdev data from lib/ethdev itself, IMO, We should avoid duplicating this in driver and make useful for other driver/application by adding generic endpoint in ethdev. Same comment for "[2/4] mempool/cnxk: add telemetry end points" for mempool subsystem. Thoughts from Maintainers? [1] uint8_t ptype_disable; bool scalar_ena; bool ptp_ena; uint16_t flags;