[dpdk-dev] [PATCH v4 5/5] app/testpmd: enhance command to test NIC reset
Wu, Jingjing
jingjing.wu at intel.com
Fri Jun 30 11:09:48 CEST 2017
> -----Original Message-----
> From: Dai, Wei
> Sent: Thursday, June 29, 2017 10:58 PM
> To: thomas at monjalon.net; Lu, Wenzhuo <wenzhuo.lu at intel.com>; Ananyev, Konstantin
> <konstantin.ananyev at intel.com>; Zhang, Helin <helin.zhang at intel.com>; Wu, Jingjing
> <jingjing.wu at intel.com>; yuan.pntel.com
> Cc: dev at dpdk.org; Dai, Wei <wei.dai at intel.com>
> Subject: [PATCH v4 5/5] app/testpmd: enhance command to test NIC reset
>
> When PF is reset, a message will show it and all its
> VF need to be reset.
> User can run the command "port reset port_id"
> to reset the VF port and to keep same port id without
> any configuration. Then user can run "port stop port_id"
> and "port start port_id" to reconfigure its forwarding
> mode and parmaters as previous ones.
> To avoid crash, current forwarding should be stopped
> before running "port reset port_id".
>
> Signed-off-by: Wei Dai <wei.dai at intel.com>
> ---
> app/test-pmd/cmdline.c | 10 ++++++---
> app/test-pmd/testpmd.c | 61
> +++++++++++++++++++++++++++++++++++++++++++++++---
> app/test-pmd/testpmd.h | 1 +
> 3 files changed, 66 insertions(+), 6 deletions(-)
>
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
> index ff8ffd2..58ba6e4 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -950,6 +950,8 @@ static void cmd_operate_port_parsed(void *parsed_result,
> stop_port(RTE_PORT_ALL);
> else if (!strcmp(res->name, "close"))
> close_port(RTE_PORT_ALL);
> + else if (!strcmp(res->name, "reset"))
> + reset_port(RTE_PORT_ALL);
> else
> printf("Unknown parameter\n");
> }
> @@ -959,7 +961,7 @@ cmdline_parse_token_string_t cmd_operate_port_all_cmd =
> "port");
> cmdline_parse_token_string_t cmd_operate_port_all_port =
> TOKEN_STRING_INITIALIZER(struct cmd_operate_port_result, name,
> - "start#stop#close");
> + "start#stop#close#reset");
> cmdline_parse_token_string_t cmd_operate_port_all_all =
> TOKEN_STRING_INITIALIZER(struct cmd_operate_port_result, value, "all");
>
> @@ -994,6 +996,8 @@ static void cmd_operate_specific_port_parsed(void *parsed_result,
> stop_port(res->value);
> else if (!strcmp(res->name, "close"))
> close_port(res->value);
> + else if (!strcmp(res->name, "reset"))
> + reset_port(res->value);
> else
> printf("Unknown parameter\n");
> }
> @@ -1003,7 +1007,7 @@ cmdline_parse_token_string_t cmd_operate_specific_port_cmd =
> keyword, "port");
> cmdline_parse_token_string_t cmd_operate_specific_port_port =
> TOKEN_STRING_INITIALIZER(struct cmd_operate_specific_port_result,
> - name, "start#stop#close");
> + name, "start#stop#close#reset");
> cmdline_parse_token_num_t cmd_operate_specific_port_id =
> TOKEN_NUM_INITIALIZER(struct cmd_operate_specific_port_result,
> value, UINT8);
> @@ -1011,7 +1015,7 @@ cmdline_parse_token_num_t cmd_operate_specific_port_id =
> cmdline_parse_inst_t cmd_operate_specific_port = {
> .f = cmd_operate_specific_port_parsed,
> .data = NULL,
> - .help_str = "port start|stop|close <port_id>: Start/Stop/Close port_id",
> + .help_str = "port start|stop|close|reset <port_id>: Start/Stop/Close/Reset port_id",
> .tokens = {
> (void *)&cmd_operate_specific_port_cmd,
> (void *)&cmd_operate_specific_port_port,
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index b29328a..7773879 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1403,6 +1403,7 @@ start_port(portid_t pid)
> queueid_t qi;
> struct rte_port *port;
> struct ether_addr mac_addr;
> + struct rte_eth_dev_info dev_info;
> enum rte_eth_event_type event_type;
>
> if (port_id_is_invalid(pid, ENABLED_WARN))
> @@ -1424,9 +1425,14 @@ start_port(portid_t pid)
>
> if (port->need_reconfig > 0) {
> port->need_reconfig = 0;
> -
> - printf("Configuring Port %d (socket %u)\n", pi,
> - port->socket_id);
> + rte_eth_dev_info_get(pi, &dev_info);
> + printf("Configuring Port %d (socket %u) with "
> + "PCI Address: " PCI_PRI_FMT "\n",
> + pi, port->socket_id,
> + dev_info.pci_dev->addr.domain,
> + dev_info.pci_dev->addr.bus,
> + dev_info.pci_dev->addr.devid,
> + dev_info.pci_dev->addr.function);
I'm OK with the command change, but could you remove the
PCI print from here. The same reason as your patch 4/5.
Thanks
Jingjing
More information about the dev
mailing list