From patchwork Fri Jan 24 03:46:02 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kiran Kumar Kokkilagadda X-Patchwork-Id: 65095 X-Patchwork-Delegate: jerinj@marvell.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 62DD3A052F; Fri, 24 Jan 2020 04:46:40 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 94B2D2BCE; Fri, 24 Jan 2020 04:46:39 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 3C27A2A62 for ; Fri, 24 Jan 2020 04:46:38 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id 00O3kVVE025778 for ; Thu, 23 Jan 2020 19:46:37 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0818; bh=i6sMjyvzLnhwHw39bKm/5eeJkAyMql0VL7/7dUALvjI=; b=YTiw8Ihm0lyqxa6PL+ci6Ozfw5zRYkcGCu4RAKuHbtz7QCLXvmI4x42ccbgkag2PV1mG yh/3n/si7k6tHiz/duXAGzdMBvnGaXLUOg8+QBkEFJ2jXP5ZP03aG8zpwDBMx7GtYy2W pirl7a2YyMSrNug4WiYXqRcul4GA7qCRHmedGmzboVGqu2YCqvDpC18Dsfy1bEMYiiLg o7LTL7msHumI53NiLcjOE6Eg1B2vHkJEltHE93F0UKrWKstEop8lFgVYJZ5whS8p1n9t T8vWTxVGaBprmjRPf/FCMbJuN8kTOHSxCzev82BudHNMRHStsjTkNk5cLdmPCLr/L+uj 5w== Received: from sc-exch03.marvell.com ([199.233.58.183]) by mx0a-0016f401.pphosted.com with ESMTP id 2xq4x4mjjn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 23 Jan 2020 19:46:37 -0800 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 23 Jan 2020 19:46:35 -0800 Received: from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Thu, 23 Jan 2020 19:46:35 -0800 Received: from localhost.localdomain (unknown [10.28.34.15]) by maili.marvell.com (Postfix) with ESMTP id 56D363F703F; Thu, 23 Jan 2020 19:46:34 -0800 (PST) From: To: Jerin Jacob , Nithin Dabilpuram , Vamsi Attunuru , "Kiran Kumar K" CC: Date: Fri, 24 Jan 2020 09:16:02 +0530 Message-ID: <20200124034602.4660-1-kirankumark@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200122034609.19100-1-kirankumark@marvell.com> References: <20200122034609.19100-1-kirankumark@marvell.com> MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572 definitions=2020-01-23_13:2020-01-23, 2020-01-23 signatures=0 Subject: [dpdk-dev] [PATCH v2] net/octeontx2: extend RSS supported offload types 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" From: Kiran Kumar K Extend RSS offload types for octeontx2. Add support to select L3 SRC, L3 DST, L4 SRC and L4 DST for RSS calculation. Add support to select L3 SRC or DST only, L4 SRC or DST only for RSS calculation. With this requirement there will be following combinations, IPV[4,6]_SRC_ONLY, IPV[4,6]_DST_ONLY, [TCP,UDP,SCTP]_SRC_ONLY, [TCP,UDP,SCTP]_DST_ONLY. So, instead of creating a bit for each combination, we are using upper 4 bits (31:28) in the flow_key_cfg to represent the SRC, DST selection. 31 => L3_SRC, 30 => L3_DST, 29 => L4_SRC, 28 => L4_DST. These won't be part of flow_cfg, so that we don't need to change the existing ABI. Signed-off-by: Kiran Kumar K Acked-by: Jerin Jacob --- V2 Changes: * Updated supported offloads drivers/common/octeontx2/otx2_mbox.h | 6 +++++- drivers/net/octeontx2/otx2_ethdev.h | 6 +++++- drivers/net/octeontx2/otx2_rss.c | 12 ++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) -- 2.17.1 diff --git a/drivers/common/octeontx2/otx2_mbox.h b/drivers/common/octeontx2/otx2_mbox.h index e0e4e2f63..4972b8a6e 100644 --- a/drivers/common/octeontx2/otx2_mbox.h +++ b/drivers/common/octeontx2/otx2_mbox.h @@ -918,7 +918,11 @@ struct nix_rss_flowkey_cfg { #define FLOW_KEY_TYPE_INNR_UDP BIT(15) #define FLOW_KEY_TYPE_INNR_SCTP BIT(16) #define FLOW_KEY_TYPE_INNR_ETH_DMAC BIT(17) - uint8_t group; /* RSS context or group */ +#define FLOW_KEY_TYPE_L4_DST BIT(28) +#define FLOW_KEY_TYPE_L4_SRC BIT(29) +#define FLOW_KEY_TYPE_L3_DST BIT(30) +#define FLOW_KEY_TYPE_L3_SRC BIT(31) + uint8_t __otx2_io group; /* RSS context or group */ }; struct nix_rss_flowkey_cfg_rsp { diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h index 3f3fdecc4..c075b8d1a 100644 --- a/drivers/net/octeontx2/otx2_ethdev.h +++ b/drivers/net/octeontx2/otx2_ethdev.h @@ -113,9 +113,13 @@ #define CQ_TIMER_THRESH_DEFAULT 0xAULL /* ~1usec i.e (0xA * 100nsec) */ #define CQ_TIMER_THRESH_MAX 255 +#define NIX_RSS_L3_L4_SRC_DST (ETH_RSS_L3_SRC_ONLY | ETH_RSS_L3_DST_ONLY \ + | ETH_RSS_L4_SRC_ONLY | ETH_RSS_L4_DST_ONLY) + #define NIX_RSS_OFFLOAD (ETH_RSS_PORT | ETH_RSS_IP | ETH_RSS_UDP |\ ETH_RSS_TCP | ETH_RSS_SCTP | \ - ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD) + ETH_RSS_TUNNEL | ETH_RSS_L2_PAYLOAD | \ + NIX_RSS_L3_L4_SRC_DST) #define NIX_TX_OFFLOAD_CAPA ( \ DEV_TX_OFFLOAD_MBUF_FAST_FREE | \ diff --git a/drivers/net/octeontx2/otx2_rss.c b/drivers/net/octeontx2/otx2_rss.c index bc7b64387..7a8c8f3de 100644 --- a/drivers/net/octeontx2/otx2_rss.c +++ b/drivers/net/octeontx2/otx2_rss.c @@ -210,6 +210,18 @@ otx2_rss_ethdev_to_nix(struct otx2_eth_dev *dev, uint64_t ethdev_rss, dev->rss_info.nix_rss = ethdev_rss; + if (ethdev_rss & ETH_RSS_L3_SRC_ONLY) + flowkey_cfg |= FLOW_KEY_TYPE_L3_SRC; + + if (ethdev_rss & ETH_RSS_L3_DST_ONLY) + flowkey_cfg |= FLOW_KEY_TYPE_L3_DST; + + if (ethdev_rss & ETH_RSS_L4_SRC_ONLY) + flowkey_cfg |= FLOW_KEY_TYPE_L4_SRC; + + if (ethdev_rss & ETH_RSS_L4_DST_ONLY) + flowkey_cfg |= FLOW_KEY_TYPE_L4_DST; + if (ethdev_rss & RSS_IPV4_ENABLE) flowkey_cfg |= flow_key_type[rss_level][RSS_IPV4_INDEX];