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 3460544144; Mon, 3 Jun 2024 10:11:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 81C3A42E2B; Mon, 3 Jun 2024 10:11:24 +0200 (CEST) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2060.outbound.protection.outlook.com [40.107.237.60]) by mails.dpdk.org (Postfix) with ESMTP id D8A4242E1F for ; Mon, 3 Jun 2024 10:11:22 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KgSOcogz4yVZRC/SImz9VcwnRSn3dCbNNfmC6RtwTxHrXx+11+H+96xU0yXNUINh7rJNevPnj/P3K5BpJfO4WoXARjblZyctw9dKr3IbqvKAxdTVIsaww8JsnSR/3eZ9TERC/9NTlOe2308dD894hpa8hxBtZb9mpgwc1nBU8g+c0wSZbKgv0l8k5ariqBurLX8F82WWVs+XMl86snVRCHsggEbS7YVUK2pjOvS60RM/3on7UW5yHKXwiWZnqVr+1As04uK5F+drCADdfIj+G0AjW9ZG1x1eqKOgONONsOiRpx2MjbRFfSLfTOVXVTUXbwBy595mc2qePFBjyXFUGw== 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=dU/i3B0SAUx2ppLFvhDbehWX5lnsoXb7M/XP139T+yo=; b=cxOLLVgu9laJoY3XD07Xzng2YZ7ZUrUG40eUUt7E9HTnfZS04XVMSlCXJGiIb5OIG8PkK5jVicOXJ0vgnHmWzV1JB6JhxDPSJYrxgGjCbamJjc1m1je4SdgiA95S/zCiiEeFVLZ9UtuU0cGUc7+lDpdYxfhszUFD9W2HECp5GoasV3Vo2rQya6+9lAHDgLGaWXxzQNLZIdSUjI09IkcTYuUZlOqHCl3JBcLVXy+tWEp1rveHyr7faVOZz+f/wDH0H/qzsfm/1ioLQJM+aKg1Xot1OlekuI7bQDiRB0sptfNrGH9FcGx1U/S9UYtT7lbN4WA2+kydgP4KvY37Lbj13A== 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=dU/i3B0SAUx2ppLFvhDbehWX5lnsoXb7M/XP139T+yo=; b=D6XvCf1qvs0qQgb9EAMNrlNl6r7NwW737GgQKEHZLoKL50o8uYjmu4iUBWYGSt+VbpDnwmyJMZr13ebjBS3NZ65ogKwvF/aaZ1qq3a86NTfwvURsQ2v/Bsyo1q3VPtM19aN6BAhbDHPvOBCN/34i7MSf9rlc6pDa+6e1NDeHZL0h5E20nSbzoRyh1xmWGONJaW0EBlF9RWQL9VVa9ThNA+jQzkfHLgYtaw0r0tgOmefnFXfFl3YBcFL462pUNgjVw6NTj/5FxL3OKU8zoRkUb5geGWEFKBTQM3cfXoHzy8RhDJbsP+w/TRR5ZF4/d+22c9CJBJpH1uBWRcQKgBxqpw== Received: from MN2PR13CA0004.namprd13.prod.outlook.com (2603:10b6:208:160::17) by PH7PR12MB5902.namprd12.prod.outlook.com (2603:10b6:510:1d6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.21; Mon, 3 Jun 2024 08:11:20 +0000 Received: from BN3PEPF0000B078.namprd04.prod.outlook.com (2603:10b6:208:160:cafe::9c) by MN2PR13CA0004.outlook.office365.com (2603:10b6:208:160::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7656.14 via Frontend Transport; Mon, 3 Jun 2024 08:11:19 +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 BN3PEPF0000B078.mail.protection.outlook.com (10.167.243.123) 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 08:11:19 +0000 Received: from drhqmail202.nvidia.com (10.126.190.181) 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 01:11:11 -0700 Received: from drhqmail202.nvidia.com (10.126.190.181) by drhqmail202.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; Mon, 3 Jun 2024 01:11:10 -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 01:11:08 -0700 From: Maayan Kashani To: CC: , , , Gregory Etelson , Viacheslav Ovsiienko , Ori Kam , Suanming Mou , Matan Azrad Subject: [PATCH v2 21/34] net/mlx5: support FDB in non-template mode Date: Mon, 3 Jun 2024 11:10:42 +0300 Message-ID: <20240603081042.3109-6-mkashani@nvidia.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20240603081042.3109-1-mkashani@nvidia.com> References: <20240602102841.196990-1-mkashani@nvidia.com> <20240603081042.3109-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: BN3PEPF0000B078:EE_|PH7PR12MB5902:EE_ X-MS-Office365-Filtering-Correlation-Id: 2407a094-1c15-4942-e0ac-08dc83a4c002 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230031|82310400017|1800799015|376005|36860700004; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ogMAxkgFBlvssSJSliMrleSqcVZjQiRNzXZlqdDeu/svcslWa6UlAHweO+n5?= =?us-ascii?Q?kaeue90DUAp1r6dlqF6Gzk5ZHUWJV4OYIM6DfJPntDKC02fD6kDdNAQkr/yg?= =?us-ascii?Q?flBoV9QcHXXhs5qKsBxBJWKUfMMcscIVDwJLwyFKrTUfp2FPNyet2WAD56Yt?= =?us-ascii?Q?4tN49ZmqEgtpqtT3H4RRbr/fiIvzYG6YqbRhcdsrZJsVZeizHJNbxbEBOC/n?= =?us-ascii?Q?f9tv5Ci0zUeJLuTw23eNNgRD29n3B//vl3C92XidjqL2FgsCRsMB5lbc7mX7?= =?us-ascii?Q?PtVSpJ8f0oEDmc1LOSdAH2sJ+c3Lq+mL7+8aPEYk+KYK8cN0fTHUi63YKPaE?= =?us-ascii?Q?u1FXQGqBSW5AKCNSkFV7s2fMUeiFO4RpPXE1r4kNgAGUYGO+ROX+mwoyByvf?= =?us-ascii?Q?Uh0TOwYgp2BL/R+SuqaXKIhGc+Zl16yz0E4sZDumXXZaXUooE02hMsLgt6GM?= =?us-ascii?Q?WfNarzL9/HHX+AK/XcIpmK27//flf4X3TpZoZ04rHBtdCqawvdx6Fxu/BvbH?= =?us-ascii?Q?0K9mEn4NcMCMlLEKR9qa4yH82bwciRNYd/JTxhLRWo8ak/5hzm/ym8svz8z8?= =?us-ascii?Q?nG/MVm39L22eyQDykorTuRbSA5boZKZYW3S8Q0a4JfqzpeblHf6eoMiuIxtX?= =?us-ascii?Q?YueULxr9203DorXv2tu6QhX12lMh/h4VfDa3BN5kmIVOvxpy3tBxk9wQ/3IK?= =?us-ascii?Q?lFQ0XTBQv93pFHdyNm2dRdZLDqwoc73AkofhMxo++I+PYaf6EtoH+/iF4y+y?= =?us-ascii?Q?1/jWkkQUjqhaQntBhDRFhlFQQ3EhfNu+iAfz3KitWUH9BWVT1/e/fATz1sZI?= =?us-ascii?Q?O1FOvFxP+4Lz6UOTdCFA+eRvH/UOnYihChm1YjMyqTNiCmmAdZVe+UT07lnX?= =?us-ascii?Q?+qeuNFd8ZAUcX3/e7tKbqzh2HGUUmQUc4mhDQFAfHTxwR00mno35qMtIn1v2?= =?us-ascii?Q?/xsOXf4ZoYad0JVja8lZUFStB69Y9Ageh3yr0nAL1lk7ARFUEhQ3UDnCig5r?= =?us-ascii?Q?SqInjz5yJuPa5U/4Jts4Wz+68bDmcUBb/AW8NxgA4vn2oKWi8vdjPuoEZHkp?= =?us-ascii?Q?uExtKm5cGbT0zOjm3ou/puW2SoJTZIZfOfvE3Q/1C8pew/EBgZID7ylgxv2P?= =?us-ascii?Q?8q4oOh/zy/og5OynO2kKS4LsnVa6k8wQ1NfznVa4qcDnvMHbkYeN19dYFSfq?= =?us-ascii?Q?McJxZFpOJRF4IKMUQ3lT9gpjreDt3g1wOaYVWEDDk/cSPixAynrRgbceiKLY?= =?us-ascii?Q?AiUSQvzoYMrsHNxWUtZ21XDaH4MfgGSc78F1DDV+wClxA5TDBA0Vl2ktAtRN?= =?us-ascii?Q?LLu15VoAgmPEBBTDqxJkSmrRLbBPJQbkYRjgIE5IY6wQTUAgu2IB/stBYI6P?= =?us-ascii?Q?laBC2AQ=3D?= 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)(82310400017)(1800799015)(376005)(36860700004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jun 2024 08:11:19.7182 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2407a094-1c15-4942-e0ac-08dc83a4c002 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: BN3PEPF0000B078.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB5902 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 Support non-template flows API in FDB mode: dpdk-testpmd -a $PCI,dv_flow_en=2,representor=vf0-1 -- -i testpmd> flow create 0 group 0 transfer \ pattern eth / end \ actions count / drop / end Signed-off-by: Gregory Etelson --- drivers/net/mlx5/mlx5_flow_hw.c | 46 +++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 8 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 66e0b46f9b..43bcaab592 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -12614,6 +12614,28 @@ flow_hw_translate_flow_actions(struct rte_eth_dev *dev, return ret; } +static int +flow_hw_unregister_matcher(struct rte_eth_dev *dev, + struct mlx5_flow_dv_matcher *matcher) +{ + int ret; + struct mlx5_priv *priv = dev->data->dev_private; + + if (matcher->matcher_object) { + ret = mlx5_hlist_unregister(priv->sh->groups, &matcher->group->entry); + if (ret) + goto error; + if (matcher->group) { + ret = mlx5_list_unregister(matcher->group->matchers, &matcher->entry); + if (ret) + goto error; + } + } + return 0; +error: + return -EINVAL; +} + static int flow_hw_register_matcher(struct rte_eth_dev *dev, const struct rte_flow_attr *attr, const struct rte_flow_item items[], @@ -12640,24 +12662,23 @@ static int flow_hw_register_matcher(struct rte_eth_dev *dev, .data = matcher, .data2 = items_ptr, }; - struct mlx5_list_entry *group_entry; - struct mlx5_list_entry *matcher_entry; + struct mlx5_list_entry *group_entry = NULL; + struct mlx5_list_entry *matcher_entry = NULL; struct mlx5_flow_dv_matcher *resource; struct mlx5_list *matchers_list; struct mlx5_flow_group *flow_group; - uint32_t group = 0; int ret; matcher->crc = rte_raw_cksum((const void *)matcher->mask.buf, matcher->mask.size); matcher->priority = attr->priority; - ret = __translate_group(dev, attr, external, attr->group, &group, error); + ret = __translate_group(dev, attr, external, attr->group, &flow_attr.group, error); if (ret) return ret; /* Register the flow group. */ - group_entry = mlx5_hlist_register(priv->sh->groups, group, &ctx); + group_entry = mlx5_hlist_register(priv->sh->groups, flow_attr.group, &ctx); if (!group_entry) goto error; flow_group = container_of(group_entry, struct mlx5_flow_group, entry); @@ -12668,15 +12689,16 @@ static int flow_hw_register_matcher(struct rte_eth_dev *dev, if (!matcher_entry) goto error; resource = container_of(matcher_entry, typeof(*resource), entry); - if (!resource) - goto error; flow->nt2hws->matcher = resource; return 0; error: - if (error) + if (group_entry) + mlx5_hlist_unregister(priv->sh->groups, group_entry); + if (error) { if (sub_error.type != RTE_FLOW_ERROR_TYPE_NONE) rte_memcpy(error, &sub_error, sizeof(sub_error)); + } return rte_flow_error_set(error, ENOMEM, RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL, "fail to register matcher"); @@ -12899,6 +12921,12 @@ flow_hw_create_flow(struct rte_eth_dev *dev, enum mlx5_flow_type type, mlx5_free(hw_act.push_remove); if (hw_act.mhdr) mlx5_free(hw_act.mhdr); + if (ret) { + /* release after actual error */ + if ((*flow)->nt2hws && (*flow)->nt2hws->matcher) + flow_hw_unregister_matcher(dev, + (*flow)->nt2hws->matcher); + } return ret; } #endif @@ -12945,6 +12973,8 @@ flow_hw_destroy(struct rte_eth_dev *dev, struct rte_flow_hw *flow) if (ret) DRV_LOG(ERR, "failed to release modify action."); } + if (flow->nt2hws->matcher) + flow_hw_unregister_matcher(dev, flow->nt2hws->matcher); } #ifdef HAVE_MLX5_HWS_SUPPORT -- 2.25.1