net/iavf: refactor RSS
PATCH 1/1 net/iavf: refactor RSS
Current RSS implementation is not easy to scale and maintain. The patch refactor the code base on below design:
1. iavf_pattern_match_item->input_set_mask is the superset of ETH_RSS_xxx.
2. iavf_pattern_match_item->meta is the virtchnl_proto_hdrs template.
3. iavf_hash_parse_pattern will generate pattern hint.
4. iavf_hash_parse_action will refine the virtchnl_proto_hdrs base on pattern hint and ETH_RSS_xxx.
5. The refine process include
1) refine field selector of l2, l3, l4.
2) insert gtpu proto_hdr at the begining base on pattern hint.
3) refine field selector for gtpu header.
The patch reduce the code from 4000+ line to less than 1000.
Note:
The variable iavf_hash_pattern_list as the manifest of all supported pattern is intend to break the 80 char limitation for better review experience.
--- drivers/net/iavf/iavf_hash.c | 4110 ++++++------------------------------------ 1 file changed, 516 insertions(+), 3594 deletions(-)
drivers/net/iavf/iavf_hash.c +516 -3594
@@ -23,3622 +23,385 @@#include "iavf.h" #include "iavf_generic_flow.h" -enum iavf_pattern_hint_type { -IAVF_PHINT_NONE =0x00000000 , -IAVF_PHINT_IPV4 =0x00000001 , -IAVF_PHINT_IPV4_UDP =0x00000002 , -IAVF_PHINT_IPV4_TCP =0x00000004 , -IAVF_PHINT_IPV4_SCTP =0x00000008 , -IAVF_PHINT_IPV6 =0x00000010 , -IAVF_PHINT_IPV6_UDP =0x00000020 , -IAVF_PHINT_IPV6_TCP =0x00000040 , -IAVF_PHINT_IPV6_SCTP =0x00000080 , -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 -#define IAVF_GTPU_EH_UPLINK 1 - -struct iavf_pattern_match_type { -uint64_t pattern_hint; -}; - -struct iavf_hash_match_type { -uint64_t hash_type; -struct virtchnl_proto_hdrs *proto_hdrs; -uint64_t pattern_hint; -}; - -struct iavf_rss_meta { -struct virtchnl_proto_hdrs *proto_hdrs; -enum virtchnl_rss_algorithm rss_algorithm; -}; - -struct iavf_hash_flow_cfg { -struct virtchnl_rss_cfg *rss_cfg; -bool simple_xor; -}; - -static int -iavf_hash_init (struct iavf_adapter *ad); -static int -iavf_hash_create (struct iavf_adapter *ad,struct rte_flow *flow,void *meta, -struct rte_flow_error *error); -static int -iavf_hash_destroy (struct iavf_adapter *ad,struct rte_flow *flow, -struct rte_flow_error *error); -static void -iavf_hash_uninit (struct iavf_adapter *ad); -static void -iavf_hash_free (struct rte_flow *flow); -static int -iavf_hash_parse_pattern_action (struct iavf_adapter *ad, -struct iavf_pattern_match_item *array, -uint32_t array_len, -const struct rte_flow_item pattern[], -const struct rte_flow_action actions[], -void **meta, -struct rte_flow_error *error); - -static struct iavf_pattern_match_type phint_empty = { -IAVF_PHINT_NONE }; -static struct iavf_pattern_match_type phint_eth_ipv4 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_ipv4_udp = { -IAVF_PHINT_IPV4_UDP }; -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 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_ipv4_pfcp = { -IAVF_PHINT_IPV4_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_udp = { -IAVF_PHINT_IPV4_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_tcp = { -IAVF_PHINT_IPV4_TCP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_sctp = { -IAVF_PHINT_IPV4_SCTP }; -static struct iavf_pattern_match_type phint_eth_ipv6 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_ipv6_udp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_ipv6_tcp = { -IAVF_PHINT_IPV6_TCP }; -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 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_ipv6_pfcp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_udp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_tcp = { -IAVF_PHINT_IPV6_TCP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_sctp = { -IAVF_PHINT_IPV6_SCTP }; - -/** -* Supported pattern for hash. -* The first member is pattern item type, -* the second member is input set mask, -* the third member is pattern hint for hash. -*/ -static struct iavf_pattern_match_item iavf_hash_pattern_list[] = { - {iavf_pattern_eth_ipv4,IAVF_INSET_NONE , &phint_eth_ipv4}, - {iavf_pattern_eth_ipv4_udp,IAVF_INSET_NONE , &phint_eth_ipv4_udp}, - {iavf_pattern_eth_ipv4_tcp,IAVF_INSET_NONE , &phint_eth_ipv4_tcp}, - {iavf_pattern_eth_ipv4_sctp,IAVF_INSET_NONE , &phint_eth_ipv4_sctp}, - {iavf_pattern_eth_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}, - {iavf_pattern_eth_ipv4_pfcp,IAVF_INSET_NONE , &phint_eth_ipv4_pfcp}, - {iavf_pattern_eth_vlan_ipv4,IAVF_INSET_NONE , &phint_eth_vlan_ipv4}, - {iavf_pattern_eth_vlan_ipv4_udp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_udp}, - {iavf_pattern_eth_vlan_ipv4_tcp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_tcp}, - {iavf_pattern_eth_vlan_ipv4_sctp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_sctp}, - {iavf_pattern_eth_ipv6,IAVF_INSET_NONE , &phint_eth_ipv6}, - {iavf_pattern_eth_ipv6_udp,IAVF_INSET_NONE , &phint_eth_ipv6_udp}, - {iavf_pattern_eth_ipv6_tcp,IAVF_INSET_NONE , &phint_eth_ipv6_tcp}, - {iavf_pattern_eth_ipv6_sctp,IAVF_INSET_NONE , &phint_eth_ipv6_sctp}, - {iavf_pattern_eth_ipv6_esp,IAVF_INSET_NONE , &phint_eth_ipv6_esp}, - {iavf_pattern_eth_ipv6_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}, - {iavf_pattern_eth_ipv6_pfcp,IAVF_INSET_NONE , &phint_eth_ipv6_pfcp}, - {iavf_pattern_eth_vlan_ipv6,IAVF_INSET_NONE , &phint_eth_vlan_ipv6}, - {iavf_pattern_eth_vlan_ipv6_udp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_udp}, - {iavf_pattern_eth_vlan_ipv6_tcp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_tcp}, - {iavf_pattern_eth_vlan_ipv6_sctp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_sctp}, - {iavf_pattern_empty,IAVF_INSET_NONE , &phint_empty}, -}; - -#define TUNNEL_LEVEL_OUTER 0 -#define TUNNEL_LEVEL_FIRST_INNER 1 - -#define PROTO_COUNT_ONE 1 -#define PROTO_COUNT_TWO 2 -#define PROTO_COUNT_THREE 3 - -#define BUFF_NOUSED 0 -#define FIELD_FOR_PROTO_ONLY 0 - -#define FIELD_SELECTOR (proto_hdr_field) \ - (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) - -#define proto_hint_eth_src { \ - VIRTCHNL_PROTO_HDR_ETH, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC), \ - {BUFF_NOUSED } } - -#define proto_hint_eth_dst { \ - VIRTCHNL_PROTO_HDR_ETH, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), \ - {BUFF_NOUSED } } - -#define proto_hint_eth_only { \ - VIRTCHNL_PROTO_HDR_ETH, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_eth { \ - VIRTCHNL_PROTO_HDR_ETH, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED } } - -#define proto_hint_svlan { \ - VIRTCHNL_PROTO_HDR_S_VLAN, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED } } - -#define proto_hint_cvlan { \ - VIRTCHNL_PROTO_HDR_C_VLAN, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED } } - -#define proto_hint_ipv4_src { \ - VIRTCHNL_PROTO_HDR_IPV4, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv4_dst { \ - VIRTCHNL_PROTO_HDR_IPV4, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv4_only { \ - VIRTCHNL_PROTO_HDR_IPV4, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_ipv4 { \ - VIRTCHNL_PROTO_HDR_IPV4, \ - 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 } } - -#define proto_hint_udp_dst_port { \ - VIRTCHNL_PROTO_HDR_UDP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_udp_only { \ - VIRTCHNL_PROTO_HDR_UDP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_udp { \ - VIRTCHNL_PROTO_HDR_UDP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_tcp_src_port { \ - VIRTCHNL_PROTO_HDR_TCP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT), {BUFF_NOUSED } } - -#define proto_hint_tcp_dst_port { \ - VIRTCHNL_PROTO_HDR_TCP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_tcp_only { \ - VIRTCHNL_PROTO_HDR_TCP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_tcp { \ - VIRTCHNL_PROTO_HDR_TCP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_sctp_src_port { \ - VIRTCHNL_PROTO_HDR_SCTP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT), {BUFF_NOUSED } } - -#define proto_hint_sctp_dst_port { \ - VIRTCHNL_PROTO_HDR_SCTP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_sctp_only { \ - VIRTCHNL_PROTO_HDR_SCTP, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_sctp { \ - VIRTCHNL_PROTO_HDR_SCTP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_ipv6_src { \ - VIRTCHNL_PROTO_HDR_IPV6, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv6_dst { \ - VIRTCHNL_PROTO_HDR_IPV6, FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv6_only { \ - VIRTCHNL_PROTO_HDR_IPV6, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_ipv6 { \ - VIRTCHNL_PROTO_HDR_IPV6, \ - 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 } } - -#define proto_hint_gtpu_dwn_only { \ - VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_DWN, \ - FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_esp { \ - VIRTCHNL_PROTO_HDR_ESP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI), {BUFF_NOUSED } } - -#define proto_hint_ah { \ - VIRTCHNL_PROTO_HDR_AH, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI), {BUFF_NOUSED } } - -#define proto_hint_l2tpv3 { \ - VIRTCHNL_PROTO_HDR_L2TPV3, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID), {BUFF_NOUSED } } - -#define proto_hint_pfcp { \ - VIRTCHNL_PROTO_HDR_PFCP, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID), {BUFF_NOUSED } } - -/* IPV4 */ - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth_src, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth_dst, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_svlan, - proto_hint_ipv4_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_udp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_tcp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_sctp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_cvlan, - proto_hint_ipv4_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_udp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_tcp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_sctp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_udp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_port = { -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_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_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_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_prot, - proto_hint_udp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp = { -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_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_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_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_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_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_prot, - proto_hint_tcp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_tcp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4, - proto_hint_sctp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_esp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_ah = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_ah } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_l2tpv3 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_l2tpv3 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_pfcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_pfcp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_ipv4_only, - proto_hint_udp_only, proto_hint_esp } -}; - -/* IPv4 GTPU IP */ - -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_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_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_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_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_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_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_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_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_teid_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_teid} -}; - -/* 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_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_ipv6_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv6 } -}; - -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_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_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_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_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_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_ipv6_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_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_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_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_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_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_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_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_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_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_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_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_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_ipv6_tcp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv6_prot, proto_hint_tcp} -}; - -/* 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_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_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_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_dst_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_tcp} -}; - -/* IPv6 GTPU EH */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_tcp} -}; - -/* IPv4 GTPU UP */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_tcp} -}; - -/* IPv6 GTPU UP */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port} -}; +#define IAVF_PHINT_NONE 0 +#define IAVF_PHINT_GTPU BIT_ULL(0) +#define IAVF_PHINT_GTPU_EH BIT_ULL(1) +#define IAVF_PHINT_GTPU_EH_DWN BIT_ULL(2) +#define IAVF_PHINT_GTPU_EH_UP BIT_ULL(3) -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 } -}; +#define IAVF_PHINT_GTPU_MSK (IAVF_PHINT_GTPU | \ + IAVF_PHINT_GTPU_EH | \ + IAVF_PHINT_GTPU_EH_DWN | \ + IAVF_PHINT_GTPU_EH_UP) -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 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_svlan, - proto_hint_ipv6_only} -}; +#define IAVF_GTPU_EH_DWNLINK 0 +#define IAVF_GTPU_EH_UPLINK 1 -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_udp_only} +struct iavf_hash_match_type { +uint64_t hash_type; +struct virtchnl_proto_hdrs *proto_hdrs; +uint64_t pattern_hint; }; -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_tcp_only} +struct iavf_rss_meta { +struct virtchnl_proto_hdrs proto_hdrs; +enum virtchnl_rss_algorithm rss_algorithm; }; -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_sctp_only} +struct iavf_hash_flow_cfg { +struct virtchnl_rss_cfg *rss_cfg; +bool simple_xor; }; -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_cvlan, - proto_hint_ipv6_only} -}; +static int +iavf_hash_init (struct iavf_adapter *ad); +static int +iavf_hash_create (struct iavf_adapter *ad,struct rte_flow *flow,void *meta, +struct rte_flow_error *error); +static int +iavf_hash_destroy (struct iavf_adapter *ad,struct rte_flow *flow, +struct rte_flow_error *error); +static void +iavf_hash_uninit (struct iavf_adapter *ad); +static void +iavf_hash_free (struct rte_flow *flow); +static int +iavf_hash_parse_pattern_action (struct iavf_adapter *ad, +struct iavf_pattern_match_item *array, +uint32_t array_len, +const struct rte_flow_item pattern[], +const struct rte_flow_action actions[], +void **meta, +struct rte_flow_error *error); -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_udp_only} -}; +#define FIELD_SELECTOR (proto_hdr_field) \ + (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) +#define BUFF_NOUSED 0 -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_tcp_only} -}; +#define proto_hdr_eth { \ + VIRTCHNL_PROTO_HDR_ETH, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_sctp_only} -}; +#define proto_hdr_svlan { \ + VIRTCHNL_PROTO_HDR_S_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6_src } -}; +#define proto_hdr_cvlan { \ + VIRTCHNL_PROTO_HDR_C_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6_dst } -}; +#define proto_hdr_ipv4 { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6 } -}; +#define proto_hdr_ipv6 { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_udp_only } -}; +#define proto_hdr_udp { \ + VIRTCHNL_PROTO_HDR_UDP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_udp_only } -}; +#define proto_hdr_tcp { \ + VIRTCHNL_PROTO_HDR_TCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_prot, - proto_hint_udp_only } -}; +#define proto_hdr_sctp { \ + VIRTCHNL_PROTO_HDR_SCTP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_tcp_only } -}; +#define proto_hdr_esp { \ + VIRTCHNL_PROTO_HDR_ESP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_tcp_only } -}; +#define proto_hdr_ah { \ + VIRTCHNL_PROTO_HDR_AH, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_prot, - proto_hint_tcp_only } -}; +#define proto_hdr_l2tpv3 { \ + VIRTCHNL_PROTO_HDR_L2TPV3, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_sctp_only } -}; +#define proto_hdr_pfcp { \ + VIRTCHNL_PROTO_HDR_PFCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_sctp_only } -}; +#define TUNNEL_LEVEL_OUTER 0 +#define TUNNEL_LEVEL_INNER 1 -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_prot, - proto_hint_sctp_only } +/* proto_hdrs template */ +struct virtchnl_proto_hdrs outer_ipv4_tmplt = { +TUNNEL_LEVEL_OUTER ,4 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv4_udp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv4_tcp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv4_sctp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv6_tmplt = { +TUNNEL_LEVEL_OUTER ,4 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only_prot, - proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv6_udp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only_prot, - proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv6_tcp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_prot, - proto_hint_udp } +struct virtchnl_proto_hdrs outer_ipv6_sctp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv4_tmplt = { +TUNNEL_LEVEL_INNER ,1 , {proto_hdr_ipv4} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv4_udp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv4_tcp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv4_sctp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only_prot, - proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv6_tmplt = { +TUNNEL_LEVEL_INNER ,1 , {proto_hdr_ipv6} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only_prot, - proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv6_udp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_prot, - proto_hint_tcp } +struct virtchnl_proto_hdrs inner_ipv6_tcp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs inner_ipv6_sctp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv4_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs ipv4_udp_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,3 , + {proto_hdr_ipv4, proto_hdr_udp, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv4_ah_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_ah} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs ipv6_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv6_udp_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,3 , + {proto_hdr_ipv6, proto_hdr_udp, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6, - proto_hint_sctp } +struct virtchnl_proto_hdrs ipv6_ah_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_ah} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only, - proto_hint_esp } +struct virtchnl_proto_hdrs ipv4_l2tpv3_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_l2tpv3} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_ah = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only, - proto_hint_ah } +struct virtchnl_proto_hdrs ipv6_l2tpv3_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_l2tpv3} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_l2tpv3 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only, - proto_hint_l2tpv3 } +struct virtchnl_proto_hdrs ipv4_pfcp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_pfcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_pfcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_only, - proto_hint_pfcp } +struct virtchnl_proto_hdrs ipv6_pfcp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_pfcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_ipv6_only, - proto_hint_udp_only, proto_hint_esp } -}; +/* rss type super set */ -struct iavf_hash_match_type iavf_hash_map_list[] = { -/* IPV4 */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4,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 , - &hdrs_hint_ipv4_dst,IAVF_PHINT_IPV4 }, - {ETH_RSS_IPV4 , - &hdrs_hint_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_ESP , - &hdrs_hint_ipv4_esp,IAVF_PHINT_IPV4 }, - {ETH_RSS_AH , - &hdrs_hint_ipv4_ah,IAVF_PHINT_IPV4 }, - {ETH_RSS_L2TPV3 , - &hdrs_hint_ipv4_l2tpv3,IAVF_PHINT_IPV4 }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, -/* IPV4 UDP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_udp_src_port,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV4_UDP | -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 , - &hdrs_hint_ipv4_dst_udp_src_port,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_port,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_udp, -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 , - &hdrs_hint_ipv4_udp_dst_port,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_PFCP , - &hdrs_hint_ipv4_pfcp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_ESP , - &hdrs_hint_ipv4_udp_esp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP , - &hdrs_hint_ipv4_udp,IAVF_PHINT_IPV4_UDP }, -/* IPV4 TCP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_NONFRAG_IPV4_TCP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_tcp_src_port,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV4_TCP | -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 , - &hdrs_hint_ipv4_dst_tcp_src_port,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_port,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_NONFRAG_IPV4_TCP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_tcp, -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 , - &hdrs_hint_ipv4_tcp_dst_port,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_NONFRAG_IPV4_TCP , - &hdrs_hint_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, -/* IPV4 SCTP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_sctp_src_port,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV4_SCTP | -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 , - &hdrs_hint_ipv4_dst_sctp_src_port,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_sctp, -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 , - &hdrs_hint_ipv4_sctp_dst_port,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_NONFRAG_IPV4_SCTP , - &hdrs_hint_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, -/* IPV6 */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv6,IAVF_PHINT_IPV6 }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv6,IAVF_PHINT_IPV6 }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv6,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 , - &hdrs_hint_ipv6_dst,IAVF_PHINT_IPV6 }, - {ETH_RSS_IPV6 , - &hdrs_hint_ipv6,IAVF_PHINT_IPV6 }, - {ETH_RSS_ESP , - &hdrs_hint_ipv6_esp,IAVF_PHINT_IPV6 }, - {ETH_RSS_AH , - &hdrs_hint_ipv6_ah,IAVF_PHINT_IPV6 }, - {ETH_RSS_L2TPV3 , - &hdrs_hint_ipv6_l2tpv3,IAVF_PHINT_IPV6 }, -/* IPV6 UDP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv6_udp,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv6_udp,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv6_udp,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_udp_src_port,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV6_UDP | -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 , - &hdrs_hint_ipv6_dst_udp_src_port,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_port,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_udp, -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 , - &hdrs_hint_ipv6_udp_dst_port,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_PFCP , - &hdrs_hint_ipv6_pfcp,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_ESP , - &hdrs_hint_ipv6_udp_esp,IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_IPV6_UDP , - &hdrs_hint_ipv6_udp,IAVF_PHINT_IPV6_UDP }, -/* IPV6 TCP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv6_tcp,IAVF_PHINT_IPV6_TCP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv6_tcp,IAVF_PHINT_IPV6_TCP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv6_tcp,IAVF_PHINT_IPV6_TCP }, - {ETH_RSS_NONFRAG_IPV6_TCP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_tcp_src_port,IAVF_PHINT_IPV6_TCP }, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV6_TCP | -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 , - &hdrs_hint_ipv6_dst_tcp_src_port,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_port,IAVF_PHINT_IPV6_TCP }, - {ETH_RSS_NONFRAG_IPV6_TCP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_tcp, -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 , - &hdrs_hint_ipv6_tcp_dst_port,IAVF_PHINT_IPV6_TCP }, - {ETH_RSS_NONFRAG_IPV6_TCP , - &hdrs_hint_ipv6_tcp,IAVF_PHINT_IPV6_TCP }, -/* IPV6 SCTP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv6_sctp,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv6_sctp,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv6_sctp,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_sctp_src_port,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_src_sctp_dst_port,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY , &hdrs_hint_ipv6_src_sctp, -IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_dst_sctp_src_port,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_dst_sctp_dst_port,IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_sctp, -IAVF_PHINT_IPV6_SCTP }, - {ETH_RSS_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 }, -}; +/* IPv4 outer */ +#define IAVF_RSS_TYPE_OUTER_IPV4 (ETH_RSS_ETH | ETH_RSS_IPV4) +#define IAVF_RSS_TYPE_OUTER_IPV4_UDP (IAVF_RSS_TYPE_OUTER_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_UDP) +#define IAVF_RSS_TYPE_OUTER_IPV4_TCP (IAVF_RSS_TYPE_OUTER_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_TCP) +#define IAVF_RSS_TYPE_OUTER_IPV4_SCTP (IAVF_RSS_TYPE_OUTER_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_SCTP) +/* IPv6 outer */ +#define IAVF_RSS_TYPE_OUTER_IPV6 (ETH_RSS_ETH | ETH_RSS_IPV6) +#define IAVF_RSS_TYPE_OUTER_IPV6_UDP (IAVF_RSS_TYPE_OUTER_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_UDP) +#define IAVF_RSS_TYPE_OUTER_IPV6_TCP (IAVF_RSS_TYPE_OUTER_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_TCP) +#define IAVF_RSS_TYPE_OUTER_IPV6_SCTP (IAVF_RSS_TYPE_OUTER_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_SCTP) +/* Vlan IPV4 */ +#define IAVF_RSS_TYPE_VLAN_IPV4 (IAVF_RSS_TYPE_OUTER_IPV4 | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +#define IAVF_RSS_TYPE_VLAN_IPV4_UDP (IAVF_RSS_TYPE_OUTER_IPV4_UDP | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +#define IAVF_RSS_TYPE_VLAN_IPV4_TCP (IAVF_RSS_TYPE_OUTER_IPV4_TCP | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +#define IAVF_RSS_TYPE_VLAN_IPV4_SCTP (IAVF_RSS_TYPE_OUTER_IPV4_SCTP | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +/* vlan IPv6 */ +#define IAVF_RSS_TYPE_VLAN_IPV6 (IAVF_RSS_TYPE_OUTER_IPV6 | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +#define IAVF_RSS_TYPE_VLAN_IPV6_UDP (IAVF_RSS_TYPE_OUTER_IPV6_UDP | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +#define IAVF_RSS_TYPE_VLAN_IPV6_TCP (IAVF_RSS_TYPE_OUTER_IPV6_TCP | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +#define IAVF_RSS_TYPE_VLAN_IPV6_SCTP (IAVF_RSS_TYPE_OUTER_IPV6_SCTP | \ + ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) +/* IPv4 inner */ +#define IAVF_RSS_TYPE_INNER_IPV4 ETH_RSS_IPV4 +#define IAVF_RSS_TYPE_INNER_IPV4_UDP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_UDP) +#define IAVF_RSS_TYPE_INNER_IPV4_TCP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_TCP) +#define IAVF_RSS_TYPE_INNER_IPV4_SCTP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_SCTP) +/* IPv6 inner */ +#define IAVF_RSS_TYPE_INNER_IPV6 ETH_RSS_IPV6 +#define IAVF_RSS_TYPE_INNER_IPV6_UDP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_UDP) +#define IAVF_RSS_TYPE_INNER_IPV6_TCP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_TCP) +#define IAVF_RSS_TYPE_INNER_IPV6_SCTP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_SCTP) +/* GTPU IPv4 */ +#define IAVF_RSS_TYPE_GTPU_IPV4 (IAVF_RSS_TYPE_INNER_IPV4 | \ + ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV4_UDP (IAVF_RSS_TYPE_INNER_IPV4_UDP | \ + ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV4_TCP (IAVF_RSS_TYPE_INNER_IPV4_TCP | \ + ETH_RSS_GTPU) +/* GTPU IPv6 */ +#define IAVF_RSS_TYPE_GTPU_IPV6 (IAVF_RSS_TYPE_INNER_IPV6 | \ + ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV6_UDP (IAVF_RSS_TYPE_INNER_IPV6_UDP | \ + ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV6_TCP (IAVF_RSS_TYPE_INNER_IPV6_TCP | \ + ETH_RSS_GTPU) +/* ESP, AH, L2TPV3 and PFCP */ +#define IAVF_RSS_TYPE_IPV4_ESP (ETH_RSS_ESP | ETH_RSS_IPV4) +#define IAVF_RSS_TYPE_IPV4_AH (ETH_RSS_AH | ETH_RSS_IPV4) +#define IAVF_RSS_TYPE_IPV6_ESP (ETH_RSS_ESP | ETH_RSS_IPV6) +#define IAVF_RSS_TYPE_IPV6_AH (ETH_RSS_AH | ETH_RSS_IPV6) +#define IAVF_RSS_TYPE_IPV4_L2TPV3 (ETH_RSS_L2TPV3 | ETH_RSS_IPV4) +#define IAVF_RSS_TYPE_IPV6_L2TPV3 (ETH_RSS_L2TPV3 | ETH_RSS_IPV6) +#define IAVF_RSS_TYPE_IPV4_PFCP (ETH_RSS_PFCP | ETH_RSS_IPV4) +#define IAVF_RSS_TYPE_IPV6_PFCP (ETH_RSS_PFCP | ETH_RSS_IPV6) -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_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 */ -/* 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_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_IPV6_GTPU_EH |IAVF_PHINT_IPV4 }, - {ETH_RSS_IPV4 | -ETH_RSS_L3_DST_ONLY , - &hdrs_hint_ipv4_dst_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4 }, - {ETH_RSS_IPV4 , - &hdrs_hint_ipv4_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4 }, -/* IPv6 GTPU EH IPv6 */ - {ETH_RSS_IPV6 | -ETH_RSS_L3_SRC_ONLY , - &hdrs_hint_ipv6_src_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV6 }, - {ETH_RSS_IPV6 | -ETH_RSS_L3_DST_ONLY , - &hdrs_hint_ipv6_dst_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV6 }, - {ETH_RSS_IPV6 , - &hdrs_hint_ipv6_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV6 }, -/* IPv4 GTPU EH IPv4 UDP */ - {ETH_RSS_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_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_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_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_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_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_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_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_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_src_udp_dst_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY , - &hdrs_hint_ipv4_src_udp_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_udp_src_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_dst_udp_src_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_dst_udp_dst_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY , - &hdrs_hint_ipv4_dst_udp_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_udp_dst_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP , - &hdrs_hint_ipv4_udp_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV4_UDP }, -/* IPv6 GTPU EH IPv6 UDP */ - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_udp_src_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_src_udp_dst_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY , - &hdrs_hint_ipv6_src_udp_gtpu_eh, -IAVF_PHINT_IPV6_GTPU_EH |IAVF_PHINT_IPV6_UDP }, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L4_SRC_ONLY ,
Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Signature · 1 line
2.13.6
Part of the diff is not shown here. View the raw message.
Looks good for that template usage, some comment as bellow,
Quoted 2,795 lines
-----Original Message-----
From: Zhang, Qi Z <[email protected]>
Sent: Friday, September 4, 2020 11:33 AM
To: Guo, Jia <[email protected]>
Cc: Guo, Junfeng <[email protected]>; Zhang, AlvinX <[email protected]>; [email protected]; Xing, Beilei <[email protected]>; Zhang, Qi Z <[email protected]>
Subject: [PATCH] net/iavf: refactor RSSCurrent RSS implementation is not easy to scale and maintain. The patch refactor the code base on below design:
1.
iavf_pattern_match_item->input_set_maskis the superset ofETH_RSS_xxx.
2.iavf_pattern_match_item->metais thevirtchnl_proto_hdrstemplate.
3.iavf_hash_parse_patternwill generate pattern hint.
4.iavf_hash_parse_actionwill refine thevirtchnl_proto_hdrsbase on pattern hint andETH_RSS_xxx.
5. The refine process include
1) refine field selector of l2, l3, l4.
2) insert gtpuproto_hdrat the begining base on pattern hint.
3) refine field selector for gtpu header.The patch reduce the code from 4000+ line to less than 1000.
Note:
The variableiavf_hash_pattern_listas the manifest of all supported pattern is intend to break the 80 char limitation for better review experience.Signed-off-by Qi Zhang <[email protected]>--- drivers/net/iavf/iavf_hash.c | 4110 ++++++------------------------------------ 1 file changed, 516 insertions(+), 3594 deletions(-)drivers/net/iavf/iavf_hash.c +70
-1793@@ -23,3622 +23,385 @@#include "iavf.h" #include "iavf_generic_flow.h" -enum iavf_pattern_hint_type { -IAVF_PHINT_NONE =0x00000000 , -IAVF_PHINT_IPV4 =0x00000001 , -IAVF_PHINT_IPV4_UDP =0x00000002 , -IAVF_PHINT_IPV4_TCP =0x00000004 , -IAVF_PHINT_IPV4_SCTP =0x00000008 , -IAVF_PHINT_IPV6 =0x00000010 , -IAVF_PHINT_IPV6_UDP =0x00000020 , -IAVF_PHINT_IPV6_TCP =0x00000040 , -IAVF_PHINT_IPV6_SCTP =0x00000080 , -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 -#define IAVF_GTPU_EH_UPLINK 1 - -struct iavf_pattern_match_type { -uint64_t pattern_hint; -}; - -struct iavf_hash_match_type { -uint64_t hash_type; -struct virtchnl_proto_hdrs *proto_hdrs; -uint64_t pattern_hint; -}; - -struct iavf_rss_meta { -struct virtchnl_proto_hdrs *proto_hdrs; -enum virtchnl_rss_algorithm rss_algorithm; -}; - -struct iavf_hash_flow_cfg { -struct virtchnl_rss_cfg *rss_cfg; -bool simple_xor; -}; - -static int -iavf_hash_init (struct iavf_adapter *ad); -static int -iavf_hash_create (struct iavf_adapter *ad,struct rte_flow *flow,void *meta, -struct rte_flow_error *error); -static int -iavf_hash_destroy (struct iavf_adapter *ad,struct rte_flow *flow, -struct rte_flow_error *error); -static void -iavf_hash_uninit (struct iavf_adapter *ad); -static void -iavf_hash_free (struct rte_flow *flow); -static int -iavf_hash_parse_pattern_action (struct iavf_adapter *ad, -struct iavf_pattern_match_item *array, -uint32_t array_len, -const struct rte_flow_item pattern[], -const struct rte_flow_action actions[], -void **meta, -struct rte_flow_error *error); - -static struct iavf_pattern_match_type phint_empty = { -IAVF_PHINT_NONE }; -static struct iavf_pattern_match_type phint_eth_ipv4 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_ipv4_udp = { -IAVF_PHINT_IPV4_UDP }; -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 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_ipv4_pfcp = { -IAVF_PHINT_IPV4_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_udp = { -IAVF_PHINT_IPV4_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_tcp = { -IAVF_PHINT_IPV4_TCP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_sctp = { -IAVF_PHINT_IPV4_SCTP }; -static struct iavf_pattern_match_type phint_eth_ipv6 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_ipv6_udp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_ipv6_tcp = { -IAVF_PHINT_IPV6_TCP }; -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 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_ipv6_pfcp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_udp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_tcp = { -IAVF_PHINT_IPV6_TCP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_sctp = { -IAVF_PHINT_IPV6_SCTP }; - -/** -* Supported pattern for hash. -* The first member is pattern item type, -* the second member is input set mask, -* the third member is pattern hint for hash. -*/ -static struct iavf_pattern_match_item iavf_hash_pattern_list[] = { - {iavf_pattern_eth_ipv4,IAVF_INSET_NONE , &phint_eth_ipv4}, - {iavf_pattern_eth_ipv4_udp,IAVF_INSET_NONE , &phint_eth_ipv4_udp}, - {iavf_pattern_eth_ipv4_tcp,IAVF_INSET_NONE , &phint_eth_ipv4_tcp}, - {iavf_pattern_eth_ipv4_sctp,IAVF_INSET_NONE , &phint_eth_ipv4_sctp}, - {iavf_pattern_eth_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}, - {iavf_pattern_eth_ipv4_pfcp,IAVF_INSET_NONE , &phint_eth_ipv4_pfcp}, - {iavf_pattern_eth_vlan_ipv4,IAVF_INSET_NONE , &phint_eth_vlan_ipv4}, - {iavf_pattern_eth_vlan_ipv4_udp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_udp}, - {iavf_pattern_eth_vlan_ipv4_tcp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_tcp}, - {iavf_pattern_eth_vlan_ipv4_sctp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_sctp}, - {iavf_pattern_eth_ipv6,IAVF_INSET_NONE , &phint_eth_ipv6}, - {iavf_pattern_eth_ipv6_udp,IAVF_INSET_NONE , &phint_eth_ipv6_udp}, - {iavf_pattern_eth_ipv6_tcp,IAVF_INSET_NONE , &phint_eth_ipv6_tcp}, - {iavf_pattern_eth_ipv6_sctp,IAVF_INSET_NONE , &phint_eth_ipv6_sctp}, - {iavf_pattern_eth_ipv6_esp,IAVF_INSET_NONE , &phint_eth_ipv6_esp}, - {iavf_pattern_eth_ipv6_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}, - {iavf_pattern_eth_ipv6_pfcp,IAVF_INSET_NONE , &phint_eth_ipv6_pfcp}, - {iavf_pattern_eth_vlan_ipv6,IAVF_INSET_NONE , &phint_eth_vlan_ipv6}, - {iavf_pattern_eth_vlan_ipv6_udp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_udp}, - {iavf_pattern_eth_vlan_ipv6_tcp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_tcp}, - {iavf_pattern_eth_vlan_ipv6_sctp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_sctp}, - {iavf_pattern_empty,IAVF_INSET_NONE , &phint_empty}, -}; - -#define TUNNEL_LEVEL_OUTER 0 -#define TUNNEL_LEVEL_FIRST_INNER 1 - -#define PROTO_COUNT_ONE 1 -#define PROTO_COUNT_TWO 2 -#define PROTO_COUNT_THREE 3 - -#define BUFF_NOUSED 0 -#define FIELD_FOR_PROTO_ONLY 0 - -#define FIELD_SELECTOR (proto_hdr_field) \ - (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) - -#define proto_hint_eth_src { \ - VIRTCHNL_PROTO_HDR_ETH,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_ETH_SRC ), \ - {BUFF_NOUSED } } - -#define proto_hint_eth_dst { \ - VIRTCHNL_PROTO_HDR_ETH,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_ETH_DST ), \ - {BUFF_NOUSED } } - -#define proto_hint_eth_only { \ - VIRTCHNL_PROTO_HDR_ETH, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_eth { \ - VIRTCHNL_PROTO_HDR_ETH, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED } } - -#define proto_hint_svlan { \ - VIRTCHNL_PROTO_HDR_S_VLAN, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED } } - -#define proto_hint_cvlan { \ - VIRTCHNL_PROTO_HDR_C_VLAN, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED } } - -#define proto_hint_ipv4_src { \ - VIRTCHNL_PROTO_HDR_IPV4,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV4_SRC ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv4_dst { \ -VIRTCHNL_PROTO_HDR_IPV4 ,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV4_DST ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv4_only { \ -VIRTCHNL_PROTO_HDR_IPV4 ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_ipv4 { \ -VIRTCHNL_PROTO_HDR_IPV4 , \ - 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 } } - -#define proto_hint_udp_dst_port { \ -VIRTCHNL_PROTO_HDR_UDP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_UDP_DST_PORT ), {BUFF_NOUSED } } - -#define proto_hint_udp_only { \ -VIRTCHNL_PROTO_HDR_UDP ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_udp { \ -VIRTCHNL_PROTO_HDR_UDP , \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_tcp_src_port { \ -VIRTCHNL_PROTO_HDR_TCP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_TCP_SRC_PORT ), {BUFF_NOUSED } } - -#define proto_hint_tcp_dst_port { \ -VIRTCHNL_PROTO_HDR_TCP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_TCP_DST_PORT ), {BUFF_NOUSED } } - -#define proto_hint_tcp_only { \ -VIRTCHNL_PROTO_HDR_TCP ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_tcp { \ -VIRTCHNL_PROTO_HDR_TCP , \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_sctp_src_port { \ -VIRTCHNL_PROTO_HDR_SCTP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT ), {BUFF_NOUSED } } - -#define proto_hint_sctp_dst_port { \ -VIRTCHNL_PROTO_HDR_SCTP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_SCTP_DST_PORT ), {BUFF_NOUSED } } - -#define proto_hint_sctp_only { \ -VIRTCHNL_PROTO_HDR_SCTP ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_sctp { \ -VIRTCHNL_PROTO_HDR_SCTP , \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_ipv6_src { \ -VIRTCHNL_PROTO_HDR_IPV6 ,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV6_SRC ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv6_dst { \ -VIRTCHNL_PROTO_HDR_IPV6 ,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV6_DST ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv6_only { \ -VIRTCHNL_PROTO_HDR_IPV6 ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_ipv6 { \ -VIRTCHNL_PROTO_HDR_IPV6 , \ - 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 } } - -#define proto_hint_gtpu_dwn_only { \ -VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_DWN , \ - FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_esp { \ -VIRTCHNL_PROTO_HDR_ESP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_ESP_SPI ), {BUFF_NOUSED } } - -#define proto_hint_ah { \ -VIRTCHNL_PROTO_HDR_AH , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_AH_SPI ), {BUFF_NOUSED } } - -#define proto_hint_l2tpv3 { \ -VIRTCHNL_PROTO_HDR_L2TPV3 , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID ), {BUFF_NOUSED } } - -#define proto_hint_pfcp { \ -VIRTCHNL_PROTO_HDR_PFCP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_PFCP_SEID ), {BUFF_NOUSED } } - -/* IPV4 */ - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth_src, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth_dst, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_svlan, - proto_hint_ipv4_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_udp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_tcp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_sctp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_cvlan, - proto_hint_ipv4_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_udp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_tcp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_sctp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_udp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_port = { -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_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_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_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_prot, - proto_hint_udp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp = { -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_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_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_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_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_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_prot, - proto_hint_tcp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_tcp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4, - proto_hint_sctp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_esp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_ah = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_ah } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_l2tpv3 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_l2tpv3 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_pfcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_pfcp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_ipv4_only, - proto_hint_udp_only, proto_hint_esp } -}; - -/* IPv4 GTPU IP */ - -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_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_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_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_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_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_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_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_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_teid_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_teid} -}; - -/* 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_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_ipv6_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv6 } -}; - -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_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_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_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_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_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_ipv6_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_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_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_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_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_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_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_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_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_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_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_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_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_ipv6_tcp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv6_prot, proto_hint_tcp} -}; - -/* 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_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_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_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_dst_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_tcp} -}; - -/* IPv6 GTPU EH */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_tcp} -}; - -/* IPv4 GTPU UP */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_tcp} -}; - -/* IPv6 GTPU UP */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port} -}; +#define IAVF_PHINT_NONE 0 +#define IAVF_PHINT_GTPU BIT_ULL(0) +#define IAVF_PHINT_GTPU_EH BIT_ULL(1) +#define IAVF_PHINT_GTPU_EH_DWN BIT_ULL(2) +#define IAVF_PHINT_GTPU_EH_UP BIT_ULL(3) -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 } -}; +#define IAVF_PHINT_GTPU_MSK (IAVF_PHINT_GTPU | \ + IAVF_PHINT_GTPU_EH | \ + IAVF_PHINT_GTPU_EH_DWN | \ + IAVF_PHINT_GTPU_EH_UP) -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 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_svlan, - proto_hint_ipv6_only} -}; +#define IAVF_GTPU_EH_DWNLINK 0 +#define IAVF_GTPU_EH_UPLINK 1 -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_udp_only} +struct iavf_hash_match_type { + uint64_t hash_type; +struct virtchnl_proto_hdrs *proto_hdrs; +uint64_t pattern_hint; }; -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_tcp_only} +struct iavf_rss_meta { +struct virtchnl_proto_hdrs proto_hdrs; +enum virtchnl_rss_algorithm rss_algorithm; }; -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_sctp_only} +struct iavf_hash_flow_cfg { +struct virtchnl_rss_cfg *rss_cfg; +bool simple_xor; }; -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_cvlan, - proto_hint_ipv6_only} -}; +static int +iavf_hash_init (struct iavf_adapter *ad); +static int +iavf_hash_create (struct iavf_adapter *ad,struct rte_flow *flow,void *meta, +struct rte_flow_error *error); +static int +iavf_hash_destroy (struct iavf_adapter *ad,struct rte_flow *flow, +struct rte_flow_error *error); +static void +iavf_hash_uninit (struct iavf_adapter *ad); +static void +iavf_hash_free (struct rte_flow *flow); +static int +iavf_hash_parse_pattern_action (struct iavf_adapter *ad, +struct iavf_pattern_match_item *array, +uint32_t array_len, +const struct rte_flow_item pattern[], +const struct rte_flow_action actions[], +void **meta, +struct rte_flow_error *error); -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_udp_only} -}; +#define FIELD_SELECTOR (proto_hdr_field) \ + (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) +#define BUFF_NOUSED 0 -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_tcp_only} -}; +#define proto_hdr_eth { \ + VIRTCHNL_PROTO_HDR_ETH, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_sctp_only} -}; +#define proto_hdr_svlan { \ + VIRTCHNL_PROTO_HDR_S_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6_src } -}; +#define proto_hdr_cvlan { \ + VIRTCHNL_PROTO_HDR_C_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6_dst } -}; +#define proto_hdr_ipv4 { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6 } -}; +#define proto_hdr_ipv6 { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_udp_only } -}; +#define proto_hdr_udp { \ + VIRTCHNL_PROTO_HDR_UDP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_udp_only } -}; +#define proto_hdr_tcp { \ + VIRTCHNL_PROTO_HDR_TCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +4
-2- proto_hint_udp_only } -}; +#define proto_hdr_sctp { \ + VIRTCHNL_PROTO_HDR_SCTP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_tcp_only } -}; +#define proto_hdr_esp { \ + VIRTCHNL_PROTO_HDR_ESP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_tcp_only } -}; +#define proto_hdr_ah { \ + VIRTCHNL_PROTO_HDR_AH, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_tcp_only } -}; +#define proto_hdr_l2tpv3 { \ + VIRTCHNL_PROTO_HDR_L2TPV3, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_sctp_only } -}; +#define proto_hdr_pfcp { \ + VIRTCHNL_PROTO_HDR_PFCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +2
-4- proto_hint_sctp_only } -}; +#define TUNNEL_LEVEL_OUTER 0 +#define TUNNEL_LEVEL_INNER 1 -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_sctp_only } +/* proto_hdrs template */ +struct virtchnl_proto_hdrs outer_ipv4_tmplt = { +TUNNEL_LEVEL_OUTER ,4 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv4_udp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv4_tcp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv4_sctp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +3
-3- proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv6_tmplt = { +TUNNEL_LEVEL_OUTER ,4 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv6_udp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv6_tcp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp } +struct virtchnl_proto_hdrs outer_ipv6_sctp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv4_tmplt = { +TUNNEL_LEVEL_INNER ,1 , {proto_hdr_ipv4} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv4_udp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv4_tcp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv4_sctp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv6_tmplt = { +TUNNEL_LEVEL_INNER ,1 , {proto_hdr_ipv6} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv6_udp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +11
-15- proto_hint_tcp } +struct virtchnl_proto_hdrs inner_ipv6_tcp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs inner_ipv6_sctp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv4_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs ipv4_udp_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,3 , + {proto_hdr_ipv4, proto_hdr_udp, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv4_ah_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_ah} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs ipv6_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +5
-6- proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv6_udp_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,3 , + {proto_hdr_ipv6, proto_hdr_udp, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6, - proto_hint_sctp } +struct virtchnl_proto_hdrs ipv6_ah_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_ah} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_esp } +struct virtchnl_proto_hdrs ipv4_l2tpv3_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_l2tpv3} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_ah = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_ah } +struct virtchnl_proto_hdrs ipv6_l2tpv3_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_l2tpv3} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_l2tpv3 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_l2tpv3 } +struct virtchnl_proto_hdrs ipv4_pfcp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_pfcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_pfcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_pfcp } +struct virtchnl_proto_hdrs ipv6_pfcp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_pfcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +1
-48- proto_hint_udp_only, proto_hint_esp } -}; +/* rss type super set */ -struct iavf_hash_match_type iavf_hash_map_list[] = { -/* IPV4 */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4,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 , - &hdrs_hint_ipv4_dst,IAVF_PHINT_IPV4 }, - {ETH_RSS_IPV4 , - &hdrs_hint_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_ESP , - &hdrs_hint_ipv4_esp,IAVF_PHINT_IPV4 }, - {ETH_RSS_AH , - &hdrs_hint_ipv4_ah,IAVF_PHINT_IPV4 }, - {ETH_RSS_L2TPV3 , - &hdrs_hint_ipv4_l2tpv3,IAVF_PHINT_IPV4 }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, -/* IPV4 UDP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_udp_src_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_src_udp_dst_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV4_UDP | -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 , - &hdrs_hint_ipv4_dst_udp_src_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_dst_udp_dst_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-54- {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_udp, - 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, - &hdrs_hint_ipv4_udp_dst_port, IAVF_PHINT_IPV4_UDP}, - {ETH_RSS_PFCP, - &hdrs_hint_ipv4_pfcp, IAVF_PHINT_IPV4_UDP}, - {ETH_RSS_ESP, - &hdrs_hint_ipv4_udp_esp, IAVF_PHINT_IPV4_UDP}, - {ETH_RSS_NONFRAG_IPV4_UDP, - &hdrs_hint_ipv4_udp, IAVF_PHINT_IPV4_UDP}, -/* IPV4 TCP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_IPV4_TCP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_tcp_src_port, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV4_TCP | -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 , - &hdrs_hint_ipv4_dst_tcp_src_port, 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_port, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_IPV4_TCP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_tcp, - 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, - &hdrs_hint_ipv4_tcp_dst_port, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_IPV4_TCP, - &hdrs_hint_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, -/* IPV4 SCTP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_sctp_src_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_src_sctp_dst_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV4_SCTP | -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 , - &hdrs_hint_ipv4_dst_sctp_src_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_dst_sctp_dst_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-38- {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_sctp, - 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, - &hdrs_hint_ipv4_sctp_dst_port, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_NONFRAG_IPV4_SCTP, - &hdrs_hint_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, -/* IPV6 */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6, IAVF_PHINT_IPV6}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6, IAVF_PHINT_IPV6}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6, 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, - &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6}, - {ETH_RSS_IPV6, - &hdrs_hint_ipv6, IAVF_PHINT_IPV6}, - {ETH_RSS_ESP, - &hdrs_hint_ipv6_esp, IAVF_PHINT_IPV6}, - {ETH_RSS_AH, - &hdrs_hint_ipv6_ah, IAVF_PHINT_IPV6}, - {ETH_RSS_L2TPV3, - &hdrs_hint_ipv6_l2tpv3, IAVF_PHINT_IPV6}, -/* IPV6 UDP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6_udp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6_udp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6_udp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_udp_src_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_src_udp_dst_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV6_UDP | -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 , - &hdrs_hint_ipv6_dst_udp_src_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_dst_udp_dst_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-54- {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_udp, - 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, - &hdrs_hint_ipv6_udp_dst_port, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_PFCP, - &hdrs_hint_ipv6_pfcp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_ESP, - &hdrs_hint_ipv6_udp_esp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_NONFRAG_IPV6_UDP, - &hdrs_hint_ipv6_udp, IAVF_PHINT_IPV6_UDP}, -/* IPV6 TCP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_IPV6_TCP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_tcp_src_port, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV6_TCP | -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 , - &hdrs_hint_ipv6_dst_tcp_src_port, 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_port, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_IPV6_TCP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_tcp, - 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, - &hdrs_hint_ipv6_tcp_dst_port, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_IPV6_TCP, - &hdrs_hint_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, -/* IPV6 SCTP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_sctp_src_port,
IAVF_PHINT_IPV6_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_src_sctp_dst_port,
IAVF_PHINT_IPV6_SCTP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY , &hdrs_hint_ipv6_src_sctp, - IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_dst_sctp_src_port,
IAVF_PHINT_IPV6_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {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},drivers/net/iavf/iavf_hash.c +2
-26- {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}, -}; +/* IPv4 outer */ +#define IAVF_RSS_TYPE_OUTER_IPV4 (ETH_RSS_ETH |
ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_OUTER_IPV4_UDP(IAVF_RSS_TYPE_OUTER_IPV4 | \
drivers/net/iavf/iavf_hash.c
Quoted 1 line
drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_NONFRAG_IPV4_UDP)
It should be considerate that " ETH_RSS_IPV4" | " ETH_RSS_NONFRAG_IPV4_UDP " make sense, and if it should not and then we should not need to check after when parsing the input set.
Quoted 17 lines
+#define
IAVF_RSS_TYPE_OUTER_IPV4_TCP(IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV4_TCP) +#define IAVF_RSS_TYPE_OUTER_IPV4_SCTP (IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c +3
-0+ ETH_RSS_NONFRAG_IPV4_SCTP) +/* IPv6 outer */ +#define IAVF_RSS_TYPE_OUTER_IPV6 (ETH_RSS_ETH |
ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_OUTER_IPV6_UDP(IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV6_UDP) +#define IAVF_RSS_TYPE_OUTER_IPV6_TCP (IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV6_TCP) +#define IAVF_RSS_TYPE_OUTER_IPV6_SCTP (IAVF_RSS_TYPE_OUTER_IPV6 | \
drivers/net/iavf/iavf_hash.c line 277
Quoted 2 lines
drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV6_SCTP) +/* Vlan IPV4 */
/* VLAN IPv4 */?
Quoted 15 lines
+#define
IAVF_RSS_TYPE_VLAN_IPV4(IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV4_UDP(IAVF_RSS_TYPE_OUTER_IPV4_UDP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV4_TCP(IAVF_RSS_TYPE_OUTER_IPV4_TCP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV4_SCTP(IAVF_RSS_TYPE_OUTER_IPV4_SCTP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
Quoted 2 lines
ETH_RSS_C_VLAN)
+/* vlan IPv6 */
Please keep consistent with above.
Quoted 1,587 lines
+#define
IAVF_RSS_TYPE_VLAN_IPV6(IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV6_UDP(IAVF_RSS_TYPE_OUTER_IPV6_UDP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV6_TCP(IAVF_RSS_TYPE_OUTER_IPV6_TCP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV6_SCTP(IAVF_RSS_TYPE_OUTER_IPV6_SCTP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)drivers/net/iavf/iavf_hash.c +18
-0+/* IPv4 inner */ +#define IAVF_RSS_TYPE_INNER_IPV4 ETH_RSS_IPV4 +#define IAVF_RSS_TYPE_INNER_IPV4_UDP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_UDP) +#define IAVF_RSS_TYPE_INNER_IPV4_TCP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_TCP) +#define IAVF_RSS_TYPE_INNER_IPV4_SCTP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_SCTP) +/* IPv6 inner */ +#define IAVF_RSS_TYPE_INNER_IPV6 ETH_RSS_IPV6 +#define IAVF_RSS_TYPE_INNER_IPV6_UDP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_UDP) +#define IAVF_RSS_TYPE_INNER_IPV6_TCP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_TCP) +#define IAVF_RSS_TYPE_INNER_IPV6_SCTP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_SCTP) +/* GTPU IPv4 */ +#define IAVF_RSS_TYPE_GTPU_IPV4 (IAVF_RSS_TYPE_INNER_IPV4 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV4_UDP (IAVF_RSS_TYPE_INNER_IPV4_UDP | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV4_TCP (IAVF_RSS_TYPE_INNER_IPV4_TCP | \drivers/net/iavf/iavf_hash.c +3
-0+ ETH_RSS_GTPU) +/* GTPU IPv6 */ +#define IAVF_RSS_TYPE_GTPU_IPV6 (IAVF_RSS_TYPE_INNER_IPV6 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV6_UDP (IAVF_RSS_TYPE_INNER_IPV6_UDP | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV6_TCP (IAVF_RSS_TYPE_INNER_IPV6_TCP | \drivers/net/iavf/iavf_hash.c +3
-0+ ETH_RSS_GTPU) +/* ESP, AH, L2TPV3 and PFCP */ +#define IAVF_RSS_TYPE_IPV4_ESP (ETH_RSS_ESP |
ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV4_AH(ETH_RSS_AH|ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV6_ESP(ETH_RSS_ESP|ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_IPV6_AH(ETH_RSS_AH|ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_IPV4_L2TPV3(ETH_RSS_L2TPV3|ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV6_L2TPV3(ETH_RSS_L2TPV3|ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_IPV4_PFCP(ETH_RSS_PFCP|ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV6_PFCP(ETH_RSS_PFCP|ETH_RSS_IPV6)drivers/net/iavf/iavf_hash.c +0
-742-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 },Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-6Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Quoted 6 lines
IAVF_PHINT_IPV6_TCP},
+/**
+ * Supported pattern for hash.
+ * The first member is pattern item type,
+ * the second member is input set mask,
+ * the third member is pattern hint for hash.
The doc should be align with the change.
drivers/net/iavf/iavf_hash.c
Quoted 192 lines
+ */
drivers/net/iavf/iavf_hash.c +3
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4, &outer_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4_UDP, &outer_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4_TCP, &outer_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4_SCTP, &outer_ipv4_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4, &outer_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4_UDP, &outer_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4_TCP, &outer_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4_SCTP, &outer_ipv4_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_ESP, &ipv4_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_ESP, &ipv4_udp_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_AH, &ipv4_ah_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_L2TPV3, &ipv4_l2tpv3_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_PFCP, &ipv4_pfcp_tmplt},drivers/net/iavf/iavf_hash.c +2
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6, &outer_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6_UDP, &outer_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6_TCP, &outer_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6_SCTP, &outer_ipv6_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6, &outer_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6_UDP, &outer_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6_TCP, &outer_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6_SCTP, &outer_ipv6_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_ESP, &ipv6_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_ESP, &ipv6_udp_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_AH, &ipv6_ah_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_L2TPV3, &ipv6_l2tpv3_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_PFCP, &ipv6_pfcp_tmplt},};
struct
virtchnl_proto_hdrs*iavf_hash_default_hdrs[] = {drivers/net/iavf/iavf_hash.c +8
-9Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
item++) {
drivers/net/iavf/iavf_hash.c +4
-18Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_GTPU_EH_DWNLINK;drivers/net/iavf/iavf_hash.c +3
-2Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Should "ly" be layer?
drivers/net/iavf/iavf_hash.c
Quoted 125 lines
drivers/net/iavf/iavf_hash.c +82
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
VIRTCHNL_PROTO_HDR_TCP_SRC_PORT);drivers/net/iavf/iavf_hash.c +8
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
VIRTCHNL_DEL_PROTO_HDR_FIELD(hdr,
+VIRTCHNL_PROTO_HDR_SCTP_DST_PORT);drivers/net/iavf/iavf_hash.c +2
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
VIRTCHNL_DEL_PROTO_HDR_FIELD(hdr,
+VIRTCHNL_PROTO_HDR_TCP_SRC_PORT);drivers/net/iavf/iavf_hash.c +11
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
What about the case of eh/esp/l2tpv3/pfcp protocols? Their template is involve the L3 protocols, but if no need to set L3 into input set.
Quoted 195 lines
drivers/net/iavf/iavf_hash.c +31
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
*proto_hdrs,drivers/net/iavf/iavf_hash.c +25
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
GTPU_EH_PDU_DWN);drivers/net/iavf/iavf_hash.c +2
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
GTPU_EH_PDU_UP);drivers/net/iavf/iavf_hash.c +38
-8Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_GTPU_EH_UPLINK) ||drivers/net/iavf/iavf_hash.c +0
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_GTPU_EH_DWNLINK) ||drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_GTPU_EH_UPLINK) ||drivers/net/iavf/iavf_hash.c +0
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_GTPU_EH_DWNLINK)) {drivers/net/iavf/iavf_hash.c +0
-2Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
RTE_DIM(iavf_gtpu_hash_map_list);drivers/net/iavf/iavf_hash.c +0
-6Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
*/
drivers/net/iavf/iavf_hash.c +2
-14Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
action,
drivers/net/iavf/iavf_hash.c +1
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
RTE_FLOW_ERROR_TYPE_ACTION,drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
supported");
drivers/net/iavf/iavf_hash.c +5
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
error:
drivers/net/iavf/iavf_hash.c +1
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
ret =
iavf_add_del_rss_cfg(ad, rss_cfg, true);
--
2.13.6
Part of the diff is not shown here. View the raw message.
Quoted 11 lines
-----Original Message-----
From: Guo, Jia <[email protected]>
Sent: Tuesday, September 8, 2020 1:38 PM
To: Zhang, Qi Z <[email protected]>
Cc: Guo, Junfeng <[email protected]>; Zhang, AlvinX <[email protected]>; [email protected]; Xing, Beilei <[email protected]>
Subject: RE: [PATCH] net/iavf: refactor RSSLooks good for that template usage, some comment as bellow,
Thanks for the captures, will fix in v2
Quoted 4,959 lines
Quoted 2,796 lines
-----Original Message-----
From: Zhang, Qi Z <[email protected]>
Sent: Friday, September 4, 2020 11:33 AM
To: Guo, Jia <[email protected]>
Cc: Guo, Junfeng <[email protected]>; Zhang, AlvinX <[email protected]>; [email protected]; Xing, Beilei <[email protected]>; Zhang, Qi Z <[email protected]>
Subject: [PATCH] net/iavf: refactor RSSCurrent RSS implementation is not easy to scale and maintain. The patch refactor the code base on below design:
1.
iavf_pattern_match_item->input_set_maskis the superset ofETH_RSS_xxx.
2.iavf_pattern_match_item->metais thevirtchnl_proto_hdrstemplate.
3.iavf_hash_parse_patternwill generate pattern hint.
4.iavf_hash_parse_actionwill refine thevirtchnl_proto_hdrsbase on pattern hint andETH_RSS_xxx.
5. The refine process include
1) refine field selector of l2, l3, l4.
2) insert gtpuproto_hdrat the begining base on pattern hint.
3) refine field selector for gtpu header.The patch reduce the code from 4000+ line to less than 1000.
Note:
The variableiavf_hash_pattern_listas the manifest of all supported pattern is intend to break the 80 char limitation for better review experience.Signed-off-by Qi Zhang <[email protected]>--- drivers/net/iavf/iavf_hash.c | 4110 ++++++------------------------------------ 1 file changed, 516 insertions(+), 3594 deletions(-)drivers/net/iavf/iavf_hash.c +70
-1793@@ -23,3622 +23,385 @@#include "iavf.h" #include "iavf_generic_flow.h" -enum iavf_pattern_hint_type { -IAVF_PHINT_NONE =0x00000000 , -IAVF_PHINT_IPV4 =0x00000001 , -IAVF_PHINT_IPV4_UDP =0x00000002 , -IAVF_PHINT_IPV4_TCP =0x00000004 , -IAVF_PHINT_IPV4_SCTP =0x00000008 , -IAVF_PHINT_IPV6 =0x00000010 , -IAVF_PHINT_IPV6_UDP =0x00000020 , -IAVF_PHINT_IPV6_TCP =0x00000040 , -IAVF_PHINT_IPV6_SCTP =0x00000080 , -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 -#define IAVF_GTPU_EH_UPLINK 1 - -struct iavf_pattern_match_type { -uint64_t pattern_hint; -}; - -struct iavf_hash_match_type { -uint64_t hash_type; -struct virtchnl_proto_hdrs *proto_hdrs; -uint64_t pattern_hint; -}; - -struct iavf_rss_meta { -struct virtchnl_proto_hdrs *proto_hdrs; -enum virtchnl_rss_algorithm rss_algorithm; -}; - -struct iavf_hash_flow_cfg { -struct virtchnl_rss_cfg *rss_cfg; -bool simple_xor; -}; - -static int -iavf_hash_init (struct iavf_adapter *ad); -static int -iavf_hash_create (struct iavf_adapter *ad,struct rte_flow *flow,void *meta, -struct rte_flow_error *error); -static int -iavf_hash_destroy (struct iavf_adapter *ad,struct rte_flow *flow, -struct rte_flow_error *error); -static void -iavf_hash_uninit (struct iavf_adapter *ad); -static void -iavf_hash_free (struct rte_flow *flow); -static int -iavf_hash_parse_pattern_action (struct iavf_adapter *ad, -struct iavf_pattern_match_item *array, -uint32_t array_len, -const struct rte_flow_item pattern[], -const struct rte_flow_action actions[], -void **meta, -struct rte_flow_error *error); - -static struct iavf_pattern_match_type phint_empty = { -IAVF_PHINT_NONE }; -static struct iavf_pattern_match_type phint_eth_ipv4 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_ipv4_udp = { -IAVF_PHINT_IPV4_UDP }; -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 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_ipv4_pfcp = { -IAVF_PHINT_IPV4_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4 = { -IAVF_PHINT_IPV4 }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_udp = { -IAVF_PHINT_IPV4_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_tcp = { -IAVF_PHINT_IPV4_TCP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv4_sctp = { -IAVF_PHINT_IPV4_SCTP }; -static struct iavf_pattern_match_type phint_eth_ipv6 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_ipv6_udp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_ipv6_tcp = { -IAVF_PHINT_IPV6_TCP }; -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 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_ipv6_pfcp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6 = { -IAVF_PHINT_IPV6 }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_udp = { -IAVF_PHINT_IPV6_UDP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_tcp = { -IAVF_PHINT_IPV6_TCP }; -static struct iavf_pattern_match_type phint_eth_vlan_ipv6_sctp = { -IAVF_PHINT_IPV6_SCTP }; - -/** -* Supported pattern for hash. -* The first member is pattern item type, -* the second member is input set mask, -* the third member is pattern hint for hash. -*/ -static struct iavf_pattern_match_item iavf_hash_pattern_list[] = { - {iavf_pattern_eth_ipv4,IAVF_INSET_NONE , &phint_eth_ipv4}, - {iavf_pattern_eth_ipv4_udp,IAVF_INSET_NONE , &phint_eth_ipv4_udp}, - {iavf_pattern_eth_ipv4_tcp,IAVF_INSET_NONE , &phint_eth_ipv4_tcp}, - {iavf_pattern_eth_ipv4_sctp,IAVF_INSET_NONE , &phint_eth_ipv4_sctp}, - {iavf_pattern_eth_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}, - {iavf_pattern_eth_ipv4_pfcp,IAVF_INSET_NONE , &phint_eth_ipv4_pfcp}, - {iavf_pattern_eth_vlan_ipv4,IAVF_INSET_NONE , &phint_eth_vlan_ipv4}, - {iavf_pattern_eth_vlan_ipv4_udp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_udp}, - {iavf_pattern_eth_vlan_ipv4_tcp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_tcp}, - {iavf_pattern_eth_vlan_ipv4_sctp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv4_sctp}, - {iavf_pattern_eth_ipv6,IAVF_INSET_NONE , &phint_eth_ipv6}, - {iavf_pattern_eth_ipv6_udp,IAVF_INSET_NONE , &phint_eth_ipv6_udp}, - {iavf_pattern_eth_ipv6_tcp,IAVF_INSET_NONE , &phint_eth_ipv6_tcp}, - {iavf_pattern_eth_ipv6_sctp,IAVF_INSET_NONE , &phint_eth_ipv6_sctp}, - {iavf_pattern_eth_ipv6_esp,IAVF_INSET_NONE , &phint_eth_ipv6_esp}, - {iavf_pattern_eth_ipv6_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}, - {iavf_pattern_eth_ipv6_pfcp,IAVF_INSET_NONE , &phint_eth_ipv6_pfcp}, - {iavf_pattern_eth_vlan_ipv6,IAVF_INSET_NONE , &phint_eth_vlan_ipv6}, - {iavf_pattern_eth_vlan_ipv6_udp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_udp}, - {iavf_pattern_eth_vlan_ipv6_tcp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_tcp}, - {iavf_pattern_eth_vlan_ipv6_sctp,IAVF_INSET_NONE , - &phint_eth_vlan_ipv6_sctp}, - {iavf_pattern_empty,IAVF_INSET_NONE , &phint_empty}, -}; - -#define TUNNEL_LEVEL_OUTER 0 -#define TUNNEL_LEVEL_FIRST_INNER 1 - -#define PROTO_COUNT_ONE 1 -#define PROTO_COUNT_TWO 2 -#define PROTO_COUNT_THREE 3 - -#define BUFF_NOUSED 0 -#define FIELD_FOR_PROTO_ONLY 0 - -#define FIELD_SELECTOR (proto_hdr_field) \ - (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) - -#define proto_hint_eth_src { \ - VIRTCHNL_PROTO_HDR_ETH,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_ETH_SRC ), \ - {BUFF_NOUSED } } - -#define proto_hint_eth_dst { \ - VIRTCHNL_PROTO_HDR_ETH,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_ETH_DST ), \ - {BUFF_NOUSED } } - -#define proto_hint_eth_only { \ - VIRTCHNL_PROTO_HDR_ETH, FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_eth { \ - VIRTCHNL_PROTO_HDR_ETH, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED } } - -#define proto_hint_svlan { \ - VIRTCHNL_PROTO_HDR_S_VLAN, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED } } - -#define proto_hint_cvlan { \ - VIRTCHNL_PROTO_HDR_C_VLAN, \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED } } - -#define proto_hint_ipv4_src { \ - VIRTCHNL_PROTO_HDR_IPV4,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV4_SRC ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv4_dst { \ -VIRTCHNL_PROTO_HDR_IPV4 ,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV4_DST ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv4_only { \ -VIRTCHNL_PROTO_HDR_IPV4 ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_ipv4 { \ -VIRTCHNL_PROTO_HDR_IPV4 , \ - 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 } } - -#define proto_hint_udp_dst_port { \ -VIRTCHNL_PROTO_HDR_UDP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_UDP_DST_PORT ), {BUFF_NOUSED } } - -#define proto_hint_udp_only { \ -VIRTCHNL_PROTO_HDR_UDP ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_udp { \ -VIRTCHNL_PROTO_HDR_UDP , \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_tcp_src_port { \ -VIRTCHNL_PROTO_HDR_TCP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_TCP_SRC_PORT ), {BUFF_NOUSED } } - -#define proto_hint_tcp_dst_port { \ -VIRTCHNL_PROTO_HDR_TCP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_TCP_DST_PORT ), {BUFF_NOUSED } } - -#define proto_hint_tcp_only { \ -VIRTCHNL_PROTO_HDR_TCP ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_tcp { \ -VIRTCHNL_PROTO_HDR_TCP , \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_sctp_src_port { \ -VIRTCHNL_PROTO_HDR_SCTP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT ), {BUFF_NOUSED } } - -#define proto_hint_sctp_dst_port { \ -VIRTCHNL_PROTO_HDR_SCTP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_SCTP_DST_PORT ), {BUFF_NOUSED } } - -#define proto_hint_sctp_only { \ -VIRTCHNL_PROTO_HDR_SCTP ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_sctp { \ -VIRTCHNL_PROTO_HDR_SCTP , \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ - FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT), {BUFF_NOUSED } } - -#define proto_hint_ipv6_src { \ -VIRTCHNL_PROTO_HDR_IPV6 ,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV6_SRC ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv6_dst { \ -VIRTCHNL_PROTO_HDR_IPV6 ,FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_IPV6_DST ), \ - {BUFF_NOUSED } } - -#define proto_hint_ipv6_only { \ -VIRTCHNL_PROTO_HDR_IPV6 ,FIELD_FOR_PROTO_ONLY , {BUFF_NOUSED } } - -#define proto_hint_ipv6 { \ -VIRTCHNL_PROTO_HDR_IPV6 , \ - 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 } } - -#define proto_hint_gtpu_dwn_only { \ -VIRTCHNL_PROTO_HDR_GTPU_EH_PDU_DWN , \ - FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } - -#define proto_hint_esp { \ -VIRTCHNL_PROTO_HDR_ESP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_ESP_SPI ), {BUFF_NOUSED } } - -#define proto_hint_ah { \ -VIRTCHNL_PROTO_HDR_AH , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_AH_SPI ), {BUFF_NOUSED } } - -#define proto_hint_l2tpv3 { \ -VIRTCHNL_PROTO_HDR_L2TPV3 , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID ), {BUFF_NOUSED } } - -#define proto_hint_pfcp { \ -VIRTCHNL_PROTO_HDR_PFCP , \ -FIELD_SELECTOR (VIRTCHNL_PROTO_HDR_PFCP_SEID ), {BUFF_NOUSED } } - -/* IPV4 */ - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth_src, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_src_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_src, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth_dst, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_dst_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth_dst, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_eth, - proto_hint_ipv4_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_eth_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_eth, - proto_hint_ipv4_only, proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_svlan, - proto_hint_ipv4_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_udp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_tcp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv4_only, proto_hint_sctp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_cvlan, - proto_hint_ipv4_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_udp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_tcp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv4_only, proto_hint_sctp_only} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_sctp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src_prot, - proto_hint_udp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_port = { -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_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_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_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_prot, - proto_hint_udp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp = { -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_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_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_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_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_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_prot, - proto_hint_tcp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_prot, - proto_hint_tcp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_src, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_dst, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_sctp_src_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_sctp_dst_port } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4, - proto_hint_sctp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_esp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_ah = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_ah } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_l2tpv3 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_l2tpv3 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_pfcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv4_only, - proto_hint_pfcp } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_ipv4_only, - proto_hint_udp_only, proto_hint_esp } -}; - -/* IPv4 GTPU IP */ - -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_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_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_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_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_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_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_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_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_teid_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_teid} -}; - -/* 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_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_ipv6_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_ip_only, - proto_hint_ipv6 } -}; - -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_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_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_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_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_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_ipv6_udp_src_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_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_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_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_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_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_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_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_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_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_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_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_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_ipv6_tcp_gtpu_ip = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_ip_only, - proto_hint_ipv6_prot, proto_hint_tcp} -}; - -/* 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_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_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_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_dst_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv4_prot, proto_hint_tcp} -}; - -/* IPv6 GTPU EH */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_eh_only, - proto_hint_ipv6 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_gtpu_eh = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_eh_only, - proto_hint_ipv6_prot, proto_hint_tcp} -}; - -/* IPv4 GTPU UP */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_udp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_tcp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv4 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_udp} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv4_prot, proto_hint_tcp} -}; - -/* IPv6 GTPU UP */ - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_udp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_prot, proto_hint_udp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_tcp_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_prot, proto_hint_tcp_only } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_TWO , {proto_hint_gtpu_up_only, - proto_hint_ipv6 } -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port} -}; - -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_gtpu_up = { -TUNNEL_LEVEL_FIRST_INNER ,PROTO_COUNT_THREE , {proto_hint_gtpu_up_only, - proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port} -}; +#define IAVF_PHINT_NONE 0 +#define IAVF_PHINT_GTPU BIT_ULL(0) +#define IAVF_PHINT_GTPU_EH BIT_ULL(1) +#define IAVF_PHINT_GTPU_EH_DWN BIT_ULL(2) +#define IAVF_PHINT_GTPU_EH_UP BIT_ULL(3) -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 } -}; +#define IAVF_PHINT_GTPU_MSK (IAVF_PHINT_GTPU | \ + IAVF_PHINT_GTPU_EH | \ + IAVF_PHINT_GTPU_EH_DWN | \ + IAVF_PHINT_GTPU_EH_UP) -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 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_svlan, - proto_hint_ipv6_only} -}; +#define IAVF_GTPU_EH_DWNLINK 0 +#define IAVF_GTPU_EH_UPLINK 1 -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_udp_only} +struct iavf_hash_match_type { + uint64_t hash_type; +struct virtchnl_proto_hdrs *proto_hdrs; +uint64_t pattern_hint; }; -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_tcp_only} +struct iavf_rss_meta { +struct virtchnl_proto_hdrs proto_hdrs; +enum virtchnl_rss_algorithm rss_algorithm; }; -struct virtchnl_proto_hdrs hdrs_hint_svlan_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_svlan, - proto_hint_ipv6_only, proto_hint_sctp_only} +struct iavf_hash_flow_cfg { +struct virtchnl_rss_cfg *rss_cfg; +bool simple_xor; }; -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_cvlan, - proto_hint_ipv6_only} -}; +static int +iavf_hash_init (struct iavf_adapter *ad); +static int +iavf_hash_create (struct iavf_adapter *ad,struct rte_flow *flow,void *meta, +struct rte_flow_error *error); +static int +iavf_hash_destroy (struct iavf_adapter *ad,struct rte_flow *flow, +struct rte_flow_error *error); +static void +iavf_hash_uninit (struct iavf_adapter *ad); +static void +iavf_hash_free (struct rte_flow *flow); +static int +iavf_hash_parse_pattern_action (struct iavf_adapter *ad, +struct iavf_pattern_match_item *array, +uint32_t array_len, +const struct rte_flow_item pattern[], +const struct rte_flow_action actions[], +void **meta, +struct rte_flow_error *error); -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_udp_only} -}; +#define FIELD_SELECTOR (proto_hdr_field) \ + (1UL << ((proto_hdr_field) & PROTO_HDR_FIELD_MASK)) +#define BUFF_NOUSED 0 -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_tcp_only} -}; +#define proto_hdr_eth { \ + VIRTCHNL_PROTO_HDR_ETH, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ETH_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_cvlan_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE , {proto_hint_cvlan, - proto_hint_ipv6_only, proto_hint_sctp_only} -}; +#define proto_hdr_svlan { \ + VIRTCHNL_PROTO_HDR_S_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_S_VLAN_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6_src } -}; +#define proto_hdr_cvlan { \ + VIRTCHNL_PROTO_HDR_C_VLAN, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_C_VLAN_ID), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6_dst } -}; +#define proto_hdr_ipv4 { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_ONE , {proto_hint_ipv6 } -}; +#define proto_hdr_ipv6 { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src_prot, - proto_hint_udp_only } -}; +#define proto_hdr_udp { \ + VIRTCHNL_PROTO_HDR_UDP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_DST_PORT), {BUFF_NOUSED} } -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst_prot, - proto_hint_udp_only } -}; +#define proto_hdr_tcp { \ + VIRTCHNL_PROTO_HDR_TCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_TCP_DST_PORT),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +4
-2- proto_hint_udp_only } -}; +#define proto_hdr_sctp { \ + VIRTCHNL_PROTO_HDR_SCTP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_SRC_PORT) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_SCTP_DST_PORT),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_tcp_only } -}; +#define proto_hdr_esp { \ + VIRTCHNL_PROTO_HDR_ESP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_ESP_SPI),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_tcp_only } -}; +#define proto_hdr_ah { \ + VIRTCHNL_PROTO_HDR_AH, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_AH_SPI),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_tcp_only } -}; +#define proto_hdr_l2tpv3 { \ + VIRTCHNL_PROTO_HDR_L2TPV3, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_L2TPV3_SESS_ID),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +3
-2- proto_hint_sctp_only } -}; +#define proto_hdr_pfcp { \ + VIRTCHNL_PROTO_HDR_PFCP, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_PFCP_SEID),{
BUFF_NOUSED} }drivers/net/iavf/iavf_hash.c +0
-2-struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +2
-4- proto_hint_sctp_only } -}; +#define TUNNEL_LEVEL_OUTER 0 +#define TUNNEL_LEVEL_INNER 1 -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_only = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_sctp_only } +/* proto_hdrs template */ +struct virtchnl_proto_hdrs outer_ipv4_tmplt = { +TUNNEL_LEVEL_OUTER ,4 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv4_udp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv4_tcp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv4_sctp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv4, + proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +3
-3- proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv6_tmplt = { +TUNNEL_LEVEL_OUTER ,4 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_src_port } +struct virtchnl_proto_hdrs outer_ipv6_udp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp_dst_port } +struct virtchnl_proto_hdrs outer_ipv6_tcp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +4
-3- proto_hint_udp } +struct virtchnl_proto_hdrs outer_ipv6_sctp_tmplt = { +TUNNEL_LEVEL_OUTER ,5 , + {proto_hdr_eth, proto_hdr_svlan, proto_hdr_cvlan, proto_hdr_ipv6, + proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv4_tmplt = { +TUNNEL_LEVEL_INNER ,1 , {proto_hdr_ipv4} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_src_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv4_udp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv4_tcp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_dst_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv4_sctp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv4, proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_src_port } +struct virtchnl_proto_hdrs inner_ipv6_tmplt = { +TUNNEL_LEVEL_INNER ,1 , {proto_hdr_ipv6} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only_prot,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_tcp_dst_port } +struct virtchnl_proto_hdrs inner_ipv6_udp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_udp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_prot,drivers/net/iavf/iavf_hash.c +11
-15- proto_hint_tcp } +struct virtchnl_proto_hdrs inner_ipv6_tcp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_tcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs inner_ipv6_sctp_tmplt = { +TUNNEL_LEVEL_INNER ,2 , {proto_hdr_ipv6, proto_hdr_sctp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_src, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv4_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst, - proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs ipv4_udp_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,3 , + {proto_hdr_ipv4, proto_hdr_udp, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6_dst, - proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv4_ah_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_ah} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_src_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_sctp_src_port } +struct virtchnl_proto_hdrs ipv6_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp_dst_port = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +5
-6- proto_hint_sctp_dst_port } +struct virtchnl_proto_hdrs ipv6_udp_esp_tmplt = { +TUNNEL_LEVEL_OUTER ,3 , + {proto_hdr_ipv6, proto_hdr_udp, proto_hdr_esp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_sctp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO , {proto_hint_ipv6, - proto_hint_sctp } +struct virtchnl_proto_hdrs ipv6_ah_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_ah} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_esp } +struct virtchnl_proto_hdrs ipv4_l2tpv3_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_l2tpv3} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_ah = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_ah } +struct virtchnl_proto_hdrs ipv6_l2tpv3_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_l2tpv3} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_l2tpv3 = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_l2tpv3 } +struct virtchnl_proto_hdrs ipv4_pfcp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv4, proto_hdr_pfcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_pfcp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_TWO ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +2
-3- proto_hint_pfcp } +struct virtchnl_proto_hdrs ipv6_pfcp_tmplt = { +TUNNEL_LEVEL_OUTER ,2 , {proto_hdr_ipv6, proto_hdr_pfcp} }; -struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_esp = { -TUNNEL_LEVEL_OUTER ,PROTO_COUNT_THREE ,{
proto_hint_ipv6_only,drivers/net/iavf/iavf_hash.c +1
-48- proto_hint_udp_only, proto_hint_esp } -}; +/* rss type super set */ -struct iavf_hash_match_type iavf_hash_map_list[] = { -/* IPV4 */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4,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 , - &hdrs_hint_ipv4_dst,IAVF_PHINT_IPV4 }, - {ETH_RSS_IPV4 , - &hdrs_hint_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_ESP , - &hdrs_hint_ipv4_esp,IAVF_PHINT_IPV4 }, - {ETH_RSS_AH , - &hdrs_hint_ipv4_ah,IAVF_PHINT_IPV4 }, - {ETH_RSS_L2TPV3 , - &hdrs_hint_ipv4_l2tpv3,IAVF_PHINT_IPV4 }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_S_VLAN , - &hdrs_hint_svlan_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4,IAVF_PHINT_IPV4 }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_tcp,IAVF_PHINT_IPV4_TCP }, - {ETH_RSS_C_VLAN , - &hdrs_hint_cvlan_ipv4_sctp,IAVF_PHINT_IPV4_SCTP }, -/* IPV4 UDP */ - {ETH_RSS_L2_SRC_ONLY , - &hdrs_hint_eth_src_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_L2_DST_ONLY , - &hdrs_hint_eth_dst_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_ETH , - &hdrs_hint_eth_ipv4_udp,IAVF_PHINT_IPV4_UDP }, - {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_udp_src_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_src_udp_dst_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV4_UDP | -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 , - &hdrs_hint_ipv4_dst_udp_src_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_dst_udp_dst_port,
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-54- {ETH_RSS_NONFRAG_IPV4_UDP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_udp, - 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, - &hdrs_hint_ipv4_udp_dst_port, IAVF_PHINT_IPV4_UDP}, - {ETH_RSS_PFCP, - &hdrs_hint_ipv4_pfcp, IAVF_PHINT_IPV4_UDP}, - {ETH_RSS_ESP, - &hdrs_hint_ipv4_udp_esp, IAVF_PHINT_IPV4_UDP}, - {ETH_RSS_NONFRAG_IPV4_UDP, - &hdrs_hint_ipv4_udp, IAVF_PHINT_IPV4_UDP}, -/* IPV4 TCP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_IPV4_TCP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_tcp_src_port, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV4_TCP | -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 , - &hdrs_hint_ipv4_dst_tcp_src_port, 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_port, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_IPV4_TCP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_tcp, - 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, - &hdrs_hint_ipv4_tcp_dst_port, IAVF_PHINT_IPV4_TCP}, - {ETH_RSS_NONFRAG_IPV4_TCP, - &hdrs_hint_ipv4_tcp, IAVF_PHINT_IPV4_TCP}, -/* IPV4 SCTP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv4_src_sctp_src_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_src_sctp_dst_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV4_SCTP | -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 , - &hdrs_hint_ipv4_dst_sctp_src_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv4_dst_sctp_dst_port,
IAVF_PHINT_IPV4_SCTP},drivers/net/iavf/iavf_hash.c +0
-38- {ETH_RSS_NONFRAG_IPV4_SCTP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv4_dst_sctp, - 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, - &hdrs_hint_ipv4_sctp_dst_port, IAVF_PHINT_IPV4_SCTP}, - {ETH_RSS_NONFRAG_IPV4_SCTP, - &hdrs_hint_ipv4_sctp, IAVF_PHINT_IPV4_SCTP}, -/* IPV6 */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6, IAVF_PHINT_IPV6}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6, IAVF_PHINT_IPV6}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6, 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, - &hdrs_hint_ipv6_dst, IAVF_PHINT_IPV6}, - {ETH_RSS_IPV6, - &hdrs_hint_ipv6, IAVF_PHINT_IPV6}, - {ETH_RSS_ESP, - &hdrs_hint_ipv6_esp, IAVF_PHINT_IPV6}, - {ETH_RSS_AH, - &hdrs_hint_ipv6_ah, IAVF_PHINT_IPV6}, - {ETH_RSS_L2TPV3, - &hdrs_hint_ipv6_l2tpv3, IAVF_PHINT_IPV6}, -/* IPV6 UDP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6_udp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6_udp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6_udp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_udp_src_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_src_udp_dst_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV6_UDP | -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 , - &hdrs_hint_ipv6_dst_udp_src_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_dst_udp_dst_port,
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-54- {ETH_RSS_NONFRAG_IPV6_UDP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_udp, - 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, - &hdrs_hint_ipv6_udp_dst_port, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_PFCP, - &hdrs_hint_ipv6_pfcp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_ESP, - &hdrs_hint_ipv6_udp_esp, IAVF_PHINT_IPV6_UDP}, - {ETH_RSS_NONFRAG_IPV6_UDP, - &hdrs_hint_ipv6_udp, IAVF_PHINT_IPV6_UDP}, -/* IPV6 TCP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_IPV6_TCP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_tcp_src_port, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_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_NONFRAG_IPV6_TCP | -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 , - &hdrs_hint_ipv6_dst_tcp_src_port, 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_port, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_IPV6_TCP | -ETH_RSS_L3_DST_ONLY , &hdrs_hint_ipv6_dst_tcp, - 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, - &hdrs_hint_ipv6_tcp_dst_port, IAVF_PHINT_IPV6_TCP}, - {ETH_RSS_NONFRAG_IPV6_TCP, - &hdrs_hint_ipv6_tcp, IAVF_PHINT_IPV6_TCP}, -/* IPV6 SCTP */ - {ETH_RSS_L2_SRC_ONLY, - &hdrs_hint_eth_src_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_L2_DST_ONLY, - &hdrs_hint_eth_dst_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_ETH, - &hdrs_hint_eth_ipv6_sctp, IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_src_sctp_src_port,
IAVF_PHINT_IPV6_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY |ETH_RSS_L4_DST_ONLY , - &hdrs_hint_ipv6_src_sctp_dst_port,
IAVF_PHINT_IPV6_SCTP},drivers/net/iavf/iavf_hash.c +0
-6- {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_SRC_ONLY , &hdrs_hint_ipv6_src_sctp, - IAVF_PHINT_IPV6_SCTP}, - {ETH_RSS_NONFRAG_IPV6_SCTP | -ETH_RSS_L3_DST_ONLY |ETH_RSS_L4_SRC_ONLY , - &hdrs_hint_ipv6_dst_sctp_src_port,
IAVF_PHINT_IPV6_SCTP},drivers/net/iavf/iavf_hash.c +0
-3- {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},drivers/net/iavf/iavf_hash.c +2
-26- {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}, -}; +/* IPv4 outer */ +#define IAVF_RSS_TYPE_OUTER_IPV4 (ETH_RSS_ETH |
ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_OUTER_IPV4_UDP(IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c
Quoted 1 line
drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_NONFRAG_IPV4_UDP)It should be considerate that "
ETH_RSS_IPV4" | "ETH_RSS_NONFRAG_IPV4_UDP" make sense, and if it should not and then we should not need to check after when parsing the input set.Quoted 17 lines
+#define
IAVF_RSS_TYPE_OUTER_IPV4_TCP(IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV4_TCP) +#define IAVF_RSS_TYPE_OUTER_IPV4_SCTP (IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c +3
-0+ ETH_RSS_NONFRAG_IPV4_SCTP) +/* IPv6 outer */ +#define IAVF_RSS_TYPE_OUTER_IPV6 (ETH_RSS_ETH |
ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_OUTER_IPV6_UDP(IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV6_UDP) +#define IAVF_RSS_TYPE_OUTER_IPV6_TCP (IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV6_TCP) +#define IAVF_RSS_TYPE_OUTER_IPV6_SCTP (IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c line 277
Quoted 2 lines
drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_NONFRAG_IPV6_SCTP) +/* Vlan IPV4 */ /* VLAN IPv4 */?
Quoted 15 lines
+#define
IAVF_RSS_TYPE_VLAN_IPV4(IAVF_RSS_TYPE_OUTER_IPV4 | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV4_UDP(IAVF_RSS_TYPE_OUTER_IPV4_UDP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV4_TCP(IAVF_RSS_TYPE_OUTER_IPV4_TCP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV4_SCTP(IAVF_RSS_TYPE_OUTER_IPV4_SCTP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |Quoted 2 lines
ETH_RSS_C_VLAN)
+/* vlan IPv6 */Please keep consistent with above.
Quoted 1,587 lines
+#define
IAVF_RSS_TYPE_VLAN_IPV6(IAVF_RSS_TYPE_OUTER_IPV6 | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV6_UDP(IAVF_RSS_TYPE_OUTER_IPV6_UDP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV6_TCP(IAVF_RSS_TYPE_OUTER_IPV6_TCP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)
+#defineIAVF_RSS_TYPE_VLAN_IPV6_SCTP(IAVF_RSS_TYPE_OUTER_IPV6_SCTP | \drivers/net/iavf/iavf_hash.c +1
-0+ ETH_RSS_S_VLAN |
ETH_RSS_C_VLAN)drivers/net/iavf/iavf_hash.c +18
-0+/* IPv4 inner */ +#define IAVF_RSS_TYPE_INNER_IPV4 ETH_RSS_IPV4 +#define IAVF_RSS_TYPE_INNER_IPV4_UDP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_UDP) +#define IAVF_RSS_TYPE_INNER_IPV4_TCP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_TCP) +#define IAVF_RSS_TYPE_INNER_IPV4_SCTP (ETH_RSS_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_SCTP) +/* IPv6 inner */ +#define IAVF_RSS_TYPE_INNER_IPV6 ETH_RSS_IPV6 +#define IAVF_RSS_TYPE_INNER_IPV6_UDP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_UDP) +#define IAVF_RSS_TYPE_INNER_IPV6_TCP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_TCP) +#define IAVF_RSS_TYPE_INNER_IPV6_SCTP (ETH_RSS_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_SCTP) +/* GTPU IPv4 */ +#define IAVF_RSS_TYPE_GTPU_IPV4 (IAVF_RSS_TYPE_INNER_IPV4 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV4_UDP (IAVF_RSS_TYPE_INNER_IPV4_UDP | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV4_TCP (IAVF_RSS_TYPE_INNER_IPV4_TCP | \drivers/net/iavf/iavf_hash.c +3
-0+ ETH_RSS_GTPU) +/* GTPU IPv6 */ +#define IAVF_RSS_TYPE_GTPU_IPV6 (IAVF_RSS_TYPE_INNER_IPV6 | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV6_UDP (IAVF_RSS_TYPE_INNER_IPV6_UDP | \drivers/net/iavf/iavf_hash.c +2
-0+ ETH_RSS_GTPU) +#define IAVF_RSS_TYPE_GTPU_IPV6_TCP (IAVF_RSS_TYPE_INNER_IPV6_TCP | \drivers/net/iavf/iavf_hash.c +3
-0+ ETH_RSS_GTPU) +/* ESP, AH, L2TPV3 and PFCP */ +#define IAVF_RSS_TYPE_IPV4_ESP (ETH_RSS_ESP |
ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV4_AH(ETH_RSS_AH|ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV6_ESP(ETH_RSS_ESP|ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_IPV6_AH(ETH_RSS_AH|ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_IPV4_L2TPV3(ETH_RSS_L2TPV3|ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV6_L2TPV3(ETH_RSS_L2TPV3|ETH_RSS_IPV6)
+#defineIAVF_RSS_TYPE_IPV4_PFCP(ETH_RSS_PFCP|ETH_RSS_IPV4)
+#defineIAVF_RSS_TYPE_IPV6_PFCP(ETH_RSS_PFCP|ETH_RSS_IPV6)drivers/net/iavf/iavf_hash.c +0
-742-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 },Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-6Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_UDP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_TCP},drivers/net/iavf/iavf_hash.c +0
-5Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-4Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_TCP},drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Quoted 6 lines
IAVF_PHINT_IPV6_TCP},
+/**
+ * Supported pattern for hash.
+ * The first member is pattern item type,
+ * the second member is input set mask,
+ * the third member is pattern hint for hash.The doc should be align with the change.
drivers/net/iavf/iavf_hash.c
Quoted 192 lines
+ */
drivers/net/iavf/iavf_hash.c +3
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4, &outer_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4_UDP, &outer_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4_TCP, &outer_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV4_SCTP, &outer_ipv4_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4, &outer_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4_UDP, &outer_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4_TCP, &outer_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV4_SCTP, &outer_ipv4_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4, &inner_ipv4_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_UDP, &inner_ipv4_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV4_TCP, &inner_ipv4_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_ESP, &ipv4_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_ESP, &ipv4_udp_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_AH, &ipv4_ah_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_L2TPV3, &ipv4_l2tpv3_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV4_PFCP, &ipv4_pfcp_tmplt},drivers/net/iavf/iavf_hash.c +2
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6, &outer_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6_UDP, &outer_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6_TCP, &outer_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_OUTER_IPV6_SCTP, &outer_ipv6_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6, &outer_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6_UDP, &outer_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6_TCP, &outer_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_VLAN_IPV6_SCTP, &outer_ipv6_sctp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6, &inner_ipv6_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_UDP, &inner_ipv6_udp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_GTPU_IPV6_TCP, &inner_ipv6_tcp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_ESP, &ipv6_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_ESP, &ipv6_udp_esp_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_AH, &ipv6_ah_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_L2TPV3, &ipv6_l2tpv3_tmplt},drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_RSS_TYPE_IPV6_PFCP, &ipv6_pfcp_tmplt},};
struct
virtchnl_proto_hdrs*iavf_hash_default_hdrs[] = {drivers/net/iavf/iavf_hash.c +8
-9Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
item++) {
drivers/net/iavf/iavf_hash.c +4
-18Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_GTPU_EH_DWNLINK;drivers/net/iavf/iavf_hash.c +3
-2Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
Should "ly" be layer?
drivers/net/iavf/iavf_hash.c
Quoted 125 lines
drivers/net/iavf/iavf_hash.c +82
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
VIRTCHNL_PROTO_HDR_TCP_SRC_PORT);drivers/net/iavf/iavf_hash.c +8
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
VIRTCHNL_DEL_PROTO_HDR_FIELD(hdr,
+VIRTCHNL_PROTO_HDR_SCTP_DST_PORT);drivers/net/iavf/iavf_hash.c +2
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
VIRTCHNL_DEL_PROTO_HDR_FIELD(hdr,
+VIRTCHNL_PROTO_HDR_TCP_SRC_PORT);drivers/net/iavf/iavf_hash.c +11
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
What about the case of eh/esp/l2tpv3/pfcp protocols? Their template is involve the L3 protocols, but if no need to set L3 into input set.
Quoted 195 lines
drivers/net/iavf/iavf_hash.c +31
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
*proto_hdrs,drivers/net/iavf/iavf_hash.c +25
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
GTPU_EH_PDU_DWN);drivers/net/iavf/iavf_hash.c +2
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
GTPU_EH_PDU_UP);drivers/net/iavf/iavf_hash.c +38
-8Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_GTPU_EH_UPLINK) ||drivers/net/iavf/iavf_hash.c +0
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV4_GTPU_EH_DWNLINK) ||drivers/net/iavf/iavf_hash.c +0
-3Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_GTPU_EH_UPLINK) ||drivers/net/iavf/iavf_hash.c +0
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
IAVF_PHINT_IPV6_GTPU_EH_DWNLINK)) {drivers/net/iavf/iavf_hash.c +0
-2Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
RTE_DIM(iavf_gtpu_hash_map_list);drivers/net/iavf/iavf_hash.c +0
-6Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
*/
drivers/net/iavf/iavf_hash.c +2
-14Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
action,
drivers/net/iavf/iavf_hash.c +1
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
RTE_FLOW_ERROR_TYPE_ACTION,drivers/net/iavf/iavf_hash.c +1
-0Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
supported");
drivers/net/iavf/iavf_hash.c +5
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
error:
drivers/net/iavf/iavf_hash.c +1
-1Lines of this file are not shown. View the raw message.
The rest of this diff is not shown. View the raw message.
ret =
iavf_add_del_rss_cfg(ad, rss_cfg, true);
--
2.13.6
Part of the diff is not shown here. View the raw message.