[dpdk-dev] testpmd: force user to stop forwarding when changing port/core list

Message ID 1423579997-22014-1-git-send-email-pablo.de.lara.guarch@intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

De Lara Guarch, Pablo Feb. 10, 2015, 2:53 p.m. UTC
  Testpmd has the capability of changing the forwarding cores and ports in runtime.
If these are changed when forwarding, two issues may be encountered:

- If "show config fwd" is used, changes made in the core list are applied.
  Therefore, trying to stop forwarding may hang testpmd,
  since it could be waiting for cores to stop that are not actually running anything

- If the port list is changed, when stopping forwarding,
  it may miss the stats of some of the ports that were actually being used.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
---
 app/test-pmd/cmdline.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
  

Comments

Zhang, Helin Feb. 11, 2015, 6:56 a.m. UTC | #1
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Pablo de Lara
> Sent: Tuesday, February 10, 2015 10:53 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] testpmd: force user to stop forwarding when
> changing port/core list
> 
> Testpmd has the capability of changing the forwarding cores and ports in
> runtime.
> If these are changed when forwarding, two issues may be encountered:
> 
> - If "show config fwd" is used, changes made in the core list are applied.
>   Therefore, trying to stop forwarding may hang testpmd,
>   since it could be waiting for cores to stop that are not actually running
> anything
> 
> - If the port list is changed, when stopping forwarding,
>   it may miss the stats of some of the ports that were actually being used.
> 
> Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>

> ---
>  app/test-pmd/cmdline.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
> 
> diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index
> 590e427..46d4bf9 100644
> --- a/app/test-pmd/cmdline.c
> +++ b/app/test-pmd/cmdline.c
> @@ -2316,6 +2316,11 @@ static void cmd_set_list_parsed(void
> *parsed_result,
>  	} parsed_items;
>  	unsigned int nb_item;
> 
> +	if (test_done == 0) {
> +		printf("Please stop forwarding first\n");
> +		return;
> +	}
> +
>  	res = parsed_result;
>  	if (!strcmp(res->list_name, "corelist")) {
>  		nb_item = parse_item_list(res->list_of_items, "core", @@ -2370,6
> +2375,10 @@ static void cmd_set_mask_parsed(void *parsed_result,  {
>  	struct cmd_setmask_result *res = parsed_result;
> 
> +	if (test_done == 0) {
> +		printf("Please stop forwarding first\n");
> +		return;
> +	}
>  	if (!strcmp(res->mask, "coremask"))
>  		set_fwd_lcores_mask(res->hexavalue);
>  	else if (!strcmp(res->mask, "portmask"))
> --
> 1.7.4.1
  
Thomas Monjalon Feb. 15, 2015, 3:57 p.m. UTC | #2
> > Testpmd has the capability of changing the forwarding cores and ports in
> > runtime.
> > If these are changed when forwarding, two issues may be encountered:
> > 
> > - If "show config fwd" is used, changes made in the core list are applied.
> >   Therefore, trying to stop forwarding may hang testpmd,
> >   since it could be waiting for cores to stop that are not actually running
> > anything
> > 
> > - If the port list is changed, when stopping forwarding,
> >   it may miss the stats of some of the ports that were actually being used.
> > 
> > Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
> Acked-by: Helin Zhang <helin.zhang@intel.com>

Applied, thanks
  

Patch

diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c
index 590e427..46d4bf9 100644
--- a/app/test-pmd/cmdline.c
+++ b/app/test-pmd/cmdline.c
@@ -2316,6 +2316,11 @@  static void cmd_set_list_parsed(void *parsed_result,
 	} parsed_items;
 	unsigned int nb_item;
 
+	if (test_done == 0) {
+		printf("Please stop forwarding first\n");
+		return;
+	}
+
 	res = parsed_result;
 	if (!strcmp(res->list_name, "corelist")) {
 		nb_item = parse_item_list(res->list_of_items, "core",
@@ -2370,6 +2375,10 @@  static void cmd_set_mask_parsed(void *parsed_result,
 {
 	struct cmd_setmask_result *res = parsed_result;
 
+	if (test_done == 0) {
+		printf("Please stop forwarding first\n");
+		return;
+	}
 	if (!strcmp(res->mask, "coremask"))
 		set_fwd_lcores_mask(res->hexavalue);
 	else if (!strcmp(res->mask, "portmask"))