Add /ethdev/list_names telemetry endpoint which returns a dictionary
keyed by port ID with device name as the value, so users can
identify ports by name directly from the telemetry output.

Original /ethdev/list output:
  {"/ethdev/list": [0, 1]}

New /ethdev/list_names output:
  {"/ethdev/list_names": {"0": "0000:7d:00.0",
  "1": "0000:7d:00.1"}}

Signed-off-by: Chengwen Feng <[email protected]>
---
 lib/ethdev/rte_ethdev_telemetry.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/lib/ethdev/rte_ethdev_telemetry.c 
b/lib/ethdev/rte_ethdev_telemetry.c
index a910864bc5..0e71419473 100644
--- a/lib/ethdev/rte_ethdev_telemetry.c
+++ b/lib/ethdev/rte_ethdev_telemetry.c
@@ -61,6 +61,24 @@ eth_dev_handle_port_list(const char *cmd __rte_unused,
        return 0;
 }
 
+static int
+eth_dev_handle_port_list_names(const char *cmd __rte_unused,
+               const char *params __rte_unused,
+               struct rte_tel_data *d)
+{
+       char id_str[RTE_TEL_MAX_STRING_LEN];
+       struct rte_eth_dev *dev;
+       int port_id;
+
+       rte_tel_data_start_dict(d);
+       RTE_ETH_FOREACH_DEV(port_id) {
+               dev = &rte_eth_devices[port_id];
+               sprintf(id_str, "%d", port_id);
+               rte_tel_data_add_dict_string(d, id_str, dev->data->name);
+       }
+       return 0;
+}
+
 static int
 eth_dev_parse_hide_zero(const char *key, const char *value, void *extra_args)
 {
@@ -1548,6 +1566,9 @@ RTE_INIT(ethdev_init_telemetry)
        rte_telemetry_register_cmd_arg("/ethdev/list",
                        eth_dev_telemetry_do, eth_dev_handle_port_list,
                        "Returns list of available ethdev ports. Takes no 
parameters");
+       rte_telemetry_register_cmd_arg("/ethdev/list_names",
+                       eth_dev_telemetry_do, eth_dev_handle_port_list_names,
+                       "Returns dict of available ethdev ports by ID-NAMEs. 
Takes no parameters");
        rte_telemetry_register_cmd_arg("/ethdev/stats",
                        eth_dev_telemetry_do, eth_dev_handle_port_stats,
                        "Returns the common stats for a port. Parameters: int 
port_id");
-- 
2.17.1

Reply via email to