From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 768C4A00BE; Fri, 12 Jun 2020 17:56:32 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DE5141C118; Fri, 12 Jun 2020 17:55:38 +0200 (CEST) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 8D1A6FFA for ; Fri, 12 Jun 2020 10:12:11 +0200 (CEST) IronPort-SDR: f+3wqwjl27bGJSh7wcYxSI6c3ddtX2JnZ4NcgZk0mDq9qA1Su7b6sqNZ1f41UO0SAU5M4/PYCV r23wUnkwX4+Q== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jun 2020 01:12:11 -0700 IronPort-SDR: Z7wfXMJQ9y4NVwbSetj9t7jpocjp83P6N/0TFL/a9i+U7eyUiOaP12QoBDFcrVmht5A2gFDCXI ro2syHFQy/Nw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,502,1583222400"; d="scan'208";a="260914989" Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.102]) by fmsmga008.fm.intel.com with ESMTP; 12 Jun 2020 01:12:08 -0700 From: Junfeng Guo To: qi.z.zhang@intel.com, xiaolong.ye@intel.com, beilei.xing@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, junfeng.guo@intel.com, simei.su@intel.com Date: Fri, 12 Jun 2020 16:10:32 +0800 Message-Id: <20200612081032.54201-3-junfeng.guo@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200612081032.54201-1-junfeng.guo@intel.com> References: <20200612081032.54201-1-junfeng.guo@intel.com> X-Mailman-Approved-At: Fri, 12 Jun 2020 17:55:29 +0200 Subject: [dpdk-dev] [PATCH 2/2] net/iavf: add RSS support for ipv4 ipv6 mix of GTP 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" RSS for GTP with outer & inner ipv4 & ipv6 combination are supported in this patch, so that we can process RSS based on inner 5 tuples or 3 tuples of all the cases below of GTP packets: 1. ipv4 (outer) + ipv4 (inner) 2. ipv4 (outer) + ipv6 (inner) 3. ipv6 (outer) + ipv4 (inner) 4. ipv6 (outer) + ipv6 (inner) Signed-off-by: Junfeng Guo --- drivers/net/iavf/iavf_generic_flow.c | 180 ++++++++++++++++++++++++++- drivers/net/iavf/iavf_generic_flow.h | 30 ++++- drivers/net/iavf/iavf_hash.c | 106 ++++++++++++---- 3 files changed, 287 insertions(+), 29 deletions(-) diff --git a/drivers/net/iavf/iavf_generic_flow.c b/drivers/net/iavf/iavf_generic_flow.c index b6c26c4fd..f8c5c02d2 100644 --- a/drivers/net/iavf/iavf_generic_flow.c +++ b/drivers/net/iavf/iavf_generic_flow.c @@ -315,7 +315,7 @@ enum rte_flow_item_type iavf_pattern_eth_qinq_ipv6_icmp6[] = { RTE_FLOW_ITEM_TYPE_END, }; -/* GTPU */ +/* IPv4 GTPU (EH) */ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, @@ -333,6 +333,7 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh[] = { RTE_FLOW_ITEM_TYPE_END, }; +/* IPv4 GTPU IPv4 */ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, @@ -342,6 +343,8 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[] = { RTE_FLOW_ITEM_TYPE_END, }; + +/* IPv4 GTPU EH IPv4 */ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4[] = { RTE_FLOW_ITEM_TYPE_ETH, RTE_FLOW_ITEM_TYPE_IPV4, @@ -372,7 +375,17 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp[] = { RTE_FLOW_ITEM_TYPE_IPV4, RTE_FLOW_ITEM_TYPE_TCP, RTE_FLOW_ITEM_TYPE_END, +}; +enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, }; enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = { @@ -386,6 +399,171 @@ enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_icmp[] = { RTE_FLOW_ITEM_TYPE_END, }; +/* IPv4 GTPU EH IPv6 */ +enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_icmp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_ICMP, + RTE_FLOW_ITEM_TYPE_END, +}; + +/* IPv6 GTPU EH IPv4 */ +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_udp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_icmp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV4, + RTE_FLOW_ITEM_TYPE_ICMP, + RTE_FLOW_ITEM_TYPE_END, +}; + +/* IPv6 GTPU EH IPv6 */ +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_udp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_TCP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_sctp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_SCTP, + RTE_FLOW_ITEM_TYPE_END, +}; + +enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_icmp[] = { + RTE_FLOW_ITEM_TYPE_ETH, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_UDP, + RTE_FLOW_ITEM_TYPE_GTPU, + RTE_FLOW_ITEM_TYPE_GTP_PSC, + RTE_FLOW_ITEM_TYPE_IPV6, + RTE_FLOW_ITEM_TYPE_ICMP, + RTE_FLOW_ITEM_TYPE_END, +}; + /* ESP */ enum rte_flow_item_type iavf_pattern_eth_ipv4_esp[] = { RTE_FLOW_ITEM_TYPE_ETH, diff --git a/drivers/net/iavf/iavf_generic_flow.h b/drivers/net/iavf/iavf_generic_flow.h index 978d0716b..f7ce4dcc7 100644 --- a/drivers/net/iavf/iavf_generic_flow.h +++ b/drivers/net/iavf/iavf_generic_flow.h @@ -182,15 +182,41 @@ extern enum rte_flow_item_type iavf_pattern_eth_ipv6_icmp6[]; extern enum rte_flow_item_type iavf_pattern_eth_vlan_ipv6_icmp6[]; extern enum rte_flow_item_type iavf_pattern_eth_qinq_ipv6_icmp6[]; -/* GTPU */ +/* IPv4 GTPU (EH) */ extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu[]; -extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[]; extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh[]; + +/* IPv4 GTPU IPv4 */ +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_ipv4[]; + +/* IPv4 GTPU EH IPv4 */ extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4[]; extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp[]; extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_sctp[]; extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv4_icmp[]; +/* IPv4 GTPU EH IPv6 */ +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_udp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_sctp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv4_gtpu_eh_ipv6_icmp[]; + +/* IPv6 GTPU EH IPv4 */ +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_udp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_sctp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv4_icmp[]; + +/* IPv6 GTPU EH IPv6 */ +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_udp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_sctp[]; +extern enum rte_flow_item_type iavf_pattern_eth_ipv6_gtpu_eh_ipv6_icmp[]; + /* ESP */ extern enum rte_flow_item_type iavf_pattern_eth_ipv4_esp[]; extern enum rte_flow_item_type iavf_pattern_eth_ipv4_udp_esp[]; diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c index a7691ef0c..6bd49163b 100644 --- a/drivers/net/iavf/iavf_hash.c +++ b/drivers/net/iavf/iavf_hash.c @@ -85,6 +85,7 @@ iavf_hash_parse_pattern_action(struct iavf_adapter *ad, struct iavf_pattern_match_type phint_empty = { IAVF_PATTERN_HINT_NONE}; + struct iavf_pattern_match_type phint_eth_ipv4 = { IAVF_PATTERN_HINT_IPV4}; struct iavf_pattern_match_type phint_eth_ipv4_udp = { @@ -93,8 +94,43 @@ struct iavf_pattern_match_type phint_eth_ipv4_tcp = { IAVF_PATTERN_HINT_IPV4_TCP}; struct iavf_pattern_match_type phint_eth_ipv4_sctp = { IAVF_PATTERN_HINT_IPV4_SCTP}; -struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh = { + +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv4 = { + IAVF_PATTERN_HINT_IPV4}; +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_udp4 = { IAVF_PATTERN_HINT_IPV4_UDP}; +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_tcp4 = { + IAVF_PATTERN_HINT_IPV4_TCP}; +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_sctp4 = { + IAVF_PATTERN_HINT_IPV4_SCTP}; + +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_ipv6 = { + IAVF_PATTERN_HINT_IPV6}; +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_udp6 = { + IAVF_PATTERN_HINT_IPV6_UDP}; +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_tcp6 = { + IAVF_PATTERN_HINT_IPV6_TCP}; +struct iavf_pattern_match_type phint_eth_ipv4_gtpu_eh_sctp6 = { + IAVF_PATTERN_HINT_IPV6_SCTP}; + +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv4 = { + IAVF_PATTERN_HINT_IPV4}; +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_udp4 = { + IAVF_PATTERN_HINT_IPV4_UDP}; +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_tcp4 = { + IAVF_PATTERN_HINT_IPV4_TCP}; +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_sctp4 = { + IAVF_PATTERN_HINT_IPV4_SCTP}; + +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_ipv6 = { + IAVF_PATTERN_HINT_IPV6}; +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_udp6 = { + IAVF_PATTERN_HINT_IPV6_UDP}; +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_tcp6 = { + IAVF_PATTERN_HINT_IPV6_TCP}; +struct iavf_pattern_match_type phint_eth_ipv6_gtpu_eh_sctp6 = { + IAVF_PATTERN_HINT_IPV6_SCTP}; + struct iavf_pattern_match_type phint_eth_ipv4_esp = { IAVF_PATTERN_HINT_IPV4}; struct iavf_pattern_match_type phint_eth_ipv4_ah = { @@ -103,6 +139,7 @@ struct iavf_pattern_match_type phint_eth_ipv4_l2tpv3 = { IAVF_PATTERN_HINT_IPV4}; struct iavf_pattern_match_type phint_eth_ipv4_pfcp = { IAVF_PATTERN_HINT_IPV4_UDP}; + struct iavf_pattern_match_type phint_eth_ipv6 = { IAVF_PATTERN_HINT_IPV6}; struct iavf_pattern_match_type phint_eth_ipv6_udp = { @@ -111,6 +148,7 @@ struct iavf_pattern_match_type phint_eth_ipv6_tcp = { IAVF_PATTERN_HINT_IPV6_TCP}; struct iavf_pattern_match_type phint_eth_ipv6_sctp = { IAVF_PATTERN_HINT_IPV6_SCTP}; + struct iavf_pattern_match_type phint_eth_ipv6_esp = { IAVF_PATTERN_HINT_IPV6}; struct iavf_pattern_match_type phint_eth_ipv6_ah = { @@ -127,31 +165,47 @@ struct iavf_pattern_match_type phint_eth_ipv6_pfcp = { * 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_ipv6, IAVF_INSET_NONE, &phint_eth_ipv6}, - {iavf_pattern_eth_ipv4_gtpu_eh_ipv4, IAVF_INSET_NONE, - &phint_eth_ipv4_gtpu_eh}, - {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_udp, IAVF_INSET_NONE, - &phint_eth_ipv4_gtpu_eh}, - {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE, - &phint_eth_ipv4_gtpu_eh}, - {iavf_pattern_eth_ipv4_esp, IAVF_INSET_NONE, &phint_eth_ipv4_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_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_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_empty, IAVF_INSET_NONE, &phint_empty}, + {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_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_udp4}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_tcp4}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_sctp4}, + + {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_udp6}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_tcp6}, + {iavf_pattern_eth_ipv4_gtpu_eh_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv4_gtpu_eh_sctp6}, + + {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_udp4}, + {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_tcp4}, + {iavf_pattern_eth_ipv6_gtpu_eh_ipv4_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_sctp4}, + + {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_udp6}, + {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_tcp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_tcp6}, + {iavf_pattern_eth_ipv6_gtpu_eh_ipv6_sctp, IAVF_INSET_NONE, &phint_eth_ipv6_gtpu_eh_sctp6}, + + {iavf_pattern_eth_ipv4_esp, IAVF_INSET_NONE, &phint_eth_ipv4_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_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_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_empty, IAVF_INSET_NONE, &phint_empty}, }; #define TUNNEL_LEVEL_OUTER 0 -- 2.17.1