Re: [dpdk-dev] [v8, 4/4] net/cnxk: add telemetry endpoing to ethdev
From: Bruce Richardson <hidden>
Date: 2021-09-21 11:54:04
On Tue, Sep 21, 2021 at 04:57:52PM +0530, Jerin Jacob wrote:
On Tue, Sep 21, 2021 at 4:23 PM Gowrishankar Muthukrishnan [off-list ref] wrote:quoted
Add telemetry endpoint to ethdev. Signed-off-by: Gowrishankar Muthukrishnan <redacted> --- 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.cdiff --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.