The pinfo variable has wrong data. This has to have merged data of two
fields from Rx completion - pkt_info and hdr_type_etc.

Fixes: 6cb559d67b83 ("net/mlx5: add vectorized Rx/Tx burst for x86")

Signed-off-by: Yongseok Koh <ys...@mellanox.com>
Acked-by: Nelio Laranjeiro <nelio.laranje...@6wind.com>
---
 drivers/net/mlx5/mlx5_rxtx_vec_sse.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_sse.c 
b/drivers/net/mlx5/mlx5_rxtx_vec_sse.c
index 74e595386..a27eb9589 100644
--- a/drivers/net/mlx5/mlx5_rxtx_vec_sse.c
+++ b/drivers/net/mlx5/mlx5_rxtx_vec_sse.c
@@ -828,8 +828,9 @@ rxq_cq_to_ptype_oflags_v(struct rxq *rxq, __m128i cqes[4], 
__m128i op_err,
        ptype = _mm_and_si128(ptype, ptype_mask);
        pinfo = _mm_and_si128(pinfo, pinfo_mask);
        pinfo = _mm_slli_epi32(pinfo, 16);
-       ptype = _mm_or_si128(ptype, pinfo);
-       ptype = _mm_srli_epi32(ptype, 10);
+       /* Make pinfo has merged fields for ol_flags calculation. */
+       pinfo = _mm_or_si128(ptype, pinfo);
+       ptype = _mm_srli_epi32(pinfo, 10);
        ptype = _mm_packs_epi32(ptype, zero);
        /* Errored packets will have RTE_PTYPE_ALL_MASK. */
        op_err = _mm_srli_epi16(op_err, 8);
-- 
2.11.0

Reply via email to