net/iavf: add GTPU in default hash
[dpdk.git] / drivers / net / iavf / iavf_hash.c
index b3b36cb..5cca83e 100644 (file)
@@ -33,9 +33,14 @@ enum iavf_pattern_hint_type {
        IAVF_PHINT_IPV6_UDP                     = 0x00000020,
        IAVF_PHINT_IPV6_TCP                     = 0x00000040,
        IAVF_PHINT_IPV6_SCTP                    = 0x00000080,
-       IAVF_PHINT_IPV4_GTPU_EH                 = 0x00000100,
-       IAVF_PHINT_IPV4_GTPU_EH_DWNLINK         = 0x00000200,
-       IAVF_PHINT_IPV4_GTPU_EH_UPLINK          = 0x00000400,
+       IAVF_PHINT_IPV4_GTPU_IP                 = 0x00000100,
+       IAVF_PHINT_IPV4_GTPU_EH                 = 0x00000200,
+       IAVF_PHINT_IPV4_GTPU_EH_DWNLINK         = 0x00000400,
+       IAVF_PHINT_IPV4_GTPU_EH_UPLINK          = 0x00000800,
+       IAVF_PHINT_IPV6_GTPU_IP                 = 0x00001000,
+       IAVF_PHINT_IPV6_GTPU_EH                 = 0x00002000,
+       IAVF_PHINT_IPV6_GTPU_EH_DWNLINK         = 0x00004000,
+       IAVF_PHINT_IPV6_GTPU_EH_UPLINK          = 0x00008000,
 };
 
 #define IAVF_GTPU_EH_DWNLINK   0
