[dpdk-dev] [PATCH v4 5/5] app/testpmd: enhance command to test NIC reset

Dai, Wei wei.dai at intel.com
Fri Jun 30 11:15:09 CEST 2017


Adding PCI address info here is to let user confirm mapping between PCI address and port id is kept after reset.
As this is only for test purpose,  are you OK for other part except these PCI address printf ?

> -----Original Message-----
> From: Wu, Jingjing
> Sent: Friday, June 30, 2017 5:10 PM
> To: Dai, Wei <wei.dai at intel.com>; 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>;
> Peng, Yuan <yuan.peng at intel.com>
> Cc: dev at dpdk.org
> Subject: RE: [PATCH v4 5/5] app/testpmd: enhance command to test NIC reset
> 
> 
> 
> > -----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