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 DA1EA4416A; Thu, 6 Jun 2024 14:34:49 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id ED0AB410FB; Thu, 6 Jun 2024 14:34:05 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2070.outbound.protection.outlook.com [40.107.243.70]) by mails.dpdk.org (Postfix) with ESMTP id 38D6342D89 for ; Thu, 6 Jun 2024 14:34:04 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n5qcBpdq86qaQ6hVISmnhSf20wrY9nBb8nmUev3cVbyb2tUD4wyFXVgA+B/jtYuoav/piBt5Qv1Ca2Bqz5uZiSlecf+p0TLiow3l9VPyNcmKiT8SGaveF4BivxEypqKytvzHU+525tWdBbjnYSB7IbpLljgLTB89mLLH13xxQjzJITTCBF+EwkpDQwCRQO3XmCjvG906oOWGoaUvgqIpQXSRlUC3NJuUerGsjuEBf3zPHSo8PxlxuAzDQZfXazlOt4SXXvqMDXccxE3SQTV3nFAGVXTlgsDWPtia6FvYzALnDkP58sxsU0eU1aQTpPsiG1f5mlrwPqxEP9oJB+zcwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=DW9q7QYe7/uoLzl81qzrYA9uvH11SadI/HrZgGtBCFk=; b=AZc1L9yh/an0BcvomV61UfpjnftTok+XeyMf1l26PeEX94e9RUshk2BuL3V3EYQYDaLJbnBwIKs1QymGXJuMY1CPVufn+8k1ilpoIFIV/i+nMC8ESQl5U2BA6XdpPtuVk9NSRJaIWyVaA1PaXAbiu3DuxW+VcTIgW9lgbPHkfq2zkFtip+XrrcPonqd66k/MO4KPhVsUnE4N66viSwJnaOSCWt0XDM4REkR1RsLhhwSy+nHq9rY+oOzIhOqd3TN00EbprjrXtJ3xLlM67hlyr8QYqEQDlARimXCrZt2wwCHsO5ivyLQ5cUmw7WmIrAsME+O0+BPtVPVAIP63DTZ/hg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DW9q7QYe7/uoLzl81qzrYA9uvH11SadI/HrZgGtBCFk=; b=Fv07DkxDuxlooBzd35mT1WpuTdQtfgTW547RsT1Uapbeo9zonAjKAqo++SVG2oN/pJQvFM/uKsBBQS7WxAbrNsQbhHaU4+mtaqImKGtzDUJG6+I+GBCgww24XHyn71b+IjxnIYUhKXDZ19tLfynLnvko4i6N1RgXWGV3vsdIqOYn9an3SEt1sJX9XeOk1BwzxWu1AfValwLcYnfaQiSI9S5+gTuIAcyOwYQSGniNflR5jBJbsEU7yFsYQ76M9nbR/AquLtF5EnmLKKXbiAFh1V5GVZ4f/To+KWJfwLt+9Y8BCRml+14u2QMHoi82Q5sCaAIUtrTI16TQTKOFB7YR4Q== Received: from MWH0EPF000554DF.namprd21.prod.outlook.com (2603:10b6:30f:fff2:0:1:0:4) by PH7PR12MB6980.namprd12.prod.outlook.com (2603:10b6:510:1ba::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.33; Thu, 6 Jun 2024 12:33:58 +0000 Received: from SJ1PEPF00002319.namprd03.prod.outlook.com (2a01:111:f403:c902::2) by MWH0EPF000554DF.outlook.office365.com (2603:1036:d20::b) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.11 via Frontend Transport; Thu, 6 Jun 2024 12:33:57 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.160) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.160 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.160) by SJ1PEPF00002319.mail.protection.outlook.com (10.167.242.229) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.15 via Frontend Transport; Thu, 6 Jun 2024 12:33:57 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) by mail.nvidia.com (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 6 Jun 2024 05:33:45 -0700 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 6 Jun 2024 05:33:44 -0700 Received: from nvidia.com (10.127.8.14) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4 via Frontend Transport; Thu, 6 Jun 2024 05:33:42 -0700 From: Maayan Kashani To: CC: , , , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v5 10/11] net/mlx5: use non const max number for ASO actions Date: Thu, 6 Jun 2024 15:32:55 +0300 Message-ID: <20240606123256.177947-10-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240606123256.177947-1-mkashani@nvidia.com> References: <20240606102317.172553-1-mkashani@nvidia.com> <20240606123256.177947-1-mkashani@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PEPF00002319:EE_|PH7PR12MB6980:EE_ X-MS-Office365-Filtering-Correlation-Id: fbdb6b13-330d-40fc-6b1a-08dc8624ef6b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|1800799015|36860700004|376005; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?Gw8ZxsrVTjYmVqmXMmjEmQJxQQbmSS1YRZycGhetY5Wq0aONl1yh/xsxeF1X?= =?us-ascii?Q?sLkXO4E13qsyd8MqZ4udVRP0PRYYsfWIpemok2riSDd9cLN0dIn6ONK4ozRg?= =?us-ascii?Q?FREITo6ui568xO4UULsAg/0OFYNIqDLWKMFr2tyAKmWgn90xcm4hjRXak16B?= =?us-ascii?Q?jjKXCorf9MXylgY8rgd8GY/a8qmWbvx1xTq0uKAqw4O+5OhGpng3KOxLhMNG?= =?us-ascii?Q?+QNMF0xrN1+uniLTmdSLdYIjf6iuLXlabkPa2ctASeEfnYj+27EF+BEZ5FJe?= =?us-ascii?Q?8UKDFIcbJ/9BA/EI8P/ABURcJylzFEku55Fo5hnSxrdb6sYc/N8dkCKaJjq4?= =?us-ascii?Q?Bkj0Mz2k7od36D1eWpnN/Qs8xFxImNJWIHyE7Cq3GgyD9Hvq8nztHajJbnm2?= =?us-ascii?Q?KCQuDS8ekZj9ve4AU5uQMGKw/4GHWzhSLe9uLZTZhkg1ph0o8IhC5ixban5Z?= =?us-ascii?Q?GMxuoF4eHsQloGfEqyz7mm9DqTzrSZvGqifub4pBi1LLGW0gcsmFKtcW7fd7?= =?us-ascii?Q?/zq/8vVyLBIFkWiRCrNt08L8NIoitrZ0AiEVmdJb2rsYJ1zjjP43hbQnaG4E?= =?us-ascii?Q?0Vuwci1sXVCaZxNdZ/kbO+3+G1oFLTILfsPMYWU5yOYWfzM+2pJfjOJ8rv8C?= =?us-ascii?Q?kBE79yFdwHJ61GAbHYfh3Oi+12mfuHQ4f9nZY0gunkvSHDSHQUr95pib2zDB?= =?us-ascii?Q?jJfFufk2PHFLEvkCSC8omGmyzZSD8J6weJx3SDIqJ4rDbQans8kz0fH3vjZY?= =?us-ascii?Q?qAEF9QGoMFeNyjTcwSfbutu7EL0WPBKJgidVXKblB6CT9d5HK0hTIqFMaN4n?= =?us-ascii?Q?n3SwNE7T1frjPjEA+xW9t/LfmZkO2bIqVFXnTyVvwpBs8zrQbkuH6dokI0dS?= =?us-ascii?Q?CYlcBwl1u5NHC7Rl1Wm+WgM/BW7J64dupcXDPK1gQM/r+fAFaY5e9IfazyBU?= =?us-ascii?Q?FgAGqq9LFLWhF93NGkpAZBOnssK/FzuSwVXhWHT9Z0hYQ23o4ZBOzumyjpIi?= =?us-ascii?Q?WS7arYHTYwxZlRXlyIkHDr39qHu9v3geMNGE78ZuJDl24SHDsZFp5SaAEPHJ?= =?us-ascii?Q?mNc0Dq14QS/Qg7pF22aIy7a65AOtk01IkShPRAp4T8nUw7rFMVs7XV61M5BC?= =?us-ascii?Q?vac7xQZjb+cjJhXsqLO5LNvHt+M8m2mFvGLRpO7tnRBmzi1knN/DxdY5ryHc?= =?us-ascii?Q?0/HDYCcevyqD3+XBIMXvKjugdgexHUn8V/dM/Cna49ePDCYctgSyhJLuMde3?= =?us-ascii?Q?7IaUbNide2Dq8CKa802WwgybQNKgs3RMi24T3y/hyPTvulAdewy4CBDHNLhY?= =?us-ascii?Q?/unrSMkKmHnGTf5TXvWLtvv95MGngQM+67BgsVlRSfxPgvUwQ0f5X6ugFhM8?= =?us-ascii?Q?8sHMkd7nBl0jfQXZF8/WZUWZEb9PtbItxc2vaXFpqEMuQ06j8A=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE; SFS:(13230031)(82310400017)(1800799015)(36860700004)(376005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Jun 2024 12:33:57.3350 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fbdb6b13-330d-40fc-6b1a-08dc8624ef6b X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002319.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB6980 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 For ASO max allocations in non-template mode, Read FW capabilities instead of using consts. Signed-off-by: Maayan Kashani Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/mlx5.h | 17 ++++++++++++----- drivers/net/mlx5/mlx5_flow_hw.c | 13 +++++++++---- drivers/net/mlx5/mlx5_flow_meter.c | 25 +++++++++++++++++++++---- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h index 5789cc6ef1..159ea10018 100644 --- a/drivers/net/mlx5/mlx5.h +++ b/drivers/net/mlx5/mlx5.h @@ -812,12 +812,18 @@ struct mlx5_dev_shared_port { /* Only yellow color valid. */ #define MLX5_MTR_POLICY_MODE_OY 3 +/* Max number of meters. */ +#define MLX5_MTR_MAX(priv) (mlx5_flow_mtr_max_get(priv)) /* Max number of meters allocated in non template mode. */ -#define MLX5_MTR_NT_MAX (1 << 23) -/* Max number of connection tracking allocated in non template mode */ -#define MLX5_CT_NT_MAX (1 << 23) -/* Max number of counters allocated in non template mode */ -#define MLX5_CNT_MAX (1 << 23) +#define MLX5_MTR_NT_MAX(priv) (MLX5_MTR_MAX(priv) >> 1) +/* Max number of connection tracking. */ +#define MLX5_CT_MAX(priv) (1 << (priv)->sh->cdev->config.hca_attr.log_max_conn_track_offload) +/* Max number of connection tracking allocated in non template mode. */ +#define MLX5_CT_NT_MAX(priv) (MLX5_CT_MAX(priv) >> 1) +/* Max number of counters. */ +#define MLX5_CNT_MAX(priv) ((priv)->sh->hws_max_nb_counters) +/* Max number of counters allocated in non template mode. */ +#define MLX5_CNT_NT_MAX(priv) (MLX5_CNT_MAX(priv) >> 1) enum mlx5_meter_domain { MLX5_MTR_DOMAIN_INGRESS, @@ -2457,6 +2463,7 @@ mlx5_flow_meter_hierarchy_get_final_policy(struct rte_eth_dev *dev, int mlx5_flow_meter_flush(struct rte_eth_dev *dev, struct rte_mtr_error *error); void mlx5_flow_meter_rxq_flush(struct rte_eth_dev *dev); +uint32_t mlx5_flow_mtr_max_get(struct mlx5_priv *priv); /* mlx5_os.c */ diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index f326ca0a21..b4b0de417a 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -13114,6 +13114,7 @@ static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev, bool actions_end = false; struct mlx5_priv *priv = dev->data->dev_private; int ret; + uint obj_num; for (; !actions_end; actions++) { switch ((int)actions->type) { @@ -13122,7 +13123,8 @@ static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev, if (!priv->hws_age_req) { /* If no counters were previously allocated. */ if (!priv->hws_cpool) { - ret = mlx5_hws_cnt_pool_create(dev, MLX5_CNT_MAX, + obj_num = MLX5_CNT_NT_MAX(priv); + ret = mlx5_hws_cnt_pool_create(dev, obj_num, priv->nb_queue, NULL); if (ret) goto err; @@ -13140,7 +13142,8 @@ static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_COUNT: /* If no counters were previously allocated. */ if (!priv->hws_cpool) { - ret = mlx5_hws_cnt_pool_create(dev, MLX5_CNT_MAX, + obj_num = MLX5_CNT_NT_MAX(priv); + ret = mlx5_hws_cnt_pool_create(dev, obj_num, priv->nb_queue, NULL); if (ret) goto err; @@ -13149,7 +13152,8 @@ static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_CONNTRACK: /* If no CT were previously allocated. */ if (!priv->hws_ctpool) { - ret = mlx5_flow_ct_init(dev, MLX5_CT_NT_MAX, priv->nb_queue); + obj_num = MLX5_CT_NT_MAX(priv); + ret = mlx5_flow_ct_init(dev, obj_num, priv->nb_queue); if (ret) goto err; } @@ -13157,7 +13161,8 @@ static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev, case RTE_FLOW_ACTION_TYPE_METER_MARK: /* If no meters were previously allocated. */ if (!priv->hws_mpool) { - ret = mlx5_flow_meter_init(dev, MLX5_MTR_NT_MAX, 0, 0, + obj_num = MLX5_MTR_NT_MAX(priv); + ret = mlx5_flow_meter_init(dev, obj_num, 0, 0, priv->nb_queue); if (ret) goto err; diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c index da3289b218..19d8607070 100644 --- a/drivers/net/mlx5/mlx5_flow_meter.c +++ b/drivers/net/mlx5/mlx5_flow_meter.c @@ -704,6 +704,26 @@ mlx5_flow_meter_param_fill(struct mlx5_flow_meter_profile *fmp, return 0; } +/** + * Callback to get MTR maximum objects number. + * + * @param[in] priv + * Pointer to Ethernet device. + * + * @return + * Max number of meters. + */ +uint32_t +mlx5_flow_mtr_max_get(struct mlx5_priv *priv) +{ + struct mlx5_hca_qos_attr *qattr = &priv->sh->cdev->config.hca_attr.qos; + + /* Max number of meters. */ + return ((priv->sh->meter_aso_en) ? + 1 << (qattr->log_max_num_meter_aso + 1) : + qattr->log_max_flow_meter); +} + /** * Callback to get MTR capabilities. * @@ -730,14 +750,11 @@ mlx5_flow_mtr_cap_get(struct rte_eth_dev *dev, RTE_MTR_ERROR_TYPE_UNSPECIFIED, NULL, "Meter is not supported"); memset(cap, 0, sizeof(*cap)); + cap->n_max = mlx5_flow_mtr_max_get(priv); if (priv->sh->meter_aso_en) { - /* 2 meters per one ASO cache line. */ - cap->n_max = 1 << (qattr->log_max_num_meter_aso + 1); cap->srtcm_rfc2697_packet_mode_supported = 1; cap->trtcm_rfc2698_packet_mode_supported = 1; cap->trtcm_rfc4115_packet_mode_supported = 1; - } else { - cap->n_max = 1 << qattr->log_max_flow_meter; } cap->srtcm_rfc2697_byte_mode_supported = 1; cap->trtcm_rfc2698_byte_mode_supported = 1; -- 2.21.0