From patchwork Wed Dec 16 08:58:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 85227 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id B92EFA09EF; Wed, 16 Dec 2020 10:02:09 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5F80AC9B6; Wed, 16 Dec 2020 10:01:52 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 25221C98C for ; Wed, 16 Dec 2020 10:01:48 +0100 (CET) IronPort-SDR: hKBDZM1er1HSJX6kG0qGElMTgd7rz4qaduaPihBXMQzng0AX0ZI8TPhMhqSoZMmMAlqAXGA/M9 I7Jragp8B05Q== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="175135845" X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="175135845" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 01:01:47 -0800 IronPort-SDR: xa0VMv901oM/t6XSbD/gQbK7Rg4/RMs2V/lGe7aXIvqt4aGUGc9bnywA8kpiFAlqRRIr1JpTiG r+v4se7fIA1Q== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="368826935" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by orsmga008.jf.intel.com with ESMTP; 16 Dec 2020 01:01:45 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com Date: Wed, 16 Dec 2020 16:58:50 +0800 Message-Id: <20201216085854.7842-2-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201216085854.7842-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev 21.02 1/5] ethdev: add new tunnel type for ecpri X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add type of RTE_TUNNEL_TYPE_ECPRI into the enum of ethdev tunnel type. Signed-off-by: Jeff Guo Reviewed-by: Qi Zhang --- lib/librte_ethdev/rte_ethdev.h | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index f5f8919186..2cbce958cf 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1219,6 +1219,7 @@ enum rte_eth_tunnel_type { RTE_TUNNEL_TYPE_IP_IN_GRE, RTE_L2_TUNNEL_TYPE_E_TAG, RTE_TUNNEL_TYPE_VXLAN_GPE, + RTE_TUNNEL_TYPE_ECPRI, RTE_TUNNEL_TYPE_MAX, }; From patchwork Wed Dec 16 08:58:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 85228 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id C4E60A09EF; Wed, 16 Dec 2020 10:02:28 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id CBF48C9C6; Wed, 16 Dec 2020 10:01:53 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 34937C9A8 for ; Wed, 16 Dec 2020 10:01:49 +0100 (CET) IronPort-SDR: FKFPcv4/+EUf6lVITJLv4nTcp0O5ta7qcUphwEIIGZ1N07WK7klOjHehk4hE95tARZkJfvTrOS pd/xPJl8MVAQ== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="175135853" X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="175135853" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 01:01:48 -0800 IronPort-SDR: wL2a/CyeLWRXUdQp7hqNIN8VzPaU0OhdzKfe3tWxsgbePdIrCvl44/hi2xry4lezTivGOabnWO jlzFuMJ8v1CA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="368826943" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by orsmga008.jf.intel.com with ESMTP; 16 Dec 2020 01:01:47 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com Date: Wed, 16 Dec 2020 16:58:51 +0800 Message-Id: <20201216085854.7842-3-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201216085854.7842-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev 21.02 2/5] net/ice/base: add new UDP tunnel type for ecpri X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add new UDP tunnel type for ecpri. Signed-off-by: Jeff Guo --- drivers/net/ice/base/ice_flex_pipe.c | 1 + drivers/net/ice/base/ice_flex_type.h | 1 + 2 files changed, 2 insertions(+) diff --git a/drivers/net/ice/base/ice_flex_pipe.c b/drivers/net/ice/base/ice_flex_pipe.c index 7594df1696..fa8494e28d 100644 --- a/drivers/net/ice/base/ice_flex_pipe.c +++ b/drivers/net/ice/base/ice_flex_pipe.c @@ -13,6 +13,7 @@ static const struct ice_tunnel_type_scan tnls[] = { { TNL_VXLAN, "TNL_VXLAN_PF" }, { TNL_GENEVE, "TNL_GENEVE_PF" }, + { TNL_ECPRI, "TNL_UDP_ECPRI_PF" }, { TNL_LAST, "" } }; diff --git a/drivers/net/ice/base/ice_flex_type.h b/drivers/net/ice/base/ice_flex_type.h index 1dd57baccd..bf720753c1 100644 --- a/drivers/net/ice/base/ice_flex_type.h +++ b/drivers/net/ice/base/ice_flex_type.h @@ -516,6 +516,7 @@ struct ice_pkg_enum { enum ice_tunnel_type { TNL_VXLAN = 0, TNL_GENEVE, + TNL_ECPRI, TNL_LAST = 0xFF, TNL_ALL = 0xFF, }; From patchwork Wed Dec 16 08:58:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 85229 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2274FA09EF; Wed, 16 Dec 2020 10:02:47 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 644FFC9D3; Wed, 16 Dec 2020 10:01:55 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id BA071C9C2 for ; Wed, 16 Dec 2020 10:01:53 +0100 (CET) IronPort-SDR: l0IQl4WUQxTqSfqqBHDfTiEFiERTboTg0PcFRyMSlYsmJHytQ6GzrjaC6rYTJ2x7EG0HKwtsre wSj76bvsNdsw== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="175135857" X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="175135857" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 01:01:51 -0800 IronPort-SDR: tPtaDfF73Nw1TqhXpu0VKywcDbChWBINTsibMJX/2po6pP9oIyCQZb+Ck65rB2UIWY95xpp5r4 oUEkdJzXIMTA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="368826960" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by orsmga008.jf.intel.com with ESMTP; 16 Dec 2020 01:01:49 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com Date: Wed, 16 Dec 2020 16:58:52 +0800 Message-Id: <20201216085854.7842-4-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201216085854.7842-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev 21.02 3/5] net/ice: add ecpri package type X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add new ecpri package type and process the new package type when handle each flow engines. Signed-off-by: Jeff Guo --- drivers/net/ice/ice_ethdev.c | 7 +- drivers/net/ice/ice_ethdev.h | 1 + drivers/net/ice/ice_fdir_filter.c | 66 +++++++++++++++ drivers/net/ice/ice_hash.c | 111 +++++++++++++++++++++++++ drivers/net/ice/ice_rxtx.c | 32 +++++++ drivers/net/ice/ice_switch_filter.c | 124 ++++++++++++++++++++++++++++ 6 files changed, 340 insertions(+), 1 deletion(-) diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 9a5d6a559f..ae1a22572f 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -71,7 +71,8 @@ static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = { #define ICE_DFLT_OUTER_TAG_TYPE ICE_AQ_VSI_OUTER_TAG_VLAN_9100 #define ICE_OS_DEFAULT_PKG_NAME "ICE OS Default Package" -#define ICE_COMMS_PKG_NAME "ICE COMMS Package" +#define ICE_COMMS_PKG_NAME "ICE COMMS Package" +#define ICE_WIRELESS_EDGE_PKG_NAME "ICE Wireless Edge Package" #define ICE_MAX_RES_DESC_NUM 1024 static int ice_dev_configure(struct rte_eth_dev *dev); @@ -1807,6 +1808,10 @@ ice_load_pkg_type(struct ice_hw *hw) else if (!strncmp((char *)hw->active_pkg_name, ICE_COMMS_PKG_NAME, ICE_PKG_NAME_SIZE)) package_type = ICE_PKG_TYPE_COMMS; + else if (!strncmp((char *)hw->active_pkg_name, + ICE_WIRELESS_EDGE_PKG_NAME, + ICE_PKG_NAME_SIZE)) + package_type = ICE_PKG_TYPE_WIRELESS_EDGE; else package_type = ICE_PKG_TYPE_UNKNOWN; diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h index 899f446cde..7f8d0e9087 100644 --- a/drivers/net/ice/ice_ethdev.h +++ b/drivers/net/ice/ice_ethdev.h @@ -147,6 +147,7 @@ enum ice_pkg_type { ICE_PKG_TYPE_UNKNOWN, ICE_PKG_TYPE_OS_DEFAULT, ICE_PKG_TYPE_COMMS, + ICE_PKG_TYPE_WIRELESS_EDGE, }; struct ice_adapter; diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c index 175abcdd5c..5ca74bfb71 100644 --- a/drivers/net/ice/ice_fdir_filter.c +++ b/drivers/net/ice/ice_fdir_filter.c @@ -143,8 +143,62 @@ static struct ice_pattern_match_item ice_fdir_pattern_comms[] = { {pattern_eth_ipv6_gtpu_eh, ICE_FDIR_INSET_IPV6_GTPU_EH, ICE_INSET_NONE}, }; +static struct ice_pattern_match_item ice_fdir_pattern_wireless_edge[] = { + {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}, +}; + static struct ice_flow_parser ice_fdir_parser_os; static struct ice_flow_parser ice_fdir_parser_comms; +static struct ice_flow_parser ice_fdir_parser_wireless_edge; static int ice_fdir_is_tunnel_profile(enum ice_fdir_tunnel_type tunnel_type); @@ -1113,6 +1167,8 @@ ice_fdir_init(struct ice_adapter *ad) if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) parser = &ice_fdir_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + parser = &ice_fdir_parser_wireless_edge; else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) parser = &ice_fdir_parser_os; else @@ -1132,6 +1188,8 @@ ice_fdir_uninit(struct ice_adapter *ad) if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) parser = &ice_fdir_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + parser = &ice_fdir_parser_wireless_edge; else parser = &ice_fdir_parser_os; @@ -2083,6 +2141,14 @@ static struct ice_flow_parser ice_fdir_parser_comms = { .stage = ICE_FLOW_STAGE_DISTRIBUTOR, }; +static struct ice_flow_parser ice_fdir_parser_wireless_edge = { + .engine = &ice_fdir_engine, + .array = ice_fdir_pattern_wireless_edge, + .array_len = RTE_DIM(ice_fdir_pattern_wireless_edge), + .parse_pattern_action = ice_fdir_parse, + .stage = ICE_FLOW_STAGE_DISTRIBUTOR, +}; + RTE_INIT(ice_fdir_engine_register) { ice_register_flow_engine(&ice_fdir_engine); diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index fe3e06c579..a52ede0173 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -446,6 +446,104 @@ static struct ice_pattern_match_item ice_hash_pattern_list_comms[] = { &hint_eth_pppoes}, }; +/* Supported pattern for wireless edge package. */ +static struct ice_pattern_match_item ice_hash_pattern_list_wireless_edge[] = { + {pattern_empty, ICE_INSET_NONE, + &hint_empty}, + {pattern_eth_ipv4, ICE_INSET_NONE, + &hint_eth_ipv4}, + {pattern_eth_ipv4_udp, ICE_INSET_NONE, + &hint_eth_ipv4_udp}, + {pattern_eth_ipv4_tcp, ICE_INSET_NONE, + &hint_eth_ipv4_tcp}, + {pattern_eth_ipv4_sctp, ICE_INSET_NONE, + &hint_eth_ipv4_sctp}, + {pattern_eth_ipv4_gtpu_ipv4, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_ipv4}, + {pattern_eth_ipv4_gtpu_ipv4_udp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_ipv4_udp}, + {pattern_eth_ipv4_gtpu_ipv4_tcp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_ipv4_tcp}, + {pattern_eth_ipv4_gtpu_ipv6, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_ipv6}, + {pattern_eth_ipv4_gtpu_ipv6_udp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_ipv6_udp}, + {pattern_eth_ipv4_gtpu_ipv6_tcp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_ipv6_tcp}, + {pattern_eth_ipv6_gtpu_ipv4, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_ipv4}, + {pattern_eth_ipv6_gtpu_ipv4_udp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_ipv4_udp}, + {pattern_eth_ipv6_gtpu_ipv4_tcp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_ipv4_tcp}, + {pattern_eth_ipv6_gtpu_ipv6, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_ipv6}, + {pattern_eth_ipv6_gtpu_ipv6_udp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_ipv6_udp}, + {pattern_eth_ipv6_gtpu_ipv6_tcp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_ipv6_tcp}, + {pattern_eth_ipv4_gtpu_eh_ipv4, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_eh_ipv4}, + {pattern_eth_ipv4_gtpu_eh_ipv4_udp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_eh_ipv4_udp}, + {pattern_eth_ipv4_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_eh_ipv4_tcp}, + {pattern_eth_ipv4_gtpu_eh_ipv6, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_eh_ipv6}, + {pattern_eth_ipv4_gtpu_eh_ipv6_udp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_eh_ipv6_udp}, + {pattern_eth_ipv4_gtpu_eh_ipv6_tcp, ICE_INSET_NONE, + &hint_eth_ipv4_gtpu_eh_ipv6_tcp}, + {pattern_eth_ipv6_gtpu_eh_ipv4, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_eh_ipv4}, + {pattern_eth_ipv6_gtpu_eh_ipv4_udp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_eh_ipv4_udp}, + {pattern_eth_ipv6_gtpu_eh_ipv4_tcp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_eh_ipv4_tcp}, + {pattern_eth_ipv6_gtpu_eh_ipv6, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_eh_ipv6}, + {pattern_eth_ipv6_gtpu_eh_ipv6_udp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_eh_ipv6_udp}, + {pattern_eth_ipv6_gtpu_eh_ipv6_tcp, ICE_INSET_NONE, + &hint_eth_ipv6_gtpu_eh_ipv6_tcp}, + {pattern_eth_ipv4_esp, ICE_INSET_NONE, + &hint_eth_ipv4_esp}, + {pattern_eth_ipv4_udp_esp, ICE_INSET_NONE, + &hint_eth_ipv4_udp_esp}, + {pattern_eth_ipv4_ah, ICE_INSET_NONE, + &hint_eth_ipv4_ah}, + {pattern_eth_vlan_ipv4, ICE_INSET_NONE, + &hint_eth_vlan_ipv4}, + {pattern_eth_vlan_ipv4_udp, ICE_INSET_NONE, + &hint_eth_vlan_ipv4_udp}, + {pattern_eth_vlan_ipv4_tcp, ICE_INSET_NONE, + &hint_eth_vlan_ipv4_tcp}, + {pattern_eth_vlan_ipv4_sctp, ICE_INSET_NONE, + &hint_eth_vlan_ipv4_sctp}, + {pattern_eth_ipv6, ICE_INSET_NONE, + &hint_eth_ipv6}, + {pattern_eth_ipv6_udp, ICE_INSET_NONE, + &hint_eth_ipv6_udp}, + {pattern_eth_ipv6_tcp, ICE_INSET_NONE, + &hint_eth_ipv6_tcp}, + {pattern_eth_ipv6_sctp, ICE_INSET_NONE, + &hint_eth_ipv6_sctp}, + {pattern_eth_ipv6_esp, ICE_INSET_NONE, + &hint_eth_ipv6_esp}, + {pattern_eth_ipv6_udp_esp, ICE_INSET_NONE, + &hint_eth_ipv6_udp_esp}, + {pattern_eth_ipv6_ah, ICE_INSET_NONE, + &hint_eth_ipv6_ah}, + {pattern_eth_vlan_ipv6, ICE_INSET_NONE, + &hint_eth_vlan_ipv6}, + {pattern_eth_vlan_ipv6_udp, ICE_INSET_NONE, + &hint_eth_vlan_ipv6_udp}, + {pattern_eth_vlan_ipv6_tcp, ICE_INSET_NONE, + &hint_eth_vlan_ipv6_tcp}, + {pattern_eth_vlan_ipv6_sctp, ICE_INSET_NONE, + &hint_eth_vlan_ipv6_sctp}, +}; + /** * The first member is input set combination, * the second member is hash fields. @@ -932,6 +1030,15 @@ static struct ice_flow_parser ice_hash_parser_comms = { .stage = ICE_FLOW_STAGE_RSS, }; +/* Register parser for wireless edge package. */ +static struct ice_flow_parser ice_hash_parser_wireless_edge = { + .engine = &ice_hash_engine, + .array = ice_hash_pattern_list_wireless_edge, + .array_len = RTE_DIM(ice_hash_pattern_list_wireless_edge), + .parse_pattern_action = ice_hash_parse_pattern_action, + .stage = ICE_FLOW_STAGE_RSS, +}; + RTE_INIT(ice_hash_engine_init) { struct ice_flow_engine *engine = &ice_hash_engine; @@ -950,6 +1057,8 @@ ice_hash_init(struct ice_adapter *ad) parser = &ice_hash_parser_os; else if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) parser = &ice_hash_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + parser = &ice_hash_parser_wireless_edge; else return -EINVAL; @@ -1356,6 +1465,8 @@ ice_hash_uninit(struct ice_adapter *ad) ice_unregister_parser(&ice_hash_parser_os, ad); else if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) ice_unregister_parser(&ice_hash_parser_comms, ad); + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + ice_unregister_parser(&ice_hash_parser_wireless_edge, ad); } static void diff --git a/drivers/net/ice/ice_rxtx.c b/drivers/net/ice/ice_rxtx.c index d052bd0f1b..0cf7d6abb8 100644 --- a/drivers/net/ice/ice_rxtx.c +++ b/drivers/net/ice/ice_rxtx.c @@ -1948,8 +1948,40 @@ ice_dev_supported_ptypes_get(struct rte_eth_dev *dev) RTE_PTYPE_UNKNOWN }; + static const uint32_t ptypes_wireless_edge[] = { + /* refers to ice_get_default_pkt_type() */ + RTE_PTYPE_L2_ETHER, + RTE_PTYPE_L2_ETHER_TIMESYNC, + RTE_PTYPE_L2_ETHER_LLDP, + RTE_PTYPE_L2_ETHER_ARP, + RTE_PTYPE_L3_IPV4_EXT_UNKNOWN, + RTE_PTYPE_L3_IPV6_EXT_UNKNOWN, + RTE_PTYPE_L4_FRAG, + RTE_PTYPE_L4_ICMP, + RTE_PTYPE_L4_NONFRAG, + RTE_PTYPE_L4_SCTP, + RTE_PTYPE_L4_TCP, + RTE_PTYPE_L4_UDP, + RTE_PTYPE_TUNNEL_GRENAT, + RTE_PTYPE_TUNNEL_IP, + RTE_PTYPE_INNER_L2_ETHER, + RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN, + RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN, + RTE_PTYPE_INNER_L4_FRAG, + RTE_PTYPE_INNER_L4_ICMP, + RTE_PTYPE_INNER_L4_NONFRAG, + RTE_PTYPE_INNER_L4_SCTP, + RTE_PTYPE_INNER_L4_TCP, + RTE_PTYPE_INNER_L4_UDP, + RTE_PTYPE_TUNNEL_GTPC, + RTE_PTYPE_TUNNEL_GTPU, + RTE_PTYPE_UNKNOWN + }; + if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) ptypes = ptypes_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + ptypes = ptypes_wireless_edge; else ptypes = ptypes_os; diff --git a/drivers/net/ice/ice_switch_filter.c b/drivers/net/ice/ice_switch_filter.c index 8cba6eb7b1..dc8578d5aa 100644 --- a/drivers/net/ice/ice_switch_filter.c +++ b/drivers/net/ice/ice_switch_filter.c @@ -139,8 +139,10 @@ struct sw_meta { static struct ice_flow_parser ice_switch_dist_parser_os; static struct ice_flow_parser ice_switch_dist_parser_comms; +static struct ice_flow_parser ice_switch_dist_parser_wireless_edge; static struct ice_flow_parser ice_switch_perm_parser_os; static struct ice_flow_parser ice_switch_perm_parser_comms; +static struct ice_flow_parser ice_switch_perm_parser_wireless_edge; static struct ice_pattern_match_item ice_switch_pattern_dist_os[] = { @@ -264,6 +266,54 @@ ice_pattern_match_item ice_switch_pattern_dist_comms[] = { ICE_INSET_NONE, ICE_INSET_NONE}, }; +static struct +ice_pattern_match_item ice_switch_pattern_dist_wireless_edge[] = { + {pattern_ethertype, + ICE_SW_INSET_ETHER, ICE_INSET_NONE}, + {pattern_ethertype_vlan, + ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE}, + {pattern_eth_arp, + ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4, + ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp, + ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_tcp, + ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv6, + ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp, + ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv6_tcp, + ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4, + ICE_SW_INSET_DIST_VXLAN_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, + ICE_SW_INSET_DIST_VXLAN_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, + ICE_SW_INSET_DIST_VXLAN_IPV4_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4, + ICE_SW_INSET_DIST_NVGRE_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_udp, + ICE_SW_INSET_DIST_NVGRE_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, + ICE_SW_INSET_DIST_NVGRE_IPV4_TCP, ICE_INSET_NONE}, + {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}, +}; + static struct ice_pattern_match_item ice_switch_pattern_perm_os[] = { {pattern_ethertype, @@ -386,6 +436,54 @@ ice_pattern_match_item ice_switch_pattern_perm_comms[] = { ICE_INSET_NONE, ICE_INSET_NONE}, }; +static struct +ice_pattern_match_item ice_switch_pattern_perm_wireless_edge[] = { + {pattern_ethertype, + ICE_SW_INSET_ETHER, ICE_INSET_NONE}, + {pattern_ethertype_vlan, + ICE_SW_INSET_MAC_VLAN, ICE_INSET_NONE}, + {pattern_eth_arp, + ICE_INSET_NONE, ICE_INSET_NONE}, + {pattern_eth_ipv4, + ICE_SW_INSET_MAC_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp, + ICE_SW_INSET_MAC_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_tcp, + ICE_SW_INSET_MAC_IPV4_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv6, + ICE_SW_INSET_MAC_IPV6, ICE_INSET_NONE}, + {pattern_eth_ipv6_udp, + ICE_SW_INSET_MAC_IPV6_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv6_tcp, + ICE_SW_INSET_MAC_IPV6_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4, + ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_udp, + ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_udp_vxlan_eth_ipv4_tcp, + ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4, + ICE_SW_INSET_PERM_TUNNEL_IPV4, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_udp, + ICE_SW_INSET_PERM_TUNNEL_IPV4_UDP, ICE_INSET_NONE}, + {pattern_eth_ipv4_nvgre_eth_ipv4_tcp, + ICE_SW_INSET_PERM_TUNNEL_IPV4_TCP, ICE_INSET_NONE}, + {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}, +}; + static int ice_switch_create(struct ice_adapter *ad, struct rte_flow *flow, @@ -1861,6 +1959,8 @@ ice_switch_init(struct ice_adapter *ad) if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) dist_parser = &ice_switch_dist_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + dist_parser = &ice_switch_dist_parser_wireless_edge; else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) dist_parser = &ice_switch_dist_parser_os; else @@ -1869,6 +1969,8 @@ ice_switch_init(struct ice_adapter *ad) if (ad->devargs.pipe_mode_support) { if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) perm_parser = &ice_switch_perm_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + perm_parser = &ice_switch_perm_parser_wireless_edge; else perm_parser = &ice_switch_perm_parser_os; @@ -1887,6 +1989,8 @@ ice_switch_uninit(struct ice_adapter *ad) if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) dist_parser = &ice_switch_dist_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + dist_parser = &ice_switch_dist_parser_wireless_edge; else if (ad->active_pkg_type == ICE_PKG_TYPE_OS_DEFAULT) dist_parser = &ice_switch_dist_parser_os; else @@ -1895,6 +1999,8 @@ ice_switch_uninit(struct ice_adapter *ad) if (ad->devargs.pipe_mode_support) { if (ad->active_pkg_type == ICE_PKG_TYPE_COMMS) perm_parser = &ice_switch_perm_parser_comms; + else if (ad->active_pkg_type == ICE_PKG_TYPE_WIRELESS_EDGE) + perm_parser = &ice_switch_perm_parser_wireless_edge; else perm_parser = &ice_switch_perm_parser_os; @@ -1934,6 +2040,15 @@ ice_flow_parser ice_switch_dist_parser_comms = { .stage = ICE_FLOW_STAGE_DISTRIBUTOR, }; +static struct +ice_flow_parser ice_switch_dist_parser_wireless_edge = { + .engine = &ice_switch_engine, + .array = ice_switch_pattern_dist_wireless_edge, + .array_len = RTE_DIM(ice_switch_pattern_dist_wireless_edge), + .parse_pattern_action = ice_switch_parse_pattern_action, + .stage = ICE_FLOW_STAGE_DISTRIBUTOR, +}; + static struct ice_flow_parser ice_switch_perm_parser_os = { .engine = &ice_switch_engine, @@ -1952,6 +2067,15 @@ ice_flow_parser ice_switch_perm_parser_comms = { .stage = ICE_FLOW_STAGE_PERMISSION, }; +static struct +ice_flow_parser ice_switch_perm_parser_wireless_edge = { + .engine = &ice_switch_engine, + .array = ice_switch_pattern_perm_wireless_edge, + .array_len = RTE_DIM(ice_switch_pattern_perm_wireless_edge), + .parse_pattern_action = ice_switch_parse_pattern_action, + .stage = ICE_FLOW_STAGE_PERMISSION, +}; + RTE_INIT(ice_sw_engine_init) { struct ice_flow_engine *engine = &ice_switch_engine; From patchwork Wed Dec 16 08:58:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 85230 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 293E9A09EF; Wed, 16 Dec 2020 10:03:06 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id F3C0EC9DA; Wed, 16 Dec 2020 10:01:56 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id A9796C9CC for ; Wed, 16 Dec 2020 10:01:54 +0100 (CET) IronPort-SDR: B7MZ57nyJy/UbpsFl/mUQ2VS6RmDEuHhbyLMaIz7CLvKyWj9Ym+S/G9s71WXUKHatgGqTWh+Lz jxyDgzC5OPwQ== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="175135861" X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="175135861" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 01:01:53 -0800 IronPort-SDR: EvcSOivBtx/3MWMuy0wZYQV6Ot80DRFQfkvUppo/0SfMiWNia1cjrJTxXc1AjwB+2Q4gK0q46q sPjjuFJYZOyw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="368826975" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by orsmga008.jf.intel.com with ESMTP; 16 Dec 2020 01:01:51 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com Date: Wed, 16 Dec 2020 16:58:53 +0800 Message-Id: <20201216085854.7842-5-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201216085854.7842-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev 21.02 4/5] net/ice: enable ecpri tunnel port configure in dcf X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add ecpri tunnel port add and rm ops to configure ecpri udp tunnel port in dcf. Signed-off-by: Jeff Guo --- drivers/net/ice/ice_dcf_ethdev.c | 67 ++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/drivers/net/ice/ice_dcf_ethdev.c b/drivers/net/ice/ice_dcf_ethdev.c index b0b2ecb0d6..08265db79f 100644 --- a/drivers/net/ice/ice_dcf_ethdev.c +++ b/drivers/net/ice/ice_dcf_ethdev.c @@ -26,6 +26,13 @@ #include "ice_dcf_ethdev.h" #include "ice_rxtx.h" +static int +ice_dcf_dev_udp_tunnel_port_add(struct rte_eth_dev *dev, + struct rte_eth_udp_tunnel *udp_tunnel); +static int +ice_dcf_dev_udp_tunnel_port_del(struct rte_eth_dev *dev, + struct rte_eth_udp_tunnel *udp_tunnel); + static uint16_t ice_dcf_recv_pkts(__rte_unused void *rx_queue, __rte_unused struct rte_mbuf **bufs, @@ -870,6 +877,64 @@ ice_dcf_link_update(__rte_unused struct rte_eth_dev *dev, return 0; } +/* Add UDP tunneling port */ +static int +ice_dcf_dev_udp_tunnel_port_add(struct rte_eth_dev *dev, + struct rte_eth_udp_tunnel *udp_tunnel) +{ + struct ice_dcf_adapter *adapter = dev->data->dev_private; + struct ice_adapter *parent_adapter = &adapter->parent; + struct ice_hw *parent_hw = &parent_adapter->hw; + int ret = 0; + + if (!udp_tunnel) + return -EINVAL; + + switch (udp_tunnel->prot_type) { + case RTE_TUNNEL_TYPE_VXLAN: + ret = ice_create_tunnel(parent_hw, TNL_VXLAN, + udp_tunnel->udp_port); + break; + case RTE_TUNNEL_TYPE_ECPRI: + ret = ice_create_tunnel(parent_hw, TNL_ECPRI, + udp_tunnel->udp_port); + break; + default: + PMD_DRV_LOG(ERR, "Invalid tunnel type"); + ret = -EINVAL; + break; + } + + return ret; +} + +/* Delete UDP tunneling port */ +static int +ice_dcf_dev_udp_tunnel_port_del(struct rte_eth_dev *dev, + struct rte_eth_udp_tunnel *udp_tunnel) +{ + struct ice_dcf_adapter *adapter = dev->data->dev_private; + struct ice_adapter *parent_adapter = &adapter->parent; + struct ice_hw *parent_hw = &parent_adapter->hw; + int ret = 0; + + if (!udp_tunnel) + return -EINVAL; + + switch (udp_tunnel->prot_type) { + case RTE_TUNNEL_TYPE_VXLAN: + case RTE_TUNNEL_TYPE_ECPRI: + ret = ice_destroy_tunnel(parent_hw, udp_tunnel->udp_port, 0); + break; + default: + PMD_DRV_LOG(ERR, "Invalid tunnel type"); + ret = -EINVAL; + break; + } + + return ret; +} + static const struct eth_dev_ops ice_dcf_eth_dev_ops = { .dev_start = ice_dcf_dev_start, .dev_stop = ice_dcf_dev_stop, @@ -892,6 +957,8 @@ static const struct eth_dev_ops ice_dcf_eth_dev_ops = { .allmulticast_enable = ice_dcf_dev_allmulticast_enable, .allmulticast_disable = ice_dcf_dev_allmulticast_disable, .filter_ctrl = ice_dcf_dev_filter_ctrl, + .udp_tunnel_port_add = ice_dcf_dev_udp_tunnel_port_add, + .udp_tunnel_port_del = ice_dcf_dev_udp_tunnel_port_del, }; static int From patchwork Wed Dec 16 08:58:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Guo, Jia" X-Patchwork-Id: 85231 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6FDF5A09EF; Wed, 16 Dec 2020 10:03:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 840EFC9E6; Wed, 16 Dec 2020 10:01:58 +0100 (CET) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 1D60AC9CE for ; Wed, 16 Dec 2020 10:01:54 +0100 (CET) IronPort-SDR: gAwUmG6p1YQ4n6yxBUL7QlR5PB95S4kDWzjJ190WdW9AKAT60h3RpNJBsX+niALmzmogxhwC7F iUwGJYQOfrAw== X-IronPort-AV: E=McAfee;i="6000,8403,9836"; a="175135867" X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="175135867" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 16 Dec 2020 01:01:54 -0800 IronPort-SDR: cBCIoZUvmZ5wvFd1m6Ohh6ZMq5G70Pb9vjuk4LIjwpzGIfPLPpCdrbI9GaPt1pWc4W9fNJoT5p ws27ENHZbivQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.78,424,1599548400"; d="scan'208";a="368826986" Received: from npg-dpdk-cvl-jeffguo-01.sh.intel.com ([10.67.111.128]) by orsmga008.jf.intel.com with ESMTP; 16 Dec 2020 01:01:53 -0800 From: Jeff Guo To: qi.z.zhang@intel.com, jingjing.wu@intel.com, qiming.yang@intel.com, haiyue.wang@intel.com Cc: dev@dpdk.org, jia.guo@intel.com Date: Wed, 16 Dec 2020 16:58:54 +0800 Message-Id: <20201216085854.7842-6-jia.guo@intel.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201216085854.7842-1-jia.guo@intel.com> References: <20201216085854.7842-1-jia.guo@intel.com> MIME-Version: 1.0 Subject: [dpdk-dev] [dpdk-dev 21.02 5/5] app/testpmd: add new UDP tunnel port for ecpri X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add new UDP tunnel port params for ecpri configuration, the command as below: testpmd> port config 0 udp_tunnel_port add ecpri 6789 testpmd> port config 0 udp_tunnel_port rm ecpri 6789 Signed-off-by: Jeff Guo --- app/test-pmd/cmdline.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index 2ccbaa039e..af08e48e2e 100644 --- a/app/test-pmd/cmdline.c +++ b/app/test-pmd/cmdline.c @@ -9175,6 +9175,8 @@ cmd_cfg_tunnel_udp_port_parsed(void *parsed_result, tunnel_udp.prot_type = RTE_TUNNEL_TYPE_GENEVE; } else if (!strcmp(res->tunnel_type, "vxlan-gpe")) { tunnel_udp.prot_type = RTE_TUNNEL_TYPE_VXLAN_GPE; + } else if (!strcmp(res->tunnel_type, "ecpri")) { + tunnel_udp.prot_type = RTE_TUNNEL_TYPE_ECPRI; } else { printf("Invalid tunnel type\n"); return; @@ -9209,7 +9211,7 @@ cmdline_parse_token_string_t cmd_config_tunnel_udp_port_action = "add#rm"); cmdline_parse_token_string_t cmd_config_tunnel_udp_port_tunnel_type = TOKEN_STRING_INITIALIZER(struct cmd_config_tunnel_udp_port, tunnel_type, - "vxlan#geneve#vxlan-gpe"); + "vxlan#geneve#vxlan-gpe#ecpri"); cmdline_parse_token_num_t cmd_config_tunnel_udp_port_value = TOKEN_NUM_INITIALIZER(struct cmd_config_tunnel_udp_port, udp_port, RTE_UINT16); @@ -9217,7 +9219,8 @@ cmdline_parse_token_num_t cmd_config_tunnel_udp_port_value = cmdline_parse_inst_t cmd_cfg_tunnel_udp_port = { .f = cmd_cfg_tunnel_udp_port_parsed, .data = NULL, - .help_str = "port config udp_tunnel_port add|rm vxlan|geneve|vxlan-gpe ", + .help_str = "port config udp_tunnel_port add|rm vxlan|" + "geneve|vxlan-gpe|ecpri ", .tokens = { (void *)&cmd_config_tunnel_udp_port_port, (void *)&cmd_config_tunnel_udp_port_config,