diff mbox series

net/mlx5: fix wrong Flow Tag decompression

Message ID 20210114213219.30593-1-akozyrev@nvidia.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers show
Series net/mlx5: fix wrong Flow Tag decompression | expand

Checks

Context Check Description
ci/iol-testing success Testing PASS
ci/iol-abi-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-mellanox-Functional success Functional Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/intel-Testing success Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/checkpatch success coding style OK

Commit Message

Alexander Kozyrev Jan. 14, 2021, 9:32 p.m. UTC
Packets can get a wrong Flow Tag on x86 architecture with the Flow Tag
compression format (rxq_cqe_comp_en=2) enabled inside the SSE Rx burst.
The shuffle mask that extracts a Flow Tag from the pair of compressed
CQEs is reversed. This leads to the wrong Flow Tag assignment.
Correct the shuffle mask to get proper bytes for a Flow Tag from miniCQEs.

Fixes: 54c2d46b160 ("net/mlx5: support flow tag and packet header miniCQEs")
Cc: stable@dpdk.org

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
---
 drivers/net/mlx5/mlx5_rxtx_vec_sse.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Viacheslav Ovsiienko Jan. 21, 2021, 2:12 p.m. UTC | #1
> -----Original Message-----
> From: Alexander Kozyrev <akozyrev@nvidia.com>
> Sent: Thursday, January 14, 2021 23:32
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Raslan Darawsheh <rasland@nvidia.com>; Slava
> Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad <matan@nvidia.com>
> Subject: [PATCH] net/mlx5: fix wrong Flow Tag decompression
> 
> Packets can get a wrong Flow Tag on x86 architecture with the Flow Tag
> compression format (rxq_cqe_comp_en=2) enabled inside the SSE Rx burst.
> The shuffle mask that extracts a Flow Tag from the pair of compressed CQEs is
> reversed. This leads to the wrong Flow Tag assignment.
> Correct the shuffle mask to get proper bytes for a Flow Tag from miniCQEs.
> 
> Fixes: 54c2d46b160 ("net/mlx5: support flow tag and packet header
> miniCQEs")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Raslan Darawsheh Jan. 24, 2021, 9:32 a.m. UTC | #2
Hi,

> -----Original Message-----
> From: Alexander Kozyrev <akozyrev@nvidia.com>
> Sent: Thursday, January 14, 2021 11:32 PM
> To: dev@dpdk.org
> Cc: stable@dpdk.org; Raslan Darawsheh <rasland@nvidia.com>; Slava
> Ovsiienko <viacheslavo@nvidia.com>; Matan Azrad <matan@nvidia.com>
> Subject: [PATCH] net/mlx5: fix wrong Flow Tag decompression
> 
> Packets can get a wrong Flow Tag on x86 architecture with the Flow Tag
> compression format (rxq_cqe_comp_en=2) enabled inside the SSE Rx burst.
> The shuffle mask that extracts a Flow Tag from the pair of compressed
> CQEs is reversed. This leads to the wrong Flow Tag assignment.
> Correct the shuffle mask to get proper bytes for a Flow Tag from miniCQEs.
> 
> Fixes: 54c2d46b160 ("net/mlx5: support flow tag and packet header
> miniCQEs")
> Cc: stable@dpdk.org
> 
> Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
> ---

Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
diff mbox series

Patch

diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
index d4df9816aa..0b3f240e10 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.h
@@ -197,8 +197,8 @@  rxq_cq_decompress_v(struct mlx5_rxq_data *rxq, volatile struct mlx5_cqe *cq,
 				const __m128i flow_mark_adj =
 					_mm_set_epi32(-1, -1, -1, -1);
 				const __m128i flow_mark_shuf =
-					_mm_set_epi8(-1,  1,  0,  4,
-						     -1,  9,  8, 12,
+					_mm_set_epi8(-1,  9,  8, 12,
+						     -1,  1,  0,  4,
 						     -1, -1, -1, -1,
 						     -1, -1, -1, -1);
 				const __m128i ft_mask =