@@ -92,14 +97,58 @@ static struct iavf_pattern_match_type phint_eth_ipv4_tcp = {
        IAVF_PHINT_IPV4_TCP};
 static struct iavf_pattern_match_type phint_eth_ipv4_sctp = {
        IAVF_PHINT_IPV4_SCTP};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv4 = {
+       IAVF_PHINT_IPV4};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv4_udp = {
+       IAVF_PHINT_IPV4_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv4_tcp = {
+       IAVF_PHINT_IPV4_TCP};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv6 = {
+       IAVF_PHINT_IPV6};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv6_udp = {
+       IAVF_PHINT_IPV6_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_ipv6_tcp = {
+       IAVF_PHINT_IPV6_TCP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv4 = {
+       IAVF_PHINT_IPV4};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv4_udp = {
+       IAVF_PHINT_IPV4_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv4_tcp = {
+       IAVF_PHINT_IPV4_TCP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv6 = {
+       IAVF_PHINT_IPV6};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv6_udp = {
+       IAVF_PHINT_IPV6_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_ipv6_tcp = {
+       IAVF_PHINT_IPV6_TCP};
 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4 = {
        IAVF_PHINT_IPV4};
 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4_udp = {
        IAVF_PHINT_IPV4_UDP};
 static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4_tcp = {
        IAVF_PHINT_IPV4_TCP};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6 = {
+       IAVF_PHINT_IPV6};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6_udp = {
+       IAVF_PHINT_IPV6_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6_tcp = {
+       IAVF_PHINT_IPV6_TCP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4 = {
+       IAVF_PHINT_IPV4};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4_udp = {
+       IAVF_PHINT_IPV4_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4_tcp = {
+       IAVF_PHINT_IPV4_TCP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6 = {
+       IAVF_PHINT_IPV6};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6_udp = {
+       IAVF_PHINT_IPV6_UDP};
+static struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6_tcp = {
+       IAVF_PHINT_IPV6_TCP};
 static struct iavf_pattern_match_type phint_eth_ipv4_esp = {
        IAVF_PHINT_IPV4};
+static struct iavf_pattern_match_type phint_eth_ipv4_udp_esp = {
+       IAVF_PHINT_IPV4_UDP};
 static struct iavf_pattern_match_type phint_eth_ipv4_ah = {
        IAVF_PHINT_IPV4};
 static struct iavf_pattern_match_type phint_eth_ipv4_l2tpv3 = {
@@ -124,6 +173,8 @@ static struct iavf_pattern_match_type phint_eth_ipv6_sctp = {
        IAVF_PHINT_IPV6_SCTP};
 static struct iavf_pattern_match_type phint_eth_ipv6_esp = {
        IAVF_PHINT_IPV6};
+static struct iavf_pattern_match_type phint_eth_ipv6_udp_esp = {
+       IAVF_PHINT_IPV6_UDP};
 static struct iavf_pattern_match_type phint_eth_ipv6_ah = {
        IAVF_PHINT_IPV6};
 static struct iavf_pattern_match_type phint_eth_ipv6_l2tpv3 = {
@@ -150,13 +201,57 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
        {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_ipv4, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_ipv4},
+       {iavf_pattern_eth_ipv4_gtpu_ipv4_udp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_ipv4_udp},
+       {iavf_pattern_eth_ipv4_gtpu_ipv4_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_ipv4_tcp},
+       {iavf_pattern_eth_ipv4_gtpu_ipv6, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_ipv6},
+       {iavf_pattern_eth_ipv4_gtpu_ipv6_udp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_ipv6_udp},
+       {iavf_pattern_eth_ipv4_gtpu_ipv6_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_ipv6_tcp},
+       {iavf_pattern_eth_ipv6_gtpu_ipv4, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_ipv4},
+       {iavf_pattern_eth_ipv6_gtpu_ipv4_udp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_ipv4_udp},
+       {iavf_pattern_eth_ipv6_gtpu_ipv4_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_ipv4_tcp},
+       {iavf_pattern_eth_ipv6_gtpu_ipv6, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_ipv6},
+       {iavf_pattern_eth_ipv6_gtpu_ipv6_udp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_ipv6_udp},
+       {iavf_pattern_eth_ipv6_gtpu_ipv6_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_ipv6_tcp},
        {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_ipv4_udp},
        {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE,
                                        &phint_eth_ipv4_gtpu_eh_ipv4_tcp},
+       {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_ipv6_udp},
+       {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_gtpu_eh_ipv6_tcp},
+       {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_ipv4_udp},
+       {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_eh_ipv4_tcp},
+       {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_ipv6_udp},
+       {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_gtpu_eh_ipv6_tcp},
        {iavf_pattern_eth_ipv4_esp, IAVF_INSET_NONE, &phint_eth_ipv4_esp},
+       {iavf_pattern_eth_ipv4_udp_esp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv4_udp_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},
@@ -173,6 +268,8 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
        {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_udp_esp, IAVF_INSET_NONE,
+                                       &phint_eth_ipv6_udp_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},
@@ -348,10 +445,18 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } }
 
+#define proto_hint_gtpu_ip_teid { \
+       VIRTCHNL_PROTO_HDR_GTPU_IP, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_GTPU_IP_TEID), {BUFF_NOUSED } }
+
 #define proto_hint_gtpu_eh_only { \
        VIRTCHNL_PROTO_HDR_GTPU_EH, \
        FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
 
+#define proto_hint_gtpu_ip_only { \
+       VIRTCHNL_PROTO_HDR_GTPU_IP, \
+       FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
+
 #define proto_hint_gtpu_up_only { \
        VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_UP, \
        FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } }
@@ -490,6 +595,51 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4 = {
        TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv4 }
 };
 
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
+       proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
+       proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_only = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
+       proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
+       proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
+       proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_only = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
+       proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
+       proto_hint_sctp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
+       proto_hint_sctp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_only = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
+       proto_hint_sctp_only }
+};
+
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_port = {
        TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
        proto_hint_udp_src_port }
@@ -620,322 +770,1001 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = {
        proto_hint_udp_only, proto_hint_esp }
 };
 
-/* GTPU EH */
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
-};
+/* IPv4 GTPU IP */
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_src }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_dst }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4 }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv4_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_prot, proto_hint_udp}
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4_prot, proto_hint_tcp}
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv4_prot, proto_hint_tcp_only }
 };
 
-/* GTPU UP */
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_ipv4_src }
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_ipv4_dst }
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_ipv4 }
-};
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_prot, proto_hint_udp}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
        proto_hint_ipv4_prot, proto_hint_tcp}
 };
 
