@@ -315,7 +315,7 @@ enum rte_flow_item_type iavf_pattern_eth_qinq_ipv6_icmp6[] = {
RTE_FLOW_ITEM_TYPE_END,
};
-/* GTPU */
+/* IPv4 GTPU (EH) */
enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
@@ -333,6 +333,7 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh[] = {
RTE_FLOW_ITEM_TYPE_END,
};
+/* IPv4 GTPU IPv4 */
enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
@@ -342,6 +343,8 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[] = {
RTE_FLOW_ITEM_TYPE_END,
};
+
+/* IPv4 GTPU EH IPv4 */
enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
@@ -372,7 +375,17 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp[] = {
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
+};
+enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_sctp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_SCTP,
+ RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = {
@@ -386,6 +399,171 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = {
RTE_FLOW_ITEM_TYPE_END,
};
+/* IPv4 GTPU EH IPv6 */
+enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_TCP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_sctp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_SCTP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_icmp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_ICMP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+/* IPv6 GTPU EH IPv4 */
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_udp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_TCP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_sctp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_SCTP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_icmp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV4,
+ RTE_FLOW_ITEM_TYPE_ICMP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+/* IPv6 GTPU EH IPv6 */
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_udp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_TCP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_sctp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_SCTP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
+enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_icmp[] = {
+ RTE_FLOW_ITEM_TYPE_ETH,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_UDP,
+ RTE_FLOW_ITEM_TYPE_GTPU,
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
+ RTE_FLOW_ITEM_TYPE_IPV6,
+ RTE_FLOW_ITEM_TYPE_ICMP,
+ RTE_FLOW_ITEM_TYPE_END,
+};
+
/* ESP */
enum rte_flow_item_type iavf_pattern_eth_ipv4_esp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
@@ -182,15 +182,41 @@ extern enum rte_flow_item_type iavf_pattern_eth_ipv6_icmp6[];
extern enum rte_flow_item_type iavf_pattern_eth_vlan_ipv6_icmp6[];
extern enum rte_flow_item_type iavf_pattern_eth_qinq_ipv6_icmp6[];
-/* GTPU */
+/* IPv4 GTPU (EH) */
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu[];
-extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[];
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh[];
+
+/* IPv4 GTPU IPv4 */
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[];
+
+/* IPv4 GTPU EH IPv4 */
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4[];
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp[];
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_sctp[];
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_icmp[];
+/* IPv4 GTPU EH IPv6 */
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_sctp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_icmp[];
+
+/* IPv6 GTPU EH IPv4 */
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_udp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_sctp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_icmp[];
+
+/* IPv6 GTPU EH IPv6 */
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_udp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_sctp[];
+extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_icmp[];
+
/* ESP */
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_esp[];
extern enum rte_flow_item_type iavf_pattern_eth_ipv4_udp_esp[];
@@ -85,6 +85,7 @@ iavf_hash_parse_pattern_action(struct iavf_adapter *ad,
struct iavf_pattern_match_type phint_empty = {
IAVF_PATTERN_HINT_NONE};
+
struct iavf_pattern_match_type phint_eth_ipv4 = {
IAVF_PATTERN_HINT_IPV4};
struct iavf_pattern_match_type phint_eth_ipv4_udp = {
@@ -93,8 +94,43 @@ struct iavf_pattern_match_type phint_eth_ipv4_tcp = {
IAVF_PATTERN_HINT_IPV4_TCP};
struct iavf_pattern_match_type phint_eth_ipv4_sctp = {
IAVF_PATTERN_HINT_IPV4_SCTP};
-struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh = {
+
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4 = {
+ IAVF_PATTERN_HINT_IPV4};
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_udp4 = {
IAVF_PATTERN_HINT_IPV4_UDP};
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_tcp4 = {
+ IAVF_PATTERN_HINT_IPV4_TCP};
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_sctp4 = {
+ IAVF_PATTERN_HINT_IPV4_SCTP};
+
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6 = {
+ IAVF_PATTERN_HINT_IPV6};
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_udp6 = {
+ IAVF_PATTERN_HINT_IPV6_UDP};
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_tcp6 = {
+ IAVF_PATTERN_HINT_IPV6_TCP};
+struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_sctp6 = {
+ IAVF_PATTERN_HINT_IPV6_SCTP};
+
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4 = {
+ IAVF_PATTERN_HINT_IPV4};
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_udp4 = {
+ IAVF_PATTERN_HINT_IPV4_UDP};
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_tcp4 = {
+ IAVF_PATTERN_HINT_IPV4_TCP};
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_sctp4 = {
+ IAVF_PATTERN_HINT_IPV4_SCTP};
+
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6 = {
+ IAVF_PATTERN_HINT_IPV6};
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_udp6 = {
+ IAVF_PATTERN_HINT_IPV6_UDP};
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_tcp6 = {
+ IAVF_PATTERN_HINT_IPV6_TCP};
+struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_sctp6 = {
+ IAVF_PATTERN_HINT_IPV6_SCTP};
+
struct iavf_pattern_match_type phint_eth_ipv4_esp = {
IAVF_PATTERN_HINT_IPV4};
struct iavf_pattern_match_type phint_eth_ipv4_ah = {
@@ -103,6 +139,7 @@ struct iavf_pattern_match_type phint_eth_ipv4_l2tpv3 = {
IAVF_PATTERN_HINT_IPV4};
struct iavf_pattern_match_type phint_eth_ipv4_pfcp = {
IAVF_PATTERN_HINT_IPV4_UDP};
+
struct iavf_pattern_match_type phint_eth_ipv6 = {
IAVF_PATTERN_HINT_IPV6};
struct iavf_pattern_match_type phint_eth_ipv6_udp = {
@@ -111,6 +148,7 @@ struct iavf_pattern_match_type phint_eth_ipv6_tcp = {
IAVF_PATTERN_HINT_IPV6_TCP};
struct iavf_pattern_match_type phint_eth_ipv6_sctp = {
IAVF_PATTERN_HINT_IPV6_SCTP};
+
struct iavf_pattern_match_type phint_eth_ipv6_esp = {
IAVF_PATTERN_HINT_IPV6};
struct iavf_pattern_match_type phint_eth_ipv6_ah = {
@@ -127,31 +165,47 @@ struct iavf_pattern_match_type phint_eth_ipv6_pfcp = {
* the third member is pattern hint for hash.
*/
static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
- {iavf_pattern_eth_ipv4, IAVF_INSET_NONE, &phint_eth_ipv4},
- {iavf_pattern_eth_ipv4_udp, IAVF_INSET_NONE, &phint_eth_ipv4_udp},
- {iavf_pattern_eth_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_tcp},
- {iavf_pattern_eth_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_sctp},
- {iavf_pattern_eth_ipv6, IAVF_INSET_NONE, &phint_eth_ipv6},
- {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_INSET_NONE,
- &phint_eth_ipv4_gtpu_eh},
- {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp, IAVF_INSET_NONE,
- &phint_eth_ipv4_gtpu_eh},
- {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE,
- &phint_eth_ipv4_gtpu_eh},
- {iavf_pattern_eth_ipv4_esp, IAVF_INSET_NONE, &phint_eth_ipv4_esp},
- {iavf_pattern_eth_ipv4_ah, IAVF_INSET_NONE, &phint_eth_ipv4_ah},
- {iavf_pattern_eth_ipv4_l2tpv3, IAVF_INSET_NONE,
- &phint_eth_ipv4_l2tpv3},
- {iavf_pattern_eth_ipv4_pfcp, IAVF_INSET_NONE, &phint_eth_ipv4_pfcp},
- {iavf_pattern_eth_ipv6_udp, IAVF_INSET_NONE, &phint_eth_ipv6_udp},
- {iavf_pattern_eth_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_tcp},
- {iavf_pattern_eth_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_sctp},
- {iavf_pattern_eth_ipv6_esp, IAVF_INSET_NONE, &phint_eth_ipv6_esp},
- {iavf_pattern_eth_ipv6_ah, IAVF_INSET_NONE, &phint_eth_ipv6_ah},
- {iavf_pattern_eth_ipv6_l2tpv3, IAVF_INSET_NONE,
- &phint_eth_ipv6_l2tpv3},
- {iavf_pattern_eth_ipv6_pfcp, IAVF_INSET_NONE, &phint_eth_ipv6_pfcp},
- {iavf_pattern_empty, IAVF_INSET_NONE, &phint_empty},
+ {iavf_pattern_eth_ipv4, IAVF_INSET_NONE, &phint_eth_ipv4},
+ {iavf_pattern_eth_ipv4_udp, IAVF_INSET_NONE, &phint_eth_ipv4_udp},
+ {iavf_pattern_eth_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_tcp},
+ {iavf_pattern_eth_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_sctp},
+
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_ipv4},
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_udp4},
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_tcp4},
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_sctp4},
+
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv6, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_ipv6},
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_udp6},
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_tcp6},
+ {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_sctp6},
+
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv4, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_ipv4},
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_udp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_udp4},
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_tcp4},
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_sctp4},
+
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv6, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_ipv6},
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_udp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_udp6},
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_tcp6},
+ {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_sctp6},
+
+ {iavf_pattern_eth_ipv4_esp, IAVF_INSET_NONE, &phint_eth_ipv4_esp},
+ {iavf_pattern_eth_ipv4_ah, IAVF_INSET_NONE, &phint_eth_ipv4_ah},
+ {iavf_pattern_eth_ipv4_l2tpv3, IAVF_INSET_NONE, &phint_eth_ipv4_l2tpv3},
+ {iavf_pattern_eth_ipv4_pfcp, IAVF_INSET_NONE, &phint_eth_ipv4_pfcp},
+
+ {iavf_pattern_eth_ipv6, IAVF_INSET_NONE, &phint_eth_ipv6},
+ {iavf_pattern_eth_ipv6_udp, IAVF_INSET_NONE, &phint_eth_ipv6_udp},
+ {iavf_pattern_eth_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_tcp},
+ {iavf_pattern_eth_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_sctp},
+
+ {iavf_pattern_eth_ipv6_esp, IAVF_INSET_NONE, &phint_eth_ipv6_esp},
+ {iavf_pattern_eth_ipv6_ah, IAVF_INSET_NONE, &phint_eth_ipv6_ah},
+ {iavf_pattern_eth_ipv6_l2tpv3, IAVF_INSET_NONE, &phint_eth_ipv6_l2tpv3},
+ {iavf_pattern_eth_ipv6_pfcp, IAVF_INSET_NONE, &phint_eth_ipv6_pfcp},
+
+ {iavf_pattern_empty, IAVF_INSET_NONE, &phint_empty},
};
#define TUNNEL_LEVEL_OUTER 0