net/mlx5: fix flow tag decompression
authorAlexander Kozyrev <akozyrev@nvidia.com>
Thu, 14 Jan 2021 21:32:19 +0000 (21:32 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 29 Jan 2021 17:16:08 +0000 (18:16 +0100)
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: 54c2d46b160f ("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>
drivers/net/mlx5/mlx5_rxtx_vec_sse.h

index d4df981..0b3f240 100644 (file)
@@ -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 =