get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 133650,
    "url": "http://patches.dpdk.org/api/patches/133650/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231031105131.441078-7-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": "<20231031105131.441078-7-rongweil@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231031105131.441078-7-rongweil@nvidia.com",
    "date": "2023-10-31T10:51:31",
    "name": "[v3,6/6] net/mlx5/hws: add stc reparse support for srv6 push pop",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "ac6a2f7d26e70af0a760022b88562b16d69fab01",
    "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/20231031105131.441078-7-rongweil@nvidia.com/mbox/",
    "series": [
        {
            "id": 30071,
            "url": "http://patches.dpdk.org/api/series/30071/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30071",
            "date": "2023-10-31T10:51:26",
            "name": "support IPv6 extension push remove",
            "version": 3,
            "mbox": "http://patches.dpdk.org/series/30071/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/133650/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/133650/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 B6F3643251;\n\tTue, 31 Oct 2023 11:52:42 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 483A84064C;\n\tTue, 31 Oct 2023 11:52:15 +0100 (CET)",
            "from NAM11-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam11on2044.outbound.protection.outlook.com [40.107.223.44])\n by mails.dpdk.org (Postfix) with ESMTP id 8550240A6C\n for <dev@dpdk.org>; Tue, 31 Oct 2023 11:52:12 +0100 (CET)",
            "from CY5PR15CA0149.namprd15.prod.outlook.com (2603:10b6:930:67::26)\n by DM6PR12MB4911.namprd12.prod.outlook.com (2603:10b6:5:20e::22) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.28; Tue, 31 Oct\n 2023 10:52:09 +0000",
            "from CY4PEPF0000EE3F.namprd03.prod.outlook.com\n (2603:10b6:930:67:cafe::4c) by CY5PR15CA0149.outlook.office365.com\n (2603:10b6:930:67::26) 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; Tue, 31 Oct 2023 10:52:08 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n CY4PEPF0000EE3F.mail.protection.outlook.com (10.167.242.19) 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; Tue, 31 Oct 2023 10:52:08 +0000",
            "from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com\n (10.129.200.67) 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 03:52:00 -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 03:51:58 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=b1EAvKhuzYkFFcWASHdYMcqqEoZAgNOQokaFQbX9DGOBT37Dg8sJZ+l7YXTFvXOCK3ficcwT/++NlV4rI00zeYp4ef+/oAC1QbP4ulfsIbPD8SBS3RCXBGSif58PD5wFF1blxrXJ61FTwuYksVIbJRXV/TKZpO42TFHT/fefWFw81CFdRl12zpSA3wKRcc4yoqM9jclpJq9xMEXLhjZn7t9CimCRUfnEdP8lqB/1tyb2rozVhfDQaDJxvLHQtT8I/vUrWrxkVjYq9ACm4cEA+pUQoatEk6MsAgn8J53epB9hmnXWUnHQp8vVn2NIEU4jMrjSlJiPTaqdLnCnWmx6gg==",
        "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=mbDF9qVDT/kakCgCUQSwXk7lGKRiZhde/5AK7UShAy0=;\n b=YTxN4Ge+DaLw89vvy/P5QaTmiRQPRtDOJsb0wTHgwuiT4JYPzu/1EtpLDCRSfrtPDYUCWFRdwlOAsTeBvr9U2i57KsQV7LnnVXWzZ/b1JlBiOXHR+ZLDijV60Ylaz1ttUV2z8fBvwXvh0YBXTo0+v3N6+ZHUXm2zVT6/pK9cFD/lLcWA/QTGdpMam0mQQZWYXafb2zDVyNq+WfWl3c7nhjoZrdenxnzbcjYQ8rYI26lUNMyE13I4ZYxoBoRzTneWjswuYgk9fmGcOhMxQDcw4nJ+6VMY3RgU63tDeaH6odYNfYfaENgOtkErwzvsLzY+LBZLrrBssIf6+aKxMAAkcw==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.117.161) 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=mbDF9qVDT/kakCgCUQSwXk7lGKRiZhde/5AK7UShAy0=;\n b=BVFGnx4+Chn6TiFCeaM1KbQg15q0n37JXZ+ylrzbbesaSL40ZeuxGhjwiWflQrzMjIzqI8qPEiRB8Y+8hufLiM74d+o0GPp07QPDz/1H9fyG/r5tTzd5b09AFrHyTa+NRUvUlrDKc8nt48vRi6jkgA7jr4E5yz4PvHjNakKwJizYg9vqcSNUIUUg7Qb4R+b1OqhgZsl98VCcyCC7eu9amVu46qQsNqsjwLbrZxGv4fVe3ZEgaSAXz3VOFTNqaOFZKosBeMOOSBZUloOxCqwAttpe38/QppfuSJ5PF4KysDQxCfBs1e0CcXrgPSHnSI7e4CM3ceXZhNVq1GYIaVVO+Q==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.117.161)\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.161 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.117.161; 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": "Erez Shitrit <erezsh@nvidia.com>",
        "Subject": "[PATCH v3 6/6] net/mlx5/hws: add stc reparse support for srv6 push\n pop",
        "Date": "Tue, 31 Oct 2023 12:51:31 +0200",
        "Message-ID": "<20231031105131.441078-7-rongweil@nvidia.com>",
        "X-Mailer": "git-send-email 2.27.0",
        "In-Reply-To": "<20231031105131.441078-1-rongweil@nvidia.com>",
        "References": "<20231031094244.381557-1-rongweil@nvidia.com>\n <20231031105131.441078-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": "CY4PEPF0000EE3F:EE_|DM6PR12MB4911:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "74bd371d-0fed-4707-8b8f-08dbd9ff6e0c",
        "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 SYv32+0O5mwSN6uNQgo+xMA46MrNDDk2TCrcGRdFJifISEmlVJnGUJVtTMNe1eFRVWOA4dKx9pbLku50TFj793BTYsS4PEDOdidTOGfSqfIlnSxTxaZHMSWlpdjk55dyryXBhfe98PKJ8mM0pzrRLiJiFUCfQDaXhSo18rV2a65zji4yNg+/gOYRZWpvYitjB4V2AW3dzNPmxIdy/TjJbd4pP8laIcU0rjN4ngfh1pagbyHd6lFI/wa9igq/jtBDThgK/V3oXkXHPsGbAEEYGvPecRZ5bTy3JHvgDikFpu8kbwyF8lz/lzA7G7nLj0VDaCAMJ/psGM8k/TD8Nlfo3lF0+kvExh2nFOPYuR5jWXBG4rjUOHTZEiTwViTc4GIGX/r8E6p+Q/7kNBEjGotxjQNo5NXTq/uqxSzTutzhL48nCnX0OFm+suzzDRGHMxxZiL8HgAlXOl5Sghzz3wFSvlXqRFhra4uYg7lCML+oDZxhFHakFVi/KeE7BAdK0hVXrDegDOsgaSm6BDkqrTm06b60I7Eec3VxMWJq+DEsdgbmn6VqWn4/DMEt0pR3zJxWy/6PvGrH0t3gZ7w0BbY9ALFXHKCbBd9iebLjzSf16pxSmeoqZzymaqn+ZiduRHUiojI9D3kd/enhTbS3HmK5LTBjkcG+gLx43pzH1Gr4MRlbAHLMFbnHQIdAfy7W98aL0tm+b8TCgZUdXKRxoxj/cQd+DFTGvsUWAKS/VflkslnVylMgYV38TKQhbPFuGGyYqxQyG5AaYTndzqHjnOw34W+TcnxAAcOjgO4/4tXkjkc=",
        "X-Forefront-Antispam-Report": "CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE;\n SFS:(13230031)(4636009)(136003)(376002)(346002)(39860400002)(396003)(230173577357003)(230922051799003)(230273577357003)(64100799003)(82310400011)(1800799009)(186009)(451199024)(40470700004)(36840700001)(46966006)(2906002)(55016003)(40460700003)(30864003)(5660300002)(41300700001)(8936002)(4326008)(8676002)(36756003)(86362001)(40480700001)(26005)(6286002)(107886003)(316002)(82740400003)(6666004)(36860700001)(7636003)(47076005)(356005)(70586007)(70206006)(110136005)(2616005)(16526019)(336012)(426003)(1076003)(83380400001)(7696005)(478600001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "31 Oct 2023 10:52:08.8167 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 74bd371d-0fed-4707-8b8f-08dbd9ff6e0c",
        "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.161];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n CY4PEPF0000EE3F.namprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM6PR12MB4911",
        "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": "After pushing/popping srv6 into/from IPv6 packets, the checksum\nneeds to be correct.\n\nIn order to achieve this, there is a need to control each STE' reparse\nbehavior(CX7 and above). Add two more flags enumeration definitions to\nallow external control of reparse property in stc.\n\n1. Push\n   a. 1st STE, insert header action, reparse ignored(default reparse\n      always)\n   b. 2nd STE, modify IPv6 protocol, reparse always as default.\n   c. 3rd STE, modify header list, reparse always(default reparse\n      ignored)\n2. Pop\n   a. 1st STE, modify header list, reparse always(default reparse\n      ignored)\n   b. 2nd STE, modify header list, reparse always(default reparse\n      ignored)\n   c. 3rd STE, modify IPv6 protocol, reparse ignored(default reparse\n      always); remove header action, reparse always as default.\n\nFor CX6Lx and CX6Dx, the reparse behavior is controlled by RTC as\nalways. Only pop action can work well.\n\nSigned-off-by: Rongwei Liu <rongweil@nvidia.com>\nReviewed-by: Erez Shitrit <erezsh@nvidia.com>\nAcked-by: Ori Kam <orika@nvidia.com>\n---\n drivers/net/mlx5/hws/mlx5dr_action.c | 115 +++++++++++++++++++--------\n drivers/net/mlx5/hws/mlx5dr_action.h |   7 ++\n 2 files changed, 87 insertions(+), 35 deletions(-)",
    "diff": "diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c\nindex 281b09a582..daeabead2a 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_action.c\n+++ b/drivers/net/mlx5/hws/mlx5dr_action.c\n@@ -640,6 +640,7 @@ static void mlx5dr_action_fill_stc_attr(struct mlx5dr_action *action,\n \tcase MLX5DR_ACTION_TYP_REFORMAT_TNL_L3_TO_L2:\n \tcase MLX5DR_ACTION_TYP_MODIFY_HDR:\n \t\tattr->action_offset = MLX5DR_ACTION_OFFSET_DW6;\n+\t\tattr->reparse_mode = MLX5_IFC_STC_REPARSE_IGNORE;\n \t\tif (action->modify_header.require_reparse)\n \t\t\tattr->reparse_mode = MLX5_IFC_STC_REPARSE_ALWAYS;\n \n@@ -678,9 +679,12 @@ static void mlx5dr_action_fill_stc_attr(struct mlx5dr_action *action,\n \tcase MLX5DR_ACTION_TYP_REFORMAT_L2_TO_TNL_L2:\n \tcase MLX5DR_ACTION_TYP_REFORMAT_L2_TO_TNL_L3:\n \tcase MLX5DR_ACTION_TYP_INSERT_HEADER:\n+\t\tattr->reparse_mode = MLX5_IFC_STC_REPARSE_ALWAYS;\n+\t\tif (!action->reformat.require_reparse)\n+\t\t\tattr->reparse_mode = MLX5_IFC_STC_REPARSE_IGNORE;\n+\n \t\tattr->action_type = MLX5_IFC_STC_ACTION_TYPE_HEADER_INSERT;\n \t\tattr->action_offset = MLX5DR_ACTION_OFFSET_DW6;\n-\t\tattr->reparse_mode = MLX5_IFC_STC_REPARSE_ALWAYS;\n \t\tattr->insert_header.encap = action->reformat.encap;\n \t\tattr->insert_header.insert_anchor = action->reformat.anchor;\n \t\tattr->insert_header.arg_id = action->reformat.arg_obj->id;\n@@ -1441,7 +1445,7 @@ static int\n mlx5dr_action_handle_insert_with_ptr(struct mlx5dr_action *action,\n \t\t\t\t     uint8_t num_of_hdrs,\n \t\t\t\t     struct mlx5dr_action_reformat_header *hdrs,\n-\t\t\t\t     uint32_t log_bulk_sz)\n+\t\t\t\t     uint32_t log_bulk_sz, uint32_t reparse)\n {\n \tstruct mlx5dr_devx_obj *arg_obj;\n \tsize_t max_sz = 0;\n@@ -1478,6 +1482,11 @@ mlx5dr_action_handle_insert_with_ptr(struct mlx5dr_action *action,\n \t\t\taction[i].reformat.encap = 1;\n \t\t}\n \n+\t\tif (likely(reparse == MLX5DR_ACTION_STC_REPARSE_DEFAULT))\n+\t\t\taction[i].reformat.require_reparse = true;\n+\t\telse if (reparse == MLX5DR_ACTION_STC_REPARSE_ON)\n+\t\t\taction[i].reformat.require_reparse = true;\n+\n \t\tret = mlx5dr_action_create_stcs(&action[i], NULL);\n \t\tif (ret) {\n \t\t\tDR_LOG(ERR, \"Failed to create stc for reformat\");\n@@ -1514,7 +1523,8 @@ mlx5dr_action_handle_l2_to_tunnel_l3(struct mlx5dr_action *action,\n \tret = mlx5dr_action_handle_insert_with_ptr(action,\n \t\t\t\t\t\t   num_of_hdrs,\n \t\t\t\t\t\t   hdrs,\n-\t\t\t\t\t\t   log_bulk_sz);\n+\t\t\t\t\t\t   log_bulk_sz,\n+\t\t\t\t\t\t   MLX5DR_ACTION_STC_REPARSE_DEFAULT);\n \tif (ret)\n \t\tgoto put_shared_stc;\n \n@@ -1657,7 +1667,8 @@ mlx5dr_action_create_reformat_hws(struct mlx5dr_action *action,\n \t\tret = mlx5dr_action_create_stcs(action, NULL);\n \t\tbreak;\n \tcase MLX5DR_ACTION_TYP_REFORMAT_L2_TO_TNL_L2:\n-\t\tret = mlx5dr_action_handle_insert_with_ptr(action, num_of_hdrs, hdrs, bulk_size);\n+\t\tret = mlx5dr_action_handle_insert_with_ptr(action, num_of_hdrs, hdrs, bulk_size,\n+\t\t\t\t\t\t\t   MLX5DR_ACTION_STC_REPARSE_DEFAULT);\n \t\tbreak;\n \tcase MLX5DR_ACTION_TYP_REFORMAT_L2_TO_TNL_L3:\n \t\tret = mlx5dr_action_handle_l2_to_tunnel_l3(action, num_of_hdrs, hdrs, bulk_size);\n@@ -1765,7 +1776,8 @@ static int\n mlx5dr_action_create_modify_header_hws(struct mlx5dr_action *action,\n \t\t\t\t       uint8_t num_of_patterns,\n \t\t\t\t       struct mlx5dr_action_mh_pattern *pattern,\n-\t\t\t\t       uint32_t log_bulk_size)\n+\t\t\t\t       uint32_t log_bulk_size,\n+\t\t\t\t       uint32_t reparse)\n {\n \tstruct mlx5dr_devx_obj *pat_obj, *arg_obj = NULL;\n \tstruct mlx5dr_context *ctx = action->ctx;\n@@ -1799,8 +1811,12 @@ mlx5dr_action_create_modify_header_hws(struct mlx5dr_action *action,\n \t\taction[i].modify_header.num_of_patterns = num_of_patterns;\n \t\taction[i].modify_header.max_num_of_actions = max_mh_actions;\n \t\taction[i].modify_header.num_of_actions = num_actions;\n-\t\taction[i].modify_header.require_reparse =\n-\t\t\tmlx5dr_pat_require_reparse(pattern[i].data, num_actions);\n+\n+\t\tif (likely(reparse == MLX5DR_ACTION_STC_REPARSE_DEFAULT))\n+\t\t\taction[i].modify_header.require_reparse =\n+\t\t\t\tmlx5dr_pat_require_reparse(pattern[i].data, num_actions);\n+\t\telse if (reparse == MLX5DR_ACTION_STC_REPARSE_ON)\n+\t\t\taction[i].modify_header.require_reparse = true;\n \n \t\tif (num_actions == 1) {\n \t\t\tpat_obj = NULL;\n@@ -1843,12 +1859,12 @@ mlx5dr_action_create_modify_header_hws(struct mlx5dr_action *action,\n \treturn rte_errno;\n }\n \n-struct mlx5dr_action *\n-mlx5dr_action_create_modify_header(struct mlx5dr_context *ctx,\n-\t\t\t\t   uint8_t num_of_patterns,\n-\t\t\t\t   struct mlx5dr_action_mh_pattern *patterns,\n-\t\t\t\t   uint32_t log_bulk_size,\n-\t\t\t\t   uint32_t flags)\n+static struct mlx5dr_action *\n+mlx5dr_action_create_modify_header_reparse(struct mlx5dr_context *ctx,\n+\t\t\t\t\t   uint8_t num_of_patterns,\n+\t\t\t\t\t   struct mlx5dr_action_mh_pattern *patterns,\n+\t\t\t\t\t   uint32_t log_bulk_size,\n+\t\t\t\t\t   uint32_t flags, uint32_t reparse)\n {\n \tstruct mlx5dr_action *action;\n \tint ret;\n@@ -1896,7 +1912,8 @@ mlx5dr_action_create_modify_header(struct mlx5dr_context *ctx,\n \tret = mlx5dr_action_create_modify_header_hws(action,\n \t\t\t\t\t\t     num_of_patterns,\n \t\t\t\t\t\t     patterns,\n-\t\t\t\t\t\t     log_bulk_size);\n+\t\t\t\t\t\t     log_bulk_size,\n+\t\t\t\t\t\t     reparse);\n \tif (ret)\n \t\tgoto free_action;\n \n@@ -1907,6 +1924,17 @@ mlx5dr_action_create_modify_header(struct mlx5dr_context *ctx,\n \treturn NULL;\n }\n \n+struct mlx5dr_action *\n+mlx5dr_action_create_modify_header(struct mlx5dr_context *ctx,\n+\t\t\t\t   uint8_t num_of_patterns,\n+\t\t\t\t   struct mlx5dr_action_mh_pattern *patterns,\n+\t\t\t\t   uint32_t log_bulk_size,\n+\t\t\t\t   uint32_t flags)\n+{\n+\treturn mlx5dr_action_create_modify_header_reparse(ctx, num_of_patterns, patterns,\n+\t\t\t\t\t\t\t  log_bulk_size, flags,\n+\t\t\t\t\t\t\t  MLX5DR_ACTION_STC_REPARSE_DEFAULT);\n+}\n static struct mlx5dr_devx_obj *\n mlx5dr_action_dest_array_process_reformat(struct mlx5dr_context *ctx,\n \t\t\t\t\t  enum mlx5dr_action_type type,\n@@ -2254,12 +2282,12 @@ mlx5dr_action_create_reformat_trailer(struct mlx5dr_context *ctx,\n \treturn action;\n }\n \n-struct mlx5dr_action *\n-mlx5dr_action_create_insert_header(struct mlx5dr_context *ctx,\n-\t\t\t\t   uint8_t num_of_hdrs,\n-\t\t\t\t   struct mlx5dr_action_insert_header *hdrs,\n-\t\t\t\t   uint32_t log_bulk_size,\n-\t\t\t\t   uint32_t flags)\n+static struct mlx5dr_action *\n+mlx5dr_action_create_insert_header_reparse(struct mlx5dr_context *ctx,\n+\t\t\t\t\t   uint8_t num_of_hdrs,\n+\t\t\t\t\t   struct mlx5dr_action_insert_header *hdrs,\n+\t\t\t\t\t   uint32_t log_bulk_size,\n+\t\t\t\t\t   uint32_t flags, uint32_t reparse)\n {\n \tstruct mlx5dr_action_reformat_header *reformat_hdrs;\n \tstruct mlx5dr_action *action;\n@@ -2312,7 +2340,8 @@ mlx5dr_action_create_insert_header(struct mlx5dr_context *ctx,\n \t}\n \n \tret = mlx5dr_action_handle_insert_with_ptr(action, num_of_hdrs,\n-\t\t\t\t\t\t   reformat_hdrs, log_bulk_size);\n+\t\t\t\t\t\t   reformat_hdrs, log_bulk_size,\n+\t\t\t\t\t\t   reparse);\n \tif (ret) {\n \t\tDR_LOG(ERR, \"Failed to create HWS reformat action\");\n \t\tgoto free_reformat_hdrs;\n@@ -2329,6 +2358,18 @@ mlx5dr_action_create_insert_header(struct mlx5dr_context *ctx,\n \treturn NULL;\n }\n \n+struct mlx5dr_action *\n+mlx5dr_action_create_insert_header(struct mlx5dr_context *ctx,\n+\t\t\t\t   uint8_t num_of_hdrs,\n+\t\t\t\t   struct mlx5dr_action_insert_header *hdrs,\n+\t\t\t\t   uint32_t log_bulk_size,\n+\t\t\t\t   uint32_t flags)\n+{\n+\treturn mlx5dr_action_create_insert_header_reparse(ctx, num_of_hdrs, hdrs,\n+\t\t\t\t\t\t\t  log_bulk_size, flags,\n+\t\t\t\t\t\t\t  MLX5DR_ACTION_STC_REPARSE_DEFAULT);\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@@ -2422,8 +2463,9 @@ mlx5dr_action_create_pop_ipv6_route_ext_mhdr1(struct mlx5dr_action *action)\n \tpattern.data = cmd;\n \tpattern.sz = sizeof(cmd);\n \n-\treturn mlx5dr_action_create_modify_header(action->ctx, 1, &pattern,\n-\t\t\t\t\t\t  0, action->flags);\n+\treturn mlx5dr_action_create_modify_header_reparse(action->ctx, 1, &pattern, 0,\n+\t\t\t\t\t\t\t  action->flags,\n+\t\t\t\t\t\t\t  MLX5DR_ACTION_STC_REPARSE_ON);\n }\n \n static void *\n@@ -2469,8 +2511,9 @@ mlx5dr_action_create_pop_ipv6_route_ext_mhdr2(struct mlx5dr_action *action)\n \tpattern.data = cmd;\n \tpattern.sz = sizeof(cmd);\n \n-\treturn mlx5dr_action_create_modify_header(action->ctx, 1, &pattern,\n-\t\t\t\t\t\t  0, action->flags);\n+\treturn mlx5dr_action_create_modify_header_reparse(action->ctx, 1, &pattern, 0,\n+\t\t\t\t\t\t\t  action->flags,\n+\t\t\t\t\t\t\t  MLX5DR_ACTION_STC_REPARSE_ON);\n }\n \n static void *\n@@ -2496,8 +2539,9 @@ mlx5dr_action_create_pop_ipv6_route_ext_mhdr3(struct mlx5dr_action *action)\n \tpattern.data = (__be64 *)cmd;\n \tpattern.sz = sizeof(cmd);\n \n-\treturn mlx5dr_action_create_modify_header(action->ctx, 1, &pattern,\n-\t\t\t\t\t\t  0, action->flags);\n+\treturn mlx5dr_action_create_modify_header_reparse(action->ctx, 1, &pattern, 0,\n+\t\t\t\t\t\t\t  action->flags,\n+\t\t\t\t\t\t\t  MLX5DR_ACTION_STC_REPARSE_OFF);\n }\n \n static int\n@@ -2644,8 +2688,9 @@ mlx5dr_action_create_push_ipv6_route_ext(struct mlx5dr_action *action,\n \tinsert_hdr.hdr.sz = hdr->sz;\n \tinsert_hdr.hdr.data = header;\n \taction->ipv6_route_ext.action[0] =\n-\t\tmlx5dr_action_create_insert_header(action->ctx, 1, &insert_hdr,\n-\t\t\t\t\t\t   bulk_size, action->flags);\n+\t\tmlx5dr_action_create_insert_header_reparse(action->ctx, 1, &insert_hdr,\n+\t\t\t\t\t\t\t    bulk_size, action->flags,\n+\t\t\t\t\t\t\t    MLX5DR_ACTION_STC_REPARSE_OFF);\n \taction->ipv6_route_ext.action[1] =\n \t\tmlx5dr_action_create_push_ipv6_route_ext_mhdr1(action);\n \taction->ipv6_route_ext.action[2] =\n@@ -2678,12 +2723,6 @@ mlx5dr_action_create_reformat_ipv6_ext(struct mlx5dr_context *ctx,\n \tstruct mlx5dr_action *action;\n \tint ret;\n \n-\tif (mlx5dr_context_cap_dynamic_reparse(ctx)) {\n-\t\tDR_LOG(ERR, \"IPv6 extension actions is not supported\");\n-\t\trte_errno = ENOTSUP;\n-\t\treturn NULL;\n-\t}\n-\n \tif (!mlx5dr_action_is_hws_flags(flags) ||\n \t    ((flags & MLX5DR_ACTION_FLAG_SHARED) && log_bulk_size)) {\n \t\tDR_LOG(ERR, \"IPv6 extension flags don't fit HWS (flags: 0x%x)\", flags);\n@@ -2708,6 +2747,12 @@ mlx5dr_action_create_reformat_ipv6_ext(struct mlx5dr_context *ctx,\n \t\tret = mlx5dr_action_create_pop_ipv6_route_ext(action);\n \t\tbreak;\n \tcase MLX5DR_ACTION_TYP_PUSH_IPV6_ROUTE_EXT:\n+\t\tif (!mlx5dr_context_cap_dynamic_reparse(ctx)) {\n+\t\t\tDR_LOG(ERR, \"IPv6 routing extension push actions is not supported\");\n+\t\t\trte_errno = ENOTSUP;\n+\t\t\tgoto free_action;\n+\t\t}\n+\n \t\tret = mlx5dr_action_create_push_ipv6_route_ext(action, hdr, log_bulk_size);\n \t\tbreak;\n \tdefault:\ndiff --git a/drivers/net/mlx5/hws/mlx5dr_action.h b/drivers/net/mlx5/hws/mlx5dr_action.h\nindex ce9091a336..ec6605bf7a 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_action.h\n+++ b/drivers/net/mlx5/hws/mlx5dr_action.h\n@@ -65,6 +65,12 @@ enum mlx5dr_action_setter_flag {\n \tASF_HIT = 1 << 7,\n };\n \n+enum mlx5dr_action_stc_reparse {\n+\tMLX5DR_ACTION_STC_REPARSE_DEFAULT,\n+\tMLX5DR_ACTION_STC_REPARSE_ON,\n+\tMLX5DR_ACTION_STC_REPARSE_OFF,\n+};\n+\n struct mlx5dr_action_default_stc {\n \tstruct mlx5dr_pool_chunk nop_ctr;\n \tstruct mlx5dr_pool_chunk nop_dw5;\n@@ -146,6 +152,7 @@ struct mlx5dr_action {\n \t\t\t\t\tuint8_t anchor;\n \t\t\t\t\tuint8_t offset;\n \t\t\t\t\tbool encap;\n+\t\t\t\t\tuint8_t require_reparse;\n \t\t\t\t} reformat;\n \t\t\t\tstruct {\n \t\t\t\t\tstruct mlx5dr_action\n",
    "prefixes": [
        "v3",
        "6/6"
    ]
}