net/iavf: delete unsupported RSS types
[dpdk.git] / drivers / net / iavf / iavf_hash.c
index 3ef97e9..e2eebd2 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},
@@ -240,6 +337,28 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED } }
 
+#define proto_hint_ipv4_src_prot { \
+       VIRTCHNL_PROTO_HDR_IPV4, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), \
+       {BUFF_NOUSED } }
+
+#define proto_hint_ipv4_dst_prot { \
+       VIRTCHNL_PROTO_HDR_IPV4, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), \
+       {BUFF_NOUSED } }
+
+#define proto_hint_ipv4_only_prot { \
+       VIRTCHNL_PROTO_HDR_IPV4, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), {BUFF_NOUSED } }
+
+#define proto_hint_ipv4_prot { \
+       VIRTCHNL_PROTO_HDR_IPV4, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), {BUFF_NOUSED } }
+
 #define proto_hint_udp_src_port { \
        VIRTCHNL_PROTO_HDR_UDP, \
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT), {BUFF_NOUSED } }
@@ -304,10 +423,40 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = {
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \
        FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED } }
 
+#define proto_hint_ipv6_src_prot { \
+       VIRTCHNL_PROTO_HDR_IPV6, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), \
+       {BUFF_NOUSED } }
+
+#define proto_hint_ipv6_dst_prot { \
+       VIRTCHNL_PROTO_HDR_IPV6, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), \
+       {BUFF_NOUSED } }
+
+#define proto_hint_ipv6_only_prot { \
+       VIRTCHNL_PROTO_HDR_IPV6, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } }
+
+#define proto_hint_ipv6_prot { \
+       VIRTCHNL_PROTO_HDR_IPV6, \
+       FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \
+       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 } }
@@ -446,73 +595,118 @@ 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,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
        proto_hint_udp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
        proto_hint_udp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
        proto_hint_udp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
        proto_hint_udp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
        proto_hint_udp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
        proto_hint_udp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
        proto_hint_udp }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
        proto_hint_tcp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot,
        proto_hint_tcp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
        proto_hint_tcp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot,
        proto_hint_tcp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
        proto_hint_tcp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot,
        proto_hint_tcp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot,
        proto_hint_tcp }
 };
 
@@ -576,327 +770,1006 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = {
        proto_hint_udp_only, proto_hint_esp }
 };
 
-/* GTPU EH */
+/* IPv4 GTPU IP */
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp_src_port}
+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_udp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp_dst_port}
+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_tcp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp_src_port}
+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_tcp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp_dst_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_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_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_src_udp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp_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_src_udp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp_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_src_tcp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp_src_port}
+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_src_tcp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp_dst_port}
+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 }
 };
 
-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_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_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_ipv4 }
+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_dst_udp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp_src_port}
+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_dst_udp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp_dst_port}
+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_dst_tcp_src_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp_src_port}
+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_dst_tcp_dst_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp_dst_port}
+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_udp_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_udp}
+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_tcp_gtpu_eh = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
-       proto_hint_tcp}
+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}
 };
 
-/* GTPU UP */
-
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp_src_port}
+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_udp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp_dst_port}
+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_tcp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp_src_port}
+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_tcp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp_dst_port}
+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_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_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_src_udp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp_src_port}
+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}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp_dst_port}
+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_src_tcp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp_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_src_tcp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp_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_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_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_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_ipv4 }
+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_dst_udp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp_src_port}
+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_dst_udp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp_dst_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_dst_tcp_src_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp_src_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_dst_tcp_dst_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp_dst_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_udp_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_udp}
+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_tcp_gtpu_up = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only,
-       proto_hint_tcp}
+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}
 };
 
-/* GTPU DWN */
+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_udp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       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_udp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       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_tcp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       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_tcp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       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_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_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_src_udp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_udp_src_port}
+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}
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_udp_dst_port}
+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_ipv4_src_tcp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_tcp_src_port}
+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_ipv4_src_tcp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_tcp_dst_port}
+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_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_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_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_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_ipv4_dst_udp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_udp_src_port}
+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_ipv4_dst_udp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_udp_dst_port}
+/* 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_ipv4_dst_tcp_src_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_tcp_src_port}
+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_ipv4_dst_tcp_dst_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_tcp_dst_port}
+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_ipv4_udp_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_udp}
+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_ipv4_tcp_gtpu_dwn = {
-       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only,
-       proto_hint_tcp}
+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 }
 };
 
-/* IPV6 */
+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_eth_src_ipv6 = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_src,
-       proto_hint_ipv6_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_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_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_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_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_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_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_eth_dst_ipv6 = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth_dst,
-       proto_hint_ipv6_only }
+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_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_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_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_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_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_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_eth_ipv6 = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_eth,
-       proto_hint_ipv6_only }
+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_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_gtpu_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4_dst }
 };
 
-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_eh = {
+       TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only,
+       proto_hint_ipv4 }
 };
 
