From patchwork Thu Mar 25 12:42:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Qi Zhang X-Patchwork-Id: 89852 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 5758FA0A02; Thu, 25 Mar 2021 13:39:00 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C9C734067B; Thu, 25 Mar 2021 13:38:59 +0100 (CET) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by mails.dpdk.org (Postfix) with ESMTP id 080DA40147 for ; Thu, 25 Mar 2021 13:38:57 +0100 (CET) IronPort-SDR: 2UHwyb8ter1NbCY2YtmeLulNXf/wtsVTX+vORaAdZqHq8dv8IKUP3QXnjFkqROmm/99GM4qba8 PZB02TTEe+5A== X-IronPort-AV: E=McAfee;i="6000,8403,9933"; a="178471145" X-IronPort-AV: E=Sophos;i="5.81,277,1610438400"; d="scan'208";a="178471145" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2021 05:38:56 -0700 IronPort-SDR: e2SSdVdJJw9lgHGBjJdHobvjxpf74GRjOSafsVoe5nXtyCuMuPfVk8QetUB/xxkXhTgXx+Fa/Q FhUKgR9YZx8A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,277,1610438400"; d="scan'208";a="453051168" Received: from dpdk51.sh.intel.com ([10.67.111.142]) by orsmga001.jf.intel.com with ESMTP; 25 Mar 2021 05:38:54 -0700 From: Qi Zhang To: jia.guo@intel.com, xuan.ding@intel.com Cc: dev@dpdk.org, qiming.yang@intel.com, gordon.noonan@intel.com, shashank1.varshney@intel.com, Qi Zhang Date: Thu, 25 Mar 2021 20:42:41 +0800 Message-Id: <20210325124241.2357850-1-qi.z.zhang@intel.com> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH] net/ice: refine RSS configure 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" The ICE_RSS_ANY_HEADERS will try to enable outer RSS for non-tunnel case and inner RSS for tunnel case. This confuse user. As we already have ICE_RSS_INNER_HEADER for tunnel case, So, replace ICE_RSS_ANY_HEADERS with ICE_RSS_OUTER_HEADERS for all exist flow which only specified the outer pattern. To enable inner RSS for any tunnel cases, a separated rule should be enabled. The patch also remove some unncessary condition check for GTPU in base code, as we already can support outer RSS for GTPU. Signed-off-by: Qi Zhang Acked-by: Xuan Ding --- drivers/net/ice/base/ice_flow.c | 14 ------------ drivers/net/ice/ice_ethdev.c | 4 ++-- drivers/net/ice/ice_hash.c | 38 ++++++++++++++++----------------- 3 files changed, 21 insertions(+), 35 deletions(-) diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c index d123206fc6..bceb257d61 100644 --- a/drivers/net/ice/base/ice_flow.c +++ b/drivers/net/ice/base/ice_flow.c @@ -3678,13 +3678,6 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, if (status) goto exit; - /* Don't do RSS for GTPU Outer */ - if (segs_cnt == ICE_FLOW_SEG_SINGLE && - segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU) { - status = ICE_SUCCESS; - goto exit; - } - /* Search for a flow profile that has matching headers, hash fields * and has the input VSI associated to it. If found, no further * operations required and exit. @@ -3847,13 +3840,6 @@ ice_rem_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, if (status) goto out; - /* Don't do RSS for GTPU Outer */ - if (segs_cnt == ICE_FLOW_SEG_SINGLE && - segs[segs_cnt - 1].hdrs & ICE_FLOW_SEG_HDR_GTPU) { - status = ICE_SUCCESS; - goto out; - } - prof = ice_flow_find_prof_conds(hw, blk, ICE_FLOW_RX, segs, segs_cnt, vsi_handle, ICE_FLOW_FIND_PROF_CHK_FLDS); diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 3e85e5f629..4ccf31cb41 100644 --- a/drivers/net/ice/ice_ethdev.c +++ b/drivers/net/ice/ice_ethdev.c @@ -2348,7 +2348,7 @@ hash_cfg_reset(struct ice_rss_hash_cfg *cfg) cfg->hash_flds = 0; cfg->addl_hdrs = 0; cfg->symm = 0; - cfg->hdr_type = ICE_RSS_ANY_HEADERS; + cfg->hdr_type = ICE_RSS_OUTER_HEADERS; } static int @@ -2833,7 +2833,7 @@ ice_rss_hash_set(struct ice_pf *pf, uint64_t rss_hf) __func__, ret); cfg.symm = 0; - cfg.hdr_type = ICE_RSS_ANY_HEADERS; + cfg.hdr_type = ICE_RSS_OUTER_HEADERS; /* Configure RSS for IPv4 with src/dst addr as input set */ if (rss_hf & ETH_RSS_IPV4) { cfg.addl_hdrs = ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER; diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index 58a0c18d09..7d7e7052da 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -110,7 +110,7 @@ struct ice_rss_hash_cfg ipv4_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER, ICE_FLOW_HASH_ETH | ICE_FLOW_HASH_IPV4, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -118,7 +118,7 @@ struct ice_rss_hash_cfg ipv4_udp_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, ICE_FLOW_HASH_ETH | ICE_HASH_UDP_IPV4 | ICE_IPV4_PROT, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -126,7 +126,7 @@ struct ice_rss_hash_cfg ipv4_tcp_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, ICE_FLOW_HASH_ETH | ICE_HASH_TCP_IPV4 | ICE_IPV4_PROT, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -134,7 +134,7 @@ struct ice_rss_hash_cfg ipv4_sctp_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_SCTP, ICE_FLOW_HASH_ETH | ICE_HASH_SCTP_IPV4 | ICE_IPV4_PROT, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -142,7 +142,7 @@ struct ice_rss_hash_cfg ipv6_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER, ICE_FLOW_HASH_ETH | ICE_FLOW_HASH_IPV6, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -150,7 +150,7 @@ struct ice_rss_hash_cfg ipv6_udp_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, ICE_FLOW_HASH_ETH | ICE_HASH_UDP_IPV6 | ICE_IPV6_PROT, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -158,7 +158,7 @@ struct ice_rss_hash_cfg ipv6_tcp_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, ICE_FLOW_HASH_ETH | ICE_HASH_TCP_IPV6 | ICE_IPV6_PROT, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -166,7 +166,7 @@ struct ice_rss_hash_cfg ipv6_sctp_tmplt = { ICE_FLOW_SEG_HDR_ETH | ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_SCTP, ICE_FLOW_HASH_ETH | ICE_HASH_SCTP_IPV6 | ICE_IPV6_PROT, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -262,7 +262,7 @@ struct ice_rss_hash_cfg eth_ipv4_esp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_ESP, ICE_FLOW_HASH_ESP_SPI, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -270,7 +270,7 @@ struct ice_rss_hash_cfg eth_ipv4_udp_esp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_NAT_T_ESP, ICE_FLOW_HASH_NAT_T_ESP_SPI, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -278,7 +278,7 @@ struct ice_rss_hash_cfg eth_ipv4_ah_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_AH, ICE_FLOW_HASH_AH_SPI, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -286,7 +286,7 @@ struct ice_rss_hash_cfg eth_ipv4_l2tpv3_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_L2TPV3, ICE_FLOW_HASH_L2TPV3_SESS_ID, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -294,7 +294,7 @@ struct ice_rss_hash_cfg eth_ipv4_pfcp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_PFCP_SESSION, ICE_FLOW_HASH_PFCP_SEID, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -302,7 +302,7 @@ struct ice_rss_hash_cfg eth_ipv6_esp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_ESP, ICE_FLOW_HASH_ESP_SPI, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -310,7 +310,7 @@ struct ice_rss_hash_cfg eth_ipv6_udp_esp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_NAT_T_ESP, ICE_FLOW_HASH_NAT_T_ESP_SPI, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -318,7 +318,7 @@ struct ice_rss_hash_cfg eth_ipv6_ah_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_AH, ICE_FLOW_HASH_AH_SPI, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -326,7 +326,7 @@ struct ice_rss_hash_cfg eth_ipv6_l2tpv3_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_L2TPV3, ICE_FLOW_HASH_L2TPV3_SESS_ID, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; @@ -334,14 +334,14 @@ struct ice_rss_hash_cfg eth_ipv6_pfcp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_PFCP_SESSION, ICE_FLOW_HASH_PFCP_SEID, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 }; struct ice_rss_hash_cfg pppoe_tmplt = { ICE_FLOW_SEG_HDR_ETH, ICE_FLOW_HASH_ETH | ICE_FLOW_HASH_PPPOE_SESS_ID, - ICE_RSS_ANY_HEADERS, + ICE_RSS_OUTER_HEADERS, 0 };