(const ice_bitmap_t *)ice_ptypes_ipv4_il;
ice_and_bitmap(params->ptypes, params->ptypes, src,
ICE_FLOW_PTYPE_MAX);
+ if (hdrs & ICE_FLOW_SEG_HDR_UDP) {
+ src = (const ice_bitmap_t *)ice_ptypes_udp_il;
+ ice_and_bitmap(params->ptypes,
+ params->ptypes, src,
+ ICE_FLOW_PTYPE_MAX);
+ } else if (hdrs & ICE_FLOW_SEG_HDR_TCP) {
+ ice_and_bitmap(params->ptypes, params->ptypes,
+ (const ice_bitmap_t *)
+ ice_ptypes_tcp_il,
+ ICE_FLOW_PTYPE_MAX);
+ } else if (hdrs & ICE_FLOW_SEG_HDR_SCTP) {
+ src = (const ice_bitmap_t *)ice_ptypes_sctp_il;
+ ice_and_bitmap(params->ptypes, params->ptypes,
+ src, ICE_FLOW_PTYPE_MAX);
+ }
} else if (hdrs & ICE_FLOW_SEG_HDR_IPV6) {
src = !i ? (const ice_bitmap_t *)ice_ptypes_ipv6_ofos :
(const ice_bitmap_t *)ice_ptypes_ipv6_il;
ice_and_bitmap(params->ptypes, params->ptypes, src,
ICE_FLOW_PTYPE_MAX);
+ if (hdrs & ICE_FLOW_SEG_HDR_UDP) {
+ src = (const ice_bitmap_t *)ice_ptypes_udp_il;
+ ice_and_bitmap(params->ptypes,
+ params->ptypes, src,
+ ICE_FLOW_PTYPE_MAX);
+ } else if (hdrs & ICE_FLOW_SEG_HDR_TCP) {
+ ice_and_bitmap(params->ptypes, params->ptypes,
+ (const ice_bitmap_t *)
+ ice_ptypes_tcp_il,
+ ICE_FLOW_PTYPE_MAX);
+ } else if (hdrs & ICE_FLOW_SEG_HDR_SCTP) {
+ src = (const ice_bitmap_t *)ice_ptypes_sctp_il;
+ ice_and_bitmap(params->ptypes, params->ptypes,
+ src, ICE_FLOW_PTYPE_MAX);
+ }
}
if (hdrs & ICE_FLOW_SEG_HDR_ICMP) {
(const ice_bitmap_t *)ice_ptypes_icmp_il;
ice_and_bitmap(params->ptypes, params->ptypes, src,
ICE_FLOW_PTYPE_MAX);
- } else if (hdrs & ICE_FLOW_SEG_HDR_UDP) {
- src = (const ice_bitmap_t *)ice_ptypes_udp_il;
- ice_and_bitmap(params->ptypes, params->ptypes, src,
- ICE_FLOW_PTYPE_MAX);
- } else if (hdrs & ICE_FLOW_SEG_HDR_TCP) {
- ice_and_bitmap(params->ptypes, params->ptypes,
- (const ice_bitmap_t *)ice_ptypes_tcp_il,
- ICE_FLOW_PTYPE_MAX);
- } else if (hdrs & ICE_FLOW_SEG_HDR_SCTP) {
- src = (const ice_bitmap_t *)ice_ptypes_sctp_il;
- ice_and_bitmap(params->ptypes, params->ptypes, src,
- ICE_FLOW_PTYPE_MAX);
} else if (hdrs & ICE_FLOW_SEG_HDR_GRE) {
if (!i) {
src = (const ice_bitmap_t *)ice_ptypes_gre_of;
struct rss_type_match_hdr hint_8 = {
ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_SCTP, ETH_RSS_NONFRAG_IPV6_SCTP};
struct rss_type_match_hdr hint_9 = {
- ICE_FLOW_SEG_HDR_GTPU_IP, ETH_RSS_IPV4};
+ ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_IPV4};
struct rss_type_match_hdr hint_10 = {
ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_IPV4};
struct rss_type_match_hdr hint_11 = {
ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_NONFRAG_IPV4_TCP};
struct rss_type_match_hdr hint_13 = {
ICE_FLOW_SEG_HDR_PPPOE, ETH_RSS_NONFRAG_IPV4_SCTP};
+struct rss_type_match_hdr hint_14 = {
+ ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_UDP};
+struct rss_type_match_hdr hint_15 = {
+ ICE_FLOW_SEG_HDR_GTPU_EH, ETH_RSS_NONFRAG_IPV4_TCP};
/* Supported pattern for os default package. */
static struct ice_pattern_match_item ice_hash_pattern_list_os[] = {
{pattern_eth_ipv6_sctp, ICE_INSET_NONE, &hint_8},
{pattern_empty, ICE_INSET_NONE, &hint_0},
{pattern_eth_ipv4_gtpu_eh_ipv4, ICE_INSET_NONE, &hint_9},
- {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_INSET_NONE, &hint_9},
- {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, &hint_9},
+ {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_INSET_NONE, &hint_14},
+ {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, &hint_15},
{pattern_eth_pppoes_ipv4, ICE_INSET_NONE, &hint_10},
{pattern_eth_pppoes_ipv4_udp, ICE_INSET_NONE, &hint_11},
{pattern_eth_pppoes_ipv4_tcp, ICE_INSET_NONE, &hint_12},