All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dongdong Liu <liudongdong3@huawei.com>
To: <dev@dpdk.org>, <reshma.pattan@intel.com>, <thomas@monjalon.net>,
	<ferruh.yigit@xilinx.com>, <andrew.rybchenko@oktetlabs.ru>
Cc: Dongdong Liu <liudongdong3@huawei.com>,
	Min Hu <humin29@huawei.com>,
	Maryam Tahhan <maryam.tahhan@intel.com>
Subject: [PATCH v8 7/8] app/procinfo: support descriptor dump
Date: Sat, 8 Oct 2022 17:39:50 +0800	[thread overview]
Message-ID: <20221008093951.12946-8-liudongdong3@huawei.com> (raw)
In-Reply-To: <20221008093951.12946-1-liudongdong3@huawei.com>

This patch support Rx/Tx descriptor dump

The command is like:
dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx --
--show-rx-descriptor queue_id:offset:num

dpdk-proc-info -a xxxx:xx:xx.x --file-prefix=xxx --
--show-tx-descriptor queue_id:offset:num

queue_id: A queue identifier on this port.
offset: The offset of the descriptor starting from tail.
num: The number of the descriptors to dump.

Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
---
 app/proc-info/main.c | 81 ++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 81 insertions(+)

diff --git a/app/proc-info/main.c b/app/proc-info/main.c
index fe8285d2ce..1558f4b7d1 100644
--- a/app/proc-info/main.c
+++ b/app/proc-info/main.c
@@ -54,6 +54,9 @@
 #define STATS_BDR_STR(w, s) printf("%.*s%s%.*s\n", w, \
 	STATS_BDR_FMT, s, w, STATS_BDR_FMT)
 
+typedef int (*desc_dump_t)(uint16_t port_id, uint16_t queue_id,
+			   uint16_t offset, uint16_t num, FILE *file);
+
 /* mask of enabled ports */
 static unsigned long enabled_port_mask;
 /* Enable stats. */
@@ -117,6 +120,21 @@ static uint32_t enable_shw_rss_reta;
 /* Enable show module eeprom information. */
 static uint32_t enable_shw_module_eeprom;
 
+/* Enable dump Rx/Tx descriptor. */
+static uint32_t enable_shw_rx_desc_dump;
+static uint32_t enable_shw_tx_desc_dump;
+
+#define DESC_PARAM_NUM 3
+
+struct desc_param {
+	uint16_t queue_id; /* A queue identifier on this port. */
+	uint16_t offset;   /* The offset of the descriptor starting from tail. */
+	uint16_t num;      /* The number of the descriptors to dump. */
+};
+
+static struct desc_param rx_desc_param;
+static struct desc_param tx_desc_param;
+
 /* display usage */
 static void
 proc_info_usage(const char *prgname)
@@ -148,6 +166,14 @@ proc_info_usage(const char *prgname)
 		"  --firmware-version: to display ethdev firmware version\n"
 		"  --show-rss-reta: to display ports redirection table\n"
 		"  --show-module-eeprom: to display ports module eeprom information\n"
+		"  --show-rx-descriptor queue_id:offset:num to display ports Rx descriptor information. "
+			"queue_id: A Rx queue identifier on this port. "
+			"offset: The offset of the descriptor starting from tail. "
+			"num: The number of the descriptors to dump.\n"
+		"  --show-tx-descriptor queue_id:offset:num to display ports Tx descriptor information. "
+			"queue_id: A Tx queue identifier on this port. "
+			"offset: The offset of the descriptor starting from tail. "
+			"num: The number of the descriptors to dump.\n"
 		"  --iter-mempool=name: iterate mempool elements to display content\n"
 		"  --dump-regs=file-prefix: dump registers to file with the file-prefix\n",
 		prgname);
@@ -200,6 +226,20 @@ parse_xstats_ids(char *list, uint64_t *ids, int limit) {
 	return length;
 }
 
+static int
+parse_descriptor_param(char *list, struct desc_param *desc)
+{
+	int ret;
+
+	ret = sscanf(list, "%hu:%hu:%hu", &desc->queue_id, &desc->offset,
+		     &desc->num);
+	if (ret != DESC_PARAM_NUM) {
+		return -EINVAL;
+	}
+
+	return 0;
+}
+
 static int
 proc_info_preparse_args(int argc, char **argv)
 {
@@ -264,6 +304,8 @@ proc_info_parse_args(int argc, char **argv)
 		{"firmware-version", 0, NULL, 0},
 		{"show-rss-reta", 0, NULL, 0},
 		{"show-module-eeprom", 0, NULL, 0},
+		{"show-rx-descriptor", required_argument, NULL, 1},
+		{"show-tx-descriptor", required_argument, NULL, 1},
 		{NULL, 0, 0, 0}
 	};
 
@@ -367,6 +409,24 @@ proc_info_parse_args(int argc, char **argv)
 					return -1;
 				}
 				nb_xstats_ids = ret;
