From patchwork Wed Jan 13 05:31:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 86447 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 mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4B6CFA04B5; Wed, 13 Jan 2021 06:38:10 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0AA91140E14; Wed, 13 Jan 2021 06:38:07 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 87BF3140E03 for ; Wed, 13 Jan 2021 06:38:03 +0100 (CET) IronPort-SDR: 6/d61cqsyha/NdDtgRMlkcwfXiE1jLUsb/WVoTtvK4hUnRK5bZuByKrpG4yweDfzcDyw8Frip6 4aKxeBLeCofw== X-IronPort-AV: E=McAfee;i="6000,8403,9862"; a="174646028" X-IronPort-AV: E=Sophos;i="5.79,343,1602572400"; d="scan'208";a="174646028" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2021 21:38:03 -0800 IronPort-SDR: 9oPHJAE6BLLcRm02pmIBp1mAfx5ZgWVWSZgiD0C6azgoXzZFp2Ax4LObw2gnwCVZvAoS/LB41W 7keBm6FiECWw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,343,1602572400"; d="scan'208";a="353323611" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by fmsmga008.fm.intel.com with ESMTP; 12 Jan 2021 21:38:01 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, simei.su@intel.com Date: Wed, 13 Jan 2021 13:31:28 +0800 Message-Id: <20210113053129.49211-2-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210113053129.49211-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> <20210113053129.49211-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev v4 1/2] net/ice/base: add PTYPE value X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" Add some macros for some PType value. Signed-off-by: Jeff Guo --- drivers/net/ice/base/ice_flex_type.h | 189 +++++++++++++++++++++------ 1 file changed, 150 insertions(+), 39 deletions(-) diff --git a/drivers/net/ice/base/ice_flex_type.h b/drivers/net/ice/base/ice_flex_type.h index ad620f7892..c7f92b9150 100644 --- a/drivers/net/ice/base/ice_flex_type.h +++ b/drivers/net/ice/base/ice_flex_type.h @@ -267,45 +267,156 @@ enum ice_sect { }; /* Packet Type (PTYPE) values */ -#define ICE_PTYPE_MAC_PAY 1 -#define ICE_PTYPE_IPV4FRAG_PAY 22 -#define ICE_PTYPE_IPV4_PAY 23 -#define ICE_PTYPE_IPV4_UDP_PAY 24 -#define ICE_PTYPE_IPV4_TCP_PAY 26 -#define ICE_PTYPE_IPV4_SCTP_PAY 27 -#define ICE_PTYPE_IPV4_ICMP_PAY 28 -#define ICE_PTYPE_IPV6FRAG_PAY 88 -#define ICE_PTYPE_IPV6_PAY 89 -#define ICE_PTYPE_IPV6_UDP_PAY 90 -#define ICE_PTYPE_IPV6_TCP_PAY 92 -#define ICE_PTYPE_IPV6_SCTP_PAY 93 -#define ICE_PTYPE_IPV6_ICMP_PAY 94 -#define ICE_MAC_IPV4_GTPC_TEID 325 -#define ICE_MAC_IPV6_GTPC_TEID 326 -#define ICE_MAC_IPV4_GTPC 327 -#define ICE_MAC_IPV6_GTPC 328 -#define ICE_MAC_IPV4_GTPU 329 -#define ICE_MAC_IPV6_GTPU 330 -#define ICE_MAC_IPV4_GTPU_IPV4_FRAG 331 -#define ICE_MAC_IPV4_GTPU_IPV4_PAY 332 -#define ICE_MAC_IPV4_GTPU_IPV4_UDP_PAY 333 -#define ICE_MAC_IPV4_GTPU_IPV4_TCP 334 -#define ICE_MAC_IPV4_GTPU_IPV4_ICMP 335 -#define ICE_MAC_IPV6_GTPU_IPV4_FRAG 336 -#define ICE_MAC_IPV6_GTPU_IPV4_PAY 337 -#define ICE_MAC_IPV6_GTPU_IPV4_UDP_PAY 338 -#define ICE_MAC_IPV6_GTPU_IPV4_TCP 339 -#define ICE_MAC_IPV6_GTPU_IPV4_ICMP 340 -#define ICE_MAC_IPV4_GTPU_IPV6_FRAG 341 -#define ICE_MAC_IPV4_GTPU_IPV6_PAY 342 -#define ICE_MAC_IPV4_GTPU_IPV6_UDP_PAY 343 -#define ICE_MAC_IPV4_GTPU_IPV6_TCP 344 -#define ICE_MAC_IPV4_GTPU_IPV6_ICMPV6 345 -#define ICE_MAC_IPV6_GTPU_IPV6_FRAG 346 -#define ICE_MAC_IPV6_GTPU_IPV6_PAY 347 -#define ICE_MAC_IPV6_GTPU_IPV6_UDP_PAY 348 -#define ICE_MAC_IPV6_GTPU_IPV6_TCP 349 -#define ICE_MAC_IPV6_GTPU_IPV6_ICMPV6 350 +#define ICE_PTYPE_MAC_PAY 1 +#define ICE_MAC_PTP 2 +#define ICE_MAC_LLDP 6 +#define ICE_MAC_ARP 11 +#define ICE_PTYPE_IPV4FRAG_PAY 22 +#define ICE_PTYPE_IPV4_PAY 23 +#define ICE_PTYPE_IPV4_UDP_PAY 24 +#define ICE_PTYPE_IPV4_TCP_PAY 26 +#define ICE_PTYPE_IPV4_SCTP_PAY 27 +#define ICE_PTYPE_IPV4_ICMP_PAY 28 +#define ICE_MAC_IPV4_IPV4_FRAG 29 +#define ICE_MAC_IPV4_IPV4_PAY 30 +#define ICE_MAC_IPV4_IPV4_UDP_PAY 31 +#define ICE_MAC_IPV4_IPV4_TCP 33 +#define ICE_MAC_IPV4_IPV4_SCTP 34 +#define ICE_MAC_IPV4_IPV4_ICMP 35 +#define ICE_MAC_IPV4_IPV6_FRAG 36 +#define ICE_MAC_IPV4_IPV6_PAY 37 +#define ICE_MAC_IPV4_IPV6_UDP_PAY 38 +#define ICE_MAC_IPV4_IPV6_TCP 40 +#define ICE_MAC_IPV4_IPV6_SCTP 41 +#define ICE_MAC_IPV4_IPV6_ICMPV6 42 +#define ICE_MAC_IPV4_TUN_PAY 43 +#define ICE_MAC_IPV4_TUN_IPV4_FRAG 44 +#define ICE_MAC_IPV4_TUN_IPV4_PAY 45 +#define ICE_MAC_IPV4_TUN_IPV4_UDP_PAY 46 +#define ICE_MAC_IPV4_TUN_IPV4_TCP 48 +#define ICE_MAC_IPV4_TUN_IPV4_SCTP 49 +#define ICE_MAC_IPV4_TUN_IPV4_ICMP 50 +#define ICE_MAC_IPV4_TUN_IPV6_FRAG 51 +#define ICE_MAC_IPV4_TUN_IPV6_PAY 52 +#define ICE_MAC_IPV4_TUN_IPV6_UDP_PAY 53 +#define ICE_MAC_IPV4_TUN_IPV6_TCP 55 +#define ICE_MAC_IPV4_TUN_IPV6_SCTP 56 +#define ICE_MAC_IPV4_TUN_IPV6_ICMPV6 57 +#define ICE_MAC_IPV4_TUN_ICE_MAC_PAY 58 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV4_FRAG 59 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV4_PAY 60 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV4_UDP_PAY 61 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV4_TCP 63 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV4_SCTP 64 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV4_ICMP 65 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV6_FRAG 66 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV6_PAY 67 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV6_UDP_PAY 68 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV6_TCP 70 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV6_SCTP 71 +#define ICE_MAC_IPV4_TUN_ICE_MAC_IPV6_ICMPV6 72 +#define ICE_PTYPE_IPV6FRAG_PAY 88 +#define ICE_PTYPE_IPV6_PAY 89 +#define ICE_PTYPE_IPV6_UDP_PAY 90 +#define ICE_PTYPE_IPV6_TCP_PAY 92 +#define ICE_PTYPE_IPV6_SCTP_PAY 93 +#define ICE_PTYPE_IPV6_ICMP_PAY 94 +#define ICE_MAC_IPV6_IPV4_FRAG 95 +#define ICE_MAC_IPV6_IPV4_PAY 96 +#define ICE_MAC_IPV6_IPV4_UDP_PAY 97 +#define ICE_MAC_IPV6_IPV4_TCP 99 +#define ICE_MAC_IPV6_IPV4_SCTP 100 +#define ICE_MAC_IPV6_IPV4_ICMP 101 +#define ICE_MAC_IPV6_IPV6_FRAG 102 +#define ICE_MAC_IPV6_IPV6_PAY 103 +#define ICE_MAC_IPV6_IPV6_UDP_PAY 104 +#define ICE_MAC_IPV6_IPV6_TCP 106 +#define ICE_MAC_IPV6_IPV6_SCTP 107 +#define ICE_MAC_IPV6_IPV6_ICMPV6 108 +#define ICE_MAC_IPV6_TUN_PAY 109 +#define ICE_MAC_IPV6_TUN_IPV4_FRAG 110 +#define ICE_MAC_IPV6_TUN_IPV4_PAY 111 +#define ICE_MAC_IPV6_TUN_IPV4_UDP_PAY 112 +#define ICE_MAC_IPV6_TUN_IPV4_TCP 114 +#define ICE_MAC_IPV6_TUN_IPV4_SCTP 115 +#define ICE_MAC_IPV6_TUN_IPV4_ICMP 116 +#define ICE_MAC_IPV6_TUN_IPV6_FRAG 117 +#define ICE_MAC_IPV6_TUN_IPV6_PAY 118 +#define ICE_MAC_IPV6_TUN_IPV6_UDP_PAY 119 +#define ICE_MAC_IPV6_TUN_IPV6_TCP 121 +#define ICE_MAC_IPV6_TUN_IPV6_SCTP 122 +#define ICE_MAC_IPV6_TUN_IPV6_ICMPV6 123 +#define ICE_MAC_IPV6_TUN_MAC_PAY 124 +#define ICE_MAC_IPV6_TUN_MAC_IPV4_FRAG 125 +#define ICE_MAC_IPV6_TUN_MAC_IPV4_PAY 126 +#define ICE_MAC_IPV6_TUN_MAC_IPV4_UDP_PAY 127 +#define ICE_MAC_IPV6_TUN_MAC_IPV4_TCP 129 +#define ICE_MAC_IPV6_TUN_MAC_IPV4_SCTP 130 +#define ICE_MAC_IPV6_TUN_MAC_IPV4_ICMP 131 +#define ICE_MAC_IPV6_TUN_MAC_IPV6_FRAG 132 +#define ICE_MAC_IPV6_TUN_MAC_IPV6_PAY 133 +#define ICE_MAC_IPV6_TUN_MAC_IPV6_UDP_PAY 134 +#define ICE_MAC_IPV6_TUN_MAC_IPV6_TCP 136 +#define ICE_MAC_IPV6_TUN_MAC_IPV6_SCTP 137 +#define ICE_MAC_IPV6_TUN_MAC_IPV6_ICMPV6 138 +#define ICE_MAC_IPV4_ESP 160 +#define ICE_MAC_IPV6_ESP 161 +#define ICE_MAC_IPV4_AH 162 +#define ICE_MAC_IPV6_AH 163 +#define ICE_MAC_IPV4_NAT_T_ESP 164 +#define ICE_MAC_IPV6_NAT_T_ESP 165 +#define ICE_MAC_IPV4_NAT_T_IKE 166 +#define ICE_MAC_IPV6_NAT_T_IKE 167 +#define ICE_MAC_IPV4_NAT_T_KEEP 168 +#define ICE_MAC_IPV6_NAT_T_KEEP 169 +#define ICE_MAC_CONTROL 278 +#define ICE_MAC_PPPOD_PAY 300 +#define ICE_MAC_PPPOE_PAY 301 +#define ICE_MAC_PPPOE_IPV4_FRAG 302 +#define ICE_MAC_PPPOE_IPV4_PAY 303 +#define ICE_MAC_PPPOE_IPV4_UDP_PAY 304 +#define ICE_MAC_PPPOE_IPV4_TCP 305 +#define ICE_MAC_PPPOE_IPV4_SCTP 306 +#define ICE_MAC_PPPOE_IPV4_ICMP 307 +#define ICE_MAC_PPPOE_IPV6_FRAG 308 +#define ICE_MAC_PPPOE_IPV6_PAY 309 +#define ICE_MAC_PPPOE_IPV6_UDP_PAY 310 +#define ICE_MAC_PPPOE_IPV6_TCP 311 +#define ICE_MAC_PPPOE_IPV6_SCTP 312 +#define ICE_MAC_PPPOE_IPV6_ICMPV6 313 +#define ICE_MAC_IPV4_GTPC_TEID 325 +#define ICE_MAC_IPV6_GTPC_TEID 326 +#define ICE_MAC_IPV4_GTPC 327 +#define ICE_MAC_IPV6_GTPC 328 +#define ICE_MAC_IPV4_GTPU 329 +#define ICE_MAC_IPV6_GTPU 330 +#define ICE_MAC_IPV4_GTPU_IPV4_FRAG 331 +#define ICE_MAC_IPV4_GTPU_IPV4_PAY 332 +#define ICE_MAC_IPV4_GTPU_IPV4_UDP_PAY 333 +#define ICE_MAC_IPV4_GTPU_IPV4_TCP 334 +#define ICE_MAC_IPV4_GTPU_IPV4_ICMP 335 +#define ICE_MAC_IPV6_GTPU_IPV4_FRAG 336 +#define ICE_MAC_IPV6_GTPU_IPV4_PAY 337 +#define ICE_MAC_IPV6_GTPU_IPV4_UDP_PAY 338 +#define ICE_MAC_IPV6_GTPU_IPV4_TCP 339 +#define ICE_MAC_IPV6_GTPU_IPV4_ICMP 340 +#define ICE_MAC_IPV4_GTPU_IPV6_FRAG 341 +#define ICE_MAC_IPV4_GTPU_IPV6_PAY 342 +#define ICE_MAC_IPV4_GTPU_IPV6_UDP_PAY 343 +#define ICE_MAC_IPV4_GTPU_IPV6_TCP 344 +#define ICE_MAC_IPV4_GTPU_IPV6_ICMPV6 345 +#define ICE_MAC_IPV6_GTPU_IPV6_FRAG 346 +#define ICE_MAC_IPV6_GTPU_IPV6_PAY 347 +#define ICE_MAC_IPV6_GTPU_IPV6_UDP_PAY 348 +#define ICE_MAC_IPV6_GTPU_IPV6_TCP 349 +#define ICE_MAC_IPV6_GTPU_IPV6_ICMPV6 350 +#define ICE_MAC_IPV4_PFCP_NODE 351 +#define ICE_MAC_IPV4_PFCP_SESSION 352 +#define ICE_MAC_IPV6_PFCP_NODE 353 +#define ICE_MAC_IPV6_PFCP_SESSION 354 +#define ICE_MAC_IPV4_L2TPV3 360 +#define ICE_MAC_IPV6_L2TPV3 361 + /* Attributes that can modify PTYPE definitions. * From patchwork Wed Jan 13 05:31:29 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 86448 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 mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D1792A04B5; Wed, 13 Jan 2021 06:38:17 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 30C85140E1D; Wed, 13 Jan 2021 06:38:08 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 76C4C140E10 for ; Wed, 13 Jan 2021 06:38:06 +0100 (CET) IronPort-SDR: D1Gj3iVKFVkd4xJnsWC7uamBbcUgvQhoxGrpjdLiBspa/fIkVLOT1XyjsZCHqzU/cFzRVBwqLr fs6AFaSNYWog== X-IronPort-AV: E=McAfee;i="6000,8403,9862"; a="174646031" X-IronPort-AV: E=Sophos;i="5.79,343,1602572400"; d="scan'208";a="174646031" Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2021 21:38:06 -0800 IronPort-SDR: C4QnVQUKLvRj6hEyrJSZALbllbVBXrPlihb1Kh45pWPx1BSbT0sbhcrBbuuoI+n8gTvi5HwJtH +oLNZeh+t0EA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,343,1602572400"; d="scan'208";a="353323634" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by fmsmga008.fm.intel.com with ESMTP; 12 Jan 2021 21:38:03 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com, simei.su@intel.com Date: Wed, 13 Jan 2021 13:31:29 +0800 Message-Id: <20210113053129.49211-3-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210113053129.49211-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> <20210113053129.49211-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev v4 2/2] net/ice: refactor PTYPE parsing X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" If the capability of a PTYPE within a specific package could be negotiated, no need to maintain a different PTYPE list for each type of the package when parsing PTYPE. So refactor the PTYPE parsing mechanism for each flow engines. Signed-off-by: Jeff Guo --- drivers/net/ice/ice_acl_filter.c | 3 +- drivers/net/ice/ice_fdir_filter.c | 63 ++----------- drivers/net/ice/ice_generic_flow.c | 132 ++++++++++++++++++++++++-- drivers/net/ice/ice_generic_flow.h | 9 +- drivers/net/ice/ice_hash.c | 51 ++-------- drivers/net/ice/ice_switch_filter.c | 139 ++++------------------------ 6 files changed, 165 insertions(+), 232 deletions(-) diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c index f7dbe53574..363ce68318 100644 --- a/drivers/net/ice/ice_acl_filter.c +++ b/drivers/net/ice/ice_acl_filter.c @@ -914,7 +914,8 @@ ice_acl_parse(struct ice_adapter *ad, int ret; memset(filter, 0, sizeof(*filter)); - item = ice_search_pattern_match_item(pattern, array, array_len, error); + item = ice_search_pattern_match_item(ad, pattern, array, array_len, + error); if (!item) return -rte_errno; diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 175abcdd5c..ce6aa09d3d 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -84,34 +84,7 @@ ICE_INSET_IPV6_SRC | ICE_INSET_IPV6_DST | \ ICE_INSET_GTPU_TEID | ICE_INSET_GTPU_QFI) -static struct ice_pattern_match_item ice_fdir_pattern_os[] = { - {pattern_eth_ipv4, ICE_FDIR_INSET_ETH_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp, ICE_FDIR_INSET_ETH_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_tcp, ICE_FDIR_INSET_ETH_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_sctp, ICE_FDIR_INSET_ETH_IPV4_SCTP, ICE_INSET_NONE}, - {pattern_eth_ipv6, ICE_FDIR_INSET_ETH_IPV6, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp, ICE_FDIR_INSET_ETH_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv6_tcp, ICE_FDIR_INSET_ETH_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv6_sctp, ICE_FDIR_INSET_ETH_IPV6_SCTP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_ipv4, - ICE_FDIR_INSET_VXLAN_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_ipv4_udp, - ICE_FDIR_INSET_VXLAN_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_ipv4_tcp, - ICE_FDIR_INSET_VXLAN_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_ipv4_sctp, - ICE_FDIR_INSET_VXLAN_IPV4_SCTP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4, - ICE_FDIR_INSET_VXLAN_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, - ICE_FDIR_INSET_VXLAN_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, - ICE_FDIR_INSET_VXLAN_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_sctp, - ICE_FDIR_INSET_VXLAN_IPV4_SCTP, ICE_INSET_NONE}, -}; - -static struct ice_pattern_match_item ice_fdir_pattern_comms[] = { +static struct ice_pattern_match_item ice_fdir_pattern_list[] = { {pattern_ethertype, ICE_FDIR_INSET_ETH, ICE_INSET_NONE}, {pattern_eth_ipv4, ICE_FDIR_INSET_ETH_IPV4, ICE_INSET_NONE}, {pattern_eth_ipv4_udp, ICE_FDIR_INSET_ETH_IPV4_UDP, ICE_INSET_NONE}, @@ -143,8 +116,7 @@ static struct ice_pattern_match_item ice_fdir_pattern_comms[] = { {pattern_eth_ipv6_gtpu_eh, ICE_FDIR_INSET_IPV6_GTPU_EH, ICE_INSET_NONE}, }; -static struct ice_flow_parser ice_fdir_parser_os; -static struct ice_flow_parser ice_fdir_parser_comms; +static struct ice_flow_parser ice_fdir_parser; static int ice_fdir_is_tunnel_profile(enum ice_fdir_tunnel_type tunnel_type); @@ -1111,12 +1083,7 @@ ice_fdir_init(struct ice_adapter *ad) if (ret) return ret; - if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - parser = &ice_fdir_parser_comms; - else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) - parser = &ice_fdir_parser_os; - else - return -EINVAL; + parser = &ice_fdir_parser; return ice_register_parser(parser, ad); } @@ -1124,16 +1091,13 @@ ice_fdir_init(struct ice_adapter *ad) static void ice_fdir_uninit(struct ice_adapter *ad) { - struct ice_pf *pf = &ad->pf; struct ice_flow_parser *parser; + struct ice_pf *pf = &ad->pf; if (ad->hw.dcf_enabled) return; - if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - parser = &ice_fdir_parser_comms; - else - parser = &ice_fdir_parser_os; + parser = &ice_fdir_parser; ice_unregister_parser(parser, ad); @@ -2039,7 +2003,8 @@ ice_fdir_parse(struct ice_adapter *ad, int ret; memset(filter, 0, sizeof(*filter)); - item = ice_search_pattern_match_item(pattern, array, array_len, error); + item = ice_search_pattern_match_item(ad, pattern, array, array_len, + error); if (!item) return -rte_errno; @@ -2067,18 +2032,10 @@ ice_fdir_parse(struct ice_adapter *ad, return ret; } -static struct ice_flow_parser ice_fdir_parser_os = { - .engine = &ice_fdir_engine, - .array = ice_fdir_pattern_os, - .array_len = RTE_DIM(ice_fdir_pattern_os), - .parse_pattern_action = ice_fdir_parse, - .stage = ICE_FLOW_STAGE_DISTRIBUTOR, -}; - -static struct ice_flow_parser ice_fdir_parser_comms = { +static struct ice_flow_parser ice_fdir_parser = { .engine = &ice_fdir_engine, - .array = ice_fdir_pattern_comms, - .array_len = RTE_DIM(ice_fdir_pattern_comms), + .array = ice_fdir_pattern_list, + .array_len = RTE_DIM(ice_fdir_pattern_list), .parse_pattern_action = ice_fdir_parse, .stage = ICE_FLOW_STAGE_DISTRIBUTOR, }; diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c index 1429cbc3b6..4313aae183 100644 --- a/drivers/net/ice/ice_generic_flow.c +++ b/drivers/net/ice/ice_generic_flow.c @@ -2046,17 +2046,127 @@ ice_match_pattern(enum rte_flow_item_type *item_array, item->type == RTE_FLOW_ITEM_TYPE_END); } +struct ice_ptype_match { + enum rte_flow_item_type *pattern_list; + uint16_t hw_ptype; +}; + +static struct ice_ptype_match ice_ptype_map[] = { + {pattern_eth_ipv4, ICE_PTYPE_IPV4_PAY}, + {pattern_eth_ipv4_udp, ICE_PTYPE_IPV4_UDP_PAY}, + {pattern_eth_ipv4_tcp, ICE_PTYPE_IPV4_TCP_PAY}, + {pattern_eth_ipv4_sctp, ICE_PTYPE_IPV4_SCTP_PAY}, + {pattern_eth_ipv4_gtpu, ICE_MAC_IPV4_GTPU}, + {pattern_eth_ipv4_gtpu_eh, ICE_MAC_IPV4_GTPU}, + {pattern_eth_ipv4_gtpu_ipv4, ICE_MAC_IPV4_GTPU_IPV4_PAY}, + {pattern_eth_ipv4_gtpu_ipv4_udp, ICE_MAC_IPV4_GTPU_IPV4_UDP_PAY}, + {pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_MAC_IPV4_GTPU_IPV4_TCP}, + {pattern_eth_ipv4_gtpu_ipv6, ICE_MAC_IPV4_GTPU_IPV6_PAY}, + {pattern_eth_ipv4_gtpu_ipv6_udp, ICE_MAC_IPV4_GTPU_IPV6_UDP_PAY}, + {pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_MAC_IPV4_GTPU_IPV6_TCP}, + {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_MAC_IPV4_GTPU_IPV4_PAY}, + {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_MAC_IPV4_GTPU_IPV4_UDP_PAY}, + {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_MAC_IPV4_GTPU_IPV4_TCP}, + {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_MAC_IPV4_GTPU_IPV6_PAY}, + {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_MAC_IPV4_GTPU_IPV6_UDP_PAY}, + {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_MAC_IPV4_GTPU_IPV6_TCP}, + {pattern_eth_ipv4_esp, ICE_MAC_IPV4_ESP}, + {pattern_eth_ipv4_udp_esp, ICE_MAC_IPV4_NAT_T_ESP}, + {pattern_eth_ipv4_ah, ICE_MAC_IPV4_AH}, + {pattern_eth_ipv4_l2tp, ICE_MAC_IPV4_L2TPV3}, + {pattern_eth_ipv4_pfcp, ICE_MAC_IPV4_PFCP_SESSION}, + {pattern_eth_ipv6, ICE_PTYPE_IPV6_PAY}, + {pattern_eth_ipv6_udp, ICE_PTYPE_IPV6_UDP_PAY}, + {pattern_eth_ipv6_tcp, ICE_PTYPE_IPV6_TCP_PAY}, + {pattern_eth_ipv6_sctp, ICE_PTYPE_IPV6_SCTP_PAY}, + {pattern_eth_ipv6_gtpu, ICE_MAC_IPV6_GTPU}, + {pattern_eth_ipv6_gtpu_eh, ICE_MAC_IPV6_GTPU}, + {pattern_eth_ipv6_gtpu_ipv4, ICE_MAC_IPV6_GTPU_IPV4_PAY}, + {pattern_eth_ipv6_gtpu_ipv4_udp, ICE_MAC_IPV6_GTPU_IPV4_UDP_PAY}, + {pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_MAC_IPV6_GTPU_IPV4_TCP}, + {pattern_eth_ipv6_gtpu_ipv6, ICE_MAC_IPV6_GTPU_IPV6_PAY}, + {pattern_eth_ipv6_gtpu_ipv6_udp, ICE_MAC_IPV6_GTPU_IPV6_UDP_PAY}, + {pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_MAC_IPV6_GTPU_IPV6_TCP}, + {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_MAC_IPV6_GTPU_IPV4_PAY}, + {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_MAC_IPV6_GTPU_IPV4_UDP_PAY}, + {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_MAC_IPV6_GTPU_IPV4_TCP}, + {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_MAC_IPV6_GTPU_IPV6_PAY}, + {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_MAC_IPV6_GTPU_IPV6_UDP_PAY}, + {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_MAC_IPV6_GTPU_IPV6_TCP}, + {pattern_eth_ipv6_esp, ICE_MAC_IPV6_ESP}, + {pattern_eth_ipv6_udp_esp, ICE_MAC_IPV6_NAT_T_ESP}, + {pattern_eth_ipv6_ah, ICE_MAC_IPV6_AH}, + {pattern_eth_ipv6_l2tp, ICE_MAC_IPV6_L2TPV3}, + {pattern_eth_ipv6_pfcp, ICE_MAC_IPV6_PFCP_SESSION}, + {pattern_ethertype, ICE_PTYPE_MAC_PAY}, + {pattern_ethertype_vlan, ICE_PTYPE_MAC_PAY}, + {pattern_eth_arp, ICE_PTYPE_MAC_PAY}, + {pattern_eth_vlan_ipv4, ICE_PTYPE_IPV4_PAY}, + {pattern_eth_vlan_ipv4_udp, ICE_PTYPE_IPV4_UDP_PAY}, + {pattern_eth_vlan_ipv4_tcp, ICE_PTYPE_IPV4_TCP_PAY}, + {pattern_eth_vlan_ipv4_sctp, ICE_PTYPE_IPV4_SCTP_PAY}, + {pattern_eth_vlan_ipv6, ICE_PTYPE_IPV6_PAY}, + {pattern_eth_vlan_ipv6_udp, ICE_PTYPE_IPV6_UDP_PAY}, + {pattern_eth_vlan_ipv6_tcp, ICE_PTYPE_IPV6_TCP_PAY}, + {pattern_eth_vlan_ipv6_sctp, ICE_PTYPE_IPV6_SCTP_PAY}, + {pattern_eth_pppoes, ICE_MAC_PPPOE_PAY}, + {pattern_eth_vlan_pppoes, ICE_MAC_PPPOE_PAY}, + {pattern_eth_pppoes_proto, ICE_MAC_PPPOE_PAY}, + {pattern_eth_vlan_pppoes_proto, ICE_MAC_PPPOE_PAY}, + {pattern_eth_pppoes_ipv4, ICE_MAC_PPPOE_IPV4_PAY}, + {pattern_eth_pppoes_ipv4_udp, ICE_MAC_PPPOE_IPV4_UDP_PAY}, + {pattern_eth_pppoes_ipv4_tcp, ICE_MAC_PPPOE_IPV4_TCP}, + {pattern_eth_vlan_pppoes_ipv4, ICE_MAC_PPPOE_IPV4_PAY}, + {pattern_eth_vlan_pppoes_ipv4_tcp, ICE_MAC_PPPOE_IPV4_TCP}, + {pattern_eth_vlan_pppoes_ipv4_udp, ICE_MAC_PPPOE_IPV4_UDP_PAY}, + {pattern_eth_pppoes_ipv6, ICE_MAC_PPPOE_IPV6_PAY}, + {pattern_eth_pppoes_ipv6_udp, ICE_MAC_PPPOE_IPV6_UDP_PAY}, + {pattern_eth_pppoes_ipv6_tcp, ICE_MAC_PPPOE_IPV6_TCP}, + {pattern_eth_vlan_pppoes_ipv6, ICE_MAC_PPPOE_IPV6_PAY}, + {pattern_eth_vlan_pppoes_ipv6_tcp, ICE_MAC_PPPOE_IPV6_TCP}, + {pattern_eth_vlan_pppoes_ipv6_udp, ICE_MAC_PPPOE_IPV6_UDP_PAY}, + {pattern_eth_ipv4_udp_vxlan_ipv4, ICE_MAC_IPV4_TUN_IPV4_PAY}, + {pattern_eth_ipv4_udp_vxlan_ipv4_udp, ICE_MAC_IPV4_TUN_IPV4_UDP_PAY}, + {pattern_eth_ipv4_udp_vxlan_ipv4_tcp, ICE_MAC_IPV4_TUN_IPV4_TCP}, + {pattern_eth_ipv4_udp_vxlan_ipv4_sctp, ICE_MAC_IPV4_TUN_IPV4_SCTP}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4, ICE_MAC_IPV4_TUN_IPV4_PAY}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, ICE_MAC_IPV4_TUN_IPV4_UDP_PAY}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, ICE_MAC_IPV4_TUN_IPV4_TCP}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_sctp, ICE_MAC_IPV4_TUN_IPV4_SCTP}, + {pattern_eth_ipv4_nvgre_eth_ipv4, ICE_MAC_IPV4_TUN_IPV4_PAY}, + {pattern_eth_ipv4_nvgre_eth_ipv4_udp, ICE_MAC_IPV4_TUN_IPV4_UDP_PAY}, + {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, ICE_MAC_IPV4_TUN_IPV4_TCP}, +}; + +static bool +ice_pattern_is_supported(__rte_unused struct ice_adapter *ad, + const struct rte_flow_item *pattern) +{ + uint16_t i; + + for (i = 0; i < RTE_DIM(ice_ptype_map); i++) { + if (ice_match_pattern(ice_ptype_map[i].pattern_list, + pattern)) { + return ice_hw_ptype_ena(&ad->hw, + ice_ptype_map[i].hw_ptype); + } + } + + return false; +} + struct ice_pattern_match_item * -ice_search_pattern_match_item(const struct rte_flow_item pattern[], - struct ice_pattern_match_item *array, - uint32_t array_len, - struct rte_flow_error *error) +ice_search_pattern_match_item(struct ice_adapter *ad, + const struct rte_flow_item pattern[], + struct ice_pattern_match_item *array, + uint32_t array_len, + struct rte_flow_error *error) { - uint16_t i = 0; struct ice_pattern_match_item *pattern_match_item; /* need free by each filter */ struct rte_flow_item *items; /* used for pattern without VOID items */ uint32_t item_num = 0; /* non-void item number */ + uint16_t i = 0; /* Get the non-void item number of pattern */ while ((pattern + i)->type != RTE_FLOW_ITEM_TYPE_END) { @@ -2078,14 +2188,18 @@ ice_search_pattern_match_item(const struct rte_flow_item pattern[], if (!pattern_match_item) { rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, "Failed to allocate memory."); + rte_free(items); return NULL; } ice_pattern_skip_void_item(items, pattern); - for (i = 0; i < array_len; i++) + if (!ice_pattern_is_supported(ad, pattern)) + goto unsupported; + + for (i = 0; i < array_len; i++) { if (ice_match_pattern(array[i].pattern_list, - items)) { + items)) { pattern_match_item->input_set_mask = array[i].input_set_mask; pattern_match_item->pattern_list = @@ -2094,9 +2208,11 @@ ice_search_pattern_match_item(const struct rte_flow_item pattern[], rte_free(items); return pattern_match_item; } + } + +unsupported: rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, pattern, "Unsupported pattern"); - rte_free(items); rte_free(pattern_match_item); return NULL; diff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h index 434d2f425d..0dcb620809 100644 --- a/drivers/net/ice/ice_generic_flow.h +++ b/drivers/net/ice/ice_generic_flow.h @@ -593,10 +593,11 @@ int ice_register_parser(struct ice_flow_parser *parser, void ice_unregister_parser(struct ice_flow_parser *parser, struct ice_adapter *ad); struct ice_pattern_match_item * -ice_search_pattern_match_item(const struct rte_flow_item pattern[], - struct ice_pattern_match_item *array, - uint32_t array_len, - struct rte_flow_error *error); +ice_search_pattern_match_item(struct ice_adapter *ad, + const struct rte_flow_item pattern[], + struct ice_pattern_match_item *array, + uint32_t array_len, + struct rte_flow_error *error); int ice_flow_redirect(struct ice_adapter *ad, struct ice_flow_redirect *rd); diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index c3ab4a0ccb..3940438c81 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -397,25 +397,7 @@ struct ice_rss_hash_cfg empty_tmplt = { * the second member is input set mask, * the third member is ice_rss_hash_cfg template. */ - -/* Supported pattern for os default package. */ -static struct ice_pattern_match_item ice_hash_pattern_list_os[] = { - /* IPV4 */ - {pattern_eth_ipv4, ICE_RSS_TYPE_OUTER_IPV4, &ipv4_tmplt}, - {pattern_eth_ipv4_udp, ICE_RSS_TYPE_OUTER_IPV4_UDP, &ipv4_udp_tmplt}, - {pattern_eth_ipv4_tcp, ICE_RSS_TYPE_OUTER_IPV4_TCP, &ipv4_tcp_tmplt}, - {pattern_eth_ipv4_sctp, ICE_RSS_TYPE_OUTER_IPV4_SCTP, &ipv4_sctp_tmplt}, - /* IPV6 */ - {pattern_eth_ipv6, ICE_RSS_TYPE_OUTER_IPV6, &ipv6_tmplt}, - {pattern_eth_ipv6_udp, ICE_RSS_TYPE_OUTER_IPV6_UDP, &ipv6_udp_tmplt}, - {pattern_eth_ipv6_tcp, ICE_RSS_TYPE_OUTER_IPV6_TCP, &ipv6_tcp_tmplt}, - {pattern_eth_ipv6_sctp, ICE_RSS_TYPE_OUTER_IPV6_SCTP, &ipv6_sctp_tmplt}, - /* EMPTY */ - {pattern_empty, ICE_RSS_TYPE_EMPTY, &empty_tmplt}, -}; - -/* Supported pattern for comms package. */ -static struct ice_pattern_match_item ice_hash_pattern_list_comms[] = { +static struct ice_pattern_match_item ice_hash_pattern_list[] = { /* IPV4 */ {pattern_eth_ipv4, ICE_RSS_TYPE_OUTER_IPV4, &ipv4_tmplt}, {pattern_eth_ipv4_udp, ICE_RSS_TYPE_OUTER_IPV4_UDP, &ipv4_udp_tmplt}, @@ -490,19 +472,10 @@ static struct ice_flow_engine ice_hash_engine = { }; /* Register parser for os package. */ -static struct ice_flow_parser ice_hash_parser_os = { - .engine = &ice_hash_engine, - .array = ice_hash_pattern_list_os, - .array_len = RTE_DIM(ice_hash_pattern_list_os), - .parse_pattern_action = ice_hash_parse_pattern_action, - .stage = ICE_FLOW_STAGE_RSS, -}; - -/* Register parser for comms package. */ -static struct ice_flow_parser ice_hash_parser_comms = { +static struct ice_flow_parser ice_hash_parser = { .engine = &ice_hash_engine, - .array = ice_hash_pattern_list_comms, - .array_len = RTE_DIM(ice_hash_pattern_list_comms), + .array = ice_hash_pattern_list, + .array_len = RTE_DIM(ice_hash_pattern_list), .parse_pattern_action = ice_hash_parse_pattern_action, .stage = ICE_FLOW_STAGE_RSS, }; @@ -521,12 +494,7 @@ ice_hash_init(struct ice_adapter *ad) if (ad->hw.dcf_enabled) return 0; - if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) - parser = &ice_hash_parser_os; - else if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - parser = &ice_hash_parser_comms; - else - return -EINVAL; + parser = &ice_hash_parser; return ice_register_parser(parser, ad); } @@ -970,8 +938,8 @@ ice_hash_parse_pattern_action(__rte_unused struct ice_adapter *ad, } /* Check rss supported pattern and find matched pattern. */ - pattern_match_item = ice_search_pattern_match_item(pattern, - array, array_len, error); + pattern_match_item = ice_search_pattern_match_item(ad, pattern, array, + array_len, error); if (!pattern_match_item) { ret = -rte_errno; goto error; @@ -1103,10 +1071,7 @@ ice_hash_uninit(struct ice_adapter *ad) if (ad->hw.dcf_enabled) return; - if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) - ice_unregister_parser(&ice_hash_parser_os, ad); - else if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - ice_unregister_parser(&ice_hash_parser_comms, ad); + ice_unregister_parser(&ice_hash_parser, ad); } static void diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c index 8cba6eb7b1..e5b7d56068 100644 --- a/drivers/net/ice/ice_switch_filter.c +++ b/drivers/net/ice/ice_switch_filter.c @@ -137,47 +137,11 @@ struct sw_meta { struct ice_adv_rule_info rule_info; }; -static struct ice_flow_parser ice_switch_dist_parser_os; -static struct ice_flow_parser ice_switch_dist_parser_comms; -static struct ice_flow_parser ice_switch_perm_parser_os; -static struct ice_flow_parser ice_switch_perm_parser_comms; +static struct ice_flow_parser ice_switch_dist_parser; +static struct ice_flow_parser ice_switch_perm_parser; static struct -ice_pattern_match_item ice_switch_pattern_dist_os[] = { - {pattern_ethertype, - ICE_SW_INSET_ETHER, ICE_INSET_NONE}, - {pattern_ethertype_vlan, - ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE}, - {pattern_eth_arp, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_ipv4, - ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp, - ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_tcp, - ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv6, - ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp, - ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv6_tcp, - ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4, - ICE_SW_INSET_DIST_VXLAN_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, - ICE_SW_INSET_DIST_VXLAN_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, - ICE_SW_INSET_DIST_VXLAN_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_nvgre_eth_ipv4, - ICE_SW_INSET_DIST_NVGRE_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_nvgre_eth_ipv4_udp, - ICE_SW_INSET_DIST_NVGRE_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, - ICE_SW_INSET_DIST_NVGRE_IPV4_TCP, ICE_INSET_NONE}, -}; - -static struct -ice_pattern_match_item ice_switch_pattern_dist_comms[] = { +ice_pattern_match_item ice_switch_pattern_dist_list[] = { {pattern_ethertype, ICE_SW_INSET_ETHER, ICE_INSET_NONE}, {pattern_ethertype_vlan, @@ -265,41 +229,7 @@ ice_pattern_match_item ice_switch_pattern_dist_comms[] = { }; static struct -ice_pattern_match_item ice_switch_pattern_perm_os[] = { - {pattern_ethertype, - ICE_SW_INSET_ETHER, ICE_INSET_NONE}, - {pattern_ethertype_vlan, - ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE}, - {pattern_eth_arp, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_ipv4, - ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp, - ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_tcp, - ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv6, - ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp, - ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv6_tcp, - ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4, - ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, - ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, - ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_nvgre_eth_ipv4, - ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_nvgre_eth_ipv4_udp, - ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, - ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE}, -}; - -static struct -ice_pattern_match_item ice_switch_pattern_perm_comms[] = { +ice_pattern_match_item ice_switch_pattern_perm_list[] = { {pattern_ethertype, ICE_SW_INSET_ETHER, ICE_INSET_NONE}, {pattern_ethertype_vlan, @@ -1699,7 +1629,8 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad, } pattern_match_item = - ice_search_pattern_match_item(pattern, array, array_len, error); + ice_search_pattern_match_item(ad, pattern, array, array_len, + error); if (!pattern_match_item) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_HANDLE, NULL, @@ -1859,21 +1790,11 @@ ice_switch_init(struct ice_adapter *ad) struct ice_flow_parser *dist_parser; struct ice_flow_parser *perm_parser; - if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - dist_parser = &ice_switch_dist_parser_comms; - else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) - dist_parser = &ice_switch_dist_parser_os; - else - return -EINVAL; - if (ad->devargs.pipe_mode_support) { - if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - perm_parser = &ice_switch_perm_parser_comms; - else - perm_parser = &ice_switch_perm_parser_os; - + perm_parser = &ice_switch_perm_parser; ret = ice_register_parser(perm_parser, ad); } else { + dist_parser = &ice_switch_dist_parser; ret = ice_register_parser(dist_parser, ad); } return ret; @@ -1885,21 +1806,11 @@ ice_switch_uninit(struct ice_adapter *ad) struct ice_flow_parser *dist_parser; struct ice_flow_parser *perm_parser; - if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - dist_parser = &ice_switch_dist_parser_comms; - else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) - dist_parser = &ice_switch_dist_parser_os; - else - return; - if (ad->devargs.pipe_mode_support) { - if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) - perm_parser = &ice_switch_perm_parser_comms; - else - perm_parser = &ice_switch_perm_parser_os; - + perm_parser = &ice_switch_perm_parser; ice_unregister_parser(perm_parser, ad); } else { + dist_parser = &ice_switch_dist_parser; ice_unregister_parser(dist_parser, ad); } } @@ -1917,37 +1828,19 @@ ice_flow_engine ice_switch_engine = { }; static struct -ice_flow_parser ice_switch_dist_parser_os = { +ice_flow_parser ice_switch_dist_parser = { .engine = &ice_switch_engine, - .array = ice_switch_pattern_dist_os, - .array_len = RTE_DIM(ice_switch_pattern_dist_os), + .array = ice_switch_pattern_dist_list, + .array_len = RTE_DIM(ice_switch_pattern_dist_list), .parse_pattern_action = ice_switch_parse_pattern_action, .stage = ICE_FLOW_STAGE_DISTRIBUTOR, }; static struct -ice_flow_parser ice_switch_dist_parser_comms = { - .engine = &ice_switch_engine, - .array = ice_switch_pattern_dist_comms, - .array_len = RTE_DIM(ice_switch_pattern_dist_comms), - .parse_pattern_action = ice_switch_parse_pattern_action, - .stage = ICE_FLOW_STAGE_DISTRIBUTOR, -}; - -static struct -ice_flow_parser ice_switch_perm_parser_os = { - .engine = &ice_switch_engine, - .array = ice_switch_pattern_perm_os, - .array_len = RTE_DIM(ice_switch_pattern_perm_os), - .parse_pattern_action = ice_switch_parse_pattern_action, - .stage = ICE_FLOW_STAGE_PERMISSION, -}; - -static struct -ice_flow_parser ice_switch_perm_parser_comms = { +ice_flow_parser ice_switch_perm_parser = { .engine = &ice_switch_engine, - .array = ice_switch_pattern_perm_comms, - .array_len = RTE_DIM(ice_switch_pattern_perm_comms), + .array = ice_switch_pattern_perm_list, + .array_len = RTE_DIM(ice_switch_pattern_perm_list), .parse_pattern_action = ice_switch_parse_pattern_action, .stage = ICE_FLOW_STAGE_PERMISSION, };