[dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first

De Lara Guarch, Pablo pablo.de.lara.guarch at intel.com
Thu Jun 15 14:05:13 CEST 2017


Sending to right Jingjing mail address.

> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Thursday, June 15, 2017 5:04 AM
> To: jingjing.wu at dpdk.org
> Cc: dev at dpdk.org; De Lara Guarch, Pablo
> Subject: [PATCH v3] app/testpmd: add parameter to start forwarding TX
> first
> 
> Add parameter to start forwarding sending first
> a burst of packets, which is useful when testing
> a loopback connection.
> 
> This was already implemented as an internal command,
> but adding it as a parameter is interesting, as it
> allows the user to test a loopback connection without
> entering in the internal command line.
> 
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch at intel.com>
> ---
> 
> Changes in v3:
> 
> -Added tx-first in long parameter list
> -Reworded informational message when tx-first is enabled
> 
> Changes in v2:
> 
> - Added check to prevent user from using --tx-first in interactive mode,
>   to avoid confusion
> - Added extra information in testpmd help about the new parameter
> 
>  app/test-pmd/parameters.c             | 9 +++++++++
>  app/test-pmd/testpmd.c                | 6 +++++-
>  app/test-pmd/testpmd.h                | 1 +
>  doc/guides/testpmd_app_ug/run_app.rst | 8 ++++++++
>  4 files changed, 23 insertions(+), 1 deletion(-)
> 
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index fbe6284..0a88844 100644
> --- a/app/test-pmd/parameters.c
> +++ b/app/test-pmd/parameters.c
> @@ -89,6 +89,7 @@ usage(char* progname)
>  	       "[--cmdline-file=FILENAME] "
>  #endif
>  	       "[--help|-h] | [--auto-start|-a] | ["
> +	       "--tx-first | "
>  	       "--coremask=COREMASK --portmask=PORTMASK --numa "
>  	       "--mbuf-size= | --total-num-mbufs= | "
>  	       "--nb-cores= | --nb-ports= | "
> @@ -109,6 +110,8 @@ usage(char* progname)
>  	printf("  --auto-start: start forwarding on init "
>  	       "[always when non-interactive].\n");
>  	printf("  --help: display this message and quit.\n");
> +	printf("  --tx-first: start forwarding sending a burst first "
> +	       "(only if interactive is disabled).\n");
>  	printf("  --nb-cores=N: set the number of forwarding cores "
>  	       "(1 <= N <= %d).\n", nb_lcores);
>  	printf("  --nb-ports=N: set the number of forwarding ports "
> @@ -566,6 +569,7 @@ launch_args_parse(int argc, char** argv)
>  		{ "eth-peers-configfile",	1, 0, 0 },
>  		{ "eth-peer",			1, 0, 0 },
>  #endif
> +		{ "tx-first",			0, 0, 0 },
>  		{ "ports",			1, 0, 0 },
>  		{ "nb-cores",			1, 0, 0 },
>  		{ "nb-ports",			1, 0, 0 },
> @@ -674,6 +678,11 @@ launch_args_parse(int argc, char** argv)
>  				printf("Auto-start selected\n");
>  				auto_start = 1;
>  			}
> +			if (!strcmp(lgopts[opt_idx].name, "tx-first")) {
> +				printf("Ports to start sending a burst of "
> +						"packets first\n");
> +				tx_first = 1;
> +			}
>  			if (!strcmp(lgopts[opt_idx].name,
>  				    "eth-peers-configfile")) {
>  				if (init_peer_eth_addrs(optarg) != 0)
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index d32cbb9..6001283 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -98,6 +98,7 @@ uint16_t verbose_level = 0; /**< Silent by default. */
>  /* use master core for command line ? */
>  uint8_t interactive = 0;
>  uint8_t auto_start = 0;
> +uint8_t tx_first;
>  char cmdline_filename[PATH_MAX] = {0};
> 
>  /*
> @@ -2294,6 +2295,9 @@ main(int argc, char** argv)
>  	if (argc > 1)
>  		launch_args_parse(argc, argv);
> 
> +	if (tx_first && interactive)
> +		rte_exit(EXIT_FAILURE, "--tx-first cannot be used on "
> +				"interactive mode.\n");
>  	if (!nb_rxq && !nb_txq)
>  		printf("Warning: Either rx or tx queues should be non-
> zero\n");
> 
> @@ -2353,7 +2357,7 @@ main(int argc, char** argv)
>  		int rc;
> 
>  		printf("No commandline core given, start packet
> forwarding\n");
> -		start_packet_forwarding(0);
> +		start_packet_forwarding(tx_first);
>  		printf("Press enter to exit\n");
>  		rc = read(0, &c, 1);
>  		pmd_test_exit();
> diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h
> index 364502d..5cabeef 100644
> --- a/app/test-pmd/testpmd.h
> +++ b/app/test-pmd/testpmd.h
> @@ -299,6 +299,7 @@ extern uint16_t nb_rx_queue_stats_mappings;
>  extern uint16_t verbose_level; /**< Drives messages being displayed, if
> any. */
>  extern uint8_t  interactive;
>  extern uint8_t  auto_start;
> +extern uint8_t  tx_first;
>  extern char cmdline_filename[PATH_MAX]; /**< offline commands file */
>  extern uint8_t  numa_support; /**< set by "--numa" parameter */
>  extern uint16_t port_topology; /**< set by "--port-topology" parameter */
> diff --git a/doc/guides/testpmd_app_ug/run_app.rst
> b/doc/guides/testpmd_app_ug/run_app.rst
> index 2a43214..3159398 100644
> --- a/doc/guides/testpmd_app_ug/run_app.rst
> +++ b/doc/guides/testpmd_app_ug/run_app.rst
> @@ -188,6 +188,14 @@ The commandline options are:
> 
>      Start forwarding on initialization.
> 
> +*   ``--tx-first``
> +
> +    Start forwarding, after sending a burst of packets first.
> +
> +.. Note::
> +
> +   This flag should be only used in non-interactive mode.
> +
>  *   ``--nb-cores=N``
> 
>      Set the number of forwarding cores,
> --
> 2.9.4



More information about the dev mailing list