-/* GTPU DWN */
+struct virtchnl_proto_hdrs hdrs_hint_teid_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_teid}
+};
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
+/* IPv6 GTPU IP */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
+               proto_hint_ipv6_src }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
+               proto_hint_ipv6_dst }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_ip_only,
+               proto_hint_ipv6 }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_src }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_dst }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_prot, proto_hint_udp}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
-       proto_hint_ipv4_prot, proto_hint_tcp}
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
 };
 
-/* IPV6 */
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
+};
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6 = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_src,
-       proto_hint_ipv6_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_udp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
-       proto_hint_ipv6_only, proto_hint_udp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_tcp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
-       proto_hint_ipv6_only, proto_hint_tcp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_sctp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
-       proto_hint_ipv6_only, proto_hint_sctp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_prot, proto_hint_udp}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6 = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_dst,
-       proto_hint_ipv6_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_ip = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_ip_only,
+       proto_hint_ipv6_prot, proto_hint_tcp}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_udp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
-       proto_hint_ipv6_only, proto_hint_udp_only }
+/* IPv4 GTPU EH */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_tcp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
-       proto_hint_ipv6_only, proto_hint_tcp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_sctp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
-       proto_hint_ipv6_only, proto_hint_sctp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_prot, proto_hint_udp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6 = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth,
-       proto_hint_ipv6_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_udp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
-       proto_hint_ipv6_only, proto_hint_udp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_tcp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
-       proto_hint_ipv6_only, proto_hint_tcp_only }
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4 }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_prot, proto_hint_udp}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_prot, proto_hint_tcp}
+};
+
+/* IPv6 GTPU EH */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6 }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_prot, proto_hint_udp}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv6_prot, proto_hint_tcp}
+};
+
+/* IPv4 GTPU UP */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4 }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_prot, proto_hint_udp}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv4_prot, proto_hint_tcp}
+};
+
+/* IPv6 GTPU UP */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6 }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_prot, proto_hint_udp}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_up = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only,
+       proto_hint_ipv6_prot, proto_hint_tcp}
+};
+
+/* IPv4 GTPU DWN */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_only_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_only_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_only_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4 }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_prot, proto_hint_udp}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv4_prot, proto_hint_tcp}
+};
+
+/* IPv6 GTPU DWN */
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_prot, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_prot, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_only_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6 }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_prot, proto_hint_udp}
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_dwn = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only,
+       proto_hint_ipv6_prot, proto_hint_tcp}
+};
+
+/* IPV6 */
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6 = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_src,
+       proto_hint_ipv6_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
+       proto_hint_ipv6_only, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
+       proto_hint_ipv6_only, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv6_sctp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_src,
+       proto_hint_ipv6_only, proto_hint_sctp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6 = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_dst,
+       proto_hint_ipv6_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
+       proto_hint_ipv6_only, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
+       proto_hint_ipv6_only, proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv6_sctp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth_dst,
+       proto_hint_ipv6_only, proto_hint_sctp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6 = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth,
+       proto_hint_ipv6_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
+       proto_hint_ipv6_only, proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
+       proto_hint_ipv6_only, proto_hint_tcp_only }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_sctp = {
@@ -995,6 +1824,51 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv6 = {
        TUNNEL_LEVEL_OUTER, PROTO_COUNT_ONE, {proto_hint_ipv6 }
 };
 
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
+       proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
+       proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_only = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
+       proto_hint_udp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
+       proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
+       proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_only = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
+       proto_hint_tcp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
+       proto_hint_sctp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
+       proto_hint_sctp_only }
+};
+
+struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_only = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
+       proto_hint_sctp_only }
+};
+
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_port = {
        TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
        proto_hint_udp_src_port }
@@ -1177,13 +2051,13 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
        {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_udp_dst_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src, IAVF_PHINT_IPV4_UDP},
+               &hdrs_hint_ipv4_src_udp, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_dst_udp_src_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_udp_dst_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst, IAVF_PHINT_IPV4_UDP},
+               &hdrs_hint_ipv4_dst_udp, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_port, IAVF_PHINT_IPV4_UDP},
@@ -1191,7 +2065,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_udp_dst_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src,
+               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src_udp,
                IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
@@ -1200,7 +2074,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_udp_dst_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
-               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst,
+               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst_udp,
                IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_port, IAVF_PHINT_IPV4_UDP},
