From patchwork Sun Dec 3 11:25:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 134767 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 4B3094365F; Sun, 3 Dec 2023 12:28:49 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2680B41060; Sun, 3 Dec 2023 12:27:03 +0100 (CET) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2068.outbound.protection.outlook.com [40.107.220.68]) by mails.dpdk.org (Postfix) with ESMTP id 2A6D640A7A for ; Sun, 3 Dec 2023 12:27:02 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VMHkHyCxkSHmcgwlUjNwnIpAv8fp2WxXEYyHWctm2DUMuXKkSOpJqO/fUIpSjqTy+M5mPBUgLMW2BByCOFokgG7wAaCjhqbvJBpoTSfAgu39ACdjV2bQyk2qOKYhNGMxfDqMmrBXYDbwZ+VVmgWTKPdZqC+z8/O/b5HICGrRruYSHHdVSuHrjXvoyjC1GtMu9VWFSb/NgCNX6NTT6SZ3yjuJNklddGLzsTzysuD0zn93+fLFCZoWqCllor1t2K61zV2NUXXjoyqpqtqfgndDzlX+5gu2aURoKRU+ZZieYkCKf1BMxOb9zMl/VjAMu9EqzMYVXeYL57aRkXm9iSrEAw== 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=iT9nR1AxSRdyNe9wBHnOoKoDxfnGwMKqQf8m/sGnsss=; b=JhcK3aIKW6aRLlFRxcPb5MOYzIrbZfvFu9RWB4YTmVvEfgyE8lUQlOEUq69uJcvqtH0BEDhsQQlMcX/Brku4wWlJYdFKL4cryNiXNn9f4TmZCI1GI/yMoyhcjPzgFgk4ZEHtwQeYXC0nNBLUrE5oZ+fG5SneJO1HuyNVCZ176wggsXdZJsRGQXUob4XvZq6WAI0OEiOGluOtv3bFwvElpQSlIZdv89fcyvzta1dDSYlK8a1u/VA4X1n1Z5u/rtw+LBAHAYB8Wbnb12BKj0XMtCaFrWH1Ud83skMR6Z8Io917AFn6F8w8DcDHZnsmlL46cWNAhpGnnjBptjIX5F2DTA== 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=iT9nR1AxSRdyNe9wBHnOoKoDxfnGwMKqQf8m/sGnsss=; b=gbqOJcwzwr57qDzz9cbSgWEAAjzrvzQJN0r3VwSCRc04dLutDd7PaPq3HdaHdhJqlb/R9kb21bQq+zVpgSpMH/uXOBfJRi8PMXlGrCn9ODJqV8G0zoZ8JpwKxCIxUQkGkwTTkijLzl16mAK7Ny2WUVLoo2J63IpD7VLvl5or7RPtGxMM0rPWgUVRvFRlMApITcqu7wX2LzD2I8ZhqnFjDKYLCXg7y7uMqWvlkWeJb9xnQbuBtVwit54Zkb6+dwtu5JALiFYegoM1T0gTLDTvExuP5JHeGXJDINW396kDcrEZfwNwcTBiHdHybGwe4/gZ8jCe3xEliPV00bHnGc9amw== Received: from MW4PR04CA0181.namprd04.prod.outlook.com (2603:10b6:303:86::6) by CH3PR12MB9025.namprd12.prod.outlook.com (2603:10b6:610:129::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.32; Sun, 3 Dec 2023 11:26:59 +0000 Received: from CO1PEPF000042AB.namprd03.prod.outlook.com (2603:10b6:303:86:cafe::6f) by MW4PR04CA0181.outlook.office365.com (2603:10b6:303:86::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.33 via Frontend Transport; Sun, 3 Dec 2023 11:26:59 +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 CO1PEPF000042AB.mail.protection.outlook.com (10.167.243.40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7068.20 via Frontend Transport; Sun, 3 Dec 2023 11:26:59 +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; Sun, 3 Dec 2023 03:26:43 -0800 Received: from rnnvmail205.nvidia.com (10.129.68.10) 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; Sun, 3 Dec 2023 03:26:43 -0800 Received: from nvidia.com (10.127.8.13) by mail.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.986.41 via Frontend Transport; Sun, 3 Dec 2023 03:26:41 -0800 From: Michael Baum To: CC: Matan Azrad , Raslan Darawsheh , Viacheslav Ovsiienko , Ori Kam , Suanming Mou Subject: [PATCH v1 22/23] net/mlx5: add support for GENEVE VNI modify field Date: Sun, 3 Dec 2023 13:25:42 +0200 Message-ID: <20231203112543.844014-23-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20231203112543.844014-1-michaelba@nvidia.com> References: <20231203112543.844014-1-michaelba@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CO1PEPF000042AB:EE_|CH3PR12MB9025:EE_ X-MS-Office365-Filtering-Correlation-Id: b0c1ff68-d1e4-486d-e8e2-08dbf3f2c3ad X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pBBC91eilTJcsWeOwftUGSKytsBd0t2tpB/d0+3bSyPNuz4/+6s4Q4l7ydV3dyQDDp8/KAr6mdgANVGeXf3TiJcq9/AeZDrUtxm69+5jGGJfoJ4th0A3hszgEFv5kt9OW0s5ANnnfE7hSDvH0n4hf2o42qW6B4Ua8QDT8csVLeJwxsWnzKLzGsn5VTzbzvAfZhYArJokDLIG7BcVsqWxCe2sgthh97s8Q11K6GwdfIDjXV+l2S44WSVfhEO3WkkEA0AZfuE35M+A6zKmkPh3qTw90qdBIRZ/Zb2TxOLEm1ooysIfkOsQpfSZEFkM8Vftc1kUWGgaeWoTSMVi0Q/Vuc7AtjWzmLICE5GlUyLpa1BEtOfDhrrgid34SxgFLT+pTLIFWxpQiH1u93c4l04CImKbEUyn9YxuDU3oLtE4a27o4R0H5iZ1J7Jwg2Ku0Q+k6IZ/957QpYbd6vqTGkhFJj+XbJIVSVs6SJ8hXTBSJo9nVQSwbkDADcg8u23ZhskOqHcqIZrF/NFnIEoAACTZNV2HDzuNgkDWu7bQ/Op7dwI4n95z8kIXNRZstANCnaZ2Yor3KF79uzPAHBx6rS4qcjSnFeoohdkUcQhUk6U7+vZZuwnfpZRx8dvTDnOX8wNJE1GeW/IP0zvog+SOn9lWOSn9j9bqbEaO8NptrNAWn5ZvcqiAz4y6PNmLe4TXTU3g633O0btOaJ2SGExcU1pu6gCPgW6UFmIOiixNGdj9TsX0ItRjmspnA9rI7Nj1uC6o 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)(376002)(39860400002)(396003)(136003)(230922051799003)(82310400011)(1800799012)(64100799003)(186009)(451199024)(46966006)(40470700004)(36840700001)(478600001)(26005)(83380400001)(7636003)(336012)(6286002)(47076005)(7696005)(356005)(1076003)(40480700001)(82740400003)(426003)(36756003)(107886003)(2616005)(316002)(6916009)(54906003)(70206006)(70586007)(36860700001)(55016003)(5660300002)(4326008)(86362001)(2906002)(8936002)(8676002)(40460700003)(41300700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Dec 2023 11:26:59.2240 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b0c1ff68-d1e4-486d-e8e2-08dbf3f2c3ad 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: CO1PEPF000042AB.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR12MB9025 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 support for GENEVE VNI field modification. The support is only using HW steering. Signed-off-by: Michael Baum --- doc/guides/nics/mlx5.rst | 6 +++++- doc/guides/rel_notes/release_24_03.rst | 1 + drivers/net/mlx5/mlx5_flow_dv.c | 4 +--- drivers/net/mlx5/mlx5_flow_hw.c | 12 ++++++++++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index b946ce00c2..fceb5bd58b 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -577,7 +577,11 @@ Limitations - Modification of an arbitrary place in a packet via the special ``RTE_FLOW_FIELD_START`` Field ID is not supported. - Modification of the MPLS header is supported only in HWS and only to copy from, the encapsulation level is always 0. - - Modification of the 802.1Q Tag, VXLAN Network or GENEVE Network ID's is not supported. + - Modification of the 802.1Q Tag is not supported. + - Modification of VXLAN Network or GENEVE Network ID's is supported only for HW steering. + - Modification of GENEVE Network ID's is not supported when configured + ``FLEX_PARSER_PROFILE_ENABLE`` supports Geneve TLV options. + See :ref:`mlx5_firmware_config` for more flex parser information. - Encapsulation levels are not supported, can modify outermost header fields only. - Offsets cannot skip past the boundary of a field. - If the field type is ``RTE_FLOW_FIELD_MAC_TYPE`` diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index bedef2a4c0..8a99d6bfa4 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -59,6 +59,7 @@ New Features * Added HW steering support for ``RTE_FLOW_ITEM_TYPE_GENEVE`` flow item. * Added HW steering support for ``RTE_FLOW_ITEM_TYPE_GENEVE_OPT`` flow item. + * Added HW steering support for modify field ``RTE_FLOW_FIELD_GENEVE_VNI`` flow action. Removed Items diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 72e0d82e7b..bb3d7ddc3c 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1881,6 +1881,7 @@ mlx5_flow_field_id_to_modify_info info[idx].offset = off_be; break; case RTE_FLOW_FIELD_VXLAN_VNI: + case RTE_FLOW_FIELD_GENEVE_VNI: MLX5_ASSERT(data->offset + width <= 24); /* VNI is on bits 31-8 of TUNNEL_HDR_DW_1. */ off_be = 24 - (data->offset + width) + 8; @@ -1891,9 +1892,6 @@ mlx5_flow_field_id_to_modify_info else info[idx].offset = off_be; break; - case RTE_FLOW_FIELD_GENEVE_VNI: - /* not supported yet*/ - break; case RTE_FLOW_FIELD_GTP_TEID: MLX5_ASSERT(data->offset + width <= 32); off_be = 32 - (data->offset + width); diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index 7c786c432f..22ac4e0a7c 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -4952,6 +4952,8 @@ flow_hw_validate_action_modify_field(struct rte_eth_dev *dev, { const struct rte_flow_action_modify_field *action_conf = action->conf; const struct rte_flow_action_modify_field *mask_conf = mask->conf; + struct mlx5_priv *priv = dev->data->dev_private; + struct mlx5_hca_attr *attr = &priv->sh->cdev->config.hca_attr; int ret; if (!mask_conf) @@ -5047,10 +5049,16 @@ flow_hw_validate_action_modify_field(struct rte_eth_dev *dev, return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, action, "modifying vlan_type is not supported"); - if (flow_hw_modify_field_is_used(action_conf, RTE_FLOW_FIELD_GENEVE_VNI)) + /** + * Geneve VNI modification is supported only when Geneve header is + * parsed natively. When GENEVE options are supported, they both Geneve + * and options headers are parsed as a flex parser. + */ + if (flow_hw_modify_field_is_used(action_conf, RTE_FLOW_FIELD_GENEVE_VNI) && + attr->geneve_tlv_opt) return rte_flow_error_set(error, EINVAL, RTE_FLOW_ERROR_TYPE_ACTION, action, - "modifying Geneve VNI is not supported"); + "modifying Geneve VNI is not supported when GENEVE opt is supported"); /* Due to HW bug, tunnel MPLS header is read only. */ if (action_conf->dst.field == RTE_FLOW_FIELD_MPLS) return rte_flow_error_set(error, EINVAL,