* [PATCH 0/2] enhance ethdev telemetry
@ 2025-10-25 9:42 Chengwen Feng
2025-10-25 9:42 ` [PATCH 1/2] ethdev: support telemetry RSS algorithm Chengwen Feng
2025-10-25 9:42 ` [PATCH 2/2] ethdev: support hide zero when telemetry regs Chengwen Feng
0 siblings, 2 replies; 3+ messages in thread
From: Chengwen Feng @ 2025-10-25 9:42 UTC (permalink / raw)
To: thomas, stephen; +Cc: dev
This patchset contains two commits which enhancing ethdev telemetry.
Chengwen Feng (2):
ethdev: support telemetry RSS algorithm
ethdev: support hide zero when telemetry regs
lib/ethdev/rte_ethdev_telemetry.c | 56 ++++++++++++++++++++++---------
1 file changed, 40 insertions(+), 16 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/2] ethdev: support telemetry RSS algorithm
2025-10-25 9:42 [PATCH 0/2] enhance ethdev telemetry Chengwen Feng
@ 2025-10-25 9:42 ` Chengwen Feng
2025-10-25 9:42 ` [PATCH 2/2] ethdev: support hide zero when telemetry regs Chengwen Feng
1 sibling, 0 replies; 3+ messages in thread
From: Chengwen Feng @ 2025-10-25 9:42 UTC (permalink / raw)
To: thomas, stephen; +Cc: dev
This commit adds dump RSS algorithm when doing telemetry.
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/ethdev/rte_ethdev_telemetry.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/lib/ethdev/rte_ethdev_telemetry.c b/lib/ethdev/rte_ethdev_telemetry.c
index 519ad34be7..020e3979b0 100644
--- a/lib/ethdev/rte_ethdev_telemetry.c
+++ b/lib/ethdev/rte_ethdev_telemetry.c
@@ -726,6 +726,10 @@ eth_dev_add_rss_info(struct rte_eth_rss_conf *rss_conf, struct rte_tel_data *d)
strlcat(rss_key, key, key_len);
}
ret = rte_tel_data_add_dict_string(d, "rss_key", rss_key);
+ if (ret < 0)
+ goto free_rss_key;
+ ret = rte_tel_data_add_dict_string(d, "algorithm",
+ rte_eth_dev_rss_algo_name(rss_conf->algorithm));
free_rss_key:
free(rss_key);
--
2.17.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 2/2] ethdev: support hide zero when telemetry regs
2025-10-25 9:42 [PATCH 0/2] enhance ethdev telemetry Chengwen Feng
2025-10-25 9:42 ` [PATCH 1/2] ethdev: support telemetry RSS algorithm Chengwen Feng
@ 2025-10-25 9:42 ` Chengwen Feng
1 sibling, 0 replies; 3+ messages in thread
From: Chengwen Feng @ 2025-10-25 9:42 UTC (permalink / raw)
To: thomas, stephen; +Cc: dev
Support hide zero when telemetry regs, and also modify filter usage.
Now the usage:
/ethdev/regs,0,hide_zero=true --hide zero values when dump regs
/ethdev/regs,0,hide_zero=false --don't hide zero values
/ethdev/regs,0,filter=ssu --filter ssu module when dump regs
/ethdev/regs,0,filter=ssu,hide_zero=true
--filter ssu module and hide zero values when dump regs
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
---
lib/ethdev/rte_ethdev_telemetry.c | 52 +++++++++++++++++++++----------
1 file changed, 36 insertions(+), 16 deletions(-)
diff --git a/lib/ethdev/rte_ethdev_telemetry.c b/lib/ethdev/rte_ethdev_telemetry.c
index 020e3979b0..a910864bc5 100644
--- a/lib/ethdev/rte_ethdev_telemetry.c
+++ b/lib/ethdev/rte_ethdev_telemetry.c
@@ -1383,18 +1383,21 @@ eth_dev_handle_port_tm_node_caps(const char *cmd __rte_unused,
static void
eth_dev_add_reg_data(struct rte_tel_data *d, struct rte_dev_reg_info *reg_info,
- uint32_t idx)
+ uint32_t idx, bool hide_zero)
{
+ uint64_t val;
+
if (reg_info->width == sizeof(uint32_t))
- rte_tel_data_add_dict_uint_hex(d, reg_info->names[idx].name,
- *((uint32_t *)reg_info->data + idx), 0);
+ val = *((uint32_t *)reg_info->data + idx);
else
- rte_tel_data_add_dict_uint_hex(d, reg_info->names[idx].name,
- *((uint64_t *)reg_info->data + idx), 0);
+ val = *((uint64_t *)reg_info->data + idx);
+
+ if (!hide_zero || val > 0)
+ rte_tel_data_add_dict_uint_hex(d, reg_info->names[idx].name, val, 0);
}
static int
-eth_dev_store_regs(struct rte_tel_data *d, struct rte_dev_reg_info *reg_info)
+eth_dev_store_regs(struct rte_tel_data *d, struct rte_dev_reg_info *reg_info, bool hide_zero)
{
struct rte_tel_data *groups[RTE_TEL_MAX_DICT_ENTRIES];
char group_name[RTE_TEL_MAX_STRING_LEN] = {0};
@@ -1419,7 +1422,7 @@ eth_dev_store_regs(struct rte_tel_data *d, struct rte_dev_reg_info *reg_info)
for (i = 0; i < reg_info->length; i++) {
if (i % RTE_TEL_MAX_DICT_ENTRIES != 0) {
- eth_dev_add_reg_data(group, reg_info, i);
+ eth_dev_add_reg_data(group, reg_info, i, hide_zero);
continue;
}
@@ -1431,7 +1434,7 @@ eth_dev_store_regs(struct rte_tel_data *d, struct rte_dev_reg_info *reg_info)
}
groups[grp_num++] = group;
rte_tel_data_start_dict(group);
- eth_dev_add_reg_data(group, reg_info, i);
+ eth_dev_add_reg_data(group, reg_info, i, hide_zero);
}
for (i = 0; i < grp_num; i++) {
@@ -1447,7 +1450,7 @@ eth_dev_store_regs(struct rte_tel_data *d, struct rte_dev_reg_info *reg_info)
}
static int
-eth_dev_get_port_regs(int port_id, struct rte_tel_data *d, char *filter)
+eth_dev_get_port_regs(int port_id, struct rte_tel_data *d, char *filter, bool hide_zero)
{
struct rte_dev_reg_info reg_info;
int ret;
@@ -1481,7 +1484,7 @@ eth_dev_get_port_regs(int port_id, struct rte_tel_data *d, char *filter)
goto out;
}
- ret = eth_dev_store_regs(d, ®_info);
+ ret = eth_dev_store_regs(d, ®_info, hide_zero);
out:
free(reg_info.data);
free(reg_info.names);
@@ -1494,7 +1497,11 @@ eth_dev_handle_port_regs(const char *cmd __rte_unused,
const char *params,
struct rte_tel_data *d)
{
- char *filter, *end_param;
+ const char *const valid_keys[] = { "filter", "hide_zero", NULL };
+ struct rte_kvargs *kvlist = NULL;
+ char *filter = NULL, *end_param;
+ const char *filter_val;
+ bool hide_zero = false;
uint16_t port_id;
int ret;
@@ -1502,11 +1509,24 @@ eth_dev_handle_port_regs(const char *cmd __rte_unused,
if (ret != 0)
return ret;
- filter = strtok(end_param, ",");
- if (filter != NULL && strlen(filter) == 0)
- filter = NULL;
+ if (*end_param != '\0') {
+ kvlist = rte_kvargs_parse(end_param, valid_keys);
+ filter_val = rte_kvargs_get(kvlist, "filter");
+ ret = rte_kvargs_process(kvlist, "hide_zero", eth_dev_parse_hide_zero, &hide_zero);
+ if (kvlist == NULL || (filter_val != NULL && strlen(filter_val) == 0) || ret != 0) {
+ RTE_ETHDEV_LOG_LINE(NOTICE,
+ "Unknown extra parameters passed to ethdev telemetry command, ignoring");
+ } else {
+ filter = (filter_val != NULL) ? strdup(filter_val) : NULL;
+ hide_zero = false;
+ }
+ rte_kvargs_free(kvlist);
+ }
+
+ ret = eth_dev_get_port_regs(port_id, d, filter, hide_zero);
+ free(filter);
- return eth_dev_get_port_regs(port_id, d, filter);
+ return ret;
}
static int eth_dev_telemetry_do(const char *cmd, const char *params, void *arg,
@@ -1582,5 +1602,5 @@ RTE_INIT(ethdev_init_telemetry)
eth_dev_telemetry_do, eth_dev_handle_port_tm_node_caps,
"Returns TM Node Capabilities info for a port. Parameters: int port_id, int node_id (see tm_capability for the max)");
rte_telemetry_register_cmd("/ethdev/regs", eth_dev_handle_port_regs,
- "Returns all or filtered registers info for a port. Parameters: int port_id, string module_name (Optional if show all)");
+ "Returns registers info for a port. Parameters: int port_id,filter=xxx(Optional if show all),hide_zero=true|false(Optional)");
}
--
2.17.1
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-10-25 9:43 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-25 9:42 [PATCH 0/2] enhance ethdev telemetry Chengwen Feng
2025-10-25 9:42 ` [PATCH 1/2] ethdev: support telemetry RSS algorithm Chengwen Feng
2025-10-25 9:42 ` [PATCH 2/2] ethdev: support hide zero when telemetry regs Chengwen Feng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).