From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from dpdk.org (dpdk.org [92.243.14.124])
	by inbox.dpdk.org (Postfix) with ESMTP id D5229A04C7;
	Tue, 15 Sep 2020 08:29:42 +0200 (CEST)
Received: from [92.243.14.124] (localhost [127.0.0.1])
	by dpdk.org (Postfix) with ESMTP id D47411C138;
	Tue, 15 Sep 2020 08:28:27 +0200 (CEST)
Received: from mga09.intel.com (mga09.intel.com [134.134.136.24])
 by dpdk.org (Postfix) with ESMTP id 5EE091C12A
 for <dev@dpdk.org>; Tue, 15 Sep 2020 08:28:26 +0200 (CEST)
IronPort-SDR: BJ1Kpn3XToaB/1wtmgEBu+U3iZEiU79H3XrYkCL+v+woh34itdUZuwEXmsUf8Mzapus00pAo3C
 TLJyQLHwXydw==
X-IronPort-AV: E=McAfee;i="6000,8403,9744"; a="160141057"
X-IronPort-AV: E=Sophos;i="5.76,428,1592895600"; d="scan'208";a="160141057"
X-Amp-Result: SKIPPED(no attachment in message)
X-Amp-File-Uploaded: False
Received: from orsmga007.jf.intel.com ([10.7.209.58])
 by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 14 Sep 2020 23:28:26 -0700
IronPort-SDR: VSgFagZOauVVEVXuRVp9B6chPvuR1BtA2Mr2LVkQvYSuvcIXRkDML8a1qS37lsNonRybVoVSBu
 C5Kz3208vkCQ==
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.76,428,1592895600"; d="scan'208";a="345700498"
Received: from dpdk-junfengguo-v3.sh.intel.com ([10.67.119.146])
 by orsmga007.jf.intel.com with ESMTP; 14 Sep 2020 23:28:24 -0700
From: Junfeng Guo <junfeng.guo@intel.com>
To: qi.z.zhang@intel.com,
	jingjing.wu@intel.com,
	beilei.xing@intel.com
Cc: dev@dpdk.org,
	junfeng.guo@intel.com
Date: Tue, 15 Sep 2020 14:26:09 +0800
Message-Id: <20200915062609.3786061-3-junfeng.guo@intel.com>
X-Mailer: git-send-email 2.25.1
In-Reply-To: <20200915062609.3786061-1-junfeng.guo@intel.com>
References: <20200804123920.485253-1-junfeng.guo@intel.com>
 <20200915062609.3786061-1-junfeng.guo@intel.com>
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Subject: [dpdk-dev] [PATCH v3 2/2] net/iavf: support RSS for IPv6 prefix
	64bit
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

RSS for IPv6 prefix 64bit fields are supported in this patch, so that
we can use prefix instead of full IPv6 address for RSS. The prefix
here only includes the first 64 bits of both SRC and DST IPv6 address.

Signed-off-by: Junfeng Guo <junfeng.guo@intel.com>
---
 drivers/net/iavf/iavf_hash.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/net/iavf/iavf_hash.c b/drivers/net/iavf/iavf_hash.c
index d8a4dc8bf..c270daf5f 100644
--- a/drivers/net/iavf/iavf_hash.c
+++ b/drivers/net/iavf/iavf_hash.c
@@ -580,7 +580,28 @@ iavf_refine_proto_hdrs_l234(struct virtchnl_proto_hdrs *proto_hdrs,
 			}
 			break;
 		case VIRTCHNL_PROTO_HDR_IPV6:
+			if (rss_type & RTE_ETH_RSS_L3_PRE64) {
+				REFINE_PROTO_FLD(DEL, IPV6_SRC);
+				REFINE_PROTO_FLD(DEL, IPV6_DST);
+				REFINE_PROTO_FLD(ADD, IPV6_PREFIX64_SRC);
+				REFINE_PROTO_FLD(ADD, IPV6_PREFIX64_DST);
+			}
 			if (rss_type &
+			    (ETH_RSS_IPV6_PRE64 |
+			     ETH_RSS_IPV6_PRE64_UDP |
+			     ETH_RSS_IPV6_PRE64_TCP |
+			     ETH_RSS_IPV6_PRE64_SCTP)) {
+				if (rss_type & ETH_RSS_L3_SRC_ONLY)
+					REFINE_PROTO_FLD(DEL,
+							 IPV6_PREFIX64_DST);
+				else if (rss_type & ETH_RSS_L3_DST_ONLY)
+					REFINE_PROTO_FLD(DEL,
+							 IPV6_PREFIX64_SRC);
+				else if (rss_type &
+					 (ETH_RSS_L4_SRC_ONLY |
+					  ETH_RSS_L4_DST_ONLY))
+					hdr->field_selector = 0;
+			} else if (rss_type &
 			    (ETH_RSS_IPV6 |
 			     ETH_RSS_NONFRAG_IPV6_UDP |
 			     ETH_RSS_NONFRAG_IPV6_TCP |
-- 
2.25.1