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 E59DA44142; Mon, 3 Jun 2024 09:21:40 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6E1364029C; Mon, 3 Jun 2024 09:21:40 +0200 (CEST) Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2045.outbound.protection.outlook.com [40.107.100.45]) by mails.dpdk.org (Postfix) with ESMTP id 828F74026C for ; Mon, 3 Jun 2024 09:21:38 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zhza7sLAhv2hvx12cbmslTb3Jo8FH1qDflg/2JN/g4XyWkiByadXiOVZoO1RcfI95c5wWQxhJkbFDQ+QCDUSajpCwXohQCvf/IQUlyepk9MF7ZVbOow2KBFN1PMPhQD/FlN0PqOrN8fYQkx52ylow3jN01e6IXqa8FG1Y/WEp1q+JfKD25VYMY4pg1/aoy7IuCiyEx4CkWA6ViY9y8oxJvU1pze+wM8CqAxO1iOJ5TeEoUOdVAkS4pzHoHQ+nDdte8UuMjFKazDdINN0T36QWU/9mKoQuqQGq6Ext3jR2C8J282b8M17d+gPtmAZK5Sxn25dg787zp13gd0wX92ZvQ== 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=cuNZ1cXR5wNqTE0OioeTjEnC4hR7mQi7bt17PPDzq4fKU/S/9Uo2bHShA1TDDwv6Wt9qGxUA9PT6WO3wqayzfyxGTZQd53YTiPT7XCGjMkJcb29svLaKShJXdIHhdj5nN851WM4XDwyLwGXuyqEAhd8gZKaqq3QEkXAzItDFrwF/dNBXWNVFQHv256PiPRry7Po5y+cgctkCJSmM1NP6REaCNIBY5ETRTdjFZoLPL6+C4b32TDqj+mZHSC3qXj31foYr8fvH85Uq031AhxTSrx06w1AyvHPc5D4TdBb9fSU5JORqoQgXD9y+E7AK15sRzvqsN6sGixai3VKqfcRW9A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.118.233) 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=jtcajHl3QCHE2JHwdCsaLyUkF9YRTrYSynLS3jxJTDkVN/w8+cS4N3CxER8W9MkwZ27AytbKtcGauUV5kk+K5Vfax/prEKYSuxODJkB6PiX3CIGZ1sNdKq8vhAvk8Jz8XDADMq4jwt/8S3VVii2VuIS8YQ11rddhRMK8BZjm4s07Yfz1dlYvfmBCpahpHDGVsVwt1Tw0f2Wmtw/acVG/+pnQ/VXol3nDgDuJGNpEkbMk/q5a5aRzpsIFr8x7zotRGjbB5IWO5cH9A+m0R2dLdVntdwQ92GBexb39L5O3djgUkxeKGiKse/+nc3fTji4B2U2lV75vqV49cN0+LRTD3g== Received: from CH2PR07CA0061.namprd07.prod.outlook.com (2603:10b6:610:5b::35) by DM4PR12MB7646.namprd12.prod.outlook.com (2603:10b6:8:106::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7611.35; Mon, 3 Jun 2024 07:21:36 +0000 Received: from CH1PEPF0000AD81.namprd04.prod.outlook.com (2603:10b6:610:5b:cafe::3a) by CH2PR07CA0061.outlook.office365.com (2603:10b6:610:5b::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.29 via Frontend Transport; Mon, 3 Jun 2024 07:21:35 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.118.233) 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.233 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.118.233; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.118.233) by CH1PEPF0000AD81.mail.protection.outlook.com (10.167.244.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7452.22 via Frontend Transport; Mon, 3 Jun 2024 07:21:35 +0000 Received: from drhqmail201.nvidia.com (10.126.190.180) by mail.nvidia.com (10.127.129.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 00:21:25 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail201.nvidia.com (10.126.190.180) 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 00:21:24 -0700 Received: from nvidia.com (10.127.8.14) by mail.nvidia.com (10.126.190.181) 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 00:21:22 -0700 From: Maayan Kashani To: CC: , , , Yevgeny Kliteynik , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v2 02/34] net/mlx5/hws: split the root rule creation and destruction Date: Mon, 3 Jun 2024 10:21:15 +0300 Message-ID: <20240603072117.755-1-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <196750-1-mkashani@nvidia.com> References: <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: CH1PEPF0000AD81:EE_|DM4PR12MB7646:EE_ X-MS-Office365-Filtering-Correlation-Id: b2e323c2-8111-47b9-501b-08dc839dcd6f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|1800799015|82310400017|376005|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?jrNMZtoCp0IA+DUPTRCWv521NoW151UIg4/ne/ceMzKXFP6q9HHRJ+n5GkNO?= =?us-ascii?Q?AP776L6j3ZxrTaKvU4Vrm2IRCJzqpQbA49NqI5ouZFFh8cZnkAzYJehUR/id?= =?us-ascii?Q?ndMINekwnhvrTTjgl3kMXGVYvIGPDLjPioXD1BA2bWhiC6iPVw2MLlBwZRX4?= =?us-ascii?Q?UMUxTpwhlvV0S53vePxRPdFDwA6rcbtOXyf/xNwSuGxRVwn19RIK/fkCD9yu?= =?us-ascii?Q?39xdpE/B+iT5vxfFqvlf9t3YLHn2simcxPCpQqgX/bjnDUjJtSCtKGUQBJHZ?= =?us-ascii?Q?LSxXUuyiLRepZFQtwmKnN5PUgjunhjQ/SKbQmjedy5qJ0ekwEh7IuHFmzhDa?= =?us-ascii?Q?1cvgRHnflh5TV1iQt1ckBgX0PnxP3MVMoJqqn0EmGmG2g5qBAtLc8x36RfNS?= =?us-ascii?Q?B91rjw+Ea50g5LWHz3B8+xQ4QnkircVw+DnY1gmwWzzTF3OE8feSC6MZYpNz?= =?us-ascii?Q?tTQO4KTQuYPMWOzXzDszgbH0oPw/+zC57UZd4IpzBG1BlHc0pwW5EVqnl4vk?= =?us-ascii?Q?s5NYpUYZrPbJIfZYUGw3TnzYMsOKcZQ+fDiQtgjZ7XaH0aqyeVlK3m/OGx5T?= =?us-ascii?Q?aWHny1WnOXCbcR/TxhqCf/7CHpz45VeSeP9BH1WMpuhoDLJqStk5yUXbz/Br?= =?us-ascii?Q?F9MFjr/5AeBGTyeV36U6mzChZiZi3RYdUDdXDgOaEBbAC53Y33nxc9uH7UAY?= =?us-ascii?Q?4TM2hqmWL57J2eC6U+gnJJr4xPOWUIVTnusUGpKd2RFMdXwgP/xcLxqrtBXy?= =?us-ascii?Q?qwWWZD0epi/WB+XKVg8jLOZRRwjuhnGSs03xZ9PrprZcoKuIAvoq7xz9cpAn?= =?us-ascii?Q?Gqq8ofO2aFzMOPfzG3rSRgX9dYTQiqJX5/h6U/Qfj5TZQsifVsj/Dyq9Cyw/?= =?us-ascii?Q?mk1y5/lPlq5m45He0+YzQECiFUHISuZ1PiyubpLyYpxZolPmZ31La8GeST07?= =?us-ascii?Q?wUPpC3d7ez8HK4aZvsbXMYVMr5jvv/sNY8guUF4JMVgQHqH/QLgyhMPll2y/?= =?us-ascii?Q?Gk2TJhs1bArLu9/ddvCGw9t5E3Pb/FdEv4yBtiVgX4Sf+Nj7ogYQ18JMw+di?= =?us-ascii?Q?SSb2YUrMsEt5EuGRz/X7uWHAzc+ivTirqIVmBBxQg9HM9i7iPhqV/4/oaNOA?= =?us-ascii?Q?tPV3Ci/sn94/1wDJ/xWQtMz0cCdoqLiY8i5UgnN1WiafxdvzXb/B3XrxBLRI?= =?us-ascii?Q?bIlRJe5P4NF5Hpb8hK/Kt1t7t0hS+3ZwdlyrZ2q3TXZF4NzBvFLLFdMbiGs8?= =?us-ascii?Q?UoEAF/UiQ33/lnr3jJ49RQGU9PdXyGSoWwsaFoY8W0ckdKycuuPML1TzO6zI?= =?us-ascii?Q?XMAOj2klEzxb2wdwlvF7DinghgN2CAvvsk8auBthH+JXMIlQZnfpJK95+GE3?= =?us-ascii?Q?oFvzn0auVL9sJP96neLuTmAwtZnD?= X-Forefront-Antispam-Report: CIP:216.228.118.233; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc7edge2.nvidia.com; CAT:NONE; SFS:(13230031)(1800799015)(82310400017)(376005)(36860700004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2024 07:21:35.8090 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b2e323c2-8111-47b9-501b-08dc839dcd6f 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.233]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CH1PEPF0000AD81.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7646 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