> -----Original Message----- > From: Dai, Wei > Sent: Thursday, June 29, 2017 10:58 PM > To: tho...@monjalon.net; Lu, Wenzhuo <wenzhuo...@intel.com>; Ananyev, > Konstantin > <konstantin.anan...@intel.com>; Zhang, Helin <helin.zh...@intel.com>; Wu, > Jingjing > <jingjing...@intel.com>; yuan.pntel.com > Cc: dev@dpdk.org; Dai, Wei <wei....@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....@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