[dpdk-dev] [PATCH v3 1/4] app/testpmd: allow detaching a port not closed

Thomas Monjalon thomas at monjalon.net
Wed Oct 17 04:06:37 CEST 2018


+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 <thomas at 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;
> 







More information about the dev mailing list