From patchwork Tue Jul 7 05:14:05 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 73364 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 664F5A00BE; Tue, 7 Jul 2020 07:15:13 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DC7A81D922; Tue, 7 Jul 2020 07:14:59 +0200 (CEST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id 8C1A31D6E8 for ; Tue, 7 Jul 2020 07:14:58 +0200 (CEST) IronPort-SDR: MyObEZsvJc9LSBn/IUOoy6m6XgOuSL/u8reqIARXF386gy6RAvSomRM3W61wcgkdV4QDWBLvs2 +QN7Ju5++l9w== X-IronPort-AV: E=McAfee;i="6000,8403,9674"; a="135005668" X-IronPort-AV: E=Sophos;i="5.75,321,1589266800"; d="scan'208";a="135005668" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 Jul 2020 22:14:58 -0700 IronPort-SDR: xprN6Af4YwY3g2FN09kbECkh4LcFohb+N0PYMN/BUwtc+EROHXIw0SPzNPCRb8qA56zE3X7JYt G6WDYE1ouyMw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,321,1589266800"; d="scan'208";a="315402637" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by fmsmga002.fm.intel.com with ESMTP; 06 Jul 2020 22:14:55 -0700 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, beilei.xing@intel.com Cc: dev@dpdk.org, junfeng.guo@intel.com, qiming.yang@intel.com, simei.su@intel.com, jia.guo@intel.com Date: Tue, 7 Jul 2020 13:14:05 +0800 Message-Id: <20200707051406.13817-3-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200707051406.13817-1-jia.guo@intel.com> References: <20200621140235.20488-1-jia.guo@intel.com> <20200707051406.13817-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev v5 2/3] net/iavf: enable 5 tuple rss hash X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Previous iavf not support 5 tuple hash, this patch aims to enable it for regular ip pattern and also GTPU inner ip pattern, the 5 tuple involves ip src and ip dst, tcp sport and tcp dport, udp sport and udp dport and protocol id. Signed-off-by: Jeff Guo --- v5->v4: no change --- drivers/net/iavf/iavf_hash.c | 268 ++++++++++++++++++++--------------- 1 file changed, 156 insertions(+), 112 deletions(-) diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c index 3ef97e9a2..b3b36cbc7 100644 --- a/drivers/net/iavf/iavf_hash.c +++ b/drivers/net/iavf/iavf_hash.c @@ -240,6 +240,28 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = { FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST), {BUFF_NOUSED } } +#define proto_hint_ipv4_src_prot { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), \ + {BUFF_NOUSED } } + +#define proto_hint_ipv4_dst_prot { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), \ + {BUFF_NOUSED } } + +#define proto_hint_ipv4_only_prot { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), {BUFF_NOUSED } } + +#define proto_hint_ipv4_prot { \ + VIRTCHNL_PROTO_HDR_IPV4, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_DST) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV4_PROT), {BUFF_NOUSED } } + #define proto_hint_udp_src_port { \ VIRTCHNL_PROTO_HDR_UDP, \ FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_UDP_SRC_PORT), {BUFF_NOUSED } } @@ -304,6 +326,28 @@ static struct iavf_pattern_match_item iavf_hash_pattern_list[] = { FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST), {BUFF_NOUSED } } +#define proto_hint_ipv6_src_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), \ + {BUFF_NOUSED } } + +#define proto_hint_ipv6_dst_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), \ + {BUFF_NOUSED } } + +#define proto_hint_ipv6_only_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } + +#define proto_hint_ipv6_prot { \ + VIRTCHNL_PROTO_HDR_IPV6, \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_SRC) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_DST) | \ + FIELD_SELECTOR(VIRTCHNL_PROTO_HDR_IPV6_PROT), {BUFF_NOUSED } } + #define proto_hint_gtpu_eh_only { \ VIRTCHNL_PROTO_HDR_GTPU_EH, \ FIELD_FOR_PROTO_ONLY, {BUFF_NOUSED } } @@ -447,72 +491,72 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4 = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot, proto_hint_udp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot, proto_hint_udp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot, proto_hint_udp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot, proto_hint_udp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot, proto_hint_udp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot, proto_hint_udp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot, proto_hint_udp } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot, proto_hint_tcp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_tcp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_src_prot, proto_hint_tcp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot, proto_hint_tcp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_tcp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_dst_prot, proto_hint_tcp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot, proto_hint_tcp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_only_prot, proto_hint_tcp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_tcp = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv4_prot, proto_hint_tcp } }; @@ -579,23 +623,23 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_esp = { /* GTPU EH */ struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_eh = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp_dst_port} + 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 = { @@ -604,23 +648,23 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_eh = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_eh = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp_dst_port} + 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 = { @@ -634,55 +678,55 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_eh = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_eh = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp_dst_port} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_udp} + 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_TWO, {proto_hint_gtpu_eh_only, - proto_hint_tcp} + TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_eh_only, + proto_hint_ipv4_prot, proto_hint_tcp} }; /* GTPU UP */ struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_up = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp_dst_port} + 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 = { @@ -691,23 +735,23 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_up = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_up = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp_dst_port} + 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 = { @@ -721,55 +765,55 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_up = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_up = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp_dst_port} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_udp} + 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_TWO, {proto_hint_gtpu_up_only, - proto_hint_tcp} + TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_up_only, + proto_hint_ipv4_prot, proto_hint_tcp} }; /* GTPU DWN */ struct virtchnl_proto_hdrs hdrs_hint_ipv4_udp_src_gtpu_dwn = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp_dst_port} + 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 = { @@ -778,23 +822,23 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_gtpu_dwn = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_src_udp_src_gtpu_dwn = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp_dst_port} + 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 = { @@ -808,33 +852,33 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv4_gtpu_dwn = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv4_dst_udp_src_gtpu_dwn = { - TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp_src_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp_dst_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp_src_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp_dst_port} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_udp} + 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_TWO, {proto_hint_gtpu_dwn_only, - proto_hint_tcp} + TUNNEL_LEVEL_FIRST_INNER, PROTO_COUNT_THREE, {proto_hint_gtpu_dwn_only, + proto_hint_ipv4_prot, proto_hint_tcp} }; /* IPV6 */ @@ -952,72 +996,72 @@ struct virtchnl_proto_hdrs hdrs_hint_ipv6 = { }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot, proto_hint_udp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_udp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot, proto_hint_udp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot, proto_hint_udp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_udp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot, proto_hint_udp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot, proto_hint_udp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot, proto_hint_udp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_udp = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot, proto_hint_udp } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot, proto_hint_tcp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_src_tcp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_src_prot, proto_hint_tcp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot, proto_hint_tcp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_dst_tcp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_dst_prot, proto_hint_tcp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_src_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot, proto_hint_tcp_src_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp_dst_port = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_only_prot, proto_hint_tcp_dst_port } }; struct virtchnl_proto_hdrs hdrs_hint_ipv6_tcp = { - TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6, + TUNNEL_LEVEL_OUTER, PROTO_COUNT_TWO, {proto_hint_ipv6_prot, proto_hint_tcp } };