> -----Original Message----- > From: Iremonger, Bernard > Sent: Friday, January 27, 2017 6:50 PM > To: dev@dpdk.org; Wu, Jingjing <jingjing...@intel.com> > Cc: Iremonger, Bernard <bernard.iremon...@intel.com>; sta...@dpdk.org > Subject: [PATCH v6 2/2] app/testpmd: fix port stop > > The rte_eth_dev_stop function is not called if the port_status is not > RTE_PORT_STARTED. This can happen if the rte_eth_dev_start function is > called directly, ie not through the start_port function. > > Make sure rte_eth_dev_stop is always called in stop_port function. > > Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings") > > CC: sta...@dpdk.org > Signed-off-by: Bernard Iremonger <bernard.iremon...@intel.com> > --- > app/test-pmd/testpmd.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > 3d25436..0d7a4d4 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -1490,13 +1490,13 @@ stop_port(portid_t pid) > continue; > } > > + rte_eth_dev_stop(pi); > + > port = &ports[pi]; > if (rte_atomic16_cmpset(&(port->port_status), > RTE_PORT_STARTED, > RTE_PORT_HANDLING) == 0) > continue; > > - rte_eth_dev_stop(pi); > -
I don't think this fix is correct to move rte_eth_dev_stop above. We need to make sure rte_eth_dev_start is called in start_port. For vmdq configuration, You just need to change the configuration when port is stopped.