@@ -1228,13 +2102,13 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
        {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src, IAVF_PHINT_IPV4_TCP},
+               &hdrs_hint_ipv4_src_tcp, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_dst_tcp_src_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst, IAVF_PHINT_IPV4_TCP},
+               &hdrs_hint_ipv4_dst_tcp, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_port, IAVF_PHINT_IPV4_TCP},
@@ -1242,7 +2116,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src,
+               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src_tcp,
                IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
@@ -1251,7 +2125,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
-               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst,
+               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst_tcp,
                IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_port, IAVF_PHINT_IPV4_TCP},
@@ -1275,13 +2149,13 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
        {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src, IAVF_PHINT_IPV4_SCTP},
+               &hdrs_hint_ipv4_src_sctp, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_dst_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst, IAVF_PHINT_IPV4_SCTP},
+               &hdrs_hint_ipv4_dst_sctp, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_NONFRAG_IPV4_SCTP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
@@ -1289,7 +2163,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_NONFRAG_IPV4_SCTP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src,
+               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv4_src_sctp,
                IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_NONFRAG_IPV4_SCTP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
@@ -1298,7 +2172,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_NONFRAG_IPV4_SCTP |
-               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst,
+               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv4_dst_sctp,
                IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
@@ -1345,13 +2219,13 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
        {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_src_udp_dst_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv6_src, IAVF_PHINT_IPV6_UDP},
+               &hdrs_hint_ipv6_src_udp, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_dst_udp_src_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_dst_udp_dst_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6_UDP},
+               &hdrs_hint_ipv6_dst_udp, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_NONFRAG_IPV6_UDP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_src_udp_src_port, IAVF_PHINT_IPV6_UDP},
@@ -1359,7 +2233,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_src_udp_dst_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_NONFRAG_IPV6_UDP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src,
+               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src_udp,
                IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_NONFRAG_IPV6_UDP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
@@ -1368,7 +2242,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_dst_udp_dst_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_NONFRAG_IPV6_UDP |
-               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst,
+               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst_udp,
                IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_udp_src_port, IAVF_PHINT_IPV6_UDP},
@@ -1396,13 +2270,13 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
        {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_src_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv6_src, IAVF_PHINT_IPV6_TCP},
+               &hdrs_hint_ipv6_src_tcp, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_dst_tcp_src_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_dst_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6_TCP},
+               &hdrs_hint_ipv6_dst_tcp, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_NONFRAG_IPV6_TCP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_src_tcp_src_port, IAVF_PHINT_IPV6_TCP},
@@ -1410,7 +2284,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_src_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_NONFRAG_IPV6_TCP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src,
+               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src_tcp,
                IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_NONFRAG_IPV6_TCP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
@@ -1419,7 +2293,7 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_dst_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_NONFRAG_IPV6_TCP |
-               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst,
+               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst_tcp,
                IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_tcp_src_port, IAVF_PHINT_IPV6_TCP},
@@ -1443,63 +2317,474 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
        {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_src_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv6_src, IAVF_PHINT_IPV6_SCTP},
+               &hdrs_hint_ipv6_src_sctp, IAVF_PHINT_IPV6_SCTP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_dst_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
        {ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv6_dst_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6_SCTP},
