net/mlx5: fix order of items in neon scatter func

Message ID 1e43edbc1aa11055521150f5be724278aa1247e6.1557915012.git.dekelp@mellanox.com
State Accepted, archived
Delegated to: Shahaf Shuler
Headers show
Series
  • net/mlx5: fix order of items in neon scatter func
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/checkpatch success coding style OK

Commit Message

Dekel Peled May 15, 2019, 10:07 a.m.
Previous patch added handling of metadata for multi-segment packet.
Function txq_scatter_v in file mlx5_rxtx_vec_neon.h was updated
incorrectly, items were inserted into WQE in wrong order.

This patch fixes the issue, inserting items into WQE correctly.

Fixes: 7f4019d370f6 ("net/mlx5: fix Tx metadata for multi-segment packet")
Cc: stable@dpdk.org

Signed-off-by: Dekel Peled <dekelp@mellanox.com>
---
 drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Shahaf Shuler May 26, 2019, 6:49 p.m. | #1
Wednesday, May 15, 2019 1:08 PM, Dekel Peled:
> Subject: [dpdk-dev] [PATCH] net/mlx5: fix order of items in neon scatter
> func
> 
> Previous patch added handling of metadata for multi-segment packet.
> Function txq_scatter_v in file mlx5_rxtx_vec_neon.h was updated
> incorrectly, items were inserted into WQE in wrong order.
> 
> This patch fixes the issue, inserting items into WQE correctly.
> 
> Fixes: 7f4019d370f6 ("net/mlx5: fix Tx metadata for multi-segment packet")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> index 38e915c..b1e0e8f 100644
> --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> @@ -171,7 +171,7 @@
>  		/* Fill ESEG in the header. */
>  		vst1q_u32((void *)(t_wqe + 1),
>  			  ((uint32x4_t){ 0,
> -					 cs_flags << 16 |
> rte_cpu_to_be_16(len),
> +					 rte_cpu_to_be_16(len) << 16 |
> cs_flags,

It was probably not introduced by the previous patch, but since you touch this area:
Why do you set the mss (len)? This function handles only non-TSO packets. 

>  					 metadata, 0 }));
>  		txq->wqe_ci = wqe_ci;
>  	}
> --
> 1.8.3.1
Dekel Peled May 27, 2019, 6:50 a.m. | #2
PSB, thanks.

> -----Original Message-----
> From: Shahaf Shuler
> Sent: Sunday, May 26, 2019 9:49 PM
> To: Dekel Peled <dekelp@mellanox.com>; Yongseok Koh
> <yskoh@mellanox.com>
> Cc: dev@dpdk.org; stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH] net/mlx5: fix order of items in neon scatter
> func
> 
> Wednesday, May 15, 2019 1:08 PM, Dekel Peled:
> > Subject: [dpdk-dev] [PATCH] net/mlx5: fix order of items in neon
> > scatter func
> >
> > Previous patch added handling of metadata for multi-segment packet.
> > Function txq_scatter_v in file mlx5_rxtx_vec_neon.h was updated
> > incorrectly, items were inserted into WQE in wrong order.
> >
> > This patch fixes the issue, inserting items into WQE correctly.
> >
> > Fixes: 7f4019d370f6 ("net/mlx5: fix Tx metadata for multi-segment
> > packet")
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> > ---
> >  drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > index 38e915c..b1e0e8f 100644
> > --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > @@ -171,7 +171,7 @@
> >  		/* Fill ESEG in the header. */
> >  		vst1q_u32((void *)(t_wqe + 1),
> >  			  ((uint32x4_t){ 0,
> > -					 cs_flags << 16 |
> > rte_cpu_to_be_16(len),
> > +					 rte_cpu_to_be_16(len) << 16 |
> > cs_flags,
> 
> It was probably not introduced by the previous patch, but since you touch
> this area:
> Why do you set the mss (len)? This function handles only non-TSO packets.

mss is set to 0 in txq_burst_v, which sends single segment packets.
This change is in txq_scatter_v which sends multi-segmented packets.

> 
> >  					 metadata, 0 }));
> >  		txq->wqe_ci = wqe_ci;
> >  	}
> > --
> > 1.8.3.1
Shahaf Shuler June 2, 2019, 7:53 a.m. | #3
Monday, May 27, 2019 9:50 AM, Dekel Peled:
> Subject: RE: [dpdk-dev] [PATCH] net/mlx5: fix order of items in neon scatter
> func
> 
> PSB, thanks.
> 
> > -----Original Message-----
> > From: Shahaf Shuler
> > Sent: Sunday, May 26, 2019 9:49 PM
> > To: Dekel Peled <dekelp@mellanox.com>; Yongseok Koh
> > <yskoh@mellanox.com>
> > Cc: dev@dpdk.org; stable@dpdk.org
> > Subject: RE: [dpdk-dev] [PATCH] net/mlx5: fix order of items in neon
> > scatter func
> >
> > Wednesday, May 15, 2019 1:08 PM, Dekel Peled:
> > > Subject: [dpdk-dev] [PATCH] net/mlx5: fix order of items in neon
> > > scatter func
> > >
> > > Previous patch added handling of metadata for multi-segment packet.
> > > Function txq_scatter_v in file mlx5_rxtx_vec_neon.h was updated
> > > incorrectly, items were inserted into WQE in wrong order.
> > >
> > > This patch fixes the issue, inserting items into WQE correctly.
> > >
> > > Fixes: 7f4019d370f6 ("net/mlx5: fix Tx metadata for multi-segment
> > > packet")
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Dekel Peled <dekelp@mellanox.com>
> > > ---
> > >  drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > > b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > > index 38e915c..b1e0e8f 100644
> > > --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > > +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
> > > @@ -171,7 +171,7 @@
> > >  		/* Fill ESEG in the header. */
> > >  		vst1q_u32((void *)(t_wqe + 1),
> > >  			  ((uint32x4_t){ 0,
> > > -					 cs_flags << 16 |
> > > rte_cpu_to_be_16(len),
> > > +					 rte_cpu_to_be_16(len) << 16 |
> > > cs_flags,
> >
> > It was probably not introduced by the previous patch, but since you
> > touch this area:
> > Why do you set the mss (len)? This function handles only non-TSO packets.
> 
> mss is set to 0 in txq_burst_v, which sends single segment packets.
> This change is in txq_scatter_v which sends multi-segmented packets.

Thanks for the clarification, 
Applied to next-net-mlx, thanks. 

> 
> >
> > >  					 metadata, 0 }));
> > >  		txq->wqe_ci = wqe_ci;
> > >  	}
> > > --
> > > 1.8.3.1

Patch

diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
index 38e915c..b1e0e8f 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h
@@ -171,7 +171,7 @@ 
 		/* Fill ESEG in the header. */
 		vst1q_u32((void *)(t_wqe + 1),
 			  ((uint32x4_t){ 0,
-					 cs_flags << 16 | rte_cpu_to_be_16(len),
+					 rte_cpu_to_be_16(len) << 16 | cs_flags,
 					 metadata, 0 }));
 		txq->wqe_ci = wqe_ci;
 	}