From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5C809430B3; Sun, 20 Aug 2023 12:51:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E3048410D7; Sun, 20 Aug 2023 12:51:05 +0200 (CEST) Received: from vale.hankala.org (vale.hankala.org [164.138.26.161]) by mails.dpdk.org (Postfix) with ESMTP id 4FED940A80 for ; Sun, 20 Aug 2023 12:51:05 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; s=jTVx8ZAn; t=1692528663; x=1693392663; bh=XbYjSP26kZdExMn0EAzV53QyiXUr3p7n+URyeD8 4jgc=; h=content-type:mime-version:subject:cc:to:from:date; d=hankala.org; b=tbqIQQdFQCcYC02y7wcieKZu5w11KlWgy+dBJYVHBbiAfUsYQoSaH Wxma5jZfjGTpE1HJWW2XI4/TgpZOQvQ7it0qPPOYrPth3HEwNZ9txcDguILKZId3ujKdYb fVEigxM1Y4kOq+7DxS7UFiscpys/VGd2yaT+PY0del9yBL3U= Received: by vale.hankala.org (OpenSMTPD) with ESMTPS id 5306898c (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Sun, 20 Aug 2023 10:51:03 +0000 (UTC) Date: Sun, 20 Aug 2023 10:51:01 +0000 From: Visa Hankala To: dev@dpdk.org Cc: Qiming Yang , Qi Zhang Subject: [PATCH] net/ice: omit IP protocol id from IP/TCP/UDP RSS Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline 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 Omit the IP protocol id from the IP/TCP/UDP RSS templates so that the hash computation uses only the source and destination addresses, and ports. Otherwise, the hash input set would contain an extra IP protocol id word at the start, giving RSS hashes that do not match the usual 2-tuple and 4-tuple RSS hash algorithms. In principle, the IP protocol id could be dropped from the hash config in ice_refine_hash_cfg_l234(). However, it is not obvious which combination of RTE_ETH_RSS_* flags would preserve the id. Therefore, remove the id from the templates completely. Fixes: 38d632cbdc88 ("net/ice: refactor PF RSS") Signed-off-by: Visa Hankala --- drivers/net/ice/ice_hash.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/drivers/net/ice/ice_hash.c b/drivers/net/ice/ice_hash.c index 52646e9408..ab2eab8fdf 100644 --- a/drivers/net/ice/ice_hash.c +++ b/drivers/net/ice/ice_hash.c @@ -37,9 +37,6 @@ #define ICE_GTPU_EH_DWNLINK 0 #define ICE_GTPU_EH_UPLINK 1 -#define ICE_IPV4_PROT BIT_ULL(ICE_FLOW_FIELD_IDX_IPV4_PROT) -#define ICE_IPV6_PROT BIT_ULL(ICE_FLOW_FIELD_IDX_IPV6_PROT) - #define VALID_RSS_IPV4_L4 (RTE_ETH_RSS_NONFRAG_IPV4_UDP | \ RTE_ETH_RSS_NONFRAG_IPV4_TCP | \ RTE_ETH_RSS_NONFRAG_IPV4_SCTP) @@ -122,7 +119,7 @@ struct ice_rss_hash_cfg ipv4_tmplt = { 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_FLOW_HASH_ETH | ICE_HASH_UDP_IPV4, ICE_RSS_OUTER_HEADERS, 0 }; @@ -130,7 +127,7 @@ struct ice_rss_hash_cfg ipv4_udp_tmplt = { 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_FLOW_HASH_ETH | ICE_HASH_TCP_IPV4, ICE_RSS_OUTER_HEADERS, 0 }; @@ -138,7 +135,7 @@ struct ice_rss_hash_cfg ipv4_tcp_tmplt = { 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_FLOW_HASH_ETH | ICE_HASH_SCTP_IPV4, ICE_RSS_OUTER_HEADERS, 0 }; @@ -162,7 +159,7 @@ struct ice_rss_hash_cfg ipv6_frag_tmplt = { 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_FLOW_HASH_ETH | ICE_HASH_UDP_IPV6, ICE_RSS_OUTER_HEADERS, 0 }; @@ -170,7 +167,7 @@ struct ice_rss_hash_cfg ipv6_udp_tmplt = { 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_FLOW_HASH_ETH | ICE_HASH_TCP_IPV6, ICE_RSS_OUTER_HEADERS, 0 }; @@ -178,7 +175,7 @@ struct ice_rss_hash_cfg ipv6_tcp_tmplt = { 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_FLOW_HASH_ETH | ICE_HASH_SCTP_IPV6, ICE_RSS_OUTER_HEADERS, 0 }; @@ -192,7 +189,7 @@ struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_tmplt = { struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_udp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, - ICE_HASH_UDP_IPV4 | ICE_IPV4_PROT, + ICE_HASH_UDP_IPV4, ICE_RSS_INNER_HEADERS_W_OUTER_IPV4, 0 }; @@ -200,7 +197,7 @@ struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_udp_tmplt = { struct ice_rss_hash_cfg outer_ipv4_inner_ipv4_tcp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, - ICE_HASH_TCP_IPV4 | ICE_IPV4_PROT, + ICE_HASH_TCP_IPV4, ICE_RSS_INNER_HEADERS_W_OUTER_IPV4, 0 }; @@ -215,7 +212,7 @@ struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_tmplt = { struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_udp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, - ICE_HASH_UDP_IPV4 | ICE_IPV4_PROT, + ICE_HASH_UDP_IPV4, ICE_RSS_INNER_HEADERS_W_OUTER_IPV6, 0 }; @@ -223,7 +220,7 @@ struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_udp_tmplt = { struct ice_rss_hash_cfg outer_ipv6_inner_ipv4_tcp_tmplt = { ICE_FLOW_SEG_HDR_IPV4 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, - ICE_HASH_TCP_IPV4 | ICE_IPV4_PROT, + ICE_HASH_TCP_IPV4, ICE_RSS_INNER_HEADERS_W_OUTER_IPV6, 0 }; @@ -238,7 +235,7 @@ struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_tmplt = { struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_udp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, - ICE_HASH_UDP_IPV6 | ICE_IPV6_PROT, + ICE_HASH_UDP_IPV6, ICE_RSS_INNER_HEADERS_W_OUTER_IPV4, 0 }; @@ -246,7 +243,7 @@ struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_udp_tmplt = { struct ice_rss_hash_cfg outer_ipv4_inner_ipv6_tcp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, - ICE_HASH_TCP_IPV6 | ICE_IPV6_PROT, + ICE_HASH_TCP_IPV6, ICE_RSS_INNER_HEADERS_W_OUTER_IPV4, 0 }; @@ -260,7 +257,7 @@ struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_tmplt = { struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_udp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_UDP, - ICE_HASH_UDP_IPV6 | ICE_IPV6_PROT, + ICE_HASH_UDP_IPV6, ICE_RSS_INNER_HEADERS_W_OUTER_IPV6, 0 }; @@ -268,7 +265,7 @@ struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_udp_tmplt = { struct ice_rss_hash_cfg outer_ipv6_inner_ipv6_tcp_tmplt = { ICE_FLOW_SEG_HDR_IPV6 | ICE_FLOW_SEG_HDR_IPV_OTHER | ICE_FLOW_SEG_HDR_TCP, - ICE_HASH_TCP_IPV6 | ICE_IPV6_PROT, + ICE_HASH_TCP_IPV6, ICE_RSS_INNER_HEADERS_W_OUTER_IPV6, 0 };