New upstream version 17.11~rc4
[deb_dpdk.git] / drivers / net / mlx4 / mlx4_ethdev.c
index c2ea4db..2f69e7d 100644 (file)
@@ -1029,6 +1029,16 @@ const uint32_t *
 mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev)
 {
        static const uint32_t ptypes[] = {
+               /* refers to rxq_cq_to_pkt_type() */
+               RTE_PTYPE_L2_ETHER,
+               RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
+               RTE_PTYPE_L3_IPV6_EXT_UNKNOWN,
+               RTE_PTYPE_L4_FRAG,
+               RTE_PTYPE_L4_TCP,
+               RTE_PTYPE_L4_UDP,
+               RTE_PTYPE_UNKNOWN
+       };
+       static const uint32_t ptypes_l2tun[] = {
                /* refers to rxq_cq_to_pkt_type() */
                RTE_PTYPE_L2_ETHER,
                RTE_PTYPE_L3_IPV4_EXT_UNKNOWN,
@@ -1040,8 +1050,13 @@ mlx4_dev_supported_ptypes_get(struct rte_eth_dev *dev)
                RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN,
                RTE_PTYPE_UNKNOWN
        };
+       struct priv *priv = dev->data->dev_private;
 
-       if (dev->rx_pkt_burst == mlx4_rx_burst)
-               return ptypes;
+       if (dev->rx_pkt_burst == mlx4_rx_burst) {
+               if (priv->hw_csum_l2tun)
+                       return ptypes_l2tun;
+               else
+                       return ptypes;
+       }
        return NULL;
 }