From patchwork Thu May 26 01:10:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "humin (Q)" X-Patchwork-Id: 111871 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 08242A0548; Thu, 26 May 2022 03:12:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B18C640150; Thu, 26 May 2022 03:12:13 +0200 (CEST) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by mails.dpdk.org (Postfix) with ESMTP id 6A3BF40146 for ; Thu, 26 May 2022 03:12:12 +0200 (CEST) Received: from kwepemi500012.china.huawei.com (unknown [172.30.72.56]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4L7qfF2bB4zDqTD for ; Thu, 26 May 2022 09:12:05 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by kwepemi500012.china.huawei.com (7.221.188.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 26 May 2022 09:12:09 +0800 From: "Min Hu (Connor)" To: Subject: [PATCH v3] app/procinfo: add device private info dump Date: Thu, 26 May 2022 09:10:56 +0800 Message-ID: <20220526011056.8036-1-humin29@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220221022412.47258-1-humin29@huawei.com> References: <20220221022412.47258-1-humin29@huawei.com> MIME-Version: 1.0 X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To kwepemi500012.china.huawei.com (7.221.188.12) X-CFilter-Loop: Reflected X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org This patch adds support for dump the device private info from a running application. It can help developers locate the problem. Signed-off-by: Min Hu (Connor) --- v3: * fix wrong spelling. v2: * fix way of handling ports. --- app/proc-info/main.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/app/proc-info/main.c b/app/proc-info/main.c index 56070a3317..1d350291b9 100644 --- a/app/proc-info/main.c +++ b/app/proc-info/main.c @@ -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)