+			} else if (!strncmp(long_option[option_index].name,
+				"show-rx-descriptor", MAX_LONG_OPT_SZ)) {
+				int ret = parse_descriptor_param(optarg,
+							&rx_desc_param);
+				if (ret < 0) {
+					printf("Rx descriptor param parse error.\n");
+					return -1;
+				}
+				enable_shw_rx_desc_dump = 1;
+			} else if (!strncmp(long_option[option_index].name,
+				"show-tx-descriptor", MAX_LONG_OPT_SZ)) {
+				int ret = parse_descriptor_param(optarg,
+							&tx_desc_param);
+				if (ret < 0) {
+					printf("Tx descriptor param parse error.\n");
+					return -1;
+				}
+				enable_shw_tx_desc_dump = 1;
 			}
 			break;
 		default:
@@ -1644,6 +1704,21 @@ show_module_eeprom_info(void)
 	}
 }
 
+static void
+nic_descriptor_display(uint16_t port_id, struct desc_param *desc,
+		       desc_dump_t desc_dump)
+{
+	static const char *nic_desc_border = "###";
+	uint16_t queue_id = desc->queue_id;
+	uint16_t offset = desc->offset;
+	uint16_t num = desc->num;
+
+	printf("%s NIC descriptor for port %u %s\n",
+		   nic_desc_border, port_id, nic_desc_border);
+
+	desc_dump(port_id, queue_id, offset, num, stdout);
+}
+
 int
 main(int argc, char **argv)
 {
@@ -1732,6 +1807,12 @@ main(int argc, char **argv)
 			metrics_display(i);
 #endif
 
+		if (enable_shw_rx_desc_dump)
+			nic_descriptor_display(i, &rx_desc_param,
+					       rte_eth_rx_descriptor_dump);
+		if (enable_shw_tx_desc_dump)
+			nic_descriptor_display(i, &tx_desc_param,
+					       rte_eth_tx_descriptor_dump);
 	}
 
 #ifdef RTE_LIB_METRICS
