DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending
@ 2017-05-28 21:36 Pablo de Lara
  2017-06-07  9:17 ` Wu, Jingjing
  2017-06-09  2:30 ` [dpdk-dev] [PATCH v2] " Pablo de Lara
  0 siblings, 2 replies; 18+ messages in thread
From: Pablo de Lara @ 2017-05-28 21:36 UTC (permalink / raw)
  To: jingjing.wu; +Cc: dev, Pablo de Lara

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@intel.com>
---
 app/test-pmd/parameters.c             | 5 +++++
 app/test-pmd/testpmd.c                | 5 +++--
 app/test-pmd/testpmd.h                | 1 +
 doc/guides/testpmd_app_ug/run_app.rst | 4 ++++
 4 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index fbe6284..0da4172 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= | "
@@ -674,6 +675,10 @@ launch_args_parse(int argc, char** argv)
 				printf("Auto-start selected\n");
 				auto_start = 1;
 			}
+			if (!strcmp(lgopts[opt_idx].name, "tx-first")) {
+				printf("Start TX 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 d1041af..39a1225 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -95,6 +95,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};
 
 /*
@@ -2339,7 +2340,7 @@ main(int argc, char** argv)
 	if (interactive == 1) {
 		if (auto_start) {
 			printf("Start automatic packet forwarding\n");
-			start_packet_forwarding(0);
+			start_packet_forwarding(tx_first);
 		}
 		prompt();
 		pmd_test_exit();
@@ -2350,7 +2351,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 e6c43ba..348aa66 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..4171fcb 100644
--- a/doc/guides/testpmd_app_ug/run_app.rst
+++ b/doc/guides/testpmd_app_ug/run_app.rst
@@ -188,6 +188,10 @@ The commandline options are:
 
     Start forwarding on initialization.
 
+*   ``--tx-first``
+
+    Start forwarding, after sending a burst of packets first.
+
 *   ``--nb-cores=N``
 
     Set the number of forwarding cores,
-- 
2.7.4

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending
  2017-05-28 21:36 [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending Pablo de Lara
@ 2017-06-07  9:17 ` Wu, Jingjing
  2017-06-07 13:20   ` De Lara Guarch, Pablo
  2017-06-09  2:30 ` [dpdk-dev] [PATCH v2] " Pablo de Lara
  1 sibling, 1 reply; 18+ messages in thread
From: Wu, Jingjing @ 2017-06-07  9:17 UTC (permalink / raw)
  To: De Lara Guarch, Pablo; +Cc: dev



> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Monday, May 29, 2017 5:37 AM
> To: Wu, Jingjing <jingjing.wu@intel.com>
> Cc: dev@dpdk.org; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>
> Subject: [PATCH] app/testpmd: add parameter to start forwarding sending
> 
> 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@intel.com>
> ---
>  app/test-pmd/parameters.c             | 5 +++++
>  app/test-pmd/testpmd.c                | 5 +++--
>  app/test-pmd/testpmd.h                | 1 +
>  doc/guides/testpmd_app_ug/run_app.rst | 4 ++++
>  4 files changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> index fbe6284..0da4172 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"

Just consider about the interactive mode.
If using command start, will it still call start_packet_forwarding(0)?
And if start tx_first, still call start_packet_forwarding(1)?

It may cause confused whether this argu "--tx-first" works.
If it only works for non-interactive, you'd better to comment it.


Thanks
Jingjing

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending
  2017-06-07  9:17 ` Wu, Jingjing
@ 2017-06-07 13:20   ` De Lara Guarch, Pablo
  2017-06-07 13:23     ` Bruce Richardson
  0 siblings, 1 reply; 18+ messages in thread
From: De Lara Guarch, Pablo @ 2017-06-07 13:20 UTC (permalink / raw)
  To: Wu, Jingjing; +Cc: dev

Hi Jingjing,

> -----Original Message-----
> From: Wu, Jingjing
> Sent: Wednesday, June 07, 2017 10:18 AM
> To: De Lara Guarch, Pablo
> Cc: dev@dpdk.org
> Subject: RE: [PATCH] app/testpmd: add parameter to start forwarding
> sending
> 
> 
> 
> > -----Original Message-----
> > From: De Lara Guarch, Pablo
> > Sent: Monday, May 29, 2017 5:37 AM
> > To: Wu, Jingjing <jingjing.wu@intel.com>
> > Cc: dev@dpdk.org; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>
> > Subject: [PATCH] app/testpmd: add parameter to start forwarding
> sending
> >
> > 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@intel.com>
> > ---
> >  app/test-pmd/parameters.c             | 5 +++++
> >  app/test-pmd/testpmd.c                | 5 +++--
> >  app/test-pmd/testpmd.h                | 1 +
> >  doc/guides/testpmd_app_ug/run_app.rst | 4 ++++
> >  4 files changed, 13 insertions(+), 2 deletions(-)
> >
> > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> > index fbe6284..0da4172 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"
> 
> Just consider about the interactive mode.
> If using command start, will it still call start_packet_forwarding(0)?
> And if start tx_first, still call start_packet_forwarding(1)?
> 

If using the commands "start" and "start tx_first", the behaviour will remain the same.
The only behaviour that will change is the non-interactive forwarding mode,
and when using auto-start in interactive mode.

Do you think it should modify the behaviour of "start", in the command line,
so if "--tx-first" is passed, then it sends a burst regardless using "start" or "start tx_first"?

Thanks for the review!
Pablo

> It may cause confused whether this argu "--tx-first" works.
> If it only works for non-interactive, you'd better to comment it.
> 
> 
> Thanks
> Jingjing

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending
  2017-06-07 13:20   ` De Lara Guarch, Pablo
@ 2017-06-07 13:23     ` Bruce Richardson
  0 siblings, 0 replies; 18+ messages in thread
From: Bruce Richardson @ 2017-06-07 13:23 UTC (permalink / raw)
  To: De Lara Guarch, Pablo; +Cc: Wu, Jingjing, dev

On Wed, Jun 07, 2017 at 01:20:45PM +0000, De Lara Guarch, Pablo wrote:
> Hi Jingjing,
> 
> > -----Original Message-----
> > From: Wu, Jingjing
> > Sent: Wednesday, June 07, 2017 10:18 AM
> > To: De Lara Guarch, Pablo
> > Cc: dev@dpdk.org
> > Subject: RE: [PATCH] app/testpmd: add parameter to start forwarding
> > sending
> > 
> > 
> > 
> > > -----Original Message-----
> > > From: De Lara Guarch, Pablo
> > > Sent: Monday, May 29, 2017 5:37 AM
> > > To: Wu, Jingjing <jingjing.wu@intel.com>
> > > Cc: dev@dpdk.org; De Lara Guarch, Pablo
> > <pablo.de.lara.guarch@intel.com>
> > > Subject: [PATCH] app/testpmd: add parameter to start forwarding
> > sending
> > >
> > > 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@intel.com>
> > > ---
> > >  app/test-pmd/parameters.c             | 5 +++++
> > >  app/test-pmd/testpmd.c                | 5 +++--
> > >  app/test-pmd/testpmd.h                | 1 +
> > >  doc/guides/testpmd_app_ug/run_app.rst | 4 ++++
> > >  4 files changed, 13 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
> > > index fbe6284..0da4172 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"
> > 
> > Just consider about the interactive mode.
> > If using command start, will it still call start_packet_forwarding(0)?
> > And if start tx_first, still call start_packet_forwarding(1)?
> > 
> 
> If using the commands "start" and "start tx_first", the behaviour will remain the same.
> The only behaviour that will change is the non-interactive forwarding mode,
> and when using auto-start in interactive mode.
> 
> Do you think it should modify the behaviour of "start", in the command line,
> so if "--tx-first" is passed, then it sends a burst regardless using "start" or "start tx_first"?
> 
> Thanks for the review!
> Pablo
> 
> > It may cause confused whether this argu "--tx-first" works.
> > If it only works for non-interactive, you'd better to comment it.
> > 
> > 
My 2c is that this flag should be only used for non-interactive mode,
and you get an error if it is used with -i flag. That should minimize any
confusion.

/Bruce

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v2] app/testpmd: add parameter to start forwarding sending
  2017-05-28 21:36 [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending Pablo de Lara
  2017-06-07  9:17 ` Wu, Jingjing
@ 2017-06-09  2:30 ` Pablo de Lara
  2017-06-15  4:04   ` [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first Pablo de Lara
  2017-06-19  0:53   ` [dpdk-dev] [PATCH v2] app/testpmd: add parameter to start forwarding sending Wu, Jingjing
  1 sibling, 2 replies; 18+ messages in thread
From: Pablo de Lara @ 2017-06-09  2:30 UTC (permalink / raw)
  To: jingjing.wu; +Cc: dev, Pablo de Lara

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@intel.com>
---

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             | 7 +++++++
 app/test-pmd/testpmd.c                | 6 +++++-
 app/test-pmd/testpmd.h                | 1 +
 doc/guides/testpmd_app_ug/run_app.rst | 8 ++++++++
 4 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c
index fbe6284..163fd01 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 "
@@ -674,6 +677,10 @@ launch_args_parse(int argc, char** argv)
 				printf("Auto-start selected\n");
 				auto_start = 1;
 			}
+			if (!strcmp(lgopts[opt_idx].name, "tx-first")) {
+				printf("Start TX 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 d1041af..af32397 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -95,6 +95,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};
 
 /*
@@ -2291,6 +2292,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");
 	if (!nb_rxq && !nb_txq)
 		printf("Warning: Either rx or tx queues should be non-zero\n");
 
@@ -2350,7 +2354,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 e6c43ba..348aa66 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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-09  2:30 ` [dpdk-dev] [PATCH v2] " Pablo de Lara
@ 2017-06-15  4:04   ` Pablo de Lara
  2017-06-15 12:05     ` De Lara Guarch, Pablo
  2017-06-19  0:53   ` [dpdk-dev] [PATCH v2] app/testpmd: add parameter to start forwarding sending Wu, Jingjing
  1 sibling, 1 reply; 18+ messages in thread
From: Pablo de Lara @ 2017-06-15  4:04 UTC (permalink / raw)
  To: jingjing.wu; +Cc: dev, Pablo de Lara

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@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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-15  4:04   ` [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first Pablo de Lara
@ 2017-06-15 12:05     ` De Lara Guarch, Pablo
  2017-06-19  1:05       ` Wu, Jingjing
  2017-06-19 21:12       ` Thomas Monjalon
  0 siblings, 2 replies; 18+ messages in thread
From: De Lara Guarch, Pablo @ 2017-06-15 12:05 UTC (permalink / raw)
  To: Wu, Jingjing; +Cc: dev

Sending to right Jingjing mail address.

> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Thursday, June 15, 2017 5:04 AM
> To: jingjing.wu@dpdk.org
> Cc: dev@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@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

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v2] app/testpmd: add parameter to start forwarding sending
  2017-06-09  2:30 ` [dpdk-dev] [PATCH v2] " Pablo de Lara
  2017-06-15  4:04   ` [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first Pablo de Lara
@ 2017-06-19  0:53   ` Wu, Jingjing
  1 sibling, 0 replies; 18+ messages in thread
From: Wu, Jingjing @ 2017-06-19  0:53 UTC (permalink / raw)
  To: De Lara Guarch, Pablo; +Cc: dev



> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Friday, June 9, 2017 10:31 AM
> To: Wu, Jingjing <jingjing.wu@intel.com>
> Cc: dev@dpdk.org; De Lara Guarch, Pablo <pablo.de.lara.guarch@intel.com>
> Subject: [PATCH v2] app/testpmd: add parameter to start forwarding sending
> 
> 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@intel.com>
Acked-by: Jingjing Wu <jingjing.wu@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-15 12:05     ` De Lara Guarch, Pablo
@ 2017-06-19  1:05       ` Wu, Jingjing
  2017-07-05 23:48         ` Thomas Monjalon
  2017-06-19 21:12       ` Thomas Monjalon
  1 sibling, 1 reply; 18+ messages in thread
From: Wu, Jingjing @ 2017-06-19  1:05 UTC (permalink / raw)
  To: De Lara Guarch, Pablo; +Cc: dev



> -----Original Message-----
> From: De Lara Guarch, Pablo
> Sent: Thursday, June 15, 2017 8:05 PM
> To: Wu, Jingjing <jingjing.wu@intel.com>
> Cc: dev@dpdk.org
> Subject: RE: [PATCH v3] app/testpmd: add parameter to start forwarding TX
> first
> 
> Sending to right Jingjing mail address.
> 
> > -----Original Message-----
> > From: De Lara Guarch, Pablo
> > Sent: Thursday, June 15, 2017 5:04 AM
> > To: jingjing.wu@dpdk.org
> > Cc: dev@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@intel.com>
> > ---
> >
> > Changes in v3:
> >
> > -Added tx-first in long parameter list -Reworded informational message
> > when tx-first is enabled

Acked-by: Jingjing Wu <jingjing.wu@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-15 12:05     ` De Lara Guarch, Pablo
  2017-06-19  1:05       ` Wu, Jingjing
@ 2017-06-19 21:12       ` Thomas Monjalon
  2017-06-20  8:03         ` De Lara Guarch, Pablo
  2017-06-20  9:22         ` Bruce Richardson
  1 sibling, 2 replies; 18+ messages in thread
From: Thomas Monjalon @ 2017-06-19 21:12 UTC (permalink / raw)
  To: De Lara Guarch, Pablo; +Cc: dev, Wu, Jingjing

15/06/2017 14:05, De Lara Guarch, Pablo:
> > 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@intel.com>
> > ---
> > --- 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.

I don't really understand the benefit of this option.
Why is it better than
	echo start tx_first | testpmd -i
?

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-19 21:12       ` Thomas Monjalon
@ 2017-06-20  8:03         ` De Lara Guarch, Pablo
  2017-06-20  9:22         ` Bruce Richardson
  1 sibling, 0 replies; 18+ messages in thread
From: De Lara Guarch, Pablo @ 2017-06-20  8:03 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Wu, Jingjing



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Monday, June 19, 2017 10:13 PM
> To: De Lara Guarch, Pablo
> Cc: dev@dpdk.org; Wu, Jingjing
> Subject: Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start
> forwarding TX first
> 
> 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > 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@intel.com>
> > > ---
> > > --- 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.
> 
> I don't really understand the benefit of this option.
> Why is it better than
> 	echo start tx_first | testpmd -i
> ?

This is a good way to test a loopback connection without having to get into interactive mode.
With the other patch that I sent, to show port statistics periodically
(http://dpdk.org/dev/patchwork/patch/25344/), the app can show how traffic is forwarded
having a simple loopback connection, without anything else required by the user.

Thanks,
Pablo

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-19 21:12       ` Thomas Monjalon
  2017-06-20  8:03         ` De Lara Guarch, Pablo
@ 2017-06-20  9:22         ` Bruce Richardson
  2017-06-20  9:58           ` Thomas Monjalon
  1 sibling, 1 reply; 18+ messages in thread
From: Bruce Richardson @ 2017-06-20  9:22 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: De Lara Guarch, Pablo, dev, Wu, Jingjing

On Mon, Jun 19, 2017 at 11:12:53PM +0200, Thomas Monjalon wrote:
> 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > 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@intel.com>
> > > ---
> > > --- 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.
> 
> I don't really understand the benefit of this option.
> Why is it better than
> 	echo start tx_first | testpmd -i
> ?

The one big difference I see is normal vs abnormal termination. With the
echo command you suggest, the only way to terminate testpmd is to kill
it via signal. With the extra cmdline option, it will cleanly exit via
enter as with non-interactive mode right now. Not a huge difference, but
I think having the extra argument to enable tx-first is useful.

/Bruce

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-20  9:22         ` Bruce Richardson
@ 2017-06-20  9:58           ` Thomas Monjalon
  2017-06-20 10:19             ` Gaëtan Rivet
  0 siblings, 1 reply; 18+ messages in thread
From: Thomas Monjalon @ 2017-06-20  9:58 UTC (permalink / raw)
  To: Bruce Richardson, De Lara Guarch, Pablo; +Cc: dev, Wu, Jingjing

20/06/2017 11:22, Bruce Richardson:
> On Mon, Jun 19, 2017 at 11:12:53PM +0200, Thomas Monjalon wrote:
> > 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > > 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@intel.com>
> > > > ---
> > > > --- 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.
> > 
> > I don't really understand the benefit of this option.
> > Why is it better than
> > 	echo start tx_first | testpmd -i
> > ?
> 
> The one big difference I see is normal vs abnormal termination. With the
> echo command you suggest, the only way to terminate testpmd is to kill
> it via signal. With the extra cmdline option, it will cleanly exit via
> enter as with non-interactive mode right now. Not a huge difference, but
> I think having the extra argument to enable tx-first is useful.

I do not see a big difference between "enter" and "ctrl+c".

I think it is more flexible to pipe commands instead of options.
We could combine the proposed options --tx-first and -T into this command:
( echo 'start tx_first' ; while true ; do echo 'show port stats all' ; sleep 1 ; done ) | testpmd -i 

It is even possible to add more actions in the loop, so it is less
limited than the -T options.

It is a matter of deciding whether we prefer to implement more restricted
options or leverage the shell to freely program non-interactive testpmd.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-20  9:58           ` Thomas Monjalon
@ 2017-06-20 10:19             ` Gaëtan Rivet
  2017-06-20 10:27               ` Van Haaren, Harry
  2017-06-20 11:20               ` Bruce Richardson
  0 siblings, 2 replies; 18+ messages in thread
From: Gaëtan Rivet @ 2017-06-20 10:19 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Bruce Richardson, De Lara Guarch, Pablo, dev, Wu, Jingjing

On Tue, Jun 20, 2017 at 11:58:54AM +0200, Thomas Monjalon wrote:
> 20/06/2017 11:22, Bruce Richardson:
> > On Mon, Jun 19, 2017 at 11:12:53PM +0200, Thomas Monjalon wrote:
> > > 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > > > 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@intel.com>
> > > > > ---
> > > > > --- 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.
> > > 
> > > I don't really understand the benefit of this option.
> > > Why is it better than
> > > 	echo start tx_first | testpmd -i
> > > ?
> > 
> > The one big difference I see is normal vs abnormal termination. With the
> > echo command you suggest, the only way to terminate testpmd is to kill
> > it via signal. With the extra cmdline option, it will cleanly exit via
> > enter as with non-interactive mode right now. Not a huge difference, but
> > I think having the extra argument to enable tx-first is useful.

Side note, one can:

(trap 'echo quit' SIGUSR1; echo 'start'; while true; do sleep 1; done) |testpmd -i &

and issue a SIGUSR1 to the subshell to cleanly quit testpmd.
Or:

(trap 'echo show port stats all' SIGUSR1; \
 trap 'echo quit' SIGUSR2; \
 echo 'start'; \
 while true; do :; done) |\
testpmd -i &

It's a little contrived, but it does the job and is easy enough to put
in scripts.

For automated testing, what I did was open a pipe to testpmd to issue
commands from wherever, allowing to keep testpmd running in the
background and dispatch commands when needed from other terminals. No
need to issue signals at all then.

> 
> I do not see a big difference between "enter" and "ctrl+c".
> 
> I think it is more flexible to pipe commands instead of options.
> We could combine the proposed options --tx-first and -T into this command:
> ( echo 'start tx_first' ; while true ; do echo 'show port stats all' ; sleep 1 ; done ) | testpmd -i 
> 
> It is even possible to add more actions in the loop, so it is less
> limited than the -T options.
> 
> It is a matter of deciding whether we prefer to implement more restricted
> options or leverage the shell to freely program non-interactive testpmd.

-- 
Gaëtan Rivet
6WIND

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-20 10:19             ` Gaëtan Rivet
@ 2017-06-20 10:27               ` Van Haaren, Harry
  2017-06-20 11:20               ` Bruce Richardson
  1 sibling, 0 replies; 18+ messages in thread
From: Van Haaren, Harry @ 2017-06-20 10:27 UTC (permalink / raw)
  To: Gaëtan Rivet, Thomas Monjalon
  Cc: Richardson, Bruce, De Lara Guarch, Pablo, dev, Wu, Jingjing

> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Gaëtan Rivet
> Sent: Tuesday, June 20, 2017 11:19 AM
> To: Thomas Monjalon <thomas@monjalon.net>
> Cc: Richardson, Bruce <bruce.richardson@intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch@intel.com>; dev@dpdk.org; Wu, Jingjing <jingjing.wu@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
> 
> On Tue, Jun 20, 2017 at 11:58:54AM +0200, Thomas Monjalon wrote:
> > 20/06/2017 11:22, Bruce Richardson:
> > > On Mon, Jun 19, 2017 at 11:12:53PM +0200, Thomas Monjalon wrote:
> > > > 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > > > > 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@intel.com>
> > > > > > ---
> > > > > > --- 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.
> > > >
> > > > I don't really understand the benefit of this option.
> > > > Why is it better than
> > > > 	echo start tx_first | testpmd -i
> > > > ?
> > >
> > > The one big difference I see is normal vs abnormal termination. With the
> > > echo command you suggest, the only way to terminate testpmd is to kill
> > > it via signal. With the extra cmdline option, it will cleanly exit via
> > > enter as with non-interactive mode right now. Not a huge difference, but
> > > I think having the extra argument to enable tx-first is useful.
> 
> Side note, one can:
> 
> (trap 'echo quit' SIGUSR1; echo 'start'; while true; do sleep 1; done) |testpmd -i &
> 
> and issue a SIGUSR1 to the subshell to cleanly quit testpmd.
> Or:
> 
> (trap 'echo show port stats all' SIGUSR1; \
>  trap 'echo quit' SIGUSR2; \
>  echo 'start'; \
>  while true; do :; done) |\
> testpmd -i &
> 
> It's a little contrived, but it does the job and is easy enough to put
> in scripts.
> 
> For automated testing, what I did was open a pipe to testpmd to issue
> commands from wherever, allowing to keep testpmd running in the
> background and dispatch commands when needed from other terminals. No
> need to issue signals at all then.

In an expert-user automated testing environment this is a solution yes..


> > I do not see a big difference between "enter" and "ctrl+c".
> >
> > I think it is more flexible to pipe commands instead of options.
> > We could combine the proposed options --tx-first and -T into this command:
> > ( echo 'start tx_first' ; while true ; do echo 'show port stats all' ; sleep 1 ; done ) |
> testpmd -i
> >
> > It is even possible to add more actions in the loop, so it is less
> > limited than the -T options.
> >
> > It is a matter of deciding whether we prefer to implement more restricted
> > options or leverage the shell to freely program non-interactive testpmd.


Lets keep in mind the beginner users, who probably don't have a traffic generator machine, perhaps just 2 ports and a loopback cable. IMO running   ./testpmd -- --tx-first   is the easiest way to learn to run traffic using testpmd, instead of various shell tricks to work-around a missing CLI flag?

A +1 from me to add   --tx-first  to the CLI, -Harry

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-20 10:19             ` Gaëtan Rivet
  2017-06-20 10:27               ` Van Haaren, Harry
@ 2017-06-20 11:20               ` Bruce Richardson
  2017-06-20 12:30                 ` Gaëtan Rivet
  1 sibling, 1 reply; 18+ messages in thread
From: Bruce Richardson @ 2017-06-20 11:20 UTC (permalink / raw)
  To: Gaëtan Rivet
  Cc: Thomas Monjalon, De Lara Guarch, Pablo, dev, Wu, Jingjing

On Tue, Jun 20, 2017 at 12:19:01PM +0200, Gaëtan Rivet wrote:
> On Tue, Jun 20, 2017 at 11:58:54AM +0200, Thomas Monjalon wrote:
> > 20/06/2017 11:22, Bruce Richardson:
> > > On Mon, Jun 19, 2017 at 11:12:53PM +0200, Thomas Monjalon wrote:
> > > > 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > > > > 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@intel.com>
> > > > > > ---
> > > > > > --- 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.
> > > > 
> > > > I don't really understand the benefit of this option.
> > > > Why is it better than
> > > > 	echo start tx_first | testpmd -i
> > > > ?
> > > 
> > > The one big difference I see is normal vs abnormal termination. With the
> > > echo command you suggest, the only way to terminate testpmd is to kill
> > > it via signal. With the extra cmdline option, it will cleanly exit via
> > > enter as with non-interactive mode right now. Not a huge difference, but
> > > I think having the extra argument to enable tx-first is useful.
> 
> Side note, one can:
> 
> (trap 'echo quit' SIGUSR1; echo 'start'; while true; do sleep 1; done) |testpmd -i &
> 
> and issue a SIGUSR1 to the subshell to cleanly quit testpmd.
> Or:
> 
> (trap 'echo show port stats all' SIGUSR1; \
>  trap 'echo quit' SIGUSR2; \
>  echo 'start'; \
>  while true; do :; done) |\
> testpmd -i &
> 
> It's a little contrived, but it does the job and is easy enough to put
> in scripts.
> 
Or we can just put in a --tx-first flag and save the user the pain of
doing multi-line bash commands. Usability is a constant complaint about
DPDK that we hear e.g. at userspace every year, so we need to stop
assuming everyone looking to play with DPDK is a shell power-user.

/Bruce

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-20 11:20               ` Bruce Richardson
@ 2017-06-20 12:30                 ` Gaëtan Rivet
  0 siblings, 0 replies; 18+ messages in thread
From: Gaëtan Rivet @ 2017-06-20 12:30 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: Thomas Monjalon, De Lara Guarch, Pablo, dev, Wu, Jingjing

On Tue, Jun 20, 2017 at 12:20:34PM +0100, Bruce Richardson wrote:
> On Tue, Jun 20, 2017 at 12:19:01PM +0200, Gaëtan Rivet wrote:
> > On Tue, Jun 20, 2017 at 11:58:54AM +0200, Thomas Monjalon wrote:
> > > 20/06/2017 11:22, Bruce Richardson:
> > > > On Mon, Jun 19, 2017 at 11:12:53PM +0200, Thomas Monjalon wrote:
> > > > > 15/06/2017 14:05, De Lara Guarch, Pablo:
> > > > > > > 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@intel.com>
> > > > > > > ---
> > > > > > > --- 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.
> > > > > 
> > > > > I don't really understand the benefit of this option.
> > > > > Why is it better than
> > > > > 	echo start tx_first | testpmd -i
> > > > > ?
> > > > 
> > > > The one big difference I see is normal vs abnormal termination. With the
> > > > echo command you suggest, the only way to terminate testpmd is to kill
> > > > it via signal. With the extra cmdline option, it will cleanly exit via
> > > > enter as with non-interactive mode right now. Not a huge difference, but
> > > > I think having the extra argument to enable tx-first is useful.
> > 
> > Side note, one can:
> > 
> > (trap 'echo quit' SIGUSR1; echo 'start'; while true; do sleep 1; done) |testpmd -i &
> > 
> > and issue a SIGUSR1 to the subshell to cleanly quit testpmd.
> > Or:
> > 
> > (trap 'echo show port stats all' SIGUSR1; \
> >  trap 'echo quit' SIGUSR2; \
> >  echo 'start'; \
> >  while true; do :; done) |\
> > testpmd -i &
> > 
> > It's a little contrived, but it does the job and is easy enough to put
> > in scripts.
> > 
> Or we can just put in a --tx-first flag and save the user the pain of
> doing multi-line bash commands. Usability is a constant complaint about
> DPDK that we hear e.g. at userspace every year, so we need to stop
> assuming everyone looking to play with DPDK is a shell power-user.
> 
> /Bruce

Sure, but who are the users of testpmd, beside DPDK developers and
integration bots?

This fix IMO may be useful but it is a crutch for this usability
problem. The aimed functionality would result in the end in adding one
by one all interactive commands as parameters to have feature-parity
between interactive and non-interactive mode.

A better solution could be to open the cmdline from testpmd to a pipe
when not in interactive mode, instead of relying on the user to do it
artificially (as I was doing with my multiline shell command).
Then the parameters could be restricted to configuration items that ought
to be set before probing any device, instead of each possible elements
being added twice in the cmdline and in the parameters.

A kind of daemon / background mode if you want.
Anyway, that's just my limited experience with integrating testpmd to a
CI and using it, I reckon that it may not be the most common use, and I
have no opinion regarding this parameter ; I only wanted to give my PoV.

-- 
Gaëtan Rivet
6WIND

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first
  2017-06-19  1:05       ` Wu, Jingjing
@ 2017-07-05 23:48         ` Thomas Monjalon
  0 siblings, 0 replies; 18+ messages in thread
From: Thomas Monjalon @ 2017-07-05 23:48 UTC (permalink / raw)
  To: De Lara Guarch, Pablo; +Cc: dev, Wu, Jingjing

> > > 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@intel.com>
> > > ---
> > >
> > > Changes in v3:
> > >
> > > -Added tx-first in long parameter list -Reworded informational message
> > > when tx-first is enabled
> 
> Acked-by: Jingjing Wu <jingjing.wu@intel.com>

It is said to be useful for beginners, so it is accepted.
However we are not going to copy every CLI commands in parameters.

Applied, thanks

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2017-07-05 23:48 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-28 21:36 [dpdk-dev] [PATCH] app/testpmd: add parameter to start forwarding sending Pablo de Lara
2017-06-07  9:17 ` Wu, Jingjing
2017-06-07 13:20   ` De Lara Guarch, Pablo
2017-06-07 13:23     ` Bruce Richardson
2017-06-09  2:30 ` [dpdk-dev] [PATCH v2] " Pablo de Lara
2017-06-15  4:04   ` [dpdk-dev] [PATCH v3] app/testpmd: add parameter to start forwarding TX first Pablo de Lara
2017-06-15 12:05     ` De Lara Guarch, Pablo
2017-06-19  1:05       ` Wu, Jingjing
2017-07-05 23:48         ` Thomas Monjalon
2017-06-19 21:12       ` Thomas Monjalon
2017-06-20  8:03         ` De Lara Guarch, Pablo
2017-06-20  9:22         ` Bruce Richardson
2017-06-20  9:58           ` Thomas Monjalon
2017-06-20 10:19             ` Gaëtan Rivet
2017-06-20 10:27               ` Van Haaren, Harry
2017-06-20 11:20               ` Bruce Richardson
2017-06-20 12:30                 ` Gaëtan Rivet
2017-06-19  0:53   ` [dpdk-dev] [PATCH v2] app/testpmd: add parameter to start forwarding sending Wu, Jingjing

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).