]> git.droids-corp.org - dpdk.git/commitdiff
app/procinfo: dump device private info
authorMin Hu (Connor) <humin29@huawei.com>
Mon, 6 Jun 2022 14:39:32 +0000 (22:39 +0800)
committerThomas Monjalon <thomas@monjalon.net>
Sun, 26 Jun 2022 15:51:14 +0000 (17:51 +0200)
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>
app/proc-info/main.c

index e1ccdbbaa5a61097ad11f8474a6efb873a875f8d..1bfba5f60d107b2433bbd606d82560c01d0b5675 100644 (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)