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 5414A45B5A; Thu, 17 Oct 2024 09:58:25 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 607024042E; Thu, 17 Oct 2024 09:58:21 +0200 (CEST) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2073.outbound.protection.outlook.com [40.107.244.73]) by mails.dpdk.org (Postfix) with ESMTP id 68EDB402A9 for ; Thu, 17 Oct 2024 09:58:18 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ftjsh+JMLi1cW11+fSo6VR2aRKQ4W5wTCz0/VoZZUCAK5ulZEUoZB5oU17J3OAC2R0ebbzC7v5BWqJLmbNp0xSGvjWKSXlIRvi6r1VdawFYxaenMVMYIjWSuM04dWNnrDYI0WkhSZHItwy84F9bOdsEQKkmeUtcdNyYcorTkD0CkjTWFLogkk8zznlS1f23aTJX3/MadOqM/B/X25kMHyGD5PktSUzttK/YcBv9vq7h/RVeoPVbIajZ/UthSwqUQX3O11wk0U1K5D5Hh6oRUDQ3LQnAWnimngoIePdwMrrmyoz3d1+i6N7fZF6x5FCYULLdTTsQ37eSDht59AMA12g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=hi2pnEuGZIaCivi0Tu+l3UjmI/Svq1EinVMpl3TTeYI=; b=qj8qaVxbVl7+f//CsgxtE9jlWphsImUhqA/7k3Rx0a3KOiTNPJbea7pDLlHgc69eZJemoMnpe2Cc8QmFXV2VhOOksssBoiOqB3BOAB1HGln/YX8jhFNYVLAXfZSVHlYGI64mEUeWW6143XTbJIv49IaXgwc1EOkuPmOX3RehjC8yt+8t+GY051S5OiaajdjB1M3CvA004D0sZuQ8mkk111kVcxQN2CQfzUCD1DqE9YjzuRKrK5QdI9WQBgd+akWN160t7RzaJ20MhUMuu/Fh3uzSA/Yv5DZUNb7lYd3XfQI+sPiCNOMSH49PxEBh3mCU47pEc9KwzxId/EMYZwWwYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) 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=hi2pnEuGZIaCivi0Tu+l3UjmI/Svq1EinVMpl3TTeYI=; b=V54S+kAR7p+KWQtCWve8EPVLpiuFBiMdgzw3QL9UILdgi2677WyA882PrhURy00WfeQGc4gp0h2BbllVMWRa2MMb7caZkgAuabazuIIkiJySGG3e0u+mI7dNoZC9SYmFM4Xd9pYVwwR4KcAztt82ARg8Q/c2oTRqTJ4aSw/9S1L3TgocysQfgk6LRsEWIYnH93KeDsx+fSLaIbwa+fW6+ArTtqUOnYQjX1G3KLsdBYQmuwVzdyBbh2efxCQFhW0e5NaCVOitN0GH/2hDIoTInG+eZBu8kKbgdBnPCy4/XRbfQrZd9DOLjKqlEVVpKdBOFr05CHmL+8gkYO5Xjx7ENg== Received: from MN2PR07CA0026.namprd07.prod.outlook.com (2603:10b6:208:1a0::36) by CY8PR12MB7658.namprd12.prod.outlook.com (2603:10b6:930:9e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.18; Thu, 17 Oct 2024 07:58:14 +0000 Received: from MN1PEPF0000F0E1.namprd04.prod.outlook.com (2603:10b6:208:1a0:cafe::10) by MN2PR07CA0026.outlook.office365.com (2603:10b6:208:1a0::36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.21 via Frontend Transport; Thu, 17 Oct 2024 07:58:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) 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.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by MN1PEPF0000F0E1.mail.protection.outlook.com (10.167.242.39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8069.17 via Frontend Transport; Thu, 17 Oct 2024 07:58:13 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Thu, 17 Oct 2024 00:57:59 -0700 Received: from nvidia.com (10.126.231.35) by rnnvmail201.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; Thu, 17 Oct 2024 00:57:57 -0700 From: Dariusz Sosnowski To: Viacheslav Ovsiienko , Bing Zhao , Ori Kam , Suanming Mou , Matan Azrad CC: Subject: [PATCH 00/10] net/mlx5: improve MAC address and VLAN add latency Date: Thu, 17 Oct 2024 09:57:28 +0200 Message-ID: <20241017075738.190064-1-dsosnowski@nvidia.com> X-Mailer: git-send-email 2.39.5 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN1PEPF0000F0E1:EE_|CY8PR12MB7658:EE_ X-MS-Office365-Filtering-Correlation-Id: f994e240-197c-4b54-ccbf-08dcee817384 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?IqNc1z3lVODS6fyBjk5aSZiq4pCU642UR1qGQv2ONB35R5E+m9y7pqnJNJld?= =?us-ascii?Q?H5xncPGh7EYJEsLTyNgfUxBdovjrhQoi4RgQ6GZZmt921qgoC0Mebru/RwB6?= =?us-ascii?Q?BSizko9qBldPkO3RDemwfudy27wLaRSCAJafosSR5tnWwzeDJRc+Nhu1IQna?= =?us-ascii?Q?Q8MFFhNL0GePie3JtH8pnUH4I3LUbQsP4Z8LBKCpyxlsV11igpZKaS2o5QdK?= =?us-ascii?Q?+FIZFPwdiX/3LwXsbRQW1NtNEpEZz3VhtRWXXPNIl+IZdP+1hD6yuI7dOcEu?= =?us-ascii?Q?A6KNLetNXsGiIGqg825nEa0GaowPvD7YH+Fu/vRrShVY1ixJzs9f4zIWXJbW?= =?us-ascii?Q?IJdRtaJOBOkybYv1d+4+oLzaUwmV1DxI+eziQFTuKw3XhPL9CjFnKMKt8GEO?= =?us-ascii?Q?IfaLTS3HFnerc4GBFcQ/mteY+aimo6ZV/OrCrDW9i3+N5/yZFieCbUxCMDJh?= =?us-ascii?Q?BHak7CubxelqF5DJmZWmkuod1+NmsI4F4m9D9zsLN3nifAmTjsbrWBztdiC4?= =?us-ascii?Q?QzzSUliAnoErSxrDoUyE6AZcnv0soRs87N8XHHox88EpzCH92djb7JgB7FVj?= =?us-ascii?Q?QRmAR3pjGnm0nyGstv+vLFkJ7WAf1GXTwbDDVhr5Yajj5tEfFW1w0/z29Rvo?= =?us-ascii?Q?WJ48T505nuBNak0WSP8CAzLzhb39G4U+kQX9Meg6/ciDff8XMXfr7jTvTDKr?= =?us-ascii?Q?Pq7ajMgPQ21knyc/PwNU+Q6Pf5Q+IHex6TaC0692jIMdeaODl2tDd6S1xpYz?= =?us-ascii?Q?U0izvCFPasb93BUCDiTjKNn3TkNolM76iCL1CmpMt43X02lnOnzdRQtFVuru?= =?us-ascii?Q?si25g2wjj42eTFYiOuMXqYorbFV0x9/fmt7T42y1Ununp42srbdrcxhFqzsg?= =?us-ascii?Q?Bv/MzYiuzWWj6YArnkLRvOp9D05xI4NVwhYPOHpHP1Zp4VJMxTdoBTyUd7En?= =?us-ascii?Q?E5B5q5R42akkMu77VOrkydC14oMou/igsNiMf9u8lQCEBdB1NOVnciiTKubc?= =?us-ascii?Q?TsVOWBMQZ2kZXrHKi6Gjq+v8VZmvfD0gO7Cm/mVccwb2Yhr581Ncv0I5P2Lm?= =?us-ascii?Q?NduBrvdiePGHUQ+Q3q+HwTVqWDD/T9eWlkv8e5+DmuV5Jkxe3ABCWyoROv00?= =?us-ascii?Q?covg3WAuvk5NEF/5neSxH9bPwodIKVabJTAwAEntCx6bX3d1jiKE5zgkc0zA?= =?us-ascii?Q?yIsDSuFdzU7qGQMZ9Vdh3AbcIW2FC+tRf0Uae+SFDrpkcsNLBdoAphVj8sFY?= =?us-ascii?Q?Q1F6eKkOGsXdeuW9DVrOCQ1FgFnXa3XVLbOW7otLKIHUYAVImA4rdRqkoGYf?= =?us-ascii?Q?l4bv4C9uIm6lvtvC2zc1G12qIc/9kcsDui0nsbGK5VhJVxiwEpqPDJMsetxZ?= =?us-ascii?Q?VuAAy69K+2DH45oINhFtb68MY/fum/HdPS9iNKrH8y5uunBsgA=3D=3D?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2024 07:58:13.4167 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f994e240-197c-4b54-ccbf-08dcee817384 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.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: MN1PEPF0000F0E1.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7658 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 Whenever a new MAC address is added to the port, mlx5 PMD will: - Add this address to `dev->data->mac_addrs[]`. - Destroy all control flow rules. - Recreate all control flow rules. Similar logic is also implemented for VLAN filters. Because of such logic, the latency of adding the new MAC address (i.e., latency of `rte_eth_dev_mac_addr_add()` function call) is actually linear to number of MAC addresses already configured. Since each operation of creating/destroying a control flow rule, involves an `ioctl()` syscall, on some setups the latency of adding a single MAC address can reach ~100ms, when port is operating with >= 100 MAC addresses. The same problem exists for VLAN filters (and even compounded by it). This patchset aims to resolve these issues, by reworking how mlx5 PMD handles adding/removing MAC addresses and VLAN filters. Instead of recreating all control flow rules, only necessary flow rules will be created/removed on each operation, thus minimizing number of syscalls triggered. Summary of patches: - Patch 1-2 - Extends existing `mlx5_hw_ctrl_flow_type` enum with special variants, which will be used for tracking MAC and VLAN control flow rules. - Patch 3-4 - Refactors HWS code for control flow rule creation to allow creation of specific control flow rules with unicast MAC/VLAN match. Also functions are added for deletion of specific rules. - Patch 5-6 - Prepares the control flow rules list, used by HWS flow engine, to be used by other flow engine. Goal is to reuse the similar logic in Verbs and DV flow engines. - Patch 7-8 - Adjusts legacy flow engines, so that unicast DMAC/VLAN control flow rules are added to the control flow rules list. Also exposes functions for creating/destroying specific ones. - Patch 9-10 - Extends `mlx5_traffic_*` interface with `mlx5_traffic_mac_add/remove` and `mlx5_traffic_vlan_add/remove` functions. They are used in implementations of DPDK APIs for adding/removing MAC addresses/VLAN filters and their goal is to update the set of control flow rules in a minimal number of steps possible, without recreating the rules. As a result of these patches the time to add 128th MAC address, after 127th was added drops **from ~72 ms to ~197 us** (at least on my setup). Dariusz Sosnowski (10): net/mlx5: track unicast DMAC control flow rules net/mlx5: add checking if unicast flow rule exists net/mlx5: rework creation of unicast flow rules net/mlx5: support destroying unicast flow rules net/mlx5: rename control flow rules types net/mlx5: shared init of control flow rules net/mlx5: add legacy unicast flow rules management net/mlx5: add legacy unicast flow rule registration net/mlx5: add dynamic unicast flow rule management net/mlx5: optimize MAC address and VLAN filter handling drivers/net/mlx5/linux/mlx5_os.c | 3 + drivers/net/mlx5/meson.build | 1 + drivers/net/mlx5/mlx5.h | 62 +++-- drivers/net/mlx5/mlx5_flow.c | 149 ++++++++++- drivers/net/mlx5/mlx5_flow.h | 36 +++ drivers/net/mlx5/mlx5_flow_hw.c | 349 ++++++++++++++++++++------ drivers/net/mlx5/mlx5_flow_hw_stubs.c | 68 +++++ drivers/net/mlx5/mlx5_mac.c | 41 ++- drivers/net/mlx5/mlx5_trigger.c | 262 ++++++++++++++++++- drivers/net/mlx5/mlx5_vlan.c | 9 +- drivers/net/mlx5/windows/mlx5_os.c | 3 + 11 files changed, 867 insertions(+), 116 deletions(-) create mode 100644 drivers/net/mlx5/mlx5_flow_hw_stubs.c -- 2.39.5