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 75B064588C; Tue, 3 Sep 2024 03:42:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8824D40E3E; Tue, 3 Sep 2024 03:42:19 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2118.outbound.protection.outlook.com [40.107.100.118]) by mails.dpdk.org (Postfix) with ESMTP id F233E40E25 for ; Tue, 3 Sep 2024 03:42:14 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Yh/G6Qjg0X//vXCduSeXb5749GkPm0KIzjazKWlVKDgZgXGlDtQdbztuHX3VTmFwQAtiCAsFbGdpTeOXKHK/XFBl3CZdVYn7ikJ6SDNb9iCNrq/XVgSePL2FNSB8PIdAJTQOqZOj/qvf7k+T5OmpN/yZT5vJJCqpV7U1UKr3gTq7/bxfOAQlJ6N8S1oHDmfDtkw7pCoUfYDG8DaJUI1Mwz1IbSSLETtIdXpv9q8MGAqg3yyU3Q03ltpg6+sLp0xnD3WWuqVrD79eMTFg4HFkisiave4FyZHIx4a6V/IXKk278xnC4rfaRKCSPBxB6WkDb8rWJnSiAAIW6p2eXhD1Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wFDsXNWRQBWc82O8gh3MqrAgNx0mmfhjqQImP25tZ+s=; b=Uvq+DMIuvIQQZdA/B3+OmjpmcsAPvUIcKm5W1uv+Zjjsjmh4YYGfbPpjobpg75MoFmOi4T+8Q3CjEgsUOetyuleqgm4JIxmPMJgCzMn5jpW2BPSh2WG32N5VO6mSe3Ara77YOBZVQIPlcUrG+LklGepiaccWWMTkUfwwyPnuSLIT27Wd/BnBrbtuGUZg0pd4CfeNKFqgEfk1jZ+O0GORiMlrU0GI2/lLE/WTsMO3121XsWg+f898/zyZ46XOydqH2LxuRhZCSbAKpV4HzbVwZUGTCJGs0B+EFG5ccdhZbqKGBHxJu2unZ/G45ZriXmvDrSdCLFK0Mw5hfPjoAmZ1ww== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wFDsXNWRQBWc82O8gh3MqrAgNx0mmfhjqQImP25tZ+s=; b=YvJ30vHoeynCiiFolxPUn9lbmJXsCUplAT/iyFlYVNUVitXyA1Ooflyr5Ns6Xya/+4PGouy68QNQr5vgJ7FQ6VntOtem3/Hma9FoYpa96lx0fs6g6d0L/cL+bYFZEa8ecGzVoN9ZwlC54t8zt1VT/gNLW4cJJL52kiXhpV2CLvY= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by DM8PR13MB5093.namprd13.prod.outlook.com (2603:10b6:8:20::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7918.24; Tue, 3 Sep 2024 01:42:13 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::b900:5f05:766f:833%4]) with mapi id 15.20.7918.020; Tue, 3 Sep 2024 01:42:13 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Chaoyong He , Long Wu Subject: [PATCH 4/4] net/nfp: support different flow steering rules limit Date: Tue, 3 Sep 2024 09:41:45 +0800 Message-Id: <20240903014145.2635710-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20240903014145.2635710-1-chaoyong.he@corigine.com> References: <20240903014145.2635710-1-chaoyong.he@corigine.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: SJ0PR05CA0176.namprd05.prod.outlook.com (2603:10b6:a03:339::31) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|DM8PR13MB5093:EE_ X-MS-Office365-Filtering-Correlation-Id: ee8cd283-9af7-49d3-d386-08dccbb9a242 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?7CngLohxc8qUFFMwxU19PqDO8O90BsWIozBWDnRZtih6G4ZQemH2qO8LWw5Q?= =?us-ascii?Q?KijepQxYYBM4ERJV9RjasV1eGsWp/tZCDlOpLxEmElxX/oYLeM7/GwZXvLkp?= =?us-ascii?Q?2dtL0Mqnb73nay3iOuNWuyOzz7H8FyQMHMg+3e/1jOgnO6R5H6CkeGvhJThy?= =?us-ascii?Q?5sI0KuyVhCS/63apuvrczCQaIOPtZ+2s/GotIKsP6cXaJtb2XvUP9vpYzHzH?= =?us-ascii?Q?5gBmseeRFhMUbZ0rP9fwdgDP0d5bafznuXfPi2950/D637bq05yzTPEZuYAS?= =?us-ascii?Q?ok8+PMFn5P66Ndk0t/iaMFUAtFwgN0y2CfBkNnnDXjndEg1S6+pKdH/A2zPf?= =?us-ascii?Q?weRMtR8RURXzeEkJOEesrY2yIhdmOSpSbmeOzNTx3wtPPPrX5KIA9BWHkHd3?= =?us-ascii?Q?3ffHlaxK20vwmtQGXUhWyuKN2MZcTjLca8iCMkyFllkta6BR3k5tcMmsoLxo?= =?us-ascii?Q?isr9j/VQiXvnGPyeRFJ6IB22UxWDlAQLBugdnDayg++yoZEVm0Np9qHsqDG3?= =?us-ascii?Q?TFJ02p1yZa6yo4TU1uaDWQZ+o7A3utnc5N79Ixl8eI/pXvilv0doGe8jNH2r?= =?us-ascii?Q?IxzyNWiiLw/Eq1AOLdvlwyc4UF8p7mqXT/GzQj/VTXV4F5MZ/CcujnJoit9X?= =?us-ascii?Q?ntC2M2Av784QcyHOeA4Pc6T41tQ4rS5QtVCESqGvJUEPFZwmuoBiFl3WgurX?= =?us-ascii?Q?M4fRv+2rh9qFj6JX2fn/Nu21KWR88b37pQaTUbDLMXONyRWlYfiqMCpolp9N?= =?us-ascii?Q?qSzddJjXWq3gdVOnBjY1bJZfLt4znzwnYbtE/t+OG2F5+XTkCHLWGwY0ypgF?= =?us-ascii?Q?UNyiUkfOtzTEbS3fioo8z2j1NlCaKGKU1vqXTwj3Y26S1SOc3WNZdxTKQ7Fi?= =?us-ascii?Q?1jasJbumeZf5Z6bi1IkLR4ouh73oOHdZVJ7ck2pZ31suO2/EwItHWm99Au6U?= =?us-ascii?Q?2AzubKwizESiuXeC2wLFGOU9pMyem96CoE4ZVMlHFvcDpbRJDSHSyOjZGf2U?= =?us-ascii?Q?DyqHJf3H1HyojBP9WPWDal97cOz2PFz34V2JFdb8VCOGwcKw+H5CHvUlRVug?= =?us-ascii?Q?7ipm6hnflfNOBsx01Mk+td0hbikQTtTY/XFMWkRxrJkv5ff2SZMfW49aj+GO?= =?us-ascii?Q?zKh+UTiFNc2rPpPrY8iM8trfEQ6R8E4vNxT/oxnjecbA2GzSQd1xJScalG32?= =?us-ascii?Q?BYAf9EkZugDGpYCxV932XxSSWJ4Zu4N4PVJS14awWpMdusyjeXoW6axs4dEZ?= =?us-ascii?Q?0SMhvGCh5za9iHZm0bCx4zSqetiuxHw7S5kLWIma4MhSrNFIVejVS9i24TJU?= =?us-ascii?Q?dtNWgD/X1q/zRGmXXPRt7SigJeN9LGivdQZT6o/ZhMbfip7qTRs0+ZqD7QwU?= =?us-ascii?Q?74JZ2Jbbk2hFsKhLAlTN+W4Fn8G35vOAhNvmGeBoM0W1OU6eGQ=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(52116014)(376014)(38350700014); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?M7MfDoa6L/x7HSBTfdmIC1kpX7WotqhDCsSNelbkUGrcS+46po7mtnSRUt2z?= =?us-ascii?Q?UoY5zM1mEkbxNdVNG9N6mnTcWg1ElQYYRGtHGrGGTHfFX0lVi/zrNoNAFq8a?= =?us-ascii?Q?tMPDzSw3o9AJFhvY1Ar27irlx2iBfhii/yyju6ZrCnPqePqU1qOL4/62M8XL?= =?us-ascii?Q?QJ/GH1ySB/KjALctduEdDuUlDWwq0HnK1DgH3sdOBnVy5UECU/ERB0gjL6pd?= =?us-ascii?Q?YWvxftbgxFVNpbjQhYJmhAAMJrEV1s/LGJR4scDBSCgNewAPlCaMh8RChKRr?= =?us-ascii?Q?jCj6W0J+KB0plAuEwgYy5yXiEkNrg0kWfZ0gJ+G7jPzjrk/dsKmUEYnmNrPb?= =?us-ascii?Q?97Do1avkOZyGPT7qP80eO88pIVKWg1FJryd15hsGBNGFBJpMEO2hgeQeORML?= =?us-ascii?Q?lOLlfmEF6SPjfjkZuqN9XuUxRbc5PDI3J6wqyOc42YSS1JcC5Gnzyyeahwy1?= =?us-ascii?Q?Oc+uKr78wiMO67o17i8cvTr3K46mItrd98DdssLO/RT0j9Ko+SQvye0NpI+p?= =?us-ascii?Q?imG/+QshMbLgTJs1CQtLpKR67gieZRF0iTDyEaY6vZ+/hZWFL/1tvXsGKfWr?= =?us-ascii?Q?xIU4xbj1kCHxqyPmX6hIRuFHZC3pSaZU7P4LVEYASgmZslkpw6zkrmDCVKbg?= =?us-ascii?Q?uZ7ynPyXRxr7KbM0lUpbbEv+aZ2BRbk/nR5ebK/es2nmKZpQE28AHZDNabpZ?= =?us-ascii?Q?gmICanJ/e8GbCdsX6UdOkWGHJhH1+5AsWUPeKb//oyRXdL11EZcr+rxewzql?= =?us-ascii?Q?LmS0DydkkJBAW/2ZlkFgm1TJiQ7vpxJ0vWGGhGv4JW1e8S7Z3RgQdpeayRMT?= =?us-ascii?Q?LwkxpvMB/VIxNgwbBjMiTlTfo9IKFo5lM6Jvb5UfBIa1IBgSnEquUVTWowPW?= =?us-ascii?Q?JnmyX+6YXvQfqiutmFpo3IakDeZ9uutxbm+Z0V9TYJYVsiCauJ3d9AXSDs/e?= =?us-ascii?Q?0ruOsOWNjShVvQhuiPnD5thojuSp3Yk6ChJ7Q85L3cRtgkw/6VZ9Tc63w4Z2?= =?us-ascii?Q?uTbqf+7aPriWzH7YtXpA28ansJdr4iTnuT6xcMZSXx02aN7sisdiSpUm1kZj?= =?us-ascii?Q?ngkpu9KXoRDYfC+chzTnIeo1JVSihpMgK9eO+HHk7F6V8vKUSR10ozlT+WAD?= =?us-ascii?Q?3IBvDnNZ+DDswe3HjfRWH5xSGSsdR96IuAKKNqWXpyJs3N57+VtvdEZraBD8?= =?us-ascii?Q?ghMyr5/KpK+0z0KngbGb+0rX1Uu0eWT94Goa4Xx50+dwWdkeE/q2swMIH2mu?= =?us-ascii?Q?hW9ghoy1Q/5j2HJCmJGA3GYAU/B7JwZVSqSy+T2V1vPN6dRiBDfUGyfcWgVP?= =?us-ascii?Q?selKd0o1NimdZQcDpOtKWgrNGIhqhSVmdJrBhzGtl22ytPo6W8Ad2ubUl2aT?= =?us-ascii?Q?JjzVAmjr0+f4izWvg297bKYXpuPeE2XQG6esnnNDM7SiC3w0vXlj/megRerD?= =?us-ascii?Q?Gc5bbjxkSu88CuoEk7Jryl2325xBPPIk7K2otqOlJbu3wWtYhwI3FjxOmaly?= =?us-ascii?Q?dxyUJsfIvevlcyjD+Ki5EWjllFnHGM7HikBhR0dBbRbGFTrw8xoYBppN+tuv?= =?us-ascii?Q?c7Z/0E1Kpn30E3TrWlWqG9u8e84pw5VXdaPmIeFeCoNqR+iEc9rnaJDUrnp9?= =?us-ascii?Q?Gg=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee8cd283-9af7-49d3-d386-08dccbb9a242 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2024 01:42:13.4163 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rt4oLShvoTNACeXZdiMK1LDUGSeenVh9kOaHd72P79okqXNeRjFw0k1JrALskLioyTi9yxNL3rDy6w/4U3VAw+G2RU0k0axTVSduxTYzzmM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM8PR13MB5093 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 Get the flow steering rules limit from the firmware rather than the hard coded. Signed-off-by: Chaoyong He Reviewed-by: Long Wu --- drivers/common/nfp/nfp_common_ctrl.h | 3 +- drivers/net/nfp/nfp_net_common.h | 4 +-- drivers/net/nfp/nfp_net_flow.c | 51 ++++++++++++++++++++++++---- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/drivers/common/nfp/nfp_common_ctrl.h b/drivers/common/nfp/nfp_common_ctrl.h index 711577dc76..16a18348c6 100644 --- a/drivers/common/nfp/nfp_common_ctrl.h +++ b/drivers/common/nfp/nfp_common_ctrl.h @@ -219,8 +219,7 @@ struct nfp_net_fw_ver { #define NFP_NET_CFG_CAP_WORD1 0x00a4 /* 16B reserved for future use (0x00b0 - 0x00c0). */ -#define NFP_NET_CFG_RESERVED 0x00b0 -#define NFP_NET_CFG_RESERVED_SZ 0x0010 +#define NFP_NET_CFG_MAX_FS_CAP 0x00b8 /* * RSS configuration (0x0100 - 0x01ac): diff --git a/drivers/net/nfp/nfp_net_common.h b/drivers/net/nfp/nfp_net_common.h index 2c54815fc9..be5705636f 100644 --- a/drivers/net/nfp/nfp_net_common.h +++ b/drivers/net/nfp/nfp_net_common.h @@ -186,13 +186,13 @@ struct nfp_net_flow_count { }; #define NFP_NET_HASH_REDUNDANCE (1.2) -#define NFP_NET_FLOW_HASH_TBALE_SIZE ((NFP_NET_FLOW_LIMIT) * (NFP_NET_HASH_REDUNDANCE)) struct nfp_net_priv { uint32_t hash_seed; /**< Hash seed for hash tables in this structure. */ struct rte_hash *flow_table; /**< Hash table to store flow rules. */ struct nfp_net_flow_count flow_count; /**< Flow count in hash table */ - bool flow_position[NFP_NET_FLOW_LIMIT]; /**< Flow position array */ + uint32_t flow_limit; /**< Flow limit of hash table */ + bool *flow_position; /**< Flow position array */ }; struct nfp_app_fw_nic { diff --git a/drivers/net/nfp/nfp_net_flow.c b/drivers/net/nfp/nfp_net_flow.c index 2c7801ed41..5db4712193 100644 --- a/drivers/net/nfp/nfp_net_flow.c +++ b/drivers/net/nfp/nfp_net_flow.c @@ -88,9 +88,12 @@ nfp_net_flow_position_acquire(struct nfp_net_priv *priv, struct rte_flow *nfp_flow) { uint32_t i; + uint32_t limit; + + limit = priv->flow_limit; if (priority != 0) { - i = NFP_NET_FLOW_LIMIT - priority - 1; + i = limit - priority - 1; if (priv->flow_position[i]) { PMD_DRV_LOG(ERR, "There is already a flow rule in this place."); @@ -102,19 +105,19 @@ nfp_net_flow_position_acquire(struct nfp_net_priv *priv, return 0; } - for (i = 0; i < NFP_NET_FLOW_LIMIT; i++) { + for (i = 0; i < limit; i++) { if (!priv->flow_position[i]) { priv->flow_position[i] = true; break; } } - if (i == NFP_NET_FLOW_LIMIT) { + if (i == limit) { PMD_DRV_LOG(ERR, "The limited flow number is reach."); return -ERANGE; } - nfp_flow->position = NFP_NET_FLOW_LIMIT - i - 1; + nfp_flow->position = limit - i - 1; return 0; } @@ -1053,11 +1056,24 @@ nfp_net_flow_ops_get(struct rte_eth_dev *dev, return 0; } +static uint32_t +nfp_net_fs_max_entry_get(struct nfp_hw *hw) +{ + uint32_t cnt; + + cnt = nn_cfg_readl(hw, NFP_NET_CFG_MAX_FS_CAP); + if (cnt != 0) + return cnt; + + return NFP_NET_FLOW_LIMIT; +} + int nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, uint16_t port) { int ret = 0; + struct nfp_hw *hw; struct nfp_net_priv *priv; char flow_name[RTE_HASH_NAMESIZE]; struct nfp_app_fw_nic *app_fw_nic; @@ -1067,7 +1083,6 @@ nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, struct rte_hash_parameters flow_hash_params = { .name = flow_name, - .entries = NFP_NET_FLOW_HASH_TBALE_SIZE, .hash_func = rte_jhash, .socket_id = rte_socket_id(), .key_len = sizeof(uint32_t), @@ -1085,17 +1100,37 @@ nfp_net_flow_priv_init(struct nfp_pf_dev *pf_dev, app_fw_nic->ports[port]->priv = priv; priv->hash_seed = (uint32_t)rte_rand(); + /* Flow limit */ + hw = &app_fw_nic->ports[port]->super; + priv->flow_limit = nfp_net_fs_max_entry_get(hw); + if (priv->flow_limit == 0) { + PMD_INIT_LOG(ERR, "NFP app nic flow limit not right."); + ret = -EINVAL; + goto free_priv; + } + + /* Flow position array */ + priv->flow_position = rte_zmalloc(NULL, sizeof(bool) * priv->flow_limit, 0); + if (priv->flow_position == NULL) { + PMD_INIT_LOG(ERR, "NFP app nic flow position creation failed."); + ret = -ENOMEM; + goto free_priv; + } + /* Flow table */ flow_hash_params.hash_func_init_val = priv->hash_seed; + flow_hash_params.entries = priv->flow_limit * NFP_NET_HASH_REDUNDANCE; priv->flow_table = rte_hash_create(&flow_hash_params); if (priv->flow_table == NULL) { PMD_INIT_LOG(ERR, "flow hash table creation failed"); ret = -ENOMEM; - goto free_priv; + goto free_flow_position; } return 0; +free_flow_position: + rte_free(priv->flow_position); free_priv: rte_free(priv); exit: @@ -1114,8 +1149,10 @@ nfp_net_flow_priv_uninit(struct nfp_pf_dev *pf_dev, app_fw_nic = NFP_PRIV_TO_APP_FW_NIC(pf_dev->app_fw_priv); priv = app_fw_nic->ports[port]->priv; - if (priv != NULL) + if (priv != NULL) { rte_hash_free(priv->flow_table); + rte_free(priv->flow_position); + } rte_free(priv); } -- 2.39.1