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 A1A6B44173; Thu, 6 Jun 2024 12:31:33 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 70C3242EB1; Thu, 6 Jun 2024 12:31:33 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2067.outbound.protection.outlook.com [40.107.93.67]) by mails.dpdk.org (Postfix) with ESMTP id 08A5742EB0 for ; Thu, 6 Jun 2024 12:31:32 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AvFykMCQCYJRQh8S6MmCZ5ExMkGLJMZsERPwo5sBlVzGppSV4mTkM2XV5WetGegu45qbH5TOAc5lM9LDYkKyODO/5Q8hkDuJQAylj0KD6C65hLJhs49E88zr4qy5QmClOQYJAUDY4EcKoezAF1/fmmsqc4h4EbgUUIe/u7y9VK29P7QF4EI4dcRqkXCSoR1fLfI3O+zXYg1qIDe7ygbtwiRGWdkszZ3wIRU9KoATu0wMe4IYpHe/95VJuzNxTWMtvypqONZOl9DlCU2z0zr2EGup2WKa5D1P6TK55qo1zLNKnWY1ZDnyv/NkiYY04DDlIgCzuL1d35pDpNPfIRsUXw== 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=q3VjfOF02/ByZNCH3qpDVNMZ9BY8bPRPFkjw3AkR0X0=; b=WFkARwly5zgGRPbXTWOp/plj7INDLF0YOK4M6wFBA56la2eKOrgSPV/aJ5NB8wspVsEQKUlyFd+1bV685/IqNDTNjYxzcTkrrR24cBoUaVga26KegDfAOIF0VVseP3Gj8XWVT36LWw4D9crzUvSP2J/OkZlL/rqAVJ5AIUqkmXK540DCT3Yl41/BRcUfugOmHpPbpzXTvJwFeyC5oDkGkQhy0YWvVS76Jc7CjSdkJf4/ck3VF9KHu3aQzgHGdSRrwHdPf3szrwtifc3pq0A7DcA3IOSsDOh/GpDMriOTVg/sm7AG7d6WU2yxfkcUkg2rBwii/HH4wux0PsJW7/GFaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.232) 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=q3VjfOF02/ByZNCH3qpDVNMZ9BY8bPRPFkjw3AkR0X0=; b=g6lTpLaeJep09opSKDFgNO76W3JtDrLCVdibLwOFGcdM1yGvIcM2fmXwOiFX8AMjCA5lBKZpnDVpACMh5DVHDOrTZFHKXTzZoQdlHMrbRRZPvXafUoIuopBwZWm+ha153soefcQpCDaph2GpnwIsxy9FfxkGTVTElWF9ZFVetvaEtxpnIrVVGLLegYRMqvtQmuu4gOQ1Bglyc1gduPKnmhfXKniicSy1eBnI7/xfYYFGypbrt8hzdCf8UVZOGzNXfDFCwzD5JR46xjvYe0xn5eDNx5vb46q3wd+tgjatBWPaUAX5J2mOQtAMl9N3w7Dv9A3kl9iAlXMrstifX9PF7Q== Received: from BYAPR03CA0019.namprd03.prod.outlook.com (2603:10b6:a02:a8::32) by SJ2PR12MB8955.namprd12.prod.outlook.com (2603:10b6:a03:542::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.34; Thu, 6 Jun 2024 10:31:28 +0000 Received: from SJ1PEPF00002313.namprd03.prod.outlook.com (2603:10b6:a02:a8:cafe::54) by BYAPR03CA0019.outlook.office365.com (2603:10b6:a02:a8::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.21 via Frontend Transport; Thu, 6 Jun 2024 10:31:28 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.232) 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.118.232 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.232; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.232) by SJ1PEPF00002313.mail.protection.outlook.com (10.167.242.167) 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 10:31:28 +0000 Received: from drhqmail203.nvidia.com (10.126.190.182) by mail.nvidia.com (10.127.129.5) 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 03:31:20 -0700 Received: from drhqmail203.nvidia.com (10.126.190.182) by drhqmail203.nvidia.com (10.126.190.182) 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 03:31:19 -0700 Received: from nvidia.com (10.127.8.14) by mail.nvidia.com (10.126.190.182) 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 03:31:17 -0700 From: Maayan Kashani To: CC: , , , Yevgeny Kliteynik , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v4 1/3] net/mlx5/hws: split the root rule creation and destruction Date: Thu, 6 Jun 2024 13:31:01 +0300 Message-ID: <20240606103103.173152-2-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240606103103.173152-1-mkashani@nvidia.com> References: <20240603104357.9437-1-mkashani@nvidia.com> <20240606103103.173152-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: SJ1PEPF00002313:EE_|SJ2PR12MB8955:EE_ X-MS-Office365-Filtering-Correlation-Id: 7e8eae5c-317d-46af-e431-08dc8613d2f6 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?g+KuuB3MvmG7VvCLm6hNta07QYiD9rWJQrL47sFuiD+YsK0fdibaRyXat2xX?= =?us-ascii?Q?QbXPJUwRTe07fEyKWgJU0xN5sXT6yhCgKuBCIJOC2MwswLEOIojYIX7DkTMx?= =?us-ascii?Q?qDb+7Htxn4NcIaxuKbYN1gFdYA5X2RtOSjDCfT15ZjZeVT6rh4fdSLGyuo4g?= =?us-ascii?Q?tAN5ahkNIg2R9MHjtn7W+WqKo9XUbZNc17YgsTiyRFyb4wv6C7IdeAeVYc/V?= =?us-ascii?Q?FLkttJwgx4e7x0n5fTmrOelCWcYSXMCjH5iS1XWYJ1YgjE9e1qFgPzKdp3aZ?= =?us-ascii?Q?mFE3WWzoRnswwOl2D/lhSRmqjkRVxcUrVYc2TzPkPtogQ0+u8WK5ZEjRlAlp?= =?us-ascii?Q?RSRi3xDkdgGqPcM3kc4tVasXaMmYjbNE+SREDNt3hQA65yqTmBnUcEfl0kYi?= =?us-ascii?Q?JoAQS9z75t1rNt6DBoKAkjZqGl2QNmjMpIz/FxzoXu12EK4B4gYS6N+tWqc1?= =?us-ascii?Q?yQwveaCj0xTjVO2YERXXduK+5ASpG2RrazV0qrGYOGeG5nT0HCid/x0zlUWv?= =?us-ascii?Q?JeP1sRzzYErFpvJRp1jpOSYGhZPGng01N1Hp+CK1m5ZN7A8I8Ef7d6sVCr96?= =?us-ascii?Q?HJw8UGcgwfQtyiNHWrAM5Ger8BP/HSC2JPQW0Kh/2QBaW97vgfbp4sVYTADM?= =?us-ascii?Q?4gu04oVzuq9P0NoctZk3eV6ubcffO/HmhUx4nVnKdo04IE7G0kncLfNjy9jt?= =?us-ascii?Q?d39ipAA3Y4M3+4ePlYlC5EH6+SdhXXEzEsv1KE+u0GIUBLrfirmrog2UNuNR?= =?us-ascii?Q?quS3L5Czui0zlW7rV6vQziOVw/9YzXStdYUcQIppoO9phJspea4WdL+E1853?= =?us-ascii?Q?yhk+MzJCJqKgTWYgzmJBcKuWzBz4zII0GAInqAIv0xG+QrKq5j2mTIZEDnTt?= =?us-ascii?Q?ZdIZ8g3nfOgg4xxsQX84utXXpxVe8rF8UhOAutmDFBj71yo4MJLa9R3Zbg9w?= =?us-ascii?Q?y/PXZLp7m1UnDXGSxTI0SEjmeOYoqsdKD5pQ6LK7D7Po5w1yYxvy/eWbOkFY?= =?us-ascii?Q?xq7yUDvZeO9ecYiR6Gd51k0OkLblaD1SUPyHYcismoIaXce8ZS/ufbs//VSO?= =?us-ascii?Q?EXiLmXrcMo+2Nmtms+i2MVL0e3fXqnAuR8mMRTk9dlh0Ajr4543Txtn8Mwxl?= =?us-ascii?Q?l4WNhJBnVoCjd1S09fzfO8g7PUIkjWGiBYgs6tJY0SMniyLWVN2c/CwtBoqH?= =?us-ascii?Q?+YCO9llrV4VeP80xzcP6TMjiQUJLZdz5+ZQesYwHp5W1TtXp0B8nTm23NndE?= =?us-ascii?Q?jo0IqBcosvIl2m0iYZ/YXmdhqc7PZAgXb5Qcw7QvxgLnOAquA3GxrZ6n8rRT?= =?us-ascii?Q?J6PwaLKI3Yw/8X9oscJqXeY8Uw+qt7t9kAXnURviMoRFSWonP0iWsZiyrxCp?= =?us-ascii?Q?J380CFgz0p9+SmzOA0Ob2DlD7ZD1ojRJ5hI278MMfTfw2qBLOg=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.118.232; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge1.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 10:31:28.1507 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7e8eae5c-317d-46af-e431-08dc8613d2f6 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.118.232]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: SJ1PEPF00002313.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8955 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: Yevgeny Kliteynik Split the root rule creation/destruction into two stages: - do the job (create/destroy rule) - generate completion Completion generation is required for the usual HWS API. The create/destroy functions that don't generate completion are exposed in header file and will be used by the coming backward-compatible API. Signed-off-by: Yevgeny Kliteynik Acked-by: Dariusz Sosnowski --- drivers/net/mlx5/hws/mlx5dr_rule.c | 49 +++++++++++++++++++++--------- drivers/net/mlx5/hws/mlx5dr_rule.h | 7 +++++ 2 files changed, 42 insertions(+), 14 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c b/drivers/net/mlx5/hws/mlx5dr_rule.c index 171a0bff38..550f00a4c1 100644 --- a/drivers/net/mlx5/hws/mlx5dr_rule.c +++ b/drivers/net/mlx5/hws/mlx5dr_rule.c @@ -680,15 +680,12 @@ static int mlx5dr_rule_destroy_hws(struct mlx5dr_rule *rule, return 0; } -static int mlx5dr_rule_create_root(struct mlx5dr_rule *rule, - struct mlx5dr_rule_attr *rule_attr, - const struct rte_flow_item items[], - uint8_t at_idx, - struct mlx5dr_rule_action rule_actions[]) +int mlx5dr_rule_create_root_no_comp(struct mlx5dr_rule *rule, + const struct rte_flow_item items[], + uint8_t num_actions, + struct mlx5dr_rule_action rule_actions[]) { struct mlx5dv_flow_matcher *dv_matcher = rule->matcher->dv_matcher; - uint8_t num_actions = rule->matcher->at[at_idx].num_actions; - struct mlx5dr_context *ctx = rule->matcher->tbl->ctx; struct mlx5dv_flow_match_parameters *value; struct mlx5_flow_attr flow_attr = {0}; struct mlx5dv_flow_action_attr *attr; @@ -750,9 +747,6 @@ static int mlx5dr_rule_create_root(struct mlx5dr_rule *rule, num_actions, attr); - mlx5dr_rule_gen_comp(&ctx->send_queue[rule_attr->queue_id], rule, !rule->flow, - rule_attr->user_data, MLX5DR_RULE_STATUS_CREATED); - simple_free(value); simple_free(attr); @@ -766,14 +760,41 @@ static int mlx5dr_rule_create_root(struct mlx5dr_rule *rule, return rte_errno; } +static int mlx5dr_rule_create_root(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *rule_attr, + const struct rte_flow_item items[], + uint8_t num_actions, + struct mlx5dr_rule_action rule_actions[]) +{ + struct mlx5dr_context *ctx = rule->matcher->tbl->ctx; + int ret; + + ret = mlx5dr_rule_create_root_no_comp(rule, items, + num_actions, rule_actions); + if (ret) + return rte_errno; + + mlx5dr_rule_gen_comp(&ctx->send_queue[rule_attr->queue_id], rule, !rule->flow, + rule_attr->user_data, MLX5DR_RULE_STATUS_CREATED); + + return 0; +} + +int mlx5dr_rule_destroy_root_no_comp(struct mlx5dr_rule *rule) +{ + if (rule->flow) + return ibv_destroy_flow(rule->flow); + + return 0; +} + static int mlx5dr_rule_destroy_root(struct mlx5dr_rule *rule, struct mlx5dr_rule_attr *attr) { struct mlx5dr_context *ctx = rule->matcher->tbl->ctx; - int err = 0; + int err; - if (rule->flow) - err = ibv_destroy_flow(rule->flow); + err = mlx5dr_rule_destroy_root_no_comp(rule); mlx5dr_rule_gen_comp(&ctx->send_queue[attr->queue_id], rule, err, attr->user_data, MLX5DR_RULE_STATUS_DELETED); @@ -970,7 +991,7 @@ int mlx5dr_rule_create(struct mlx5dr_matcher *matcher, ret = mlx5dr_rule_create_root(rule_handle, attr, items, - at_idx, + matcher->at[at_idx].num_actions, rule_actions); else ret = mlx5dr_rule_create_hws(rule_handle, diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.h b/drivers/net/mlx5/hws/mlx5dr_rule.h index dffaec1c0f..bc542eb543 100644 --- a/drivers/net/mlx5/hws/mlx5dr_rule.h +++ b/drivers/net/mlx5/hws/mlx5dr_rule.h @@ -74,4 +74,11 @@ int mlx5dr_rule_move_hws_add(struct mlx5dr_rule *rule, bool mlx5dr_rule_move_in_progress(struct mlx5dr_rule *rule); +int mlx5dr_rule_create_root_no_comp(struct mlx5dr_rule *rule, + const struct rte_flow_item items[], + uint8_t num_actions, + struct mlx5dr_rule_action rule_actions[]); + +int mlx5dr_rule_destroy_root_no_comp(struct mlx5dr_rule *rule); + #endif /* MLX5DR_RULE_H_ */ -- 2.21.0