From patchwork Mon Feb 26 13:45:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 137231 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 68A0943BED; Mon, 26 Feb 2024 14:47:04 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 294F542EA4; Mon, 26 Feb 2024 14:46:49 +0100 (CET) Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2070.outbound.protection.outlook.com [40.107.244.70]) by mails.dpdk.org (Postfix) with ESMTP id 6253342E91 for ; Mon, 26 Feb 2024 14:46:41 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EDK3V1uyQiyuVrAe9lxBW7OkBEUzbSDy+4R5d756RTcdun7vVw2DXOclAZ4vZJEES9mVyPM+riRiLX9bf6h5f/P/gJ/ziIsLB+UEDmLAMHWZancVB3pwvsdOHDuTs4yKPPAfSzVlxzGrck/V7qG3EGbjAs+pexLALY4nMbfnSGKjY3DfOzcA0qYc8Zv5fQaR9eGDVSyKJZUnR4iB6EhkdRUmFNpKY0HgXzjwq8xSaHbKL2FmIKDA+au9sPZO7GsENHcNO9wfJjlRxlBM172ww/k3XkORkEdU6v8FD2jIbw7HyybZ1EaGBTr4A39UW+3K9eOU9zlljtFJJYY+plYf3w== 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=nwrHF+dOA0HhcqlXm972iqo1fDBt+nt9E66tTm3259E=; b=i2/p4rROSwBDzIhFO0ggFBThbU6JIi8lUi18Bg1HQAsrpYdpaDPBCk4+A+jfwoCVrbDjbhMZYWOBbLUHOm4J2wFMrzUm5EfTOwDmpbsyVvOTCJfNJNeqK0exAuCC2YiOotvOMX4qJ0L4ariQQUnGs9/Li5hv4fA0BNuMa1sbJGOIMS5moNn8tlagVy4NrI4WYXuqckiCaYKCUhz3e4/yzWujQdfd9sMkDBmHtcMsIyPQB/z6JSvO7RR2acihA2UDInzPbKVyQqO0mtojKMLQYHj12qcfTG6ll/EIBRFuYniK94eAQM17ENN3xWSQsW3lojXHb8VYBLLi8qAxvHAnEg== 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=nwrHF+dOA0HhcqlXm972iqo1fDBt+nt9E66tTm3259E=; b=DfqtZlBG27QPSe0kITDdGSRDIJ6yKXm3oUY5ww/F49o72h7NM+uqJlF497odfQ83Z01XHT3ss7287I6Qbv3MiBbAB6sIDlMfQkYsj8I67UCoDwvOJwjTeLdRek/FbAFChMsgrLMOCD9WybG9DwYFPT0Gc75gN9327opJ9eZ4UY8RgJxdTWfILzxe8TMb44s0JuMe1AywYj6OoyPgWDOlx8n4PHK6rtEwn7Omtc32g1kigbYFLFQlB+mLTRkd0xKj+4YV5XQSpkfbliy9SGKeLa4QNQeT3zvpnS8c78Eh5j5UhvkjUJSME6rQbuwsq4kUoY7WU2cZDavD+FUELatR5Q== Received: from CH2PR08CA0006.namprd08.prod.outlook.com (2603:10b6:610:5a::16) by SJ0PR12MB6783.namprd12.prod.outlook.com (2603:10b6:a03:44e::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.34; Mon, 26 Feb 2024 13:46:38 +0000 Received: from DS2PEPF00003442.namprd04.prod.outlook.com (2603:10b6:610:5a:cafe::30) by CH2PR08CA0006.outlook.office365.com (2603:10b6:610:5a::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.49 via Frontend Transport; Mon, 26 Feb 2024 13:46:37 +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 DS2PEPF00003442.mail.protection.outlook.com (10.167.17.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.25 via Frontend Transport; Mon, 26 Feb 2024 13:46:37 +0000 Received: from rnnvmail202.nvidia.com (10.129.68.7) 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; Mon, 26 Feb 2024 05:46:21 -0800 Received: from rnnvmail203.nvidia.com (10.129.68.9) by rnnvmail202.nvidia.com (10.129.68.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1258.12; Mon, 26 Feb 2024 05:46:19 -0800 Received: from nvidia.com (10.127.8.13) 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.1258.12 via Frontend Transport; Mon, 26 Feb 2024 05:46:17 -0800 From: Michael Baum To: CC: Matan Azrad , Dariusz Sosnowski , Raslan Darawsheh , Viacheslav Ovsiienko , Ori Kam , Suanming Mou Subject: [PATCH v3 6/7] net/mlx5: support modify IPv6 traffic class field Date: Mon, 26 Feb 2024 15:45:55 +0200 Message-ID: <20240226134556.2985054-7-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240226134556.2985054-1-michaelba@nvidia.com> References: <20240207155533.1582031-1-michaelba@nvidia.com> <20240226134556.2985054-1-michaelba@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS2PEPF00003442:EE_|SJ0PR12MB6783:EE_ X-MS-Office365-Filtering-Correlation-Id: 72be001e-ac2f-48e1-3438-08dc36d15ab3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: tmJiwM4ksYAxc8toEOtWU8zx5SgZb+iT3g613W1pL+Lb4DFxoeQthHOPdmWSXhf/c9f4xm+jhbTW1krVknv/9s2o3/TtIo4UxWdWFil8AL0PgI4kIEpKcpw0PIVfajUF2F1MNJF9lnVpXgJAmP8t/OWRc+kmiLg83sqTIpWo3BweRshuBCwlz5HvXeJ2/WBbITvlkzmisAALOlvucKASqjPYhRqNJUqFixApZgnm0UrgQTfWQekzeqM3lwqhJqHT96qABvE69quqVhGQLBXPuyPuzOlz36fNhdLjKy0VBrfrRTNM7w5yY+Ah40zuLECYUMzT1lmbTQuqZIezvlxtLhG7HG+PHPxZvEQMStsXQu8aYsYanO9GIcESsJl+NffXcYUmRn+U8AiYq5Fbl906sHYWhNsblZAeDOvk1bhNF9XsmdqYdcDYau8u+mLcY2F9Qx2O1teQXE/EsV30FTZOlwAfWiISePr3g1wcff1c0Q5WUauI4T+U6C+7iuiEaESIb+Zrg0Dn9Wendjk+aYtSonRpNj8pFOMCleMGGztTWUTQi6aMzoKRJnmfFQA6MglcBsI8rpvvvIUj8pp7UNFv2+JONutNHIqSMduON2bGs/7awmEgWtbF3RQ1yXpCAfqJvFamP2lOhP6jswgKe6DQe9KWdSEoF6BJ7HfY1mM2kzXVCzB8qQmowni5gynv3P04NABCEEEsrgAfQzLQ5okwvAO0T5Bpa8SlHNQ3z5d9W0LSTUmz93PjKzEDvkxirZXX 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)(36860700004); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Feb 2024 13:46:37.5026 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 72be001e-ac2f-48e1-3438-08dc36d15ab3 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: DS2PEPF00003442.namprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6783 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 HW steering support for IPv6 traffic class field modification. Copy from inner IPv6 traffic class field is also supported using "level=2". Signed-off-by: Michael Baum Acked-by: Dariusz Sosnowski --- doc/guides/rel_notes/release_24_03.rst | 1 + drivers/net/mlx5/mlx5_flow_dv.c | 11 +++++++++++ drivers/net/mlx5/mlx5_flow_hw.c | 3 ++- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index 0473858e19..c2fc22ed66 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -127,6 +127,7 @@ New Features * Added support for GENEVE matching and modifying in HWS flow engine. * Added support for modifying IPv4 proto field in HWS flow engine. * Added support for modifying IPsec ESP fields in HWS flow engine. + * Added support for modifying IPv6 traffic class field in HWS flow engine. * Added support for matching a random value. * Added support for comparing result between packet fields or value. * Added support for accumulating value of field into another one. diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index feda003c07..2c0c8e37f7 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1394,6 +1394,7 @@ mlx5_flow_item_field_width(struct rte_eth_dev *dev, return 32; case RTE_FLOW_FIELD_IPV6_DSCP: return 6; + case RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS: case RTE_FLOW_FIELD_IPV6_HOPLIMIT: case RTE_FLOW_FIELD_IPV6_PROTO: return 8; @@ -1795,6 +1796,16 @@ mlx5_flow_field_id_to_modify_info else info[idx].offset = off_be; break; + case RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS: + MLX5_ASSERT(data->offset + width <= 8); + off_be = 8 - (data->offset + width); + modi_id = CALC_MODI_ID(IPV6_TRAFFIC_CLASS, data->level); + info[idx] = (struct field_modify_info){1, 0, modi_id}; + if (mask) + mask[idx] = flow_modify_info_mask_8(width, off_be); + 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); diff --git a/drivers/net/mlx5/mlx5_flow_hw.c b/drivers/net/mlx5/mlx5_flow_hw.c index fc1bcdd84e..9d4fdb06c1 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -2878,7 +2878,7 @@ flow_hw_modify_field_construct(struct mlx5_hw_q_job *job, * bits left. Shift the data left for IPv6 DSCP */ if (field->id == MLX5_MODI_OUT_IPV6_TRAFFIC_CLASS && - !(mask & MLX5_IPV6_HDR_ECN_MASK)) + mhdr_action->dst.field == RTE_FLOW_FIELD_IPV6_DSCP) data <<= MLX5_IPV6_HDR_DSCP_SHIFT; data = (data & mask) >> off_b; job->mhdr_cmd[i++].data1 = rte_cpu_to_be_32(data); @@ -5067,6 +5067,7 @@ flow_hw_validate_modify_field_level(const struct rte_flow_field_data *data, case RTE_FLOW_FIELD_IPV4_TTL: case RTE_FLOW_FIELD_IPV4_SRC: case RTE_FLOW_FIELD_IPV4_DST: + case RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS: case RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN: case RTE_FLOW_FIELD_IPV6_HOPLIMIT: case RTE_FLOW_FIELD_IPV6_SRC: