net/ice: support RSS for IPv4 IPv6 mix of GTP

RSS for GTP with outer & inner ipv4 & ipv6 combination are supported
in this patch, so that we can process RSS based on inner 5 tuples or
3 tuples of all the cases below of GTP packets:
        1. ipv4 (outer) + ipv4 (inner)
        2. ipv4 (outer) + ipv6 (inner)
        3. ipv6 (outer) + ipv4 (inner)
        4. ipv6 (outer) + ipv6 (inner)

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
Acked-by: Qi Zhang <qi.z.zhang@intel.com>
This commit is contained in:
Junfeng Guo 2020-07-08 11:27:38 +08:00 committed by Ferruh Yigit
parent 8020b8123a
commit 610bc231d0
3 changed files with 444 additions and 1 deletions

View file

@ -1079,6 +1079,156 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[] = {
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv4 GTPU IPv6 */
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv6 GTPU IPv4 */
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv6 GTPU IPv6 */
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv4 GTPU EH IPv4 */
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[] = {
RTE_FLOW_ITEM_TYPE_ETH,
@ -1089,6 +1239,7 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[] = {
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
@ -1099,6 +1250,7 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[] = {
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
@ -1108,8 +1260,8 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[] = {
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
@ -1121,6 +1273,138 @@ enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = {
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv4 GTPU EH IPv6 */
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv6 GTPU EH IPv4 */
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/*IPv6 GTPU EH IPv6 */
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_udp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_tcp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_TCP,
RTE_FLOW_ITEM_TYPE_END,
};
enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_icmp[] = {
RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_UDP,
RTE_FLOW_ITEM_TYPE_GTPU,
RTE_FLOW_ITEM_TYPE_GTP_PSC,
RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ITEM_TYPE_ICMP,
RTE_FLOW_ITEM_TYPE_END,
};
/* PPPoE */
enum rte_flow_item_type pattern_eth_pppoed[] = {
RTE_FLOW_ITEM_TYPE_ETH,

View file

@ -371,6 +371,27 @@ extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh[];
/* IPv4 GTPU IPv4 */
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_udp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv4_icmp[];
/* IPv4 GTPU IPv6 */
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_udp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_ipv6_icmp[];
/* IPv6 GTPU IPv4 */
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_udp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv4_icmp[];
/* IPv6 GTPU IPv6 */
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_udp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_ipv6_icmp[];
/* IPv4 GTPU EH IPv4 */
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4[];
@ -378,6 +399,24 @@ extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_udp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv4_icmp[];
/* IPv4 GTPU EH IPv6 */
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_udp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv4_gtpu_eh_ipv6_icmp[];
/* IPv6 GTPU EH IPv4 */
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_udp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv4_icmp[];
/* IPv6 GTPU EH IPv6 */
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_udp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_tcp[];
extern enum rte_flow_item_type pattern_eth_ipv6_gtpu_eh_ipv6_icmp[];
/* PPPoE */
extern enum rte_flow_item_type pattern_eth_pppoed[];
extern enum rte_flow_item_type pattern_eth_vlan_pppoed[];

View file

@ -100,6 +100,50 @@ struct rss_type_match_hdr hint_eth_ipv4_gtpu_ipv4 = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV4};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_ipv4_udp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_UDP};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_ipv4_tcp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_TCP};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_ipv6 = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV6};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_ipv6_udp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_UDP};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_ipv6_tcp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_TCP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_ipv4 = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV4};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_ipv4_udp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_UDP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_ipv4_tcp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_TCP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_ipv6 = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV6};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_ipv6_udp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_UDP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_ipv6_tcp = {
ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_TCP};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_eh_ipv4 = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
@ -112,6 +156,42 @@ struct rss_type_match_hdr hint_eth_ipv4_gtpu_eh_ipv4_tcp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_TCP};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_eh_ipv6 = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV6};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_eh_ipv6_udp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_UDP};
struct rss_type_match_hdr hint_eth_ipv4_gtpu_eh_ipv6_tcp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_TCP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_eh_ipv4 = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV4};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_eh_ipv4_udp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_UDP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_eh_ipv4_tcp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV4_TCP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_eh_ipv6 = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
ETH_RSS_GTPU | ETH_RSS_IPV6};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_eh_ipv6_udp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_UDP};
struct rss_type_match_hdr hint_eth_ipv6_gtpu_eh_ipv6_tcp = {
ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_IPV6 |
ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP,
ETH_RSS_GTPU | ETH_RSS_NONFRAG_IPV6_TCP};
struct rss_type_match_hdr hint_eth_pppoes_ipv4 = {
ICE_FLOW_SEG_HDR_PPPOE | ICE_FLOW_SEG_HDR_IPV4 |
ICE_FLOW_SEG_HDR_IPV_OTHER,
@ -268,12 +348,52 @@ static struct ice_pattern_match_item ice_hash_pattern_list_comms[] = {
&hint_eth_ipv4_sctp},
{pattern_eth_ipv4_gtpu_ipv4, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_ipv4},
{pattern_eth_ipv4_gtpu_ipv4_udp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_ipv4_udp},
{pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_ipv4_tcp},
{pattern_eth_ipv4_gtpu_ipv6, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_ipv6},
{pattern_eth_ipv4_gtpu_ipv6_udp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_ipv6_udp},
{pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_ipv6_tcp},
{pattern_eth_ipv6_gtpu_ipv4, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_ipv4},
{pattern_eth_ipv6_gtpu_ipv4_udp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_ipv4_udp},
{pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_ipv4_tcp},
{pattern_eth_ipv6_gtpu_ipv6, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_ipv6},
{pattern_eth_ipv6_gtpu_ipv6_udp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_ipv6_udp},
{pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_ipv6_tcp},
{pattern_eth_ipv4_gtpu_eh_ipv4, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_eh_ipv4},
{pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_eh_ipv4_udp},
{pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_eh_ipv4_tcp},
{pattern_eth_ipv4_gtpu_eh_ipv6, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_eh_ipv6},
{pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_eh_ipv6_udp},
{pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_INSET_NONE,
&hint_eth_ipv4_gtpu_eh_ipv6_tcp},
{pattern_eth_ipv6_gtpu_eh_ipv4, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_eh_ipv4},
{pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_eh_ipv4_udp},
{pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_eh_ipv4_tcp},
{pattern_eth_ipv6_gtpu_eh_ipv6, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_eh_ipv6},
{pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_eh_ipv6_udp},
{pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_INSET_NONE,
&hint_eth_ipv6_gtpu_eh_ipv6_tcp},
{pattern_eth_pppoes_ipv4, ICE_INSET_NONE,
&hint_eth_pppoes_ipv4},
{pattern_eth_pppoes_ipv4_udp, ICE_INSET_NONE,