+               &hdrs_hint_ipv6_dst_sctp, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src_sctp,
+               IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
        {ETH_RSS_NONFRAG_IPV6_SCTP |
+               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst_sctp,
+               IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_NONFRAG_IPV6_SCTP,
+               &hdrs_hint_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_S_VLAN,
+               &hdrs_hint_svlan_ipv6, IAVF_PHINT_IPV6},
+       {ETH_RSS_S_VLAN,
+               &hdrs_hint_svlan_ipv6_udp, IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_S_VLAN,
+               &hdrs_hint_svlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_S_VLAN,
+               &hdrs_hint_svlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
+       {ETH_RSS_C_VLAN,
+               &hdrs_hint_cvlan_ipv6, IAVF_PHINT_IPV6},
+       {ETH_RSS_C_VLAN,
+               &hdrs_hint_cvlan_ipv6_udp, IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_C_VLAN,
+               &hdrs_hint_cvlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_C_VLAN,
+               &hdrs_hint_cvlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
+};
+
+struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
+       /* GTPU */
+       /* GTPU IP */
+       /* IPv4 GTPU IP IPv4*/
+       {ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_GTPU,
+               &hdrs_hint_teid_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4},
+       /* IPv4 GTPU IP IPv6*/
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
+       {ETH_RSS_GTPU,
+               &hdrs_hint_teid_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6},
+       /* IPv6 GTPU IP IPv4*/
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
+       {ETH_RSS_GTPU,
+               &hdrs_hint_teid_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4},
+       /* IPv6 GTPU IP IPv6*/
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
+       {ETH_RSS_GTPU,
+               &hdrs_hint_teid_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6},
+       /* IPv4 GTPU IP IPv4 UDP */
+       {ETH_RSS_L3_SRC_ONLY |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L3_SRC_ONLY |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L3_DST_ONLY |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L3_DST_ONLY |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       /* IPv4 GTPU IP IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       /* IPv6 GTPU IP IPv4 UDP */
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_UDP},
+       /* IPv6 GTPU IP IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_UDP},
+       /* IPv4 GTPU IP IPv4 TCP */
+       {ETH_RSS_L3_SRC_ONLY |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L3_SRC_ONLY |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L3_DST_ONLY |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L3_DST_ONLY |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP,
+               &hdrs_hint_ipv4_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       /* IPv4 GTPU IP IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_ip,
+               IAVF_PHINT_IPV4_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       /* IPv6 GTPU IP IPv4 TCP */
+       {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv6_src_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               &hdrs_hint_ipv4_src_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv6_src_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src,
-               IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               &hdrs_hint_ipv4_src_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv6_dst_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP |
+               &hdrs_hint_ipv4_dst_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv6_dst_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP |
-               ETH_RSS_L3_DST_ONLY, &hdrs_hint_ipv6_dst,
-               IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv6_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv6_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv6_sctp_src_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP | ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv6_sctp_dst_port, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_NONFRAG_IPV6_SCTP,
-               &hdrs_hint_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_S_VLAN,
-               &hdrs_hint_svlan_ipv6, IAVF_PHINT_IPV6},
-       {ETH_RSS_S_VLAN,
-               &hdrs_hint_svlan_ipv6_udp, IAVF_PHINT_IPV6_UDP},
-       {ETH_RSS_S_VLAN,
-               &hdrs_hint_svlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
-       {ETH_RSS_S_VLAN,
-               &hdrs_hint_svlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
-       {ETH_RSS_C_VLAN,
-               &hdrs_hint_cvlan_ipv6, IAVF_PHINT_IPV6},
-       {ETH_RSS_C_VLAN,
-               &hdrs_hint_cvlan_ipv6_udp, IAVF_PHINT_IPV6_UDP},
-       {ETH_RSS_C_VLAN,
-               &hdrs_hint_cvlan_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
-       {ETH_RSS_C_VLAN,
-               &hdrs_hint_cvlan_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
-};
-
-struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
-       /* GTPU */
+               &hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP,
+               &hdrs_hint_ipv4_tcp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV4_TCP},
+       /* IPv6 GTPU IP IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_ip,
+               IAVF_PHINT_IPV6_GTPU_IP | IAVF_PHINT_IPV6_TCP},
        /* GTPU EH */
-       /* Inner IPV4 */
+       /* IPv4 GTPU EH IPv4 */
        {ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
@@ -1517,7 +2802,43 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_IPV4,
                &hdrs_hint_ipv4_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
-       /* Inner IPV4->UDP */
+       /* IPv4 GTPU EH IPv6 */
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6},
+       /* IPv6 GTPU EH IPv4 */
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
+       /* IPv6 GTPU EH IPv6 */
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6},
+       /* IPv4 GTPU EH IPv4 UDP */
        {ETH_RSS_L3_SRC_ONLY |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_gtpu_eh,
@@ -1527,7 +2848,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_src_udp_dst_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
+               &hdrs_hint_ipv4_src_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_gtpu_eh,
@@ -1541,7 +2862,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_dst_udp_dst_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
+               &hdrs_hint_ipv4_dst_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_udp_dst_gtpu_eh,
@@ -1556,7 +2877,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
+               &hdrs_hint_ipv4_src_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L4_SRC_ONLY,
@@ -1572,7 +2893,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
+               &hdrs_hint_ipv4_dst_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L4_DST_ONLY,
@@ -1581,7 +2902,115 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_NONFRAG_IPV4_UDP,
                &hdrs_hint_ipv4_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       /* Inner IPV4->TCP */
+       /* IPv4 GTPU EH IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       /* IPv6 GTPU EH IPv4 UDP */
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       /* IPv6 GTPU EH IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_UDP},
+       /* IPv4 GTPU EH IPv4 TCP */
        {ETH_RSS_L3_SRC_ONLY |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_gtpu_eh,
@@ -1591,7 +3020,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_src_tcp_dst_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
+               &hdrs_hint_ipv4_src_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_gtpu_eh,
@@ -1605,7 +3034,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_tcp_dst_gtpu_eh,
@@ -1620,7 +3049,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
+               &hdrs_hint_ipv4_src_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L4_SRC_ONLY,
@@ -1636,7 +3065,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L4_DST_ONLY,
@@ -1645,8 +3074,116 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_NONFRAG_IPV4_TCP,
                &hdrs_hint_ipv4_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       /* IPv4 GTPU EH IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       /* IPv6 GTPU EH IPv4 TCP */
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP,
+               &hdrs_hint_ipv4_tcp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       /* IPv6 GTPU EH IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_eh,
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV6_TCP},
        /* GTPU EH UP */
-       /* Inner IPV4 */
+       /* IPv4 GTPU EH UP IPv4 */
        {ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
@@ -1664,7 +3201,43 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_IPV4,
                &hdrs_hint_ipv4_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
-       /* Inner IPV4->UDP */
+       /* IPv4 GTPU EH UP IPv6 */
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
+       /* IPv6 GTPU EH UP IPv4 */
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+       /* IPv6 GTPU EH UP IPv6 */
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6},
+       /* IPv4 GTPU EH UP IPv4 UDP */
        {ETH_RSS_L3_SRC_ONLY |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_gtpu_up,
@@ -1674,7 +3247,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_src_udp_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
+               &hdrs_hint_ipv4_src_udp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_gtpu_up,
@@ -1688,47 +3261,155 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_dst_udp_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
+               &hdrs_hint_ipv4_dst_udp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_udp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_udp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L4_DST_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_udp_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       /* IPv4 GTPU EH UP IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       /* IPv6 GTPU EH UP IPv4 UDP */
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_src_udp_dst_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               &hdrs_hint_ipv4_src_udp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_dst_udp_src_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_dst_udp_dst_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               &hdrs_hint_ipv4_dst_udp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_udp_dst_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP,
                &hdrs_hint_ipv4_udp_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
-       /* Inner IPV4->TCP */
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_UDP},
+       /* IPv6 GTPU EH UP IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_UDP},
+       /* IPv4 GTPU EH UP IPv4 TCP */
        {ETH_RSS_L3_SRC_ONLY |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_gtpu_up,
@@ -1738,7 +3419,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_src_tcp_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
+               &hdrs_hint_ipv4_src_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_gtpu_up,
@@ -1752,7 +3433,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_dst_tcp_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_tcp_dst_gtpu_up,
@@ -1767,7 +3448,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
+               &hdrs_hint_ipv4_src_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L4_SRC_ONLY,
@@ -1783,7 +3464,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L4_DST_ONLY,
@@ -1792,8 +3473,116 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_NONFRAG_IPV4_TCP,
                &hdrs_hint_ipv4_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       /* IPv4 GTPU EH UP IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       /* IPv6 GTPU EH UP IPv4 TCP */
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP,
+               &hdrs_hint_ipv4_tcp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       /* IPv6 GTPU EH UP IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_up,
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV6_TCP},
        /* GTPU EH DWN */
-       /* Inner IPV4 */
+       /* IPv4 GTPU EH DWN IPv4 */
        {ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
@@ -1811,7 +3600,43 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_IPV4,
                &hdrs_hint_ipv4_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
-       /* Inner IPV4->UDP */
+       /* IPv4 GTPU EH DWN IPv6 */
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
+       /* IPv6 GTPU EH DWN IPv4 */
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+       /* IPv6 GTPU EH DWN IPv6 */
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6 |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
+       {ETH_RSS_IPV6,
+               &hdrs_hint_ipv6_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6},
+       /* IPv4 GTPU EH DWN IPv4 UDP */
        {ETH_RSS_L3_SRC_ONLY |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_gtpu_dwn,
@@ -1821,7 +3646,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_src_udp_dst_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
+               &hdrs_hint_ipv4_src_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_gtpu_dwn,
@@ -1835,7 +3660,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
+               &hdrs_hint_ipv4_dst_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_udp_dst_gtpu_dwn,
@@ -1850,7 +3675,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
+               &hdrs_hint_ipv4_src_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L4_SRC_ONLY,
@@ -1866,7 +3691,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
+               &hdrs_hint_ipv4_dst_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L4_DST_ONLY,
@@ -1875,7 +3700,115 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_NONFRAG_IPV4_UDP,
                &hdrs_hint_ipv4_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       /* Inner IPV4->TCP */
+       /* IPv4 GTPU EH DWN IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       /* IPv6 GTPU EH DWN IPv4 UDP */
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       /* IPv6 GTPU EH DWN IPv6 UDP */
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_udp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_udp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_udp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_udp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       {ETH_RSS_NONFRAG_IPV6_UDP,
+               &hdrs_hint_ipv6_udp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_UDP},
+       /* IPv4 GTPU EH DWN IPv4 TCP */
        {ETH_RSS_L3_SRC_ONLY |
                ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_gtpu_dwn,
@@ -1885,7 +3818,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
+               &hdrs_hint_ipv4_src_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_gtpu_dwn,
@@ -1899,7 +3832,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                &hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_tcp_dst_gtpu_dwn,
@@ -1914,7 +3847,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
+               &hdrs_hint_ipv4_src_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L4_SRC_ONLY,
@@ -1930,7 +3863,7 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L4_DST_ONLY,
@@ -1939,6 +3872,114 @@ struct iavf_hash_match_type iavf_gtpu_hash_map_list[] = {
        {ETH_RSS_NONFRAG_IPV4_TCP,
                &hdrs_hint_ipv4_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       /* IPv4 GTPU EH DWN IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       /* IPv6 GTPU EH DWN IPv4 TCP */
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_src_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv4_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {ETH_RSS_NONFRAG_IPV4_TCP,
+               &hdrs_hint_ipv4_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       /* IPv6 GTPU EH DWN IPv6 TCP */
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_src_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv6_src_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_SRC_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_src_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY | ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv6_dst_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP |
+               ETH_RSS_L4_DST_ONLY,
+               &hdrs_hint_ipv6_tcp_dst_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
+       {ETH_RSS_NONFRAG_IPV6_TCP,
+               &hdrs_hint_ipv6_tcp_gtpu_dwn,
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV6_TCP},
 };
 
 struct virtchnl_proto_hdrs *iavf_hash_default_hdrs[] = {
@@ -1950,6 +3991,18 @@ struct virtchnl_proto_hdrs *iavf_hash_default_hdrs[] = {
        &hdrs_hint_ipv6_udp,
        &hdrs_hint_ipv6_tcp,
        &hdrs_hint_ipv6_sctp,
+       &hdrs_hint_ipv4_gtpu_ip,
+       &hdrs_hint_ipv4_udp_gtpu_ip,
+       &hdrs_hint_ipv4_tcp_gtpu_ip,
+       &hdrs_hint_ipv4_gtpu_eh,
+       &hdrs_hint_ipv4_udp_gtpu_eh,
+       &hdrs_hint_ipv4_tcp_gtpu_eh,
+       &hdrs_hint_ipv6_gtpu_ip,
+       &hdrs_hint_ipv6_udp_gtpu_ip,
+       &hdrs_hint_ipv6_tcp_gtpu_ip,
+       &hdrs_hint_ipv6_gtpu_eh,
+       &hdrs_hint_ipv6_udp_gtpu_eh,
+       &hdrs_hint_ipv6_tcp_gtpu_eh,
 };
 
 static struct iavf_flow_engine iavf_hash_engine = {
@@ -2042,6 +4095,7 @@ iavf_hash_parse_pattern(struct iavf_pattern_match_item *pattern_match_item,
 {
        const struct rte_flow_item *item = pattern;
        const struct rte_flow_item_gtp_psc *psc;
+       u8 outer_ipv6 = 0;
 
        for (item = pattern; item->type != RTE_FLOW_ITEM_TYPE_END; item++) {
                if (item->last) {
@@ -2052,14 +4106,31 @@ iavf_hash_parse_pattern(struct iavf_pattern_match_item *pattern_match_item,
                }
 
                switch (item->type) {
+               case RTE_FLOW_ITEM_TYPE_IPV6:
+                       outer_ipv6 = 1;
+                       break;
+               case RTE_FLOW_ITEM_TYPE_GTPU:
+                       *phint |= (outer_ipv6) ?
+                               IAVF_PHINT_IPV6_GTPU_IP :
+                               IAVF_PHINT_IPV4_GTPU_IP;
+                       break;
                case RTE_FLOW_ITEM_TYPE_GTP_PSC:
                        psc = item->spec;
+                       *phint &= (outer_ipv6) ?
+                               ~IAVF_PHINT_IPV6_GTPU_IP :
+                               ~IAVF_PHINT_IPV4_GTPU_IP;
                        if (!psc)
-                               *phint |= IAVF_PHINT_IPV4_GTPU_EH;
+                               *phint |= (outer_ipv6) ?
+                                       IAVF_PHINT_IPV6_GTPU_EH :
+                                       IAVF_PHINT_IPV4_GTPU_EH;
                        else if (psc->pdu_type == IAVF_GTPU_EH_UPLINK)
-                               *phint |= IAVF_PHINT_IPV4_GTPU_EH_UPLINK;
+                               *phint |= (outer_ipv6) ?
+                                       IAVF_PHINT_IPV6_GTPU_EH_UPLINK :
+                                       IAVF_PHINT_IPV4_GTPU_EH_UPLINK;
                        else if (psc->pdu_type == IAVF_GTPU_EH_DWNLINK)
-                               *phint |= IAVF_PHINT_IPV4_GTPU_EH_DWNLINK;
+                               *phint |= (outer_ipv6) ?
+                                       IAVF_PHINT_IPV6_GTPU_EH_DWNLINK :
+                                       IAVF_PHINT_IPV4_GTPU_EH_DWNLINK;
                        break;
                default:
                        break;
@@ -2101,6 +4172,9 @@ iavf_hash_parse_action(const struct rte_flow_action actions[],
                            RTE_ETH_HASH_FUNCTION_SIMPLE_XOR){
                                rss_meta->rss_algorithm =
                                        VIRTCHNL_RSS_ALG_XOR_ASYMMETRIC;
+                               return rte_flow_error_set(error, ENOTSUP,
+                                       RTE_FLOW_ERROR_TYPE_ACTION, action,
+                                       "function simple_xor is not supported");
                        } else if (rss->func ==
                                   RTE_ETH_HASH_FUNCTION_SYMMETRIC_TOEPLITZ) {
                                rss_meta->rss_algorithm =
@@ -2131,9 +4205,14 @@ iavf_hash_parse_action(const struct rte_flow_action actions[],
                         */
                        rss_type = rte_eth_rss_hf_refine(rss_type);
 
-                       if ((pattern_hint & IAVF_PHINT_IPV4_GTPU_EH) ||
+                       if ((pattern_hint & IAVF_PHINT_IPV4_GTPU_IP) ||
+                           (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH) ||
                            (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH_UPLINK) ||
-                           (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH_DWNLINK)) {
+                           (pattern_hint & IAVF_PHINT_IPV4_GTPU_EH_DWNLINK) ||
+                           (pattern_hint & IAVF_PHINT_IPV6_GTPU_IP) ||
+                           (pattern_hint & IAVF_PHINT_IPV6_GTPU_EH) ||
+                           (pattern_hint & IAVF_PHINT_IPV6_GTPU_EH_UPLINK) ||
+                           (pattern_hint & IAVF_PHINT_IPV6_GTPU_EH_DWNLINK)) {
                                hash_map_list = iavf_gtpu_hash_map_list;
                                mlist_len = RTE_DIM(iavf_gtpu_hash_map_list);
                        } else {