[dpdk-dev] app/test-pmd: Fix log issue without nic binded

Message ID 1425285097-14781-1-git-send-email-michael.qiu@intel.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Michael Qiu March 2, 2015, 8:31 a.m. UTC
  As hotplug has been enabled, start the testpmd with no nic binded
will show one error log "Please stop the ports first":

Interactive-mode selected
Please stop the ports first
Done
testpmd>

This issue is cause by the logic of check link status.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
---
 app/test-pmd/testpmd.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)
  

Comments

Michael Qiu March 5, 2015, 1:57 a.m. UTC | #1
Hi, all

What about this patch?

Thanks,
Michael


On 3/2/2015 4:31 PM, Qiu, Michael wrote:
> As hotplug has been enabled, start the testpmd with no nic binded
> will show one error log "Please stop the ports first":
>
> Interactive-mode selected
> Please stop the ports first
> Done
> testpmd>
>
> This issue is cause by the logic of check link status.
>
> Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> ---
>  app/test-pmd/testpmd.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 61291be..e556b4c 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -1315,7 +1315,7 @@ port_is_closed(portid_t port_id)
>  int
>  start_port(portid_t pid)
>  {
> -	int diag, need_check_link_status = 0;
> +	int diag, need_check_link_status = -1;
>  	portid_t pi;
>  	queueid_t qi;
>  	struct rte_port *port;
> @@ -1337,6 +1337,7 @@ start_port(portid_t pid)
>  		if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
>  			continue;
>  
> +		need_check_link_status = 0;
>  		port = &ports[pi];
>  		if (rte_atomic16_cmpset(&(port->port_status), RTE_PORT_STOPPED,
>  						 RTE_PORT_HANDLING) == 0) {
> @@ -1457,9 +1458,9 @@ start_port(portid_t pid)
>  		need_check_link_status = 1;
>  	}
>  
> -	if (need_check_link_status && !no_link_check)
> +	if (need_check_link_status == 1 && !no_link_check)
>  		check_all_ports_link_status(RTE_PORT_ALL);
> -	else
> +	else if (need_check_link_status == 0)
>  		printf("Please stop the ports first\n");
>  
>  	printf("Done\n");
  
De Lara Guarch, Pablo March 6, 2015, 3:03 p.m. UTC | #2
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Michael Qiu
> Sent: Monday, March 02, 2015 8:32 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] app/test-pmd: Fix log issue without nic binded
> 
> As hotplug has been enabled, start the testpmd with no nic binded
> will show one error log "Please stop the ports first":
> 
> Interactive-mode selected
> Please stop the ports first
> Done
> testpmd>
> 
> This issue is cause by the logic of check link status.
> 
> Signed-off-by: Michael Qiu <michael.qiu@intel.com>

Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
  
Thomas Monjalon March 9, 2015, 8:22 a.m. UTC | #3
> > As hotplug has been enabled, start the testpmd with no nic binded
> > will show one error log "Please stop the ports first":
> > 
> > Interactive-mode selected
> > Please stop the ports first
> > Done
> > testpmd>
> > 
> > This issue is cause by the logic of check link status.
> > 
> > Signed-off-by: Michael Qiu <michael.qiu@intel.com>
> 
> Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>

Applied, thanks
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 61291be..e556b4c 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -1315,7 +1315,7 @@  port_is_closed(portid_t port_id)
 int
 start_port(portid_t pid)
 {
-	int diag, need_check_link_status = 0;
+	int diag, need_check_link_status = -1;
 	portid_t pi;
 	queueid_t qi;
 	struct rte_port *port;
@@ -1337,6 +1337,7 @@  start_port(portid_t pid)
 		if (pid != pi && pid != (portid_t)RTE_PORT_ALL)
 			continue;
 
+		need_check_link_status = 0;
 		port = &ports[pi];
 		if (rte_atomic16_cmpset(&(port->port_status), RTE_PORT_STOPPED,
 						 RTE_PORT_HANDLING) == 0) {
@@ -1457,9 +1458,9 @@  start_port(portid_t pid)
 		need_check_link_status = 1;
 	}
 
-	if (need_check_link_status && !no_link_check)
+	if (need_check_link_status == 1 && !no_link_check)
 		check_all_ports_link_status(RTE_PORT_ALL);
-	else
+	else if (need_check_link_status == 0)
 		printf("Please stop the ports first\n");
 
 	printf("Done\n");