net/mlx5: fix dynamic inline hint handling
[dpdk.git] / drivers / net / sfc / sfc_ef10_rx_ev.h
index 9054fb9..a9896ea 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause
  *
- * Copyright (c) 2018 Solarflare Communications Inc.
- * All rights reserved.
+ * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2018-2019 Solarflare Communications Inc.
  *
  * This software was jointly developed between OKTET Labs (under contract
  * for Solarflare) and Solarflare Communications, Inc.
@@ -34,8 +34,13 @@ sfc_ef10_rx_ev_to_offloads(const efx_qword_t rx_ev, struct rte_mbuf *m,
        uint32_t l4_ptype = 0;
        uint64_t ol_flags = 0;
 
-       if (unlikely(EFX_TEST_QWORD_BIT(rx_ev, ESF_DZ_RX_PARSE_INCOMPLETE_LBN)))
+       if (unlikely(rx_ev.eq_u64[0] &
+               rte_cpu_to_le_64((1ull << ESF_DZ_RX_ECC_ERR_LBN) |
+                                (1ull << ESF_DZ_RX_ECRC_ERR_LBN) |
+                                (1ull << ESF_DZ_RX_PARSE_INCOMPLETE_LBN)))) {
+               /* Zero packet type is used as a marker to dicard bad packets */
                goto done;
+       }
 
 #if SFC_EF10_RX_EV_ENCAP_SUPPORT
        switch (EFX_QWORD_FIELD(rx_ev, ESF_EZ_RX_ENCAP_HDR)) {
@@ -117,6 +122,8 @@ sfc_ef10_rx_ev_to_offloads(const efx_qword_t rx_ev, struct rte_mbuf *m,
                if (tun_ptype == 0)
                        l2_ptype = RTE_PTYPE_L2_ETHER_ARP;
                break;
+       case ESE_DZ_L3_CLASS_UNKNOWN:
+               break;
        default:
                /* Unexpected Layer 3 class */
                SFC_ASSERT(false);
@@ -154,6 +161,8 @@ sfc_ef10_rx_ev_to_offloads(const efx_qword_t rx_ev, struct rte_mbuf *m,
                SFC_ASSERT(false);
        }
 
+       SFC_ASSERT(l2_ptype != 0);
+
 done:
        m->ol_flags = ol_flags & ol_mask;
        m->packet_type = tun_ptype | l2_ptype | l3_ptype | l4_ptype;