get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 126306,
    "url": "https://patches.dpdk.org/api/patches/126306/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20230420092145.522389-3-michaelba@nvidia.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20230420092145.522389-3-michaelba@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230420092145.522389-3-michaelba@nvidia.com",
    "date": "2023-04-20T09:21:45",
    "name": "[RFC,2/2] ethdev: add MPLS header modification support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "e7696676d897e6295dbe2993c011a60b54c5ed80",
    "submitter": {
        "id": 1949,
        "url": "https://patches.dpdk.org/api/people/1949/?format=api",
        "name": "Michael Baum",
        "email": "michaelba@nvidia.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20230420092145.522389-3-michaelba@nvidia.com/mbox/",
    "series": [
        {
            "id": 27795,
            "url": "https://patches.dpdk.org/api/series/27795/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=27795",
            "date": "2023-04-20T09:21:43",
            "name": "ethdev: extend modify field API",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/27795/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/126306/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/126306/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 A68D342995;\n\tThu, 20 Apr 2023 11:22:22 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 0B08B42D0C;\n\tThu, 20 Apr 2023 11:22:12 +0200 (CEST)",
            "from NAM11-DM6-obe.outbound.protection.outlook.com\n (mail-dm6nam11on2062.outbound.protection.outlook.com [40.107.223.62])\n by mails.dpdk.org (Postfix) with ESMTP id 02DFD41156\n for <dev@dpdk.org>; Thu, 20 Apr 2023 11:22:09 +0200 (CEST)",
            "from BN9PR03CA0730.namprd03.prod.outlook.com (2603:10b6:408:110::15)\n by DM4PR12MB5182.namprd12.prod.outlook.com (2603:10b6:5:395::24) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22; Thu, 20 Apr\n 2023 09:22:07 +0000",
            "from BN8NAM11FT043.eop-nam11.prod.protection.outlook.com\n (2603:10b6:408:110:cafe::cc) by BN9PR03CA0730.outlook.office365.com\n (2603:10b6:408:110::15) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.22 via Frontend\n Transport; Thu, 20 Apr 2023 09:22:06 +0000",
            "from mail.nvidia.com (216.228.117.161) by\n BN8NAM11FT043.mail.protection.outlook.com (10.13.177.218) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.6319.23 via Frontend Transport; Thu, 20 Apr 2023 09:22:06 +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.5; Thu, 20 Apr 2023\n 02:21:56 -0700",
            "from rnnvmail204.nvidia.com (10.129.68.6) 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.37; Thu, 20 Apr\n 2023 02:21:56 -0700",
            "from nvidia.com (10.127.8.13) by mail.nvidia.com (10.129.68.6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.986.37 via Frontend\n Transport; Thu, 20 Apr 2023 02:21:54 -0700"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=ZyGVPwGwnMelLVgFlsIxOm5I6YMPhsxGild0PZcjqI57q/mcj7YAKHM8OeRI+FQ1Cq/naeANYZ/soIX/ygn1wD+MQm4LB2PpIeaiQr+SHWUNMHCiA4iBFxTF+DZc39MeBZds9vaHJCTdxyPt0sOUOsJyJ9lwJn8JnRze95IlLG+kc8iTPJxICRmDrefS/hei5Swsr1303nGykkQez7nch2dxY4KLUezIxVPjYD65p9NHYpdXxg+Ig7ipx7Dtnwv+GWdbtB7GAh3kFeyOC14Ib9RLG5euWxOaOTyIaGLo2TS8jvFu/bMqN97LfV77VCJZphXzRPQtfjl+9RxO06r08A==",
        "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=dGrHoXNX7hGyhPSGfNAiNoCH5VtK4QyhERdoAf9Ylrw=;\n b=M1AsBhYNzY51I3o/4l9DPV0Sncc51oLtkuf+QlFXO4FGEi/UZK5badi1arSZpXoTEOnCQNWuwaZV4p9VPLfo4uK6oWIlNi4BQ0HqexJLEefji/K7fbyqEl4p3dJ8E4EM0nVGe6V9S4a0t3hkU02v8R2SCty5UlhwFfTxPFgxXhPDMzoO8u2gSP/qsYzNRa6W6j4kXVI2W8+USAwR1rnF/vi8GWPorqFcgI3mrXhYzIZOfmecChRX/W0qQhw2oNR0sox2fGGblzJprbFte1srisyB5i6BTH5Q12rD85XmOx917hfPdupz+oiFRbfDKwmT/FK7cvmlgNwSHobaM6nuFw==",
        "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",
        "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=dGrHoXNX7hGyhPSGfNAiNoCH5VtK4QyhERdoAf9Ylrw=;\n b=Sk2Aysb2emlvUsDSeQkiFQ9mDhCmwqA/UaArLkKf55e/0+Qnd9lbCAgDHuSjv488QVyDFq1L7jRgFL7dB4ocVLPgZMvDVpEwVb4D60gMHeF9b014R9lRhctNRoqX39rPJI0Yp2TJhj0h1QncEMUnUuu0OUq4F4aPfLj1IlHsusMhZT5sWB6OWHSaHh8p39wApxEgzl3qheFXX7WUmulIk/BiMYzUoUokSAfJg35EXZxsAHERspoY+IRAPUAcZFTUGSd/Mza4cGDTch2+A/N7BxfHgcsJXqyu9KYxhupd4Ne3GLqbmdxd5poLiH6RgTY7HLqH+hb9un3yAiFb3mjESQ==",
        "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": "Michael Baum <michaelba@nvidia.com>",
        "To": "<dev@dpdk.org>",
        "CC": "Ori Kam <orika@nvidia.com>, Aman Singh <aman.deep.singh@intel.com>,\n \"Yuying Zhang\" <yuying.zhang@intel.com>, Ferruh Yigit <ferruh.yigit@amd.com>,\n \"Thomas Monjalon\" <thomas@monjalon.net>",
        "Subject": "[RFC 2/2] ethdev: add MPLS header modification support",
        "Date": "Thu, 20 Apr 2023 12:21:45 +0300",
        "Message-ID": "<20230420092145.522389-3-michaelba@nvidia.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20230420092145.522389-1-michaelba@nvidia.com>",
        "References": "<20230420092145.522389-1-michaelba@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "BN8NAM11FT043:EE_|DM4PR12MB5182:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "b1be31ac-7c50-4d8e-f929-08db4180b5fb",
        "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 Di+r3bs+grZ4K4XQGkVWBQv9ZPmoRYimskfgPa8vPAktrdk7UmQLHvMPhUlSEZLtDHjEZTeW+o2OaT4xovg+f3/HFtCK566prSqq/Dd45yIFX1h6FXcW2Wp3XokdEfI4n+rd+trBTP0aJ+h1EGeQ+TiR8VxXHrem0rptKBXT4h9+3OZ1uOGFi2X8F/Ps4iGSCAa2YIf+aZawJ7SsDUtdRP8Ac3+/aS5uDAW7Pi2BEr8hZEhiB+pV/DcRFDli30gj5PBzWu39o95/HPoXfsGMFF3ZuHyOilzSfQgT9yJ3/9b9sUj04fvz+5GF3T+W4KE+R48h9kx5XEgMycIiTO5UhrTfxBPILP0oVsV6H/ZODvqA3IsE2FaWIeOvzVCJVAUoyqf8sqrQ7S21kfRQVD2Vu5pg+n5rnn4/faROPz1/u5EgFK0d/C13Q9GWf+9cDpV2MpI7AHKiJxROdUVuL1/D8w7LNukl2SsyeDyePahJNvTtRNWGr8hM5MyYlws3zDWwHBDowoxDMY09Z0ibSazNxrAudWk/eBSXrSf9N3Em7pvonkSvuUFNp6LFeYZ0RQoUvgbhXOu8vEMmSD3NrMa0YInVxHy79g8XFhYyhvR57idlAK93PCIIo8+124smxg7Lch2C5eOSUP37jZUcYU6MTJkBnIcyfMremzH659zC3DNEN+3i2BN1Vdbb1zzHoiJeAvdlauAocm4yhqxOj0B1HdCaCbj0PBV8+L2T5an+vzBT9MwlIVDeaCqH7GQ9xL2jH5mDQgxwwEl40NiZpQFwMJh9Rkw7oSsIvGP0fvp/cOMbiuUQeOWl9t/4nA1pmzuH",
        "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:(13230028)(4636009)(39860400002)(396003)(376002)(346002)(136003)(451199021)(36840700001)(46966006)(40470700004)(82310400005)(36756003)(55016003)(40480700001)(40460700003)(478600001)(54906003)(34020700004)(7696005)(6666004)(7636003)(356005)(41300700001)(8936002)(8676002)(70206006)(70586007)(316002)(82740400003)(4326008)(6916009)(36860700001)(2616005)(83380400001)(47076005)(336012)(426003)(186003)(6286002)(1076003)(26005)(86362001)(2906002)(5660300002)(21314003);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "20 Apr 2023 09:22:06.5834 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n b1be31ac-7c50-4d8e-f929-08db4180b5fb",
        "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 BN8NAM11FT043.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM4PR12MB5182",
        "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": "Add support for MPLS modify header using \"RTE_FLOW_FIELD_MPLS\" id.\n\nSince MPLS heaser might appear more the one time in inner/outer/tunnel,\na new field was added to \"rte_flow_action_modify_data\" structure in\naddition to \"level\" field.\nThe \"sub_level\" field is the index of the header inside encapsulation\nlevel. It is used for modify multiple MPLS headers in same encapsulation\nlevel.\n\nThis addition enables to modify multiple VLAN headers too, so the\ndescription of \"RTE_FLOW_FIELD_VLAN_XXXX\" was updated.\n\nSigned-off-by: Michael Baum <michaelba@nvidia.com>\n---\n app/test-pmd/cmdline_flow.c        | 24 ++++++++++++++-\n doc/guides/prog_guide/rte_flow.rst |  6 ++++\n lib/ethdev/rte_flow.h              | 47 ++++++++++++++++++++----------\n 3 files changed, 61 insertions(+), 16 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex db8bd30cb1..ffeedefc35 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -636,6 +636,7 @@ enum index {\n \tACTION_MODIFY_FIELD_DST_TYPE_VALUE,\n \tACTION_MODIFY_FIELD_DST_LEVEL,\n \tACTION_MODIFY_FIELD_DST_LEVEL_VALUE,\n+\tACTION_MODIFY_FIELD_DST_SUB_LEVEL,\n \tACTION_MODIFY_FIELD_DST_TYPE_ID,\n \tACTION_MODIFY_FIELD_DST_CLASS_ID,\n \tACTION_MODIFY_FIELD_DST_OFFSET,\n@@ -643,6 +644,7 @@ enum index {\n \tACTION_MODIFY_FIELD_SRC_TYPE_VALUE,\n \tACTION_MODIFY_FIELD_SRC_LEVEL,\n \tACTION_MODIFY_FIELD_SRC_LEVEL_VALUE,\n+\tACTION_MODIFY_FIELD_SRC_SUB_LEVEL,\n \tACTION_MODIFY_FIELD_SRC_TYPE_ID,\n \tACTION_MODIFY_FIELD_SRC_CLASS_ID,\n \tACTION_MODIFY_FIELD_SRC_OFFSET,\n@@ -859,7 +861,7 @@ static const char *const modify_field_ids[] = {\n \t\"ipv6_proto\",\n \t\"flex_item\",\n \t\"hash_result\",\n-\t\"geneve_opt_type\", \"geneve_opt_class\", \"geneve_opt_data\", NULL\n+\t\"geneve_opt_type\", \"geneve_opt_class\", \"geneve_opt_data\", \"mpls\", NULL\n };\n \n static const char *const meter_colors[] = {\n@@ -2300,6 +2302,7 @@ static const enum index next_action_sample[] = {\n \n static const enum index action_modify_field_dst[] = {\n \tACTION_MODIFY_FIELD_DST_LEVEL,\n+\tACTION_MODIFY_FIELD_DST_SUB_LEVEL,\n \tACTION_MODIFY_FIELD_DST_TYPE_ID,\n \tACTION_MODIFY_FIELD_DST_CLASS_ID,\n \tACTION_MODIFY_FIELD_DST_OFFSET,\n@@ -2309,6 +2312,7 @@ static const enum index action_modify_field_dst[] = {\n \n static const enum index action_modify_field_src[] = {\n \tACTION_MODIFY_FIELD_SRC_LEVEL,\n+\tACTION_MODIFY_FIELD_SRC_SUB_LEVEL,\n \tACTION_MODIFY_FIELD_SRC_TYPE_ID,\n \tACTION_MODIFY_FIELD_SRC_CLASS_ID,\n \tACTION_MODIFY_FIELD_SRC_OFFSET,\n@@ -6397,6 +6401,15 @@ static const struct token token_list[] = {\n \t\t.call = parse_vc_modify_field_level,\n \t\t.comp = comp_none,\n \t},\n+\t[ACTION_MODIFY_FIELD_DST_SUB_LEVEL] = {\n+\t\t.name = \"dst_sub_level\",\n+\t\t.help = \"destination field sub level\",\n+\t\t.next = NEXT(action_modify_field_dst,\n+\t\t\t     NEXT_ENTRY(COMMON_UNSIGNED)),\n+\t\t.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,\n+\t\t\t\t\tdst.sub_level)),\n+\t\t.call = parse_vc_conf,\n+\t},\n \t[ACTION_MODIFY_FIELD_DST_TYPE_ID] = {\n \t\t.name = \"dst_type_id\",\n \t\t.help = \"destination field type ID\",\n@@ -6450,6 +6463,15 @@ static const struct token token_list[] = {\n \t\t.call = parse_vc_modify_field_level,\n \t\t.comp = comp_none,\n \t},\n+\t[ACTION_MODIFY_FIELD_SRC_SUB_LEVEL] = {\n+\t\t.name = \"stc_sub_level\",\n+\t\t.help = \"source field sub level\",\n+\t\t.next = NEXT(action_modify_field_src,\n+\t\t\t     NEXT_ENTRY(COMMON_UNSIGNED)),\n+\t\t.args = ARGS(ARGS_ENTRY(struct rte_flow_action_modify_field,\n+\t\t\t\t\tsrc.sub_level)),\n+\t\t.call = parse_vc_conf,\n+\t},\n \t[ACTION_MODIFY_FIELD_SRC_TYPE_ID] = {\n \t\t.name = \"src_type_id\",\n \t\t.help = \"source field type ID\",\ndiff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst\nindex dc86e040ec..b5d8ce26c5 100644\n--- a/doc/guides/prog_guide/rte_flow.rst\n+++ b/doc/guides/prog_guide/rte_flow.rst\n@@ -2939,6 +2939,10 @@ as well as any tag element in the tag array:\n For the tag array (in case of multiple tags are supported and present)\n ``level`` translates directly into the array index.\n \n+- ``sub_level`` is the index of the header inside encapsulation level.\n+  It is used for modify either ``VLAN`` or ``MPLS`` headers which multiple of\n+  them might be supported in same encapsulation level.\n+\n ``type`` is used to specify (along with ``class_id``) the Geneve option which\n is being modified.\n This field is relevant only for ``RTE_FLOW_FIELD_GENEVE_OPT_XXXX`` type.\n@@ -3004,6 +3008,8 @@ value as sequence of bytes {xxx, xxx, 0x85, xxx, xxx, xxx}.\n    +-----------------+----------------------------------------------------------+\n    | ``level``       | encapsulation level of a packet field or tag array index |\n    +-----------------+----------------------------------------------------------+\n+   | ``sub_level``   | header level inside encapsulation level                  |\n+   +-----------------+----------------------------------------------------------+\n    | ``type``        | geneve option type                                       |\n    +-----------------+----------------------------------------------------------+\n    | ``class_id``    | geneve option class ID                                   |\ndiff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h\nindex b82eb0c0a8..4b2e17e266 100644\n--- a/lib/ethdev/rte_flow.h\n+++ b/lib/ethdev/rte_flow.h\n@@ -3740,8 +3740,8 @@ enum rte_flow_field_id {\n \tRTE_FLOW_FIELD_START = 0,\t/**< Start of a packet. */\n \tRTE_FLOW_FIELD_MAC_DST,\t\t/**< Destination MAC Address. */\n \tRTE_FLOW_FIELD_MAC_SRC,\t\t/**< Source MAC Address. */\n-\tRTE_FLOW_FIELD_VLAN_TYPE,\t/**< 802.1Q Tag Identifier. */\n-\tRTE_FLOW_FIELD_VLAN_ID,\t\t/**< 802.1Q VLAN Identifier. */\n+\tRTE_FLOW_FIELD_VLAN_TYPE,\t/**< VLAN Tag Identifier. */\n+\tRTE_FLOW_FIELD_VLAN_ID,\t\t/**< VLAN Identifier. */\n \tRTE_FLOW_FIELD_MAC_TYPE,\t/**< EtherType. */\n \tRTE_FLOW_FIELD_IPV4_DSCP,\t/**< IPv4 DSCP. */\n \tRTE_FLOW_FIELD_IPV4_TTL,\t/**< IPv4 Time To Live. */\n@@ -3775,7 +3775,8 @@ enum rte_flow_field_id {\n \tRTE_FLOW_FIELD_HASH_RESULT,\t/**< Hash result. */\n \tRTE_FLOW_FIELD_GENEVE_OPT_TYPE,\t/**< GENEVE option type */\n \tRTE_FLOW_FIELD_GENEVE_OPT_CLASS,/**< GENEVE option class */\n-\tRTE_FLOW_FIELD_GENEVE_OPT_DATA\t/**< GENEVE option data */\n+\tRTE_FLOW_FIELD_GENEVE_OPT_DATA,\t/**< GENEVE option data */\n+\tRTE_FLOW_FIELD_MPLS\t\t/**< MPLS header. */\n };\n \n /**\n@@ -3821,22 +3822,38 @@ struct rte_flow_action_modify_data {\n \t\t\t\t\t * Values other than @p 0 are not\n \t\t\t\t\t * necessarily supported.\n \t\t\t\t\t *\n+\t\t\t\t\t * @note that for MPLS field,\n+\t\t\t\t\t * encapsulation level also include\n+\t\t\t\t\t * tunnel since MPLS may appear in\n+\t\t\t\t\t * outer, inner or tunnel.\n+\t\t\t\t\t *\n \t\t\t\t\t * For RTE_FLOW_FIELD_TAG it represents\n \t\t\t\t\t * the tag element in the tag array.\n \t\t\t\t\t */\n \t\t\t\t\tuint8_t level;\n-\t\t\t\t\t/**\n-\t\t\t\t\t * Geneve option type. relevant only\n-\t\t\t\t\t * for RTE_FLOW_FIELD_GENEVE_OPT_XXXX\n-\t\t\t\t\t * modification type.\n-\t\t\t\t\t */\n-\t\t\t\t\tuint8_t type;\n-\t\t\t\t\t/**\n-\t\t\t\t\t * Geneve option class. relevant only\n-\t\t\t\t\t * for RTE_FLOW_FIELD_GENEVE_OPT_XXXX\n-\t\t\t\t\t * modification type.\n-\t\t\t\t\t */\n-\t\t\t\t\trte_be16_t class_id;\n+\t\t\t\t\tunion {\n+\t\t\t\t\t\t/**\n+\t\t\t\t\t\t * Header level inside\n+\t\t\t\t\t\t * encapsulation level.\n+\t\t\t\t\t\t */\n+\t\t\t\t\t\tuint8_t sub_level;\n+\t\t\t\t\t\t/**\n+\t\t\t\t\t\t * Geneve option identifier.\n+\t\t\t\t\t\t * relevant only for\n+\t\t\t\t\t\t * RTE_FLOW_FIELD_GENEVE_OPT_XXXX\n+\t\t\t\t\t\t * modification type.\n+\t\t\t\t\t\t */\n+\t\t\t\t\t\tstruct {\n+\t\t\t\t\t\t\t/**\n+\t\t\t\t\t\t\t * Geneve option type.\n+\t\t\t\t\t\t\t */\n+\t\t\t\t\t\t\tuint8_t type;\n+\t\t\t\t\t\t\t/**\n+\t\t\t\t\t\t\t * Geneve option class.\n+\t\t\t\t\t\t\t */\n+\t\t\t\t\t\t\trte_be16_t class_id;\n+\t\t\t\t\t\t};\n+\t\t\t\t\t};\n \t\t\t\t};\n \t\t\t\tstruct rte_flow_item_flex_handle *flex_handle;\n \t\t\t};\n",
    "prefixes": [
        "RFC",
        "2/2"
    ]
}