From patchwork Tue Feb 13 09:50:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136623 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1C83643913; Tue, 13 Feb 2024 10:51:09 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id CC8F1402AD; Tue, 13 Feb 2024 10:51:08 +0100 (CET) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2050.outbound.protection.outlook.com [40.107.94.50]) by mails.dpdk.org (Postfix) with ESMTP id 712774027B for ; Tue, 13 Feb 2024 10:51:07 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RxvdkkLxAybtWMmUN9Elu6TdpiYnws7GzhM1EJz131/kNWUSYuCRpl06yH7YKvXmdLUSC7ODw+5bi/fpsMfBVV0pRZQnG5pHxgl6QUCdkt4Xrs4Nc5QllekDV7HhWFHKc2fAPyCFoN5LoVYJPM7QwWC1L40xV5btTKSEttFvYOQL6ZYm2MR1igzzC6YsNQFUd2I6iD+Cr1LRzDwXajDPLo9TXlWopbE3cl+xqxrdcxBviVCTJmOBQK/4porPxjv88VUJSvsyrE9dSXEdZ4u0zj8NYRluUSUzEOynREX3MajwrjD5HhLMgO+4DdizwwY+qf03TvsmdzMtYQEVRsAUMg== 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=vX9yHiG0CjxRRdh4trYDFDChph44rOoEhQjrR7FTWQ0=; b=Xo4zNKSlPh7KWVw9P7zV5uVnJXajNHhr1QxztWwv9j9RN95s9ibCZw4VWk8E0ZA9dZV9O+CeOhAHi7JWaJZhQDGpJ9jU4Oiph/C8GP8yhL7mZDlrYSlT4QIgpj7vOErYwDoUJ6Rg0yO6YqHkuYM4v3NZBxBbuhaW1rujxtJX4u0u6VVeJ588a2tKLrDTDbRFEHT19EszTwGGKbIZrqCtYCSmWVdt/SsWw5iZPCl+MI88YEJeAwyBH6Z5X9vMrFJVaJRi+Z7T7LfCbT6evtGYVf75jioKiH8ke06ZGCwlpaH1XsmGBawnOmWcOpbBlzttZor5O9T6A6OTY++tgWsJcQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=vX9yHiG0CjxRRdh4trYDFDChph44rOoEhQjrR7FTWQ0=; b=J5nS084u2oIGX3+CdUY7+U02zKwWWO0ka8gWXgZw0bEdHyOU2IY9HGgV/MRWuAegYhAW6+ceqJCh9KyXE1fmU8Lf8mpIBFczaXTFw7ezfxMtQ0qivTLem/VhAhAEXqbqSKsoWoFGjChbJ89TdUIRFG9wT3Znr74ABrSpT7KRiCpLCZyCHWDeWkh8oa9P6kwqVaGy8Ms2LdiDUs0AMYvh8jBiJwHokfTd/hYXqXzWB6GsZrXkInRIvzFhmF3CrUvx6hokBycbxW36saef8Mw2cqm7AjkChTAHn00knXtmAaUqFKDvn3Tyoar3jlMQpd89xPs3oh4P8eelTNv+4ngAKQ== Received: from BN6PR17CA0027.namprd17.prod.outlook.com (2603:10b6:405:75::16) by LV2PR12MB5990.namprd12.prod.outlook.com (2603:10b6:408:170::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.23; Tue, 13 Feb 2024 09:51:04 +0000 Received: from BN2PEPF000044A3.namprd02.prod.outlook.com (2603:10b6:405:75:cafe::45) by BN6PR17CA0027.outlook.office365.com (2603:10b6:405:75::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39 via Frontend Transport; Tue, 13 Feb 2024 09:51:04 +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 BN2PEPF000044A3.mail.protection.outlook.com (10.167.243.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:04 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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.986.41; Tue, 13 Feb 2024 01:50:50 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Tue, 13 Feb 2024 01:50:49 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:50:46 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad , Alex Vesker CC: Subject: [PATCH 1/9] net/mlx5/hws: skip RTE item when inserting rules by index Date: Tue, 13 Feb 2024 11:50:29 +0200 Message-ID: <20240213095038.451299-1-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000044A3:EE_|LV2PR12MB5990:EE_ X-MS-Office365-Filtering-Correlation-Id: f7ddd36a-5d01-49f5-69b7-08dc2c794b5a X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Hl08RQNKb9BZX8tFDKU3716qcZadXZ43I4VZqP51PDmjLSxnU3UlJzHLw4+xlOGlOh3AA9x0XM3HXlcm6firmhxi3PpyehY3xR8NRmA/ShA0hxTXkcdPWN+9VrajdiqIGGXtcoDNhSEv6S75hP9vtevUaBhUEfjZ33SYBydo+9Wzb0tHdb6ZpB/AQuNIg0cDOIwUlHl19+16MJ9f8UUkmh4MX70KTkgFkgd3nsPEa6fRgj5uhf9m8BB61rBozfwdHXGGiDPorucjdBKBtdcghG22b5DyyjMO8FoWX1Osv4kBE82Xt6aUWFOE4XmjbeHJK0bdsl4rQLiRawrVDzU6Gf/U949Uj3XHf3KKtDa77amkbLEDfPlya9+e/vMsOHDkMyKpDfRSjMoqqxJPT4pqTHduwSg79eYTTj8YU3Hk2UjhMd1M4aPgSQrP8V+1iX6UA1J9liIkWUabQFARHqOa2l3wwvfOSldC/eWbx8DlojLpLvuDJS+2cDMSxyzY22SMqOiEHAbhi88xlRVHoRe5pKcc75/fb/vKRSFkdqt+/tngpYR1gFE4NmhKo8gP4sglhupfnk1cMQ/dnNJ+cxS1oyrO9ldsZjoypGn0HD6R+tT0hUDPaoFtCTyyx/9Mf6fZYL0+Sss3oiaj4HV6Z38jtA== 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:(13230031)(4636009)(136003)(396003)(346002)(376002)(39860400002)(230922051799003)(186009)(64100799003)(1800799012)(82310400011)(451199024)(36840700001)(46966006)(40470700004)(55016003)(921011)(7696005)(36756003)(2906002)(5660300002)(4326008)(86362001)(7636003)(356005)(2616005)(426003)(6636002)(316002)(4744005)(6286002)(336012)(110136005)(6666004)(478600001)(83380400001)(82740400003)(1076003)(70586007)(8676002)(8936002)(70206006)(41300700001)(26005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:04.4618 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f7ddd36a-5d01-49f5-69b7-08dc2c794b5a 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: BN2PEPF000044A3.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV2PR12MB5990 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 The location of indexed rules is determined by the index, not the item hash. A matcher test is added to prevent access to non-existent items. This avoids unnecessary processing and potential segmentation faults. Fixes: 405242c ("net/mlx5/hws: add rule object") Signed-off-by: Itamar Gozlan Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr_rule.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c b/drivers/net/mlx5/hws/mlx5dr_rule.c index fa19303b91..e39137a6ee 100644 --- a/drivers/net/mlx5/hws/mlx5dr_rule.c +++ b/drivers/net/mlx5/hws/mlx5dr_rule.c @@ -23,6 +23,9 @@ static void mlx5dr_rule_skip(struct mlx5dr_matcher *matcher, *skip_rx = false; *skip_tx = false; + if (unlikely(mlx5dr_matcher_is_insert_by_idx(matcher))) + return; + if (mt->item_flags & MLX5_FLOW_ITEM_REPRESENTED_PORT) { v = items[mt->vport_item_id].spec; vport = flow_hw_conv_port_id(v->port_id); From patchwork Tue Feb 13 09:50:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136624 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 8331843913; Tue, 13 Feb 2024 10:51:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 07AD8410FC; Tue, 13 Feb 2024 10:51:10 +0100 (CET) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2043.outbound.protection.outlook.com [40.107.237.43]) by mails.dpdk.org (Postfix) with ESMTP id 26889410F6 for ; Tue, 13 Feb 2024 10:51:09 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FpjVyZ/5ohVlLCHMz4k2f5iRiMD1vo6KfTB73V5wN598e5etgYZEIMkJ7OsU0kcwD6jBuiFBrzyIGyvconoqgyagVDcLZUmId74AKNeXnVOHks1guuZo9ln8dnXL+Bij5f4Li7Jw22bquUoGvs0xrahupjVRqUhWP9p8Z9cT+f3IVVSsvyrsyJYVjKhrmen4+BqcMpYkXIpXI8EDSsdwZVBge4Ht6NDfvqJwKzCtCDVs5/Wqn/TgU3L+WuzPkZp+jd2uQTKnnS8tFnln9N16JmDFE250azmnx4KDg8XBm+IOc7M+606zEMMhpkQLm4a7Ttu/l26gZ5rh4QSUHOfJuQ== 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=3XfOfbrJ2y7mMdIAGlhsFHDkTTECLLpb5Q1wE4mz/jM=; b=EPd0qw05isPHwotNjOPTz5mKKPwwoc3DkY1Preqz11I5zVQsZ3JShzRKBabkyWjMsSyTvDkzv8zpy591Nv/4swGqcfhdXeVpinVvj5PDuP/kNuAFSei/WhTRO94QVPBt/qGFliQPR1vLQM5B4tXSLAZoXoxvDln/91rBUrYoNq6FgjI9nb3GWCBTbLGQWTn426v6biPX79patwnbApoQ6O1qSyRiNjvic3ANLifgyUa9OMKZEzZ3zjZgSuIxt8V6foA6rWd2Y3by3QU+HeQNAgVFwhZ69BSxe9C29RzGSYCuNRHmgmFGdk95CbvlQC2TYhVawbpMEJ5EZj1hns2pTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=3XfOfbrJ2y7mMdIAGlhsFHDkTTECLLpb5Q1wE4mz/jM=; b=p/l84KBaAutUQDXRbQm3mPd6PoYks3nUo/i+tTlqlvk8SToORKTFrU6IDAiKlX75WA36vj7Y+nPq6MOYR348D8YcSXh1IIlhPj/qT+mMPT0qGVtjv76v49/pcAvUL8GySzGYCm9CbRiSzcRtVvvoSQulQlA07AHVVgtmZPqyX8uUaMt9G+zCaMB4NqRFthiO4F54F7fmo9WrsQxE1b6h4072fGMohQxuHf/IEK6ORV88iUvs4QXoU3pCGf9oq5IZ0zxk7xKco0uiX5e4gIdDff6OnwUvUgmJaXlSx+Xg4/wXCa1wxM0j6gclYK10dSnUA5OWllZS1HLd7dVL0PRTdQ== Received: from BN6PR17CA0051.namprd17.prod.outlook.com (2603:10b6:405:75::40) by CH3PR12MB8904.namprd12.prod.outlook.com (2603:10b6:610:167::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.21; Tue, 13 Feb 2024 09:51:07 +0000 Received: from BN2PEPF000044A3.namprd02.prod.outlook.com (2603:10b6:405:75:cafe::8f) by BN6PR17CA0051.outlook.office365.com (2603:10b6:405:75::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39 via Frontend Transport; Tue, 13 Feb 2024 09:51:07 +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 BN2PEPF000044A3.mail.protection.outlook.com (10.167.243.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:06 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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.986.41; Tue, 13 Feb 2024 01:50:53 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Tue, 13 Feb 2024 01:50:53 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:50:50 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad , Alex Vesker CC: Subject: [PATCH 2/9] net/mlx5/hws: add check for not supported fields in VXLAN Date: Tue, 13 Feb 2024 11:50:30 +0200 Message-ID: <20240213095038.451299-2-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF000044A3:EE_|CH3PR12MB8904:EE_ X-MS-Office365-Filtering-Correlation-Id: 9b213166-43cd-4c47-455b-08dc2c794cbb X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TQkGVKq71qYMjt7bANB2R6Tc90YMzuXasTvssAGV3uQSik7RhJpbpdyFkIP+GAWuAVS848XjANAEStPqt0Cb0PGDFWbPv3cP+l8//MRkLKskgrzqGgkPgv33Yv94ER2tN1Zlw7tLnkmnoqRjtErqFmP2tQSuyTBTcwtsfmSDE3UVEACPm4zu0k5zrrI9f1b8/9YRMDH5Q3/OTVK9omY4kgvuzGFou3B3wqEm1kctUYl+XlzyhKO6lRaZDPu44gMogs0Uv/qJfBcTBmaR3m95WIczO/VCLKoHyfFj9tg/EXIBeo0Koac2rlGn+YmWRovgn1Es0dyPFniM7eD1YmXcg7MmE7vmPpWUFkg5AqtMDUvWuwMeL0yWTQIlu1NgV5PiYa2dYc4Ih9G99u1b2PDaRRRkjpz/Kl2ZeUPQdoe4uNgeeNubwzGOzNrK8lOy5g4bDtWiRWZ8GYCGW7vBsl2ORQbaI3/9RI3tGihOYCJBp+vYLRjA8qIIeNTX7N+JjQmQGMOe9B88r3T6hdXeZk2Y9WYbvIzWZdINMsgY94qEcsSe1fKU1r5GdJek2NgBHlLBiMKmP1llkoChJZPzpSaOXWx4O2gUEfQfLXsyKhVczb/slDZuBpBUHKTJSfSrrZAc0V4Qy+4+8I214NY1t5ODBQ== 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:(13230031)(4636009)(346002)(136003)(396003)(39860400002)(376002)(230922051799003)(82310400011)(1800799012)(451199024)(186009)(64100799003)(40470700004)(46966006)(36840700001)(86362001)(110136005)(316002)(70206006)(6636002)(2616005)(6666004)(7696005)(70586007)(82740400003)(478600001)(5660300002)(336012)(7636003)(4744005)(2906002)(426003)(1076003)(8676002)(8936002)(921011)(4326008)(6286002)(26005)(55016003)(36756003)(356005)(41300700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:06.7742 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9b213166-43cd-4c47-455b-08dc2c794cbb 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: BN2PEPF000044A3.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB8904 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 Don't allow the user to mask over rsvd1 / rsvd2 fields which are not supported. Fixes: dbff89ef806f ("net/mlx5/hws: fix tunnel protocol checks") Signed-off-by: Erez Shitrit Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr_definer.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index 79d98bbf78..8b8757ecac 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -1414,6 +1414,13 @@ mlx5dr_definer_conv_item_vxlan(struct mlx5dr_definer_conv_data *cd, struct mlx5dr_definer_fc *fc; bool inner = cd->tunnel; + if (m && (m->rsvd0[0] != 0 || m->rsvd0[1] != 0 || m->rsvd0[2] != 0 || + m->rsvd1 != 0)) { + DR_LOG(ERR, "reserved fields are not supported"); + rte_errno = ENOTSUP; + return rte_errno; + } + if (inner) { DR_LOG(ERR, "Inner VXLAN item not supported"); rte_errno = ENOTSUP; From patchwork Tue Feb 13 09:50:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136625 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BE31E43913; Tue, 13 Feb 2024 10:51:19 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5651541132; Tue, 13 Feb 2024 10:51:13 +0100 (CET) Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2068.outbound.protection.outlook.com [40.107.101.68]) by mails.dpdk.org (Postfix) with ESMTP id 23AA041109 for ; Tue, 13 Feb 2024 10:51:11 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gHug633ixVlN7GYpHhSY3pP2h2CwFPbus5UEt76daguZ9t57Cfh0i2+FxgvDPwE9Eh9dOk6JcxquIYg6B0woeP9drLJQy0GAIOQfbm274VfYo1L3EyN1jEywsV+BjjceDzZ8+qQtTziBzSqBgZexjEESqqcm7AHwTlAbMBK5wKC1rc8ELsRTq5dAttX0aoEKpysAjmNLav2PngQRsgY5p9ovyrwtxSR26afTZr3TmrTufNGCXOIXXgm5+4Eb6keriFpjQcwKtA0skrC/L5+qpcscAkZDVWtSX4Kt3OTCTcGT49rBfL/FMBSpeXifIXz4JJxvITze8ViNqC+kehk3Lw== 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=h/wMguNV4pFqN3D8PoSbiaHy+NECtGBaW6PqKsgSNSw=; b=Su1hlk73yrEwA8vVcs0/e3l96xh2ywzOvqIJpQABzeAX5zY3a8b1l5490DQAPHlCrvqMNRzTbIR3YV936RCAUOWjQEU+2VbH7dIl7Kv7XnaDyR6LLOodY32laMxuwe/5AH7ZYc79N8p45qlgFgaMy7gMIPVjOflQcfAjTIGJeTxzWbBMMMc0rIMxkXF90suKe/h1le8LWjNXfVK2FpRGrraj09RQOrKa3qj0m84oaym+9rxA2HzCLrO50G4ukgjsvv7j3bJIYLvUPQzu3j+gAThwvzNYiJ5kMDn18vge+EFHz8wkV5HSKJHD2sHA/nTTZek6+Gxg1tgU/htw1q4eNA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=monjalon.net 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=h/wMguNV4pFqN3D8PoSbiaHy+NECtGBaW6PqKsgSNSw=; b=UQ2NA5rXbCrhKs6IcrTMikt23YU57BHGkTYw+5jLLws/e8TvhW9GWyPm1FP+mEZiDladN+mBtizBUwaVaNbSACSGHXZB3+BJWzi6IQwE0T0px24yojKFJXjc6Tm1zi5Zpt4NSx6VYn1R9aB7/jtiSp39e/6uIjT8qSh+HZAzxb12O92N5kY+PEAsBdHoMrelK0pccEOmBzMM/TvnlzUrwpDFyr8HvSlTy8rJkqplJ5gQHVL+MGcRAs8cLws8tiApoSwl1eG8h80SRD4Ce9gSQvysAS0oKI95VfVur3Rw2pi+ab01uPyeZtsXalbwX3pFst4PhnTdIS7rK5VZqm4IeQ== Received: from CH2PR19CA0025.namprd19.prod.outlook.com (2603:10b6:610:4d::35) by DM4PR12MB6352.namprd12.prod.outlook.com (2603:10b6:8:a0::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.24; Tue, 13 Feb 2024 09:51:06 +0000 Received: from CH2PEPF0000009A.namprd02.prod.outlook.com (2603:10b6:610:4d:cafe::e2) by CH2PR19CA0025.outlook.office365.com (2603:10b6:610:4d::35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39 via Frontend Transport; Tue, 13 Feb 2024 09:51:06 +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 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:06 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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.986.41; Tue, 13 Feb 2024 01:50:57 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 13 Feb 2024 01:50:56 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:50:54 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad CC: Subject: [PATCH 3/9] net/mlx5/hws: add support for resizable matchers Date: Tue, 13 Feb 2024 11:50:31 +0200 Message-ID: <20240213095038.451299-3-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF0000009A:EE_|DM4PR12MB6352:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d913f21-b118-4196-cc6c-08dc2c794c82 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Mq4O0F4AIe/gRiwLHLS8lcFJnw0m6AwawL4ybXzacI6zDoundghr8cOTVTEqoWdlJCTSFgX90yGzLGTK7H61DrZD00pVOtTM8lMzoTEZyPxIIFFleNFDQjAXtyjSvVTiiGpXquAEW3u8wysQjWSaijzBEMp0vcuja027lcIfRBegCNS6jXggGeYRo86VH6Mig3ljP081oA/pcGrx9ZElsHHCCbEmQNANsoKbzSIOtXFbhaybpSA4qrtNTtyqZcZMRbkpSPZB8ZCp7AEiKfoEqM5AoWKGWIRXqKzj90Nol1akutuFXuBhkUgSKb1xDT7lr/DXfy9fbzyFGrRPJtwTuB/YjMVd9y9pjqK8Tpcw8RNXD33O/FNhn9F7VnrXsI4nR3/BB6bqaIMs0lJDDuvBsIcr+AmcOf8xf1U7MYOijk3rr+ChejE7g2ZCfZ/2U1+q8ylg/p238HzvsyaWcrqruxcF7UxGwPlyUcBsrYtKr1UwDnJcNOp4DCi8/1TMfst29j23akCv4u4+h8HOseFko56mrefGLw+IAztStPCZC9XFsO5ylaXMblGJRUHldWc8/hhXOC6xrVLuCZmXqUheUT7wSuNJ+tk+KYxaAGRuoQKKKgBt2si8pgr3i1xxmTFJVR0S0zLqipWd4tdt3atAYQ== 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)(4636009)(346002)(396003)(376002)(136003)(39860400002)(230922051799003)(64100799003)(186009)(82310400011)(1800799012)(451199024)(36840700001)(46966006)(40470700004)(478600001)(41300700001)(55016003)(5660300002)(8936002)(8676002)(4326008)(30864003)(2906002)(70586007)(6636002)(110136005)(6666004)(6286002)(316002)(83380400001)(7696005)(26005)(336012)(426003)(82740400003)(7636003)(356005)(86362001)(70206006)(1076003)(921011)(36756003)(2616005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:06.4510 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 0d913f21-b118-4196-cc6c-08dc2c794c82 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: CH2PEPF0000009A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6352 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 Add support for matcher resize with the following new API calls: - mlx5dr_matcher_resize_set_target - mlx5dr_matcher_resize_rule_move The first function links two matchers and allows moving rules from src matcher to dst matcher. Both matchers should have the same characteristics (e.g. same mt, same at). It is the user's responsibility to make sure that the dst matcher has enough space for the moved rules. After this function, the user can move rules from src into dst matcher, and he is no longer allowed to insert rules to the src matcher. The second function is used to move the rule from matcher that is being resized to a bigger matcher. Moving a single rule includes creating a new rule in the destination matcher, and deleting the rule from the source matcher. This operation creates a single completion. Signed-off-by: Yevgeny Kliteynik Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr.h | 39 ++++ drivers/net/mlx5/hws/mlx5dr_definer.c | 5 +- drivers/net/mlx5/hws/mlx5dr_definer.h | 3 + drivers/net/mlx5/hws/mlx5dr_matcher.c | 181 +++++++++++++++- drivers/net/mlx5/hws/mlx5dr_matcher.h | 21 ++ drivers/net/mlx5/hws/mlx5dr_rule.c | 290 ++++++++++++++++++++++---- drivers/net/mlx5/hws/mlx5dr_rule.h | 30 ++- drivers/net/mlx5/hws/mlx5dr_send.c | 45 ++++ 8 files changed, 573 insertions(+), 41 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr.h b/drivers/net/mlx5/hws/mlx5dr.h index d88f73ab57..9d8f8e13dc 100644 --- a/drivers/net/mlx5/hws/mlx5dr.h +++ b/drivers/net/mlx5/hws/mlx5dr.h @@ -139,6 +139,8 @@ struct mlx5dr_matcher_attr { /* Define the insertion and distribution modes for this matcher */ enum mlx5dr_matcher_insert_mode insert_mode; enum mlx5dr_matcher_distribute_mode distribute_mode; + /* Define whether the created matcher supports resizing into a bigger matcher */ + bool resizable; union { struct { uint8_t sz_row_log; @@ -419,6 +421,43 @@ int mlx5dr_matcher_destroy(struct mlx5dr_matcher *matcher); int mlx5dr_matcher_attach_at(struct mlx5dr_matcher *matcher, struct mlx5dr_action_template *at); +/* Link two matchers and enable moving rules from src matcher to dst matcher. + * Both matchers must be in the same table type, must be created with 'resizable' + * property, and should have the same characteristics (e.g. same mt, same at). + * + * It is the user's responsibility to make sure that the dst matcher + * was allocated with the appropriate size. + * + * Once the function is completed, the user is: + * - allowed to move rules from src into dst matcher + * - no longer allowed to insert rules to the src matcher + * + * The user is always allowed to insert rules to the dst matcher and + * to delete rules from any matcher. + * + * @param[in] src_matcher + * source matcher for moving rules from + * @param[in] dst_matcher + * destination matcher for moving rules to + * @return zero on successful move, non zero otherwise. + */ +int mlx5dr_matcher_resize_set_target(struct mlx5dr_matcher *src_matcher, + struct mlx5dr_matcher *dst_matcher); + +/* Enqueue moving rule operation: moving rule from src matcher to a dst matcher + * + * @param[in] src_matcher + * matcher that the rule belongs to + * @param[in] rule + * the rule to move + * @param[in] attr + * rule attributes + * @return zero on success, non zero otherwise. + */ +int mlx5dr_matcher_resize_rule_move(struct mlx5dr_matcher *src_matcher, + struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr); + /* Get the size of the rule handle (mlx5dr_rule) to be used on rule creation. * * @return size in bytes of rule handle struct. diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index 8b8757ecac..e564062313 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -3296,9 +3296,8 @@ int mlx5dr_definer_get_id(struct mlx5dr_definer *definer) return definer->obj->id; } -static int -mlx5dr_definer_compare(struct mlx5dr_definer *definer_a, - struct mlx5dr_definer *definer_b) +int mlx5dr_definer_compare(struct mlx5dr_definer *definer_a, + struct mlx5dr_definer *definer_b) { int i; diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.h b/drivers/net/mlx5/hws/mlx5dr_definer.h index ced9d9da13..71cc0e94de 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.h +++ b/drivers/net/mlx5/hws/mlx5dr_definer.h @@ -733,4 +733,7 @@ int mlx5dr_definer_init_cache(struct mlx5dr_definer_cache **cache); void mlx5dr_definer_uninit_cache(struct mlx5dr_definer_cache *cache); +int mlx5dr_definer_compare(struct mlx5dr_definer *definer_a, + struct mlx5dr_definer *definer_b); + #endif diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.c b/drivers/net/mlx5/hws/mlx5dr_matcher.c index 4ea161eae6..0d5c462734 100644 --- a/drivers/net/mlx5/hws/mlx5dr_matcher.c +++ b/drivers/net/mlx5/hws/mlx5dr_matcher.c @@ -704,6 +704,65 @@ static int mlx5dr_matcher_check_and_process_at(struct mlx5dr_matcher *matcher, return 0; } +static int +mlx5dr_matcher_resize_init(struct mlx5dr_matcher *src_matcher) +{ + struct mlx5dr_matcher_resize_data *resize_data; + + resize_data = simple_calloc(1, sizeof(*resize_data)); + if (!resize_data) { + rte_errno = ENOMEM; + return rte_errno; + } + + resize_data->stc = src_matcher->action_ste.stc; + resize_data->action_ste_rtc_0 = src_matcher->action_ste.rtc_0; + resize_data->action_ste_rtc_1 = src_matcher->action_ste.rtc_1; + resize_data->action_ste_pool = src_matcher->action_ste.max_stes ? + src_matcher->action_ste.pool : + NULL; + + /* Place the new resized matcher on the dst matcher's list */ + LIST_INSERT_HEAD(&src_matcher->resize_dst->resize_data, + resize_data, next); + + /* Move all the previous resized matchers to the dst matcher's list */ + while (!LIST_EMPTY(&src_matcher->resize_data)) { + resize_data = LIST_FIRST(&src_matcher->resize_data); + LIST_REMOVE(resize_data, next); + LIST_INSERT_HEAD(&src_matcher->resize_dst->resize_data, + resize_data, next); + } + + return 0; +} + +static void +mlx5dr_matcher_resize_uninit(struct mlx5dr_matcher *matcher) +{ + struct mlx5dr_matcher_resize_data *resize_data; + + if (!mlx5dr_matcher_is_resizable(matcher) || + !matcher->action_ste.max_stes) + return; + + while (!LIST_EMPTY(&matcher->resize_data)) { + resize_data = LIST_FIRST(&matcher->resize_data); + LIST_REMOVE(resize_data, next); + + mlx5dr_action_free_single_stc(matcher->tbl->ctx, + matcher->tbl->type, + &resize_data->stc); + + if (matcher->tbl->type == MLX5DR_TABLE_TYPE_FDB) + mlx5dr_cmd_destroy_obj(resize_data->action_ste_rtc_1); + mlx5dr_cmd_destroy_obj(resize_data->action_ste_rtc_0); + if (resize_data->action_ste_pool) + mlx5dr_pool_destroy(resize_data->action_ste_pool); + simple_free(resize_data); + } +} + static int mlx5dr_matcher_bind_at(struct mlx5dr_matcher *matcher) { bool is_jumbo = mlx5dr_matcher_mt_is_jumbo(matcher->mt); @@ -790,7 +849,9 @@ static void mlx5dr_matcher_unbind_at(struct mlx5dr_matcher *matcher) { struct mlx5dr_table *tbl = matcher->tbl; - if (!matcher->action_ste.max_stes || matcher->flags & MLX5DR_MATCHER_FLAGS_COLLISION) + if (!matcher->action_ste.max_stes || + matcher->flags & MLX5DR_MATCHER_FLAGS_COLLISION || + mlx5dr_matcher_is_in_resize(matcher)) return; mlx5dr_action_free_single_stc(tbl->ctx, tbl->type, &matcher->action_ste.stc); @@ -947,6 +1008,10 @@ mlx5dr_matcher_process_attr(struct mlx5dr_cmd_query_caps *caps, DR_LOG(ERR, "Root matcher does not support at attaching"); goto not_supported; } + if (attr->resizable) { + DR_LOG(ERR, "Root matcher does not support resizing"); + goto not_supported; + } return 0; } @@ -960,6 +1025,8 @@ mlx5dr_matcher_process_attr(struct mlx5dr_cmd_query_caps *caps, attr->insert_mode == MLX5DR_MATCHER_INSERT_BY_HASH) attr->table.sz_col_log = mlx5dr_matcher_rules_to_tbl_depth(attr->rule.num_log); + matcher->flags |= attr->resizable ? MLX5DR_MATCHER_FLAGS_RESIZABLE : 0; + return mlx5dr_matcher_check_attr_sz(caps, attr); not_supported: @@ -1018,6 +1085,7 @@ static int mlx5dr_matcher_create_and_connect(struct mlx5dr_matcher *matcher) static void mlx5dr_matcher_destroy_and_disconnect(struct mlx5dr_matcher *matcher) { + mlx5dr_matcher_resize_uninit(matcher); mlx5dr_matcher_disconnect(matcher); mlx5dr_matcher_create_uninit_shared(matcher); mlx5dr_matcher_destroy_rtc(matcher, DR_MATCHER_RTC_TYPE_MATCH); @@ -1452,3 +1520,114 @@ int mlx5dr_match_template_destroy(struct mlx5dr_match_template *mt) simple_free(mt); return 0; } + +static int mlx5dr_matcher_resize_precheck(struct mlx5dr_matcher *src_matcher, + struct mlx5dr_matcher *dst_matcher) +{ + int i; + + if (mlx5dr_table_is_root(src_matcher->tbl) || + mlx5dr_table_is_root(dst_matcher->tbl)) { + DR_LOG(ERR, "Src/dst matcher belongs to root table - resize unsupported"); + goto out_einval; + } + + if (src_matcher->tbl->type != dst_matcher->tbl->type) { + DR_LOG(ERR, "Table type mismatch for src/dst matchers"); + goto out_einval; + } + + if (mlx5dr_matcher_req_fw_wqe(src_matcher) || + mlx5dr_matcher_req_fw_wqe(dst_matcher)) { + DR_LOG(ERR, "Matchers require FW WQE - resize unsupported"); + goto out_einval; + } + + if (!mlx5dr_matcher_is_resizable(src_matcher) || + !mlx5dr_matcher_is_resizable(dst_matcher)) { + DR_LOG(ERR, "Src/dst matcher is not resizable"); + goto out_einval; + } + + if (mlx5dr_matcher_is_insert_by_idx(src_matcher) != + mlx5dr_matcher_is_insert_by_idx(dst_matcher)) { + DR_LOG(ERR, "Src/dst matchers insert mode mismatch"); + goto out_einval; + } + + if (mlx5dr_matcher_is_in_resize(src_matcher) || + mlx5dr_matcher_is_in_resize(dst_matcher)) { + DR_LOG(ERR, "Src/dst matcher is already in resize"); + goto out_einval; + } + + /* Compare match templates - make sure the definers are equivalent */ + if (src_matcher->num_of_mt != dst_matcher->num_of_mt) { + DR_LOG(ERR, "Src/dst matcher match templates mismatch"); + goto out_einval; + } + + if (src_matcher->action_ste.max_stes > dst_matcher->action_ste.max_stes) { + DR_LOG(ERR, "Src/dst matcher max STEs mismatch"); + goto out_einval; + } + + for (i = 0; i < src_matcher->num_of_mt; i++) { + if (mlx5dr_definer_compare(src_matcher->mt[i].definer, + dst_matcher->mt[i].definer)) { + DR_LOG(ERR, "Src/dst matcher definers mismatch"); + goto out_einval; + } + } + + return 0; + +out_einval: + rte_errno = EINVAL; + return rte_errno; +} + +int mlx5dr_matcher_resize_set_target(struct mlx5dr_matcher *src_matcher, + struct mlx5dr_matcher *dst_matcher) +{ + int ret = 0; + + pthread_spin_lock(&src_matcher->tbl->ctx->ctrl_lock); + + if (mlx5dr_matcher_resize_precheck(src_matcher, dst_matcher)) { + ret = -rte_errno; + goto out; + } + + src_matcher->resize_dst = dst_matcher; + + if (mlx5dr_matcher_resize_init(src_matcher)) { + src_matcher->resize_dst = NULL; + ret = -rte_errno; + } + +out: + pthread_spin_unlock(&src_matcher->tbl->ctx->ctrl_lock); + return ret; +} + +int mlx5dr_matcher_resize_rule_move(struct mlx5dr_matcher *src_matcher, + struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr) +{ + if (unlikely(!mlx5dr_matcher_is_in_resize(src_matcher))) { + DR_LOG(ERR, "Matcher is not resizable or not in resize"); + goto out_einval; + } + + if (unlikely(src_matcher != rule->matcher)) { + DR_LOG(ERR, "Rule doesn't belong to src matcher"); + goto out_einval; + } + + return mlx5dr_rule_move_hws_add(rule, attr); + +out_einval: + rte_errno = EINVAL; + return -rte_errno; +} diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.h b/drivers/net/mlx5/hws/mlx5dr_matcher.h index 363a61fd41..0f2bf96e8b 100644 --- a/drivers/net/mlx5/hws/mlx5dr_matcher.h +++ b/drivers/net/mlx5/hws/mlx5dr_matcher.h @@ -26,6 +26,7 @@ enum mlx5dr_matcher_flags { MLX5DR_MATCHER_FLAGS_RANGE_DEFINER = 1 << 0, MLX5DR_MATCHER_FLAGS_HASH_DEFINER = 1 << 1, MLX5DR_MATCHER_FLAGS_COLLISION = 1 << 2, + MLX5DR_MATCHER_FLAGS_RESIZABLE = 1 << 3, }; struct mlx5dr_match_template { @@ -59,6 +60,14 @@ struct mlx5dr_matcher_action_ste { uint8_t max_stes; }; +struct mlx5dr_matcher_resize_data { + struct mlx5dr_pool_chunk stc; + struct mlx5dr_devx_obj *action_ste_rtc_0; + struct mlx5dr_devx_obj *action_ste_rtc_1; + struct mlx5dr_pool *action_ste_pool; + LIST_ENTRY(mlx5dr_matcher_resize_data) next; +}; + struct mlx5dr_matcher { struct mlx5dr_table *tbl; struct mlx5dr_matcher_attr attr; @@ -71,10 +80,12 @@ struct mlx5dr_matcher { uint8_t flags; struct mlx5dr_devx_obj *end_ft; struct mlx5dr_matcher *col_matcher; + struct mlx5dr_matcher *resize_dst; struct mlx5dr_matcher_match_ste match_ste; struct mlx5dr_matcher_action_ste action_ste; struct mlx5dr_definer *hash_definer; LIST_ENTRY(mlx5dr_matcher) next; + LIST_HEAD(resize_data_head, mlx5dr_matcher_resize_data) resize_data; }; static inline bool @@ -89,6 +100,16 @@ mlx5dr_matcher_mt_is_range(struct mlx5dr_match_template *mt) return (!!mt->range_definer); } +static inline bool mlx5dr_matcher_is_resizable(struct mlx5dr_matcher *matcher) +{ + return !!(matcher->flags & MLX5DR_MATCHER_FLAGS_RESIZABLE); +} + +static inline bool mlx5dr_matcher_is_in_resize(struct mlx5dr_matcher *matcher) +{ + return !!matcher->resize_dst; +} + static inline bool mlx5dr_matcher_req_fw_wqe(struct mlx5dr_matcher *matcher) { /* Currently HWS doesn't support hash different from match or range */ diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c b/drivers/net/mlx5/hws/mlx5dr_rule.c index e39137a6ee..6bf087e187 100644 --- a/drivers/net/mlx5/hws/mlx5dr_rule.c +++ b/drivers/net/mlx5/hws/mlx5dr_rule.c @@ -114,6 +114,23 @@ static void mlx5dr_rule_init_dep_wqe(struct mlx5dr_send_ring_dep_wqe *dep_wqe, } } +static void mlx5dr_rule_move_get_rtc(struct mlx5dr_rule *rule, + struct mlx5dr_send_ste_attr *ste_attr) +{ + struct mlx5dr_matcher *dst_matcher = rule->matcher->resize_dst; + + if (rule->resize_info->rtc_0) { + ste_attr->rtc_0 = dst_matcher->match_ste.rtc_0->id; + ste_attr->retry_rtc_0 = dst_matcher->col_matcher ? + dst_matcher->col_matcher->match_ste.rtc_0->id : 0; + } + if (rule->resize_info->rtc_1) { + ste_attr->rtc_1 = dst_matcher->match_ste.rtc_1->id; + ste_attr->retry_rtc_1 = dst_matcher->col_matcher ? + dst_matcher->col_matcher->match_ste.rtc_1->id : 0; + } +} + static void mlx5dr_rule_gen_comp(struct mlx5dr_send_engine *queue, struct mlx5dr_rule *rule, bool err, @@ -134,6 +151,34 @@ static void mlx5dr_rule_gen_comp(struct mlx5dr_send_engine *queue, mlx5dr_send_engine_gen_comp(queue, user_data, comp_status); } +static void +mlx5dr_rule_save_resize_info(struct mlx5dr_rule *rule, + struct mlx5dr_send_ste_attr *ste_attr) +{ + rule->resize_info = simple_calloc(1, sizeof(*rule->resize_info)); + if (unlikely(!rule->resize_info)) { + assert(rule->resize_info); + rte_errno = ENOMEM; + } + + memcpy(rule->resize_info->ctrl_seg, ste_attr->wqe_ctrl, + sizeof(rule->resize_info->ctrl_seg)); + memcpy(rule->resize_info->data_seg, ste_attr->wqe_data, + sizeof(rule->resize_info->data_seg)); + + rule->resize_info->action_ste_pool = rule->matcher->action_ste.max_stes ? + rule->matcher->action_ste.pool : + NULL; +} + +static void mlx5dr_rule_clear_resize_info(struct mlx5dr_rule *rule) +{ + if (rule->resize_info) { + simple_free(rule->resize_info); + rule->resize_info = NULL; + } +} + static void mlx5dr_rule_save_delete_info(struct mlx5dr_rule *rule, struct mlx5dr_send_ste_attr *ste_attr) @@ -161,17 +206,29 @@ mlx5dr_rule_save_delete_info(struct mlx5dr_rule *rule, return; } - if (is_jumbo) - memcpy(rule->tag.jumbo, ste_attr->wqe_data->jumbo, MLX5DR_JUMBO_TAG_SZ); - else - memcpy(rule->tag.match, ste_attr->wqe_data->tag, MLX5DR_MATCH_TAG_SZ); + if (likely(!mlx5dr_matcher_is_resizable(rule->matcher))) { + if (is_jumbo) + memcpy(&rule->tag.jumbo, ste_attr->wqe_data->action, MLX5DR_JUMBO_TAG_SZ); + else + memcpy(&rule->tag.match, ste_attr->wqe_data->tag, MLX5DR_MATCH_TAG_SZ); + return; + } + + mlx5dr_rule_save_resize_info(rule, ste_attr); } static void mlx5dr_rule_clear_delete_info(struct mlx5dr_rule *rule) { - if (unlikely(mlx5dr_matcher_req_fw_wqe(rule->matcher))) + if (unlikely(mlx5dr_matcher_req_fw_wqe(rule->matcher))) { simple_free(rule->tag_ptr); + return; + } + + if (unlikely(mlx5dr_matcher_is_resizable(rule->matcher))) { + mlx5dr_rule_clear_resize_info(rule); + return; + } } static void @@ -188,8 +245,11 @@ mlx5dr_rule_load_delete_info(struct mlx5dr_rule *rule, ste_attr->range_wqe_tag = &rule->tag_ptr[1]; ste_attr->send_attr.range_definer_id = rule->tag_ptr[1].reserved[1]; } - } else { + } else if (likely(!mlx5dr_matcher_is_resizable(rule->matcher))) { ste_attr->wqe_tag = &rule->tag; + } else { + ste_attr->wqe_tag = (struct mlx5dr_rule_match_tag *) + &rule->resize_info->data_seg[MLX5DR_STE_CTRL_SZ]; } } @@ -220,6 +280,7 @@ static int mlx5dr_rule_alloc_action_ste(struct mlx5dr_rule *rule, void mlx5dr_rule_free_action_ste_idx(struct mlx5dr_rule *rule) { struct mlx5dr_matcher *matcher = rule->matcher; + struct mlx5dr_pool *pool; if (rule->action_ste_idx > -1 && !matcher->attr.optimize_using_rule_idx && @@ -229,7 +290,11 @@ void mlx5dr_rule_free_action_ste_idx(struct mlx5dr_rule *rule) /* This release is safe only when the rule match part was deleted */ ste.order = rte_log2_u32(matcher->action_ste.max_stes); ste.offset = rule->action_ste_idx; - mlx5dr_pool_chunk_free(matcher->action_ste.pool, &ste); + + /* Free the original action pool if rule was resized */ + pool = mlx5dr_matcher_is_resizable(matcher) ? rule->resize_info->action_ste_pool : + matcher->action_ste.pool; + mlx5dr_pool_chunk_free(pool, &ste); } } @@ -266,6 +331,23 @@ static void mlx5dr_rule_create_init(struct mlx5dr_rule *rule, apply->require_dep = 0; } +static void mlx5dr_rule_move_init(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr) +{ + /* Save the old RTC IDs to be later used in match STE delete */ + rule->resize_info->rtc_0 = rule->rtc_0; + rule->resize_info->rtc_1 = rule->rtc_1; + rule->resize_info->rule_idx = attr->rule_idx; + + rule->rtc_0 = 0; + rule->rtc_1 = 0; + + rule->pending_wqes = 0; + rule->action_ste_idx = -1; + rule->status = MLX5DR_RULE_STATUS_CREATING; + rule->resize_info->state = MLX5DR_RULE_RESIZE_STATE_WRITING; +} + static int mlx5dr_rule_create_hws_fw_wqe(struct mlx5dr_rule *rule, struct mlx5dr_rule_attr *attr, uint8_t mt_idx, @@ -346,7 +428,9 @@ static int mlx5dr_rule_create_hws_fw_wqe(struct mlx5dr_rule *rule, /* Send WQEs to FW */ mlx5dr_send_stes_fw(queue, &ste_attr); - /* Backup TAG on the rule for deletion */ + /* Backup TAG on the rule for deletion, and save ctrl/data + * segments to be used when resizing the matcher. + */ mlx5dr_rule_save_delete_info(rule, &ste_attr); mlx5dr_send_engine_inc_rule(queue); @@ -469,7 +553,9 @@ static int mlx5dr_rule_create_hws(struct mlx5dr_rule *rule, mlx5dr_send_ste(queue, &ste_attr); } - /* Backup TAG on the rule for deletion, only after insertion */ + /* Backup TAG on the rule for deletion and resize info for + * moving rules to a new matcher, only after insertion. + */ if (!is_update) mlx5dr_rule_save_delete_info(rule, &ste_attr); @@ -496,7 +582,7 @@ static void mlx5dr_rule_destroy_failed_hws(struct mlx5dr_rule *rule, /* Rule failed now we can safely release action STEs */ mlx5dr_rule_free_action_ste_idx(rule); - /* Clear complex tag */ + /* Clear complex tag or info that was saved for matcher resizing */ mlx5dr_rule_clear_delete_info(rule); /* If a rule that was indicated as burst (need to trigger HW) has failed @@ -571,12 +657,12 @@ static int mlx5dr_rule_destroy_hws(struct mlx5dr_rule *rule, mlx5dr_rule_load_delete_info(rule, &ste_attr); - if (unlikely(fw_wqe)) { + if (unlikely(fw_wqe)) mlx5dr_send_stes_fw(queue, &ste_attr); - mlx5dr_rule_clear_delete_info(rule); - } else { + else mlx5dr_send_ste(queue, &ste_attr); - } + + mlx5dr_rule_clear_delete_info(rule); return 0; } @@ -664,9 +750,11 @@ static int mlx5dr_rule_destroy_root(struct mlx5dr_rule *rule, return 0; } -static int mlx5dr_rule_enqueue_precheck(struct mlx5dr_context *ctx, +static int mlx5dr_rule_enqueue_precheck(struct mlx5dr_rule *rule, struct mlx5dr_rule_attr *attr) { + struct mlx5dr_context *ctx = rule->matcher->tbl->ctx; + if (unlikely(!attr->user_data)) { rte_errno = EINVAL; return rte_errno; @@ -681,6 +769,153 @@ static int mlx5dr_rule_enqueue_precheck(struct mlx5dr_context *ctx, return 0; } +static int mlx5dr_rule_enqueue_precheck_move(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr) +{ + if (unlikely(rule->status != MLX5DR_RULE_STATUS_CREATED)) { + rte_errno = EINVAL; + return rte_errno; + } + + return mlx5dr_rule_enqueue_precheck(rule, attr); +} + +static int mlx5dr_rule_enqueue_precheck_create(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr) +{ + if (unlikely(mlx5dr_matcher_is_in_resize(rule->matcher))) { + /* Matcher in resize - new rules are not allowed */ + rte_errno = EAGAIN; + return rte_errno; + } + + return mlx5dr_rule_enqueue_precheck(rule, attr); +} + +static int mlx5dr_rule_enqueue_precheck_update(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr) +{ + struct mlx5dr_matcher *matcher = rule->matcher; + + if (unlikely((mlx5dr_table_is_root(matcher->tbl) || + mlx5dr_matcher_req_fw_wqe(matcher)))) { + DR_LOG(ERR, "Rule update is not supported on current matcher"); + rte_errno = ENOTSUP; + return rte_errno; + } + + if (unlikely(!matcher->attr.optimize_using_rule_idx && + !mlx5dr_matcher_is_insert_by_idx(matcher))) { + DR_LOG(ERR, "Rule update requires optimize by idx matcher"); + rte_errno = ENOTSUP; + return rte_errno; + } + + if (unlikely(mlx5dr_matcher_is_resizable(rule->matcher))) { + DR_LOG(ERR, "Rule update is not supported on resizable matcher"); + rte_errno = ENOTSUP; + return rte_errno; + } + + if (unlikely(rule->status != MLX5DR_RULE_STATUS_CREATED)) { + DR_LOG(ERR, "Current rule status does not allow update"); + rte_errno = EBUSY; + return rte_errno; + } + + return mlx5dr_rule_enqueue_precheck_create(rule, attr); +} + +int mlx5dr_rule_move_hws_remove(struct mlx5dr_rule *rule, + void *queue_ptr, + void *user_data) +{ + bool is_jumbo = mlx5dr_matcher_mt_is_jumbo(rule->matcher->mt); + struct mlx5dr_wqe_gta_ctrl_seg empty_wqe_ctrl = {0}; + struct mlx5dr_matcher *matcher = rule->matcher; + struct mlx5dr_send_engine *queue = queue_ptr; + struct mlx5dr_send_ste_attr ste_attr = {0}; + + /* Send dependent WQEs */ + mlx5dr_send_all_dep_wqe(queue); + + rule->resize_info->state = MLX5DR_RULE_RESIZE_STATE_DELETING; + + ste_attr.send_attr.fence = 0; + ste_attr.send_attr.opmod = MLX5DR_WQE_GTA_OPMOD_STE; + ste_attr.send_attr.opcode = MLX5DR_WQE_OPCODE_TBL_ACCESS; + ste_attr.send_attr.len = MLX5DR_WQE_SZ_GTA_CTRL + MLX5DR_WQE_SZ_GTA_DATA; + ste_attr.send_attr.rule = rule; + ste_attr.send_attr.notify_hw = 1; + ste_attr.send_attr.user_data = user_data; + ste_attr.rtc_0 = rule->resize_info->rtc_0; + ste_attr.rtc_1 = rule->resize_info->rtc_1; + ste_attr.used_id_rtc_0 = &rule->resize_info->rtc_0; + ste_attr.used_id_rtc_1 = &rule->resize_info->rtc_1; + ste_attr.wqe_ctrl = &empty_wqe_ctrl; + ste_attr.wqe_tag_is_jumbo = is_jumbo; + ste_attr.gta_opcode = MLX5DR_WQE_GTA_OP_DEACTIVATE; + + if (unlikely(mlx5dr_matcher_is_insert_by_idx(matcher))) + ste_attr.direct_index = rule->resize_info->rule_idx; + + mlx5dr_rule_load_delete_info(rule, &ste_attr); + mlx5dr_send_ste(queue, &ste_attr); + + return 0; +} + +int mlx5dr_rule_move_hws_add(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr) +{ + bool is_jumbo = mlx5dr_matcher_mt_is_jumbo(rule->matcher->mt); + struct mlx5dr_context *ctx = rule->matcher->tbl->ctx; + struct mlx5dr_matcher *matcher = rule->matcher; + struct mlx5dr_send_ste_attr ste_attr = {0}; + struct mlx5dr_send_engine *queue; + + if (unlikely(mlx5dr_rule_enqueue_precheck_move(rule, attr))) + return -rte_errno; + + queue = &ctx->send_queue[attr->queue_id]; + + if (unlikely(mlx5dr_send_engine_err(queue))) { + rte_errno = EIO; + return rte_errno; + } + + mlx5dr_rule_move_init(rule, attr); + + mlx5dr_rule_move_get_rtc(rule, &ste_attr); + + ste_attr.send_attr.opmod = MLX5DR_WQE_GTA_OPMOD_STE; + ste_attr.send_attr.opcode = MLX5DR_WQE_OPCODE_TBL_ACCESS; + ste_attr.send_attr.len = MLX5DR_WQE_SZ_GTA_CTRL + MLX5DR_WQE_SZ_GTA_DATA; + ste_attr.gta_opcode = MLX5DR_WQE_GTA_OP_ACTIVATE; + ste_attr.wqe_tag_is_jumbo = is_jumbo; + + ste_attr.send_attr.rule = rule; + ste_attr.send_attr.fence = 0; + ste_attr.send_attr.notify_hw = !attr->burst; + ste_attr.send_attr.user_data = attr->user_data; + + ste_attr.used_id_rtc_0 = &rule->rtc_0; + ste_attr.used_id_rtc_1 = &rule->rtc_1; + ste_attr.wqe_ctrl = (struct mlx5dr_wqe_gta_ctrl_seg *)rule->resize_info->ctrl_seg; + ste_attr.wqe_data = (struct mlx5dr_wqe_gta_data_seg_ste *)rule->resize_info->data_seg; + ste_attr.direct_index = mlx5dr_matcher_is_insert_by_idx(matcher) ? + attr->rule_idx : 0; + + mlx5dr_send_ste(queue, &ste_attr); + mlx5dr_send_engine_inc_rule(queue); + + /* Send dependent WQEs */ + if (!attr->burst) + mlx5dr_send_all_dep_wqe(queue); + + return 0; +} + int mlx5dr_rule_create(struct mlx5dr_matcher *matcher, uint8_t mt_idx, const struct rte_flow_item items[], @@ -689,13 +924,11 @@ int mlx5dr_rule_create(struct mlx5dr_matcher *matcher, struct mlx5dr_rule_attr *attr, struct mlx5dr_rule *rule_handle) { - struct mlx5dr_context *ctx; int ret; rule_handle->matcher = matcher; - ctx = matcher->tbl->ctx; - if (mlx5dr_rule_enqueue_precheck(ctx, attr)) + if (unlikely(mlx5dr_rule_enqueue_precheck_create(rule_handle, attr))) return -rte_errno; assert(matcher->num_of_mt >= mt_idx); @@ -723,7 +956,7 @@ int mlx5dr_rule_destroy(struct mlx5dr_rule *rule, { int ret; - if (mlx5dr_rule_enqueue_precheck(rule->matcher->tbl->ctx, attr)) + if (unlikely(mlx5dr_rule_enqueue_precheck(rule, attr))) return -rte_errno; if (unlikely(mlx5dr_table_is_root(rule->matcher->tbl))) @@ -739,24 +972,9 @@ int mlx5dr_rule_action_update(struct mlx5dr_rule *rule_handle, struct mlx5dr_rule_action rule_actions[], struct mlx5dr_rule_attr *attr) { - struct mlx5dr_matcher *matcher = rule_handle->matcher; int ret; - if (unlikely(mlx5dr_table_is_root(matcher->tbl) || - unlikely(mlx5dr_matcher_req_fw_wqe(matcher)))) { - DR_LOG(ERR, "Rule update not supported on current matcher"); - rte_errno = ENOTSUP; - return -rte_errno; - } - - if (!matcher->attr.optimize_using_rule_idx && - !mlx5dr_matcher_is_insert_by_idx(matcher)) { - DR_LOG(ERR, "Rule update requires optimize by idx matcher"); - rte_errno = ENOTSUP; - return -rte_errno; - } - - if (mlx5dr_rule_enqueue_precheck(matcher->tbl->ctx, attr)) + if (unlikely(mlx5dr_rule_enqueue_precheck_update(rule_handle, attr))) return -rte_errno; ret = mlx5dr_rule_create_hws(rule_handle, @@ -780,7 +998,7 @@ int mlx5dr_rule_hash_calculate(struct mlx5dr_matcher *matcher, enum mlx5dr_rule_hash_calc_mode mode, uint32_t *ret_hash) { - uint8_t tag[MLX5DR_STE_SZ] = {0}; + uint8_t tag[MLX5DR_WQE_SZ_GTA_DATA] = {0}; struct mlx5dr_match_template *mt; if (!matcher || !matcher->mt) { diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.h b/drivers/net/mlx5/hws/mlx5dr_rule.h index f7d97eead5..07adf9c5ad 100644 --- a/drivers/net/mlx5/hws/mlx5dr_rule.h +++ b/drivers/net/mlx5/hws/mlx5dr_rule.h @@ -10,7 +10,6 @@ enum { MLX5DR_ACTIONS_SZ = 12, MLX5DR_MATCH_TAG_SZ = 32, MLX5DR_JUMBO_TAG_SZ = 44, - MLX5DR_STE_SZ = 64, }; enum mlx5dr_rule_status { @@ -23,6 +22,12 @@ enum mlx5dr_rule_status { MLX5DR_RULE_STATUS_FAILED, }; +enum mlx5dr_rule_move_state { + MLX5DR_RULE_RESIZE_STATE_IDLE, + MLX5DR_RULE_RESIZE_STATE_WRITING, + MLX5DR_RULE_RESIZE_STATE_DELETING, +}; + struct mlx5dr_rule_match_tag { union { uint8_t jumbo[MLX5DR_JUMBO_TAG_SZ]; @@ -33,6 +38,16 @@ struct mlx5dr_rule_match_tag { }; }; +struct mlx5dr_rule_resize_info { + uint8_t state; + uint32_t rtc_0; + uint32_t rtc_1; + uint32_t rule_idx; + struct mlx5dr_pool *action_ste_pool; + uint8_t ctrl_seg[MLX5DR_WQE_SZ_GTA_CTRL]; /* Ctrl segment of STE: 48 bytes */ + uint8_t data_seg[MLX5DR_WQE_SZ_GTA_DATA]; /* Data segment of STE: 64 bytes */ +}; + struct mlx5dr_rule { struct mlx5dr_matcher *matcher; union { @@ -40,6 +55,7 @@ struct mlx5dr_rule { /* Pointer to tag to store more than one tag */ struct mlx5dr_rule_match_tag *tag_ptr; struct ibv_flow *flow; + struct mlx5dr_rule_resize_info *resize_info; }; uint32_t rtc_0; /* The RTC into which the STE was inserted */ uint32_t rtc_1; /* The RTC into which the STE was inserted */ @@ -50,4 +66,16 @@ struct mlx5dr_rule { void mlx5dr_rule_free_action_ste_idx(struct mlx5dr_rule *rule); +int mlx5dr_rule_move_hws_remove(struct mlx5dr_rule *rule, + void *queue, void *user_data); + +int mlx5dr_rule_move_hws_add(struct mlx5dr_rule *rule, + struct mlx5dr_rule_attr *attr); + +static inline bool mlx5dr_rule_move_in_progress(struct mlx5dr_rule *rule) +{ + return rule->resize_info && + rule->resize_info->state != MLX5DR_RULE_RESIZE_STATE_IDLE; +} + #endif /* MLX5DR_RULE_H_ */ diff --git a/drivers/net/mlx5/hws/mlx5dr_send.c b/drivers/net/mlx5/hws/mlx5dr_send.c index 622d574bfa..64138279a1 100644 --- a/drivers/net/mlx5/hws/mlx5dr_send.c +++ b/drivers/net/mlx5/hws/mlx5dr_send.c @@ -444,6 +444,46 @@ void mlx5dr_send_engine_flush_queue(struct mlx5dr_send_engine *queue) mlx5dr_send_engine_post_ring(sq, queue->uar, wqe_ctrl); } +static void +mlx5dr_send_engine_update_rule_resize(struct mlx5dr_send_engine *queue, + struct mlx5dr_send_ring_priv *priv, + enum rte_flow_op_status *status) +{ + switch (priv->rule->resize_info->state) { + case MLX5DR_RULE_RESIZE_STATE_WRITING: + if (priv->rule->status == MLX5DR_RULE_STATUS_FAILING) { + /* Backup original RTCs */ + uint32_t orig_rtc_0 = priv->rule->resize_info->rtc_0; + uint32_t orig_rtc_1 = priv->rule->resize_info->rtc_1; + + /* Delete partially failed move rule using resize_info */ + priv->rule->resize_info->rtc_0 = priv->rule->rtc_0; + priv->rule->resize_info->rtc_1 = priv->rule->rtc_1; + + /* Move rule to original RTC for future delete */ + priv->rule->rtc_0 = orig_rtc_0; + priv->rule->rtc_1 = orig_rtc_1; + } + /* Clean leftovers */ + mlx5dr_rule_move_hws_remove(priv->rule, queue, priv->user_data); + break; + + case MLX5DR_RULE_RESIZE_STATE_DELETING: + if (priv->rule->status == MLX5DR_RULE_STATUS_FAILING) { + *status = RTE_FLOW_OP_ERROR; + } else { + *status = RTE_FLOW_OP_SUCCESS; + priv->rule->matcher = priv->rule->matcher->resize_dst; + } + priv->rule->resize_info->state = MLX5DR_RULE_RESIZE_STATE_IDLE; + priv->rule->status = MLX5DR_RULE_STATUS_CREATED; + break; + + default: + break; + } +} + static void mlx5dr_send_engine_update_rule(struct mlx5dr_send_engine *queue, struct mlx5dr_send_ring_priv *priv, uint16_t wqe_cnt, @@ -465,6 +505,11 @@ static void mlx5dr_send_engine_update_rule(struct mlx5dr_send_engine *queue, /* Update rule status for the last completion */ if (!priv->rule->pending_wqes) { + if (unlikely(mlx5dr_rule_move_in_progress(priv->rule))) { + mlx5dr_send_engine_update_rule_resize(queue, priv, status); + return; + } + if (unlikely(priv->rule->status == MLX5DR_RULE_STATUS_FAILING)) { /* Rule completely failed and doesn't require cleanup */ if (!priv->rule->rtc_0 && !priv->rule->rtc_1) From patchwork Tue Feb 13 09:50:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136626 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E217B43B05; Tue, 13 Feb 2024 10:51:29 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E8C0641156; Tue, 13 Feb 2024 10:51:14 +0100 (CET) Received: from NAM02-DM3-obe.outbound.protection.outlook.com (mail-dm3nam02on2085.outbound.protection.outlook.com [40.107.95.85]) by mails.dpdk.org (Postfix) with ESMTP id C80C44113C for ; Tue, 13 Feb 2024 10:51:13 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SoSYc4SBZAB+oc3IXRY9g/J+bCk884+WaqdrCsX1D6a6TYsUkUQ8xLzI4jsHuHfnWozWdx8KKGzkmUPjsP4KSaQuYToSeJsyBOhlIcLxDA02+oHDrI4vLBY7F2dQTelimYHgXYwABEnwVHacjWpbFM5mV53rdZnvb4jObxXH4qswYbOTkJqtIVuMrkc0/v60w2GoucidciXI7gQMfgCR8NGAAnOPKro6mjcM6P7xSiijnLo6w0UOc4sc2AhAJUz2h3J++Gp7J1gVIeLulIjU0jEH17uzSQ4HhTyGwua7RtRxDJ8xhdOMtRt82sABapnHXBtmpuYT+MVfmMlT9clwmg== 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=9iSz6FCadzi9LsjJa53nhzHVDO3LY0bdVDsSp/lwQko=; b=MU6QqM3NZgwGayERc4qEWI6Y24ug7AKVzjluhFA8FWMg1ekYlp3/PpO0lL7eufZENzBTRyNEU0IsX2+48s1FLBa49DoYjFS7IzsEN+Sj50Q4IkcVTdb2VWxKUxpdEgnTqCTlJTBYsJS3iMhBXe69vK5OGq3kzbMKi7XrCYEn2MllLDqbHs1zETkk3wsuY6MKa92pgJuVlhD6dvr5d+EmnHd9/c5E1asbKEnh3lzePK8W7/hUPkmtV0WghPeX7Wn0jci6ISpfllDOifYP868KmVzSqFywGmj1OCpSS7ecVceTF+IUYg1bxf8cDl1EZovYnbyhnZrNkq9dfA0aqnBy2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=9iSz6FCadzi9LsjJa53nhzHVDO3LY0bdVDsSp/lwQko=; b=eYvFTsiLn/y4oD1Cr/fQvC2KTcJjt+WLjL9DPO763wzgL6qo4aLYDOTG0Wd63I/IrJ5WZ2wVqFQ9+KbVyLnuIqntVZlk23EESyxDRmvPQKZ3Sl1MsoNGaLqF0h54COSVT3+dZNBix86BcsGbsjU34j/70nCaq4/M28ZrSac/WOKln8HmL1y5Bksn3ObNZI1qrdQDqhgxPYBQPihaWQsEMeG+vscYm/mqFzIVCDtbddLJ97mqdTiHs4fb6fiJG1T/fW4CswR/aROsCLmxszsMMYZ/I4ZYUYwUjcdhlTFTtQoRp0fcKbCa0sqpoL/cI2g+U9iDder6ENUgDkLL84uEnw== Received: from BN9PR03CA0762.namprd03.prod.outlook.com (2603:10b6:408:13a::17) by DS7PR12MB6072.namprd12.prod.outlook.com (2603:10b6:8:9c::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.24; Tue, 13 Feb 2024 09:51:11 +0000 Received: from BN2PEPF0000449E.namprd02.prod.outlook.com (2603:10b6:408:13a:cafe::39) by BN9PR03CA0762.outlook.office365.com (2603:10b6:408:13a::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39 via Frontend Transport; Tue, 13 Feb 2024 09:51:11 +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 BN2PEPF0000449E.mail.protection.outlook.com (10.167.243.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:11 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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.986.41; Tue, 13 Feb 2024 01:51:00 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 13 Feb 2024 01:51:00 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:50:57 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad CC: Subject: [PATCH 4/9] net/mlx5/hws: reordering the STE fields to improve hash Date: Tue, 13 Feb 2024 11:50:32 +0200 Message-ID: <20240213095038.451299-4-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF0000449E:EE_|DS7PR12MB6072:EE_ X-MS-Office365-Filtering-Correlation-Id: 6b9281ec-914d-43ef-4776-08dc2c794f5f X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bBxYxuXaTY/rQ306gHFqTv5uKYXtO2/sPtJxdQjYr0CCopsWRm3x9hE1IxkZ4cgcj0T6enbk6jIoiyJ1Z6DDg8aZLTbAi16Pzr1zR3AhjScUhozkUfa2n0yfhIRfs/vP8BX+D3hQ73OS71Xvs9KSGGhRwWtxfjhhyiJt8v7SYMDzfVGSEvqnnXq0YIdsbUmv5oJQOnYXcMbdxqyepAMgjoJytGr306WSXS7EqT76iANxb8gjSY2dOzNaYa2Ch6CaHf7s3MpYkGbtNHwgOpzAJz9BiCKrK4Dmcb5jOs3bJxN2fJnn6jMBs/bZ3wn0MFu0W4C8q+o96+8v7LQxuDvIvYLhjDWRpeB3/iZNl1GmwqxHuFly3cLoXBdMrP4Y+txtwZ+03drvlD2ZR8q5X+g69N3Uz6Vdj5kDvHcqJ29v0Q/Bm4zR4d93Mw7Tcaf9EMmCpB7pGmUVMFboW9tMXsdywT0GkWVye3TmOE75f7QI1guF71zxiIcZzqgEkKVlhzZr2S/EfmdAX87Tj85F40ONsCA/jnuKEh6iGunIao/G4jv1+ou7mEczN0O8Avr3iWSPyNgQHCP4dqthksSE2h82Of+7Wj6CIUT9t0LfHrHKB7u0SSz5KLeXbDTdnQvCzC3AydbokbArQn9ldyi+tPTWzA== 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:(13230031)(4636009)(346002)(376002)(136003)(39860400002)(396003)(230922051799003)(1800799012)(82310400011)(64100799003)(186009)(451199024)(36840700001)(40470700004)(46966006)(8936002)(8676002)(41300700001)(2906002)(5660300002)(55016003)(4326008)(921011)(83380400001)(7636003)(86362001)(356005)(36756003)(2616005)(1076003)(426003)(7696005)(110136005)(70206006)(6666004)(6286002)(336012)(70586007)(316002)(82740400003)(6636002)(478600001)(26005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:11.1889 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6b9281ec-914d-43ef-4776-08dc2c794f5f 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: BN2PEPF0000449E.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR12MB6072 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 Inserting two rules with the same hash calculation result into the same matcher will cause collisions, which can cause degradation in PPS. Changing the order of some fields in the STE can change the hash result, and doing this for every value would give us a different hash distribution for the inputs. By using precomputed optimal DW locations, we can change the STE order for a limited set of the most common values to reduce the number of hash collisions and improve latency. Signed-off-by: Itamar Gozlan Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr_definer.c | 64 +++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index e564062313..eb788a772a 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -100,6 +100,33 @@ __mlx5_dw_off(typ, fld))) >> __mlx5_dw_bit_off(typ, fld)) & \ __mlx5_mask(typ, fld)) +#define MAX_ROW_LOG 31 + +enum header_layout { + MLX5DR_HL_IPV4_SRC = 64, + MLX5DR_HL_IPV4_DST = 65, + MAX_HL_PRIO, +}; + +/* Each row (i) indicates a different matcher size, and each column (j) + * represents {DW5, DW4, DW3, DW2, DW1, DW0}. + * For values 0,..,2^i, and j (DW) 0,..,5: optimal_dist_dw[i][j] is 1 if the + * number of different hash results on these values equals 2^i, meaning this + * DW hash distribution is complete. + */ +int optimal_dist_dw[MAX_ROW_LOG][DW_SELECTORS_MATCH] = { + {1, 1, 1, 1, 1, 1}, {0, 1, 1, 0, 1, 0}, {0, 1, 1, 0, 1, 0}, + {1, 0, 1, 0, 1, 0}, {0, 0, 0, 1, 1, 0}, {0, 1, 1, 0, 1, 0}, + {0, 0, 0, 0, 1, 0}, {0, 1, 1, 0, 1, 0}, {0, 0, 0, 0, 0, 0}, + {1, 0, 1, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 1, 0, 1, 0, 0}, + {1, 0, 0, 0, 0, 0}, {0, 0, 1, 0, 0, 1}, {1, 1, 1, 0, 0, 0}, + {1, 1, 1, 0, 1, 0}, {0, 0, 1, 1, 0, 0}, {0, 1, 1, 0, 0, 1}, + {0, 0, 1, 0, 0, 1}, {0, 0, 1, 0, 0, 0}, {1, 0, 1, 1, 0, 0}, + {1, 0, 1, 0, 0, 1}, {0, 0, 1, 1, 0, 1}, {1, 1, 1, 0, 0, 0}, + {0, 1, 0, 1, 0, 1}, {0, 0, 0, 0, 0, 1}, {0, 0, 0, 1, 1, 1}, + {0, 0, 1, 0, 0, 1}, {1, 1, 0, 1, 1, 0}, {0, 0, 0, 0, 1, 0}, + {0, 0, 0, 1, 1, 0}}; + struct mlx5dr_definer_sel_ctrl { uint8_t allowed_full_dw; /* Full DW selectors cover all offsets */ uint8_t allowed_lim_dw; /* Limited DW selectors cover offset < 64 */ @@ -3185,6 +3212,37 @@ mlx5dr_definer_find_best_range_fit(struct mlx5dr_definer *definer, return rte_errno; } +static void mlx5dr_definer_optimize_order(struct mlx5dr_definer *definer, int num_log) +{ + uint8_t hl_prio[MAX_HL_PRIO - 1] = {MLX5DR_HL_IPV4_SRC, + MLX5DR_HL_IPV4_DST, + MAX_HL_PRIO}; + int dw = 0, i = 0, j; + int *dw_flag; + uint8_t tmp; + + dw_flag = optimal_dist_dw[num_log]; + + while (hl_prio[i] != MAX_HL_PRIO) { + j = 0; + /* Finding a candidate to improve its hash distribution */ + while (j < DW_SELECTORS_MATCH && (hl_prio[i] != definer->dw_selector[j])) + j++; + + /* Finding a DW location with good hash distribution */ + while (dw < DW_SELECTORS_MATCH && dw_flag[dw] == 0) + dw++; + + if (dw < DW_SELECTORS_MATCH && j < DW_SELECTORS_MATCH) { + tmp = definer->dw_selector[dw]; + definer->dw_selector[dw] = definer->dw_selector[j]; + definer->dw_selector[j] = tmp; + dw++; + } + i++; + } +} + static int mlx5dr_definer_find_best_match_fit(struct mlx5dr_context *ctx, struct mlx5dr_definer *definer, @@ -3355,6 +3413,12 @@ mlx5dr_definer_calc_layout(struct mlx5dr_matcher *matcher, goto free_fc; } + if (!mlx5dr_definer_is_jumbo(match_definer) && + !mlx5dr_matcher_req_fw_wqe(matcher) && + !mlx5dr_matcher_is_resizable(matcher) && + !mlx5dr_matcher_is_insert_by_idx(matcher)) + mlx5dr_definer_optimize_order(match_definer, matcher->attr.rule.num_log); + /* Find the range definer layout for match templates fcrs */ ret = mlx5dr_definer_find_best_range_fit(range_definer, matcher); if (ret) { From patchwork Tue Feb 13 09:50:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136627 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id E06BB43B05; Tue, 13 Feb 2024 10:51:37 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 4477541153; Tue, 13 Feb 2024 10:51:21 +0100 (CET) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2067.outbound.protection.outlook.com [40.107.94.67]) by mails.dpdk.org (Postfix) with ESMTP id 4EDB94027B for ; Tue, 13 Feb 2024 10:51:20 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WyG29FeiiyJIuBu0KvjgXjEm9nkjCyYC9/JxzBaQR+MNguKoMymYeGsbtsd4a8a3n4PzhFpxKLohnAiJcfQG4bnkuYIxSHKkkgPh5AW6M9kxGezDqqHV/NW+zzqOq7cXs2yf4ufxiWyckwFfV4cNLba4nIWYny6zPNTeBGRenFwMd4PYw/QHNFIiYyJWukAc6SAgZvWlUo5za72qlV5g8bJEhw8rDC9PbM86yVsx6VO6XgTDw+739ymsU4yIZkxoiaNWiN1fXkIHejqFWBonu8J0rCGyz0zMxSxYc+o1+6/SqqCdKipWFqEn8lbz8rvTDpe430waqZrM8EpcuMdr7g== 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=UJhiDqlBeo+XYxbdtLuJR2A5BqKb+TXUUrMsmnjAGJc=; b=JVNafvLasqN67HOIlC5wcn8s1rvGw64zdUZ4aXkDQiirG3gtbqEHSeO85AOse5UgpaZd3zLHCh0YdSrvuBK4CSh0647qdFA/bAAv5ZXQM3iUR5xj65ZyDxEYmdr/TB5OowBG4BIt7w/r17gSe8+YsvWN0UGI3ray1suEoIG4/UHtWB9Hk8arbzu3Pn/OpNO+RSTqb78ZJ8knlUPFY2LEtTj3drUixxXaNMIljzuBdmMivCy8FJEi6imcsayTB3fVyOMKyP8qvu2IuhHhOJqGc2hpSunCohnRXnKR8xsHcagB4Rf6uZj5rPSc21r/cQru6wwD2qCWqXvcrVb6R1bYfQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=monjalon.net 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=UJhiDqlBeo+XYxbdtLuJR2A5BqKb+TXUUrMsmnjAGJc=; b=HekPhhestK7ivQmDcy9RX8eL+xSct9AKo8nukGmW+iKg8rVTeos71QHAxJnVcPw27VSQvYPIpIt12xOK9nLOh4EV8TGDdMTH6HBRUn6NCjHo9b3jvu0se8OZ2qVwmw6ac1jkkmYm8Zunz6+iXq4WSyxPx2mpqzOyY2Us5O0c4E1a279XuGIPgAnmmAO86bbS8yYfK1hrN8uM7X4NdlCQ16KxYJKs9eU4kon7Nxkpm5hKbTxTGUXmiqRSdxiKMi8xKRmOTMAzcmu0SrSVWHi9cL8Iy+IZM1UgZQZ+yJQTnTW3K42TCeazX5qTrmrbgBjA+o9TkUZmCm9E3TssRHvh9A== Received: from CH2PR19CA0020.namprd19.prod.outlook.com (2603:10b6:610:4d::30) by SJ2PR12MB8012.namprd12.prod.outlook.com (2603:10b6:a03:4c7::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.14; Tue, 13 Feb 2024 09:51:17 +0000 Received: from CH2PEPF0000009A.namprd02.prod.outlook.com (2603:10b6:610:4d:cafe::6b) by CH2PR19CA0020.outlook.office365.com (2603:10b6:610:4d::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39 via Frontend Transport; Tue, 13 Feb 2024 09:51: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 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:17 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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.986.41; Tue, 13 Feb 2024 01:51:04 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Tue, 13 Feb 2024 01:51:03 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:51:01 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad CC: Subject: [PATCH 5/9] net/mlx5/hws: check the rule status on rule update Date: Tue, 13 Feb 2024 11:50:33 +0200 Message-ID: <20240213095038.451299-5-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF0000009A:EE_|SJ2PR12MB8012:EE_ X-MS-Office365-Filtering-Correlation-Id: a0ac552f-92c7-40c2-b2ee-08dc2c7952d5 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TvYRXwVlWQ/I5Kgk0Ozr1XKTtEWqEeoXbOsgqCnR0RA6trAvvZDnikee+rGpz5l/0LoF8O0sURypSzFjFyiNwSYWeArRP+JD1ywXKOTMOxxq1WOnBNh3gzekyubJkbU9H2a79E68R+bqrI9gV8/2KAcPUYu102sMlTjki890gmwdQplmFrEuldubpkt6OUKxijwXOLjiWcmaJF7J+Fqq6lxT40qkIEd5r9f2CB9sKD0eq0zdj0lRhBMIS4Rq9nuxu6IfXwr7CXyvsOt5A7ABqCEl7rgCcc/fdWqlHTB75nRI6Wp9nUp4vavtxS3Gvzbm8jdNHuMQ6mJMT5gbpfThMx4uG8KnLj6KWdH9nAbVBHN8VI9lXU0fJdSvevL4YG76vK0l3qkvgVC9fgaRvR/cF+Dze9NfyNZkZ4Oaydz8KcrtV893oQD6EzJBzJznD1TnNGTEK1KrD4/6rzq/swBEpwrm+CSx1VeAVwJhP1ovo7ikpa9rnloPUYoViUjdu6hIEDs0iJ/IzjKNbx0qkt6oTn4jtUyqtJ4K1p839AvtEqZN0pMmxP3NmW/8KAFPRjEhNZTtai6MGwCsXJLrdxGrHmqbGg2jBkrGQ841j7lY5XjsszWdAk9T8wErGP7xNu2XTdoCaUPWoA6QFqH32EoVrw== 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)(4636009)(376002)(136003)(396003)(346002)(39860400002)(230922051799003)(64100799003)(82310400011)(451199024)(1800799012)(186009)(40470700004)(46966006)(36840700001)(2616005)(83380400001)(82740400003)(26005)(1076003)(356005)(7696005)(336012)(6286002)(41300700001)(36756003)(86362001)(6666004)(426003)(921011)(7636003)(478600001)(4326008)(8676002)(55016003)(8936002)(5660300002)(2906002)(15650500001)(70586007)(6636002)(70206006)(110136005)(316002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:17.0606 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a0ac552f-92c7-40c2-b2ee-08dc2c7952d5 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: CH2PEPF0000009A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB8012 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: Hamdan Igbaria Only allow rule updates for rules with their status value equal to MLX5DR_RULE_STATUS_CREATED. Otherwise, the rule may be in an unstable stage like deleting and this will result in a faulty unexpected scenario. Signed-off-by: Hamdan Igbaria Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr_rule.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c b/drivers/net/mlx5/hws/mlx5dr_rule.c index 6bf087e187..aa00c54e53 100644 --- a/drivers/net/mlx5/hws/mlx5dr_rule.c +++ b/drivers/net/mlx5/hws/mlx5dr_rule.c @@ -977,6 +977,12 @@ int mlx5dr_rule_action_update(struct mlx5dr_rule *rule_handle, if (unlikely(mlx5dr_rule_enqueue_precheck_update(rule_handle, attr))) return -rte_errno; + if (rule_handle->status != MLX5DR_RULE_STATUS_CREATED) { + DR_LOG(ERR, "Current rule status does not allow update"); + rte_errno = EBUSY; + return -rte_errno; + } + ret = mlx5dr_rule_create_hws(rule_handle, attr, 0, From patchwork Tue Feb 13 09:50:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136628 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D07C543B05; Tue, 13 Feb 2024 10:51:45 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8DA4F427D9; Tue, 13 Feb 2024 10:51:25 +0100 (CET) Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2070.outbound.protection.outlook.com [40.107.102.70]) by mails.dpdk.org (Postfix) with ESMTP id DA02D427D7 for ; Tue, 13 Feb 2024 10:51:23 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aBuzYo0IFdmDgtyKT6NaF/kTNimMW8xxMzlLdMKTRkBCt/qCm1I3hOUkoGSylDXBtx0UXcGgwc+2U5JofWe9sVyb5sh3PE1/oVJJjJ46oszX9ba4Q3FodEfd3laUZEmEC5gioxbWHiZYPAY6PF7OC3DZ7woywouHKnRiwdQin/t81jyVUFwe11rhRlPj3xk4TBDRzi40aFClfHElLUW+c191E6fCU7yhyycxSWkbhGrol3Q0NqiFX9G62ao58rhQbklyvEeGIbG6GhaMJGQ9UEX1OHXkHfg88xRpXnvt2MeJoNyOZSQWw7DTNW8FL0rH9eYB1k+h3/vL6a1oZfRtIw== 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=NtqDDm1rl5i4vhy156xA482NKv4DAF4kjl/fpdjVIw4=; b=SNXfWskHkTXYMgUx6UeGaCB8wi4DEUc69SOuYJ7s8Q7iAOOkkmIakIeY6i4uajPZWeBY435ikesX6txeV4xQwEyqT2uWpkuR2VbCOLaLGirZqQbxUl2AiKWEZKUpAa9ewwjUkn7/n40NBqRlagrLbYVA3Lmg/WofIF3R3+6DHjPG+KA1qmD8e/6tk//67DiBse3AhcLyVA8sUsFLkAagmtmjEUWjWW2On5rJc9Q/8Txpg8q+erLcJdxVHG60lm1ea4OJjAJFkqDT/F2S6rJBhTx7qaZaFLOKJojnLVE2Um9zF0iNRS5G4fc1yVNsXt/fmIK9p2TWp5X+cTXUoVIKaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=monjalon.net 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=NtqDDm1rl5i4vhy156xA482NKv4DAF4kjl/fpdjVIw4=; b=JIvtAqSbYAFfdUkPeco+wN6RfbxylUTlSHtU4JbEZHpt/7m4dewTPDj1xWBCqdvAYZSYiDR1GYnRXcT/la2YE20DfiBasGgWXMv5vA48cFv+2pGeM72riFFJuRQj6fOdBfrvAktTpVHKPupjRh0JlCEYWdfRHdDqvG+Ic0FcKhPX/H6vWYxXgCbE/H0VAnO/rSdPmQvIQ82Ng9+j6tK2GX+B6RSEIWjHBJgh8TOLzAGYWqMuHt5hQSnLQzjivdqIsOqRGt5oHwG30YqMZFi0R5gsamgIPbK8neogHFPKiQiUhQADXGSGyKZ3fTc5/xTiR0ZxWoP2rw0h/cCKQmiIsg== Received: from CH5P221CA0006.NAMP221.PROD.OUTLOOK.COM (2603:10b6:610:1f2::19) by DM4PR12MB6349.namprd12.prod.outlook.com (2603:10b6:8:a4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.23; Tue, 13 Feb 2024 09:51:21 +0000 Received: from CH2PEPF00000099.namprd02.prod.outlook.com (2603:10b6:610:1f2:cafe::1e) by CH5P221CA0006.outlook.office365.com (2603:10b6:610:1f2::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.39 via Frontend Transport; Tue, 13 Feb 2024 09:51:21 +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 CH2PEPF00000099.mail.protection.outlook.com (10.167.244.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:21 +0000 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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.986.41; Tue, 13 Feb 2024 01:51:07 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail205.nvidia.com (10.129.68.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Tue, 13 Feb 2024 01:51:07 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:51:04 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad , Mark Bloch , Alex Vesker CC: Subject: [PATCH 6/9] net/mlx5/hws: fix VLAN item handling on non relaxed mode Date: Tue, 13 Feb 2024 11:50:34 +0200 Message-ID: <20240213095038.451299-6-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF00000099:EE_|DM4PR12MB6349:EE_ X-MS-Office365-Filtering-Correlation-Id: db4ed65a-f2f9-44d3-2ff0-08dc2c79557e X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Dbfrs3c/oxqixLdEwEfiFCZ+Xz0lCWE2yMQCQx3fAkovqwvDsby1+4CzXPOUHvhM9qn+Xb3I9CNPy1ihOhaEA7HVbAkYfp2H9VhU3oJ4d4KBXw0ndLQGRfvNnIQPjqaaipwT/j8dh49ypcv13zV1e+Hq8DPuwzLLn9lBOJn1cHoOegpKXZTpU4jFGEv+b//q0Ozqr/Qw1KYQNphArx/YpJu3YHc4u6RFq7anhHnEtLXq8FYFrMbgOHsqPISv92fsC7k9kIA3p3SJ7/AuAg6b5dr18/1kvCc7qdFgwDqh3KAXxTOYAp4fSw7znPzfxcQvFsIrp+4jouOlPSWY6yYMlYw50iAWsoWILRffMeDjV4cFrdWOHMEvENTCrYpTjVEm2NOznFMcYU5A8lfR6L4xuc65OgyD2eDb1MYsdjAlAW6LHPK35MF3k6kr87+zPO1AhbRUPHePbWEKJXUHsiOmE0NxtXaZLLxY8v/0KM7bIUJi6IGpFJTn7iB52bzFOtaNCPEfHgr7XJ7DQ0whki24AB8WRUNdCIsBOaKpu57iY4f3Qs8LDuU3dIVdbr99DBxPNQGNYVIi+yja9FghCNCOhf34HxsDBINtB/ryIYXezEQX8q4tGI7EvpVNQGg840SyuAjlLISmsNcdoz/UKYXVqQ== 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)(4636009)(39860400002)(136003)(376002)(396003)(346002)(230922051799003)(186009)(82310400011)(1800799012)(64100799003)(451199024)(46966006)(40470700004)(36840700001)(921011)(36756003)(4326008)(110136005)(8676002)(26005)(2616005)(8936002)(41300700001)(336012)(478600001)(426003)(1076003)(6286002)(70586007)(83380400001)(70206006)(5660300002)(6636002)(7696005)(6666004)(316002)(86362001)(82740400003)(356005)(7636003)(55016003)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:21.5203 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: db4ed65a-f2f9-44d3-2ff0-08dc2c79557e 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: CH2PEPF00000099.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6349 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: Hamdan Igbaria If a VLAN item was passed with null mask, the item handler would return immediately and thus won't set default values for non relax mode. Also change the non relax default set to single-tagged (CVLAN). Fixes: c55c2bf35333 ("net/mlx5/hws: add definer layer") Signed-off-by: Hamdan Igbaria Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr_definer.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c index eb788a772a..b8a546989a 100644 --- a/drivers/net/mlx5/hws/mlx5dr_definer.c +++ b/drivers/net/mlx5/hws/mlx5dr_definer.c @@ -223,6 +223,7 @@ struct mlx5dr_definer_conv_data { X(SET, ib_l4_opcode, v->hdr.opcode, rte_flow_item_ib_bth) \ X(SET, random_number, v->value, rte_flow_item_random) \ X(SET, ib_l4_bth_a, v->hdr.a, rte_flow_item_ib_bth) \ + X(SET, cvlan, STE_CVLAN, rte_flow_item_vlan) \ /* Item set function format */ #define X(set_type, func_name, value, item_type) \ @@ -864,6 +865,15 @@ mlx5dr_definer_conv_item_vlan(struct mlx5dr_definer_conv_data *cd, struct mlx5dr_definer_fc *fc; bool inner = cd->tunnel; + if (!cd->relaxed) { + /* Mark packet as tagged (CVLAN) */ + fc = &cd->fc[DR_CALC_FNAME(VLAN_TYPE, inner)]; + fc->item_idx = item_idx; + fc->tag_mask_set = &mlx5dr_definer_ones_set; + fc->tag_set = &mlx5dr_definer_cvlan_set; + DR_CALC_SET(fc, eth_l2, first_vlan_qualifier, inner); + } + if (!m) return 0; @@ -872,8 +882,7 @@ mlx5dr_definer_conv_item_vlan(struct mlx5dr_definer_conv_data *cd, return rte_errno; } - if (!cd->relaxed || m->has_more_vlan) { - /* Mark packet as tagged (CVLAN or SVLAN) even if TCI is not specified.*/ + if (m->has_more_vlan) { fc = &cd->fc[DR_CALC_FNAME(VLAN_TYPE, inner)]; fc->item_idx = item_idx; fc->tag_mask_set = &mlx5dr_definer_ones_set; From patchwork Tue Feb 13 09:50:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136629 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0A09443B05; Tue, 13 Feb 2024 10:51:53 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 91A28427DE; Tue, 13 Feb 2024 10:51:27 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2045.outbound.protection.outlook.com [40.107.244.45]) by mails.dpdk.org (Postfix) with ESMTP id 9BABC427DA for ; Tue, 13 Feb 2024 10:51:25 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YlqAzMFEw95ULwnB8+7nr3mMQm6jCu8nxHrO091WwFKpBNq3z9WHdUhkrAfa23SN4+yGtfKQVPWi5fRXEuxv00rXNyYa342HxXo5nNnjoFirPZxqzroJHtkxmbhPtQyibTUvenybn35dbYjYIfOWSimJgYjRf/PzAIS2F/Pble6qljogiSb1eZEevTCqz2YH26aka4NViJgSAs6871YfMW33AGgOfKWuoQTkm8GCEE9yQShgVLwJFplPq94k6TkWaT3pbCBML6NU7e8s6/CbDVd+fJ66l+82p8S3mq2eCz6HO7sdSiG4CYaFO9430jK40pvhO5OvNrT1Nb24WvwIpw== 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=9EXyhE9Tb+Rq/iSDqptoamWVLaoTxHYaWkIADlG8C0A=; b=dgyEUkFINbzQyox7EBkIcHgl4a9XYwl76Uto4pMvJt9GPzag1oBcoDqj4jTdgXWYRE6hI6hluFfmfbmbflQvlpXdv90zgepLMnTFHtRPw6f4EM01cgueYNp1McEzGZVgrbV2mK0PZNX2bM5MiooGCUKuqyFmjBVUUUbAfsbtgUbjLHvwIKY7VRD0rT5/gvQG9HeENCajtnvn9nvRRhdCuN6PAepLrcowefYmv0Fc9iRujrxoZzgyFfW4mWllQcJYUUJiZcLC+eGCqy4f2IcQ+4Ox7bs8uUmBDBz/y5ihX/ULxk82XLjNFLciZP0peQLnkrpJcqw2KKKvGIGUHzU3fw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=monjalon.net 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=9EXyhE9Tb+Rq/iSDqptoamWVLaoTxHYaWkIADlG8C0A=; b=LrmM/3X51jh87uwL2+6S6ZGBjC2yYKiPCCmeV8bNnqb2+V88kremigxBkl8Z9AUps3ecb7jD9os1T5JQfS8zfpt2PJULHQBsIpHB3Czi86YBIRvGx0vnvRfwskWPFCuEXhpW5TUvUczmPY80EqfVTtZe+N2XWMuZcw6VExhempZpBvBYUo6jfZc+4IyLh3YTqa+wdUFMbhomOZiB/ot3zCFn8+ST1Lv6i78vaO0+Mz2Dc0miE/kibHZGRzP0ZoxBNPYWAT289x+ER4OmerRUvRHtkkw8vic5OtjZpI+U/ktAZlgIRo/1/LNWZelse2KVUMR36YNsp9xBs5UDAj8ftg== Received: from BN9PR03CA0760.namprd03.prod.outlook.com (2603:10b6:408:13a::15) by BL1PR12MB5271.namprd12.prod.outlook.com (2603:10b6:208:315::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.26; Tue, 13 Feb 2024 09:51:23 +0000 Received: from BN2PEPF0000449E.namprd02.prod.outlook.com (2603:10b6:408:13a:cafe::94) by BN9PR03CA0760.outlook.office365.com (2603:10b6:408:13a::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.40 via Frontend Transport; Tue, 13 Feb 2024 09:51:23 +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 BN2PEPF0000449E.mail.protection.outlook.com (10.167.243.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:23 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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.986.41; Tue, 13 Feb 2024 01:51:11 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 13 Feb 2024 01:51:10 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:51:08 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad CC: Subject: [PATCH 7/9] net/mlx5/hws: extend action template creation API Date: Tue, 13 Feb 2024 11:50:35 +0200 Message-ID: <20240213095038.451299-7-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN2PEPF0000449E:EE_|BL1PR12MB5271:EE_ X-MS-Office365-Filtering-Correlation-Id: 76f50770-69f6-4666-412c-08dc2c795673 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VHFZ39jAx5DrpZVw+RucEbMWa4g1Qctiucy4OCQJIKcBVPFb9NIqxE+gcpfUJpQxk/mrydbWnY0yIzsiRrmsevcq6zuMIN/scMRq5gzN7ny4sygMHTGOIPuX+Gds68gvgdwpK6WGd14uLww05zclFyyZPKmqV07d0SZqzsWZURGJBixM5hvwJONz64jTupmJsVpvYii/YWJ1XJTMgO5XyVkN/aHMVC5uXQnm+wDRZ2w6DlIClRz568vaXy/SVD1RSDCABPY7sonCbvNtokx0NZ44odPkrfIPcmUlp5LIv5uwof4B6eIAtS/Td7o/U9M6/3VXr3cXDeIrugg28DjEawNHbBTuis/1ssBQtUmJMWVD/44AP7mHghl5Kram4tgP3J1CTfaLg9KKX5jrcXLKCkK5aRKfajvjKbKZ1FjJZh+0VvcJSyqyCZgC91MfC7j5s4v95vVCeArQIBlol81tCyODm8blOekk0VvSO3elmLcMbnTS2vB+M+nb0l7MGsHqmTqreye12LeO/pEmymoSH2ZSePHvHmiKmZuTkTHdTHROUlUhkhP0Uw4g8kByQT9gEDc1lBtGQqVog6dfBTOyclhhSf+Hq56ij5GNd7HGQN3YOSs/SqnEejTzFLVOcqLxRtZ/9/4m3fF2fBMDShUSEg== 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:(13230031)(4636009)(396003)(346002)(376002)(39860400002)(136003)(230922051799003)(82310400011)(64100799003)(451199024)(1800799012)(186009)(46966006)(40470700004)(36840700001)(2906002)(55016003)(1076003)(41300700001)(2616005)(478600001)(921011)(83380400001)(5660300002)(7696005)(6636002)(8936002)(8676002)(4326008)(336012)(70586007)(70206006)(426003)(26005)(6286002)(36756003)(110136005)(6666004)(316002)(7636003)(356005)(82740400003)(86362001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:23.0795 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 76f50770-69f6-4666-412c-08dc2c795673 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: BN2PEPF0000449E.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5271 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: Hamdan Igbaria Extend mlx5dr_action_template_create function params to include flags parameter. Signed-off-by: Hamdan Igbaria Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr.h | 10 +++++++++- drivers/net/mlx5/hws/mlx5dr_action.c | 11 ++++++++++- drivers/net/mlx5/hws/mlx5dr_action.h | 1 + drivers/net/mlx5/hws/mlx5dr_matcher.c | 16 ++++++++++------ drivers/net/mlx5/mlx5_flow_hw.c | 2 +- 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/drivers/net/mlx5/hws/mlx5dr.h b/drivers/net/mlx5/hws/mlx5dr.h index 9d8f8e13dc..c11ec08616 100644 --- a/drivers/net/mlx5/hws/mlx5dr.h +++ b/drivers/net/mlx5/hws/mlx5dr.h @@ -84,6 +84,11 @@ enum mlx5dr_match_template_flags { MLX5DR_MATCH_TEMPLATE_FLAG_RELAXED_MATCH = 1, }; +enum mlx5dr_action_template_flags { + /* Allow relaxed actions order. */ + MLX5DR_ACTION_TEMPLATE_FLAG_RELAXED_ORDER = 1 << 0, +}; + enum mlx5dr_send_queue_actions { /* Start executing all pending queued rules */ MLX5DR_SEND_QUEUE_ACTION_DRAIN_ASYNC = 1 << 0, @@ -362,10 +367,13 @@ int mlx5dr_match_template_destroy(struct mlx5dr_match_template *mt); * An array of actions based on the order of actions which will be provided * with rule_actions to mlx5dr_rule_create. The last action is marked * using MLX5DR_ACTION_TYP_LAST. + * @param[in] flags + * Template creation flags * @return pointer to mlx5dr_action_template on success NULL otherwise */ struct mlx5dr_action_template * -mlx5dr_action_template_create(const enum mlx5dr_action_type action_type[]); +mlx5dr_action_template_create(const enum mlx5dr_action_type action_type[], + uint32_t flags); /* Destroy action template. * diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c index 862ee3e332..370886907f 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.c +++ b/drivers/net/mlx5/hws/mlx5dr_action.c @@ -3385,12 +3385,19 @@ int mlx5dr_action_template_process(struct mlx5dr_action_template *at) } struct mlx5dr_action_template * -mlx5dr_action_template_create(const enum mlx5dr_action_type action_type[]) +mlx5dr_action_template_create(const enum mlx5dr_action_type action_type[], + uint32_t flags) { struct mlx5dr_action_template *at; uint8_t num_actions = 0; int i; + if (flags > MLX5DR_ACTION_TEMPLATE_FLAG_RELAXED_ORDER) { + DR_LOG(ERR, "Unsupported action template flag provided"); + rte_errno = EINVAL; + return NULL; + } + at = simple_calloc(1, sizeof(*at)); if (!at) { DR_LOG(ERR, "Failed to allocate action template"); @@ -3398,6 +3405,8 @@ mlx5dr_action_template_create(const enum mlx5dr_action_type action_type[]) return NULL; } + at->flags = flags; + while (action_type[num_actions++] != MLX5DR_ACTION_TYP_LAST) ; diff --git a/drivers/net/mlx5/hws/mlx5dr_action.h b/drivers/net/mlx5/hws/mlx5dr_action.h index fad35a845b..a8d9720c42 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.h +++ b/drivers/net/mlx5/hws/mlx5dr_action.h @@ -119,6 +119,7 @@ struct mlx5dr_action_template { uint8_t num_of_action_stes; uint8_t num_actions; uint8_t only_term; + uint32_t flags; }; struct mlx5dr_action { diff --git a/drivers/net/mlx5/hws/mlx5dr_matcher.c b/drivers/net/mlx5/hws/mlx5dr_matcher.c index 0d5c462734..402242308d 100644 --- a/drivers/net/mlx5/hws/mlx5dr_matcher.c +++ b/drivers/net/mlx5/hws/mlx5dr_matcher.c @@ -686,12 +686,16 @@ static int mlx5dr_matcher_check_and_process_at(struct mlx5dr_matcher *matcher, bool valid; int ret; - /* Check if action combinabtion is valid */ - valid = mlx5dr_action_check_combo(at->action_type_arr, matcher->tbl->type); - if (!valid) { - DR_LOG(ERR, "Invalid combination in action template"); - rte_errno = EINVAL; - return rte_errno; + if (!(at->flags & MLX5DR_ACTION_TEMPLATE_FLAG_RELAXED_ORDER)) { + /* Check if actions combinabtion is valid, + * in the case of not relaxed actions order. + */ + valid = mlx5dr_action_check_combo(at->action_type_arr, matcher->tbl->type); + if (!valid) { + DR_LOG(ERR, "Invalid combination in action template"); + rte_errno = EINVAL; + return rte_errno; + } } /* Process action template to setters */ diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 3af5e1f160..5ad45ce2ae 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -6198,7 +6198,7 @@ flow_hw_dr_actions_template_create(struct rte_eth_dev *dev, at->recom_off = recom_off; action_types[recom_off] = recom_type; } - dr_template = mlx5dr_action_template_create(action_types); + dr_template = mlx5dr_action_template_create(action_types, 0); if (dr_template) { at->dr_actions_num = curr_off; } else { From patchwork Tue Feb 13 09:50:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136630 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C174843B05; Tue, 13 Feb 2024 10:52:01 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 12ABC42830; Tue, 13 Feb 2024 10:51:31 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2071.outbound.protection.outlook.com [40.107.244.71]) by mails.dpdk.org (Postfix) with ESMTP id 64526427DB for ; Tue, 13 Feb 2024 10:51:29 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TsUIDnT4m84G9UJl7mFe5GPXORHm8Hz99KTOlJXDB8ZxbIVazO2QVGIZvepuAnBNsZ8q8mk8l+a3OSP1iFZdkJUsI+eMC9vPE5dNjIN+s4YyiQhhZKiaJd5sOS25a30ehV0zioNbcxJXiU1UOfpk8CaRAfCVb8hL+00OU15khwK7bxCafF9O6uFj0vESA96b866etlcVO714VGNMgRHZCBnyLoZgH+toYv3zTujy8Pvdu6pL7gNj98aVcm+jJAk5lX40JeqYwQyICZcezqDXCKO5Qa7u0KjU/ZhmCyoDf8SAypK+57bah2Mu63TaY6sdFvv6O3svLT6NZcd06FZtbA== 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=LBslI7knY85sqF7mprdQZRd5utpuknqU4scH30NkDOc=; b=Wnfe8GBSl7Uta8UB9D0N9f6182F/udjtCnhIedh9XUan0r5l38iXe7Xbl69wIOt1XPpn2/dEv7CVF4Lre1gnEbynU2zUbDXAdHlEZHpsFAhMLXVlffKeNwtsBiB8m9TLtiQXHTPATiU9GbGT1DaHwUK47nZ1YqD9PHMeMfA2Dbjvf1pHaf5kKnWut3xYlOvpgkU0VZA34VAwufQauo+GjbLxBV3Xx6frEvBklLWJ/6P2M81LThTU61rSunRCMUSUpuEeTgbBvvLXzKvZqhdNkGz74ftojB+0rNxC1EItnFEZjrt1hqx3x9aBVUmFC652oWnJJ17AXu8vnkzfqQTujg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=monjalon.net 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=LBslI7knY85sqF7mprdQZRd5utpuknqU4scH30NkDOc=; b=JhtWOTCN5O6fUc9wGHsABuIeVnljV8Obv2KlRDJfR/1a8q2MBkWaplXsJmnxyVzywT7NhY+fc+jsImchW+lpqf/gT4tdr+7+zD23LoJ+5kSsJpFVK/d8O9pfHKwywkdNfYQtLPAFeQPFy3JnSIPp++2GbRXTMvN5Ohm6UfKGjlsDYQN7+Nt9AJz2s1J++jS1cJTAa4ZOEG2RrsrlF5kaLHcqDeEzUZwIOHKY0QuXNDPQPLfuxfjWCKxWabEJCX0UVDjbGYld3iTQfe2X767WLRmBlyp5lk+5ZB9XwULQBdia85OWYghm3sxyj1bpdUyOls9INPIDX5IVc64217FMXQ== Received: from CH2PR19CA0001.namprd19.prod.outlook.com (2603:10b6:610:4d::11) by CH2PR12MB4118.namprd12.prod.outlook.com (2603:10b6:610:a4::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25; Tue, 13 Feb 2024 09:51:26 +0000 Received: from CH2PEPF0000009A.namprd02.prod.outlook.com (2603:10b6:610:4d:cafe::55) by CH2PR19CA0001.outlook.office365.com (2603:10b6:610:4d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.40 via Frontend Transport; Tue, 13 Feb 2024 09:51:26 +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 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:26 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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.986.41; Tue, 13 Feb 2024 01:51:14 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 13 Feb 2024 01:51:14 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:51:11 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad CC: Subject: [PATCH 8/9] net/mlx5/hws: add missing actions STE limitation Date: Tue, 13 Feb 2024 11:50:36 +0200 Message-ID: <20240213095038.451299-8-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF0000009A:EE_|CH2PR12MB4118:EE_ X-MS-Office365-Filtering-Correlation-Id: 20d3c9cf-4afe-41e9-edc3-08dc2c79589b X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rPo25j1FBXGSWM33wlB/yA3S86S7Gv+DlMwIvoUjM4IZkX5vTsHg6Jrle5qu/RpaXNLwJe0winc7k5jWQBL9cL3Zm+wnkxdO2TxslRnxmSf951n+kX0sm86HjEXOS2t4IMiK9iHcS0Ca0Qk9hDEOBKo2Rm/VvnoLCqaPcaFFkVeRPB0UGTa/DljKSxbyazsrac4ZcJPvDgSRKEm6pQRrWuV4gzbPKRPeaXMLcUzvO1VQgje/4piV9yEL90x7Kaf68Q3aUGkllS9OP7A9yvF8vQOUqnoYqqpsfqk3In/IJLuKy/aE4TTwA7ElfgZmR2XE0YiBSM3PzpIkZog4lcU9R9dUanAjU07fn9Ekl2qlcZFQaI0aAFU6nSnC4COyQT/6ALp/dVnDY/22qZ1KvzPxSwECKWGBm+AbjB8x8pyB4cmSzkpo3n0c40nX4/oylZmlVG9r8IC2kc1YxYIPkXYvrFVd20LWT48YVgVEbIFeBP+Ea0TSB4Wz5DCKLY3nScGwSizPjirAt/WTHU/Z5Cx8k7XSxLtV9nIqiL/qabGKJUH1AIl70IT9qzMZHA5JiknOSyqjuF83yi3KiCBeagw1Cjg/+wTKr2/flwJlyOsUY0s9q0W7/hp4RUatKrGc41QFCvP44geWgteftYf7EsduFw== 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)(4636009)(136003)(396003)(39860400002)(346002)(376002)(230922051799003)(1800799012)(82310400011)(186009)(451199024)(64100799003)(40470700004)(46966006)(36840700001)(2906002)(55016003)(5660300002)(41300700001)(2616005)(426003)(6286002)(1076003)(336012)(83380400001)(26005)(8676002)(8936002)(4326008)(7696005)(70206006)(70586007)(921011)(110136005)(6636002)(316002)(6666004)(356005)(82740400003)(7636003)(86362001)(478600001)(36756003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:26.7484 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 20d3c9cf-4afe-41e9-edc3-08dc2c79589b 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: CH2PEPF0000009A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4118 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: Hamdan Igbaria Today if we pass a remove header action and after it an insert header action then our action template builder will set two different STE setters, because it won't allow insert header in same STE as remove header. But if we have the opposite order of insert header and then remove header actions, then the setter will set both of them on the same STE since the opposite check was missing. This patch added the missing opposite limitation. Signed-off-by: Hamdan Igbaria Acked-by: Matan Azrad --- drivers/net/mlx5/hws/mlx5dr_action.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c index 370886907f..8589de5557 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.c +++ b/drivers/net/mlx5/hws/mlx5dr_action.c @@ -3308,7 +3308,8 @@ int mlx5dr_action_template_process(struct mlx5dr_action_template *at) case MLX5DR_ACTION_TYP_REMOVE_HEADER: case MLX5DR_ACTION_TYP_REFORMAT_TNL_L2_TO_L2: /* Single remove header to header */ - setter = mlx5dr_action_setter_find_first(last_setter, ASF_SINGLE1 | ASF_MODIFY); + setter = mlx5dr_action_setter_find_first(last_setter, + ASF_SINGLE1 | ASF_MODIFY | ASF_INSERT); setter->flags |= ASF_SINGLE1 | ASF_REMOVE; setter->set_single = &mlx5dr_action_setter_single; setter->idx_single = i; From patchwork Tue Feb 13 09:50:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Itamar Gozlan X-Patchwork-Id: 136631 X-Patchwork-Delegate: rasland@nvidia.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C576443B05; Tue, 13 Feb 2024 10:52:08 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3F669427E3; Tue, 13 Feb 2024 10:51:33 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2087.outbound.protection.outlook.com [40.107.243.87]) by mails.dpdk.org (Postfix) with ESMTP id E174E427E5 for ; Tue, 13 Feb 2024 10:51:31 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=I/h4z45nY/BIyDiPjHHfN999zfP6X8gIiyJULPv0eLHGqGzOAZdYbkwPYkcFBJxG8NxuN2xGU/CY7BYPL5N0WW0YPriIAfo2cA/UcdErk6Q65+c0V1JpQsM9+/fQygddMDFj4iq7+0zb4kCSNh9DH2sj+eSRoQWMtdAqMZxPgh+zn1CSfY+iAuBA2zQxreKwIfeZ0i9jccHL4nTrIPKFV3jcmTDfFkzrtDPwJa6seWFBssBNlRIwoiOIN2YdNBOIFR3/OuA4TuqFmDrjGeCEU4/+ou1Rl4vt6/OHISjvSXLSdwETq1WPmdlIiY8aT8+kTVttXJQi8dWiXcUoCIta4w== 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=p/R1DYNY8xAwij2WgGNxiODXoZOZ8gFQ2R5T0wsGCck=; b=lmWn7zwb8xsJZVcxHGz3W1YsaERm4qFnaWeOQeBkcVSHIls1fU9fotYvejAX2I8ZZ7VZ0wWumMYkSyucHDnCAputs/IciZxgpjhupQi/vFsrk+88l35uqaOyiwBhv+cOiUVQSmE+1HY1xd/ty9/r4sLQQHZPgfCJyJ7ZFhHCWkBjBxAAxbtfu9zFbTdogbRxIEAJcnb9XrF3BR4o+dN/93u+OsJoe7RMTf7JSRxzg6D3r2MZlJ7BMgMbDVnK5KfcIlJGGH9phrLH37gNiMRPTI8sT1nR5LusbeQlw0wmWVauSobhHO86t6tFktPs8BsWOSZKdGigD+XCdam0pY/YIg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=monjalon.net 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=p/R1DYNY8xAwij2WgGNxiODXoZOZ8gFQ2R5T0wsGCck=; b=Wv/FNOdglGQtlyn4gmqRiRxgcs2Sujec09/mTp8SEo5+tQlqKWc4kYLM7pj1LU3G5s1mgeN3nDGRagn3C4NXjxgLSakCONzEtrPK2mf4CI8XZXEKXhNfrL8hnwKkr7/AmC97Bkjp1t3fLbnjSplSpiaxSraEyC4YSUrCRZniph+skvXtgiRCwhnJZ+zPre33M5evc7TLuOecLAaSRh/ugKRuJd1ftCOldtuGvSxbgSMNTT9bOMLuw/62hClXYzYWq4q0nAKHzwWkFU6LVCdqeHE3WVGP85Cw3iNPHXddx1SnwJ1h0zVm+yUJuI/B2kttRPVwTrtrWg2vWOOquRNKYw== Received: from CH2PR19CA0013.namprd19.prod.outlook.com (2603:10b6:610:4d::23) by BL1PR12MB5379.namprd12.prod.outlook.com (2603:10b6:208:317::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25; Tue, 13 Feb 2024 09:51:29 +0000 Received: from CH2PEPF0000009A.namprd02.prod.outlook.com (2603:10b6:610:4d:cafe::21) by CH2PR19CA0013.outlook.office365.com (2603:10b6:610:4d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.40 via Frontend Transport; Tue, 13 Feb 2024 09:51:29 +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 CH2PEPF0000009A.mail.protection.outlook.com (10.167.244.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Tue, 13 Feb 2024 09:51:29 +0000 Received: from rnnvmail203.nvidia.com (10.129.68.9) 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.986.41; Tue, 13 Feb 2024 01:51:18 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail203.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 13 Feb 2024 01:51:17 -0800 Received: from nvidia.com (10.127.8.12) by mail.nvidia.com (10.129.68.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41 via Frontend Transport; Tue, 13 Feb 2024 01:51:14 -0800 From: Itamar Gozlan To: , , , , , , , Dariusz Sosnowski , Ori Kam , Matan Azrad CC: Subject: [PATCH 9/9] net/mlx5/hws: support push_esp flag for insert header action Date: Tue, 13 Feb 2024 11:50:37 +0200 Message-ID: <20240213095038.451299-9-igozlan@nvidia.com> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20240213095038.451299-1-igozlan@nvidia.com> References: <20240213095038.451299-1-igozlan@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH2PEPF0000009A:EE_|BL1PR12MB5379:EE_ X-MS-Office365-Filtering-Correlation-Id: c65b32c9-6f38-4f03-c918-08dc2c795a3a X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cyHHICw1NyR4+feVf7ozHKxeQmur07gPBYm/GesXCQwgBFwKK6EmcpJwkEAaHvRnDrZvkUz9bziwdHy5vbGUXTpwdpgsjFhYmT5zJP9KO9hTKGOn81AzkK1ypA8X80tHn7Sf9Dc0UK3cccOwgalk0uQaCSF3otbwQ/3O+InCnIFwPGthpcoc1OiIiXc1ZRN8ao3I7pU5bX1RvHXdfjW2CWwRdAtzNab3aUpb+YPubnLWwiVwVS25rL9YpqDmCUT9gfwr8qycGpPofq9Mo8f8syXEajr+lV+Cmti2Cp49KgOv6rxgT5a9CbY4ORhYMO3SOBFrB0SOfSbZYV7t69shh8sVv3VW+R/5wS2icUH6cIcuyeM8r0irG1fzR4Lq9IyY0Eq+W8HL9MdA1vC0QixFtKMo/DVsyvac+DM6x/cqi48O+NyRDvs32by5KKxw24LAFF7KBEphnGFuifg5vMTOEO1NEAjlDgLoKd6JW5voLH/9LgUrAQQYxUMImzItpDeTM1mcwWNNSOJQfTGFI8MjDLu27SSIQ+SzERB5QwEcJ2NkmhCqxEGR6Xb33GyxZusCFHzkBMemw4nGkALnd7bgmRRTjVFq+HyocrarduQPjevBHzGUyV8Q2wjGoOrVBpKlyF4XFZBOro9WjN7oDFi86g== 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)(4636009)(376002)(396003)(39860400002)(136003)(346002)(230922051799003)(451199024)(64100799003)(82310400011)(186009)(1800799012)(36840700001)(40470700004)(46966006)(83380400001)(86362001)(41300700001)(921011)(1076003)(316002)(110136005)(6636002)(6286002)(26005)(36756003)(7696005)(2616005)(478600001)(6666004)(8676002)(5660300002)(70586007)(2906002)(70206006)(8936002)(4326008)(336012)(426003)(7636003)(82740400003)(55016003)(356005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Feb 2024 09:51:29.4672 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c65b32c9-6f38-4f03-c918-08dc2c795a3a 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: CH2PEPF0000009A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL1PR12MB5379 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: Hamdan Igbaria support push_esp flag for insert header action, it must be set when inserting an ESP header, it's also sets the next_protocol field in the IPsec trailer. Signed-off-by: Hamdan Igbaria Acked-by: Matan Azrad --- drivers/common/mlx5/mlx5_prm.h | 3 ++- drivers/net/mlx5/hws/mlx5dr.h | 4 ++++ drivers/net/mlx5/hws/mlx5dr_action.c | 4 ++++ drivers/net/mlx5/hws/mlx5dr_action.h | 1 + drivers/net/mlx5/hws/mlx5dr_cmd.c | 2 ++ drivers/net/mlx5/hws/mlx5dr_cmd.h | 1 + 6 files changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index abff8e4dc3..6fa5553215 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -3608,7 +3608,8 @@ struct mlx5_ifc_stc_ste_param_insert_bits { u8 action_type[0x4]; u8 encap[0x1]; u8 inline_data[0x1]; - u8 reserved_at_6[0x4]; + u8 push_esp[0x1]; + u8 reserved_at_7[0x3]; u8 insert_anchor[0x6]; u8 reserved_at_10[0x1]; u8 insert_offset[0x7]; diff --git a/drivers/net/mlx5/hws/mlx5dr.h b/drivers/net/mlx5/hws/mlx5dr.h index c11ec08616..78b16f3dc7 100644 --- a/drivers/net/mlx5/hws/mlx5dr.h +++ b/drivers/net/mlx5/hws/mlx5dr.h @@ -192,6 +192,10 @@ struct mlx5dr_action_insert_header { * requiring device to update offloaded fields (for example IPv4 total length). */ bool encap; + /* It must be set when adding ESP header. + * It's also sets the next_protocol value in the ipsec trailer. + */ + bool push_esp; }; enum mlx5dr_action_remove_header_type { diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c index 8589de5557..f55069c675 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.c +++ b/drivers/net/mlx5/hws/mlx5dr_action.c @@ -598,6 +598,7 @@ static void mlx5dr_action_fill_stc_attr(struct mlx5dr_action *action, attr->action_type = MLX5_IFC_STC_ACTION_TYPE_HEADER_INSERT; attr->action_offset = MLX5DR_ACTION_OFFSET_DW6; attr->insert_header.encap = action->reformat.encap; + attr->insert_header.push_esp = action->reformat.push_esp; attr->insert_header.insert_anchor = action->reformat.anchor; attr->insert_header.arg_id = action->reformat.arg_obj->id; attr->insert_header.header_size = action->reformat.header_size; @@ -635,6 +636,7 @@ static void mlx5dr_action_fill_stc_attr(struct mlx5dr_action *action, attr->action_offset = MLX5DR_ACTION_OFFSET_DW6; attr->reparse_mode = MLX5_IFC_STC_REPARSE_ALWAYS; attr->insert_header.encap = 0; + attr->insert_header.push_esp = 0; attr->insert_header.is_inline = 1; attr->insert_header.insert_anchor = MLX5_HEADER_ANCHOR_PACKET_START; attr->insert_header.insert_offset = MLX5DR_ACTION_HDR_LEN_L2_MACS; @@ -1340,6 +1342,7 @@ mlx5dr_action_handle_insert_with_ptr(struct mlx5dr_action *action, action[i].reformat.anchor = MLX5_HEADER_ANCHOR_PACKET_START; action[i].reformat.offset = 0; action[i].reformat.encap = 1; + action[i].reformat.push_esp = 0; } if (likely(reparse == MLX5DR_ACTION_STC_REPARSE_DEFAULT)) @@ -2087,6 +2090,7 @@ mlx5dr_action_create_insert_header_reparse(struct mlx5dr_context *ctx, action[i].reformat.anchor = hdrs[i].anchor; action[i].reformat.encap = hdrs[i].encap; + action[i].reformat.push_esp = hdrs[i].push_esp; action[i].reformat.offset = hdrs[i].offset; reformat_hdrs[i].sz = hdrs[i].hdr.sz; reformat_hdrs[i].data = hdrs[i].hdr.data; diff --git a/drivers/net/mlx5/hws/mlx5dr_action.h b/drivers/net/mlx5/hws/mlx5dr_action.h index a8d9720c42..0c8e4bbb5a 100644 --- a/drivers/net/mlx5/hws/mlx5dr_action.h +++ b/drivers/net/mlx5/hws/mlx5dr_action.h @@ -149,6 +149,7 @@ struct mlx5dr_action { uint8_t offset; bool encap; uint8_t require_reparse; + bool push_esp; } reformat; struct { struct mlx5dr_action diff --git a/drivers/net/mlx5/hws/mlx5dr_cmd.c b/drivers/net/mlx5/hws/mlx5dr_cmd.c index 876a47147d..28d909df80 100644 --- a/drivers/net/mlx5/hws/mlx5dr_cmd.c +++ b/drivers/net/mlx5/hws/mlx5dr_cmd.c @@ -486,6 +486,8 @@ mlx5dr_cmd_stc_modify_set_stc_param(struct mlx5dr_cmd_stc_modify_attr *stc_attr, MLX5_MODIFICATION_TYPE_INSERT); MLX5_SET(stc_ste_param_insert, stc_parm, encap, stc_attr->insert_header.encap); + MLX5_SET(stc_ste_param_insert, stc_parm, push_esp, + stc_attr->insert_header.push_esp); MLX5_SET(stc_ste_param_insert, stc_parm, inline_data, stc_attr->insert_header.is_inline); MLX5_SET(stc_ste_param_insert, stc_parm, insert_anchor, diff --git a/drivers/net/mlx5/hws/mlx5dr_cmd.h b/drivers/net/mlx5/hws/mlx5dr_cmd.h index 18c2b07fc8..013a7e99e8 100644 --- a/drivers/net/mlx5/hws/mlx5dr_cmd.h +++ b/drivers/net/mlx5/hws/mlx5dr_cmd.h @@ -122,6 +122,7 @@ struct mlx5dr_cmd_stc_modify_attr { uint8_t encap; uint16_t insert_anchor; uint16_t insert_offset; + uint8_t push_esp; } insert_header; struct { uint8_t aso_type;