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: step...@networkplumber.org
Cc: sta...@dpdk.org
Signed-off-by: Gregory Etelson <getel...@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,