app/testpmd: add option to not start device

Some configuration options can not be tested properly with testpmd
because it automatically starts all ports. This makes it harder
to test driver handling of configuration options:
(for example rx_deferred_start).

Add new command line flag --disable-device-start which skips
the device start. The port can then be started manually later.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
Stephen Hemminger 2019-07-16 11:42:34 -07:00 committed by Ferruh Yigit
parent e1e5e812f1
commit 6937d2103e
4 changed files with 17 additions and 1 deletions

View File

@ -174,6 +174,7 @@ usage(char* progname)
printf(" --txonly-multi-flow: generate multiple flows in txonly mode\n");
printf(" --disable-link-check: disable check on link status when "
"starting/stopping ports.\n");
printf(" --disable-device-start: do not automatically start port\n");
printf(" --no-lsc-interrupt: disable link status change interrupt.\n");
printf(" --no-rmv-interrupt: disable device removal interrupt.\n");
printf(" --bitrate-stats=N: set the logical core N to perform "
@ -634,6 +635,7 @@ launch_args_parse(int argc, char** argv)
{ "txpkts", 1, 0, 0 },
{ "txonly-multi-flow", 0, 0, 0 },
{ "disable-link-check", 0, 0, 0 },
{ "disable-device-start", 0, 0, 0 },
{ "no-lsc-interrupt", 0, 0, 0 },
{ "no-rmv-interrupt", 0, 0, 0 },
{ "print-event", 1, 0, 0 },
@ -1196,6 +1198,8 @@ launch_args_parse(int argc, char** argv)
no_flush_rx = 1;
if (!strcmp(lgopts[opt_idx].name, "disable-link-check"))
no_link_check = 1;
if (!strcmp(lgopts[opt_idx].name, "disable-device-start"))
no_device_start = 1;
if (!strcmp(lgopts[opt_idx].name, "no-lsc-interrupt"))
lsc_interrupt = 0;
if (!strcmp(lgopts[opt_idx].name, "no-rmv-interrupt"))

View File

@ -339,6 +339,11 @@ uint8_t flow_isolate_all;
*/
uint8_t no_link_check = 0; /* check by default */
/*
* Don't automatically start all ports in interactive mode.
*/
uint8_t no_device_start = 0;
/*
* Enable link status change notification
*/
@ -3333,7 +3338,7 @@ main(int argc, char** argv)
}
}
if (start_port(RTE_PORT_ALL) != 0)
if (!no_device_start && start_port(RTE_PORT_ALL) != 0)
rte_exit(EXIT_FAILURE, "Start ports failed\n");
/* set all ports to promiscuous mode by default */

View File

@ -323,6 +323,7 @@ extern uint8_t flow_isolate_all; /**< set by "--flow-isolate-all */
extern uint8_t mp_alloc_type;
/**< set by "--mp-anon" or "--mp-alloc" parameter */
extern uint8_t no_link_check; /**<set by "--disable-link-check" parameter */
extern uint8_t no_device_start; /**<set by "--disable-device-start" parameter */
extern volatile int test_done; /* stop packet forwarding when set to 1. */
extern uint8_t lsc_interrupt; /**< disabled by "--no-lsc-interrupt" parameter */
extern uint8_t rmv_interrupt; /**< disabled by "--no-rmv-interrupt" parameter */

View File

@ -344,6 +344,12 @@ The command line options are:
Disable check on link status when starting/stopping ports.
* ``--disable-device-start``
Do not automatically start all ports. This allows testing
configuration of rx and tx queues before device is started
for the first time.
* ``--no-lsc-interrupt``
Disable LSC interrupts for all ports, even those supporting it.