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