[PATCH v2] app/testpmd: fix interactive mode with no ports

Singh, Aman Deep aman.deep.singh at intel.com
Wed Nov 16 05:23:17 CET 2022


Hi Gregory,

Thanks for the patch.

On 11/9/2022 10:39 PM, Gregory Etelson wrote:
> Testpmd terminated unconditionally if it failed to start all ports.
>
> The patch allows testpmd to get into the command line,
> if the interactive mode was requested.

I tested testpmd in interactive mode with no ports.
It did get into command line-

$./dpdk-testpmd -n 4 -c 0x1f -- -i
testpmd: No probed ethernet devices
Interactive-mode selected
testpmd: create a new mbuf pool <mb_pool_0>: n=179456, size=2176, socket=0
testpmd: preferred mempool ops selected: ring_mp_mc
Done
testpmd>

>
> Fixes: 6937d2103e22 ("app/testpmd: add option to not start device")
>
> Cc: stephen at networkplumber.org
> Cc: stable at dpdk.org
>
> Signed-off-by: Gregory Etelson <getelson at nvidia.com>
> ---
> v2: add Cc
> ---
>   app/test-pmd/testpmd.c | 8 ++++++--
>   1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 7381dfd9e5..8517f376db 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -4433,8 +4433,11 @@ main(int argc, char** argv)
>   		}
>   	}
>   
> -	if (!no_device_start && start_port(RTE_PORT_ALL) != 0)

With no ports, start_port returns 0 so it doesn't exits.

> -		rte_exit(EXIT_FAILURE, "Start ports failed\n");
> +	if (!no_device_start && start_port(RTE_PORT_ALL) != 0) {
> +		fprintf(stderr, "Start ports failed\n");
> +		if (!interactive)
> +			goto eal_out;
> +	}
>   
>   	/* set all ports to promiscuous mode by default */
>   	RTE_ETH_FOREACH_DEV(port_id) {
> @@ -4526,6 +4529,7 @@ main(int argc, char** argv)
>   			return 1;
>   	}
>   
> +eal_out:
>   	ret = rte_eal_cleanup();
>   	if (ret != 0)
>   		rte_exit(EXIT_FAILURE,



More information about the stable mailing list