net/mlx5: fix E-Switch egress mirror flow validation
[dpdk.git] / drivers / net / bnxt / bnxt_rxtx_vec_neon.c
index d9ac822..b0981da 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause */
-/* Copyright(c) 2019-2020 Broadcom All rights reserved. */
+/* Copyright(c) 2019-2021 Broadcom All rights reserved. */
 
 #include <inttypes.h>
 #include <stdbool.h>
@@ -80,7 +80,7 @@ descs_to_mbufs(uint32x4_t mm_rxcmp[4], uint32x4_t mm_rxcmp1[4],
        const uint32x4_t flags2_index_mask = vdupq_n_u32(0x1F);
        const uint32x4_t flags2_error_mask = vdupq_n_u32(0x0F);
        uint32x4_t flags_type, flags2, index, errors, rss_flags;
-       uint32x4_t tmp, ptype_idx;
+       uint32x4_t tmp, ptype_idx, is_tunnel;
        uint64x2_t t0, t1;
        uint32_t ol_flags;
 
@@ -117,10 +117,14 @@ descs_to_mbufs(uint32x4_t mm_rxcmp[4], uint32x4_t mm_rxcmp1[4],
                                                    vget_low_u64(t1)));
 
        /* Compute ol_flags and checksum error indexes for four packets. */
+       is_tunnel = vandq_u32(flags2, vdupq_n_u32(4));
+       is_tunnel = vshlq_n_u32(is_tunnel, 3);
        errors = vandq_u32(vshrq_n_u32(errors, 4), flags2_error_mask);
        errors = vandq_u32(errors, flags2);
 
        index = vbicq_u32(flags2, errors);
+       errors = vorrq_u32(errors, vshrq_n_u32(is_tunnel, 1));
+       index = vorrq_u32(index, is_tunnel);
 
        /* Update mbuf rearm_data for four packets. */
        GET_OL_FLAGS(rss_flags, index, errors, 0, ol_flags);