-struct virtchnl_proto_hdrs hdrs_hint_eth_ipv6_sctp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
-       proto_hint_ipv6_only, proto_hint_sctp_only }
+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 = {
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_THREE, {proto_hint_eth,
+       proto_hint_ipv6_only, proto_hint_sctp_only }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6 = {
@@ -951,73 +1824,118 @@ 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,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
        proto_hint_udp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
        proto_hint_udp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
        proto_hint_udp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
        proto_hint_udp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
        proto_hint_udp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
        proto_hint_udp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
        proto_hint_udp }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
        proto_hint_tcp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot,
        proto_hint_tcp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
        proto_hint_tcp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot,
        proto_hint_tcp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
        proto_hint_tcp_src_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_port = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot,
        proto_hint_tcp_dst_port }
 };
 
 struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp = {
-       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6,
+       TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot,
        proto_hint_tcp }
 };
 
@@ -1089,10 +2007,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv4, IAVF_PHINT_IPV4},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv4, IAVF_PHINT_IPV4},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src, IAVF_PHINT_IPV4},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst, IAVF_PHINT_IPV4},
        {ETH_RSS_IPV4 | ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src, IAVF_PHINT_IPV4},
        {ETH_RSS_IPV4 | ETH_RSS_L3_DST_ONLY,
@@ -1128,18 +2042,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv4_udp, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv4_udp, IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv4_src_udp_src_port, IAVF_PHINT_IPV4_UDP},
-       {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},
-       {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},
        {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},
@@ -1147,7 +2049,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,
@@ -1156,12 +2058,8 @@ 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},
-       {ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv4_udp_dst_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_port, IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP | ETH_RSS_L4_DST_ONLY,
@@ -1179,18 +2077,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv4_tcp, IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv4_src_tcp_src_port, IAVF_PHINT_IPV4_TCP},
-       {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},
-       {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},
        {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},
@@ -1198,7 +2084,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,
@@ -1207,12 +2093,8 @@ 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},
-       {ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv4_tcp_dst_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_port, IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP | ETH_RSS_L4_DST_ONLY,
@@ -1226,18 +2108,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv4_sctp, IAVF_PHINT_IPV4_SCTP},
-       {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv4_src_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
-       {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},
-       {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},
        {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},
@@ -1245,7 +2115,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,
@@ -1254,12 +2124,8 @@ 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},
-       {ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv4_sctp_dst_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_sctp_src_port, IAVF_PHINT_IPV4_SCTP},
        {ETH_RSS_NONFRAG_IPV4_SCTP | ETH_RSS_L4_DST_ONLY,
@@ -1273,10 +2139,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv6, IAVF_PHINT_IPV6},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv6, IAVF_PHINT_IPV6},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv6_src, IAVF_PHINT_IPV6},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6},
        {ETH_RSS_IPV6 | ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv6_src, IAVF_PHINT_IPV6},
        {ETH_RSS_IPV6 | ETH_RSS_L3_DST_ONLY,
@@ -1296,18 +2158,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv6_udp, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv6_udp, IAVF_PHINT_IPV6_UDP},
-       {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv6_src_udp_src_port, IAVF_PHINT_IPV6_UDP},
-       {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},
-       {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},
        {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},
@@ -1315,7 +2165,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,
@@ -1324,12 +2174,8 @@ 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},
-       {ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv6_udp_dst_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_udp_src_port, IAVF_PHINT_IPV6_UDP},
        {ETH_RSS_NONFRAG_IPV6_UDP | ETH_RSS_L4_DST_ONLY,
@@ -1347,18 +2193,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv6_tcp, IAVF_PHINT_IPV6_TCP},
-       {ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
-               &hdrs_hint_ipv6_src_tcp_src_port, IAVF_PHINT_IPV6_TCP},
-       {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},
-       {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},
        {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},
