app/testpmd: fix testpmd receive jumbo frame packets

Message ID 20221025020510.117132-1-jie1x.wang@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Andrew Rybchenko
Headers
Series app/testpmd: fix testpmd receive jumbo frame packets |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS

Commit Message

Jie Wang Oct. 25, 2022, 2:05 a.m. UTC
  For NIC I40E_10G-10G_BASE_T_X722, when testpmd is configured with
link speed, it cannot receive jumbo frame packets.

Because it has changed the link status of the ports if it was
configured with link speed.

When exiting testpmd that it automatically stops packet forwarding
and stops all the ports. But it doesn't update the link status of the
ports. If stop the ports first that it will update the link status.

This patch fix the error that testpmd will update the link status of
the ports when it exits.

Fixes: d3a274ce9dee ("app/testpmd: handle SIGINT and SIGTERM")
Fixes: 284c908cc588 ("app/testpmd: request device removal interrupt")
Cc: stable@dpdk.org

Signed-off-by: Jie Wang <jie1x.wang@intel.com>
---
 app/test-pmd/testpmd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Singh, Aman Deep Oct. 27, 2022, 3:37 p.m. UTC | #1
Hi Jie,

Thanks for the patch.


On 10/25/2022 7:35 AM, Jie Wang wrote:
> For NIC I40E_10G-10G_BASE_T_X722, when testpmd is configured with
> link speed, it cannot receive jumbo frame packets.

Why only the jumbo frame are effected and not other pkts.

>
> Because it has changed the link status of the ports if it was
> configured with link speed.

If we configure to same link speed, will it still have issue ?

>
> When exiting testpmd that it automatically stops packet forwarding
> and stops all the ports. But it doesn't update the link status of the
> ports. If stop the ports first that it will update the link status.
>
> This patch fix the error that testpmd will update the link status of
> the ports when it exits.
>
> Fixes: d3a274ce9dee ("app/testpmd: handle SIGINT and SIGTERM")
> Fixes: 284c908cc588 ("app/testpmd: request device removal interrupt")
> Cc: stable@dpdk.org
>
> Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> ---
>   app/test-pmd/testpmd.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
> index 97adafacd0..c348a3f328 100644
> --- a/app/test-pmd/testpmd.c
> +++ b/app/test-pmd/testpmd.c
> @@ -3548,7 +3548,7 @@ pmd_test_exit(void)
>   	}
>   #endif
>   	if (ports != NULL) {
> -		no_link_check = 1;
> +		no_link_check = 0;
>   		RTE_ETH_FOREACH_DEV(pt_id) {
>   			printf("\nStopping port %d...\n", pt_id);
>   			fflush(stdout);
> @@ -3675,7 +3675,7 @@ rmv_port_callback(void *arg)
>   		need_to_start = 1;
>   		stop_packet_forwarding();
>   	}
> -	no_link_check = 1;
> +	no_link_check = 0;

Well, here we are undoing a previous change done for 284c908cc588
Won't that issue come back.

>   	stop_port(port_id);
>   	no_link_check = org_no_link_check;
>
  
Jie Wang Oct. 28, 2022, 2:30 a.m. UTC | #2
Hi Singh,

> -----Original Message-----
> From: Singh, Aman Deep <aman.deep.singh@intel.com>
> Sent: Thursday, October 27, 2022 11:38 PM
> To: Wang, Jie1X <jie1x.wang@intel.com>; dev@dpdk.org
> Cc: Yang, SteveX <stevex.yang@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>;
> Yang, Qiming <qiming.yang@intel.com>; Zhang, Yuying
> <yuying.zhang@intel.com>; stable@dpdk.org
> Subject: Re: [PATCH] app/testpmd: fix testpmd receive jumbo frame packets
> 
> Hi Jie,
> 
> Thanks for the patch.
> 
> 
> On 10/25/2022 7:35 AM, Jie Wang wrote:
> > For NIC I40E_10G-10G_BASE_T_X722, when testpmd is configured with link
> > speed, it cannot receive jumbo frame packets.
> 
> Why only the jumbo frame are effected and not other pkts.
> 

I don't know why only the jumbo frame are effected, when set the link speed, it will update the link status of the NIC ports.
And this phenomenon can only be reproduced on this NIC I40E_10G-10G_BASE_T_X722, and other NICs do not have this phenomenon.
 
> >
> > Because it has changed the link status of the ports if it was
> > configured with link speed.
> 
> If we configure to same link speed, will it still have issue ?
> 

Yes, it is.

> >
> > When exiting testpmd that it automatically stops packet forwarding and
> > stops all the ports. But it doesn't update the link status of the
> > ports. If stop the ports first that it will update the link status.
> >
> > This patch fix the error that testpmd will update the link status of
> > the ports when it exits.
> >
> > Fixes: d3a274ce9dee ("app/testpmd: handle SIGINT and SIGTERM")
> > Fixes: 284c908cc588 ("app/testpmd: request device removal interrupt")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Jie Wang <jie1x.wang@intel.com>
> > ---
> >   app/test-pmd/testpmd.c | 4 ++--
> >   1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index
> > 97adafacd0..c348a3f328 100644
> > --- a/app/test-pmd/testpmd.c
> > +++ b/app/test-pmd/testpmd.c
> > @@ -3548,7 +3548,7 @@ pmd_test_exit(void)
> >   	}
> >   #endif
> >   	if (ports != NULL) {
> > -		no_link_check = 1;
> > +		no_link_check = 0;
> >   		RTE_ETH_FOREACH_DEV(pt_id) {
> >   			printf("\nStopping port %d...\n", pt_id);
> >   			fflush(stdout);
> > @@ -3675,7 +3675,7 @@ rmv_port_callback(void *arg)
> >   		need_to_start = 1;
> >   		stop_packet_forwarding();
> >   	}
> > -	no_link_check = 1;
> > +	no_link_check = 0;
> 
> Well, here we are undoing a previous change done for 284c908cc588 Won't that
> issue come back.
> 
> >   	stop_port(port_id);
> >   	no_link_check = org_no_link_check;
> >
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index 97adafacd0..c348a3f328 100644
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -3548,7 +3548,7 @@  pmd_test_exit(void)
 	}
 #endif
 	if (ports != NULL) {
-		no_link_check = 1;
+		no_link_check = 0;
 		RTE_ETH_FOREACH_DEV(pt_id) {
 			printf("\nStopping port %d...\n", pt_id);
 			fflush(stdout);
@@ -3675,7 +3675,7 @@  rmv_port_callback(void *arg)
 		need_to_start = 1;
 		stop_packet_forwarding();
 	}
-	no_link_check = 1;
+	no_link_check = 0;
 	stop_port(port_id);
 	no_link_check = org_no_link_check;