+Cc Bernard Note that the function port_is_closed is replaced because a closed port is always seen as invalid after this series: the state is set to RTE_ETH_DEV_UNUSED by rte_eth_dev_release_port(). I may split this patch and add a release note to make it clear.
17/10/2018 03:54, Thomas Monjalon: > The testpmd application aim is for testing; > so order of operations should not be enforced. > > There was a test to forbid detaching before closing a port. > However, it may interesting to test what happens in such case. > It is possible for a PMD to automatically close the port when detaching. > > Signed-off-by: Thomas Monjalon <tho...@monjalon.net> > --- > app/test-pmd/testpmd.c | 22 ++++------------------ > 1 file changed, 4 insertions(+), 18 deletions(-) > > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c > index 5dbbf783f..f5dee1d71 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -1938,18 +1938,6 @@ port_is_started(portid_t port_id) > return 1; > } > > -static int > -port_is_closed(portid_t port_id) > -{ > - if (port_id_is_invalid(port_id, ENABLED_WARN)) > - return 0; > - > - if (ports[port_id].port_status != RTE_PORT_CLOSED) > - return 0; > - > - return 1; > -} > - > int > start_port(portid_t pid) > { > @@ -2319,14 +2307,12 @@ detach_port(portid_t port_id) > > printf("Detaching a port...\n"); > > - if (!port_is_closed(port_id)) { > - printf("Please close port first\n"); > - return; > + if (ports[port_id].port_status != RTE_PORT_CLOSED) { > + printf("Port not closed\n"); > + if (ports[port_id].flow_list) > + port_flow_flush(port_id); > } > > - if (ports[port_id].flow_list) > - port_flow_flush(port_id); > - > if (rte_eth_dev_detach(port_id, name)) { > TESTPMD_LOG(ERR, "Failed to detach port %u\n", port_id); > return; >