From patchwork Wed May 24 07:39:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rongwei Liu X-Patchwork-Id: 127280 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 174CF42B89; Wed, 24 May 2023 09:40:04 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 04E874282D; Wed, 24 May 2023 09:40:04 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2047.outbound.protection.outlook.com [40.107.92.47]) by mails.dpdk.org (Postfix) with ESMTP id EB0D44114B for ; Wed, 24 May 2023 09:40:01 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ThkpBCX0EQ4AlnpUpTUcAr9Ah4rQkWpeYWhwpbCD64WcSosRNN4tbxfjfc2BOdbA59XwpP5dy2a28+haevLxw9IrHnEKGmMglPLn6zky5wsS9e+0zjs5+aF+kfd7RuA2d+MGDoIlZsa8q4JaDc5sVKXMLTo3R08tXxCdH3oUzUjSjfJwsctvD+XiRuz9qcpWqTT5P0G69t8KZBoB1WV9QLTI7xfSI47x9E7tRanjLFw4Dg8QSSds3CjbaQykCyeB8W/qLZpXL/GApZk0ibH68SPFeOie1/FM4+UKqGvSlJrznA/fVnDbzOfD9fkoDvtGcN0ioQ1z6ju1EMZ46nzJNg== 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=zjMSbul58rw0GgQCl94PSammnU1d6KnlMfLmgOKWanw=; b=ijnbMPUN5Rbk7vkCpKNQttu53DMtA9gz+/UgZZ6vOGRlv/Cmg+8rv0KOECLVAw52Mrt2FkXQke9XbD2f4lPWmfuxnb7FSYNjUcXnQ8cNshUG9WNFOPpxxC2AHUoC+Wq+dF8yX7soXrUpUkgFcy5kBXljoo+4e/R+kwmgcYaFLGYQK4Yq/7VXi6iSpcUHu6pWbTZ2/ngSrLjIr3oCZSUiegWQG0DTCD5mhERj6KNsVDPdLne3BTNrJAm4lPO4HLG0HnJoaX1YO8fEyUdhaQs4w2wE83MhBkV59/GaOf2jFiEPz0pr6zriNNt//JiQs2bbR/IacZ5fbdFr98Xntqk/BA== 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 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=zjMSbul58rw0GgQCl94PSammnU1d6KnlMfLmgOKWanw=; b=HWoM9rerxDWnplIp/p5e61+vOveR3tuMcLLKfmESbO81WdMxJgdf8GlbHOc0sUBVw2C9ilVzGODJYU8c7TQ/nb1NiXOMJYMXloTltZRIyTEBrLpr+a9ji3GhTzAJ8HBvho1bF4UQHPTJ+N9BPgwtsxVZmV6DE/TMsTPM5Yuyy27aeXp8h9JLXK/2Fuaq2VeqEquFmNa/WIRBPOSTNUWnhRMkEQU8jDEx7Ey16Y5BQxSsUaE+yHyV5DkGpjrtiMvK4jXdKO8K7bPIVnc61fys2cBMXznbulfhrbTooW5WJlHHidg/Wj3bVdDpIrvPZca27fPxNRt0V6tOh6Ms3Ccseg== Received: from BN9PR03CA0154.namprd03.prod.outlook.com (2603:10b6:408:f4::9) by SN7PR12MB6767.namprd12.prod.outlook.com (2603:10b6:806:269::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.28; Wed, 24 May 2023 07:40:00 +0000 Received: from BN8NAM11FT088.eop-nam11.prod.protection.outlook.com (2603:10b6:408:f4:cafe::da) by BN9PR03CA0154.outlook.office365.com (2603:10b6:408:f4::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.29 via Frontend Transport; Wed, 24 May 2023 07:40:00 +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 BN8NAM11FT088.mail.protection.outlook.com (10.13.177.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.30 via Frontend Transport; Wed, 24 May 2023 07:40:00 +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.5; Wed, 24 May 2023 00:39:47 -0700 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.37; Wed, 24 May 2023 00:39:44 -0700 From: Rongwei Liu To: , , , , , CC: Ferruh Yigit , Andrew Rybchenko Subject: [PATCH v1 1/2] ethdev: add IPv6 extension push remove action Date: Wed, 24 May 2023 10:39:28 +0300 Message-ID: <20230524073929.400623-2-rongweil@nvidia.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20230524073929.400623-1-rongweil@nvidia.com> References: <20230524073929.400623-1-rongweil@nvidia.com> MIME-Version: 1.0 X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail201.nvidia.com (10.129.68.8) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN8NAM11FT088:EE_|SN7PR12MB6767:EE_ X-MS-Office365-Filtering-Correlation-Id: 26322e2c-a9bc-495e-b163-08db5c2a1467 X-LD-Processed: 43083d15-7273-40c1-b7db-39efd9ccc17a,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: bbtPrf+D0pTCEXLwB1Zxiup07i1xZ3lFrnOyMfVsAwXAl3zLcYvCrVVJDwdtuywveJZjLOMPhdoH06snjNiRtZ/RmZaG4Uc+fa1+ecgoaTqJ+rX4WREzIKaEwBvrMZTck7FcIorXLhzKV7gMYQN0MgXlWyMw8DwiWA3nxO70VsV0p48r7RMXjSxVZvHPMF9Qqw1TxKqupAaROfecIQS3eRTOcCOF+EKO+mdDA7at3qFiAJ39dHtPxETy7aVUsCIlcfInwhdIhZ1e2eUevj85aOUfpvMUyoXpx7xI4FBU8WdbxHr36vLrZqoS7wJuHx8LMPh71zxfHw40JCUabiqLLrZyysBN5jPv8tVDoXIhNOpKaVl88CmEMb/Wdp1ZmWNoSfE3atr/6Ykof4XRYwuBMhZa9PDQyKhaGtQfcosdAnW4lntrlpS24dnbjjk+keqJUy+qQLhYX3HnZ6xYGMXDljlPuHK0oI0UaEjnlsKPjxWbx+sBuiApJUihU7CwzdjvMnBUWykwtl7rBY+dwWsGpLCjztnRegrcYLldteBSo0YT/uBp4hM5XrzTnrzX5wPvdCuhScoUiOvtq2rcstaBaUKCl0g+dEN6YGGjAcTaF9voN7NUkiOXjgQqATNSIwHqzQDSycnMH/lEjVGJN/rPfuCyPs5IjTLWaWDPDo2Vj/5Xmk2OxGb/mbi4GDH2xWVuPpAsc49s4Tzdq5a0f3/MsZOHT5KQBtLDksxSsKj9JVe8pTxw/7LBC+5hV+4nOYOa 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:(13230028)(4636009)(376002)(39860400002)(396003)(136003)(346002)(451199021)(46966006)(40470700004)(36840700001)(55016003)(82740400003)(40460700003)(6286002)(16526019)(26005)(7636003)(356005)(1076003)(186003)(2616005)(36860700001)(47076005)(36756003)(83380400001)(426003)(2906002)(336012)(40480700001)(41300700001)(7696005)(316002)(110136005)(6666004)(54906003)(82310400005)(478600001)(70586007)(70206006)(4326008)(86362001)(8936002)(5660300002)(8676002); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2023 07:40:00.1747 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 26322e2c-a9bc-495e-b163-08db5c2a1467 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: BN8NAM11FT088.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB6767 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 new rte_actions to push and remove the specific type of IPv6 extension to and from original packets. A new extension to be pushed should be the last extension due to the next header awareness. Remove can support the IPv6 extension in any position. Signed-off-by: Rongwei Liu Acked-by: Ori Kam --- doc/guides/prog_guide/rte_flow.rst | 21 +++++++++++ doc/guides/rel_notes/release_23_07.rst | 6 +++ lib/ethdev/rte_flow.c | 2 + lib/ethdev/rte_flow.h | 52 ++++++++++++++++++++++++++ 4 files changed, 81 insertions(+) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 32fc45516a..2fe42e1cea 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -3300,6 +3300,27 @@ The ``quota`` value is reduced according to ``mode`` setting. | ``RTE_FLOW_QUOTA_MODE_L3`` | Count packet bytes starting from L3 | +------------------+----------------------------------------------------+ +Action: ``IPV6_EXT_PUSH`` +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Add an IPv6 extension into IPv6 header and its template is provided in +its data buffer with the specific type as defined in the +``rte_flow_action_ipv6_ext_push`` definition. + +This action modifies the payload of matched flows. The data supplied must +be a valid extension in the specified type, it should be added the last one +if preceding extension existed. When applied to the original packet the +resulting packet must be a valid packet. + +Action: ``IPV6_EXT_REMOVE`` +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Remove an IPv6 extension whose type is provided in its type as defined in +the ``rte_flow_action_ipv6_ext_remove``. + +This action modifies the payload of matched flow and the packet should be +valid after removing. + Negative types ~~~~~~~~~~~~~~ diff --git a/doc/guides/rel_notes/release_23_07.rst b/doc/guides/rel_notes/release_23_07.rst index a9b1293689..4543cfde1f 100644 --- a/doc/guides/rel_notes/release_23_07.rst +++ b/doc/guides/rel_notes/release_23_07.rst @@ -27,6 +27,12 @@ New Features .. This section should contain new features added in this release. Sample format: + * **Added actions to push or remove the specific type of IPv6 extension.** + + Added ``RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH`` and ``RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH`` + to push or remove the specific IPv6 extension into or from the packets. + Push always put the new extension as the last one due to the next header awareness. + * **Add a title in the past tense with a full stop.** Add a short 1-2 sentence description in the past tense. diff --git a/lib/ethdev/rte_flow.c b/lib/ethdev/rte_flow.c index 69e6e749f7..af4b3f6da4 100644 --- a/lib/ethdev/rte_flow.c +++ b/lib/ethdev/rte_flow.c @@ -259,6 +259,8 @@ static const struct rte_flow_desc_data rte_flow_desc_action[] = { MK_FLOW_ACTION(METER_MARK, sizeof(struct rte_flow_action_meter_mark)), MK_FLOW_ACTION(SEND_TO_KERNEL, 0), MK_FLOW_ACTION(QUOTA, sizeof(struct rte_flow_action_quota)), + MK_FLOW_ACTION(IPV6_EXT_PUSH, sizeof(struct rte_flow_action_ipv6_ext_push)), + MK_FLOW_ACTION(IPV6_EXT_REMOVE, sizeof(struct rte_flow_action_ipv6_ext_remove)), }; int diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h index 713ba8b65c..369ecbc6ba 100644 --- a/lib/ethdev/rte_flow.h +++ b/lib/ethdev/rte_flow.h @@ -2912,6 +2912,25 @@ enum rte_flow_action_type { * applied to the given ethdev Rx queue. */ RTE_FLOW_ACTION_TYPE_SKIP_CMAN, + + /** + * RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH + * + * Push IPv6 extension into IPv6 packet. + * + * @see struct rte_flow_action_ipv6_ext_push. + */ + RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH, + + /** + * RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE + * + * Remove IPv6 extension from IPv6 packet whose type + * is provided in its configuration buffer. + * + * @see struct rte_flow_action_ipv6_ext_remove. + */ + RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE, }; /** @@ -3352,6 +3371,39 @@ struct rte_flow_action_vxlan_encap { struct rte_flow_item *definition; }; +/** + * @warning + * @b EXPERIMENTAL: this structure may change without prior notice + * + * RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH + * + * Valid flow definition for RTE_FLOW_ACTION_TYPE_IPV6_EXT_PUSH include: + * + * - IPV6_EXT TYPE / IPV6_EXT_HEADER_IN_TYPE / END + * + * size holds the number of bytes in @p data. + * The data must be added as the last IPv6 extension. + */ +struct rte_flow_action_ipv6_ext_push { + uint8_t *data; /**< IPv6 extension header data. */ + size_t size; /**< Size of @p data. */ + uint8_t type; /**< Type of IPv6 extension. */ +}; + +/** + * @warning + * @b EXPERIMENTAL: this structure may change without prior notice + * + * RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE + * + * Valid flow definition for RTE_FLOW_ACTION_TYPE_IPV6_EXT_REMOVE include: + * + * - IPV6_EXT TYPE / END + */ +struct rte_flow_action_ipv6_ext_remove { + uint8_t type; /**< Type of IPv6 extension. */ +}; + /** * @warning * @b EXPERIMENTAL: this structure may change without prior notice