Thread (121 messages) 121 messages, 10 authors, 2021-11-04

Re: [dpdk-dev] [v8, 4/4] net/cnxk: add telemetry endpoing to ethdev

From: Olivier Matz <hidden>
Date: 2021-09-21 12:16:24

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:
quoted
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.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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help