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: sta...@dpdk.org

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

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 =
-- 
2.24.1

Reply via email to