get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 133603,
    "url": "http://patches.dpdk.org/api/patches/133603/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231029163202.216450-30-getelson@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": "<20231029163202.216450-30-getelson@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231029163202.216450-30-getelson@nvidia.com",
    "date": "2023-10-29T16:32:02",
    "name": "[30/30] 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": 1882,
        "url": "http://patches.dpdk.org/api/people/1882/?format=api",
        "name": "Gregory Etelson",
        "email": "getelson@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/20231029163202.216450-30-getelson@nvidia.com/mbox/",
    "series": [
        {
            "id": 30049,
            "url": "http://patches.dpdk.org/api/series/30049/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30049",
            "date": "2023-10-29T16:31:33",
            "name": "[01/30] net/mlx5/hws: Definer, add mlx5dr context to definer_conv_data",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/30049/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/133603/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/133603/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 F263343238;\n\tSun, 29 Oct 2023 17:37:10 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 0246C42DFE;\n\tSun, 29 Oct 2023 17:34:38 +0100 (CET)",
            "from NAM12-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam12on2043.outbound.protection.outlook.com [40.107.243.43])\n by mails.dpdk.org (Postfix) with ESMTP id ABA9E409FA\n for <dev@dpdk.org>; Sun, 29 Oct 2023 17:34:05 +0100 (CET)",
            "from BY3PR05CA0058.namprd05.prod.outlook.com (2603:10b6:a03:39b::33)\n by DS0PR12MB8814.namprd12.prod.outlook.com (2603:10b6:8:14e::22) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.26; Sun, 29 Oct\n 2023 16:34:03 +0000",
            "from DS2PEPF00003448.namprd04.prod.outlook.com\n (2603:10b6:a03:39b:cafe::ef) by BY3PR05CA0058.outlook.office365.com\n (2603:10b6:a03:39b::33) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.14 via Frontend\n Transport; Sun, 29 Oct 2023 16:34:03 +0000",
            "from mail.nvidia.com (216.228.117.160) by\n DS2PEPF00003448.mail.protection.outlook.com (10.167.17.75) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6933.15 via Frontend Transport; Sun, 29 Oct 2023 16:34:02 +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; Sun, 29 Oct\n 2023 09:33:55 -0700",
            "from nvidia.com (10.126.231.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; Sun, 29 Oct\n 2023 09:33:52 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=QjydXYnWmjfYCttp9U2TzrHZfWv19/EDLOH2M7DFhUpChcXYy0lHwHjsM9qCzSrsmYya+HKP2tu0NcbVoIs/IuByp4hef/oXCypgJUyBcKSfgDyY0dZJJ/3CdRZ8OcmuZC3nAmhppdN9Rp0KFY98/aP7UiyrtbIgaRenuqoda/yIQAHnsg72z3Gx3wuYgCpzhNmiV1yrvLLlaxhmwT4TslOg0MA0aqC9grKs886vRvCPtg40twu4zj08cYhrSo1bbr1+LMmlIieQ578kfkVFZKErC4Zvg5Fm9E3W6M88P4VFU68zNwNQ11piXHYHoHsgi8uOB5PhLivuuj5bzJ3bgg==",
        "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=lUyr6nBdU2CNAyEtgM35ZdkJk4cHgMxAu7pN2kHnjo8=;\n b=G3B2Yv1hE8LGR1FFeXXvHXo5BzvALfKh5prtwu+TUIhPIu5B/cQ6FrX5rWXNtsjCrN2CgzUwYh7xrZguL42f70b+G9b+ZLnfoB8l5byhauMOeM2kGr0Ia3UZjiQgKWR1fyHZ5CiD4u4st+Sa+XkbRto1pG0YrUd30i4RPUGFoKqKBn9xOkN0nhtzoFnRhbjywcQ93yC5+Wr7XpB9eJi6MyGW/drjQ30UcsdM6NB5WhhBYQXIGPEzi8MyD1Igp8Ub6WCchZtnbRwr3Jc0K2xLqgP2h8iY0Pw9EkN+QIVUIPYQlg1rKmZL9TXPORcGPwPMDjmREHDsSgGaticD5DZdVQ==",
        "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=lUyr6nBdU2CNAyEtgM35ZdkJk4cHgMxAu7pN2kHnjo8=;\n b=ga0SCUcDKWUIjAdQk4rLMYjty5JqgawB6wg172VrsKGsuYukfPxzYyWO7I9/al+2BJowyfivLDlHXSt8CRxcKly7EyS6zUSoy92pADmGDlH5E//IqdWiJRAW7ocYiJBZeRNd0H0y9uV8lqaOwzdwrxXMcr3Y+ScG5DXWV6rWcWk1/JlUoOKoF0OhoTfDwflSid/HaNnLdsoxBrxxQNVmn5GvrKHOf7yHcbkReledIK0F4zeifsUvJJUucpbOEgIcw2vD9dQvM1jNqKvrJGXFwvJMPFk9x4wSjL38AeXeA36Fv6TEtmNuwzixoAE1c3Xz3p2aJ3yRqmBXGPuTFWrwCg==",
        "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": "Gregory Etelson <getelson@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<getelson@nvidia.com>, <mkashani@nvidia.com>, <rasland@nvidia.com>,\n Rongwei Liu <rongweil@nvidia.com>, Erez Shitrit <erezsh@nvidia.com>, Ori Kam\n <orika@nvidia.com>, Matan Azrad <matan@nvidia.com>, Viacheslav Ovsiienko\n <viacheslavo@nvidia.com>, Suanming Mou <suanmingm@nvidia.com>",
        "Subject": "[PATCH 30/30] net/mlx5/hws: add stc reparse support for srv6 push pop",
        "Date": "Sun, 29 Oct 2023 18:32:02 +0200",
        "Message-ID": "<20231029163202.216450-30-getelson@nvidia.com>",
        "X-Mailer": "git-send-email 2.39.2",
        "In-Reply-To": "<20231029163202.216450-1-getelson@nvidia.com>",
        "References": "<20231029163202.216450-1-getelson@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.126.231.35]",
        "X-ClientProxiedBy": "rnnvmail203.nvidia.com (10.129.68.9) To\n rnnvmail201.nvidia.com (10.129.68.8)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "DS2PEPF00003448:EE_|DS0PR12MB8814:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "849e6a66-f347-47d5-accb-08dbd89cdc7b",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n Sav8sPUQltmQZlU4S8pJkxuYPHpMpkgRVcDb9/O5TSI8Ye0FzAf49AHBWk/bTEG/nnHgZh5da4rQA3D6cV+4OqobYe48nmu52h4m6R2pF1ciJ0RKfdlQ2dIe2nlpM4DoesKdELa7AF6OPRi1ucV2pnoYxcKmMDPtYz+iGfaSZKP8IlbPg/xgL2fqYlTlzR3ddmgpUUdKkvTJv2L8fimHOYOoJ+3nKF8Y3/rKC+5SqwV6fLF6c838chFbCOmADjDLwewj9hVOtw3uq59/ihRvKmufRN5RMXje6GCZZ1shv/vncW3NcEW0Racpv6s4UWrZMijegZxEM4cfWr+4Hr9X45iN+M+DKQ0XKeCnBeSqb7AcO/x31X1hChjulRy2J2Dj2BIUAjmN8VakLBlOs4SuP/2dmlwNodnCeMKJXqqXlvnpXoDLYDCwZnsa2PuZjH+KrQkuD6z0MjNAXQ/phxf3BS8HR4BgS1NIomdm+zDmrG3MDQxoMhB8YGhtloYm/lPtZ/yYe5K7Gizp6JrKG66R8IGJxb0QlF7Y9ozNDKC/Mktgph8bMo3DWhRz3gmlhoIis5I3pg7gyCuafNU9+Ftzd7RjuLhOynhWr3Ln8mY5zn2A5pyKFGodi6Lqf/AeYcRT42OWvUSrEnyYno+0vDaYbMF9RaxxcGvYELjZVa7bzHb/k+MGzyLX0voY2K5pZYpz8+bZEkB4ZHghIJ6PWi/l0u6Mp7tMVzXpEJMtdWNvU0yXjaypTKkt58ih48DgllvLCKPlUPqY4fkHzBpZNu0xXSGZMgQXIrdbeEQTQKmKGFQ=",
        "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)(346002)(136003)(396003)(376002)(230173577357003)(230922051799003)(230273577357003)(186009)(64100799003)(82310400011)(1800799009)(451199024)(46966006)(40470700004)(36840700001)(40460700003)(7696005)(55016003)(6666004)(83380400001)(426003)(336012)(82740400003)(86362001)(7636003)(356005)(47076005)(36756003)(36860700001)(107886003)(2616005)(1076003)(40480700001)(16526019)(6286002)(26005)(41300700001)(70586007)(70206006)(316002)(54906003)(6916009)(5660300002)(478600001)(8936002)(4326008)(8676002)(30864003)(2906002);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "29 Oct 2023 16:34:02.7241 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 849e6a66-f347-47d5-accb-08dbd89cdc7b",
        "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 DS2PEPF00003448.namprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DS0PR12MB8814",
        "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: Rongwei Liu <rongweil@nvidia.com>\n\nAfter 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": [
        "30/30"
    ]
}