get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 133706,
    "url": "http://patches.dpdk.org/api/patches/133706/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231101044419.732726-11-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-11-rongweil@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231101044419.732726-11-rongweil@nvidia.com",
    "date": "2023-11-01T04:44:16",
    "name": "[v4,10/13] net/mlx5/hws: add setter for IPv6 routing push remove",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "972b93a8a9127ea9e8897a396888e91b8d9550ca",
    "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-11-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/133706/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/133706/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 2834E43258;\n\tWed,  1 Nov 2023 05:46:12 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 7F68942DAC;\n\tWed,  1 Nov 2023 05:45:11 +0100 (CET)",
            "from NAM11-BN8-obe.outbound.protection.outlook.com\n (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41])\n by mails.dpdk.org (Postfix) with ESMTP id 10C4342D92\n for <dev@dpdk.org>; Wed,  1 Nov 2023 05:45:10 +0100 (CET)",
            "from CY5PR13CA0048.namprd13.prod.outlook.com (2603:10b6:930:11::35)\n by CY5PR12MB6646.namprd12.prod.outlook.com (2603:10b6:930:41::14)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.19; Wed, 1 Nov\n 2023 04:45:08 +0000",
            "from CY4PEPF0000E9CE.namprd03.prod.outlook.com\n (2603:10b6:930:11:cafe::11) by CY5PR13CA0048.outlook.office365.com\n (2603:10b6:930:11::35) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6954.18 via Frontend\n Transport; Wed, 1 Nov 2023 04:45:08 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n CY4PEPF0000E9CE.mail.protection.outlook.com (10.167.241.141) 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:45: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 21:45:02 -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:59 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Hi8DlWuizgq4/TXTSrFZKCr/s0XQjCLpY8e1u3l8dL3R1McDFEyGhE8AU89//NSzV4Nrndt0pGSELALIvQYRbj5CWYwtJBG7QFxYSQisgWv+qaMXETaoPdhkrtKueYJKoGmrt1Sj5z0k7ogYmE4p77xK9s/VdVGvQnXR45UrxvIiUvNOsHlZ0mmpbtvwqDAqRzS4OxXDCwTTayYYB9FWuGZIqq0HpzRt4NgAsBEVCWLeETNXUgmot1Ts10rQjcPEndEzhAXXRrh9Wo/0gfyT55BVcH29fS1H8Uc5POyiqaV1Jt9uRctwSiufHnTheaMKGmZj77g01Q0itapV6nnGyA==",
        "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=KSj7ZXssej0rx6URlJ3dGrSyKks4olGaQduBqNp+mFQ=;\n b=FetnlvTZ9GDQwE2/DyCwAUAJIoK1qmeJENYWmzXVjA8iYOotJzTFkfUQGOaF7AdNVUSu9WSU9lvWBZZmrS9YWTTgASb1pmm8ovYmTIUrI5w54eTk/3byU5IbaD7CN8bOhXE/GbvcsRDaAufTM8WvOmjliPGgTK9R8qTsUu4YYS6e0dUg/MgSalc8k8HteyHMGhFdc3Q53BkJZYfCth4Xr1Ji8wjICuBqDZX43oiCTE62ePaf4LIE0nK3PXKqEzwdd24BgRG4NNnsR/xjTfjxofLemIPEgs+HrTMrD/wVXhHRqsqQM1JGYOq4GcPmPWDE9Ab50Q+1crT3QQ0OFvjc/g==",
        "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=KSj7ZXssej0rx6URlJ3dGrSyKks4olGaQduBqNp+mFQ=;\n b=VEVLxo9OtdoSCBGqB0FXSE8I+f9jThKtngD4Lu7dPLnMfPVSy2lLRTNJZTdHeX31TulsmjIRd9LJrldZY1CgalshN0UY6b89XI9FncupkvzTj9SoNc1RCxSvMFgJXDCPVBLQMWWAWRB0zRjNHhNkNANuGzhJmNfb6dsZZISlHzJJ2SPultkjzNajD2zju2Trzt44YwN63ucyImolF3HRRTV550YvwQrJUPQLpz51pzLKOkWeAfyMmTlWRbUp/NnhJ7RzrfaOMEW6Fuv9tsx0KflCnddtpBPMiLuhikGokrMStVRHmuDTjHDSXo4VV8P8QS8CvEaQ2Qdovsr0Aa6OtQ==",
        "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": "Alex Vesker <valex@nvidia.com>",
        "Subject": "[PATCH v4 10/13] net/mlx5/hws: add setter for IPv6 routing push\n remove",
        "Date": "Wed, 1 Nov 2023 06:44:16 +0200",
        "Message-ID": "<20231101044419.732726-11-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": "CY4PEPF0000E9CE:EE_|CY5PR12MB6646:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "c27b52d6-7dc0-429c-d444-08dbda95532b",
        "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 q0c0DHy6Naeq7hLVCNYv4lXTFYq++2Fup4S+CyIujRJsFJ0FnDM226zaBwzhRd4AjYyndXbKOwoP9OHKXGPOZPoTUEDq5wT3DI1uVj9rTuXk01ROOOg3YbgnMYxMkwf7dwMzYJcSTmVsiHsAhCJ9t+Ryev8uFQPgJpfVAU4HN+6y5HXvAsiB6NjLMo8MuEFaUeh8xlLPNvokZyvZFqX4Qp2zjJ51aGbIXX50h9l4FnRcliq0qU14qYHWR99btbXpNyKMW3bjDxKsOdJKj0FCJRHcyfkrpFEVuGwWsFYcn+cyKe1dGyRQ3uY7dLwb/COqOd/HA00Ri0jultSAN8pwTMANJcqMKmWCPwGymUhfpRoeDnwwWpwFXAjqQYQrCdjATI8oPURvW6VAsxcyOP3agtfGO1dlM3Zh6ATuprwbmW95GWODqKYWOH8pMFMKb1K1ZbBKmulSGrd0cnecZYSrnbSnJw9cknQ2uoaE7ujNilWfYN3SdwOuP+WSFCJunQKkfFUiWaolvi8avfPEr0sf8QPCnlG1UCYqDiymE3GgAjJWT4XSwS036AIF+3+ntLUE6vbgeoZr5zIJPm0V6lvIKogL3SvqS7N9HU/x1XJ2srh2TvCbORyVM9Mas8bNe+FBhmQZWCHlN+Homul6KdEbL28+Je3zINGqtX0C0gBW7qE7IlnGJdLsYeAyYNQBfpn5gpw5KlGWiFRdz3djm5t1JwfMQJj87dezd/KQgZG4JlsLnsfblLarGS0/ko0PnAHk",
        "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)(39860400002)(346002)(376002)(396003)(136003)(230922051799003)(64100799003)(82310400011)(1800799009)(186009)(451199024)(36840700001)(40470700004)(46966006)(41300700001)(110136005)(5660300002)(70586007)(70206006)(316002)(8676002)(4326008)(8936002)(55016003)(40480700001)(40460700003)(86362001)(336012)(47076005)(82740400003)(7636003)(356005)(83380400001)(478600001)(2906002)(7696005)(6286002)(16526019)(26005)(1076003)(2616005)(36756003)(107886003)(426003)(36860700001)(6666004);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "01 Nov 2023 04:45:08.2014 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n c27b52d6-7dc0-429c-d444-08dbda95532b",
        "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 CY4PEPF0000E9CE.namprd03.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CY5PR12MB6646",
        "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": "The rte action will be translated to multiple dr_actions which need\ndifferent setters to program them.\n\nIn order to leverage the existing setter logic, there is a new callback\nintroduce which called fetch_opt with unique parameter.\n\nFor each setter, it may have different reparsing properties.\nSetter which requires no reparse can't share the same one with\nthe one has reparse enabled even if there is spare space.\n\nSigned-off-by: Rongwei Liu <rongweil@nvidia.com>\nReviewed-by: Alex Vesker <valex@nvidia.com>\nAcked-by: Ori Kam <orika@nvidia.com>\n---\n drivers/net/mlx5/hws/mlx5dr_action.c | 174 +++++++++++++++++++++++++++\n drivers/net/mlx5/hws/mlx5dr_action.h |   3 +-\n 2 files changed, 176 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/mlx5/hws/mlx5dr_action.c b/drivers/net/mlx5/hws/mlx5dr_action.c\nindex 16b7ee3436..719d546424 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_action.c\n+++ b/drivers/net/mlx5/hws/mlx5dr_action.c\n@@ -3007,6 +3007,121 @@ mlx5dr_action_setter_common_decap(struct mlx5dr_actions_apply_data *apply,\n \t\t\t\t\t\t\t    MLX5DR_CONTEXT_SHARED_STC_DECAP_L3));\n }\n \n+static void\n+mlx5dr_action_setter_ipv6_route_ext_gen_push_mhdr(uint8_t *data, void *mh_data)\n+{\n+\tuint8_t *action_ptr = mh_data;\n+\tuint32_t *ipv6_dst_addr;\n+\tuint8_t seg_left;\n+\tuint32_t i;\n+\n+\t/* Fetch the last IPv6 address in the segment list which is the next hop */\n+\tseg_left = MLX5_GET(header_ipv6_routing_ext, data, segments_left) - 1;\n+\tipv6_dst_addr = (uint32_t *)data + MLX5_ST_SZ_DW(header_ipv6_routing_ext)\n+\t\t\t+ seg_left * MLX5_ST_SZ_DW(definer_hl_ipv6_addr);\n+\n+\t/* Load next hop IPv6 address in reverse order to ipv6.dst_address */\n+\tfor (i = 0; i < MLX5_ST_SZ_DW(definer_hl_ipv6_addr); i++) {\n+\t\tMLX5_SET(set_action_in, action_ptr, data, be32toh(*ipv6_dst_addr++));\n+\t\taction_ptr += MLX5DR_MODIFY_ACTION_SIZE;\n+\t}\n+\n+\t/* Set ipv6_route_ext.next_hdr per user input */\n+\tMLX5_SET(set_action_in, action_ptr, data, *data);\n+}\n+\n+static void\n+mlx5dr_action_setter_ipv6_route_ext_mhdr(struct mlx5dr_actions_apply_data *apply,\n+\t\t\t\t\t struct mlx5dr_actions_wqe_setter *setter)\n+{\n+\tstruct mlx5dr_rule_action *rule_action = apply->rule_action;\n+\tstruct mlx5dr_actions_wqe_setter tmp_setter = {0};\n+\tstruct mlx5dr_rule_action tmp_rule_action;\n+\t__be64 cmd[MLX5_SRV6_SAMPLE_NUM] = {0};\n+\tstruct mlx5dr_action *ipv6_ext_action;\n+\tuint8_t *header;\n+\n+\theader = rule_action[setter->idx_double].ipv6_ext.header;\n+\tipv6_ext_action = rule_action[setter->idx_double].action;\n+\ttmp_rule_action.action = ipv6_ext_action->ipv6_route_ext.action[setter->extra_data];\n+\n+\tif (tmp_rule_action.action->flags & MLX5DR_ACTION_FLAG_SHARED) {\n+\t\ttmp_rule_action.modify_header.offset = 0;\n+\t\ttmp_rule_action.modify_header.pattern_idx = 0;\n+\t\ttmp_rule_action.modify_header.data = NULL;\n+\t} else {\n+\t\t/*\n+\t\t * Copy ipv6_dst from ipv6_route_ext.last_seg.\n+\t\t * Set ipv6_route_ext.next_hdr.\n+\t\t */\n+\t\tmlx5dr_action_setter_ipv6_route_ext_gen_push_mhdr(header, cmd);\n+\t\ttmp_rule_action.modify_header.data = (uint8_t *)cmd;\n+\t\ttmp_rule_action.modify_header.pattern_idx = 0;\n+\t\ttmp_rule_action.modify_header.offset =\n+\t\t\trule_action[setter->idx_double].ipv6_ext.offset;\n+\t}\n+\n+\tapply->rule_action = &tmp_rule_action;\n+\n+\t/* Reuse regular */\n+\tmlx5dr_action_setter_modify_header(apply, &tmp_setter);\n+\n+\t/* Swap rule actions from backup */\n+\tapply->rule_action = rule_action;\n+}\n+\n+static void\n+mlx5dr_action_setter_ipv6_route_ext_insert_ptr(struct mlx5dr_actions_apply_data *apply,\n+\t\t\t\t\t       struct mlx5dr_actions_wqe_setter *setter)\n+{\n+\tstruct mlx5dr_rule_action *rule_action = apply->rule_action;\n+\tstruct mlx5dr_actions_wqe_setter tmp_setter = {0};\n+\tstruct mlx5dr_rule_action tmp_rule_action;\n+\tstruct mlx5dr_action *ipv6_ext_action;\n+\tuint8_t header[MLX5_PUSH_MAX_LEN];\n+\n+\tipv6_ext_action = rule_action[setter->idx_double].action;\n+\ttmp_rule_action.action = ipv6_ext_action->ipv6_route_ext.action[setter->extra_data];\n+\n+\tif (tmp_rule_action.action->flags & MLX5DR_ACTION_FLAG_SHARED) {\n+\t\ttmp_rule_action.reformat.offset = 0;\n+\t\ttmp_rule_action.reformat.hdr_idx = 0;\n+\t\ttmp_rule_action.reformat.data = NULL;\n+\t} else {\n+\t\tmemcpy(header, rule_action[setter->idx_double].ipv6_ext.header,\n+\t\t       tmp_rule_action.action->reformat.header_size);\n+\t\t/* Clear ipv6_route_ext.next_hdr for right checksum */\n+\t\tMLX5_SET(header_ipv6_routing_ext, header, next_hdr, 0);\n+\t\ttmp_rule_action.reformat.data = header;\n+\t\ttmp_rule_action.reformat.hdr_idx = 0;\n+\t\ttmp_rule_action.reformat.offset =\n+\t\t\trule_action[setter->idx_double].ipv6_ext.offset;\n+\t}\n+\n+\tapply->rule_action = &tmp_rule_action;\n+\n+\t/* Reuse regular */\n+\tmlx5dr_action_setter_insert_ptr(apply, &tmp_setter);\n+\n+\t/* Swap rule actions from backup */\n+\tapply->rule_action = rule_action;\n+}\n+\n+static void\n+mlx5dr_action_setter_ipv6_route_ext_pop(struct mlx5dr_actions_apply_data *apply,\n+\t\t\t\t\tstruct mlx5dr_actions_wqe_setter *setter)\n+{\n+\tstruct mlx5dr_rule_action *rule_action = &apply->rule_action[setter->idx_single];\n+\tuint8_t idx = MLX5DR_ACTION_IPV6_EXT_MAX_SA - 1;\n+\tstruct mlx5dr_action *action;\n+\n+\t/* Pop the ipv6_route_ext as set_single logic */\n+\taction = rule_action->action->ipv6_route_ext.action[idx];\n+\tapply->wqe_data[MLX5DR_ACTION_OFFSET_DW5] = 0;\n+\tapply->wqe_ctrl->stc_ix[MLX5DR_ACTION_STC_IDX_DW5] =\n+\t\thtobe32(action->stc[apply->tbl_type].offset);\n+}\n+\n int mlx5dr_action_template_process(struct mlx5dr_action_template *at)\n {\n \tstruct mlx5dr_actions_wqe_setter *start_setter = at->setters + 1;\n@@ -3070,6 +3185,65 @@ 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_POP_IPV6_ROUTE_EXT:\n+\t\t\t/*\n+\t\t\t * Backup ipv6_route_ext.next_hdr to ipv6_route_ext.seg_left.\n+\t\t\t * Set ipv6_route_ext.next_hdr to 0 for checksum bug.\n+\t\t\t */\n+\t\t\tsetter = mlx5dr_action_setter_find_first(last_setter, ASF_DOUBLE | ASF_REMOVE);\n+\t\t\tsetter->flags |= ASF_DOUBLE | ASF_MODIFY;\n+\t\t\tsetter->set_double = &mlx5dr_action_setter_ipv6_route_ext_mhdr;\n+\t\t\tsetter->idx_double = i;\n+\t\t\tsetter->extra_data = 0;\n+\t\t\tsetter++;\n+\n+\t\t\t/*\n+\t\t\t * Restore ipv6_route_ext.next_hdr from ipv6_route_ext.seg_left.\n+\t\t\t * Load the final destination address from flex parser sample 1->4.\n+\t\t\t */\n+\t\t\tsetter->flags |= ASF_DOUBLE | ASF_MODIFY;\n+\t\t\tsetter->set_double = &mlx5dr_action_setter_ipv6_route_ext_mhdr;\n+\t\t\tsetter->idx_double = i;\n+\t\t\tsetter->extra_data = 1;\n+\t\t\tsetter++;\n+\n+\t\t\t/* Set the ipv6.protocol per ipv6_route_ext.next_hdr */\n+\t\t\tsetter->flags |= ASF_DOUBLE | ASF_MODIFY;\n+\t\t\tsetter->set_double = &mlx5dr_action_setter_ipv6_route_ext_mhdr;\n+\t\t\tsetter->idx_double = i;\n+\t\t\tsetter->extra_data = 2;\n+\t\t\t/* Pop ipv6_route_ext */\n+\t\t\tsetter->flags |= ASF_SINGLE1 | ASF_REMOVE;\n+\t\t\tsetter->set_single = &mlx5dr_action_setter_ipv6_route_ext_pop;\n+\t\t\tsetter->idx_single = i;\n+\t\t\tbreak;\n+\n+\t\tcase MLX5DR_ACTION_TYP_PUSH_IPV6_ROUTE_EXT:\n+\t\t\t/* Insert ipv6_route_ext with next_hdr as 0 due to checksum bug */\n+\t\t\tsetter = mlx5dr_action_setter_find_first(last_setter, ASF_DOUBLE | ASF_REMOVE);\n+\t\t\tsetter->flags |= ASF_DOUBLE | ASF_INSERT;\n+\t\t\tsetter->set_double = &mlx5dr_action_setter_ipv6_route_ext_insert_ptr;\n+\t\t\tsetter->idx_double = i;\n+\t\t\tsetter->extra_data = 0;\n+\t\t\tsetter++;\n+\n+\t\t\t/* Set ipv6.protocol as IPPROTO_ROUTING: 0x2b */\n+\t\t\tsetter->flags |= ASF_DOUBLE | ASF_MODIFY;\n+\t\t\tsetter->set_double = &mlx5dr_action_setter_ipv6_route_ext_mhdr;\n+\t\t\tsetter->idx_double = i;\n+\t\t\tsetter->extra_data = 1;\n+\t\t\tsetter++;\n+\n+\t\t\t/*\n+\t\t\t * Load the right ipv6_route_ext.next_hdr per user input buffer.\n+\t\t\t * Load the next dest_addr from the ipv6_route_ext.seg_list[last].\n+\t\t\t */\n+\t\t\tsetter->flags |= ASF_DOUBLE | ASF_MODIFY;\n+\t\t\tsetter->set_double = &mlx5dr_action_setter_ipv6_route_ext_mhdr;\n+\t\t\tsetter->idx_double = i;\n+\t\t\tsetter->extra_data = 2;\n+\t\t\tbreak;\n+\n \t\tcase MLX5DR_ACTION_TYP_MODIFY_HDR:\n \t\t\t/* Double modify header list */\n \t\t\tsetter = mlx5dr_action_setter_find_first(last_setter, ASF_DOUBLE | ASF_REMOVE);\ndiff --git a/drivers/net/mlx5/hws/mlx5dr_action.h b/drivers/net/mlx5/hws/mlx5dr_action.h\nindex 5f6eadb76f..c12d4308c7 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_action.h\n+++ b/drivers/net/mlx5/hws/mlx5dr_action.h\n@@ -6,7 +6,7 @@\n #define MLX5DR_ACTION_H_\n \n /* Max number of STEs needed for a rule (including match) */\n-#define MLX5DR_ACTION_MAX_STE 10\n+#define MLX5DR_ACTION_MAX_STE 20\n \n /* Max number of internal subactions of ipv6_ext */\n #define MLX5DR_ACTION_IPV6_EXT_MAX_SA 4\n@@ -104,6 +104,7 @@ struct mlx5dr_actions_wqe_setter {\n \tuint8_t idx_ctr;\n \tuint8_t idx_hit;\n \tuint8_t flags;\n+\tuint8_t extra_data;\n };\n \n struct mlx5dr_action_template {\n",
    "prefixes": [
        "v4",
        "10/13"
    ]
}