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 60EF544145; Mon, 3 Jun 2024 12:44:23 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 26DBE42E0F; Mon, 3 Jun 2024 12:44:21 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2042.outbound.protection.outlook.com [40.107.223.42]) by mails.dpdk.org (Postfix) with ESMTP id 08A4942E0A for ; Mon, 3 Jun 2024 12:44:20 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j3nArI93H2v8BAPsN70Kbk3/vtCUzFtdQDoEKIx2fc77Lnk1Fmqj91W8DDY/KPczLnzSo0scEOI7q0n0mzdYgipPjHDfgf+bFc2wU2ldpkyjlizIGa8J4hl8KLAkwO6UoyYY1zv/SfBQ8ueuqa/LNMTRFr2kEEjw9REoQVmUwBMcKRbPJWE3p95kJtyZUE762g6VgLWaQQ00gQtyHCaJF1c43AegrSKKyZXxH1thdNDAc/v3TLTVrdkIEEfWS8afNKoJE1aFKOjOJLII1f0Z9NaZ+JZq33zCzIIykuTsNJvP6dv4N3sAx8iimToMR08btnAI4sV8DboogFcLaO/o6A== 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=Z0Av9lDQRi3xHQmT3+0BYYOqOwaI9sC4fQdl+US/kqc=; b=AEZkKtXuIS7MdN40/f4zo5R7IIz6IS6JJP0I6RYWljweHEoZXtizSwNWNBeYUnhwHzaXLWkhH7fMnrXp9Kj77tjhmd+1bgWwoulrPxBH/ZbLJ0YZRUD1WxJmnJ3l2QdTAAql2lwxhqx8XetUMSht8GRmoCFFX/e4xln0V3rr2CWnUYvydI4lbh7XpssiykI2co2PR9khYQjzhM5rLeqSv7ZucwxT2HeYKszeFpIZSKeor0UOcbQx2BXMulUjNq0gkS3MXt+i/FhY7hkP14kDUu0LAWqIaGDEF7Sv25Z4S9Tgxi+wr1KrItGuJD+Anf9Nzb7ZfmLHqVM4LTFDVUgkAA== 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=Z0Av9lDQRi3xHQmT3+0BYYOqOwaI9sC4fQdl+US/kqc=; b=Ewng3q24M3cUTdQOlGJ/wa6I1BIrRfyh7x42V4/Jt+I9sRrCGfozz5ESk2UZi6pACbo7XvrHvFzmraCENVhCmhx2KYxzmcwLbXSLbHkKwcjSYjAYqKXAnh9eqVgyPAwX6VRlYRRhJiSAUycp7rTx44ZmtaIcd7rmh/si6VE+fB3ny1DCXw6DYrYE8KFOhgFyJHR5H/5s3/L5i2PGeOibIfa9vO2v23FCigcCNXHvuHhpLVDUCeKtdfGlVwYA85E3mkOnFqnu/EOnjkctXFSBWq+jJzr3Zf7URWb8U0V/F3VCqDVtdd94a6CTYL8VXZ+44zgobQTCxOhhovlKeV6RHg== Received: from CY5PR18CA0041.namprd18.prod.outlook.com (2603:10b6:930:13::19) by SN7PR12MB6932.namprd12.prod.outlook.com (2603:10b6:806:260::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.27; Mon, 3 Jun 2024 10:44:17 +0000 Received: from CY4PEPF0000EE36.namprd05.prod.outlook.com (2603:10b6:930:13:cafe::67) by CY5PR18CA0041.outlook.office365.com (2603:10b6:930:13::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.30 via Frontend Transport; Mon, 3 Jun 2024 10:44:17 +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 CY4PEPF0000EE36.mail.protection.outlook.com (10.167.242.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.15 via Frontend Transport; Mon, 3 Jun 2024 10:44:16 +0000 Received: from rnnvmail204.nvidia.com (10.129.68.6) 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, 3 Jun 2024 03:44:04 -0700 Received: from rnnvmail204.nvidia.com (10.129.68.6) by rnnvmail204.nvidia.com (10.129.68.6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Mon, 3 Jun 2024 03:44:03 -0700 Received: from nvidia.com (10.127.8.14) by mail.nvidia.com (10.129.68.6) 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, 3 Jun 2024 03:44:00 -0700 From: Maayan Kashani To: CC: , , , Yevgeny Kliteynik , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v3 1/3] net/mlx5/hws: split the root rule creation and destruction Date: Mon, 3 Jun 2024 13:43:54 +0300 Message-ID: <20240603104357.9437-1-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240602102601.196750-1-mkashani@nvidia.com> References: <20240602102601.196750-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: CY4PEPF0000EE36:EE_|SN7PR12MB6932:EE_ X-MS-Office365-Filtering-Correlation-Id: 755aec28-1bc7-409c-83f4-08dc83ba1e0b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|1800799015|376005|82310400017|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?baFzQNTIGI565zKFw6y9XdNJDL23P5+tG4kq32ikmboHUjL0CMWUjYX2psXJ?= =?us-ascii?Q?WkHrbqB1k72y01OStY5x5U+k21JBmtiZYEIP3AkR/7eNTdUKUMSqjvX45wxU?= =?us-ascii?Q?PXMnMkubJb5fEyjmls4g2EIrObxE36JDkbPBETsSHTQXLcQis3yOafTbzvcw?= =?us-ascii?Q?rfjHGcIZBZsaMmslG3FsaRbZDM2Yy5V+S32pEhZ8OCw8y2q/biPI1LR8TQr7?= =?us-ascii?Q?SDfEZuJ3nMJgS2c2UstgmXylQMSl69gj11Xi4oK1R/f1rBHykxO6KWWr7+dd?= =?us-ascii?Q?Cub9EHlOXF2zFhjhmN4V/zrGNXSaQ+Wd2hXY0pb3N+GsPKH8jrMTSLk1kK3J?= =?us-ascii?Q?EV1W7qNuccpee8+CMcT/h5d4wihuf68j3QhCtqRX8LKNpaZqplxz/cnY+LsP?= =?us-ascii?Q?48FGI7xKXfuhHDIaEiKAr2+QQi/TrwTH9plZKWLpDWQdcYNat8gUd1ATiNET?= =?us-ascii?Q?9qMBY431Cb1t/flqf4L2/jaQpr4Q7NqK1/zsSoS8DvbUq7fxZRCnApsgAZUj?= =?us-ascii?Q?OcL+B01ifN76VxREhbOJXd5AXrWpT/nUw09G8aCMilGM7d1OUw1SI2Itu6P9?= =?us-ascii?Q?E1h1vNKmy9eBq0EDASWPmnQp6E0O6Aghoz0JTSVODUFy/ek7+FVBwgSF39We?= =?us-ascii?Q?03Mpz/vK/PIgEgY09FclutwPm+VtsTVv3WywDY79OY370PtNAe2jzzedCh7A?= =?us-ascii?Q?fR3Ajlyd5vpNvLJ0xF2kMO5aDl8Q1wIEqj4gmA9bUa7XW8+YccWPx9w57mh4?= =?us-ascii?Q?Ul0ft6sxJ46YlsVxSrGa5RdxU0EypUAXwZOPhlgmob+EX5N8ORrPPEeDUNNp?= =?us-ascii?Q?JVcGQRPsDXNX5JoQ4aUwZG/tOiJzyWUSY0N0tRgZV1/UD/TFKmziVcLWaXRb?= =?us-ascii?Q?e6A1tADzEA/wznWKEFxV563wN7PGWlFEpPtvBJG/gJIgFH92jJHIfgGW4tne?= =?us-ascii?Q?DTs+N1CnM77n2Slm3plsyD7VNtdFNspf5fLZ6ypYNFIGKsk8pm0RZkzd0n4E?= =?us-ascii?Q?tfVETYGSWqrzLAdQMc6azwU2ppQMwYHjxRENR9mlCV9qE7jCFafBRT6yvga3?= =?us-ascii?Q?W6bdfGe3zvtpL9HhaJcwVJRn8ptxV99gNatKEndDWwYo6nMc6qf5UtvZ2pQS?= =?us-ascii?Q?0pEIZaByLZeA8VciqeR6d363vkUMLBXnwFCafGkZUMFOvksb+wqjSGdGeqtf?= =?us-ascii?Q?pz4FztZ9L0uQuDwV1c5FiN1bjiOfSSTAMi390ghXhrUjHbG/nA/Xh8UHcTgx?= =?us-ascii?Q?oiOx1lxUMRtl9628KVQz6zG87PIw9Fs5IBtt6fgdg3EK2EnPfpUz1ToTAgSt?= =?us-ascii?Q?4WCXIXae8Mqy35O0fV3gMZdpGDD1VqLwyIxUH5BdFnmJ7iWDtsb4Ge0wvGL6?= =?us-ascii?Q?wwvhj5HBlcBe6zIy992xxOiIHV0t?= 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)(1800799015)(376005)(82310400017)(36860700004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2024 10:44:16.9900 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 755aec28-1bc7-409c-83f4-08dc83ba1e0b 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: CY4PEPF0000EE36.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6932 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 --- 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.25.1