Re: [PATCH v8 21/21] app/testpmd: add show device command
From: Gaëtan Rivet <hidden>
Date: 2018-06-28 10:10:07
Hi Bernard, On Thu, Jun 28, 2018 at 10:03:30AM +0000, Iremonger, Bernard wrote:
Hi Gaetan,quoted
-----Original Message----- From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Gaetan Rivet Sent: Tuesday, June 26, 2018 5:56 PM To: dev@dpdk.org Cc: Gaetan Rivet <redacted> Subject: [dpdk-dev] [PATCH v8 21/21] app/testpmd: add show device command A new interactive command is offered: show device <device description> This commands lists all rte_device element matching the device description. e.g.: show device bus=pci show device bus=vdev show device bus=vdev/class=eth show device bus=vdev,driver=net_ring/class=eth show device bus=vdev/class=eth,name=net_ring0 These devices may not be otherwise useful, some buses will spawn devices to keep track of their assets without having a driver to use them. Signed-off-by: Gaetan Rivet <redacted> --- app/test-pmd/cmdline.c | 51 +++++++++++++++++++++++++++++ doc/guides/testpmd_app_ug/testpmd_funcs.rst | 24 ++++++++++++++ 2 files changed, 75 insertions(+)diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index27e2aa8c8..872492b88 100644--- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c@@ -7083,6 +7083,56 @@ cmdline_parse_inst_t cmd_showportall = { }, }; +/* *** SHOW DEVICE INFO *** */ +struct cmd_showdevice_result { + cmdline_fixed_string_t show; + cmdline_fixed_string_t device; + cmdline_fixed_string_t filter; +}; + +static void +cmd_showdevice_dump_device(const struct rte_device *dev) { + const struct rte_driver *drv = dev->driver; + + printf("0x%p: %s:%s\n", (const void *)dev, dev->name, + drv ? drv->name : "<nil>"); +} + +static void cmd_showdevice_parsed(void *parsed_result, + __attribute__((unused)) struct cmdline *cl, + __attribute__((unused)) void *data) { + struct cmd_showdevice_result *res = parsed_result; + struct rte_dev_iterator it; + const struct rte_device *dev; + + RTE_DEV_FOREACH(dev, res->filter, &it) + cmd_showdevice_dump_device(dev); +} + +cmdline_parse_token_string_t cmd_showdevice_show = + TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result, + show, "show"); +cmdline_parse_token_string_t cmd_showdevice_device = + TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result, + device, "device"); +cmdline_parse_token_string_t cmd_showdevice_filter = + TOKEN_STRING_INITIALIZER(struct cmd_showdevice_result, + filter, NULL); + +cmdline_parse_inst_t cmd_showdevice = { + .f = cmd_showdevice_parsed, + .data = NULL, + .help_str = "show device <device string>", + .tokens = { + (void *)&cmd_showdevice_show, + (void *)&cmd_showdevice_device, + (void *)&cmd_showdevice_filter, + NULL, + }, +}; + /* *** SHOW PORT INFO *** */ struct cmd_showport_result { cmdline_fixed_string_t show;@@ -17262,6 +17312,7 @@ cmdline_parse_ctx_t main_ctx[] = { (cmdline_parse_inst_t *)&cmd_help_long, (cmdline_parse_inst_t *)&cmd_quit, (cmdline_parse_inst_t *)&cmd_load_from_file, + (cmdline_parse_inst_t *)&cmd_showdevice, (cmdline_parse_inst_t *)&cmd_showport, (cmdline_parse_inst_t *)&cmd_showqueue, (cmdline_parse_inst_t *)&cmd_showportall, diff --gita/doc/guides/testpmd_app_ug/testpmd_funcs.rst b/doc/guides/testpmd_app_ug/testpmd_funcs.rst index 0d6fd50ca..4f1009a3a 100644--- a/doc/guides/testpmd_app_ug/testpmd_funcs.rst +++ b/doc/guides/testpmd_app_ug/testpmd_funcs.rst@@ -2628,6 +2628,30 @@ set the traffic management default hierarchy onthe port:: testpmd> set port tm hierarchy default (port_id) +Device functions +---------------- + +Show devices +~~~~~~~~~~~~ + +Display any registered devices:: + + testpmd> show device <device_string> + +where: + +* ``device_string``: Device description string, of the format + + layer[/layer[/layer]] + + where one layer is in the form + + layer_key=layer_name[,key1=value1[,...]] + + Valid layer keys are ``bus`` and ``class``. + Their respective values is defined by registered ``bus`` and + ``class`` drivers. + Filter Functions ---------------- -- 2.11.0This patch fails to compile on the latest 18_08 master branch.
I had it rebased a few days ago, it was fine. It seems there has been some movement lately, will rebase again.
There is no update to the internal testpmd documentation about this new command.
There is some documentation added to doc/guides/testpmd_app_ug/testpmd_funcs.rst Are you referring to some other kind of documentation? -- Gaëtan Rivet 6WIND