net/af_packet: remove timestamp from packet status
[dpdk.git] / drivers / net / ice / ice_generic_flow.c
index 261f0b7..13e3734 100644 (file)
@@ -212,6 +212,27 @@ enum rte_flow_item_type pattern_eth_qinq_ipv6[] = {
        RTE_FLOW_ITEM_TYPE_IPV6,
        RTE_FLOW_ITEM_TYPE_END,
 };
+enum rte_flow_item_type pattern_eth_ipv6_frag_ext[] = {
+       RTE_FLOW_ITEM_TYPE_ETH,
+       RTE_FLOW_ITEM_TYPE_IPV6,
+       RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT,
+       RTE_FLOW_ITEM_TYPE_END,
+};
+enum rte_flow_item_type pattern_eth_vlan_ipv6_frag_ext[] = {
+       RTE_FLOW_ITEM_TYPE_ETH,
+       RTE_FLOW_ITEM_TYPE_VLAN,
+       RTE_FLOW_ITEM_TYPE_IPV6,
+       RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT,
+       RTE_FLOW_ITEM_TYPE_END,
+};
+enum rte_flow_item_type pattern_eth_qinq_ipv6_frag_ext[] = {
+       RTE_FLOW_ITEM_TYPE_ETH,
+       RTE_FLOW_ITEM_TYPE_VLAN,
+       RTE_FLOW_ITEM_TYPE_VLAN,
+       RTE_FLOW_ITEM_TYPE_IPV6,
+       RTE_FLOW_ITEM_TYPE_IPV6_FRAG_EXT,
+       RTE_FLOW_ITEM_TYPE_END,
+};
 enum rte_flow_item_type pattern_eth_ipv6_udp[] = {
        RTE_FLOW_ITEM_TYPE_ETH,
        RTE_FLOW_ITEM_TYPE_IPV6,
@@ -1902,9 +1923,9 @@ ice_register_parser(struct ice_flow_parser *parser,
        } else {
                if (parser->engine->type == ICE_FLOW_ENGINE_SWITCH ||
                                parser->engine->type == ICE_FLOW_ENGINE_HASH)
-                       TAILQ_INSERT_TAIL(list, parser_node, node);
-               else if (parser->engine->type == ICE_FLOW_ENGINE_FDIR)
                        TAILQ_INSERT_HEAD(list, parser_node, node);
+               else if (parser->engine->type == ICE_FLOW_ENGINE_FDIR)
+                       TAILQ_INSERT_TAIL(list, parser_node, node);
                else if (parser->engine->type == ICE_FLOW_ENGINE_ACL)
                        TAILQ_INSERT_HEAD(list, parser_node, node);
                else
@@ -2087,6 +2108,7 @@ static struct ice_ptype_match ice_ptype_map[] = {
        {pattern_eth_ipv6_udp,                          ICE_PTYPE_IPV6_UDP_PAY},
        {pattern_eth_ipv6_tcp,                          ICE_PTYPE_IPV6_TCP_PAY},
        {pattern_eth_ipv6_sctp,                         ICE_PTYPE_IPV6_SCTP_PAY},
+       {pattern_eth_ipv6_frag_ext,                     ICE_PTYPE_IPV6FRAG_PAY},
        {pattern_eth_ipv6_gtpu,                         ICE_MAC_IPV6_GTPU},
        {pattern_eth_ipv6_gtpu_eh,                      ICE_MAC_IPV6_GTPU},
        {pattern_eth_ipv6_gtpu_ipv4,                    ICE_MAC_IPV6_GTPU_IPV4_PAY},
@@ -2112,11 +2134,15 @@ static struct ice_ptype_match ice_ptype_map[] = {
        {pattern_eth_arp,                               ICE_PTYPE_MAC_PAY},
        {pattern_eth_vlan_ipv4,                         ICE_PTYPE_IPV4_PAY},
        {pattern_eth_qinq_ipv4,                         ICE_PTYPE_IPV4_PAY},
+       {pattern_eth_qinq_ipv4_udp,                     ICE_PTYPE_IPV4_UDP_PAY},
+       {pattern_eth_qinq_ipv4_tcp,                     ICE_PTYPE_IPV4_TCP_PAY},
        {pattern_eth_vlan_ipv4_udp,                     ICE_PTYPE_IPV4_UDP_PAY},
        {pattern_eth_vlan_ipv4_tcp,                     ICE_PTYPE_IPV4_TCP_PAY},
        {pattern_eth_vlan_ipv4_sctp,                    ICE_PTYPE_IPV4_SCTP_PAY},
        {pattern_eth_vlan_ipv6,                         ICE_PTYPE_IPV6_PAY},
        {pattern_eth_qinq_ipv6,                         ICE_PTYPE_IPV6_PAY},
+       {pattern_eth_qinq_ipv6_udp,                     ICE_PTYPE_IPV6_UDP_PAY},
+       {pattern_eth_qinq_ipv6_tcp,                     ICE_PTYPE_IPV6_TCP_PAY},
        {pattern_eth_vlan_ipv6_udp,                     ICE_PTYPE_IPV6_UDP_PAY},
        {pattern_eth_vlan_ipv6_tcp,                     ICE_PTYPE_IPV6_TCP_PAY},
        {pattern_eth_vlan_ipv6_sctp,                    ICE_PTYPE_IPV6_SCTP_PAY},
@@ -2496,15 +2522,16 @@ ice_flow_query(struct rte_eth_dev *dev,
                        ret = flow->engine->query_count(ad, flow, count, error);
                        break;
                default:
-                       return rte_flow_error_set(error, ENOTSUP,
+                       ret = rte_flow_error_set(error, ENOTSUP,
                                        RTE_FLOW_ERROR_TYPE_ACTION,
                                        actions,
                                        "action not supported");
+                       goto out;
                }
        }
 
+out:
        rte_spinlock_unlock(&pf->flow_ops_lock);
-
        return ret;
 }