-- 
2.22.0


  parent reply	other threads:[~2022-10-08  9:42 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-22  9:12 [PATCH 0/6] app/procinfo: add some extended features Dongdong Liu
2022-07-22  9:12 ` [PATCH 1/6] app/procinfo: add version dump Dongdong Liu
2022-09-19  9:23   ` Pattan, Reshma
2022-09-20  2:35     ` Dongdong Liu
2022-07-22  9:12 ` [PATCH 2/6] app/procinfo: add RSS RETA dump Dongdong Liu
2022-07-22  9:12 ` [PATCH 3/6] app/procinfo: add module info dump Dongdong Liu
2022-07-22  9:12 ` [PATCH 4/6] app/proc-info: add dump of Rx/Tx burst mode Dongdong Liu
2022-07-22  9:12 ` [PATCH 5/6] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-07-22  9:12 ` [PATCH 6/6] doc: add some extended features in procinfo guide Dongdong Liu
2022-07-22 10:03 ` [PATCH 0/6] app/procinfo: add some extended features David Marchand
2022-07-25 11:03   ` Dongdong Liu
2022-09-17  1:12 ` Dongdong Liu
2022-09-20 10:51 ` [PATCH v2 " Dongdong Liu
2022-09-20 10:51   ` [PATCH v2 1/6] app/procinfo: add version dump Dongdong Liu
2022-09-20 15:21     ` Stephen Hemminger
2022-09-21 11:11       ` Dongdong Liu
2022-09-20 10:51   ` [PATCH v2 2/6] app/procinfo: add RSS RETA dump Dongdong Liu
2022-09-20 15:24     ` Stephen Hemminger
2022-09-21 11:21       ` Dongdong Liu
2022-09-20 10:51   ` [PATCH v2 3/6] app/procinfo: add module info dump Dongdong Liu
2022-09-20 15:22     ` Stephen Hemminger
2022-09-21 11:22       ` Dongdong Liu
2022-09-20 10:51   ` [PATCH v2 4/6] app/proc-info: add dump of Rx/Tx burst mode Dongdong Liu
2022-09-20 10:51   ` [PATCH v2 5/6] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-09-20 10:51   ` [PATCH v2 6/6] doc: add some extended features in procinfo guide Dongdong Liu
2022-09-21 14:26 ` [PATCH v3 0/7] app/procinfo: add some extended features Dongdong Liu
2022-09-21 14:26   ` [PATCH v3 1/7] app/procinfo: add dpdk version dump Dongdong Liu
2022-09-23  9:11     ` Pattan, Reshma
2022-09-21 14:26   ` [PATCH v3 2/7] app/procinfo: add firmware " Dongdong Liu
2022-09-23  9:22     ` Pattan, Reshma
2022-09-24  8:03       ` Dongdong Liu
2022-09-21 14:26   ` [PATCH v3 3/7] app/procinfo: add RSS RETA dump Dongdong Liu
2022-09-23  9:42     ` Pattan, Reshma
2022-09-21 14:26   ` [PATCH v3 4/7] app/procinfo: add module info dump Dongdong Liu
2022-09-23  9:51     ` Pattan, Reshma
2022-09-24  8:07       ` Dongdong Liu
2022-09-21 14:26   ` [PATCH v3 5/7] app/procinfo: add dump of Rx/Tx burst mode Dongdong Liu
2022-09-23 10:02     ` Pattan, Reshma
2022-09-24  8:06       ` Dongdong Liu
2022-09-21 14:26   ` [PATCH v3 6/7] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-09-23  7:53     ` Pattan, Reshma
2022-09-24  8:12       ` Dongdong Liu
2022-09-21 14:26   ` [PATCH v3 7/7] doc: add some extended features in procinfo guide Dongdong Liu
2022-09-23  8:57     ` Pattan, Reshma
2022-09-24  8:13 ` [PATCH v7 0/7] app/procinfo: add some extended features Dongdong Liu
2022-09-24  8:13   ` [PATCH v7 1/7] app/procinfo: add dpdk version dump Dongdong Liu
2022-09-24  8:13   ` [PATCH v7 2/7] app/procinfo: add firmware " Dongdong Liu
2022-09-24  8:13   ` [PATCH v7 3/7] app/procinfo: add RSS RETA dump Dongdong Liu
2022-09-24  8:13   ` [PATCH v7 4/7] app/procinfo: add module eeprom info dump Dongdong Liu
2022-09-26 11:54     ` Pattan, Reshma
2022-09-24  8:13   ` [PATCH v7 5/7] app/procinfo: add dump of Rx/Tx burst mode Dongdong Liu
2022-09-24  8:13   ` [PATCH v7 6/7] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-09-26 12:09     ` Pattan, Reshma
2022-09-24  8:13   ` [PATCH v7 7/7] doc: add some extended features in procinfo guide Dongdong Liu
2022-09-24  8:21   ` [PATCH v7 0/7] app/procinfo: add some extended features Dongdong Liu
2022-10-08  9:39 ` [PATCH v8 0/8] " Dongdong Liu
2022-10-08  9:39   ` [PATCH v8 1/8] app/procinfo: add dpdk version dump Dongdong Liu
2022-10-08  9:39   ` [PATCH v8 2/8] app/procinfo: add firmware " Dongdong Liu
2022-10-08  9:39   ` [PATCH v8 3/8] app/procinfo: add RSS RETA dump Dongdong Liu
2022-10-08  9:39   ` [PATCH v8 4/8] app/procinfo: add module eeprom info dump Dongdong Liu
2022-10-08  9:39   ` [PATCH v8 5/8] app/procinfo: add dump of Rx/Tx burst mode Dongdong Liu
2022-10-08  9:39   ` [PATCH v8 6/8] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-10-08  9:39   ` Dongdong Liu [this message]
2022-10-08  9:39   ` [PATCH v8 8/8] doc: add some extended features in procinfo guide Dongdong Liu
2022-10-08 10:53 ` [PATCH v9 0/8] app/procinfo: add some extended features Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 1/8] app/procinfo: add dpdk version dump Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 2/8] app/procinfo: add firmware " Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 3/8] app/procinfo: add RSS RETA dump Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 4/8] app/procinfo: add module eeprom info dump Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 5/8] app/procinfo: add dump of Rx/Tx burst mode Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 6/8] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 7/8] app/procinfo: support descriptor dump Dongdong Liu
2022-10-10  9:08     ` Pattan, Reshma
2022-10-10 13:13       ` Dongdong Liu
2022-10-08 10:53   ` [PATCH v9 8/8] doc: add some extended features in procinfo guide Dongdong Liu
2022-10-11 11:18 ` [PATCH v10 0/8] app/procinfo: add some extended features Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 1/8] app/procinfo: add dpdk version dump Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 2/8] app/procinfo: add firmware " Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 3/8] app/procinfo: add RSS RETA dump Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 4/8] app/procinfo: add module eeprom info dump Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 5/8] app/procinfo: add dump of Rx/Tx burst mode Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 6/8] app/procinfo: fix some wrong doxygen syntax Dongdong Liu
2022-10-11 11:18   ` [PATCH v10 7/8] app/procinfo: support descriptor dump Dongdong Liu
2022-10-11 13:38     ` Pattan, Reshma
2022-10-11 11:18   ` [PATCH v10 8/8] doc: add some extended features in procinfo guide Dongdong Liu
2022-10-20  7:48   ` [PATCH v10 0/8] app/procinfo: add some extended features Dongdong Liu
2022-11-04  9:16   ` Dongdong Liu
2022-11-15  9:52   ` David Marchand
2022-11-15 11:00     ` Dongdong Liu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221008093951.12946-8-liudongdong3@huawei.com \
    --to=liudongdong3@huawei.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@xilinx.com \
    --cc=humin29@huawei.com \
    --cc=maryam.tahhan@intel.com \
    --cc=reshma.pattan@intel.com \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.