From patchwork Tue Mar 2 02:54:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zhirun" X-Patchwork-Id: 88336 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 0B7CBA054F; Tue, 2 Mar 2021 04:01:36 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EA6FA40F35; Tue, 2 Mar 2021 04:01:32 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 0C1924069B for ; Tue, 2 Mar 2021 04:01:30 +0100 (CET) IronPort-SDR: JFAOda+7mM+uNRLS6GjLN49pIlh7CC+Jy7RoRC1O9p1JaztwmqB7bthKcRf3uqgrybLTdSVBrR 4H97bIiMIilw== X-IronPort-AV: E=McAfee;i="6000,8403,9910"; a="183270136" X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="183270136" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2021 19:01:29 -0800 IronPort-SDR: nyzMn7Cm7afVMJ6ZkLsc1daZHj/Cs661wMZUliLIMl/dfnkYmSiDBeuaWy6hx3qJTJ1Js01SDi n4OoM14gI9qA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="366967384" Received: from dpdk-zhirun-dev.sh.intel.com ([10.67.118.176]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2021 19:01:26 -0800 From: Zhirun Yan To: dev@dpdk.org, qi.z.zhang@intel.com, yahui.cao@intel.com, xiao.w.wang@intel.com, junfeng.guo@intel.com Cc: simei.su@intel.com, ting.xu@intel.com, yuying.zhang@intel.com, xuan.ding@intel.com, Zhirun Yan Date: Tue, 2 Mar 2021 10:54:02 +0800 Message-Id: <20210302025407.1197434-2-zhirun.yan@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210302025407.1197434-1-zhirun.yan@intel.com> References: <20210127052933.2149243-1-zhirun.yan@intel.com> <20210302025407.1197434-1-zhirun.yan@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 1/6] net/ice: clean input set macro definition 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" Currently, the macro of input set use 2 bits, one bit for protocol and inner/outer, another bit for src/dst field. But this could not distinguish a rule with inner and outer fields for tunnel packet. Redefine input set macro to make it clear. Only use these two bits for protocol and field. Ignore the redundant inner/outer info. ICE_INSET_TUN_* is used by switch module, should be removed after switch refactor. Signed-off-by: Zhirun Yan --- drivers/net/ice/ice_fdir_filter.c | 8 +- drivers/net/ice/ice_generic_flow.h | 234 ++++++++++++----------------- 2 files changed, 104 insertions(+), 138 deletions(-) diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index ce6aa09d3d..4e99df1272 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -56,19 +56,19 @@ ICE_INSET_SCTP_SRC_PORT | ICE_INSET_SCTP_DST_PORT) #define ICE_FDIR_INSET_VXLAN_IPV4 (\ - ICE_INSET_TUN_IPV4_SRC | ICE_INSET_TUN_IPV4_DST) + ICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST) #define ICE_FDIR_INSET_VXLAN_IPV4_TCP (\ ICE_FDIR_INSET_VXLAN_IPV4 | \ - ICE_INSET_TUN_TCP_SRC_PORT | ICE_INSET_TUN_TCP_DST_PORT) + ICE_INSET_TCP_SRC_PORT | ICE_INSET_TCP_DST_PORT) #define ICE_FDIR_INSET_VXLAN_IPV4_UDP (\ ICE_FDIR_INSET_VXLAN_IPV4 | \ - ICE_INSET_TUN_UDP_SRC_PORT | ICE_INSET_TUN_UDP_DST_PORT) + ICE_INSET_UDP_SRC_PORT | ICE_INSET_UDP_DST_PORT) #define ICE_FDIR_INSET_VXLAN_IPV4_SCTP (\ ICE_FDIR_INSET_VXLAN_IPV4 | \ - ICE_INSET_TUN_SCTP_SRC_PORT | ICE_INSET_TUN_SCTP_DST_PORT) + ICE_INSET_SCTP_SRC_PORT | ICE_INSET_SCTP_DST_PORT) #define ICE_FDIR_INSET_IPV4_GTPU (\ ICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST | ICE_INSET_GTPU_TEID) diff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h index 18918769d2..3c648c0f4f 100644 --- a/drivers/net/ice/ice_generic_flow.h +++ b/drivers/net/ice/ice_generic_flow.h @@ -9,177 +9,143 @@ /* protocol */ -#define ICE_PROT_MAC_INNER (1ULL << 1) -#define ICE_PROT_MAC_OUTER (1ULL << 2) -#define ICE_PROT_VLAN_INNER (1ULL << 3) -#define ICE_PROT_VLAN_OUTER (1ULL << 4) -#define ICE_PROT_IPV4_INNER (1ULL << 5) -#define ICE_PROT_IPV4_OUTER (1ULL << 6) -#define ICE_PROT_IPV6_INNER (1ULL << 7) -#define ICE_PROT_IPV6_OUTER (1ULL << 8) -#define ICE_PROT_TCP_INNER (1ULL << 9) -#define ICE_PROT_TCP_OUTER (1ULL << 10) -#define ICE_PROT_UDP_INNER (1ULL << 11) -#define ICE_PROT_UDP_OUTER (1ULL << 12) -#define ICE_PROT_SCTP_INNER (1ULL << 13) -#define ICE_PROT_SCTP_OUTER (1ULL << 14) -#define ICE_PROT_ICMP4_INNER (1ULL << 15) -#define ICE_PROT_ICMP4_OUTER (1ULL << 16) -#define ICE_PROT_ICMP6_INNER (1ULL << 17) -#define ICE_PROT_ICMP6_OUTER (1ULL << 18) -#define ICE_PROT_VXLAN (1ULL << 19) -#define ICE_PROT_NVGRE (1ULL << 20) -#define ICE_PROT_GTPU (1ULL << 21) -#define ICE_PROT_PPPOE_S (1ULL << 22) -#define ICE_PROT_ESP (1ULL << 23) -#define ICE_PROT_AH (1ULL << 24) -#define ICE_PROT_L2TPV3OIP (1ULL << 25) -#define ICE_PROT_PFCP (1ULL << 26) +#define ICE_PROT_MAC BIT_ULL(1) +#define ICE_PROT_VLAN BIT_ULL(2) +#define ICE_PROT_IPV4 BIT_ULL(3) +#define ICE_PROT_IPV6 BIT_ULL(4) +#define ICE_PROT_TCP BIT_ULL(5) +#define ICE_PROT_UDP BIT_ULL(6) +#define ICE_PROT_SCTP BIT_ULL(7) +#define ICE_PROT_ICMP4 BIT_ULL(8) +#define ICE_PROT_ICMP6 BIT_ULL(9) +#define ICE_PROT_VXLAN BIT_ULL(10) +#define ICE_PROT_NVGRE BIT_ULL(11) +#define ICE_PROT_GTPU BIT_ULL(12) +#define ICE_PROT_PPPOE_S BIT_ULL(13) +#define ICE_PROT_ESP BIT_ULL(14) +#define ICE_PROT_AH BIT_ULL(15) +#define ICE_PROT_L2TPV3OIP BIT_ULL(16) +#define ICE_PROT_PFCP BIT_ULL(17) /* field */ -#define ICE_SMAC (1ULL << 63) -#define ICE_DMAC (1ULL << 62) -#define ICE_ETHERTYPE (1ULL << 61) -#define ICE_IP_SRC (1ULL << 60) -#define ICE_IP_DST (1ULL << 59) -#define ICE_IP_PROTO (1ULL << 58) -#define ICE_IP_TTL (1ULL << 57) -#define ICE_IP_TOS (1ULL << 56) -#define ICE_SPORT (1ULL << 55) -#define ICE_DPORT (1ULL << 54) -#define ICE_ICMP_TYPE (1ULL << 53) -#define ICE_ICMP_CODE (1ULL << 52) -#define ICE_VXLAN_VNI (1ULL << 51) -#define ICE_NVGRE_TNI (1ULL << 50) -#define ICE_GTPU_TEID (1ULL << 49) -#define ICE_GTPU_QFI (1ULL << 48) -#define ICE_PPPOE_SESSION (1ULL << 47) -#define ICE_PPPOE_PROTO (1ULL << 46) -#define ICE_ESP_SPI (1ULL << 45) -#define ICE_AH_SPI (1ULL << 44) -#define ICE_L2TPV3OIP_SESSION_ID (1ULL << 43) -#define ICE_PFCP_SEID (1ULL << 42) -#define ICE_PFCP_S_FIELD (1ULL << 41) +#define ICE_SMAC BIT_ULL(63) +#define ICE_DMAC BIT_ULL(62) +#define ICE_ETHERTYPE BIT_ULL(61) +#define ICE_IP_SRC BIT_ULL(60) +#define ICE_IP_DST BIT_ULL(59) +#define ICE_IP_PROTO BIT_ULL(58) +#define ICE_IP_TTL BIT_ULL(57) +#define ICE_IP_TOS BIT_ULL(56) +#define ICE_SPORT BIT_ULL(55) +#define ICE_DPORT BIT_ULL(54) +#define ICE_ICMP_TYPE BIT_ULL(53) +#define ICE_ICMP_CODE BIT_ULL(52) +#define ICE_VXLAN_VNI BIT_ULL(51) +#define ICE_NVGRE_TNI BIT_ULL(50) +#define ICE_GTPU_TEID BIT_ULL(49) +#define ICE_GTPU_QFI BIT_ULL(48) +#define ICE_PPPOE_SESSION BIT_ULL(47) +#define ICE_PPPOE_PROTO BIT_ULL(46) +#define ICE_ESP_SPI BIT_ULL(45) +#define ICE_AH_SPI BIT_ULL(44) +#define ICE_L2TPV3OIP_SESSION_ID BIT_ULL(43) +#define ICE_PFCP_SEID BIT_ULL(42) +#define ICE_PFCP_S_FIELD BIT_ULL(41) /* input set */ -#define ICE_INSET_NONE 0ULL - -/* non-tunnel */ - -#define ICE_INSET_SMAC (ICE_PROT_MAC_OUTER | ICE_SMAC) -#define ICE_INSET_DMAC (ICE_PROT_MAC_OUTER | ICE_DMAC) -#define ICE_INSET_VLAN_INNER (ICE_PROT_VLAN_INNER) -#define ICE_INSET_VLAN_OUTER (ICE_PROT_VLAN_OUTER) -#define ICE_INSET_ETHERTYPE (ICE_ETHERTYPE) - -#define ICE_INSET_IPV4_SRC \ - (ICE_PROT_IPV4_OUTER | ICE_IP_SRC) -#define ICE_INSET_IPV4_DST \ - (ICE_PROT_IPV4_OUTER | ICE_IP_DST) -#define ICE_INSET_IPV4_TOS \ - (ICE_PROT_IPV4_OUTER | ICE_IP_TOS) -#define ICE_INSET_IPV4_PROTO \ - (ICE_PROT_IPV4_OUTER | ICE_IP_PROTO) -#define ICE_INSET_IPV4_TTL \ - (ICE_PROT_IPV4_OUTER | ICE_IP_TTL) -#define ICE_INSET_IPV6_SRC \ - (ICE_PROT_IPV6_OUTER | ICE_IP_SRC) -#define ICE_INSET_IPV6_DST \ - (ICE_PROT_IPV6_OUTER | ICE_IP_DST) -#define ICE_INSET_IPV6_NEXT_HDR \ - (ICE_PROT_IPV6_OUTER | ICE_IP_PROTO) -#define ICE_INSET_IPV6_HOP_LIMIT \ - (ICE_PROT_IPV6_OUTER | ICE_IP_TTL) -#define ICE_INSET_IPV6_TC \ - (ICE_PROT_IPV6_OUTER | ICE_IP_TOS) - -#define ICE_INSET_TCP_SRC_PORT \ - (ICE_PROT_TCP_OUTER | ICE_SPORT) -#define ICE_INSET_TCP_DST_PORT \ - (ICE_PROT_TCP_OUTER | ICE_DPORT) -#define ICE_INSET_UDP_SRC_PORT \ - (ICE_PROT_UDP_OUTER | ICE_SPORT) -#define ICE_INSET_UDP_DST_PORT \ - (ICE_PROT_UDP_OUTER | ICE_DPORT) -#define ICE_INSET_SCTP_SRC_PORT \ - (ICE_PROT_SCTP_OUTER | ICE_SPORT) -#define ICE_INSET_SCTP_DST_PORT \ - (ICE_PROT_SCTP_OUTER | ICE_DPORT) -#define ICE_INSET_ICMP4_SRC_PORT \ - (ICE_PROT_ICMP4_OUTER | ICE_SPORT) -#define ICE_INSET_ICMP4_DST_PORT \ - (ICE_PROT_ICMP4_OUTER | ICE_DPORT) -#define ICE_INSET_ICMP6_SRC_PORT \ - (ICE_PROT_ICMP6_OUTER | ICE_SPORT) -#define ICE_INSET_ICMP6_DST_PORT \ - (ICE_PROT_ICMP6_OUTER | ICE_DPORT) -#define ICE_INSET_ICMP4_TYPE \ - (ICE_PROT_ICMP4_OUTER | ICE_ICMP_TYPE) -#define ICE_INSET_ICMP4_CODE \ - (ICE_PROT_ICMP4_OUTER | ICE_ICMP_CODE) -#define ICE_INSET_ICMP6_TYPE \ - (ICE_PROT_ICMP6_OUTER | ICE_ICMP_TYPE) -#define ICE_INSET_ICMP6_CODE \ - (ICE_PROT_ICMP6_OUTER | ICE_ICMP_CODE) +#define ICE_INSET_NONE 0ULL + +#define ICE_INSET_SMAC (ICE_SMAC) +#define ICE_INSET_DMAC (ICE_DMAC) +#define ICE_INSET_VLAN (ICE_PROT_VLAN) +#define ICE_INSET_VLAN_INNER (ICE_PROT_VLAN) +#define ICE_INSET_VLAN_OUTER (ICE_PROT_VLAN) +#define ICE_INSET_ETHERTYPE (ICE_ETHERTYPE) + +#define ICE_INSET_IPV4_SRC (ICE_PROT_IPV4 | ICE_IP_SRC) +#define ICE_INSET_IPV4_DST (ICE_PROT_IPV4 | ICE_IP_DST) +#define ICE_INSET_IPV4_TOS (ICE_PROT_IPV4 | ICE_IP_TOS) +#define ICE_INSET_IPV4_PROTO (ICE_PROT_IPV4 | ICE_IP_PROTO) +#define ICE_INSET_IPV4_TTL (ICE_PROT_IPV4 | ICE_IP_TTL) +#define ICE_INSET_IPV6_SRC (ICE_PROT_IPV6 | ICE_IP_SRC) +#define ICE_INSET_IPV6_DST (ICE_PROT_IPV6 | ICE_IP_DST) +#define ICE_INSET_IPV6_NEXT_HDR (ICE_PROT_IPV6 | ICE_IP_PROTO) +#define ICE_INSET_IPV6_HOP_LIMIT (ICE_PROT_IPV6 | ICE_IP_TTL) +#define ICE_INSET_IPV6_TC (ICE_PROT_IPV6 | ICE_IP_TOS) + +#define ICE_INSET_TCP_SRC_PORT (ICE_PROT_TCP | ICE_SPORT) +#define ICE_INSET_TCP_DST_PORT (ICE_PROT_TCP | ICE_DPORT) +#define ICE_INSET_UDP_SRC_PORT (ICE_PROT_UDP | ICE_SPORT) +#define ICE_INSET_UDP_DST_PORT (ICE_PROT_UDP | ICE_DPORT) +#define ICE_INSET_SCTP_SRC_PORT (ICE_PROT_SCTP | ICE_SPORT) +#define ICE_INSET_SCTP_DST_PORT (ICE_PROT_SCTP | ICE_DPORT) +#define ICE_INSET_ICMP4_SRC_PORT (ICE_PROT_ICMP4 | ICE_SPORT) +#define ICE_INSET_ICMP4_DST_PORT (ICE_PROT_ICMP4 | ICE_DPORT) +#define ICE_INSET_ICMP6_SRC_PORT (ICE_PROT_ICMP6 | ICE_SPORT) +#define ICE_INSET_ICMP6_DST_PORT (ICE_PROT_ICMP6 | ICE_DPORT) +#define ICE_INSET_ICMP4_TYPE (ICE_PROT_ICMP4 | ICE_ICMP_TYPE) +#define ICE_INSET_ICMP4_CODE (ICE_PROT_ICMP4 | ICE_ICMP_CODE) +#define ICE_INSET_ICMP6_TYPE (ICE_PROT_ICMP6 | ICE_ICMP_TYPE) +#define ICE_INSET_ICMP6_CODE (ICE_PROT_ICMP6 | ICE_ICMP_CODE) /* tunnel */ #define ICE_INSET_TUN_SMAC \ - (ICE_PROT_MAC_INNER | ICE_SMAC) + (ICE_PROT_MAC | ICE_SMAC) #define ICE_INSET_TUN_DMAC \ - (ICE_PROT_MAC_INNER | ICE_DMAC) + (ICE_PROT_MAC | ICE_DMAC) #define ICE_INSET_TUN_IPV4_SRC \ - (ICE_PROT_IPV4_INNER | ICE_IP_SRC) + (ICE_PROT_IPV4 | ICE_IP_SRC) #define ICE_INSET_TUN_IPV4_DST \ - (ICE_PROT_IPV4_INNER | ICE_IP_DST) + (ICE_PROT_IPV4 | ICE_IP_DST) #define ICE_INSET_TUN_IPV4_TTL \ - (ICE_PROT_IPV4_INNER | ICE_IP_TTL) + (ICE_PROT_IPV4 | ICE_IP_TTL) #define ICE_INSET_TUN_IPV4_PROTO \ - (ICE_PROT_IPV4_INNER | ICE_IP_PROTO) + (ICE_PROT_IPV4 | ICE_IP_PROTO) #define ICE_INSET_TUN_IPV4_TOS \ - (ICE_PROT_IPV4_INNER | ICE_IP_TOS) + (ICE_PROT_IPV4 | ICE_IP_TOS) #define ICE_INSET_TUN_IPV6_SRC \ - (ICE_PROT_IPV6_INNER | ICE_IP_SRC) + (ICE_PROT_IPV6 | ICE_IP_SRC) #define ICE_INSET_TUN_IPV6_DST \ - (ICE_PROT_IPV6_INNER | ICE_IP_DST) + (ICE_PROT_IPV6 | ICE_IP_DST) #define ICE_INSET_TUN_IPV6_HOP_LIMIT \ - (ICE_PROT_IPV6_INNER | ICE_IP_TTL) + (ICE_PROT_IPV6 | ICE_IP_TTL) #define ICE_INSET_TUN_IPV6_NEXT_HDR \ - (ICE_PROT_IPV6_INNER | ICE_IP_PROTO) + (ICE_PROT_IPV6 | ICE_IP_PROTO) #define ICE_INSET_TUN_IPV6_TC \ - (ICE_PROT_IPV6_INNER | ICE_IP_TOS) + (ICE_PROT_IPV6 | ICE_IP_TOS) #define ICE_INSET_TUN_TCP_SRC_PORT \ - (ICE_PROT_TCP_INNER | ICE_SPORT) + (ICE_PROT_TCP | ICE_SPORT) #define ICE_INSET_TUN_TCP_DST_PORT \ - (ICE_PROT_TCP_INNER | ICE_DPORT) + (ICE_PROT_TCP | ICE_DPORT) #define ICE_INSET_TUN_UDP_SRC_PORT \ - (ICE_PROT_UDP_INNER | ICE_SPORT) + (ICE_PROT_UDP | ICE_SPORT) #define ICE_INSET_TUN_UDP_DST_PORT \ - (ICE_PROT_UDP_INNER | ICE_DPORT) + (ICE_PROT_UDP | ICE_DPORT) #define ICE_INSET_TUN_SCTP_SRC_PORT \ - (ICE_PROT_SCTP_INNER | ICE_SPORT) + (ICE_PROT_SCTP | ICE_SPORT) #define ICE_INSET_TUN_SCTP_DST_PORT \ - (ICE_PROT_SCTP_INNER | ICE_DPORT) + (ICE_PROT_SCTP | ICE_DPORT) #define ICE_INSET_TUN_ICMP4_SRC_PORT \ - (ICE_PROT_ICMP4_INNER | ICE_SPORT) + (ICE_PROT_ICMP4 | ICE_SPORT) #define ICE_INSET_TUN_ICMP4_DST_PORT \ - (ICE_PROT_ICMP4_INNER | ICE_DPORT) + (ICE_PROT_ICMP4 | ICE_DPORT) #define ICE_INSET_TUN_ICMP6_SRC_PORT \ - (ICE_PROT_ICMP6_INNER | ICE_SPORT) + (ICE_PROT_ICMP6 | ICE_SPORT) #define ICE_INSET_TUN_ICMP6_DST_PORT \ - (ICE_PROT_ICMP6_INNER | ICE_DPORT) + (ICE_PROT_ICMP6 | ICE_DPORT) #define ICE_INSET_TUN_ICMP4_TYPE \ - (ICE_PROT_ICMP4_INNER | ICE_ICMP_TYPE) + (ICE_PROT_ICMP4 | ICE_ICMP_TYPE) #define ICE_INSET_TUN_ICMP4_CODE \ - (ICE_PROT_ICMP4_INNER | ICE_ICMP_CODE) + (ICE_PROT_ICMP4 | ICE_ICMP_CODE) #define ICE_INSET_TUN_ICMP6_TYPE \ - (ICE_PROT_ICMP6_INNER | ICE_ICMP_TYPE) + (ICE_PROT_ICMP6 | ICE_ICMP_TYPE) #define ICE_INSET_TUN_ICMP6_CODE \ - (ICE_PROT_ICMP6_INNER | ICE_ICMP_CODE) + (ICE_PROT_ICMP6 | ICE_ICMP_CODE) #define ICE_INSET_TUN_VXLAN_VNI \ (ICE_PROT_VXLAN | ICE_VXLAN_VNI) From patchwork Tue Mar 2 02:54:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zhirun" X-Patchwork-Id: 88337 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 BDFA0A054F; Tue, 2 Mar 2021 04:01:45 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 877451CC3CE; Tue, 2 Mar 2021 04:01:36 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id ACF0D4069B for ; Tue, 2 Mar 2021 04:01:32 +0100 (CET) IronPort-SDR: DcPsXMZsgrli0DXTLZo3cKTSuRZSHITZ/v5dLDPzIBpPrw1AnXQIpx+J2SSUW/XJLgieTnNuEn TFmv47eotaaw== X-IronPort-AV: E=McAfee;i="6000,8403,9910"; a="183270150" X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="183270150" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2021 19:01:32 -0800 IronPort-SDR: zMleuSSWVlir1Ih9SDnzqH+sdBfoteXMa4oFUZ2Xpt8buN+b5O2BMTzgY6MezEzqtfnp4/YG62 jRThj+EwnkXg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="366967399" Received: from dpdk-zhirun-dev.sh.intel.com ([10.67.118.176]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2021 19:01:29 -0800 From: Zhirun Yan To: dev@dpdk.org, qi.z.zhang@intel.com, yahui.cao@intel.com, xiao.w.wang@intel.com, junfeng.guo@intel.com Cc: simei.su@intel.com, ting.xu@intel.com, yuying.zhang@intel.com, xuan.ding@intel.com, Zhirun Yan Date: Tue, 2 Mar 2021 10:54:03 +0800 Message-Id: <20210302025407.1197434-3-zhirun.yan@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210302025407.1197434-1-zhirun.yan@intel.com> References: <20210127052933.2149243-1-zhirun.yan@intel.com> <20210302025407.1197434-1-zhirun.yan@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 2/6] net/ice: refactor structure field 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" This patch use input_set_o and input_set_i to distinguish inner/outer input set. input_set_i is only used for inner field. Signed-off-by: Zhirun Yan --- drivers/net/ice/ice_ethdev.h | 4 ++-- drivers/net/ice/ice_fdir_filter.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h index 7a7a5d5bfb..2a8a8169d5 100644 --- a/drivers/net/ice/ice_ethdev.h +++ b/drivers/net/ice/ice_ethdev.h @@ -301,8 +301,8 @@ struct ice_fdir_filter_conf { struct ice_fdir_counter *counter; /* flow specific counter context */ struct rte_flow_action_count act_count; - uint64_t input_set; - uint64_t outer_input_set; /* only for tunnel packets outer fields */ + uint64_t input_set_o; /* used for non-tunnel or tunnel outer fields */ + uint64_t input_set_i; /* only for tunnel inner fields */ uint32_t mark_flag; }; diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 4e99df1272..570ec56058 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -1249,7 +1249,7 @@ ice_fdir_create_filter(struct ice_adapter *ad, is_tun = ice_fdir_is_tunnel_profile(filter->tunnel_type); ret = ice_fdir_input_set_conf(pf, filter->input.flow_type, - filter->input_set, filter->outer_input_set, + filter->input_set_i, filter->input_set_o, filter->tunnel_type); if (ret) { rte_flow_error_set(error, -ret, @@ -1982,7 +1982,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, filter->tunnel_type = tunnel_type; filter->input.flow_type = flow_type; - filter->input_set = input_set; + filter->input_set_o = input_set; return 0; } @@ -2011,7 +2011,7 @@ ice_fdir_parse(struct ice_adapter *ad, ret = ice_fdir_parse_pattern(ad, pattern, error, filter); if (ret) goto error; - input_set = filter->input_set | filter->outer_input_set; + input_set = filter->input_set_o | filter->input_set_i; if (!input_set || input_set & ~item->input_set_mask) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM_SPEC, From patchwork Tue Mar 2 02:54:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zhirun" X-Patchwork-Id: 88338 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 BB26CA054F; Tue, 2 Mar 2021 04:01:52 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B67281CC4D4; Tue, 2 Mar 2021 04:01:37 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 160AA1CC3AF for ; Tue, 2 Mar 2021 04:01:35 +0100 (CET) IronPort-SDR: D3M0BfFDSuca3ThIz0FwuhUfMMoTXoyaJfwfuTCRi+04aIo444v7A3eLUuk1P8lvDK6uLj4O5z QsWHNxjFn+Mw== X-IronPort-AV: E=McAfee;i="6000,8403,9910"; a="183270158" X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="183270158" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2021 19:01:35 -0800 IronPort-SDR: Dp/VyD63e8oAXLekFX5VPterU2DTl1kbtFMG+WpfX6/YoPGC9/Z775BG+OgPSnDHfaiG5WyAmN d4tXhFTfS5BQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="366967417" Received: from dpdk-zhirun-dev.sh.intel.com ([10.67.118.176]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2021 19:01:32 -0800 From: Zhirun Yan To: dev@dpdk.org, qi.z.zhang@intel.com, yahui.cao@intel.com, xiao.w.wang@intel.com, junfeng.guo@intel.com Cc: simei.su@intel.com, ting.xu@intel.com, yuying.zhang@intel.com, xuan.ding@intel.com, Zhirun Yan Date: Tue, 2 Mar 2021 10:54:04 +0800 Message-Id: <20210302025407.1197434-4-zhirun.yan@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210302025407.1197434-1-zhirun.yan@intel.com> References: <20210127052933.2149243-1-zhirun.yan@intel.com> <20210302025407.1197434-1-zhirun.yan@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 3/6] net/ice: refactor flow pattern parser 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" Distinguish inner/outer input_set. And avoid too many nested conditionals in each type's parser. input_set_o is used for tunnel outer fields or non-tunnel fields , input_set_i is only used for inner fields. For GTPU, store the outer IP fields in inner part to align with shared code behavior. Signed-off-by: Zhirun Yan --- drivers/net/ice/ice_fdir_filter.c | 475 +++++++++++++++--------------- 1 file changed, 236 insertions(+), 239 deletions(-) diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 570ec56058..6bee2b1167 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -1610,7 +1610,9 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, const struct rte_flow_item_vxlan *vxlan_spec, *vxlan_mask; const struct rte_flow_item_gtp *gtp_spec, *gtp_mask; const struct rte_flow_item_gtp_psc *gtp_psc_spec, *gtp_psc_mask; - uint64_t input_set = ICE_INSET_NONE; + uint64_t input_set_i = ICE_INSET_NONE; /* only for tunnel inner */ + uint64_t input_set_o = ICE_INSET_NONE; /* non-tunnel and tunnel outer */ + uint64_t *input_set; uint8_t flow_type = ICE_FLTR_PTYPE_NONF_NONE; uint8_t ipv6_addr_mask[16] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -1619,289 +1621,282 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, uint32_t vtc_flow_cpu; uint16_t ether_type; enum rte_flow_item_type next_type; + bool is_outer = true; + struct ice_fdir_extra *p_ext_data; + struct ice_fdir_v4 *p_v4 = NULL; + struct ice_fdir_v6 *p_v6 = NULL; + for (item = pattern; item->type != RTE_FLOW_ITEM_TYPE_END; item++) { + if (item->type == RTE_FLOW_ITEM_TYPE_VXLAN) + tunnel_type = ICE_FDIR_TUNNEL_TYPE_VXLAN; + /* To align with shared code behavior, save gtpu outer + * fields in inner struct. + */ + if (item->type == RTE_FLOW_ITEM_TYPE_GTPU || + item->type == RTE_FLOW_ITEM_TYPE_GTP_PSC) { + is_outer = false; + } + } + + /* This loop parse flow pattern and distinguish Non-tunnel and tunnel + * flow. input_set_i is used for inner part. + */ for (item = pattern; item->type != RTE_FLOW_ITEM_TYPE_END; item++) { if (item->last) { rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Not support range"); + RTE_FLOW_ERROR_TYPE_ITEM, + item, + "Not support range"); return -rte_errno; } item_type = item->type; + input_set = (tunnel_type && !is_outer) ? + &input_set_i : &input_set_o; + switch (item_type) { case RTE_FLOW_ITEM_TYPE_ETH: + flow_type = ICE_FLTR_PTYPE_NON_IP_L2; eth_spec = item->spec; eth_mask = item->mask; - next_type = (item + 1)->type; - if (eth_spec && eth_mask) { - if (!rte_is_zero_ether_addr(ð_mask->dst)) { - input_set |= ICE_INSET_DMAC; - rte_memcpy(&filter->input.ext_data.dst_mac, - ð_spec->dst, - RTE_ETHER_ADDR_LEN); - } + if (!(eth_spec && eth_mask)) + break; - if (!rte_is_zero_ether_addr(ð_mask->src)) { - input_set |= ICE_INSET_SMAC; - rte_memcpy(&filter->input.ext_data.src_mac, - ð_spec->src, - RTE_ETHER_ADDR_LEN); - } + if (!rte_is_zero_ether_addr(ð_mask->dst)) + *input_set |= ICE_INSET_DMAC; + if (!rte_is_zero_ether_addr(ð_mask->src)) + *input_set |= ICE_INSET_SMAC; - /* Ignore this field except for ICE_FLTR_PTYPE_NON_IP_L2 */ - if (eth_mask->type == RTE_BE16(0xffff) && - next_type == RTE_FLOW_ITEM_TYPE_END) { - input_set |= ICE_INSET_ETHERTYPE; - ether_type = rte_be_to_cpu_16(eth_spec->type); - - if (ether_type == RTE_ETHER_TYPE_IPV4 || - ether_type == RTE_ETHER_TYPE_IPV6) { - rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Unsupported ether_type."); - return -rte_errno; - } - - rte_memcpy(&filter->input.ext_data.ether_type, - ð_spec->type, - sizeof(eth_spec->type)); - flow_type = ICE_FLTR_PTYPE_NON_IP_L2; + next_type = (item + 1)->type; + /* Ignore this field except for ICE_FLTR_PTYPE_NON_IP_L2 */ + if (eth_mask->type == RTE_BE16(0xffff) && + next_type == RTE_FLOW_ITEM_TYPE_END) { + *input_set |= ICE_INSET_ETHERTYPE; + ether_type = rte_be_to_cpu_16(eth_spec->type); + + if (ether_type == RTE_ETHER_TYPE_IPV4 || + ether_type == RTE_ETHER_TYPE_IPV6) { + rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ITEM, + item, + "Unsupported ether_type."); + return -rte_errno; } } + + p_ext_data = (tunnel_type && is_outer) ? + &filter->input.ext_data_outer : + &filter->input.ext_data; + rte_memcpy(&p_ext_data->src_mac, + ð_spec->src, RTE_ETHER_ADDR_LEN); + rte_memcpy(&p_ext_data->dst_mac, + ð_spec->dst, RTE_ETHER_ADDR_LEN); + rte_memcpy(&p_ext_data->ether_type, + ð_spec->type, sizeof(eth_spec->type)); break; case RTE_FLOW_ITEM_TYPE_IPV4: + flow_type = ICE_FLTR_PTYPE_NONF_IPV4_OTHER; l3 = RTE_FLOW_ITEM_TYPE_IPV4; ipv4_spec = item->spec; ipv4_mask = item->mask; - - if (ipv4_spec && ipv4_mask) { - /* Check IPv4 mask and update input set */ - if (ipv4_mask->hdr.version_ihl || - ipv4_mask->hdr.total_length || - ipv4_mask->hdr.packet_id || - ipv4_mask->hdr.fragment_offset || - ipv4_mask->hdr.hdr_checksum) { - rte_flow_error_set(error, EINVAL, + p_v4 = (tunnel_type && is_outer) ? + &filter->input.ip_outer.v4 : + &filter->input.ip.v4; + + if (!(ipv4_spec && ipv4_mask)) + break; + + /* Check IPv4 mask and update input set */ + if (ipv4_mask->hdr.version_ihl || + ipv4_mask->hdr.total_length || + ipv4_mask->hdr.packet_id || + ipv4_mask->hdr.fragment_offset || + ipv4_mask->hdr.hdr_checksum) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Invalid IPv4 mask."); - return -rte_errno; - } - if (ipv4_mask->hdr.src_addr == UINT32_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_IPV4_SRC : - ICE_INSET_IPV4_SRC; - if (ipv4_mask->hdr.dst_addr == UINT32_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_IPV4_DST : - ICE_INSET_IPV4_DST; - if (ipv4_mask->hdr.type_of_service == UINT8_MAX) - input_set |= ICE_INSET_IPV4_TOS; - if (ipv4_mask->hdr.time_to_live == UINT8_MAX) - input_set |= ICE_INSET_IPV4_TTL; - if (ipv4_mask->hdr.next_proto_id == UINT8_MAX) - input_set |= ICE_INSET_IPV4_PROTO; - - filter->input.ip.v4.dst_ip = - ipv4_spec->hdr.dst_addr; - filter->input.ip.v4.src_ip = - ipv4_spec->hdr.src_addr; - filter->input.ip.v4.tos = - ipv4_spec->hdr.type_of_service; - filter->input.ip.v4.ttl = - ipv4_spec->hdr.time_to_live; - filter->input.ip.v4.proto = - ipv4_spec->hdr.next_proto_id; + return -rte_errno; } - flow_type = ICE_FLTR_PTYPE_NONF_IPV4_OTHER; + if (ipv4_mask->hdr.dst_addr == UINT32_MAX) + *input_set |= ICE_INSET_IPV4_DST; + if (ipv4_mask->hdr.src_addr == UINT32_MAX) + *input_set |= ICE_INSET_IPV4_SRC; + if (ipv4_mask->hdr.time_to_live == UINT8_MAX) + *input_set |= ICE_INSET_IPV4_TTL; + if (ipv4_mask->hdr.next_proto_id == UINT8_MAX) + *input_set |= ICE_INSET_IPV4_PROTO; + if (ipv4_mask->hdr.type_of_service == UINT8_MAX) + *input_set |= ICE_INSET_IPV4_TOS; + + p_v4->dst_ip = ipv4_spec->hdr.dst_addr; + p_v4->src_ip = ipv4_spec->hdr.src_addr; + p_v4->ttl = ipv4_spec->hdr.time_to_live; + p_v4->proto = ipv4_spec->hdr.next_proto_id; + p_v4->tos = ipv4_spec->hdr.type_of_service; break; case RTE_FLOW_ITEM_TYPE_IPV6: + flow_type = ICE_FLTR_PTYPE_NONF_IPV6_OTHER; l3 = RTE_FLOW_ITEM_TYPE_IPV6; ipv6_spec = item->spec; ipv6_mask = item->mask; + p_v6 = (tunnel_type && is_outer) ? + &filter->input.ip_outer.v6 : + &filter->input.ip.v6; - if (ipv6_spec && ipv6_mask) { - /* Check IPv6 mask and update input set */ - if (ipv6_mask->hdr.payload_len) { - rte_flow_error_set(error, EINVAL, + if (!(ipv6_spec && ipv6_mask)) + break; + + /* Check IPv6 mask and update input set */ + if (ipv6_mask->hdr.payload_len) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Invalid IPv6 mask"); - return -rte_errno; - } - - if (!memcmp(ipv6_mask->hdr.src_addr, - ipv6_addr_mask, - RTE_DIM(ipv6_mask->hdr.src_addr))) - input_set |= ICE_INSET_IPV6_SRC; - if (!memcmp(ipv6_mask->hdr.dst_addr, - ipv6_addr_mask, - RTE_DIM(ipv6_mask->hdr.dst_addr))) - input_set |= ICE_INSET_IPV6_DST; - - if ((ipv6_mask->hdr.vtc_flow & - rte_cpu_to_be_32(ICE_IPV6_TC_MASK)) - == rte_cpu_to_be_32(ICE_IPV6_TC_MASK)) - input_set |= ICE_INSET_IPV6_TC; - if (ipv6_mask->hdr.proto == UINT8_MAX) - input_set |= ICE_INSET_IPV6_NEXT_HDR; - if (ipv6_mask->hdr.hop_limits == UINT8_MAX) - input_set |= ICE_INSET_IPV6_HOP_LIMIT; - - rte_memcpy(filter->input.ip.v6.dst_ip, - ipv6_spec->hdr.dst_addr, 16); - rte_memcpy(filter->input.ip.v6.src_ip, - ipv6_spec->hdr.src_addr, 16); - - vtc_flow_cpu = - rte_be_to_cpu_32(ipv6_spec->hdr.vtc_flow); - filter->input.ip.v6.tc = - (uint8_t)(vtc_flow_cpu >> - ICE_FDIR_IPV6_TC_OFFSET); - filter->input.ip.v6.proto = - ipv6_spec->hdr.proto; - filter->input.ip.v6.hlim = - ipv6_spec->hdr.hop_limits; + return -rte_errno; } - flow_type = ICE_FLTR_PTYPE_NONF_IPV6_OTHER; + if (!memcmp(ipv6_mask->hdr.src_addr, ipv6_addr_mask, + RTE_DIM(ipv6_mask->hdr.src_addr))) + *input_set |= ICE_INSET_IPV6_SRC; + if (!memcmp(ipv6_mask->hdr.dst_addr, ipv6_addr_mask, + RTE_DIM(ipv6_mask->hdr.dst_addr))) + *input_set |= ICE_INSET_IPV6_DST; + + if ((ipv6_mask->hdr.vtc_flow & + rte_cpu_to_be_32(ICE_IPV6_TC_MASK)) + == rte_cpu_to_be_32(ICE_IPV6_TC_MASK)) + *input_set |= ICE_INSET_IPV6_TC; + if (ipv6_mask->hdr.proto == UINT8_MAX) + *input_set |= ICE_INSET_IPV6_NEXT_HDR; + if (ipv6_mask->hdr.hop_limits == UINT8_MAX) + *input_set |= ICE_INSET_IPV6_HOP_LIMIT; + + rte_memcpy(&p_v6->dst_ip, ipv6_spec->hdr.dst_addr, 16); + rte_memcpy(&p_v6->src_ip, ipv6_spec->hdr.src_addr, 16); + vtc_flow_cpu = rte_be_to_cpu_32(ipv6_spec->hdr.vtc_flow); + p_v6->tc = (uint8_t)(vtc_flow_cpu >> ICE_FDIR_IPV6_TC_OFFSET); + p_v6->proto = ipv6_spec->hdr.proto; + p_v6->hlim = ipv6_spec->hdr.hop_limits; break; case RTE_FLOW_ITEM_TYPE_TCP: - tcp_spec = item->spec; - tcp_mask = item->mask; - if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) flow_type = ICE_FLTR_PTYPE_NONF_IPV4_TCP; - else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) + if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) flow_type = ICE_FLTR_PTYPE_NONF_IPV6_TCP; - if (tcp_spec && tcp_mask) { - /* Check TCP mask and update input set */ - if (tcp_mask->hdr.sent_seq || - tcp_mask->hdr.recv_ack || - tcp_mask->hdr.data_off || - tcp_mask->hdr.tcp_flags || - tcp_mask->hdr.rx_win || - tcp_mask->hdr.cksum || - tcp_mask->hdr.tcp_urp) { - rte_flow_error_set(error, EINVAL, + tcp_spec = item->spec; + tcp_mask = item->mask; + + if (!(tcp_spec && tcp_mask)) + break; + + /* Check TCP mask and update input set */ + if (tcp_mask->hdr.sent_seq || + tcp_mask->hdr.recv_ack || + tcp_mask->hdr.data_off || + tcp_mask->hdr.tcp_flags || + tcp_mask->hdr.rx_win || + tcp_mask->hdr.cksum || + tcp_mask->hdr.tcp_urp) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Invalid TCP mask"); - return -rte_errno; - } + return -rte_errno; + } - if (tcp_mask->hdr.src_port == UINT16_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_TCP_SRC_PORT : - ICE_INSET_TCP_SRC_PORT; - if (tcp_mask->hdr.dst_port == UINT16_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_TCP_DST_PORT : - ICE_INSET_TCP_DST_PORT; - - /* Get filter info */ - if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) { - filter->input.ip.v4.dst_port = - tcp_spec->hdr.dst_port; - filter->input.ip.v4.src_port = - tcp_spec->hdr.src_port; - } else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) { - filter->input.ip.v6.dst_port = - tcp_spec->hdr.dst_port; - filter->input.ip.v6.src_port = - tcp_spec->hdr.src_port; - } + if (tcp_mask->hdr.src_port == UINT16_MAX) + *input_set |= ICE_INSET_TCP_SRC_PORT; + if (tcp_mask->hdr.dst_port == UINT16_MAX) + *input_set |= ICE_INSET_TCP_DST_PORT; + + /* Get filter info */ + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) { + assert(p_v4); + p_v4->dst_port = tcp_spec->hdr.dst_port; + p_v4->src_port = tcp_spec->hdr.src_port; + } else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) { + assert(p_v6); + p_v6->dst_port = tcp_spec->hdr.dst_port; + p_v6->src_port = tcp_spec->hdr.src_port; } break; case RTE_FLOW_ITEM_TYPE_UDP: - udp_spec = item->spec; - udp_mask = item->mask; - if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) flow_type = ICE_FLTR_PTYPE_NONF_IPV4_UDP; - else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) + if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) flow_type = ICE_FLTR_PTYPE_NONF_IPV6_UDP; - if (udp_spec && udp_mask) { - /* Check UDP mask and update input set*/ - if (udp_mask->hdr.dgram_len || - udp_mask->hdr.dgram_cksum) { - rte_flow_error_set(error, EINVAL, + udp_spec = item->spec; + udp_mask = item->mask; + + if (!(udp_spec && udp_mask)) + break; + + /* Check UDP mask and update input set*/ + if (udp_mask->hdr.dgram_len || + udp_mask->hdr.dgram_cksum) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Invalid UDP mask"); - return -rte_errno; - } + return -rte_errno; + } - if (udp_mask->hdr.src_port == UINT16_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_UDP_SRC_PORT : - ICE_INSET_UDP_SRC_PORT; - if (udp_mask->hdr.dst_port == UINT16_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_UDP_DST_PORT : - ICE_INSET_UDP_DST_PORT; - - /* Get filter info */ - if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) { - filter->input.ip.v4.dst_port = - udp_spec->hdr.dst_port; - filter->input.ip.v4.src_port = - udp_spec->hdr.src_port; - } else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) { - filter->input.ip.v6.src_port = - udp_spec->hdr.src_port; - filter->input.ip.v6.dst_port = - udp_spec->hdr.dst_port; - } + if (udp_mask->hdr.src_port == UINT16_MAX) + *input_set |= ICE_INSET_UDP_SRC_PORT; + if (udp_mask->hdr.dst_port == UINT16_MAX) + *input_set |= ICE_INSET_UDP_DST_PORT; + + /* Get filter info */ + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) { + assert(p_v4); + p_v4->dst_port = udp_spec->hdr.dst_port; + p_v4->src_port = udp_spec->hdr.src_port; + } else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) { + assert(p_v6); + p_v6->src_port = udp_spec->hdr.src_port; + p_v6->dst_port = udp_spec->hdr.dst_port; } break; case RTE_FLOW_ITEM_TYPE_SCTP: - sctp_spec = item->spec; - sctp_mask = item->mask; - if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) flow_type = ICE_FLTR_PTYPE_NONF_IPV4_SCTP; - else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) + if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) flow_type = ICE_FLTR_PTYPE_NONF_IPV6_SCTP; - if (sctp_spec && sctp_mask) { - /* Check SCTP mask and update input set */ - if (sctp_mask->hdr.cksum) { - rte_flow_error_set(error, EINVAL, + sctp_spec = item->spec; + sctp_mask = item->mask; + + if (!(sctp_spec && sctp_mask)) + break; + + /* Check SCTP mask and update input set */ + if (sctp_mask->hdr.cksum) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Invalid UDP mask"); - return -rte_errno; - } + return -rte_errno; + } - if (sctp_mask->hdr.src_port == UINT16_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_SCTP_SRC_PORT : - ICE_INSET_SCTP_SRC_PORT; - if (sctp_mask->hdr.dst_port == UINT16_MAX) - input_set |= tunnel_type ? - ICE_INSET_TUN_SCTP_DST_PORT : - ICE_INSET_SCTP_DST_PORT; - - /* Get filter info */ - if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) { - filter->input.ip.v4.dst_port = - sctp_spec->hdr.dst_port; - filter->input.ip.v4.src_port = - sctp_spec->hdr.src_port; - } else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) { - filter->input.ip.v6.dst_port = - sctp_spec->hdr.dst_port; - filter->input.ip.v6.src_port = - sctp_spec->hdr.src_port; - } + if (sctp_mask->hdr.src_port == UINT16_MAX) + *input_set |= ICE_INSET_SCTP_SRC_PORT; + if (sctp_mask->hdr.dst_port == UINT16_MAX) + *input_set |= ICE_INSET_SCTP_DST_PORT; + + /* Get filter info */ + if (l3 == RTE_FLOW_ITEM_TYPE_IPV4) { + assert(p_v4); + p_v4->dst_port = sctp_spec->hdr.dst_port; + p_v4->src_port = sctp_spec->hdr.src_port; + } else if (l3 == RTE_FLOW_ITEM_TYPE_IPV6) { + assert(p_v6); + p_v6->dst_port = sctp_spec->hdr.dst_port; + p_v6->src_port = sctp_spec->hdr.src_port; } break; case RTE_FLOW_ITEM_TYPE_VOID: @@ -1910,6 +1905,7 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, l3 = RTE_FLOW_ITEM_TYPE_END; vxlan_spec = item->spec; vxlan_mask = item->mask; + is_outer = false; if (vxlan_spec || vxlan_mask) { rte_flow_error_set(error, EINVAL, @@ -1919,50 +1915,50 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, return -rte_errno; } - tunnel_type = ICE_FDIR_TUNNEL_TYPE_VXLAN; break; case RTE_FLOW_ITEM_TYPE_GTPU: l3 = RTE_FLOW_ITEM_TYPE_END; + tunnel_type = ICE_FDIR_TUNNEL_TYPE_GTPU; gtp_spec = item->spec; gtp_mask = item->mask; - if (gtp_spec && gtp_mask) { - if (gtp_mask->v_pt_rsv_flags || - gtp_mask->msg_type || - gtp_mask->msg_len) { - rte_flow_error_set(error, EINVAL, + if (!(gtp_spec && gtp_mask)) + break; + + if (gtp_mask->v_pt_rsv_flags || + gtp_mask->msg_type || + gtp_mask->msg_len) { + rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM, item, "Invalid GTP mask"); - return -rte_errno; - } - - if (gtp_mask->teid == UINT32_MAX) - input_set |= ICE_INSET_GTPU_TEID; - - filter->input.gtpu_data.teid = gtp_spec->teid; + return -rte_errno; } - tunnel_type = ICE_FDIR_TUNNEL_TYPE_GTPU; + if (gtp_mask->teid == UINT32_MAX) + input_set_o |= ICE_INSET_GTPU_TEID; + + filter->input.gtpu_data.teid = gtp_spec->teid; break; case RTE_FLOW_ITEM_TYPE_GTP_PSC: + tunnel_type = ICE_FDIR_TUNNEL_TYPE_GTPU_EH; gtp_psc_spec = item->spec; gtp_psc_mask = item->mask; - if (gtp_psc_spec && gtp_psc_mask) { - if (gtp_psc_mask->qfi == UINT8_MAX) - input_set |= ICE_INSET_GTPU_QFI; + if (!(gtp_psc_spec && gtp_psc_mask)) + break; - filter->input.gtpu_data.qfi = - gtp_psc_spec->qfi; - } - tunnel_type = ICE_FDIR_TUNNEL_TYPE_GTPU_EH; + if (gtp_psc_mask->qfi == UINT8_MAX) + input_set_o |= ICE_INSET_GTPU_QFI; + + filter->input.gtpu_data.qfi = + gtp_psc_spec->qfi; break; default: rte_flow_error_set(error, EINVAL, - RTE_FLOW_ERROR_TYPE_ITEM, - item, - "Invalid pattern item."); + RTE_FLOW_ERROR_TYPE_ITEM, + item, + "Invalid pattern item."); return -rte_errno; } } @@ -1982,7 +1978,8 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, filter->tunnel_type = tunnel_type; filter->input.flow_type = flow_type; - filter->input_set_o = input_set; + filter->input_set_o = input_set_o; + filter->input_set_i = input_set_i; return 0; } From patchwork Tue Mar 2 02:54:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zhirun" X-Patchwork-Id: 88339 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 DB0E6A054F; Tue, 2 Mar 2021 04:01:59 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 09E6D1CC4DC; Tue, 2 Mar 2021 04:01:40 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 0E7541CC4DB for ; Tue, 2 Mar 2021 04:01:38 +0100 (CET) IronPort-SDR: Pp32+0WhosquE7oACn/KUt5F2pXk+VYDdyVIwxXETJgoMDI1NhZlYEDmnPzGWmxbQMz6yugwo4 T0wtoI65aXmw== X-IronPort-AV: E=McAfee;i="6000,8403,9910"; a="183270172" X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="183270172" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2021 19:01:38 -0800 IronPort-SDR: 0HADwPkLlCUQzMpp7IWoXid0n9Gx+pdChoaY0mxzON+zNRA3uoLPdSFOEtJg7eeV40fFP7RGdz fCZL6yZDpqzg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="366967427" Received: from dpdk-zhirun-dev.sh.intel.com ([10.67.118.176]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2021 19:01:35 -0800 From: Zhirun Yan To: dev@dpdk.org, qi.z.zhang@intel.com, yahui.cao@intel.com, xiao.w.wang@intel.com, junfeng.guo@intel.com Cc: simei.su@intel.com, ting.xu@intel.com, yuying.zhang@intel.com, xuan.ding@intel.com, Zhirun Yan Date: Tue, 2 Mar 2021 10:54:05 +0800 Message-Id: <20210302025407.1197434-5-zhirun.yan@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210302025407.1197434-1-zhirun.yan@intel.com> References: <20210127052933.2149243-1-zhirun.yan@intel.com> <20210302025407.1197434-1-zhirun.yan@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 4/6] net/ice: refactor input set conf 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" For tunnel or non-tunnel packet, the input set is in outer_input_set and use seg_tun[0]. seg_tun[1] is only used for tunnel inner fields. This patch make align with input_set inner/outer with seg_tun[] and simplify it. Signed-off-by: Zhirun Yan --- drivers/net/ice/ice_fdir_filter.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 6bee2b1167..9cc0e6e0e7 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -1013,7 +1013,7 @@ ice_fdir_input_set_conf(struct ice_pf *pf, enum ice_fltr_ptype flow, return -ENOMEM; } - /* use seg_tun[1] to record tunnel inner part or non-tunnel */ + /* use seg_tun[1] to record tunnel inner part */ for (k = 0; k <= ICE_FD_HW_SEG_TUN; k++) { seg = &seg_tun[k]; input_set = (k == ICE_FD_HW_SEG_TUN) ? inner_input_set : outer_input_set; @@ -1036,13 +1036,9 @@ ice_fdir_input_set_conf(struct ice_pf *pf, enum ice_fltr_ptype flow, } is_tunnel = ice_fdir_is_tunnel_profile(ttype); - if (!is_tunnel) { - ret = ice_fdir_hw_tbl_conf(pf, pf->main_vsi, pf->fdir.fdir_vsi, - seg_tun + 1, flow, false); - } else { - ret = ice_fdir_hw_tbl_conf(pf, pf->main_vsi, pf->fdir.fdir_vsi, - seg_tun, flow, true); - } + + ret = ice_fdir_hw_tbl_conf(pf, pf->main_vsi, pf->fdir.fdir_vsi, + seg_tun, flow, is_tunnel); if (!ret) { return ret; From patchwork Tue Mar 2 02:54:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zhirun" X-Patchwork-Id: 88340 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 10B2FA054F; Tue, 2 Mar 2021 04:02:07 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F3D040FDF; Tue, 2 Mar 2021 04:01:45 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 63FDC1CC3CD for ; Tue, 2 Mar 2021 04:01:43 +0100 (CET) IronPort-SDR: N/b5sAcTsugT/jpD/hX0VHNZDD0vPAsV0BR6RoXn07Z1bgQAgwGikOp/q0Xpsreh/O29nF8Swn hTssbCXvtfUA== X-IronPort-AV: E=McAfee;i="6000,8403,9910"; a="183270198" X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="183270198" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2021 19:01:41 -0800 IronPort-SDR: P8bsronG/fgozVXm+1hWZRIlbxMD/cEnc0zI1sIvsl5EPCEBFXifB/MTvj+5JBi/bckjp5aStI fn3l5j3OS0tQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="366967439" Received: from dpdk-zhirun-dev.sh.intel.com ([10.67.118.176]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2021 19:01:38 -0800 From: Zhirun Yan To: dev@dpdk.org, qi.z.zhang@intel.com, yahui.cao@intel.com, xiao.w.wang@intel.com, junfeng.guo@intel.com Cc: simei.su@intel.com, ting.xu@intel.com, yuying.zhang@intel.com, xuan.ding@intel.com, Zhirun Yan Date: Tue, 2 Mar 2021 10:54:06 +0800 Message-Id: <20210302025407.1197434-6-zhirun.yan@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210302025407.1197434-1-zhirun.yan@intel.com> References: <20210127052933.2149243-1-zhirun.yan@intel.com> <20210302025407.1197434-1-zhirun.yan@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 5/6] net/ice: add outer input set mask to distinguish outer fields 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" Distinguish input_set_mask to inner and outer part. Use input_set_mask_o for tunnel outer or non-tunnel input set. input_set_mask_i is used for tunnel inner fields only. Adjust indentation of ice_pattern_match_item list in switch, ACL, RSS and FDIR for easy review. For switch, ACL and RSS, only use input_set_mask_o and set the input_set_mask_i all none. Signed-off-by: Zhirun Yan --- drivers/net/ice/ice_acl_filter.c | 10 +- drivers/net/ice/ice_fdir_filter.c | 72 ++++--- drivers/net/ice/ice_generic_flow.c | 6 +- drivers/net/ice/ice_generic_flow.h | 3 +- drivers/net/ice/ice_hash.c | 214 ++++++++++---------- drivers/net/ice/ice_switch_filter.c | 296 ++++++++++------------------ 6 files changed, 249 insertions(+), 352 deletions(-) diff --git a/drivers/net/ice/ice_acl_filter.c b/drivers/net/ice/ice_acl_filter.c index 113cb68765..9e06e8a3de 100644 --- a/drivers/net/ice/ice_acl_filter.c +++ b/drivers/net/ice/ice_acl_filter.c @@ -50,10 +50,10 @@ struct acl_rule { static struct ice_pattern_match_item ice_acl_pattern[] = { - {pattern_eth_ipv4, ICE_ACL_INSET_ETH_IPV4, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp, ICE_ACL_INSET_ETH_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_tcp, ICE_ACL_INSET_ETH_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_ipv4_sctp, ICE_ACL_INSET_ETH_IPV4_SCTP, ICE_INSET_NONE}, + {pattern_eth_ipv4, ICE_ACL_INSET_ETH_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp, ICE_ACL_INSET_ETH_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_tcp, ICE_ACL_INSET_ETH_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_sctp, ICE_ACL_INSET_ETH_IPV4_SCTP, ICE_INSET_NONE, ICE_INSET_NONE}, }; static int @@ -923,7 +923,7 @@ ice_acl_parse(struct ice_adapter *ad, if (ret) goto error; input_set = filter->input_set; - if (!input_set || input_set & ~item->input_set_mask) { + if (!input_set || input_set & ~item->input_set_mask_o) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM_SPEC, pattern, diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 9cc0e6e0e7..72836fca6c 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -55,21 +55,25 @@ ICE_FDIR_INSET_ETH_IPV6 | \ ICE_INSET_SCTP_SRC_PORT | ICE_INSET_SCTP_DST_PORT) -#define ICE_FDIR_INSET_VXLAN_IPV4 (\ +#define ICE_FDIR_INSET_IPV4 (\ ICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST) -#define ICE_FDIR_INSET_VXLAN_IPV4_TCP (\ - ICE_FDIR_INSET_VXLAN_IPV4 | \ +#define ICE_FDIR_INSET_IPV4_TCP (\ + ICE_FDIR_INSET_IPV4 | \ ICE_INSET_TCP_SRC_PORT | ICE_INSET_TCP_DST_PORT) -#define ICE_FDIR_INSET_VXLAN_IPV4_UDP (\ - ICE_FDIR_INSET_VXLAN_IPV4 | \ +#define ICE_FDIR_INSET_IPV4_UDP (\ + ICE_FDIR_INSET_IPV4 | \ ICE_INSET_UDP_SRC_PORT | ICE_INSET_UDP_DST_PORT) -#define ICE_FDIR_INSET_VXLAN_IPV4_SCTP (\ - ICE_FDIR_INSET_VXLAN_IPV4 | \ +#define ICE_FDIR_INSET_IPV4_SCTP (\ + ICE_FDIR_INSET_IPV4 | \ ICE_INSET_SCTP_SRC_PORT | ICE_INSET_SCTP_DST_PORT) +#define ICE_FDIR_INSET_ETH_IPV4_VXLAN (\ + ICE_FDIR_INSET_ETH | \ + ICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST) + #define ICE_FDIR_INSET_IPV4_GTPU (\ ICE_INSET_IPV4_SRC | ICE_INSET_IPV4_DST | ICE_INSET_GTPU_TEID) @@ -85,35 +89,28 @@ ICE_INSET_GTPU_TEID | ICE_INSET_GTPU_QFI) 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}, - {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}, - {pattern_eth_ipv4_gtpu, ICE_FDIR_INSET_IPV4_GTPU, ICE_INSET_NONE}, - {pattern_eth_ipv4_gtpu_eh, ICE_FDIR_INSET_IPV4_GTPU_EH, ICE_INSET_NONE}, - {pattern_eth_ipv6_gtpu, ICE_FDIR_INSET_IPV6_GTPU, ICE_INSET_NONE}, - {pattern_eth_ipv6_gtpu_eh, ICE_FDIR_INSET_IPV6_GTPU_EH, ICE_INSET_NONE}, + {pattern_ethertype, ICE_FDIR_INSET_ETH, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4, ICE_FDIR_INSET_ETH_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp, ICE_FDIR_INSET_ETH_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_tcp, ICE_FDIR_INSET_ETH_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_sctp, ICE_FDIR_INSET_ETH_IPV4_SCTP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6, ICE_FDIR_INSET_ETH_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp, ICE_FDIR_INSET_ETH_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_tcp, ICE_FDIR_INSET_ETH_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_sctp, ICE_FDIR_INSET_ETH_IPV6_SCTP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_ipv4, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_ipv4_udp, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_ipv4_tcp, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_IPV4_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_ipv4_sctp, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_IPV4_SCTP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_ETH_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_ETH_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_ETH_IPV4_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_sctp, ICE_FDIR_INSET_ETH_IPV4_VXLAN, ICE_FDIR_INSET_ETH_IPV4_SCTP, ICE_INSET_NONE}, + /* duplicated GTPU input set in 3rd column to align with shared code behavior. Ideally, only put GTPU field in 2nd column. */ + {pattern_eth_ipv4_gtpu, ICE_FDIR_INSET_IPV4_GTPU, ICE_FDIR_INSET_IPV4_GTPU, ICE_INSET_NONE}, + {pattern_eth_ipv4_gtpu_eh, ICE_FDIR_INSET_IPV4_GTPU_EH, ICE_FDIR_INSET_IPV4_GTPU_EH, ICE_INSET_NONE}, + {pattern_eth_ipv6_gtpu, ICE_FDIR_INSET_IPV6_GTPU, ICE_FDIR_INSET_IPV6_GTPU, ICE_INSET_NONE}, + {pattern_eth_ipv6_gtpu_eh, ICE_FDIR_INSET_IPV6_GTPU_EH, ICE_FDIR_INSET_IPV6_GTPU_EH, ICE_INSET_NONE}, }; static struct ice_flow_parser ice_fdir_parser; @@ -2005,7 +2002,8 @@ ice_fdir_parse(struct ice_adapter *ad, if (ret) goto error; input_set = filter->input_set_o | filter->input_set_i; - if (!input_set || input_set & ~item->input_set_mask) { + if (!input_set || filter->input_set_o & ~item->input_set_mask_o || + filter->input_set_i & ~item->input_set_mask_i) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM_SPEC, pattern, diff --git a/drivers/net/ice/ice_generic_flow.c b/drivers/net/ice/ice_generic_flow.c index 25d15a8adb..8704812622 100644 --- a/drivers/net/ice/ice_generic_flow.c +++ b/drivers/net/ice/ice_generic_flow.c @@ -2216,8 +2216,10 @@ ice_search_pattern_match_item(struct ice_adapter *ad, for (i = 0; i < array_len; i++) { if (ice_match_pattern(array[i].pattern_list, items)) { - pattern_match_item->input_set_mask = - array[i].input_set_mask; + pattern_match_item->input_set_mask_o = + array[i].input_set_mask_o; + pattern_match_item->input_set_mask_i = + array[i].input_set_mask_i; pattern_match_item->pattern_list = array[i].pattern_list; pattern_match_item->meta = array[i].meta; diff --git a/drivers/net/ice/ice_generic_flow.h b/drivers/net/ice/ice_generic_flow.h index 3c648c0f4f..9f422e5925 100644 --- a/drivers/net/ice/ice_generic_flow.h +++ b/drivers/net/ice/ice_generic_flow.h @@ -473,8 +473,9 @@ enum ice_flow_classification_stage { /* pattern structure */ struct ice_pattern_match_item { enum rte_flow_item_type *pattern_list; + uint64_t input_set_mask_o; /* used for tunnel outer or non tunnel fields */ /* pattern_list must end with RTE_FLOW_ITEM_TYPE_END */ - uint64_t input_set_mask; + uint64_t input_set_mask_i; /* only used for tunnel inner fields */ void *meta; }; diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index 81caf6c635..58a0c18d09 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -352,95 +352,89 @@ struct ice_rss_hash_cfg empty_tmplt = { 0 }; -/* rss type super set */ -/* Empty rss type to support simple_xor. */ -#define ICE_RSS_TYPE_EMPTY 0ULL - -/* IPv4 outer */ -#define ICE_RSS_TYPE_OUTER_IPV4 (ETH_RSS_ETH | ETH_RSS_IPV4) -#define ICE_RSS_TYPE_OUTER_IPV4_UDP (ICE_RSS_TYPE_OUTER_IPV4 | \ +/* IPv4 */ +#define ICE_RSS_TYPE_ETH_IPV4 (ETH_RSS_ETH | ETH_RSS_IPV4) +#define ICE_RSS_TYPE_ETH_IPV4_UDP (ICE_RSS_TYPE_ETH_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_UDP) +#define ICE_RSS_TYPE_ETH_IPV4_TCP (ICE_RSS_TYPE_ETH_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_TCP) +#define ICE_RSS_TYPE_ETH_IPV4_SCTP (ICE_RSS_TYPE_ETH_IPV4 | \ + ETH_RSS_NONFRAG_IPV4_SCTP) +#define ICE_RSS_TYPE_IPV4 ETH_RSS_IPV4 +#define ICE_RSS_TYPE_IPV4_UDP (ETH_RSS_IPV4 | \ ETH_RSS_NONFRAG_IPV4_UDP) -#define ICE_RSS_TYPE_OUTER_IPV4_TCP (ICE_RSS_TYPE_OUTER_IPV4 | \ +#define ICE_RSS_TYPE_IPV4_TCP (ETH_RSS_IPV4 | \ ETH_RSS_NONFRAG_IPV4_TCP) -#define ICE_RSS_TYPE_OUTER_IPV4_SCTP (ICE_RSS_TYPE_OUTER_IPV4 | \ +#define ICE_RSS_TYPE_IPV4_SCTP (ETH_RSS_IPV4 | \ ETH_RSS_NONFRAG_IPV4_SCTP) -/* IPv6 outer */ -#define ICE_RSS_TYPE_OUTER_IPV6 (ETH_RSS_ETH | ETH_RSS_IPV6) -#define ICE_RSS_TYPE_OUTER_IPV6_UDP (ICE_RSS_TYPE_OUTER_IPV6 | \ + +/* IPv6 */ +#define ICE_RSS_TYPE_ETH_IPV6 (ETH_RSS_ETH | ETH_RSS_IPV6) +#define ICE_RSS_TYPE_ETH_IPV6_UDP (ICE_RSS_TYPE_ETH_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_UDP) +#define ICE_RSS_TYPE_ETH_IPV6_TCP (ICE_RSS_TYPE_ETH_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_TCP) +#define ICE_RSS_TYPE_ETH_IPV6_SCTP (ICE_RSS_TYPE_ETH_IPV6 | \ + ETH_RSS_NONFRAG_IPV6_SCTP) +#define ICE_RSS_TYPE_IPV6 ETH_RSS_IPV6 +#define ICE_RSS_TYPE_IPV6_UDP (ETH_RSS_IPV6 | \ ETH_RSS_NONFRAG_IPV6_UDP) -#define ICE_RSS_TYPE_OUTER_IPV6_TCP (ICE_RSS_TYPE_OUTER_IPV6 | \ +#define ICE_RSS_TYPE_IPV6_TCP (ETH_RSS_IPV6 | \ ETH_RSS_NONFRAG_IPV6_TCP) -#define ICE_RSS_TYPE_OUTER_IPV6_SCTP (ICE_RSS_TYPE_OUTER_IPV6 | \ +#define ICE_RSS_TYPE_IPV6_SCTP (ETH_RSS_IPV6 | \ ETH_RSS_NONFRAG_IPV6_SCTP) /* VLAN IPV4 */ -#define ICE_RSS_TYPE_VLAN_IPV4 (ICE_RSS_TYPE_OUTER_IPV4 | \ +#define ICE_RSS_TYPE_VLAN_IPV4 (ICE_RSS_TYPE_IPV4 | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -#define ICE_RSS_TYPE_VLAN_IPV4_UDP (ICE_RSS_TYPE_OUTER_IPV4_UDP | \ +#define ICE_RSS_TYPE_VLAN_IPV4_UDP (ICE_RSS_TYPE_IPV4_UDP | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -#define ICE_RSS_TYPE_VLAN_IPV4_TCP (ICE_RSS_TYPE_OUTER_IPV4_TCP | \ +#define ICE_RSS_TYPE_VLAN_IPV4_TCP (ICE_RSS_TYPE_IPV4_TCP | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -#define ICE_RSS_TYPE_VLAN_IPV4_SCTP (ICE_RSS_TYPE_OUTER_IPV4_SCTP | \ +#define ICE_RSS_TYPE_VLAN_IPV4_SCTP (ICE_RSS_TYPE_IPV4_SCTP | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) /* VLAN IPv6 */ -#define ICE_RSS_TYPE_VLAN_IPV6 (ICE_RSS_TYPE_OUTER_IPV6 | \ +#define ICE_RSS_TYPE_VLAN_IPV6 (ICE_RSS_TYPE_IPV6 | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -#define ICE_RSS_TYPE_VLAN_IPV6_UDP (ICE_RSS_TYPE_OUTER_IPV6_UDP | \ +#define ICE_RSS_TYPE_VLAN_IPV6_UDP (ICE_RSS_TYPE_IPV6_UDP | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -#define ICE_RSS_TYPE_VLAN_IPV6_TCP (ICE_RSS_TYPE_OUTER_IPV6_TCP | \ +#define ICE_RSS_TYPE_VLAN_IPV6_TCP (ICE_RSS_TYPE_IPV6_TCP | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -#define ICE_RSS_TYPE_VLAN_IPV6_SCTP (ICE_RSS_TYPE_OUTER_IPV6_SCTP | \ +#define ICE_RSS_TYPE_VLAN_IPV6_SCTP (ICE_RSS_TYPE_IPV6_SCTP | \ ETH_RSS_S_VLAN | ETH_RSS_C_VLAN) -/* IPv4 inner */ -#define ICE_RSS_TYPE_INNER_IPV4 ETH_RSS_IPV4 -#define ICE_RSS_TYPE_INNER_IPV4_UDP (ETH_RSS_IPV4 | \ - ETH_RSS_NONFRAG_IPV4_UDP) -#define ICE_RSS_TYPE_INNER_IPV4_TCP (ETH_RSS_IPV4 | \ - ETH_RSS_NONFRAG_IPV4_TCP) -#define ICE_RSS_TYPE_INNER_IPV4_SCTP (ETH_RSS_IPV4 | \ - ETH_RSS_NONFRAG_IPV4_SCTP) -/* IPv6 inner */ -#define ICE_RSS_TYPE_INNER_IPV6 ETH_RSS_IPV6 -#define ICE_RSS_TYPE_INNER_IPV6_UDP (ETH_RSS_IPV6 | \ - ETH_RSS_NONFRAG_IPV6_UDP) -#define ICE_RSS_TYPE_INNER_IPV6_TCP (ETH_RSS_IPV6 | \ - ETH_RSS_NONFRAG_IPV6_TCP) -#define ICE_RSS_TYPE_INNER_IPV6_SCTP (ETH_RSS_IPV6 | \ - ETH_RSS_NONFRAG_IPV6_SCTP) - /* GTPU IPv4 */ -#define ICE_RSS_TYPE_GTPU_IPV4 (ICE_RSS_TYPE_INNER_IPV4 | \ +#define ICE_RSS_TYPE_GTPU_IPV4 (ICE_RSS_TYPE_IPV4 | \ ETH_RSS_GTPU) -#define ICE_RSS_TYPE_GTPU_IPV4_UDP (ICE_RSS_TYPE_INNER_IPV4_UDP | \ +#define ICE_RSS_TYPE_GTPU_IPV4_UDP (ICE_RSS_TYPE_IPV4_UDP | \ ETH_RSS_GTPU) -#define ICE_RSS_TYPE_GTPU_IPV4_TCP (ICE_RSS_TYPE_INNER_IPV4_TCP | \ +#define ICE_RSS_TYPE_GTPU_IPV4_TCP (ICE_RSS_TYPE_IPV4_TCP | \ ETH_RSS_GTPU) /* GTPU IPv6 */ -#define ICE_RSS_TYPE_GTPU_IPV6 (ICE_RSS_TYPE_INNER_IPV6 | \ +#define ICE_RSS_TYPE_GTPU_IPV6 (ICE_RSS_TYPE_IPV6 | \ ETH_RSS_GTPU) -#define ICE_RSS_TYPE_GTPU_IPV6_UDP (ICE_RSS_TYPE_INNER_IPV6_UDP | \ +#define ICE_RSS_TYPE_GTPU_IPV6_UDP (ICE_RSS_TYPE_IPV6_UDP | \ ETH_RSS_GTPU) -#define ICE_RSS_TYPE_GTPU_IPV6_TCP (ICE_RSS_TYPE_INNER_IPV6_TCP | \ +#define ICE_RSS_TYPE_GTPU_IPV6_TCP (ICE_RSS_TYPE_IPV6_TCP | \ ETH_RSS_GTPU) /* PPPOE */ #define ICE_RSS_TYPE_PPPOE (ETH_RSS_ETH | ETH_RSS_PPPOE) /* PPPOE IPv4 */ -#define ICE_RSS_TYPE_PPPOE_IPV4 (ICE_RSS_TYPE_INNER_IPV4 | \ +#define ICE_RSS_TYPE_PPPOE_IPV4 (ICE_RSS_TYPE_IPV4 | \ ICE_RSS_TYPE_PPPOE) -#define ICE_RSS_TYPE_PPPOE_IPV4_UDP (ICE_RSS_TYPE_INNER_IPV4_UDP | \ +#define ICE_RSS_TYPE_PPPOE_IPV4_UDP (ICE_RSS_TYPE_IPV4_UDP | \ ICE_RSS_TYPE_PPPOE) -#define ICE_RSS_TYPE_PPPOE_IPV4_TCP (ICE_RSS_TYPE_INNER_IPV4_TCP | \ +#define ICE_RSS_TYPE_PPPOE_IPV4_TCP (ICE_RSS_TYPE_IPV4_TCP | \ ICE_RSS_TYPE_PPPOE) /* PPPOE IPv6 */ -#define ICE_RSS_TYPE_PPPOE_IPV6 (ICE_RSS_TYPE_INNER_IPV6 | \ +#define ICE_RSS_TYPE_PPPOE_IPV6 (ICE_RSS_TYPE_IPV6 | \ ICE_RSS_TYPE_PPPOE) -#define ICE_RSS_TYPE_PPPOE_IPV6_UDP (ICE_RSS_TYPE_INNER_IPV6_UDP | \ +#define ICE_RSS_TYPE_PPPOE_IPV6_UDP (ICE_RSS_TYPE_IPV6_UDP | \ ICE_RSS_TYPE_PPPOE) -#define ICE_RSS_TYPE_PPPOE_IPV6_TCP (ICE_RSS_TYPE_INNER_IPV6_TCP | \ +#define ICE_RSS_TYPE_PPPOE_IPV6_TCP (ICE_RSS_TYPE_IPV6_TCP | \ ICE_RSS_TYPE_PPPOE) /* ESP, AH, L2TPV3 and PFCP */ @@ -461,67 +455,67 @@ struct ice_rss_hash_cfg empty_tmplt = { */ 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}, - {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}, - {pattern_eth_vlan_ipv4, ICE_RSS_TYPE_VLAN_IPV4, &ipv4_tmplt}, - {pattern_eth_vlan_ipv4_udp, ICE_RSS_TYPE_VLAN_IPV4_UDP, &ipv4_udp_tmplt}, - {pattern_eth_vlan_ipv4_tcp, ICE_RSS_TYPE_VLAN_IPV4_TCP, &ipv4_tcp_tmplt}, - {pattern_eth_vlan_ipv4_sctp, ICE_RSS_TYPE_VLAN_IPV4_SCTP, &ipv4_sctp_tmplt}, - {pattern_eth_ipv4_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv4_inner_ipv4_tmplt}, - {pattern_eth_ipv4_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv4_inner_ipv4_udp_tmplt}, - {pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv4_inner_ipv4_tcp_tmplt}, - {pattern_eth_ipv6_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv6_inner_ipv4_tmplt}, - {pattern_eth_ipv6_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv6_inner_ipv4_udp_tmplt}, - {pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv6_inner_ipv4_tcp_tmplt}, - {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv4_inner_ipv4_tmplt}, - {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv4_inner_ipv4_udp_tmplt}, - {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv4_inner_ipv4_tcp_tmplt}, - {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, &outer_ipv6_inner_ipv4_tmplt}, - {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, &outer_ipv6_inner_ipv4_udp_tmplt}, - {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, &outer_ipv6_inner_ipv4_tcp_tmplt}, - {pattern_eth_pppoes_ipv4, ICE_RSS_TYPE_PPPOE_IPV4, &ipv4_tmplt}, - {pattern_eth_pppoes_ipv4_udp, ICE_RSS_TYPE_PPPOE_IPV4_UDP, &ipv4_udp_tmplt}, - {pattern_eth_pppoes_ipv4_tcp, ICE_RSS_TYPE_PPPOE_IPV4_TCP, &ipv4_tcp_tmplt}, - {pattern_eth_ipv4_esp, ICE_RSS_TYPE_IPV4_ESP, ð_ipv4_esp_tmplt}, - {pattern_eth_ipv4_udp_esp, ICE_RSS_TYPE_IPV4_ESP, ð_ipv4_udp_esp_tmplt}, - {pattern_eth_ipv4_ah, ICE_RSS_TYPE_IPV4_AH, ð_ipv4_ah_tmplt}, - {pattern_eth_ipv4_l2tp, ICE_RSS_TYPE_IPV4_L2TPV3, ð_ipv4_l2tpv3_tmplt}, - {pattern_eth_ipv4_pfcp, ICE_RSS_TYPE_IPV4_PFCP, ð_ipv4_pfcp_tmplt}, + {pattern_eth_ipv4, ICE_RSS_TYPE_ETH_IPV4, ICE_INSET_NONE, &ipv4_tmplt}, + {pattern_eth_ipv4_udp, ICE_RSS_TYPE_ETH_IPV4_UDP, ICE_INSET_NONE, &ipv4_udp_tmplt}, + {pattern_eth_ipv4_tcp, ICE_RSS_TYPE_ETH_IPV4_TCP, ICE_INSET_NONE, &ipv4_tcp_tmplt}, + {pattern_eth_ipv4_sctp, ICE_RSS_TYPE_ETH_IPV4_SCTP, ICE_INSET_NONE, &ipv4_sctp_tmplt}, + {pattern_eth_vlan_ipv4, ICE_RSS_TYPE_VLAN_IPV4, ICE_INSET_NONE, &ipv4_tmplt}, + {pattern_eth_vlan_ipv4_udp, ICE_RSS_TYPE_VLAN_IPV4_UDP, ICE_INSET_NONE, &ipv4_udp_tmplt}, + {pattern_eth_vlan_ipv4_tcp, ICE_RSS_TYPE_VLAN_IPV4_TCP, ICE_INSET_NONE, &ipv4_tcp_tmplt}, + {pattern_eth_vlan_ipv4_sctp, ICE_RSS_TYPE_VLAN_IPV4_SCTP, ICE_INSET_NONE, &ipv4_sctp_tmplt}, + {pattern_eth_ipv4_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ICE_INSET_NONE, &outer_ipv4_inner_ipv4_tmplt}, + {pattern_eth_ipv4_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ICE_INSET_NONE, &outer_ipv4_inner_ipv4_udp_tmplt}, + {pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ICE_INSET_NONE, &outer_ipv4_inner_ipv4_tcp_tmplt}, + {pattern_eth_ipv6_gtpu_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ICE_INSET_NONE, &outer_ipv6_inner_ipv4_tmplt}, + {pattern_eth_ipv6_gtpu_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ICE_INSET_NONE, &outer_ipv6_inner_ipv4_udp_tmplt}, + {pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ICE_INSET_NONE, &outer_ipv6_inner_ipv4_tcp_tmplt}, + {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ICE_INSET_NONE, &outer_ipv4_inner_ipv4_tmplt}, + {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ICE_INSET_NONE, &outer_ipv4_inner_ipv4_udp_tmplt}, + {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ICE_INSET_NONE, &outer_ipv4_inner_ipv4_tcp_tmplt}, + {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_RSS_TYPE_GTPU_IPV4, ICE_INSET_NONE, &outer_ipv6_inner_ipv4_tmplt}, + {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_RSS_TYPE_GTPU_IPV4_UDP, ICE_INSET_NONE, &outer_ipv6_inner_ipv4_udp_tmplt}, + {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_RSS_TYPE_GTPU_IPV4_TCP, ICE_INSET_NONE, &outer_ipv6_inner_ipv4_tcp_tmplt}, + {pattern_eth_pppoes_ipv4, ICE_RSS_TYPE_PPPOE_IPV4, ICE_INSET_NONE, &ipv4_tmplt}, + {pattern_eth_pppoes_ipv4_udp, ICE_RSS_TYPE_PPPOE_IPV4_UDP, ICE_INSET_NONE, &ipv4_udp_tmplt}, + {pattern_eth_pppoes_ipv4_tcp, ICE_RSS_TYPE_PPPOE_IPV4_TCP, ICE_INSET_NONE, &ipv4_tcp_tmplt}, + {pattern_eth_ipv4_esp, ICE_RSS_TYPE_IPV4_ESP, ICE_INSET_NONE, ð_ipv4_esp_tmplt}, + {pattern_eth_ipv4_udp_esp, ICE_RSS_TYPE_IPV4_ESP, ICE_INSET_NONE, ð_ipv4_udp_esp_tmplt}, + {pattern_eth_ipv4_ah, ICE_RSS_TYPE_IPV4_AH, ICE_INSET_NONE, ð_ipv4_ah_tmplt}, + {pattern_eth_ipv4_l2tp, ICE_RSS_TYPE_IPV4_L2TPV3, ICE_INSET_NONE, ð_ipv4_l2tpv3_tmplt}, + {pattern_eth_ipv4_pfcp, ICE_RSS_TYPE_IPV4_PFCP, ICE_INSET_NONE, ð_ipv4_pfcp_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}, - {pattern_eth_vlan_ipv6, ICE_RSS_TYPE_VLAN_IPV6, &ipv6_tmplt}, - {pattern_eth_vlan_ipv6_udp, ICE_RSS_TYPE_VLAN_IPV6_UDP, &ipv6_udp_tmplt}, - {pattern_eth_vlan_ipv6_tcp, ICE_RSS_TYPE_VLAN_IPV6_TCP, &ipv6_tcp_tmplt}, - {pattern_eth_vlan_ipv6_sctp, ICE_RSS_TYPE_VLAN_IPV6_SCTP, &ipv6_sctp_tmplt}, - {pattern_eth_ipv4_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv4_inner_ipv6_tmplt}, - {pattern_eth_ipv4_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv4_inner_ipv6_udp_tmplt}, - {pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv4_inner_ipv6_tcp_tmplt}, - {pattern_eth_ipv6_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv6_inner_ipv6_tmplt}, - {pattern_eth_ipv6_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv6_inner_ipv6_udp_tmplt}, - {pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv6_inner_ipv6_tcp_tmplt}, - {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv4_inner_ipv6_tmplt}, - {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv4_inner_ipv6_udp_tmplt}, - {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv4_inner_ipv6_tcp_tmplt}, - {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, &outer_ipv6_inner_ipv6_tmplt}, - {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, &outer_ipv6_inner_ipv6_udp_tmplt}, - {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, &outer_ipv6_inner_ipv6_tcp_tmplt}, - {pattern_eth_pppoes_ipv6, ICE_RSS_TYPE_PPPOE_IPV6, &ipv6_tmplt}, - {pattern_eth_pppoes_ipv6_udp, ICE_RSS_TYPE_PPPOE_IPV6_UDP, &ipv6_udp_tmplt}, - {pattern_eth_pppoes_ipv6_tcp, ICE_RSS_TYPE_PPPOE_IPV6_TCP, &ipv6_tcp_tmplt}, - {pattern_eth_ipv6_esp, ICE_RSS_TYPE_IPV6_ESP, ð_ipv6_esp_tmplt}, - {pattern_eth_ipv6_udp_esp, ICE_RSS_TYPE_IPV6_ESP, ð_ipv6_udp_esp_tmplt}, - {pattern_eth_ipv6_ah, ICE_RSS_TYPE_IPV6_AH, ð_ipv6_ah_tmplt}, - {pattern_eth_ipv6_l2tp, ICE_RSS_TYPE_IPV6_L2TPV3, ð_ipv6_l2tpv3_tmplt}, - {pattern_eth_ipv6_pfcp, ICE_RSS_TYPE_IPV6_PFCP, ð_ipv6_pfcp_tmplt}, + {pattern_eth_ipv6, ICE_RSS_TYPE_ETH_IPV6, ICE_INSET_NONE, &ipv6_tmplt}, + {pattern_eth_ipv6_udp, ICE_RSS_TYPE_ETH_IPV6_UDP, ICE_INSET_NONE, &ipv6_udp_tmplt}, + {pattern_eth_ipv6_tcp, ICE_RSS_TYPE_ETH_IPV6_TCP, ICE_INSET_NONE, &ipv6_tcp_tmplt}, + {pattern_eth_ipv6_sctp, ICE_RSS_TYPE_ETH_IPV6_SCTP, ICE_INSET_NONE, &ipv6_sctp_tmplt}, + {pattern_eth_vlan_ipv6, ICE_RSS_TYPE_VLAN_IPV6, ICE_INSET_NONE, &ipv6_tmplt}, + {pattern_eth_vlan_ipv6_udp, ICE_RSS_TYPE_VLAN_IPV6_UDP, ICE_INSET_NONE, &ipv6_udp_tmplt}, + {pattern_eth_vlan_ipv6_tcp, ICE_RSS_TYPE_VLAN_IPV6_TCP, ICE_INSET_NONE, &ipv6_tcp_tmplt}, + {pattern_eth_vlan_ipv6_sctp, ICE_RSS_TYPE_VLAN_IPV6_SCTP, ICE_INSET_NONE, &ipv6_sctp_tmplt}, + {pattern_eth_ipv4_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ICE_INSET_NONE, &outer_ipv4_inner_ipv6_tmplt}, + {pattern_eth_ipv4_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ICE_INSET_NONE, &outer_ipv4_inner_ipv6_udp_tmplt}, + {pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ICE_INSET_NONE, &outer_ipv4_inner_ipv6_tcp_tmplt}, + {pattern_eth_ipv6_gtpu_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ICE_INSET_NONE, &outer_ipv6_inner_ipv6_tmplt}, + {pattern_eth_ipv6_gtpu_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ICE_INSET_NONE, &outer_ipv6_inner_ipv6_udp_tmplt}, + {pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ICE_INSET_NONE, &outer_ipv6_inner_ipv6_tcp_tmplt}, + {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ICE_INSET_NONE, &outer_ipv4_inner_ipv6_tmplt}, + {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ICE_INSET_NONE, &outer_ipv4_inner_ipv6_udp_tmplt}, + {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ICE_INSET_NONE, &outer_ipv4_inner_ipv6_tcp_tmplt}, + {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_RSS_TYPE_GTPU_IPV6, ICE_INSET_NONE, &outer_ipv6_inner_ipv6_tmplt}, + {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_RSS_TYPE_GTPU_IPV6_UDP, ICE_INSET_NONE, &outer_ipv6_inner_ipv6_udp_tmplt}, + {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_RSS_TYPE_GTPU_IPV6_TCP, ICE_INSET_NONE, &outer_ipv6_inner_ipv6_tcp_tmplt}, + {pattern_eth_pppoes_ipv6, ICE_RSS_TYPE_PPPOE_IPV6, ICE_INSET_NONE, &ipv6_tmplt}, + {pattern_eth_pppoes_ipv6_udp, ICE_RSS_TYPE_PPPOE_IPV6_UDP, ICE_INSET_NONE, &ipv6_udp_tmplt}, + {pattern_eth_pppoes_ipv6_tcp, ICE_RSS_TYPE_PPPOE_IPV6_TCP, ICE_INSET_NONE, &ipv6_tcp_tmplt}, + {pattern_eth_ipv6_esp, ICE_RSS_TYPE_IPV6_ESP, ICE_INSET_NONE, ð_ipv6_esp_tmplt}, + {pattern_eth_ipv6_udp_esp, ICE_RSS_TYPE_IPV6_ESP, ICE_INSET_NONE, ð_ipv6_udp_esp_tmplt}, + {pattern_eth_ipv6_ah, ICE_RSS_TYPE_IPV6_AH, ICE_INSET_NONE, ð_ipv6_ah_tmplt}, + {pattern_eth_ipv6_l2tp, ICE_RSS_TYPE_IPV6_L2TPV3, ICE_INSET_NONE, ð_ipv6_l2tpv3_tmplt}, + {pattern_eth_ipv6_pfcp, ICE_RSS_TYPE_IPV6_PFCP, ICE_INSET_NONE, ð_ipv6_pfcp_tmplt}, /* PPPOE */ - {pattern_eth_pppoes, ICE_RSS_TYPE_PPPOE, &pppoe_tmplt}, + {pattern_eth_pppoes, ICE_RSS_TYPE_PPPOE, ICE_INSET_NONE, &pppoe_tmplt}, /* EMPTY */ - {pattern_empty, ICE_RSS_TYPE_EMPTY, &empty_tmplt}, + {pattern_empty, ICE_INSET_NONE, ICE_INSET_NONE, &empty_tmplt}, }; static struct ice_flow_engine ice_hash_engine = { @@ -960,7 +954,7 @@ ice_hash_parse_action(struct ice_pattern_match_item *pattern_match_item, rss_type = rte_eth_rss_hf_refine(rss_type); if (ice_any_invalid_rss_type(rss->func, rss_type, - pattern_match_item->input_set_mask)) + pattern_match_item->input_set_mask_o)) return rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, action, "RSS type not supported"); diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c index 6525e6c115..ada3ecf60b 100644 --- a/drivers/net/ice/ice_switch_filter.c +++ b/drivers/net/ice/ice_switch_filter.c @@ -149,206 +149,108 @@ static struct ice_flow_parser ice_switch_perm_parser; static struct ice_pattern_match_item ice_switch_pattern_dist_list[] = { - {pattern_ethertype, - ICE_SW_INSET_ETHER, ICE_INSET_NONE}, - {pattern_ethertype_vlan, - ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE}, - {pattern_ethertype_qinq, - ICE_SW_INSET_MAC_QINQ, 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}, - {pattern_eth_pppoes, - ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes, - ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE}, - {pattern_eth_pppoes_proto, - ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_proto, - ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv4, - ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv4_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv4_udp, - ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv6, - ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv6_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv6_udp, - ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv4, - ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv4_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv4_udp, - ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv6, - ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv6_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv6_udp, - ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_esp, - ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_esp, - ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv6_esp, - ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp_esp, - ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv4_ah, - ICE_SW_INSET_MAC_IPV4_AH, ICE_INSET_NONE}, - {pattern_eth_ipv6_ah, - ICE_SW_INSET_MAC_IPV6_AH, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp_ah, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_ipv4_l2tp, - ICE_SW_INSET_MAC_IPV4_L2TP, ICE_INSET_NONE}, - {pattern_eth_ipv6_l2tp, - ICE_SW_INSET_MAC_IPV6_L2TP, ICE_INSET_NONE}, - {pattern_eth_ipv4_pfcp, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_ipv6_pfcp, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_qinq_ipv4, - ICE_SW_INSET_MAC_QINQ_IPV4, ICE_INSET_NONE}, - {pattern_eth_qinq_ipv6, - ICE_SW_INSET_MAC_QINQ_IPV6, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes, - ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes_proto, - ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes_ipv4, - ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes_ipv6, - ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE}, + {pattern_ethertype, ICE_SW_INSET_ETHER, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_ethertype_vlan, ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_ethertype_qinq, ICE_SW_INSET_MAC_QINQ, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_arp, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4, ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp, ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_tcp, ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6, ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp, ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_tcp, ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4, ICE_SW_INSET_DIST_VXLAN_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, ICE_SW_INSET_DIST_VXLAN_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, ICE_SW_INSET_DIST_VXLAN_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4, ICE_SW_INSET_DIST_NVGRE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_udp, ICE_SW_INSET_DIST_NVGRE_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, ICE_SW_INSET_DIST_NVGRE_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes, ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes, ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_proto, ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_proto, ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv4, ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv4_tcp, ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv4_udp, ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv6, ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv6_tcp, ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv6_udp, ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv4, ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv4_tcp, ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv4_udp, ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv6, ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv6_tcp, ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv6_udp, ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_esp, ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_esp, ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_esp, ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp_esp, ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_ah, ICE_SW_INSET_MAC_IPV4_AH, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_ah, ICE_SW_INSET_MAC_IPV6_AH, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp_ah, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_l2tp, ICE_SW_INSET_MAC_IPV4_L2TP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_l2tp, ICE_SW_INSET_MAC_IPV6_L2TP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_pfcp, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_pfcp, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_ipv4, ICE_SW_INSET_MAC_QINQ_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_ipv6, ICE_SW_INSET_MAC_QINQ_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes, ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes_proto, ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes_ipv4, ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes_ipv6, ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, }; static struct ice_pattern_match_item ice_switch_pattern_perm_list[] = { - {pattern_ethertype, - ICE_SW_INSET_ETHER, ICE_INSET_NONE}, - {pattern_ethertype_vlan, - ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE}, - {pattern_ethertype_qinq, - ICE_SW_INSET_MAC_QINQ, 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}, - {pattern_eth_pppoes, - ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes, - ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE}, - {pattern_eth_pppoes_proto, - ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_proto, - ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv4, - ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv4_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv4_udp, - ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv6, - ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv6_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_pppoes_ipv6_udp, - ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv4, - ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv4_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv4_udp, - ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv6, - ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv6_tcp, - ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE}, - {pattern_eth_vlan_pppoes_ipv6_udp, - ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE}, - {pattern_eth_ipv4_esp, - ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv4_udp_esp, - ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv6_esp, - ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp_esp, - ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE}, - {pattern_eth_ipv4_ah, - ICE_SW_INSET_MAC_IPV4_AH, ICE_INSET_NONE}, - {pattern_eth_ipv6_ah, - ICE_SW_INSET_MAC_IPV6_AH, ICE_INSET_NONE}, - {pattern_eth_ipv6_udp_ah, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_ipv4_l2tp, - ICE_SW_INSET_MAC_IPV4_L2TP, ICE_INSET_NONE}, - {pattern_eth_ipv6_l2tp, - ICE_SW_INSET_MAC_IPV6_L2TP, ICE_INSET_NONE}, - {pattern_eth_ipv4_pfcp, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_ipv6_pfcp, - ICE_INSET_NONE, ICE_INSET_NONE}, - {pattern_eth_qinq_ipv4, - ICE_SW_INSET_MAC_QINQ_IPV4, ICE_INSET_NONE}, - {pattern_eth_qinq_ipv6, - ICE_SW_INSET_MAC_QINQ_IPV6, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes, - ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes_proto, - ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes_ipv4, - ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE}, - {pattern_eth_qinq_pppoes_ipv6, - ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE}, + {pattern_ethertype, ICE_SW_INSET_ETHER, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_ethertype_vlan, ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_ethertype_qinq, ICE_SW_INSET_MAC_QINQ, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_arp, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4, ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp, ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_tcp, ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6, ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp, ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_tcp, ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4, ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4, ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_udp, ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes, ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes, ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_proto, ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_proto, ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv4, ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv4_tcp, ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv4_udp, ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv6, ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv6_tcp, ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_pppoes_ipv6_udp, ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv4, ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv4_tcp, ICE_SW_INSET_MAC_PPPOE_IPV4_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv4_udp, ICE_SW_INSET_MAC_PPPOE_IPV4_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv6, ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv6_tcp, ICE_SW_INSET_MAC_PPPOE_IPV6_TCP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_vlan_pppoes_ipv6_udp, ICE_SW_INSET_MAC_PPPOE_IPV6_UDP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_esp, ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_esp, ICE_SW_INSET_MAC_IPV4_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_esp, ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp_esp, ICE_SW_INSET_MAC_IPV6_ESP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_ah, ICE_SW_INSET_MAC_IPV4_AH, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_ah, ICE_SW_INSET_MAC_IPV6_AH, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp_ah, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_l2tp, ICE_SW_INSET_MAC_IPV4_L2TP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_l2tp, ICE_SW_INSET_MAC_IPV6_L2TP, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4_pfcp, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv6_pfcp, ICE_INSET_NONE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_ipv4, ICE_SW_INSET_MAC_QINQ_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_ipv6, ICE_SW_INSET_MAC_QINQ_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes, ICE_SW_INSET_MAC_PPPOE, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes_proto, ICE_SW_INSET_MAC_PPPOE_PROTO, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes_ipv4, ICE_SW_INSET_MAC_PPPOE_IPV4, ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_qinq_pppoes_ipv6, ICE_SW_INSET_MAC_PPPOE_IPV6, ICE_INSET_NONE, ICE_INSET_NONE}, }; static int @@ -1724,7 +1626,7 @@ ice_switch_parse_pattern_action(struct ice_adapter *ad, inputset = ice_switch_inset_get (pattern, error, list, &lkups_num, &tun_type); if ((!inputset && !ice_is_profile_rule(tun_type)) || - (inputset & ~pattern_match_item->input_set_mask)) { + (inputset & ~pattern_match_item->input_set_mask_o)) { rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ITEM_SPEC, pattern, From patchwork Tue Mar 2 02:54:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yan, Zhirun" X-Patchwork-Id: 88341 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 3ACB9A054F; Tue, 2 Mar 2021 04:02:16 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id F03541CC560; Tue, 2 Mar 2021 04:01:46 +0100 (CET) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by mails.dpdk.org (Postfix) with ESMTP id 4EF9A1CC504 for ; Tue, 2 Mar 2021 04:01:45 +0100 (CET) IronPort-SDR: 0BHyzbJTpVwIh7RjISQ1oYt/kx0ElEFqv7DhNseVtbdX9XukIovUSctmIKP/Q4jRlMY3puEcCE JbZu9RTWMb0w== X-IronPort-AV: E=McAfee;i="6000,8403,9910"; a="183270216" X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="183270216" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Mar 2021 19:01:44 -0800 IronPort-SDR: wGC7CVxf1+Y3ImmE2sKLLyagKr+tGWvNs71KVdKKOE9veivyG0DkzgFnJYABncJ7ZJpWDZhJpQ erLfKXyX/nsw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,216,1610438400"; d="scan'208";a="366967454" Received: from dpdk-zhirun-dev.sh.intel.com ([10.67.118.176]) by orsmga003.jf.intel.com with ESMTP; 01 Mar 2021 19:01:41 -0800 From: Zhirun Yan To: dev@dpdk.org, qi.z.zhang@intel.com, yahui.cao@intel.com, xiao.w.wang@intel.com, junfeng.guo@intel.com Cc: simei.su@intel.com, ting.xu@intel.com, yuying.zhang@intel.com, xuan.ding@intel.com, Zhirun Yan Date: Tue, 2 Mar 2021 10:54:07 +0800 Message-Id: <20210302025407.1197434-7-zhirun.yan@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210302025407.1197434-1-zhirun.yan@intel.com> References: <20210127052933.2149243-1-zhirun.yan@intel.com> <20210302025407.1197434-1-zhirun.yan@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 6/6] net/ice: clean GTPU flow_type for FDIR 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" Currently, FDIR only support GTPU outer fields in PF. Clean the redundant GTPU inner info in flow type definition and align with shared code. Signed-off-by: Zhirun Yan Signed-off-by: Junfeng Guo --- drivers/net/ice/ice_fdir_filter.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 72836fca6c..3af5812660 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -954,26 +954,23 @@ ice_fdir_input_set_hdrs(enum ice_fltr_ptype flow, struct ice_flow_seg_info *seg) ICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER); break; - case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_UDP: - case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_TCP: - case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_ICMP: - case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_OTHER: + case ICE_FLTR_PTYPE_NONF_IPV4_GTPU: ICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER); break; - case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_OTHER: + case ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH: ICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER); break; - case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER: + case ICE_FLTR_PTYPE_NONF_IPV6_GTPU: ICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER); break; - case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_IPV6_OTHER: + case ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH: ICE_FLOW_SET_HDRS(seg, ICE_FLOW_SEG_HDR_GTPU_EH | ICE_FLOW_SEG_HDR_GTPU_IP | ICE_FLOW_SEG_HDR_IPV6 | @@ -1958,16 +1955,16 @@ ice_fdir_parse_pattern(__rte_unused struct ice_adapter *ad, if (tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU && flow_type == ICE_FLTR_PTYPE_NONF_IPV4_UDP) - flow_type = ICE_FLTR_PTYPE_NONF_IPV4_GTPU_IPV4_OTHER; + flow_type = ICE_FLTR_PTYPE_NONF_IPV4_GTPU; else if (tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU_EH && flow_type == ICE_FLTR_PTYPE_NONF_IPV4_UDP) - flow_type = ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH_IPV4_OTHER; + flow_type = ICE_FLTR_PTYPE_NONF_IPV4_GTPU_EH; else if (tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU && flow_type == ICE_FLTR_PTYPE_NONF_IPV6_UDP) - flow_type = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_IPV6_OTHER; + flow_type = ICE_FLTR_PTYPE_NONF_IPV6_GTPU; else if (tunnel_type == ICE_FDIR_TUNNEL_TYPE_GTPU_EH && flow_type == ICE_FLTR_PTYPE_NONF_IPV6_UDP) - flow_type = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH_IPV6_OTHER; + flow_type = ICE_FLTR_PTYPE_NONF_IPV6_GTPU_EH; filter->tunnel_type = tunnel_type; filter->input.flow_type = flow_type;