Hi Gaetan,

> -----Original Message-----
> From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Gaetan Rivet
> Sent: Tuesday, June 26, 2018 5:56 PM
> To: dev@dpdk.org
> Cc: Gaetan Rivet <gaetan.ri...@6wind.com>
> 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 <gaetan.ri...@6wind.com>
> ---
>  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 index
> 27e2aa8c8..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 --git
> a/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 on
> the 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.0

This patch fails to compile on the latest 18_08 master branch.

There is no update to the internal testpmd documentation about this new command.

Regards,

Bernard.

Reply via email to