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 CD95441F67; Mon, 10 Jun 2024 10:51:32 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 21F864067A; Mon, 10 Jun 2024 10:51:26 +0200 (CEST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2046.outbound.protection.outlook.com [40.107.236.46]) by mails.dpdk.org (Postfix) with ESMTP id BDB6140677 for ; Mon, 10 Jun 2024 10:51:24 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NLUhIu8W8vsIYPltLdBk+X529entknmS1kIAD8XuAaQ06sWSEulhuTeIznVVh181T4L6TCsbmEqh3LLXtiHEo8/K3wLUo8uJoeKj7Tj8L2a/2Hv6o3WH+JmllcvaGiO7Egs7yHvo1eI39C44XKtPOKXT33d0YoiojJ1+gW9gnW2sKdD5NqNxKBbu9+/H/v9zZsKv7DmEXIX8xexg012rHUbiIpmcp2mD6Vq739K6J+MUn064axK1G+kMxUf3UkajzKm+a9mI1HDxhKf6EgEWVNsLHDupRFTM4m1QZ12/2exh9ML0C7GMSh6Ht2NVZllpMQ/ytwlACWShYc49R4wPVQ== 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=oVMwTLeplqYq7pUPENhreqTfVHtPLv/q6QLEJjKCDN0=; b=YYXKItUEgOGP18Ks/pPm9Mjo6WcAy2+5StsRyVpSWLEuYEMR6yae4BQ7rjuC3hH10bYOs3AaUG1RH5o2HWUiSQTR5wyWM2FJoTZzgqhHoZ9wbOZcCxnbFKUZmmm3Eca+fUGVfApKZH48DDZBuvzjMXi6xDFwX95XLIoPh8CAYDc9I04H3wc2ayK6L0l5dQt2pfggkBWXvAMuMPZ2spPE4Sja7Uy/4CjfUN38ZWXPYu99Y7BlhqIFJQ4Ef62lJvyBj7uMlubf5Ad2ySzacP+JrJFdq7R0D7HDppSfgZfgRGgRPUR+qkuIrXqXmVV0LByJjj7ZK0jtvGp15pw2jYf15A== 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=oVMwTLeplqYq7pUPENhreqTfVHtPLv/q6QLEJjKCDN0=; b=awBTqzUNDQtEy80vTQ+eTq/dyjMBlA1jGu2uj6JU3g2maH0NCR/flTLbKE490//2jtcG7cTK3gwaSKJgfcqkEwcpkdic+CFTUB962W26mR7V2OYENKqs6b2TNuoPukalWWkcLzA+l4JNZVY2lIoZLKQuMqHZkckTjONuCyOZ7hPgbrVZIwx6q0nHjP6Q8Fk1xr4zmJqUM19+n7hgspcu4W4LHFaQpGxXD6HKDi/jvjTIfZVuzsEdDpdOyU2Vs8VGHOhTxPOzV1RjcZG2nDG88j58UzXaTfbUCLeWnGTZttDtyq39Sp9MdIhPznhTvOJlS8TZZUINWBPFWzkUfT9vrA== Received: from MW4PR04CA0299.namprd04.prod.outlook.com (2603:10b6:303:89::34) by DS0PR12MB6656.namprd12.prod.outlook.com (2603:10b6:8:d2::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Mon, 10 Jun 2024 08:51:22 +0000 Received: from CO1PEPF000044FC.namprd21.prod.outlook.com (2603:10b6:303:89:cafe::12) by MW4PR04CA0299.outlook.office365.com (2603:10b6:303:89::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.24 via Frontend Transport; Mon, 10 Jun 2024 08:51:22 +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 CO1PEPF000044FC.mail.protection.outlook.com (10.167.241.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7677.0 via Frontend Transport; Mon, 10 Jun 2024 08:51:21 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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; Mon, 10 Jun 2024 01:51:09 -0700 Received: from rnnvmail201.nvidia.com (10.129.68.8) by rnnvmail203.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; Mon, 10 Jun 2024 01:51:08 -0700 Received: from nvidia.com (10.127.8.14) by mail.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4 via Frontend Transport; Mon, 10 Jun 2024 01:51:06 -0700 From: Maayan Kashani To: CC: , , , Gregory Etelson , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v5 4/6] net/mlx5: update ASO resources in non-template setup Date: Mon, 10 Jun 2024 11:50:37 +0300 Message-ID: <20240610085039.146356-4-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240610085039.146356-1-mkashani@nvidia.com> References: <20240606101214.172057-1-mkashani@nvidia.com> <20240610085039.146356-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: CO1PEPF000044FC:EE_|DS0PR12MB6656:EE_ X-MS-Office365-Filtering-Correlation-Id: 561ff735-43c3-4efc-9d0c-08dc892a8095 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|376005|36860700004|82310400017|1800799015; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?MQtKjrsj2YTLZEmq/LfXGnMyi9X/us29eXoVSGXl+4Dy/1JZXhK2mgoFCwjq?= =?us-ascii?Q?+ObFxoGJzMFzVBqZn8MTW8itzy4oondfvq+jdzwTVg3VOzs44MhQRWtgeU6L?= =?us-ascii?Q?n3lSbKFylstuaF8D9tdA9JF0rs9wYvwgwQrpUagYLbloF5MaaMWTBiOw74Kh?= =?us-ascii?Q?rDA4PX3/cADVnXrtG/vY2Glc1Off27pFgKelfzHobrbknsYc8Gzu+vU1UA83?= =?us-ascii?Q?br9vqJjdVFR9hCt/sZ32mgogg7YJhLrdeOv7DKHQKhLcWGowP/HTDJKHTOD6?= =?us-ascii?Q?ayy+NMiENik/IxTcTvS/es/wdjwFQrhgXDMVvm45ede4wOHzNFK0abz4tucx?= =?us-ascii?Q?TsRP0xn1UIcmVVsPuI2jdH9Ulbp41PwCbNlsiXtRtQv0HjBRvXXBqw95/cIM?= =?us-ascii?Q?NItt+E0aTcJa6J9jpTSeOIofLW6ee7ny8s8snqwTcKHeAhj0L8fIsn+j5RHf?= =?us-ascii?Q?mLYABUjKmDrj45PmPTOLpPtTKWaA6bloZaClJPArsZXBP5GmqbpubNUnjHl7?= =?us-ascii?Q?94912io7N8fGBCC7VEhiKHeXKs06EFjpN9vk8Q6x59aGb762BJqpQ0oj+EKU?= =?us-ascii?Q?h9n5wDj44Yq24ODk0jI2IQRB0k//x68Pj1pH65tXfvkPu9xtMAKvgl7q282H?= =?us-ascii?Q?VQfvRYZm8FCa0QU1jTcZdf7g5DioJ5F3fVEgBuJaDv+u9c0BeMau37p2tRt8?= =?us-ascii?Q?igV3Sc9l3hrgcKmbqAfTXpS/Ri+yA8yH6QJ254vC2U3YS40pe0bmPKrI5O5r?= =?us-ascii?Q?c4l7UbsMaizK+QlOFBbPICeF5kT9Xj/xopdtbsPZvjBlSy+Y/6PWHUh6dCJX?= =?us-ascii?Q?o178izXrA/uiVzhukk6UlfDtroWPrndvThXq2MVYPQow5MFuIMBtn8V4OoFg?= =?us-ascii?Q?WET2YQvuobwbEwzt+R5pYQmxiEAQ92rMSS0FEnwv+oknuT7is3Co2ZJU+PCM?= =?us-ascii?Q?RbTOAW6XaCV2t2852CtepJs0TgLG2NnXZ6vveIaxRw6ZdiI4mc7PeoQCj4bI?= =?us-ascii?Q?Ai2mDFwWG7zuxj9pPoYz+RnUPdyqCXiBpR7DfH80Yj/NSEH88dtFjyZ7nHj8?= =?us-ascii?Q?Uut/soCxPywZcUgvfd5Mm8dEH/8sU+nokPeYDNyxfjNnTQxlzfjVl/JR+ZoZ?= =?us-ascii?Q?NPqs/y6GwpqS/+DGwIHSe5hj80dMrGT118qDiX8nG32IiMmswMS/1aNT1IxW?= =?us-ascii?Q?vTg7FtXRXj5C9oyZYNdekzGVYHLfrGcaMI4Q+qJ0j11x/5A34dxxnL6SLydj?= =?us-ascii?Q?XYfVS5lmAASWAp84LZsp+o8FFsuIWdzOJRvEcaXSNFEtX01kIoyL8/YWojYs?= =?us-ascii?Q?Cw3cjWccnKHIjUtakTXg0GKn4zMNFOLBPDSBvdJiBDKhx8bUxiQBnSJsaaQ8?= =?us-ascii?Q?BIgcxDFFgDaFo4Nvoaliu/hOwK0Znmt0RN2xGyJ53xW0mn3Hhw=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)(376005)(36860700004)(82310400017)(1800799015); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jun 2024 08:51:21.7750 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 561ff735-43c3-4efc-9d0c-08dc892a8095 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: CO1PEPF000044FC.namprd21.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB6656 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 From: Gregory Etelson Non-template PMD implementation allocates ASO flow actions resources on-demand. Current PMD implementation iterated over actions array in search for actions that required ASO resources allocations. The patch replaced the iteration with actions flags bitmap queries. Signed-off-by: Gregory Etelson Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/mlx5_flow_hw.c | 102 ++++++++++++++------------------ 1 file changed, 45 insertions(+), 57 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index a98e078b498..f464ee6f19a 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -13336,79 +13336,67 @@ static int flow_hw_register_matcher(struct rte_eth_dev *dev, NULL, "fail to register matcher"); } -static int flow_hw_ensure_action_pools_allocated(struct rte_eth_dev *dev, - const struct rte_flow_action actions[], - struct rte_flow_error *error) +static int +flow_hw_allocate_actions(struct rte_eth_dev *dev, + uint64_t action_flags, + struct rte_flow_error *error) { - 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) { - case RTE_FLOW_ACTION_TYPE_AGE: - /* If no age objects were previously allocated. */ - if (!priv->hws_age_req) { - /* If no counters were previously allocated. */ - if (!priv->hws_cpool) { - obj_num = MLX5_CNT_NT_MAX(priv); - ret = mlx5_hws_cnt_pool_create(dev, obj_num, - priv->nb_queue, NULL); - if (ret) - goto err; - } - if (priv->hws_cpool) { - /* Allocate same number of counters. */ - ret = mlx5_hws_age_pool_init(dev, - priv->hws_cpool->cfg.request_num, - priv->nb_queue, false); - if (ret) - goto err; - } - } - break; - case RTE_FLOW_ACTION_TYPE_COUNT: + if (action_flags & MLX5_FLOW_ACTION_AGE) { + /* If no age objects were previously allocated. */ + if (!priv->hws_age_req) { /* If no counters were previously allocated. */ if (!priv->hws_cpool) { obj_num = MLX5_CNT_NT_MAX(priv); ret = mlx5_hws_cnt_pool_create(dev, obj_num, - priv->nb_queue, NULL); - if (ret) - goto err; - } - break; - case RTE_FLOW_ACTION_TYPE_CONNTRACK: - /* If no CT were previously allocated. */ - if (!priv->hws_ctpool) { - obj_num = MLX5_CT_NT_MAX(priv); - ret = mlx5_flow_ct_init(dev, obj_num, priv->nb_queue); - if (ret) - goto err; - } - break; - case RTE_FLOW_ACTION_TYPE_METER_MARK: - /* If no meters were previously allocated. */ - if (!priv->hws_mpool) { - obj_num = MLX5_MTR_NT_MAX(priv); - ret = mlx5_flow_meter_init(dev, obj_num, 0, 0, - priv->nb_queue); + priv->nb_queue, NULL); if (ret) goto err; } - break; - case RTE_FLOW_ACTION_TYPE_END: - actions_end = true; - break; - default: - break; + /* Allocate same number of counters. */ + ret = mlx5_hws_age_pool_init(dev, priv->hws_cpool->cfg.request_num, + priv->nb_queue, false); + if (ret) + goto err; + } + } + if (action_flags & MLX5_FLOW_ACTION_COUNT) { + /* If no counters were previously allocated. */ + if (!priv->hws_cpool) { + obj_num = MLX5_CNT_NT_MAX(priv); + ret = mlx5_hws_cnt_pool_create(dev, obj_num, + priv->nb_queue, NULL); + if (ret) + goto err; + } + } + if (action_flags & MLX5_FLOW_ACTION_CT) { + /* If no CT were previously allocated. */ + if (!priv->hws_ctpool) { + obj_num = MLX5_CT_NT_MAX(priv); + ret = mlx5_flow_ct_init(dev, obj_num, priv->nb_queue); + if (ret) + goto err; + } + } + if (action_flags & MLX5_FLOW_ACTION_METER) { + /* If no meters were previously allocated. */ + if (!priv->hws_mpool) { + obj_num = MLX5_MTR_NT_MAX(priv); + ret = mlx5_flow_meter_init(dev, obj_num, 0, 0, + priv->nb_queue); + if (ret) + goto err; } } return 0; err: return rte_flow_error_set(error, ret, - RTE_FLOW_ERROR_TYPE_UNSPECIFIED, - NULL, "fail to allocate actions"); + RTE_FLOW_ERROR_TYPE_UNSPECIFIED, + NULL, "fail to allocate actions"); } /* TODO: remove dev if not used */ @@ -13526,7 +13514,7 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type, * The output actions bit mask instead of * looping on the actions array twice. */ - ret = flow_hw_ensure_action_pools_allocated(dev, actions, error); + ret = flow_hw_allocate_actions(dev, action_flags, error); if (ret) goto error; -- 2.21.0