From patchwork Sat Apr 2 07:11:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Zhang X-Patchwork-Id: 109100 X-Patchwork-Delegate: ferruh.yigit@amd.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 AB2EEA0501; Sat, 2 Apr 2022 09:12:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9AA6D428A4; Sat, 2 Apr 2022 09:12:44 +0200 (CEST) Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2081.outbound.protection.outlook.com [40.107.94.81]) by mails.dpdk.org (Postfix) with ESMTP id D57FE41101 for ; Sat, 2 Apr 2022 09:12:43 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Txr5LS7DqwAJFGBSsI+WIEEj5Pbo0X+tFcxdzLpz1hkhdS+Ac/nCT83Z3OTVFAUDKrTlYyBwW76hN1LiZ2tLjk6BJvqpEmY8j/htkC+Ca5vDjQdoegvrhOatu0TKHeRC1O9GT+mX8ftqy4jz5RuMTaFV2xHYY36Ojg7NnpvfG1JcTyWIyP6ERAYzRwq8iwFvA3tJ/96VSqcnCH7iSAp5RE/04KlI8Oa5jVGj5JUcD+xLzzkw+K2NVL0zT2HudPLoDdeVRbfjDACyERnolmv8jMmaDa4gGFIEG6PFSe0jrGWCOIoiFIYk0xH8HZeoaeWSHv4Sh0mWFsqKloRar9yLtw== 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=LLsqmdaINKWrxaPbmSPweVQkvMbcfuGo/aJ4RlDOkbY=; b=K7MbqVzuDQiz8sbo4MkfhlRTSIBMFHQ+T9svCx1KjHIIty909kJzqzemmqqwl9DKJLiq4G3lnhdpku9RPxfg49dqZ1UDgfCmgwtiykGmSww4apDkQIE+pLvgwyjB9+y7dPDcfRcg7Da1X5AGrBjgri546VCDwHDKIx5058FYBFIKO16pqQGBZb2966FQ3Xn0g7kfMWtr2tz6ri61tJreId65PDFdKDlefiJ2RCT1GdKiftEtxFjkOA5WZX3jGhpxYV6a0HYvuG4Zl4oIV+0UERhbRGLv/hndaoKMS+oupC3DN80FjC80wWiUQeaGaRcgSsYFvXXHk9kBiIIe2XTF4w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.235) smtp.rcpttodomain=intel.com 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 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=LLsqmdaINKWrxaPbmSPweVQkvMbcfuGo/aJ4RlDOkbY=; b=hiafAb4qfeorU/nzrrB9lBIz+iJyCxw9gFU00WknSHYGlPtZwdG50ZfjIsp1XKsreP5lPeDc279Qn/5XF/CaaLEcJeTgiYfnFRzzypLkunV7vN9hnM9kAbi85m39dCiZHjtv/USA2/ISUEaWzQwzsfvq6JJzxxyHwj3YByJDT19eDxWowOwwlhkaBlHFdJ99oJ5Wg86a3XuKVG8Upj4ivG0uDRQ2AEV21pqyO4jrenqPP5rWPXvqYp9wN4TUbBH9rxkEUbHmm88/i01pV3CkhBZBVPq3PKwa2DqDaJWQN4s/NuJMIA6q9qRWPNIsV12OJGncGrmlHj6GfxScHICaLQ== Received: from DS7PR03CA0183.namprd03.prod.outlook.com (2603:10b6:5:3b6::8) by BYAPR12MB4726.namprd12.prod.outlook.com (2603:10b6:a03:98::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.25; Sat, 2 Apr 2022 07:12:40 +0000 Received: from DM6NAM11FT050.eop-nam11.prod.protection.outlook.com (2603:10b6:5:3b6:cafe::22) by DS7PR03CA0183.outlook.office365.com (2603:10b6:5:3b6::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.26 via Frontend Transport; Sat, 2 Apr 2022 07:12:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.235) 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 12.22.5.235 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.235; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.235) by DM6NAM11FT050.mail.protection.outlook.com (10.13.173.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5123.19 via Frontend Transport; Sat, 2 Apr 2022 07:12:39 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL107.nvidia.com (10.27.9.16) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Sat, 2 Apr 2022 07:12:11 +0000 Received: from nvidia.com (10.126.230.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.22; Sat, 2 Apr 2022 00:12:08 -0700 From: Sean Zhang To: Ori Kam , Xiaoyun Li , Aman Singh , Yuying Zhang , "Thomas Monjalon" , Ferruh Yigit , "Andrew Rybchenko" CC: , Jiawei Wang Subject: [v1 1/4] ethdev: add IPv4/IPv6 ECN header rewrite action Date: Sat, 2 Apr 2022 10:11:47 +0300 Message-ID: <20220402071150.9392-2-xiazhang@nvidia.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220402071150.9392-1-xiazhang@nvidia.com> References: <20220402071150.9392-1-xiazhang@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.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-Office365-Filtering-Correlation-Id: dfba6c8c-13cb-4801-6ed1-08da14782c60 X-MS-TrafficTypeDiagnostic: BYAPR12MB4726:EE_ X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: L2eFHnkWOgm1O8mTiSUicr+bkcvGwk1dt2sam4oA08ff/HyARb8xfQbIV+jCaeMfcCzQX2hABFyuWsVuds2SeMAZ0qg02hVzdXugGLXogpG+XvgEJlMF/TMsTlh1KVwvk56T9B/IMinjq1e/VST7tXH2PZQnjDupJ1YkBxS64AnfQaHRa3ZlHiCs6/cZhk9DsUCtAX+87/1td6419ca15hOYKf0g30oNMXzaFksKZrYK3jy7UQRB5KaENDXh7qPhZUVJcoaHZVppeZeV3ZzNzeCYCfzEFrVTZNcAyuOxyLg89Xzj2JVVfHPvAxluxmRRIOGYHj5UEtrgl4j+hAL/SemckoNQe3YX2qGkA29GEYUaS5G5dmlUTktEwwaNPxDwWsnXaA55pDGhT7gV8YecxKDNjjDZkrRyyf9VogetDd1dhNniwokBMQ3/IFF0ZkgC+oePtzD+ahlQmcu/cpnRBD2RiLk/9KH1kkitm0grhL6YuLc88Qr4Jo7ERm0Wrv2tlEOzB/LuELtYqJ0vSXoP9etZW+6YX0E6DnUAQ6L7cn1jjki53Ox3zgqUIU+LQb2QUQY8JGbqUUPX5uONcNLudV2gmiC2rEToIl8efaPfgN5avZgL2CVvI3sMjpTDxKh4jAdTvRwhIRIy0lM3gX2C0scQL8ds9Ra6aBbVKcqU1sn8SqfUkXDS+9f8KDn98EhdW5IIAZKMGe2DARRwX0EhJQ== X-Forefront-Antispam-Report: CIP:12.22.5.235; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(426003)(316002)(36860700001)(107886003)(336012)(8676002)(508600001)(36756003)(86362001)(2906002)(47076005)(1076003)(7696005)(4326008)(8936002)(6666004)(83380400001)(82310400004)(186003)(26005)(55016003)(110136005)(2616005)(16526019)(81166007)(54906003)(356005)(70206006)(70586007)(5660300002)(40460700003)(6286002)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2022 07:12:39.8088 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: dfba6c8c-13cb-4801-6ed1-08da14782c60 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.235]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM11FT050.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR12MB4726 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: Jiawei Wang This patch introduces the IPv4/IPv6 ECN modify field support, and adds the testpmd CLI commands support. Usage: modify_field op set dst_type ipv4_ecn src_type ... For example: flow create 0 ingress group 1 pattern eth / ipv4 / end actions modify_field op set dst_type ipv4_ecn src_type value src_value 0x03 width 2 / queue index 0 / end Signed-off-by: Jiawei Wang Acked-by: Ori Kam --- app/test-pmd/cmdline_flow.c | 3 ++- lib/ethdev/rte_flow.h | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c index fc4a6d9cca..3250add834 100644 --- a/app/test-pmd/cmdline_flow.c +++ b/app/test-pmd/cmdline_flow.c @@ -795,7 +795,8 @@ static const char *const modify_field_ids[] = { "tcp_seq_num", "tcp_ack_num", "tcp_flags", "udp_port_src", "udp_port_dst", "vxlan_vni", "geneve_vni", "gtp_teid", - "tag", "mark", "meta", "pointer", "value", NULL + "tag", "mark", "meta", "pointer", "value", + "ipv4_ecn", "ipv6_ecn", NULL }; /** Maximum number of subsequent tokens and arguments on the stack. */ diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index d8827dd184..1b56f23cba 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -3690,6 +3690,8 @@ enum rte_flow_field_id { RTE_FLOW_FIELD_META, /**< Metadata value. */ RTE_FLOW_FIELD_POINTER, /**< Memory pointer. */ RTE_FLOW_FIELD_VALUE, /**< Immediate value. */ + RTE_FLOW_FIELD_IPV4_ECN, /**< IPv4 ECN. */ + RTE_FLOW_FIELD_IPV6_ECN, /**< IPv6 ECN. */ }; /** From patchwork Sat Apr 2 07:11:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Zhang X-Patchwork-Id: 109097 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 61CF9A0501; Sat, 2 Apr 2022 09:12:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 72F27427E9; Sat, 2 Apr 2022 09:12:16 +0200 (CEST) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2054.outbound.protection.outlook.com [40.107.243.54]) by mails.dpdk.org (Postfix) with ESMTP id 747AA40143 for ; Sat, 2 Apr 2022 09:12:15 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YOVgY377mHgEoxKvHRceewZt8+w9LLDYWQTqqmk34MQu+XNUHObGQ3FY3scgG0ZEXaXV7xNd1kHNwxpr/P3j4jAaP4KzYMMiebMsWu5q53tFnCQkXgKWZOz8B5JV2G7nsSXU0xLWsIzg3jATrZ2vaaoXT8TWcTQbJDP6pgvXa4ImoycCGEYZhm0aUlf2X0C87heNMMjJa+7sZfInfbkcW6zQHO7PPySHbY4+CdBx4nZVVR6jAP1OtjdK0MswSSHp6Dt1winzU0WUS+s1txB67K6I2uwZNy2xxd8+c133gr95LZQf5yjWzJdUUjR5M5n1FcRvmnQ39FVQQ4FYyNVVWw== 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=0ctIrjRxkCk2VF0Hm9Ty/uPhWnxdJFeKDCmDXwnsUqY=; b=fYN4iNYtr4VZ+WtQpMjQxsLI4EkIBMJhdGxiRwujDNzjyanpfpgK5gPSJIWOh15Yw5ApGO/q2eQguI8Y1JDM3sQHneo+XIdnnWDvsjkqN9VGhiWHBUMc6gmArPcDmgkd9+bUoVs0dMzDsBTW3NVW4x3PXxEH0/GPIjZmMdLTbANprGQONynHwJemVy6aXmHXgogTFuZG+qsZXsJ0zWF92F0NXfDRlnanwDsH64aorpsLLYDjUO7+HAbO3a4qHNGJaDVjaQaZP0/E3Zbjku/oImfv68x3WixWY/5LIx9s4S57M8EupvlqPy0FFRl2LV83hlk3OCoACftOYvkT3WilhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.238) 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 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=0ctIrjRxkCk2VF0Hm9Ty/uPhWnxdJFeKDCmDXwnsUqY=; b=kB6A1CzJMHurOx54tSdUNvlGkxgG7vXENEwYZ1/GL8fNbvgwg2VNdESpSvartEZ0DtP/2H1+GEagpoBCaOZ6BMCFdM3barntg9vpeaR5t1jZYIFrNQhjCtmnJQ0m8jnSPFJCH3uN2PftyQ7f/i/bqyw/3OTOJL1SlbnORvGqOtcn1AhmnXxRgF639B4acE1YJuLClYPS2qJcHM8SeK++reNhe9ca5o5Q206srWIx2/RtrmBU+u62ATJb/qIkZ18zE/hPTRcpHS70ONfoGU10OxHSOZU/1hGYCdCIj6EpOImyrzBjDZsImG7qMf1IMCGSU6bf+gyRRuL1GvLgqOXBbw== Received: from BN7PR06CA0038.namprd06.prod.outlook.com (2603:10b6:408:34::15) by MN0PR12MB5955.namprd12.prod.outlook.com (2603:10b6:208:37e::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5102.22; Sat, 2 Apr 2022 07:12:13 +0000 Received: from BN8NAM11FT008.eop-nam11.prod.protection.outlook.com (2603:10b6:408:34:cafe::bb) by BN7PR06CA0038.outlook.office365.com (2603:10b6:408:34::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.30 via Frontend Transport; Sat, 2 Apr 2022 07:12:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.238) 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 12.22.5.238 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.238; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.238) by BN8NAM11FT008.mail.protection.outlook.com (10.13.177.95) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5123.19 via Frontend Transport; Sat, 2 Apr 2022 07:12:13 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL105.nvidia.com (10.27.9.14) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Sat, 2 Apr 2022 07:12:12 +0000 Received: from nvidia.com (10.126.230.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.22; Sat, 2 Apr 2022 00:12:11 -0700 From: Sean Zhang To: Matan Azrad , Viacheslav Ovsiienko CC: Subject: [v1 2/4] common/mlx5: add modify ECN capability check Date: Sat, 2 Apr 2022 10:11:48 +0300 Message-ID: <20220402071150.9392-3-xiazhang@nvidia.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220402071150.9392-1-xiazhang@nvidia.com> References: <20220402071150.9392-1-xiazhang@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.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-Office365-Filtering-Correlation-Id: eb319887-5840-48b5-8ba8-08da14781ca8 X-MS-TrafficTypeDiagnostic: MN0PR12MB5955:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OSSei1jlyI8YP2T0xoGj50PCMQqXiLAHgFY/gjvofMsa20or9SX5JW2WRzOXbpqGJDF//UINAaNT+iGgzSzR52C65dbYdihsOaveFnaEOFxgYuZjFojPeBt0SJThmd+5AXLw4SIJJ+olqWCJmqnp6fOIOS+vFpb41tH5VFtIshza3HbnM6M2GqrNKs6CJ/edD+nZSwavp7Yf9//Bg4v5mzE99azIm4jF0krQkyVnjsA3mkbh/7tJ32084ESqGOy3BZ9eCRVEb1KAcuYAcE2cz0rBMgy8UYNDFfHNNEl6ecRoXZCF5uKUdZ8p5PgGBGx6tNCiECDaZgx9CZO6dGiI0Q7l9ExWKPOI/3OlpGxjfC21y6ccU6dgKuUixBb2rCCLtrRdXvrQwP3tRfDJINndsMp1zAdiMo/6yri0LwlbUqXUD9swgK3JzsBv6KI+HwNQewTRowIBaIdQIUc4gw0XhteZ7LRyGa9MQ3bPdZLcRr+W+RYDKqoMtDrDZeHiW2bgQvoW2YrLdnZv6DCSeiNphQMao54aCScQiw9V4g0tBJWL/pfddFMEdxP54s4u4jaF7baUQ5wvdEiOQOj2HjQBuWaWplIXeYFSM7YlQuvcvYMDUaYzXw8hLokKbyCsxcMS7ump+FPsnjCkybUPrIQ65vfcW5Srwls3S22SjR8bZGFm8dlyFQXV1d7UWMYnLBqmuj9v3U61kKWbpYBOvduyqw== X-Forefront-Antispam-Report: CIP:12.22.5.238; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(46966006)(40470700004)(6636002)(5660300002)(4326008)(8936002)(356005)(2906002)(82310400004)(316002)(70206006)(110136005)(81166007)(70586007)(8676002)(40460700003)(508600001)(6286002)(426003)(336012)(36756003)(6666004)(86362001)(16526019)(47076005)(2616005)(1076003)(83380400001)(26005)(186003)(7696005)(55016003)(36860700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2022 07:12:13.4066 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: eb319887-5840-48b5-8ba8-08da14781ca8 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.238]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT008.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN0PR12MB5955 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 Flag outer_ip_ecn in header modify capabilities properties layout is added in order to check if the firmware supports modification of ecn field. Signed-off-by: Sean Zhang Acked-by: Viacheslav Ovsiienko --- drivers/common/mlx5/mlx5_devx_cmds.c | 3 ++ drivers/common/mlx5/mlx5_devx_cmds.h | 1 + drivers/common/mlx5/mlx5_prm.h | 62 +++++++++++++++++++++++++++- 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/drivers/common/mlx5/mlx5_devx_cmds.c b/drivers/common/mlx5/mlx5_devx_cmds.c index d02ac2a678..72296c1ca3 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.c +++ b/drivers/common/mlx5/mlx5_devx_cmds.c @@ -1047,6 +1047,9 @@ mlx5_devx_cmd_query_hca_attr(void *ctx, attr->flow.tunnel_header_2_3 = MLX5_GET (flow_table_nic_cap, hcattr, ft_field_support_2_nic_receive.tunnel_header_2_3); + attr->modify_outer_ip_ecn = MLX5_GET + (flow_table_nic_cap, hcattr, + ft_header_modify_nic_receive.outer_ip_ecn); attr->pkt_integrity_match = mlx5_devx_query_pkt_integrity_match(hcattr); attr->inner_ipv4_ihl = MLX5_GET (flow_table_nic_cap, hcattr, diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h index 1bac18c59d..6e9e23f593 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.h +++ b/drivers/common/mlx5/mlx5_devx_cmds.h @@ -256,6 +256,7 @@ struct mlx5_hca_attr { uint32_t esw_mgr_vport_id_valid:1; /* E-Switch Mgr vport ID is valid. */ uint16_t esw_mgr_vport_id; /* E-Switch Mgr vport ID . */ uint16_t max_wqe_sz_sq; + uint32_t modify_outer_ip_ecn:1; }; /* LAG Context. */ diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index 44b18225f6..caaa4c7fb9 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -744,6 +744,7 @@ enum mlx5_modification_field { MLX5_MODI_OUT_TCP_ACK_NUM, MLX5_MODI_IN_TCP_ACK_NUM = 0x5C, MLX5_MODI_GTP_TEID = 0x6E, + MLX5_MODI_OUT_IP_ECN = 0x73, }; /* Total number of metadata reg_c's. */ @@ -1884,6 +1885,62 @@ struct mlx5_ifc_roce_caps_bits { u8 reserved_at_20[0x7e0]; }; +struct mlx5_ifc_ft_fields_support_bits { + u8 outer_dmac[0x1]; + u8 outer_smac[0x1]; + u8 outer_ether_type[0x1]; + u8 reserved_at_3[0x1]; + u8 outer_first_prio[0x1]; + u8 outer_first_cfi[0x1]; + u8 outer_first_vid[0x1]; + u8 reserved_at_7[0x1]; + u8 outer_second_prio[0x1]; + u8 outer_second_cfi[0x1]; + u8 outer_second_vid[0x1]; + u8 reserved_at_b[0x1]; + u8 outer_sip[0x1]; + u8 outer_dip[0x1]; + u8 outer_frag[0x1]; + u8 outer_ip_protocol[0x1]; + u8 outer_ip_ecn[0x1]; + u8 outer_ip_dscp[0x1]; + u8 outer_udp_sport[0x1]; + u8 outer_udp_dport[0x1]; + u8 outer_tcp_sport[0x1]; + u8 outer_tcp_dport[0x1]; + u8 outer_tcp_flags[0x1]; + u8 outer_gre_protocol[0x1]; + u8 outer_gre_key[0x1]; + u8 outer_vxlan_vni[0x1]; + u8 reserved_at_1a[0x5]; + u8 source_eswitch_port[0x1]; + u8 inner_dmac[0x1]; + u8 inner_smac[0x1]; + u8 inner_ether_type[0x1]; + u8 reserved_at_23[0x1]; + u8 inner_first_prio[0x1]; + u8 inner_first_cfi[0x1]; + u8 inner_first_vid[0x1]; + u8 reserved_at_27[0x1]; + u8 inner_second_prio[0x1]; + u8 inner_second_cfi[0x1]; + u8 inner_second_vid[0x1]; + u8 reserved_at_2b[0x1]; + u8 inner_sip[0x1]; + u8 inner_dip[0x1]; + u8 inner_frag[0x1]; + u8 inner_ip_protocol[0x1]; + u8 inner_ip_ecn[0x1]; + u8 inner_ip_dscp[0x1]; + u8 inner_udp_sport[0x1]; + u8 inner_udp_dport[0x1]; + u8 inner_tcp_sport[0x1]; + u8 inner_tcp_dport[0x1]; + u8 inner_tcp_flags[0x1]; + u8 reserved_at_37[0x9]; + u8 reserved_at_40[0x40]; +}; + /* * Table 1872 - Flow Table Fields Supported 2 Format */ @@ -1923,7 +1980,10 @@ struct mlx5_ifc_flow_table_nic_cap_bits { flow_table_properties_nic_transmit_rdma; struct mlx5_ifc_flow_table_prop_layout_bits flow_table_properties_nic_transmit_sniffer; - u8 reserved_at_e00[0x600]; + u8 reserved_at_e00[0x200]; + struct mlx5_ifc_ft_fields_support_bits + ft_header_modify_nic_receive; + u8 reserved_at_1080[0x380]; struct mlx5_ifc_ft_fields_support_2_bits ft_field_support_2_nic_receive; }; From patchwork Sat Apr 2 07:11:49 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Zhang X-Patchwork-Id: 109098 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 8E016A0501; Sat, 2 Apr 2022 09:12:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 646234286E; Sat, 2 Apr 2022 09:12:20 +0200 (CEST) Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2082.outbound.protection.outlook.com [40.107.220.82]) by mails.dpdk.org (Postfix) with ESMTP id 3A86040143 for ; Sat, 2 Apr 2022 09:12:19 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dxudlw6LbNU6Syt399VB1s/TdtEAUL9jHZwYcXxwHPFVoFBSSd2x4oc37CBLAf5600KWw8Bt9rXayan1Gs2xkxI9LMYvFDc7jjKCdytaQzgNDBzgI/wjWyktawZn3HMtQ7cYHZwiB1jv2T6TrjAX9mMFFdo9soHx8QI2f0Yd804kOVKJvn/MX1ndouJDdjCwfDgRiLFzpcgZPgOz8kQfqlqzOh8xILLlxKakWi8bS9CA5uT16dAJVr30PJHFviLsTjkg8yVIi/J4kkKjdCWIScm1GavS25nKI0RkosQ9ybsIBpVf4VoN43s8Fe4YD5rqQJiericZc5744UKCIj0s0g== 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=YAcUbHgFJTZ6xnLFQ4CuMiCp+TVntZlnEW3IEG1lbbM=; b=YaPWFHhRFpPrgutIt3TAephFpVxmi7vM5ScUwPtk+eEUY+Guz99uZydV2/EJTPRReGg3shqKwFKjRhqDn32NmncWcAyKAvCxJLeie7LkYon2tVkBTy64nai3yRIHf2zSsT7T1KlWMDRz0l/OYFZgPgef5SOVNC7mz7rgGCNCKd+BuLPWTN2uRzKGCy0l7D7Bnf5NtRlV24gsBmh58sMM3VHI6xAFilw00+VC+RhgPOGfGfVF9EvsMi8MrjBmt/N2uUdGc5idd3Q4I3WS1Wy5YNNIYb9nC+3cn9JeRjW/zVtngSp+nRqhhujFitCeChFJywW5EGhO4KDaxtHRJxU0Fg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.234) 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 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=YAcUbHgFJTZ6xnLFQ4CuMiCp+TVntZlnEW3IEG1lbbM=; b=akuPiZIo8Ps9T3HehLw0j31H/IoUsILdHi3o7Zf7iaV0lmjHRqZ94jQGSozDu3OLBgsPpeBYAGf/0Fk54U1xcmJ00iRc9DuKMm/ZQjYinPBEIT4IgTvmPyAT800M2gR3ODHH1eM3H2fV9K7d6KPhmQnSvskxH37iVV5TbHzqjIicEHAksZ4vfY0oNXjxrYmKyGs+zQgbN/pNKxxSSYxbJgkqklLZGZ/bJnDoz3Hqy4TKTKLxgS6LdB0HqPM9Tvmi0/i8w86WNsDU/IW2Gf8iKpu+SN4E90tYJs16NKlbw31ELymSoKGp5OLyc2dl76N0g6wJJ4RYlCyUQM9u9Kbhiw== Received: from BN8PR03CA0013.namprd03.prod.outlook.com (2603:10b6:408:94::26) by MWHPR12MB1936.namprd12.prod.outlook.com (2603:10b6:300:114::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.30; Sat, 2 Apr 2022 07:12:16 +0000 Received: from BN8NAM11FT048.eop-nam11.prod.protection.outlook.com (2603:10b6:408:94:cafe::80) by BN8PR03CA0013.outlook.office365.com (2603:10b6:408:94::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.26 via Frontend Transport; Sat, 2 Apr 2022 07:12:15 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.234) 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 12.22.5.234 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.234; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.234) by BN8NAM11FT048.mail.protection.outlook.com (10.13.177.117) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5123.19 via Frontend Transport; Sat, 2 Apr 2022 07:12:15 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL101.nvidia.com (10.27.9.10) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Sat, 2 Apr 2022 07:12:14 +0000 Received: from nvidia.com (10.126.230.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.22; Sat, 2 Apr 2022 00:12:12 -0700 From: Sean Zhang To: Matan Azrad , Viacheslav Ovsiienko CC: Subject: [v1 3/4] net/mlx5: add support to modify ECN field Date: Sat, 2 Apr 2022 10:11:49 +0300 Message-ID: <20220402071150.9392-4-xiazhang@nvidia.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220402071150.9392-1-xiazhang@nvidia.com> References: <20220402071150.9392-1-xiazhang@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.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-Office365-Filtering-Correlation-Id: ecc00d43-3187-4f65-fd28-08da14781e0a X-MS-TrafficTypeDiagnostic: MWHPR12MB1936:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nyQVe/DmXALwAiHTE9hfcNnex28qiRlbcqBa8uuWIioUr9vw3e5oF1vch7ouah/RXVzpmIsmNCUVlzaWzAmrEM3gBGsM7Lz/KoJ1z9Uucc6BceacApRf6F58xUnZy4xfCSUI0uYon3N+kt/t2LGeebqesrqu1NCO+t7s4/yIj+2J79+cTiMh7RZ8uYFr/f+gXupX7ickdHoHQwui9WKpdnBDh9sJvHzKJGjiTlyLkx9BhLEswxnu2TmWinCG4dLcTfppdBsJYMu+7fHtkA6GjYb78QM6FH9BcLrXYBS1+WHJir6sMgAFcLrCA2Qemd9cd8H4L+7C8oFrO5gGyPzjLuSuE7lhx5+4/FNJwWyQaTDdclDk0hboPIbQKl7LeoTCtcaGqgAahK85v15iCGnmKk/p9Ima+60m+osUXfukHCzioqV2VcDmWzQi7pq7xbJVULH/NwzAsszR0HOrsEvj/eArzoJhfuKUQmaSKIQXyWq/D1Q0ycgD/haM+vtMCHZ7w394iYGDBvNeZBBU1Dsmh8pYFS+TFK35wv7efm8EyKwZSQjNNi+18JTLLa9NDJg0BCDb9Ss5c3sIuYWYgFMBb0/A7tNxzZ34ovqr4gTispm0OHO1wg3puu4t+qa956nNFtOw4oGvTPC3QAuPN3VfP5eTfsVcUNu5JmYSgYjkpkZYps5BR2iozutA2sPm6qwnOm4tIuliXP/q4zRHm0hSqQ== X-Forefront-Antispam-Report: CIP:12.22.5.234; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(36840700001)(40470700004)(46966006)(86362001)(426003)(336012)(186003)(26005)(55016003)(1076003)(2616005)(16526019)(316002)(83380400001)(6636002)(47076005)(5660300002)(110136005)(8936002)(82310400004)(40460700003)(508600001)(6666004)(6286002)(7696005)(70206006)(70586007)(8676002)(36756003)(81166007)(2906002)(356005)(4326008)(36860700001)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2022 07:12:15.7295 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ecc00d43-3187-4f65-fd28-08da14781e0a X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.234]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT048.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1936 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 patch is to support modify ECN field in IPv4/IPv6 header. Signed-off-by: Sean Zhang Acked-by: Viacheslav Ovsiienko --- drivers/net/mlx5/mlx5_flow_dv.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 1e9bd63635..e416eb5701 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1449,6 +1449,9 @@ mlx5_flow_item_field_width(struct rte_eth_dev *dev, case RTE_FLOW_FIELD_POINTER: case RTE_FLOW_FIELD_VALUE: return inherit < 0 ? 0 : inherit; + case RTE_FLOW_FIELD_IPV4_ECN: + case RTE_FLOW_FIELD_IPV6_ECN: + return 2; default: MLX5_ASSERT(false); } @@ -1826,6 +1829,13 @@ mlx5_flow_field_id_to_modify_info (meta_count - width)) & meta_mask); } break; + case RTE_FLOW_FIELD_IPV4_ECN: + case RTE_FLOW_FIELD_IPV6_ECN: + info[idx] = (struct field_modify_info){1, 0, + MLX5_MODI_OUT_IP_ECN}; + if (mask) + mask[idx] = 0x3 >> (2 - width); + break; case RTE_FLOW_FIELD_POINTER: case RTE_FLOW_FIELD_VALUE: default: @@ -4825,6 +4835,7 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev, int ret = 0; struct mlx5_priv *priv = dev->data->dev_private; struct mlx5_sh_config *config = &priv->sh->config; + struct mlx5_hca_attr *hca_attr = &priv->sh->cdev->config.hca_attr; const struct rte_flow_action_modify_field *action_modify_field = action->conf; uint32_t dst_width = mlx5_flow_item_field_width(dev, @@ -4952,6 +4963,15 @@ flow_dv_validate_action_modify_field(struct rte_eth_dev *dev, RTE_FLOW_ERROR_TYPE_ACTION, action, "add and sub operations" " are not supported"); + if (action_modify_field->dst.field == RTE_FLOW_FIELD_IPV4_ECN || + action_modify_field->src.field == RTE_FLOW_FIELD_IPV4_ECN || + action_modify_field->dst.field == RTE_FLOW_FIELD_IPV6_ECN || + action_modify_field->src.field == RTE_FLOW_FIELD_IPV6_ECN) + if (!hca_attr->modify_outer_ip_ecn && + !attr->transfer && !attr->group) + return rte_flow_error_set(error, ENOTSUP, + RTE_FLOW_ERROR_TYPE_ACTION, action, + "modifications of the ECN for current firmware is not supported"); return (action_modify_field->width / 32) + !!(action_modify_field->width % 32); } From patchwork Sat Apr 2 07:11:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Zhang X-Patchwork-Id: 109099 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 67120A0501; Sat, 2 Apr 2022 09:12:36 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 59CDD42868; Sat, 2 Apr 2022 09:12:36 +0200 (CEST) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1anam02on2050.outbound.protection.outlook.com [40.107.96.50]) by mails.dpdk.org (Postfix) with ESMTP id F227E41145 for ; Sat, 2 Apr 2022 09:12:33 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cxI9B/nWRXI3WGEFXlz3cptuMxYExNG2RI5j3x/JaP7XmwYIQ1zFc+yd16WpTig6bWyTx7RnMyRaxsyvSgk+sT2QC3ZV2Y/QIRZRAzm4aCp9cAMlTFqPj/1T5aleUUDICOQbzCTpB0kmVbOpzxscPCkvQtDL9f3pM5A618569lpqP+zz2vpJPFCECtMknGp11QBug7vzuhCdZE4AAL8p5/DxBcFpnn1DvGkB2s4cS7mCYoTUzWn4sy4oYK6X6HodqRr6pcRiiVoQ1U8CKaYW8WwLW2NtassuHsERdbKGYPjJVr58J2CmS9/covz97PITbx4YL1A5wxYsIVbNDk2ehg== 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=CnyG0tD61IGhX7B0+dryg/mzfirgZIQYPmebvADQiHE=; b=ebeB6jXWHvxA4j/EwbDPFPEIwAGwjI5TrzwV37Pb5Ecc9DaNaPT+MkgzQ3fPTMrSLqR62q/0Q/s6kiFVQFNp7OxtAEzMmZythtq3QWldKN7uC0XWz1p48OmUSBqt/GoaiYuTicru0SXKNqQCfVdMcS4dfAvSoeLqQbqjEALk3TRuYPrjhvtK8BcuGrcsjXBH5iT8DBQIEAYBXYW00zCAV0E7cN59Sqq7wNi5xSFbIU4ENLekPeMFHEhmXtM0Z5Eim7P8TK2ytwnQBmfYVayYlLl+HsaDN5YsHXN5sU7EuJ6315zVVjFTCa9rKXtgMZqopK7/yd+EtgcmNJbNwgMdEQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 12.22.5.236) 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 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=CnyG0tD61IGhX7B0+dryg/mzfirgZIQYPmebvADQiHE=; b=ZitUsAO7+1JTvfU9p4757yFJuFOZbgeTkyDkgic/c+9sEXYc1GE4zlD6rvHs5MqSVavtwxdpvXFjoLDm2O2469yAYoCI3ZKUUodrqW1oyjU/wQ4/y0Fm+4v5Dc3D0UbpqGVGa2jc4k56bIU3XSenv7qMC+/nCmcAJuG+4dWW+zFPh9st34B4oNsScOw/0ToVc/311tltJ1A+BhwfCYZyavWMdKg/RYHhMlQR8XtRMipe+5lzrjrNsfSu72Q0giV+u1BnXOZlo8KBM58zpkcMr+VAtEaqrHKBdSyTl1xV0I3krR4DrflhgKp+r6u3/4C5VOL8Y3QF7J0qKMvJ95S4Cg== Received: from BN6PR19CA0056.namprd19.prod.outlook.com (2603:10b6:404:e3::18) by CH2PR12MB4166.namprd12.prod.outlook.com (2603:10b6:610:78::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.25; Sat, 2 Apr 2022 07:12:32 +0000 Received: from BN8NAM11FT055.eop-nam11.prod.protection.outlook.com (2603:10b6:404:e3:cafe::ab) by BN6PR19CA0056.outlook.office365.com (2603:10b6:404:e3::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.28 via Frontend Transport; Sat, 2 Apr 2022 07:12:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 12.22.5.236) 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 12.22.5.236 as permitted sender) receiver=protection.outlook.com; client-ip=12.22.5.236; helo=mail.nvidia.com; Received: from mail.nvidia.com (12.22.5.236) by BN8NAM11FT055.mail.protection.outlook.com (10.13.177.62) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.5123.19 via Frontend Transport; Sat, 2 Apr 2022 07:12:31 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by DRHQMAIL109.nvidia.com (10.27.9.19) with Microsoft SMTP Server (TLS) id 15.0.1497.32; Sat, 2 Apr 2022 07:12:15 +0000 Received: from nvidia.com (10.126.230.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.22; Sat, 2 Apr 2022 00:12:14 -0700 From: Sean Zhang To: Matan Azrad , Viacheslav Ovsiienko CC: Subject: [v1 4/4] net/mlx5: add modify field support in meter Date: Sat, 2 Apr 2022 10:11:50 +0300 Message-ID: <20220402071150.9392-5-xiazhang@nvidia.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20220402071150.9392-1-xiazhang@nvidia.com> References: <20220402071150.9392-1-xiazhang@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.230.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-Office365-Filtering-Correlation-Id: 4a0ee0c1-1e44-422b-1e4a-08da147827a8 X-MS-TrafficTypeDiagnostic: CH2PR12MB4166:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: scCr0hiVVR9gSyj6i5v23tWEKWImDKOYe+ntukth5gUxhy7MhFfR0NDy9W4XAA062qPu8wfmS7Z4GGUyoakWq+N799TXPhewSxT+rSnhq7W6UoLJXLgIaOOyoHced9CaoNILi9uTozPxzzw+EPbNZnzU1zOgTvAs9d301O89Fjvf6C6TCYBaj38nEu/bEL2mX0JTKXCZm6q2u/K6/nfFw/ordn9pM/Vpbn2Vx65PWVPZhSi6i4lRvGGrfudBtsjhdqEyTKN370u3+8DYLugJ49uVJ2M7sDb4SIRpUUtX106IIOScY2E3H1cGT7j+qcnhDl/ci5Y1cCeYxgiQLVWuEBcLjSg+AuIsHiO3IQH3cnU7xsHKOJWWyFrBRaLc8cNZtwX/uXPSMro7A8UykpSdK7lm0w43XBeTnKpeNEzq+oj0cBd6QahvRw7Gcr42zYG+l1mblePzQLb6QK9mxKd44PwfNVhvmgUQk9t083rcqOGu6uDM1Avia3soUAtWRUM1+2TJnkBl6++n/+ROsH2pbtzp+HpzsxOE++PHQiV/s+wkPzJm/0pSuryblJX2UornCw7guydXzeyiqwstcvwG1R72GghgabVuezuIaY98dvDs0sTCWfTGyAtQMO7RymGqnE/lzzkrplGxGjO7evLSKxHRO4+n2kC1MNr9XSydP4Sna6JeC86lXpzuULqLV5AenLtvSG15UWIT0z4hdHpHNA== X-Forefront-Antispam-Report: CIP:12.22.5.236; CTRY:US; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:mail.nvidia.com; PTR:InfoNoRecords; CAT:NONE; SFS:(13230001)(4636009)(46966006)(40470700004)(36840700001)(83380400001)(5660300002)(70206006)(8676002)(47076005)(508600001)(4326008)(8936002)(40460700003)(82310400004)(26005)(16526019)(186003)(2616005)(86362001)(6286002)(70586007)(1076003)(6666004)(2906002)(336012)(36860700001)(316002)(36756003)(6636002)(7696005)(81166007)(426003)(356005)(110136005)(55016003)(36900700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2022 07:12:31.7806 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 4a0ee0c1-1e44-422b-1e4a-08da147827a8 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[12.22.5.236]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: BN8NAM11FT055.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR12MB4166 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 patch introduces MODIFY_FIELD action support in meter. User can create meter policy with MODIFY_FIELD action in green/yellow action. For example: testpmd> add port meter policy 0 21 g_actions modify_field op set dst_type ipv4_ecn src_type value src_value 3 width 2 / ... Signed-off-by: Sean Zhang Acked-by: Viacheslav Ovsiienko --- doc/guides/nics/mlx5.rst | 4 +-- drivers/net/mlx5/mlx5_flow.c | 5 ++- drivers/net/mlx5/mlx5_flow.h | 2 ++ drivers/net/mlx5/mlx5_flow_dv.c | 49 +++++++++++++++++++++++++++--- drivers/net/mlx5/mlx5_flow_meter.c | 2 +- 5 files changed, 54 insertions(+), 8 deletions(-) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 4805d08a76..b6d51dc7c9 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -443,8 +443,8 @@ Limitations - yellow: NULL or END. - RED: DROP / END. - The only supported meter policy actions: - - green: QUEUE, RSS, PORT_ID, REPRESENTED_PORT, JUMP, DROP, MARK and SET_TAG. - - yellow: QUEUE, RSS, PORT_ID, REPRESENTED_PORT, JUMP, DROP, MARK and SET_TAG. + - green: QUEUE, RSS, PORT_ID, REPRESENTED_PORT, JUMP, DROP, MODIFY_FIELD, MARK and SET_TAG. + - yellow: QUEUE, RSS, PORT_ID, REPRESENTED_PORT, JUMP, DROP, MODIFY_FIELD, MARK and SET_TAG. - RED: must be DROP. - Policy actions of RSS for green and yellow should have the same configuration except queues. - Policy with RSS/queue action is not supported when ``dv_xmeta_en`` enabled. diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index 78cb38d42b..52b5463648 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -7867,6 +7867,8 @@ mlx5_flow_destroy_mtr_acts(struct rte_eth_dev *dev, * Meter policy struct. * @param[in] action * Action specification used to create meter actions. + * @param[in] attr + * Flow rule attributes. * @param[out] error * Perform verbose error reporting if not NULL. Initialized in case of * error only. @@ -7878,12 +7880,13 @@ int mlx5_flow_create_mtr_acts(struct rte_eth_dev *dev, struct mlx5_flow_meter_policy *mtr_policy, const struct rte_flow_action *actions[RTE_COLORS], + struct rte_flow_attr *attr, struct rte_mtr_error *error) { const struct mlx5_flow_driver_ops *fops; fops = flow_get_drv_ops(MLX5_FLOW_TYPE_DV); - return fops->create_mtr_acts(dev, mtr_policy, actions, error); + return fops->create_mtr_acts(dev, mtr_policy, actions, attr, error); } /** diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h index f56115dd11..ed9b9e4876 100644 --- a/drivers/net/mlx5/mlx5_flow.h +++ b/drivers/net/mlx5/mlx5_flow.h @@ -1359,6 +1359,7 @@ typedef int (*mlx5_flow_create_mtr_acts_t) (struct rte_eth_dev *dev, struct mlx5_flow_meter_policy *mtr_policy, const struct rte_flow_action *actions[RTE_COLORS], + struct rte_flow_attr *attr, struct rte_mtr_error *error); typedef void (*mlx5_flow_destroy_mtr_acts_t) (struct rte_eth_dev *dev, @@ -2017,6 +2018,7 @@ void mlx5_flow_destroy_mtr_acts(struct rte_eth_dev *dev, int mlx5_flow_create_mtr_acts(struct rte_eth_dev *dev, struct mlx5_flow_meter_policy *mtr_policy, const struct rte_flow_action *actions[RTE_COLORS], + struct rte_flow_attr *attr, struct rte_mtr_error *error); int mlx5_flow_create_policy_rules(struct rte_eth_dev *dev, struct mlx5_flow_meter_policy *mtr_policy); diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index e416eb5701..a01ba04c3b 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -15579,6 +15579,8 @@ flow_dv_destroy_mtr_policy_acts(struct rte_eth_dev *dev, * Meter policy struct. * @param[in] action * Action specification used to create meter actions. + * @param[in] attr + * Pointer to the flow attributes. * @param[out] error * Perform verbose error reporting if not NULL. Initialized in case of * error only. @@ -15590,6 +15592,7 @@ static int __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, struct mlx5_flow_meter_policy *mtr_policy, const struct rte_flow_action *actions[RTE_COLORS], + struct rte_flow_attr *attr, enum mlx5_meter_domain domain, struct rte_mtr_error *error) { @@ -15886,6 +15889,28 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, action_flags |= MLX5_FLOW_ACTION_JUMP; break; } + case RTE_FLOW_ACTION_TYPE_MODIFY_FIELD: + { + if (i >= MLX5_MTR_RTE_COLORS) + return -rte_mtr_error_set(error, + ENOTSUP, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, + "cannot create policy modify field for this color"); + if (flow_dv_convert_action_modify_field + (dev, mhdr_res, act, attr, &flow_err)) + return -rte_mtr_error_set(error, + ENOTSUP, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, "cannot setup policy modify field action"); + if (!mhdr_res->actions_num) + return -rte_mtr_error_set(error, + ENOTSUP, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, "cannot find policy modify field action"); + action_flags |= MLX5_FLOW_ACTION_MODIFY_FIELD; + break; + } /* * No need to check meter hierarchy for Y or R colors * here since it is done in the validation stage. @@ -15954,7 +15979,8 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, RTE_MTR_ERROR_TYPE_METER_POLICY, NULL, "action type not supported"); } - if (action_flags & MLX5_FLOW_ACTION_SET_TAG) { + if ((action_flags & MLX5_FLOW_ACTION_SET_TAG) || + (action_flags & MLX5_FLOW_ACTION_MODIFY_FIELD)) { /* create modify action if needed. */ dev_flow.dv.group = 1; if (flow_dv_modify_hdr_resource_register @@ -15962,8 +15988,7 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, - NULL, "cannot register policy " - "set tag action"); + NULL, "cannot register policy set tag/modify field action"); act_cnt->modify_hdr = dev_flow.handle->dvh.modify_hdr; } @@ -15983,6 +16008,8 @@ __flow_dv_create_domain_policy_acts(struct rte_eth_dev *dev, * Meter policy struct. * @param[in] action * Action specification used to create meter actions. + * @param[in] attr + * Pointer to the flow attributes. * @param[out] error * Perform verbose error reporting if not NULL. Initialized in case of * error only. @@ -15994,6 +16021,7 @@ static int flow_dv_create_mtr_policy_acts(struct rte_eth_dev *dev, struct mlx5_flow_meter_policy *mtr_policy, const struct rte_flow_action *actions[RTE_COLORS], + struct rte_flow_attr *attr, struct rte_mtr_error *error) { int ret, i; @@ -16005,7 +16033,7 @@ flow_dv_create_mtr_policy_acts(struct rte_eth_dev *dev, MLX5_MTR_SUB_POLICY_NUM_MASK; if (sub_policy_num) { ret = __flow_dv_create_domain_policy_acts(dev, - mtr_policy, actions, + mtr_policy, actions, attr, (enum mlx5_meter_domain)i, error); /* Cleaning resource is done in the caller level. */ if (ret) @@ -18176,6 +18204,19 @@ flow_dv_validate_mtr_policy_acts(struct rte_eth_dev *dev, action_flags[i] |= MLX5_FLOW_ACTION_METER_WITH_TERMINATED_POLICY; break; + case RTE_FLOW_ACTION_TYPE_MODIFY_FIELD: + ret = flow_dv_validate_action_modify_field(dev, + action_flags[i], act, attr, &flow_err); + if (ret < 0) + return -rte_mtr_error_set(error, + ENOTSUP, + RTE_MTR_ERROR_TYPE_METER_POLICY, + NULL, flow_err.message ? + flow_err.message : + "Modify field action validate check fail"); + ++actions_n; + action_flags[i] |= MLX5_FLOW_ACTION_MODIFY_FIELD; + break; default: return -rte_mtr_error_set(error, ENOTSUP, RTE_MTR_ERROR_TYPE_METER_POLICY, diff --git a/drivers/net/mlx5/mlx5_flow_meter.c b/drivers/net/mlx5/mlx5_flow_meter.c index a3d1f2c08d..75672a4cd2 100644 --- a/drivers/net/mlx5/mlx5_flow_meter.c +++ b/drivers/net/mlx5/mlx5_flow_meter.c @@ -885,7 +885,7 @@ mlx5_flow_meter_policy_add(struct rte_eth_dev *dev, } rte_spinlock_init(&mtr_policy->sl); ret = mlx5_flow_create_mtr_acts(dev, mtr_policy, - policy->actions, error); + policy->actions, &attr, error); if (ret) goto policy_add_err; if (mtr_policy->is_hierarchy) {