From patchwork Wed Feb 7 15:55:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Baum X-Patchwork-Id: 136493 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 BC4E143AA0; Wed, 7 Feb 2024 16:56:44 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 95C1942E24; Wed, 7 Feb 2024 16:56:07 +0100 (CET) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2076.outbound.protection.outlook.com [40.107.92.76]) by mails.dpdk.org (Postfix) with ESMTP id 9BDC642E16 for ; Wed, 7 Feb 2024 16:56:05 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Alh//8OxboPZX/6Smuy3NM3SxY8Qlut2+PGebqRGlzHVdJFFyZvizI0TC2BIh7AUXZruyBoQC5k6yGTV+LzmruuYFTiZNyZKk+w6Y2/rhwSfo98xabhYSuamgJRpE0AsLxEm1HO5MMheAVXv/+hMFUmMj2OZmeSFtl89c/TysL5BaWticgTAa0CCAYGuOmNgD2wlHkinEwvHTMWZPMkmA4k/WzZtWmmT8zis5nRJCl/2Ez+UN+vngGkp8qj+C9Sj2zbYaEV4/IdVqg5PRb607j8wdLef9fs+6AgiABFt6BRtqlhSwt0CKIbtvxGii5bq8y3yqaNkRCZnRnwGPcsWiA== 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=KbBo+cAhLF2drravmIugea0HTbnfMcmLjeUbuVwBwyI=; b=OIRpO8Zscr/yMf2kORC55eenuEYwUIBQ0ZoyjfzCwESJeJuAu95oXtYtD83EZEuGPDBhdUuyr46frvqAJo8ooWh7UfHDphslWI16dEwTwW/k+IkFSD6pj9FD2Dfcy5t5JCtpzf6jF97QzaiOYXFeaqSxsvlvaOURVAd06qWbZ/qkjT3UAt3PaT58kkohJAT8PRYWYXOhjWD6DvBG2Bj2ncfR6gQZLR4rQ1RUBdd1x79snovDaSLy76n/8xaMgLZLZAoBeD//UamrGtXFbjzx3ysep9QwiDC5qsDzN9l+N5V/ZTnrDAVtEFMHpWv8zLZfYTbIJJw3Dvkw/lA6hg3oOw== 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=KbBo+cAhLF2drravmIugea0HTbnfMcmLjeUbuVwBwyI=; b=DTpGIUW/0ekZY7samCvDiqdZaIdpCKul3VxGwqPjG5OMba/cUCnL949+vTks4iFDZ4YTH6I4HM35UaBAc7/CXNI7fA/3fuFMTjDBsl3NL3nauj0W6m0qxb/AZ1IBkR4sXq3LQLZW/Ij5XvJd4H5W1nRI2KnyalHKrQcFosELWdOY1juOTYa2ROSeyvx392nj7ZvF0U8joxZuu7rSe1AQI6zjq8W2oPc2XG0Fpj6w5GSQj+j+VLDQEzkAKEyRUm8tbf9De0F2rNxRzhVXlj4F3SsgRmYPFT+MfrYp1gwusOtECmL/F2s0fbeR60XkQmro9FNNW1LDDiLCXZQa4AbsGA== Received: from MW4PR04CA0100.namprd04.prod.outlook.com (2603:10b6:303:83::15) by CY5PR12MB6551.namprd12.prod.outlook.com (2603:10b6:930:41::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7270.12; Wed, 7 Feb 2024 15:56:03 +0000 Received: from MWH0EPF000971E9.namprd02.prod.outlook.com (2603:10b6:303:83:cafe::c9) by MW4PR04CA0100.outlook.office365.com (2603:10b6:303:83::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.36 via Frontend Transport; Wed, 7 Feb 2024 15:56:03 +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 MWH0EPF000971E9.mail.protection.outlook.com (10.167.243.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7249.19 via Frontend Transport; Wed, 7 Feb 2024 15:56:03 +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, 7 Feb 2024 07:55:54 -0800 Received: from rnnvmail202.nvidia.com (10.129.68.7) 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.1258.12; Wed, 7 Feb 2024 07:55:54 -0800 Received: from nvidia.com (10.127.8.13) by mail.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 via Frontend Transport; Wed, 7 Feb 2024 07:55:52 -0800 From: Michael Baum To: CC: Matan Azrad , Dariusz Sosnowski , Raslan Darawsheh , Viacheslav Ovsiienko , Ori Kam , Suanming Mou Subject: [PATCH v2 6/7] net/mlx5: support modify IPv6 traffic class field Date: Wed, 7 Feb 2024 17:55:32 +0200 Message-ID: <20240207155533.1582031-7-michaelba@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240207155533.1582031-1-michaelba@nvidia.com> References: <20240206143950.1499532-1-michaelba@nvidia.com> <20240207155533.1582031-1-michaelba@nvidia.com> MIME-Version: 1.0 X-NV-OnPremToCloud: ExternallySecured X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MWH0EPF000971E9:EE_|CY5PR12MB6551:EE_ X-MS-Office365-Filtering-Correlation-Id: 8bbb1457-f14d-44e6-03b4-08dc27f54985 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SjK4fg7rjUFAIDcXM9vegQ9o8wvEyXngy7lUpVsvSKKYHalx12ZVF1WB2RLOTnqt4vTQ7qP/txRU32y5905SkV0US/N+BQuX7Xq7+hJmeayVyE+8/3Tp4yFlGvBA4n4t+5sTzaCg9vF+72E3eYe/kHyaZgrDWti+3IWAiREyFg8JsEYT+HckSayMKsKlHpxp3DcmxEpYFQGGqX+Hk5icAZi2iWvjCKESShXcP9eBP8PIGoY+EmDSyXeWhl+yPw85Hir0P7r1/TyVKtJ+TooQ4lgxO1DViyTuvgVJbPo8Csf+hAth0/sZYP2HtVAaq6109TbZMJ2EqvN+AvNna5MgaTAxhOTg4gJSzWqP++HeITWXLem9nXmEgeG+9luyIFy4Q/5O4Q/OvsdRIxhehh6UVSdKJ9Qwa4tjSOazesQM+JHd744Ko/EvsrOxYrIBxqzb+6X/6fPP7Vy+FxNmEwYJWbMM7gdcT9LgdhnqUU+n4KKcZCgWX2HDstvNkNNMVpE5EkKTU0bbHMDoMb6aV6ndYz2eCqabKTUB3UFTLBvhK0KEvg+8BptJyExXJ8OG13ClNtQylkpj2RmYzBYzVJyXSuEJprn2NrfK6taJdOETZhTEqGfip7NjpTPd7eNlHl9DG7O1eu5ouADTanSIQSPwyYhbMVgkNE2SELBhBYsx1feiqKklO/P7O2QlaqKePvVMg/J/qAv/tWiRoCDxxjnMp3ioDIe7arnXNSE/MHF64xRVEbNYKXzqQ4k+YqF5719G 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)(376002)(39860400002)(396003)(230922051799003)(82310400011)(64100799003)(451199024)(1800799012)(186009)(46966006)(36840700001)(40470700004)(7636003)(7696005)(82740400003)(55016003)(36860700001)(356005)(83380400001)(40480700001)(47076005)(40460700003)(336012)(54906003)(316002)(8936002)(8676002)(70586007)(70206006)(4326008)(36756003)(5660300002)(426003)(2906002)(86362001)(6666004)(107886003)(26005)(2616005)(1076003)(6286002)(41300700001)(478600001)(6916009); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Feb 2024 15:56:03.2755 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8bbb1457-f14d-44e6-03b4-08dc27f54985 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: MWH0EPF000971E9.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6551 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 --- 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 a504aebe15..50ba66daac 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -113,6 +113,7 @@ New Features * Added HW steering support for modify field ``RTE_FLOW_FIELD_ESP_SPI`` flow action. * Added HW steering support for modify field ``RTE_FLOW_FIELD_ESP_SEQ_NUM`` flow action. * Added HW steering support for modify field ``RTE_FLOW_FIELD_ESP_PROTO`` flow action. + * Added HW steering support for modify field ``RTE_FLOW_FIELD_IPV6_TRAFFIC_CLASS`` flow action. Removed Items diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 46f9f59e67..7d92c1cc24 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 7a1821f457..a41b46e18f 100644 --- a/drivers/net/mlx5/mlx5_flow_hw.c +++ b/drivers/net/mlx5/mlx5_flow_hw.c @@ -2874,7 +2874,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); @@ -5063,6 +5063,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: