app/procinfo: dump device private info

This patch adds support for dump the device private info
from a running application.
It can help developers locate a problem.

Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
Acked-by: Reshma Pattan <reshma.pattan@intel.com>
This commit is contained in:
Min Hu (Connor) 2022-06-06 22:39:32 +08:00 committed by Thomas Monjalon
parent 379e1d62f1
commit bb947a7264

View File

@ -84,6 +84,8 @@ static char bdr_str[MAX_STRING_LEN];
/**< Enable show port. */
static uint32_t enable_shw_port;
/* Enable show port private info. */
static uint32_t enable_shw_port_priv;
/**< Enable show tm. */
static uint32_t enable_shw_tm;
/**< Enable show crypto. */
@ -123,6 +125,7 @@ proc_info_usage(const char *prgname)
" --collectd-format: to print statistics to STDOUT in expected by collectd format\n"
" --host-id STRING: host id used to identify the system process is running on\n"
" --show-port: to display ports information\n"
" --show-port-private: to display ports private information\n"
" --show-tm: to display traffic manager information for ports\n"
" --show-crypto: to display crypto information\n"
" --show-ring[=name]: to display ring information\n"
@ -232,6 +235,7 @@ proc_info_parse_args(int argc, char **argv)
{"xstats-ids", 1, NULL, 1},
{"host-id", 0, NULL, 0},
{"show-port", 0, NULL, 0},
{"show-port-private", 0, NULL, 0},
{"show-tm", 0, NULL, 0},
{"show-crypto", 0, NULL, 0},
{"show-ring", optional_argument, NULL, 0},
@ -284,6 +288,9 @@ proc_info_parse_args(int argc, char **argv)
else if (!strncmp(long_option[option_index].name,
"show-port", MAX_LONG_OPT_SZ))
enable_shw_port = 1;
else if (!strncmp(long_option[option_index].name,
"show-port-private", MAX_LONG_OPT_SZ))
enable_shw_port_priv = 1;
else if (!strncmp(long_option[option_index].name,
"show-tm", MAX_LONG_OPT_SZ))
enable_shw_tm = 1;
@ -887,6 +894,25 @@ show_port(void)
}
}
static void
show_port_private_info(void)
{
int i;
snprintf(bdr_str, MAX_STRING_LEN, " Dump - Ports private information");
STATS_BDR_STR(10, bdr_str);
RTE_ETH_FOREACH_DEV(i) {
/* Skip if port is not in mask */
if ((enabled_port_mask & (1ul << i)) == 0)
continue;
snprintf(bdr_str, MAX_STRING_LEN, " Port %u ", i);
STATS_BDR_STR(5, bdr_str);
rte_eth_dev_priv_dump(i, stdout);
}
}
static void
display_nodecap_info(int is_leaf, struct rte_tm_node_capabilities *cap)
{
@ -1549,6 +1575,8 @@ main(int argc, char **argv)
/* show information for PMD */
if (enable_shw_port)
show_port();
if (enable_shw_port_priv)
show_port_private_info();
if (enable_shw_tm)
show_tm();
if (enable_shw_crypto)