get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/133698/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 133698,
    "url": "http://patches.dpdk.org/api/patches/133698/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231101044419.732726-3-rongweil@nvidia.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20231101044419.732726-3-rongweil@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231101044419.732726-3-rongweil@nvidia.com",
    "date": "2023-11-01T04:44:08",
    "name": "[v4,02/13] net/mlx5/hws: support remove header action",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "b1b66cadb66b06c7b55ce5239065cc854ed4e530",
    "submitter": {
        "id": 2223,
        "url": "http://patches.dpdk.org/api/people/2223/?format=api",
        "name": "rongwei liu",
        "email": "rongweil@nvidia.com"
    },
    "delegate": {
        "id": 3268,
        "url": "http://patches.dpdk.org/api/users/3268/?format=api",
        "username": "rasland",
        "first_name": "Raslan",
        "last_name": "Darawsheh",
        "email": "rasland@nvidia.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231101044419.732726-3-rongweil@nvidia.com/mbox/",
    "series": [
        {
            "id": 30088,
            "url": "http://patches.dpdk.org/api/series/30088/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30088",
            "date": "2023-11-01T04:44:06",
            "name": "support IPv6 push remove action",
            "version": 4,
            "mbox": "http://patches.dpdk.org/series/30088/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/133698/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/133698/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7521443258;\n\tWed,  1 Nov 2023 05:45:02 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 42A4E40DCA;\n\tWed,  1 Nov 2023 05:44:58 +0100 (CET)",
            "from NAM12-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam12on2041.outbound.protection.outlook.com [40.107.244.41])\n by mails.dpdk.org (Postfix) with ESMTP id 2882D40DCA\n for <dev@dpdk.org>; Wed,  1 Nov 2023 05:44:57 +0100 (CET)",
            "from CY5P221CA0068.NAMP221.PROD.OUTLOOK.COM (2603:10b6:930:4::39) by\n PH7PR12MB6538.namprd12.prod.outlook.com (2603:10b6:510:1f1::11) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.26; Wed, 1 Nov\n 2023 04:44:52 +0000",
            "from CY4PEPF0000FCC1.namprd03.prod.outlook.com\n (2603:10b6:930:4:cafe::30) by CY5P221CA0068.outlook.office365.com\n (2603:10b6:930:4::39) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.29 via Frontend\n Transport; Wed, 1 Nov 2023 04:44:52 +0000",
            "from mail.nvidia.com (216.228.117.160) by\n CY4PEPF0000FCC1.mail.protection.outlook.com (10.167.242.103) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6954.19 via Frontend Transport; Wed, 1 Nov 2023 04:44:52 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.66) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 31 Oct\n 2023 21:44:40 -0700",
            "from nvidia.com (10.126.230.35) by rnnvmail201.nvidia.com\n (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.41; Tue, 31 Oct\n 2023 21:44:37 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=n7+Pd1UgUnJdUTt69yJXzkvFx3i3OM8qjfUBVab6/BlDO/O66lKJetgIZoDNLW6A4NdSOJEALs9jKpkGPguFbyTRrrMddK+1ea2KHSMKuC7DEqYSBAFWP9mr0PI0qRb1rhgEPskwxMFzkTZFNcOStMEJCO9Q7FfLCzQw/UYhaEfak97Mk3RHV1/eBtq9ZcuGfpcAawQbXlqEBhPs59wvvFGqhcmquznWdJXozQpGrF4V1uAWkiDjZf3Std50yVVKqRt+HSTLQXNI4t/2RC08PmVXFMU6WX5CeA7/Ct/VSQAeNZo19U0JJL1B9mYMu+a12llrSkj/LAF6w+CjKtBcJw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n 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;\n bh=brq4tCnByOnYgXo6CwHngIHZsPoVg450sJo57TAoXJM=;\n b=EFirg5kz4NUXhlZipg+eJ/Lx94Ad5W822/Z13rL49neVk+Rk+sqWG+9kpWMbQGZtGfqL1saJKVhv66nuKdW2TMlmqClGHMVmK0jAUCLrg4Miju9ErvfGy235a6EtbRqxCsL4x1JiSCgCpCfXHtLnNfUppFEqyq8fh5bH2aJAqIBoKbxrzAVKNIJZaSG7deuVF4d5JngreFDvnJFw6camFy3ehezafDmpPwjdM5CPzMoyq5AhTxXLxsF+U3JgVU9VnapTE+Zb61Ey2q16p2RYfk+PaH45eoQH2UXojdd81Cvp9fychAt0P5hivahvtuNYM5Z7PspYXFjohkER0vD7Sw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.160) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com;\n dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com;\n dkim=none (message not signed); arc=none (0)",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=brq4tCnByOnYgXo6CwHngIHZsPoVg450sJo57TAoXJM=;\n b=GfiWwYn7eBERPq7kXCzIiVtb2q8iKjL+1YdqvFfa1CWcVjGIkWuvAwUf1LsQIfPG6mbl9MmsrB302Wr95gYANVKQp8YaEbNhQx9dIZGO1VaJQs/UTKHbP9zbrOWjmjuxgJSsmUInB61sp4ocFLnkkqBKoFTa1P8nPiOhoK5nM8bYHZ+nq7ChFu3++8d0pVYh0g5e5ZXEKttpYSzz2d6p8/Sqo5qGQfTKqrobbdqLCyYGMIypG0yewVtuMtFa29fZBFDxr+GaR8U5n9x3IceP9VQCbzD4DeYBlQjAy7bK1LyBESXiuY/VRIqjpNoNzFWVS1HQgfNuzV0Rzzvn7LR4xA==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.160)\n smtp.mailfrom=nvidia.com;\n dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.117.160 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.160; helo=mail.nvidia.com; pr=C",
        "From": "Rongwei Liu <rongweil@nvidia.com>",
        "To": "<dev@dpdk.org>, <matan@nvidia.com>, <viacheslavo@nvidia.com>,\n <orika@nvidia.com>, <suanmingm@nvidia.com>, <thomas@monjalon.net>",
        "CC": "Hamdan Igbaria <hamdani@nvidia.com>, Alex Vesker <valex@nvidia.com>",
        "Subject": "[PATCH v4 02/13] net/mlx5/hws: support remove header action",
        "Date": "Wed, 1 Nov 2023 06:44:08 +0200",
        "Message-ID": "<20231101044419.732726-3-rongweil@nvidia.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20231101044419.732726-1-rongweil@nvidia.com>",
        "References": "<20231031105131.441078-1-rongweil@nvidia.com>\n <20231101044419.732726-1-rongweil@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.230.35]",
        "X-ClientProxiedBy": "rnnvmail201.nvidia.com (10.129.68.8) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "CY4PEPF0000FCC1:EE_|PH7PR12MB6538:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "b8bc5757-2b8e-4b57-b63d-08dbda9549a5",
        "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": "\n pPwTJ3cWjEDkwFw7bJ+7Wc4y+OVAyYfhm5TJ77zH9gT6SnfBxrRJNgt3zL0a5TE84GQoaVrGJYBp6Gnq/ZIUPJhWT5mVYS75BsaQuVlALbV+/Up0sTcbKw+8DpDeoVfaNfuCqmit9cWq973fXCme/BtTvYjbWoWSptvfPK4H6NdeBKhZvWVjCo7mLrKTslFzUXialVrpolAXZ5fsP0JEphjIHRZlK6wRguaFe/FSoXnV27X7HvV+1cuwqe9//kH/7c+uWJPwQTvve8B3YaizF8X/nOvWZpiaMdATs9NJ3feBXqLdsRgikI1CUjg1xizYd8zFWnk9rCYT3f4UILWYQ0Ne0pQgShv+4ZspGBWYopE0s61g5qsqcipZQYl7gwIuO5wJ9MOQc6nv94jEJ6ZI8RHDwORoe/QJODlL8BafNLpC+VVkUUZdPVpcXgThtl/YkssMzOb+/VDdDMVpsEX1pX9NoscAWs9CtQ3eX5LGwgcYcAP3ZmEbge0zGUbAfiXfo6KvFZ0jM8wBb0RWU+qKauAL7D0i/8kp8PIDUCo+1fMSTIhWD7JaUyRIm+oWrd1abnH16bMeGo9dJ8KWmYpszqdx34gObmoXFiiQEwJD12H4VcWC1HKyA/x7+QPc1rpdEWcNKv7ny3bYuPX8g5fbNyHFxthc0Kos4Hxh1Oii0Uc+sJv4n/j/3WRl3zzlxSLlm/J30QZpt4fggKf9dntNzU03Lw4bcNR3u9U8Aqtlj60=",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.160; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge1.nvidia.com; CAT:NONE;\n SFS:(13230031)(4636009)(39860400002)(376002)(396003)(346002)(136003)(230922051799003)(1800799009)(186009)(82310400011)(451199024)(64100799003)(46966006)(36840700001)(40470700004)(70206006)(70586007)(54906003)(8676002)(41300700001)(316002)(4326008)(110136005)(8936002)(5660300002)(40460700003)(2616005)(6666004)(107886003)(36860700001)(478600001)(83380400001)(7696005)(36756003)(2906002)(40480700001)(7636003)(26005)(55016003)(356005)(47076005)(1076003)(16526019)(82740400003)(6286002)(426003)(336012)(86362001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "01 Nov 2023 04:44:52.2073 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b8bc5757-2b8e-4b57-b63d-08dbda9549a5",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.160];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n CY4PEPF0000FCC1.namprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "PH7PR12MB6538",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "From: Hamdan Igbaria <hamdani@nvidia.com>\n\nSupport remove header action, this action will allow the user\nto execute dynamic decaps by choosing to decap by providing a\nstart anchor and number of words to remove, or providing a\nstart anchor and end anchor.\n\nSigned-off-by: Hamdan Igbaria <hamdani@nvidia.com>\nReviewed-by: Alex Vesker <valex@nvidia.com>\nAcked-by: Ori Kam <orika@nvidia.com>\n---\n drivers/net/mlx5/hws/mlx5dr.h        | 40 +++++++++++++++\n drivers/net/mlx5/hws/mlx5dr_action.c | 77 ++++++++++++++++++++++++++++\n drivers/net/mlx5/hws/mlx5dr_action.h |  7 +++\n drivers/net/mlx5/hws/mlx5dr_debug.c  |  1 +\n 4 files changed, 125 insertions(+)",
    "diff": "diff --git a/drivers/net/mlx5/hws/mlx5dr.h b/drivers/net/mlx5/hws/mlx5dr.h\nindex f3367297c6..e21dcd72ae 100644\n--- a/drivers/net/mlx5/hws/mlx5dr.h\n+++ b/drivers/net/mlx5/hws/mlx5dr.h\n@@ -46,6 +46,7 @@ enum mlx5dr_action_type {\n \tMLX5DR_ACTION_TYP_ASO_METER,\n \tMLX5DR_ACTION_TYP_ASO_CT,\n \tMLX5DR_ACTION_TYP_INSERT_HEADER,\n+\tMLX5DR_ACTION_TYP_REMOVE_HEADER,\n \tMLX5DR_ACTION_TYP_DEST_ROOT,\n \tMLX5DR_ACTION_TYP_DEST_ARRAY,\n \tMLX5DR_ACTION_TYP_MAX,\n@@ -184,6 +185,29 @@ struct mlx5dr_action_insert_header {\n \tbool encap;\n };\n \n+enum mlx5dr_action_remove_header_type {\n+\tMLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_OFFSET,\n+\tMLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_HEADER,\n+};\n+\n+struct mlx5dr_action_remove_header_attr {\n+\tenum mlx5dr_action_remove_header_type type;\n+\tunion {\n+\t\tstruct {\n+\t\t\t/* PRM start anchor from which header will be removed */\n+\t\t\tuint8_t start_anchor;\n+\t\t\t/* PRM end anchor till which header will be removed */\n+\t\t\tuint8_t end_anchor;\n+\t\t\tbool decap;\n+\t\t} by_anchor;\n+\t\tstruct {\n+\t\t\t/* PRM start anchor from which header will be removed */\n+\t\t\tuint8_t start_anchor;\n+\t\t\tuint8_t size;\n+\t\t} by_offset;\n+\t};\n+};\n+\n struct mlx5dr_action_mh_pattern {\n \t/* Byte size of modify actions provided by \"data\" */\n \tsize_t sz;\n@@ -727,6 +751,22 @@ mlx5dr_action_create_insert_header(struct mlx5dr_context *ctx,\n \t\t\t\t   uint32_t log_bulk_size,\n \t\t\t\t   uint32_t flags);\n \n+/* Create remove header action.\n+ *\n+ * @param[in] ctx\n+ *\tThe context in which the new action will be created.\n+ * @param[in] attr\n+ *\tattributes: specifies the remove header type, PRM start anchor and\n+ *\tthe PRM end anchor or the PRM start anchor and remove size in bytes.\n+ * @param[in] flags\n+ *\tAction creation flags. (enum mlx5dr_action_flags)\n+ * @return pointer to mlx5dr_action on success NULL otherwise.\n+ */\n+struct mlx5dr_action *\n+mlx5dr_action_create_remove_header(struct mlx5dr_context *ctx,\n+\t\t\t\t   struct mlx5dr_action_remove_header_attr *attr,\n+\t\t\t\t   uint32_t flags);\n+\n /* Destroy direct rule action.\n  *\n  * @param[in] action\ndiff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c\nindex 45e23e2d28..f794d6cd78 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_action.c\n+++ b/drivers/net/mlx5/hws/mlx5dr_action.c\n@@ -7,6 +7,8 @@\n #define WIRE_PORT 0xFFFF\n \n #define MLX5DR_ACTION_METER_INIT_COLOR_OFFSET 1\n+/* Header removal size limited to 128B (64 words) */\n+#define MLX5DR_ACTION_REMOVE_HEADER_MAX_SIZE 128\n \n /* This is the maximum allowed action order for each table type:\n  *\t TX: POP_VLAN, CTR, ASO_METER, AS_CT, PUSH_VLAN, MODIFY, ENCAP, Term\n@@ -18,6 +20,7 @@\n static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_MAX] = {\n \t[MLX5DR_TABLE_TYPE_NIC_RX] = {\n \t\tBIT(MLX5DR_ACTION_TYP_TAG),\n+\t\tBIT(MLX5DR_ACTION_TYP_REMOVE_HEADER) |\n \t\tBIT(MLX5DR_ACTION_TYP_REFORMAT_TNL_L2_TO_L2) |\n \t\tBIT(MLX5DR_ACTION_TYP_REFORMAT_TNL_L3_TO_L2),\n \t\tBIT(MLX5DR_ACTION_TYP_POP_VLAN),\n@@ -58,6 +61,7 @@ static const uint32_t action_order_arr[MLX5DR_TABLE_TYPE_MAX][MLX5DR_ACTION_TYP_\n \t\tBIT(MLX5DR_ACTION_TYP_LAST),\n \t},\n \t[MLX5DR_TABLE_TYPE_FDB] = {\n+\t\tBIT(MLX5DR_ACTION_TYP_REMOVE_HEADER) |\n \t\tBIT(MLX5DR_ACTION_TYP_REFORMAT_TNL_L2_TO_L2) |\n \t\tBIT(MLX5DR_ACTION_TYP_REFORMAT_TNL_L3_TO_L2),\n \t\tBIT(MLX5DR_ACTION_TYP_POP_VLAN),\n@@ -603,6 +607,19 @@ static void mlx5dr_action_fill_stc_attr(struct mlx5dr_action *action,\n \t\tattr->insert_header.insert_offset = MLX5DR_ACTION_HDR_LEN_L2_MACS;\n \t\tattr->insert_header.header_size = MLX5DR_ACTION_HDR_LEN_L2_VLAN;\n \t\tbreak;\n+\tcase MLX5DR_ACTION_TYP_REMOVE_HEADER:\n+\t\tif (action->remove_header.type == MLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_HEADER) {\n+\t\t\tattr->action_type = MLX5_IFC_STC_ACTION_TYPE_HEADER_REMOVE;\n+\t\t\tattr->remove_header.decap = action->remove_header.decap;\n+\t\t\tattr->remove_header.start_anchor = action->remove_header.start_anchor;\n+\t\t\tattr->remove_header.end_anchor = action->remove_header.end_anchor;\n+\t\t} else {\n+\t\t\tattr->action_type = MLX5_IFC_STC_ACTION_TYPE_REMOVE_WORDS;\n+\t\t\tattr->remove_words.start_anchor = action->remove_header.start_anchor;\n+\t\t\tattr->remove_words.num_of_words = action->remove_header.num_of_words;\n+\t\t}\n+\t\tattr->action_offset = MLX5DR_ACTION_OFFSET_DW5;\n+\t\tbreak;\n \tdefault:\n \t\tDR_LOG(ERR, \"Invalid action type %d\", action->type);\n \t\tassert(false);\n@@ -2023,6 +2040,64 @@ mlx5dr_action_create_insert_header(struct mlx5dr_context *ctx,\n \treturn NULL;\n }\n \n+struct mlx5dr_action *\n+mlx5dr_action_create_remove_header(struct mlx5dr_context *ctx,\n+\t\t\t\t   struct mlx5dr_action_remove_header_attr *attr,\n+\t\t\t\t   uint32_t flags)\n+{\n+\tstruct mlx5dr_action *action;\n+\n+\tif (mlx5dr_action_is_root_flags(flags)) {\n+\t\tDR_LOG(ERR, \"Remove header action not supported over root\");\n+\t\trte_errno = ENOTSUP;\n+\t\treturn NULL;\n+\t}\n+\n+\taction = mlx5dr_action_create_generic(ctx, flags, MLX5DR_ACTION_TYP_REMOVE_HEADER);\n+\tif (!action)\n+\t\treturn NULL;\n+\n+\tswitch (attr->type) {\n+\tcase MLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_HEADER:\n+\t\taction->remove_header.type = MLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_HEADER;\n+\t\taction->remove_header.start_anchor = attr->by_anchor.start_anchor;\n+\t\taction->remove_header.end_anchor = attr->by_anchor.end_anchor;\n+\t\taction->remove_header.decap = attr->by_anchor.decap;\n+\t\tbreak;\n+\tcase MLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_OFFSET:\n+\t\tif (attr->by_offset.size % W_SIZE != 0) {\n+\t\t\tDR_LOG(ERR, \"Invalid size, HW supports header remove in WORD granularity\");\n+\t\t\trte_errno = EINVAL;\n+\t\t\tgoto free_action;\n+\t\t}\n+\n+\t\tif (attr->by_offset.size > MLX5DR_ACTION_REMOVE_HEADER_MAX_SIZE) {\n+\t\t\tDR_LOG(ERR, \"Header removal size limited to %u bytes\",\n+\t\t\t       MLX5DR_ACTION_REMOVE_HEADER_MAX_SIZE);\n+\t\t\trte_errno = EINVAL;\n+\t\t\tgoto free_action;\n+\t\t}\n+\n+\t\taction->remove_header.type = MLX5DR_ACTION_REMOVE_HEADER_TYPE_BY_OFFSET;\n+\t\taction->remove_header.start_anchor = attr->by_offset.start_anchor;\n+\t\taction->remove_header.num_of_words = attr->by_offset.size / W_SIZE;\n+\t\tbreak;\n+\tdefault:\n+\t\tDR_LOG(ERR, \"Unsupported remove header type %u\", attr->type);\n+\t\trte_errno = ENOTSUP;\n+\t\tgoto free_action;\n+\t}\n+\n+\tif (mlx5dr_action_create_stcs(action, NULL))\n+\t\tgoto free_action;\n+\n+\treturn action;\n+\n+free_action:\n+\tsimple_free(action);\n+\treturn NULL;\n+}\n+\n static void mlx5dr_action_destroy_hws(struct mlx5dr_action *action)\n {\n \tstruct mlx5dr_devx_obj *obj = NULL;\n@@ -2043,6 +2118,7 @@ static void mlx5dr_action_destroy_hws(struct mlx5dr_action *action)\n \tcase MLX5DR_ACTION_TYP_ASO_METER:\n \tcase MLX5DR_ACTION_TYP_ASO_CT:\n \tcase MLX5DR_ACTION_TYP_PUSH_VLAN:\n+\tcase MLX5DR_ACTION_TYP_REMOVE_HEADER:\n \t\tmlx5dr_action_destroy_stcs(action);\n \t\tbreak;\n \tcase MLX5DR_ACTION_TYP_DEST_ROOT:\n@@ -2620,6 +2696,7 @@ int mlx5dr_action_template_process(struct mlx5dr_action_template *at)\n \t\t\tsetter->idx_double = i;\n \t\t\tbreak;\n \n+\t\tcase MLX5DR_ACTION_TYP_REMOVE_HEADER:\n \t\tcase MLX5DR_ACTION_TYP_REFORMAT_TNL_L2_TO_L2:\n \t\t\t/* Single remove header to header */\n \t\t\tsetter = mlx5dr_action_setter_find_first(last_setter, ASF_SINGLE1 | ASF_MODIFY);\ndiff --git a/drivers/net/mlx5/hws/mlx5dr_action.h b/drivers/net/mlx5/hws/mlx5dr_action.h\nindex 593a7f3817..33a674906e 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_action.h\n+++ b/drivers/net/mlx5/hws/mlx5dr_action.h\n@@ -159,6 +159,13 @@ struct mlx5dr_action {\n \t\t\t\t\tsize_t num_dest;\n \t\t\t\t\tstruct mlx5dr_cmd_set_fte_dest *dest_list;\n \t\t\t\t} dest_array;\n+\t\t\t\tstruct {\n+\t\t\t\t\tuint8_t type;\n+\t\t\t\t\tuint8_t start_anchor;\n+\t\t\t\t\tuint8_t end_anchor;\n+\t\t\t\t\tuint8_t num_of_words;\n+\t\t\t\t\tbool decap;\n+\t\t\t\t} remove_header;\n \t\t\t};\n \t\t};\n \ndiff --git a/drivers/net/mlx5/hws/mlx5dr_debug.c b/drivers/net/mlx5/hws/mlx5dr_debug.c\nindex a04dfbb97a..6607daaa63 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_debug.c\n+++ b/drivers/net/mlx5/hws/mlx5dr_debug.c\n@@ -25,6 +25,7 @@ const char *mlx5dr_debug_action_type_str[] = {\n \t[MLX5DR_ACTION_TYP_DEST_ROOT] = \"DEST_ROOT\",\n \t[MLX5DR_ACTION_TYP_DEST_ARRAY] = \"DEST_ARRAY\",\n \t[MLX5DR_ACTION_TYP_INSERT_HEADER] = \"INSERT_HEADER\",\n+\t[MLX5DR_ACTION_TYP_REMOVE_HEADER] = \"REMOVE_HEADER\",\n };\n \n static_assert(ARRAY_SIZE(mlx5dr_debug_action_type_str) == MLX5DR_ACTION_TYP_MAX,\n",
    "prefixes": [
        "v4",
        "02/13"
    ]
}