@@ -1366,7 +2200,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,
@@ -1375,12 +2209,8 @@ 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},
-       {ETH_RSS_L4_DST_ONLY,
-               &hdrs_hint_ipv6_tcp_dst_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv6_tcp_src_port, IAVF_PHINT_IPV6_TCP},
        {ETH_RSS_NONFRAG_IPV6_TCP | ETH_RSS_L4_DST_ONLY,
@@ -1394,18 +2224,6 @@ struct iavf_hash_match_type iavf_hash_map_list[] = {
                &hdrs_hint_eth_dst_ipv6_sctp, IAVF_PHINT_IPV6_SCTP},
        {ETH_RSS_ETH,
                &hdrs_hint_eth_ipv6_sctp, IAVF_PHINT_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_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},
-       {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},
        {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},
@@ -1413,488 +2231,1403 @@ 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_NONFRAG_IPV6_SCTP |
-               ETH_RSS_L3_SRC_ONLY, &hdrs_hint_ipv6_src,
+               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 |
+               &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_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_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_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_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_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_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_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_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_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_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 */
-       {ETH_RSS_L3_SRC_ONLY,
+       /* IPv4 GTPU EH IPv4 */
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
-       {ETH_RSS_L3_DST_ONLY,
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
                &hdrs_hint_ipv4_dst_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
+       /* 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_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
        {ETH_RSS_IPV4 |
                ETH_RSS_L3_DST_ONLY,
                &hdrs_hint_ipv4_dst_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4},
        {ETH_RSS_IPV4,
                &hdrs_hint_ipv4_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4},
-       /* Inner IPV4->UDP */
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+               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_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L4_SRC_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | 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_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_eh,
+               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+       /* 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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               &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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               &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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP,
                &hdrs_hint_ipv4_udp_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_UDP},
-       /* Inner IPV4->TCP */
-       {ETH_RSS_L3_SRC_ONLY |
+               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_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L4_SRC_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L4_DST_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_tcp_dst_gtpu_eh,
                IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+       {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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               &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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               &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_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP,
                &hdrs_hint_ipv4_tcp_gtpu_eh,
-               IAVF_PHINT_IPV4_GTPU_EH | IAVF_PHINT_IPV4_TCP},
+               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 */
-       {ETH_RSS_L3_SRC_ONLY,
+       /* IPv4 GTPU EH UP IPv4 */
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
-       {ETH_RSS_L3_DST_ONLY,
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
                &hdrs_hint_ipv4_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_up,
+               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+       /* 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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+               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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
        {ETH_RSS_IPV4,
                &hdrs_hint_ipv4_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4},
-       /* Inner IPV4->UDP */
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+               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_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_L3_SRC_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
+       {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_L4_SRC_ONLY,
+       {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_L3_DST_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+       {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_L3_DST_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
+       {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 */
-       {ETH_RSS_L3_SRC_ONLY |
+               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_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L4_SRC_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+       {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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L4_DST_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_tcp_dst_gtpu_up,
                IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+       {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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               &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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               &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_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP,
                &hdrs_hint_ipv4_tcp_gtpu_up,
-               IAVF_PHINT_IPV4_GTPU_EH_UPLINK | IAVF_PHINT_IPV4_TCP},
+               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 */
-       {ETH_RSS_L3_SRC_ONLY,
+       /* IPv4 GTPU EH DWN IPv4 */
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_SRC_ONLY,
                &hdrs_hint_ipv4_src_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
-       {ETH_RSS_L3_DST_ONLY,
+       {ETH_RSS_IPV4 |
+               ETH_RSS_L3_DST_ONLY,
                &hdrs_hint_ipv4_dst_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+       {ETH_RSS_IPV4,
+               &hdrs_hint_ipv4_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+       /* 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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
        {ETH_RSS_IPV4,
                &hdrs_hint_ipv4_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4},
-       /* Inner IPV4->UDP */
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+               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_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_udp_src_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L4_SRC_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_udp_src_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
+       {ETH_RSS_NONFRAG_IPV4_UDP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_udp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | 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_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       {ETH_RSS_NONFRAG_IPV4_UDP,
+               &hdrs_hint_ipv4_udp_gtpu_dwn,
+               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+       /* 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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               &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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               &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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
        {ETH_RSS_NONFRAG_IPV4_UDP,
                &hdrs_hint_ipv4_udp_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_UDP},
-       /* Inner IPV4->TCP */
-       {ETH_RSS_L3_SRC_ONLY |
+               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_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY | ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_src_tcp_src_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_SRC_ONLY,
+               &hdrs_hint_ipv4_src_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L4_SRC_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_SRC_ONLY,
                &hdrs_hint_ipv4_tcp_src_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_SRC_ONLY,
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY |
-               ETH_RSS_L4_DST_ONLY,
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L3_DST_ONLY,
+               &hdrs_hint_ipv4_dst_tcp_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
-       {ETH_RSS_L4_DST_ONLY,
+       {ETH_RSS_NONFRAG_IPV4_TCP |
+               ETH_RSS_L4_DST_ONLY,
                &hdrs_hint_ipv4_tcp_dst_gtpu_dwn,
                IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+       {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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_SRC_ONLY,
-               &hdrs_hint_ipv4_src_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               &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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP |
                ETH_RSS_L3_DST_ONLY,
-               &hdrs_hint_ipv4_dst_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               &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_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               IAVF_PHINT_IPV6_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
        {ETH_RSS_NONFRAG_IPV4_TCP,
                &hdrs_hint_ipv4_tcp_gtpu_dwn,
-               IAVF_PHINT_IPV4_GTPU_EH_DWNLINK | IAVF_PHINT_IPV4_TCP},
+               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[] = {
@@ -1906,6 +3639,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 = {
@@ -1998,6 +3743,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) {
@@ -2008,14 +3754,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;
@@ -2057,6 +3820,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 =
@@ -2087,9 +3853,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 {