[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