On Tue, Sep 21, 2021 at 12:53:53PM +0100, Bruce Richardson wrote: > On Tue, Sep 21, 2021 at 04:57:52PM +0530, Jerin Jacob wrote: > > 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? > > > Not a maintainer of those libs, but +1 to making anything generic that can > be, save reimplementing things multiple times in drivers.
I agree, I feel it would make more sense to have most of the job done in the mempool library in generic. A new ops could be added to fill driver-specific info.