From patchwork Thu Dec 14 03:04:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suanming Mou X-Patchwork-Id: 135176 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 04159436E9; Thu, 14 Dec 2023 04:05:10 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9D46742F57; Thu, 14 Dec 2023 04:05:10 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2041.outbound.protection.outlook.com [40.107.243.41]) by mails.dpdk.org (Postfix) with ESMTP id E941140283 for ; Thu, 14 Dec 2023 04:05:08 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wkq6p030lDiMzIYoNJuwl0xfyWAUMY7NzeMH5tyxm5u6v4fyXz7TwesnmwSQJiaXElkYfQwNUGTKl46kUk15Gwy8+uzoqyyf++fLRlSLeNQKaGam8vRJMA912eMjz7mF+ukdQBNOzq/MquwIVQLIybNACusKc8ZVkdR79e1bSrLi3bW/dgQjLAwkgOL8r+fZssEve0MHZAFny8ykUdgbxZ6p2XN2QFwPQBrS+WZLnrBqegKtSR8P3PE+hn+c8EB30xaWJCoPZlYlgDBWglZVtZHxuJJtuoDch6aPRANoMkUwpHEedQdLrPvkOJPFE62XTPgxXyd7k1gQFicPQHzKgA== 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=hAKQHv3pEl0ZK7BhzBL4KB1Obf1tS1IhRQQlZAJ/2iE=; b=O9shtfv6Y6JNTMCA0KlRudmYLj8rYnqKrVzUQEWQppGgvQWHDp6Din0vbQTSuxVAWn/2EiyCZbV0zz/45zCYmL0conJrLCYg2csMRTL7tpc7lwnFnuZsu8VNbcXUnE4AYvJiGNyuSzmsR/u0Uz+m5tKYgJKnwa6esQh4EmZtLyM28N4XKTA97XZBAUqyDHIahb/yAVFxJ7TqvoX50emDkIZXaH9s+rB0aM9WbeD6mcuMWWcHDgZsaY5h33jSyfM7vrgLd/5rNQGRC9rvFVdZxx5kNmTTEdNQOz9tlhOWbD8gX9g+Gos4EjeQ0AyK5vfdVNopad05TGMLPutBO2dQ+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hAKQHv3pEl0ZK7BhzBL4KB1Obf1tS1IhRQQlZAJ/2iE=; b=Rp0veBoNFLIlxaFr+6hNm454TVtlNuRs54tDag+LWg5zMnZiomhZkURCAt509HNSF6amqQ/0rszrbKWs9B6NjhWXeXOWtzBqS6/9/kaBqc5BElGatau3Itx3ZhKclSGKH+GxujsL8SdJX5F+mNiDSmXhCu3Z8FIhve0oG8Q9kSJI1awdULsalEpvRGwPMh4bTSVrvQS9YaoNERPWOvGsIw+EpA9vXtr6MmNiBX/Y57CldjFIXWQDKAw08f6OpAzhp0neRcqd8Wn4jf7dCRTlA8CtfkWrTfvxTc6Kl+6eXDAUysRnLrFZ+Yus5BVk/pIAeNOUu5ANrawFamIYAzO6lQ== Received: from SN1PR12CA0104.namprd12.prod.outlook.com (2603:10b6:802:21::39) by SN7PR12MB8148.namprd12.prod.outlook.com (2603:10b6:806:351::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26; Thu, 14 Dec 2023 03:05:04 +0000 Received: from SN1PEPF0002BA4B.namprd03.prod.outlook.com (2603:10b6:802:21:cafe::2e) by SN1PR12CA0104.outlook.office365.com (2603:10b6:802:21::39) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:04 +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 SN1PEPF0002BA4B.mail.protection.outlook.com (10.167.242.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:04 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Wed, 13 Dec 2023 19:04:49 -0800 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 13 Dec 2023 19:04:46 -0800 From: Suanming Mou To: Dariusz Sosnowski , Viacheslav Ovsiienko , Ori Kam , Matan Azrad CC: , Subject: [PATCH 1/4] net/mlx5: add TCP/IP length modify field Date: Thu, 14 Dec 2023 11:04:24 +0800 Message-ID: <20231214030428.363471-2-suanmingm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231214030428.363471-1-suanmingm@nvidia.com> References: <20231214030428.363471-1-suanmingm@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4B:EE_|SN7PR12MB8148:EE_ X-MS-Office365-Filtering-Correlation-Id: ccfaf790-6f7c-4653-0141-08dbfc517857 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: n645XRlUKAMjQiR/bBAGM4s/+I6PANROIwGHYPOmzMI/tk2G8g8/qAkBHkuteOm3uOotzfcBa+LE5zoHiEHM9hAJrDqWmqqMggH2CPtYXcaR6yPxdAcu36uOVrY+sKCua0BXX28UVN/cb6+91pEJ0VhaY+W+aQUlwEFA7nWbmHcT+yrDoTSbn9fPEoqkkTYKinNKUSl1XUNZEGa0sIL7BNv3aGL2bniKilHQA8UmMz6nRAQ+c4ej7YgDF8TJ3BmbVZS+nu0zbAVB0/Y5G0eskfK6fU6mdoShMbqtAYL8JqOs/2+hAZroXUI0ESeX+G1bsrTIPep6IqWdXGOTt/kVVwKcYl4uL4/Mjx9C4lTjv4NgACzs4XzvBCAdPA89acHRgOBQpNWdcV44MxpfKROVsgdW33szry5ouHqNpRp53cvWjickSSvHWyL5YXhWyKOAiURh9A9TcYWxRR1dNyKZtFoSvlLfGrakcS1JavRDYzGdkif5G1lNLuHjDcLBbInz+dhPQbBMNS80YBmh3XzMxaFt/tC7OJH1rc87yVxO8/dZ/cB7bnpS4x81c10WjrFSJE1ZKzYAGdHgJcgC2A1L8Y+ceYc0MRV0OPsGfZzk+wideZXTSWDhRWCjnJz6byaOH1cmr1phu8Q1UwGxCX0OOL9vbwmkvn9xFgNY22wcq0Qx8H8ETDOzgF0o7UKrfY7lMFZgm4enmJmgsXmnk5M6wRnzEzyhilR9gC29rDV7rSoulWzYAXNy7gfNKh3yoebP 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)(396003)(136003)(39860400002)(346002)(376002)(230922051799003)(82310400011)(64100799003)(451199024)(1800799012)(186009)(40470700004)(46966006)(36840700001)(86362001)(36756003)(40480700001)(40460700003)(55016003)(6666004)(70206006)(70586007)(110136005)(7696005)(41300700001)(82740400003)(1076003)(356005)(16526019)(107886003)(336012)(26005)(6286002)(426003)(7636003)(83380400001)(47076005)(5660300002)(54906003)(2906002)(8676002)(478600001)(4326008)(36860700001)(8936002)(6636002)(316002)(2616005); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2023 03:05:04.3169 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ccfaf790-6f7c-4653-0141-08dbfc517857 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: SN1PEPF0002BA4B.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB8148 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 This commit adds TCP data offset, IPv4 total length, IPv4 IHL, IPv6 payload length in modify field operation. Signed-off-by: Suanming Mou Acked-by: Ori Kam Acked-by: Ori Kam --- drivers/common/mlx5/mlx5_prm.h | 4 ++++ drivers/net/mlx5/mlx5_flow_dv.c | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 9e22dce6da..0d46ba9c40 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -848,6 +848,10 @@ enum mlx5_modification_field { MLX5_MODI_META_REG_C_13 = 0x94, MLX5_MODI_META_REG_C_14 = 0x95, MLX5_MODI_META_REG_C_15 = 0x96, + MLX5_MODI_OUT_IPV4_TOTAL_LEN = 0x11D, + MLX5_MODI_OUT_IPV6_PAYLOAD_LEN = 0x11E, + MLX5_MODI_OUT_IPV4_IHL = 0x11F, + MLX5_MODI_OUT_TCP_DATA_OFFSET = 0x120, MLX5_MODI_INVALID = INT_MAX, }; diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 115d730317..4e2095dcfe 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1664,6 +1664,16 @@ mlx5_flow_field_id_to_modify_info else info[idx].offset = off_be; break; + case RTE_FLOW_FIELD_IPV4_IHL: + MLX5_ASSERT(data->offset + width <= 4); + off_be = 4 - (data->offset + width); + info[idx] = (struct field_modify_info){1, 0, + MLX5_MODI_OUT_IPV4_IHL}; + if (mask) + mask[idx] = flow_modify_info_mask_8(width, off_be); + else + info[idx].offset = off_be; + break; case RTE_FLOW_FIELD_IPV4_DSCP: MLX5_ASSERT(data->offset + width <= 6); off_be = 6 - (data->offset + width); @@ -1674,6 +1684,16 @@ mlx5_flow_field_id_to_modify_info else info[idx].offset = off_be; break; + case RTE_FLOW_FIELD_IPV4_TOTAL_LEN: + MLX5_ASSERT(data->offset + width <= 16); + off_be = 16 - (data->offset + width); + info[idx] = (struct field_modify_info){2, 0, + MLX5_MODI_OUT_IPV4_TOTAL_LEN}; + if (mask) + mask[idx] = flow_modify_info_mask_16(width, off_be); + else + info[idx].offset = off_be; + break; case RTE_FLOW_FIELD_IPV4_TTL: MLX5_ASSERT(data->offset + width <= 8); off_be = 8 - (data->offset + width); @@ -1714,6 +1734,16 @@ mlx5_flow_field_id_to_modify_info else info[idx].offset = off_be; break; + case RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN: + MLX5_ASSERT(data->offset + width <= 16); + off_be = 16 - (data->offset + width); + info[idx] = (struct field_modify_info){2, 0, + MLX5_MODI_OUT_IPV6_PAYLOAD_LEN}; + if (mask) + mask[idx] = flow_modify_info_mask_16(width, off_be); + else + info[idx].offset = off_be; + break; case RTE_FLOW_FIELD_IPV6_HOPLIMIT: MLX5_ASSERT(data->offset + width <= 8); off_be = 8 - (data->offset + width); @@ -1860,6 +1890,16 @@ mlx5_flow_field_id_to_modify_info else info[idx].offset = off_be; break; + case RTE_FLOW_FIELD_TCP_DATA_OFFSET: + MLX5_ASSERT(data->offset + width <= 4); + off_be = 4 - (data->offset + width); + info[idx] = (struct field_modify_info){1, 0, + MLX5_MODI_OUT_TCP_DATA_OFFSET}; + if (mask) + mask[idx] = flow_modify_info_mask_8(width, off_be); + else + info[idx].offset = off_be; + break; case RTE_FLOW_FIELD_UDP_PORT_SRC: MLX5_ASSERT(data->offset + width <= 16); off_be = 16 - (data->offset + width); From patchwork Thu Dec 14 03:04:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suanming Mou X-Patchwork-Id: 135178 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 A1F92436E9; Thu, 14 Dec 2023 04:05:31 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5225442FA5; Thu, 14 Dec 2023 04:05:18 +0100 (CET) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2076.outbound.protection.outlook.com [40.107.223.76]) by mails.dpdk.org (Postfix) with ESMTP id 2C12042FA1 for ; Thu, 14 Dec 2023 04:05:16 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GClhreg4qSjlqU12sM96Iw08CvQtDS7BIABszcWANrQwZEKDYVk77vrRVqRSOYaIQ0j9HIzZG17TMIRhcQxRqj4H6TEn2KPlI1OBcW9m3+lZGGVEg1vTeOLIyzn9FJGE1LDys9RYTcmVlbygasPvVAfvSbFNvpEuaKdRwQOKdxdPYawewKoJYzHrSqF+Qbqi2Vq/5FNC5g7zmcheIZrK693uwR3QTqTYv2r7CHfyVTh264VAcUieNl7tMJEhlykSFJhBWXX+hs35EDcBRGNEbhejpSSCN5N/eyimuzFxCffvxPCrZAO+WLun9kH70kKy7Y+RgVR+q5rtCNR/bxAGlQ== 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=N/0dOSisnvfQpewLxFD2GJGN1cvXDs9Kx8TNdoLMz5Y=; b=aN0eQw/vwUfdsXKJRlK9vI6V9xTavw3Y9MNjP3mD8M8f4+mgYpQWy3kGmjLgxzJqS8TlY3TcalCoVlEX0qfvVCpmwGr6kynGbwrObCPC+d0sCMIY4Wum2K7EZQygSgEH6ITuUiQVKtpJGpFzxLtMB+py+9STGyAagTGcLm68xOdqMCA/3hUV0DDESIYrlrKiCyPbrSob9rr7o+yebKUXrZAloLmqdLqNW2hVcpb+gMQs8efRfh/aGghUv4VD1gX3qrGG2ba+HSZkNWIa9UG8RdmFto0OG5zvBXkT2MPKiT+NOuMBJ2p4vQERCy6Mf8P3/YfLo3kjklJjaEuHnQcslg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=N/0dOSisnvfQpewLxFD2GJGN1cvXDs9Kx8TNdoLMz5Y=; b=S2Bw2CJT4+dsAg8myWN5lfivBiXLDFn8QHfcJJpeyCmRhR0ouuZ01vTDb5QM+c2F9YsACPwxRJ+LxrzqBbZh02Cmmc+6VCJNidwkDNBg7NHK9zPEc+SFikdIIJR/0PTckqO2BB/a6BNM4vp8TyLqzCnaI/euZbOAnEMfInr0zCLSda2QKSFiQZ7o4ihc6r/oHa+7M/PzPjZXxRQUbrbSlHKn8LlLwGFDrY8Wcak8KKoAdspcyXEX2Z5inqi9geRE1D2kdstSnHtm7jo5Wm4erzXtMLBQJknEIO+WIQO2qKV9GgR3xtZs2hwITdIFpYiQfKE4iRZri/y1dGa9YpnnlQ== Received: from CH5P220CA0015.NAMP220.PROD.OUTLOOK.COM (2603:10b6:610:1ef::9) by SA0PR12MB4560.namprd12.prod.outlook.com (2603:10b6:806:97::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.28; Thu, 14 Dec 2023 03:05:13 +0000 Received: from DS2PEPF0000343A.namprd02.prod.outlook.com (2603:10b6:610:1ef:cafe::4c) by CH5P220CA0015.outlook.office365.com (2603:10b6:610:1ef::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:12 +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 DS2PEPF0000343A.mail.protection.outlook.com (10.167.18.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:12 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 13 Dec 2023 19:04:52 -0800 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 13 Dec 2023 19:04:49 -0800 From: Suanming Mou To: Dariusz Sosnowski , Viacheslav Ovsiienko , Ori Kam , Matan Azrad CC: , Subject: [PATCH 2/4] net/mlx5: rename modify copy destination to destination Date: Thu, 14 Dec 2023 11:04:25 +0800 Message-ID: <20231214030428.363471-3-suanmingm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231214030428.363471-1-suanmingm@nvidia.com> References: <20231214030428.363471-1-suanmingm@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF0000343A:EE_|SA0PR12MB4560:EE_ X-MS-Office365-Filtering-Correlation-Id: 25fa9771-15bc-4fe6-d57c-08dbfc517d52 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nJwDez9g5cI6WvdRIJKK9jFuq2OPNr05TSDn0Zo2K8g5OIIY+2Te+wrkiE80mudzTVxmvN9xdbD/MJ2A44yXkPrVHbEw0b5WSLO0wGJkLQ0alHBrOgmUyFM8QKt9BldhtwgHnsYx3baTsXGUI+mwbmMKV8lrLHs636lDR7UsHjIP06Lc+qbSIDiw6iLxSbU223dT1h/j6MhmXGuOvbod+VS+AHpVrbz+tmStJ5AdSrMIrarlHNPkV/tJ6vT80BOE78UUdfy3ifUguD8pZdtAUKIkwWAmOj+NVDDkftxdTsu/CKA8aB38B9nOi4sbSuyh95yZx/GSOCplPvRnV6ypYArmGIgHOec5Nyl04Oq1dcyXmy/+UO9esRVT9uvkykndos5vdk2tt6enAvR+35F0eyiSGPx3/5cNDD6CA0Q4/YH12wIUkOENBrUSJDFoxwa2ivO/0/VK720xyd9Mx2GLwBtBNUX1Sj4Ue/kFzf/uC+L7xvx79vn1vQkE7S604XsEqdrMdvQzbnt1V/YxBTiriq+28ZCNhZKTdNaTW+FUzAAcQOaZAdugTOE2OOM2bYwFhuXfgBXR0+3MtcmX6eV++A7OvYBFXqq0+3eu+yKuKoMClxZgi8vCoxTA0dw1W2jJu2IneSMZ+v7+ME6vwfADqu1b0seRHo4TIFeOOOOfcY/hLcBB0iwsFOxVVOr+E1VdZwxGuIlIIqZ+EHxrNNEn78XbDBvbC77E4Ec3EHW3bCT5CV/oaismNue2tnaV6Di4 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)(396003)(39860400002)(136003)(230922051799003)(1800799012)(451199024)(82310400011)(186009)(64100799003)(40470700004)(46966006)(36840700001)(40460700003)(107886003)(1076003)(2616005)(26005)(336012)(16526019)(6286002)(6666004)(7696005)(426003)(47076005)(36860700001)(83380400001)(2906002)(5660300002)(41300700001)(70586007)(478600001)(70206006)(8936002)(8676002)(4326008)(6636002)(54906003)(110136005)(316002)(82740400003)(356005)(7636003)(86362001)(36756003)(55016003)(40480700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2023 03:05:12.6782 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 25fa9771-15bc-4fe6-d57c-08dbfc517d52 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: DS2PEPF0000343A.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4560 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 In the mlx5_flow_field_id_to_modify_info() function, for the coming new ADD_FILED operation will also use that dcopy as ADD_FIELD's destination. This commit renames the dcopy to dest which makes things much clearer. Signed-off-by: Suanming Mou Acked-by: Ori Kam --- drivers/net/mlx5/mlx5_flow.h | 2 +- drivers/net/mlx5/mlx5_flow_dv.c | 34 +++++++++++++++++---------------- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index 6dde9de688..120609c595 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -2834,7 +2834,7 @@ void mlx5_flow_field_id_to_modify_info const struct rte_flow_attr *attr, struct rte_flow_error *error); int flow_dv_convert_modify_action(struct rte_flow_item *item, struct field_modify_info *field, - struct field_modify_info *dcopy, + struct field_modify_info *dest, struct mlx5_flow_dv_modify_hdr_resource *resource, uint32_t type, struct rte_flow_error *error); diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 4e2095dcfe..272dbca00f 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -363,8 +363,10 @@ mlx5_update_vlan_vid_pcp(const struct rte_flow_action *action, * For MLX5_MODIFICATION_TYPE_SET specifies destination field. * For MLX5_MODIFICATION_TYPE_ADD specifies destination field. * For MLX5_MODIFICATION_TYPE_COPY specifies source field. - * @param[in] dcopy - * Destination field info for MLX5_MODIFICATION_TYPE_COPY in @type. + * For MLX5_MODIFICATION_TYPE_ADD_FIELD specifies source field. + * @param[in] dest + * Destination field info for MLX5_MODIFICATION_TYPE_COPY and + * MLX5_MODIFICATION_TYPE_ADD_FIELD in @type. * Negative offset value sets the same offset as source offset. * size field is ignored, value is taken from source field. * @param[in,out] resource @@ -380,7 +382,7 @@ mlx5_update_vlan_vid_pcp(const struct rte_flow_action *action, int flow_dv_convert_modify_action(struct rte_flow_item *item, struct field_modify_info *field, - struct field_modify_info *dcopy, + struct field_modify_info *dest, struct mlx5_flow_dv_modify_hdr_resource *resource, uint32_t type, struct rte_flow_error *error) { @@ -401,7 +403,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, uint32_t mask; uint32_t data; bool next_field = true; - bool next_dcopy = true; + bool next_dest = true; if (i >= MLX5_MAX_MODIFY_NUM) return rte_flow_error_set(error, EINVAL, @@ -432,20 +434,20 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, 0 : size_b, }; if (type == MLX5_MODIFICATION_TYPE_COPY) { - MLX5_ASSERT(dcopy); - actions[i].dst_field = dcopy->id; + MLX5_ASSERT(dest); + actions[i].dst_field = dest->id; actions[i].dst_offset = - (int)dcopy->offset < 0 ? off_b : dcopy->offset; + (int)dest->offset < 0 ? off_b : dest->offset; /* Convert entire record to big-endian format. */ actions[i].data1 = rte_cpu_to_be_32(actions[i].data1); /* * Destination field overflow. Copy leftovers of * a source field to the next destination field. */ - if ((size_b > dcopy->size * CHAR_BIT - dcopy->offset) && - dcopy->size != 0) { + if ((size_b > dest->size * CHAR_BIT - dest->offset) && + dest->size != 0) { actions[i].length = - dcopy->size * CHAR_BIT - dcopy->offset; + dest->size * CHAR_BIT - dest->offset; carry_b += actions[i].length; next_field = false; } else { @@ -455,12 +457,12 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, * Not enough bits in a source filed to fill a * destination field. Switch to the next source. */ - if ((size_b < dcopy->size * CHAR_BIT - dcopy->offset) && + if ((size_b < dest->size * CHAR_BIT - dest->offset) && ((size_b == field->size * CHAR_BIT - off_b) || field->is_flex)) { actions[i].length = size_b; - dcopy->offset += actions[i].length; - next_dcopy = false; + dest->offset += actions[i].length; + next_dest = false; } } else { MLX5_ASSERT(item->spec); @@ -475,11 +477,11 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, /* Convert entire record to expected big-endian format. */ actions[i].data0 = rte_cpu_to_be_32(actions[i].data0); if ((type != MLX5_MODIFICATION_TYPE_COPY || - dcopy->id != (enum mlx5_modification_field)UINT32_MAX) && + dest->id != (enum mlx5_modification_field)UINT32_MAX) && field->id != (enum mlx5_modification_field)UINT32_MAX) ++i; - if (next_dcopy && type == MLX5_MODIFICATION_TYPE_COPY) - ++dcopy; + if (next_dest && type == MLX5_MODIFICATION_TYPE_COPY) + ++dest; if (next_field) ++field; } while (field->size); From patchwork Thu Dec 14 03:04:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suanming Mou X-Patchwork-Id: 135177 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 92A25436E9; Thu, 14 Dec 2023 04:05:23 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DA81942F97; Thu, 14 Dec 2023 04:05:12 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2089.outbound.protection.outlook.com [40.107.243.89]) by mails.dpdk.org (Postfix) with ESMTP id 3026D40283 for ; Thu, 14 Dec 2023 04:05:10 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ex8+ArGsff9XaUtuizE4Mz6Y+zSjvqJGD9Krf9hAIYx9oh2m3Lwi7fBPvtfH5Cmmyw6n56N3DAhzdy2wiyQnVkf8pkuXos0HVVBmgkI3pICEXzE+997Cjafp5kvT3ILit/m1riFH1st52o35iSW7VGFudJZnqq8EF4mRWtRAIU+OxTlUVW+tXM2dTdntRcqOGUXHSxGZ3Tfw4YCxn9JKngim6PU0X5t+PGZF0zBOQteyTMEzgDjKw8YENR0Pp13/xyyBY/ndym/eo3CgiSz+yLRgCZbD1ETC1KG5fl6iHDPy8VRvyhENJeBT6hLorLusXPREl2QjmcVCshAsrSLmyg== 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=zrQznw/7waCB4Wi4SnA0OXeAFtHCqWT8FFRzQb4n60U=; b=YNX8pkejLj0BEjDID6EdMIA/D6/PBBXftrCEBYsiKlyVfLfKPz08RQVMVNj/8VMsw1sgatyjnPt3UtGFwL5BcVGm3uBLEA2JAE/kI/oVyvht8EKS7BlHhTQcHpgPb42R10GSnWJ8jQ2y9ugXPUxSBaCsOqKlvw2vosirYNl7dpPIQNGCHCuxepR+rxMd0uZ74UGFodRBZ2B9GAkOoNzFa+V6lS5CN8Rvs2OSSU5dyu/FvCFmKm/S2EfFTknmQkIPSN7BRnag4N7sTPE8NvM45V3N/vp7wRoHrkjHcrT0HnWp2uTi40wHMcdV10sg8HaauUZFd6CaFH/e7AblY0Ktrg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zrQznw/7waCB4Wi4SnA0OXeAFtHCqWT8FFRzQb4n60U=; b=rfG9TFJ6zAXgia1fa2FTaN5Bed6ZqfZA6SBo3FBB0Ko9OmPh53rJ5n1f2Aa59oMqq0nE/QnKwwO+TemzOvlhv8c9CZF3ABryxqeURF88hTlxHwcOCuSoqXH9Tns8ggwsm2tgUpq9y55POD7I6YxChcUmkhNt6jSH8Gn9gi8UJ+YwKrWFwdp89HKpb9Dus1TgtljPYeDsdyqJUEdw5fsmOlenkv6FTa9lxLVAE523UMfYroEh6FpUzniqHkVzNR502Jqs8MGqlmG4W03fFyIy66nFUwpKztVQcRmOCdPhOJDNhqw/JMMLWtOuJPlz0A94eluXBIAUGV87lhqlzf3Pcw== Received: from SN1PR12CA0057.namprd12.prod.outlook.com (2603:10b6:802:20::28) by DS0PR12MB7827.namprd12.prod.outlook.com (2603:10b6:8:146::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.28; Thu, 14 Dec 2023 03:05:08 +0000 Received: from SN1PEPF0002BA4E.namprd03.prod.outlook.com (2603:10b6:802:20:cafe::5b) by SN1PR12CA0057.outlook.office365.com (2603:10b6:802:20::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:07 +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 SN1PEPF0002BA4E.mail.protection.outlook.com (10.167.242.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:07 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Wed, 13 Dec 2023 19:04:55 -0800 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 13 Dec 2023 19:04:52 -0800 From: Suanming Mou To: Dariusz Sosnowski , Viacheslav Ovsiienko , Ori Kam , Matan Azrad CC: , Subject: [PATCH 3/4] net/mlx5: add modify field action ADD fields support Date: Thu, 14 Dec 2023 11:04:26 +0800 Message-ID: <20231214030428.363471-4-suanmingm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231214030428.363471-1-suanmingm@nvidia.com> References: <20231214030428.363471-1-suanmingm@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4E:EE_|DS0PR12MB7827:EE_ X-MS-Office365-Filtering-Correlation-Id: 6c976fc3-65f7-4a7a-9d81-08dbfc517a2b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7n32yGvLua8ce8ZskYpaFCjKbnJiRpT3dPElIRU+rhI/twzTg3OX4g4FE7QMSRj2oXmzE3JYDdbepwBS956FqUtVVTGHn920aYv1nyOvMDU2Vvo9pQ8yxLWej8f4hH28RSdAz/QzkN1EVEe58H3ye2pdoPpY1bxpskNwanXsntbQrHwPY8C23+alqwBoAV2XnbkqV6Q/BDaNCRDFmSLPT43fRCwD9CRO2AWymL5x1XYV8yY7s5nPB0Mj+15mrUl8ybnS42pGCGhL54f02xLQZR+ZR6jS1BoxhqBHAn3CYwMR6G26iysIJoTupNQbvRym9CLoW4zwdzDNDP6IBvhfqep2L1l5HyacIiLY/OsSu9K9+h7GyLQNo61/5w07UYdwadg9PZOMNmZP/hLL51MwCyDNrJFRUcbUTVdc1Yehnr60vpvERYkOtxsKn6qLGlazD8GAHk3odssjC+v6yyJXMIM/QltGKW3IGk7Vr4sYw5WZqoC0u8YdRs50u6oITGnsvWNnaFiJjeZH+SxX5sxx0UNAVrcNHnUOSKBOnS9CsaEv2eX+BtmTpHVtVaVrxCCBdVLd88CNlsHYEtM5EZR6K1+lRMGsq+R/adysm2wYtynjTHDMDZOKhRFfGBfCXZxdaEcAkDShOla7X6tPt0VDi4uemgPJ6siqYS0pPwPdJfOHWqtcfou5NuInInNh6nDZwcB3TpArnUSbL65OXD+JzmC9uUPgW3B5pe16lEKAKwLq/za5wAqPSENqD0reeGHE 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)(136003)(396003)(376002)(39860400002)(230922051799003)(64100799003)(451199024)(82310400011)(1800799012)(186009)(46966006)(40470700004)(36840700001)(2906002)(40460700003)(86362001)(4326008)(8676002)(8936002)(316002)(5660300002)(41300700001)(36756003)(478600001)(36860700001)(426003)(16526019)(40480700001)(6286002)(2616005)(107886003)(336012)(26005)(1076003)(6666004)(356005)(47076005)(82740400003)(55016003)(7696005)(83380400001)(7636003)(110136005)(6636002)(70206006)(70586007)(54906003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2023 03:05:07.3880 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6c976fc3-65f7-4a7a-9d81-08dbfc517a2b 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: SN1PEPF0002BA4E.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7827 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 ADD_FIELD operation allows user to add the src field value to the dest field. Dest field has the sum of src field value and original dst field value. Signed-off-by: Suanming Mou Acked-by: Ori Kam --- drivers/net/mlx5/mlx5_flow_dv.c | 11 +++++++---- drivers/net/mlx5/mlx5_flow_hw.c | 10 +++++++--- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 272dbca00f..1c3d557d4a 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -389,6 +389,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, uint32_t i = resource->actions_num; struct mlx5_modification_cmd *actions = resource->actions; uint32_t carry_b = 0; + bool to_dest; /* * The item and mask are provided in big-endian format. @@ -397,6 +398,8 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, */ MLX5_ASSERT(item->mask); MLX5_ASSERT(field->size); + to_dest = type == MLX5_MODIFICATION_TYPE_COPY || + type == MLX5_MODIFICATION_TYPE_ADD_FIELD; do { uint32_t size_b; uint32_t off_b; @@ -416,7 +419,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, ++field; continue; } - if (type == MLX5_MODIFICATION_TYPE_COPY && field->is_flex) { + if (to_dest && field->is_flex) { off_b = 32 - field->shift + carry_b - field->size * CHAR_BIT; size_b = field->size * CHAR_BIT - carry_b; } else { @@ -433,7 +436,7 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, .length = (size_b == sizeof(uint32_t) * CHAR_BIT) ? 0 : size_b, }; - if (type == MLX5_MODIFICATION_TYPE_COPY) { + if (to_dest) { MLX5_ASSERT(dest); actions[i].dst_field = dest->id; actions[i].dst_offset = @@ -476,11 +479,11 @@ flow_dv_convert_modify_action(struct rte_flow_item *item, } /* Convert entire record to expected big-endian format. */ actions[i].data0 = rte_cpu_to_be_32(actions[i].data0); - if ((type != MLX5_MODIFICATION_TYPE_COPY || + if ((!to_dest || dest->id != (enum mlx5_modification_field)UINT32_MAX) && field->id != (enum mlx5_modification_field)UINT32_MAX) ++i; - if (next_dest && type == MLX5_MODIFICATION_TYPE_COPY) + if (next_dest && to_dest) ++dest; if (next_field) ++field; diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index da873ae2e2..d224979ee8 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -1102,7 +1102,8 @@ flow_hw_should_insert_nop(const struct mlx5_hw_modify_header_action *mhdr, if (last_type == MLX5_MODIFICATION_TYPE_SET || last_type == MLX5_MODIFICATION_TYPE_ADD) should_insert = new_cmd.field == last_cmd.field; - else if (last_type == MLX5_MODIFICATION_TYPE_COPY) + else if (last_type == MLX5_MODIFICATION_TYPE_COPY || + last_type == MLX5_MODIFICATION_TYPE_ADD_FIELD) should_insert = new_cmd.field == last_cmd.dst_field; else if (last_type == MLX5_MODIFICATION_TYPE_NOP) should_insert = false; @@ -1110,11 +1111,13 @@ flow_hw_should_insert_nop(const struct mlx5_hw_modify_header_action *mhdr, MLX5_ASSERT(false); /* Other types are not supported. */ break; case MLX5_MODIFICATION_TYPE_COPY: + case MLX5_MODIFICATION_TYPE_ADD_FIELD: if (last_type == MLX5_MODIFICATION_TYPE_SET || last_type == MLX5_MODIFICATION_TYPE_ADD) should_insert = (new_cmd.field == last_cmd.field || new_cmd.dst_field == last_cmd.field); - else if (last_type == MLX5_MODIFICATION_TYPE_COPY) + else if (last_type == MLX5_MODIFICATION_TYPE_COPY || + last_type == MLX5_MODIFICATION_TYPE_ADD_FIELD) should_insert = (new_cmd.field == last_cmd.dst_field || new_cmd.dst_field == last_cmd.dst_field); else if (last_type == MLX5_MODIFICATION_TYPE_NOP) @@ -1264,7 +1267,8 @@ flow_hw_modify_field_compile(struct rte_eth_dev *dev, item.spec = &value; } } else { - type = MLX5_MODIFICATION_TYPE_COPY; + type = conf->operation == RTE_FLOW_MODIFY_SET ? + MLX5_MODIFICATION_TYPE_COPY : MLX5_MODIFICATION_TYPE_ADD_FIELD; /* For COPY fill the destination field (dcopy) without mask. */ mlx5_flow_field_id_to_modify_info(&conf->dst, dcopy, NULL, conf->width, dev, From patchwork Thu Dec 14 03:04:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Suanming Mou X-Patchwork-Id: 135179 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 EBAFF436E9; Thu, 14 Dec 2023 04:05:37 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8F06542FC3; Thu, 14 Dec 2023 04:05:19 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2043.outbound.protection.outlook.com [40.107.244.43]) by mails.dpdk.org (Postfix) with ESMTP id 8B7C842FA1 for ; Thu, 14 Dec 2023 04:05:17 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G/1LyGV29Ps+87EU07FDjceyHN/2FogMS4j9WxmGnphbEzXgXc5iAewWPoP5O3O8ZpCbgwSrT9Alqr6F9ee0r/Fkd7OuSmEtOwmya1CtKH+U5w1ghFM4m0a4KxN24LOEcMRekDtToK8+bko5O8zAJK6L57aS99RUq5wWSl3maoHC103vJmUdSB5J0M26qWleT47Tra0X9Y7q6jBXBqjTWH4ohMXWFAfx28ANxVP+ZavJvCxTXCfI/eg5TkOLNvfo774U9deHpyYkSaJ0nTT+bk4muC+DVG64Kzzo6Hs8WsOH67kqprxSvd93bc8uaqs3y/0g25fMCxM3wizKbVi4Mw== 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=NYfypAxp63p23biDtj5WlNB0/L84yhaecNDYciF2LPg=; b=DSuLjyTIHAIOIsnHz0/ZE+HSSLGNlkkkHIO8bqXrUzorLG1I2WVAsak8SdoC8aBPSEKueEs+QbWlIappEv67pilxFjJfzgn2neZuHCXCl1wihIttbiX3qfrD3STfQt5YUaTkc9Aru5BJixn6u2L3TWyOAJIRXQGEzdwSuBrf/Tk0i95Dm0MFSKpRinKyHHylsBrh/NQfhgxc7MypeYRWsiOLeMV+FXiquKJCG96HVDWzlJLubFFdE1B16PPqrYYUI76nazAqrkSEFBqafzSMJuFTK3Q1xNMIid+M5vcWVKUxuwZNL3FzKfuAUxB5GDvXZDRroIOd6d0h0r2Rfs8aZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NYfypAxp63p23biDtj5WlNB0/L84yhaecNDYciF2LPg=; b=R4fiZYQH23SHNLLcQYt6O//mkqd2nx5ccgwe09yeCzkIaxJVbqWtQo2oPVYZ6QAqtF3H2RTTIyZGaTdCydeVTf4j+H12v3iiT30MHF95CurK2GP5VqEduXAbmKmVXnGfFD/dXeE3Yea1LlZ8FXJ8t+Ye1uU7FBnvApQQB1BHwkHKX86qoX737wonAA5XExI6pY0zO5Odzp+9F4zLBs1Rnr7h+bFCFI8jpBxxhDuz/nIZK7Sadkzjgcl2T3++ARlmyMkveOFVPDr3c0Ximw9nKTPGR/C8CFcl9jmchy49koAKeHY1mLEEvk14zmEIZ8DfZlFUvNXsEo8FbfrosIDQLQ== Received: from SA0PR11CA0128.namprd11.prod.outlook.com (2603:10b6:806:131::13) by SN7PR12MB7372.namprd12.prod.outlook.com (2603:10b6:806:29b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.28; Thu, 14 Dec 2023 03:05:14 +0000 Received: from SN1PEPF0002BA4C.namprd03.prod.outlook.com (2603:10b6:806:131:cafe::fe) by SA0PR11CA0128.outlook.office365.com (2603:10b6:806:131::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:14 +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 SN1PEPF0002BA4C.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7091.26 via Frontend Transport; Thu, 14 Dec 2023 03:05:14 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) 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; Wed, 13 Dec 2023 19:04:59 -0800 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Wed, 13 Dec 2023 19:04:56 -0800 From: Suanming Mou To: Dariusz Sosnowski , Viacheslav Ovsiienko , Ori Kam , Matan Azrad CC: , Subject: [PATCH 4/4] net/mlx5: add modify field action ADD fields validation Date: Thu, 14 Dec 2023 11:04:27 +0800 Message-ID: <20231214030428.363471-5-suanmingm@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20231214030428.363471-1-suanmingm@nvidia.com> References: <20231214030428.363471-1-suanmingm@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4C:EE_|SN7PR12MB7372:EE_ X-MS-Office365-Filtering-Correlation-Id: 27e24eee-859b-45a5-429e-08dbfc517e64 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZECN3/Oxq0x6HpZVG7L7j1DGL5K2KXYRYnBrM27MSA4+RcvC8nEwA8/ztrNWC+bLbub5CenhmC4qyopA0jZH9t5IbBa9W2Z+P4zs2CSw5GrieijlDjhl6WWin6A33YTo28ZA07C26BTnBKael9JOQJ4ytaOmvrtOnDkhAWt1E/8RmRJwSzro3f9qpmg7TfPEzgWEgINcBLviBPbuxsaEaWygkOZOVG0c7aB0AHPlZeKeenWNhbii0E8K4NcdFaUAFa4KwjbLaXEVixXheDGjzSsY+Ce+2ZBsPz6cHXl3qZY+m5VoXTe2XABba+r302YZPMbFbt91L6YwoO8vaso7l6MFoiuFLF2bWR642h5UkN0MldIpBluHAVdmV+UL+hF2mXBdIpvPTSnvjrhofGi1Pp/Opa7khxuPLm4pzTaAKGsQQlq5P8bYQOPMz7F99e6VXSeDS5KxmRDhlYmv8V3HDz1IWzewU3qzwntPMmkZOVztwyT3O/uIwnjcSf4JLhTg+hM2CE5OwqhxETKKn4nidCjXkrKhp9a4u7/wN2tcfuvDXCtAytUEVfQhVpigf06+tyzSqFpPP54AMjCrsn1UKynLFHgflsUqht7QMqrWHdbtv+NYKWa1rOLL288nNrNu3N/ncOSqBHpjC2SxGE1Wrl5DR5n8XX9ywnr4K1uSZazXyqs3RjO3oedQDDDEw/NTG9T31zMJ4z0m+lqGjLFMGDr1sFoA7kL8sY0CUgUxfpY= 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)(346002)(376002)(39860400002)(230922051799003)(451199024)(1800799012)(82310400011)(64100799003)(186009)(40470700004)(46966006)(36840700001)(41300700001)(83380400001)(426003)(336012)(36860700001)(47076005)(7696005)(5660300002)(40480700001)(55016003)(478600001)(82740400003)(2906002)(6666004)(356005)(110136005)(54906003)(6636002)(316002)(70586007)(4326008)(8676002)(8936002)(70206006)(6286002)(16526019)(40460700003)(86362001)(107886003)(2616005)(7636003)(26005)(36756003)(1076003); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Dec 2023 03:05:14.4545 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 27e24eee-859b-45a5-429e-08dbfc517e64 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: SN1PEPF0002BA4C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7372 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 Due to HW limitation, not all the fields are available as ADD_FIELD destination. This commit adds the validation to the destinations. Signed-off-by: Suanming Mou Acked-by: Ori Kam --- doc/guides/rel_notes/release_24_03.rst | 4 ++++ drivers/net/mlx5/mlx5_flow_hw.c | 32 ++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index e9c9717706..2c0e2930cc 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -55,6 +55,10 @@ New Features Also, make sure to start the actual text at the margin. ======================================================= +* **Updated NVIDIA mlx5 driver.** + + * Added support for accumulating from src field to dst field. + Removed Items ------------- diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index d224979ee8..c4a90a3690 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -4948,6 +4948,33 @@ flow_hw_modify_field_is_used(const struct rte_flow_action_modify_field *action, return action->src.field == field || action->dst.field == field; } +static bool +flow_hw_modify_field_is_add_dst_valid(const struct rte_flow_action_modify_field *conf) +{ + if (conf->operation != RTE_FLOW_MODIFY_ADD) + return true; + if (conf->src.field == RTE_FLOW_FIELD_POINTER || + conf->src.field == RTE_FLOW_FIELD_VALUE) + return true; + switch (conf->dst.field) { + case RTE_FLOW_FIELD_IPV4_TTL: + case RTE_FLOW_FIELD_IPV6_HOPLIMIT: + case RTE_FLOW_FIELD_TCP_SEQ_NUM: + case RTE_FLOW_FIELD_TCP_ACK_NUM: + case RTE_FLOW_FIELD_TAG: + case RTE_FLOW_FIELD_META: + case RTE_FLOW_FIELD_FLEX_ITEM: + case RTE_FLOW_FIELD_TCP_DATA_OFFSET: + case RTE_FLOW_FIELD_IPV4_IHL: + case RTE_FLOW_FIELD_IPV4_TOTAL_LEN: + case RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN: + return true; + default: + break; + } + return false; +} + static int flow_hw_validate_action_modify_field(struct rte_eth_dev *dev, const struct rte_flow_action *action, @@ -5060,6 +5087,11 @@ flow_hw_validate_action_modify_field(struct rte_eth_dev *dev, return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, action, "MPLS cannot be used as destination"); + /* ADD_FIELD is not supported for all the fields. */ + if (!flow_hw_modify_field_is_add_dst_valid(action_conf)) + return rte_flow_error_set(error, EINVAL, + RTE_FLOW_ERROR_TYPE_ACTION, action, + "invalid add_field destination"); return 0; } static int