get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 122946,
    "url": "https://patches.dpdk.org/api/patches/122946/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20230202124500.2578857-5-ferruh.yigit@amd.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": "<20230202124500.2578857-5-ferruh.yigit@amd.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230202124500.2578857-5-ferruh.yigit@amd.com",
    "date": "2023-02-02T12:44:56",
    "name": "[v6,4/8] ethdev: use GRE protocol struct for flow matching",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "8c0b3ebee3e0e0759b3a4fc47f96e91ebde4acff",
    "submitter": {
        "id": 2700,
        "url": "https://patches.dpdk.org/api/people/2700/?format=api",
        "name": "Ferruh Yigit",
        "email": "ferruh.yigit@amd.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/20230202124500.2578857-5-ferruh.yigit@amd.com/mbox/",
    "series": [
        {
            "id": 26760,
            "url": "https://patches.dpdk.org/api/series/26760/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=26760",
            "date": "2023-02-02T12:44:52",
            "name": "start cleanup of rte_flow_item_*",
            "version": 6,
            "mbox": "https://patches.dpdk.org/series/26760/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/122946/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/122946/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 7751A41BAE;\n\tThu,  2 Feb 2023 13:45:55 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id A718F42F92;\n\tThu,  2 Feb 2023 13:45:38 +0100 (CET)",
            "from NAM11-CO1-obe.outbound.protection.outlook.com\n (mail-co1nam11on2078.outbound.protection.outlook.com [40.107.220.78])\n by mails.dpdk.org (Postfix) with ESMTP id 9E2CA42FAE\n for <dev@dpdk.org>; Thu,  2 Feb 2023 13:45:36 +0100 (CET)",
            "from MW4PR03CA0336.namprd03.prod.outlook.com (2603:10b6:303:dc::11)\n by IA1PR12MB6409.namprd12.prod.outlook.com (2603:10b6:208:38b::7)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.27; Thu, 2 Feb\n 2023 12:45:32 +0000",
            "from CO1NAM11FT038.eop-nam11.prod.protection.outlook.com\n (2603:10b6:303:dc:cafe::34) by MW4PR03CA0336.outlook.office365.com\n (2603:10b6:303:dc::11) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.25 via Frontend\n Transport; Thu, 2 Feb 2023 12:45:32 +0000",
            "from SATLEXMB04.amd.com (165.204.84.17) by\n CO1NAM11FT038.mail.protection.outlook.com (10.13.174.231) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.20.6064.27 via Frontend Transport; Thu, 2 Feb 2023 12:45:31 +0000",
            "from telcodpdk.amd.com (10.180.168.240) by SATLEXMB04.amd.com\n (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.34; Thu, 2 Feb\n 2023 06:45:28 -0600"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=JeMyPJhaRO9sm7QhjOHf72RMWrQLMpPri19Q865t9yP/aJ8NmHunm5w/6xMFwrFsvAwp998q7VKz2kI2iL2WPLkrvXpczNyHcZINAxNuMckM+lHKoLT0yfaFAi/L1h9Kq6WLpgqntXfusmULWl+uj6NggCuF8rmaIYYuaR2+NMbwqgDIlUVFAwqNB/mnVYe2nRReqjLUvRQe/m1xMDon7qi3LrAcl/3ycxQft9/4aeS9F60YScShTQ0oSSSEuH1CnlQft7CbZO0drHLJH8NeWloITbzF3wLZzL3I2d5XHDsJM2FEejLyctA5D3QHpP45oT4FDjAaQNTg0KNvhy2kqQ==",
        "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=tLSIGzuDHWAhqHWzYL8k+l2NOmUIBUx2PMg9iiEQgHA=;\n b=Sw/qX0TRu1DO1ovNRnbchOR7ZmUv8Wt0ZMm+/4STWHKHXyBQDVWzZGHLWaNTRn22UyzG8t/Q58nHDm0Cpkwn3A6G+ScCcOtA0hDqW3gqA0heVRqaP96MLAR3B42TE3DFUQoD3sS8CLIBjz/4pRNH9esZxx1bkQWhS+56Wsg+l6tG/bpke7mFAnKNA7IX0Bj2fvXyxuh8ANKYkGXtPk5MV5lkEmX70AW7Y0Qnt8W594ZzuEEEF26xpjYPfBmjRKhQAnkk7mfSeGF9SOD7lsj7ki9FkOdc2kFEJ6Aqa5fuMcP21Ijb2HvGMO+MlTSuchXz9ASgU/duPwK2nc3SDKeZJA==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=monjalon.net smtp.mailfrom=amd.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=amd.com; dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=tLSIGzuDHWAhqHWzYL8k+l2NOmUIBUx2PMg9iiEQgHA=;\n b=06o6xNtS+n4K1xYmWbOcx3DXIWdtNLf345vkw9Z7wpyuFaL/f/8r26ja+NN1Bgtcml/yZQM645WMw1MJi2xjydtvyL2M4jQmJO3ltXDsBjflOVoidrZ+Hx8L3KfxB/oL/GAYdwWcY2VWLNmC2GfzWByQu+qzBT6zwlPGFV7v/kU=",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C",
        "From": "Ferruh Yigit <ferruh.yigit@amd.com>",
        "To": "Thomas Monjalon <thomas@monjalon.net>, Wisam Jaddo <wisamm@nvidia.com>,\n Ori Kam <orika@nvidia.com>, Aman Singh <aman.deep.singh@intel.com>,\n Yuying Zhang <yuying.zhang@intel.com>,\n Ajit Khaparde <ajit.khaparde@broadcom.com>,\n Somnath Kotur <somnath.kotur@broadcom.com>,\n Hemant Agrawal <hemant.agrawal@nxp.com>,\n Sachin Saxena <sachin.saxena@nxp.com>, Matan Azrad <matan@nvidia.com>,\n Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n Chaoyong He <chaoyong.he@corigine.com>,\n =?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@corigine.com>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Olivier Matz <olivier.matz@6wind.com>",
        "CC": "David Marchand <david.marchand@redhat.com>, <dev@dpdk.org>",
        "Subject": "[PATCH v6 4/8] ethdev: use GRE protocol struct for flow matching",
        "Date": "Thu, 2 Feb 2023 12:44:56 +0000",
        "Message-ID": "<20230202124500.2578857-5-ferruh.yigit@amd.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20230202124500.2578857-1-ferruh.yigit@amd.com>",
        "References": "<20221025214410.715864-1-thomas@monjalon.net>\n <20230202124500.2578857-1-ferruh.yigit@amd.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"UTF-8\"",
        "Content-Transfer-Encoding": "8bit",
        "X-Originating-IP": "[10.180.168.240]",
        "X-ClientProxiedBy": "SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com\n (10.181.40.145)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-TrafficTypeDiagnostic": "CO1NAM11FT038:EE_|IA1PR12MB6409:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "516b2475-7862-4f31-cbbb-08db051b5f02",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n 9oYjBWVjhh9/jNHB5pwPmTFOe2oIlP5/Oa+GBJaWGHPUoK+YNmmal8YU0A/vGDaV3XKMLoo+HLFtucHbd8Vx78R7ZjwY+vlLybArq7v6fXrsCYppFYjHp4f2Wykpqh/JTfgH6wejPwFg5xzO6n6sV+TLDk757e+VMQJa4DoJKqpzlg0dfdlyOxEBqQdtRw/YHHxOiAerxtw8OrLbsX/Ar6qO41l3oRSSRO67DNADlxGOqEyG8o4+p7MCQYmxw8aG8pQWGjeoXj2zAqVxPp+0WBC8che1DqNLUleeKxqw4xB3d/np+hPb2ReySxxWDSguOs0boITcyHJMC2PpzrlGsNtqkZ7fPHuQPCTv7byskeqVdTfS/EivfHlH1EnLOL7AaZgfDSqxQWuUX79CofIJo6eoF8bAIlIZ/IYC7TwMZfr0H5+zWbgMCwDVFw/mzg4GljM7QuHps8/ldA7Dg9DDT62kh0VLvu6XvEAJkT5yjFvrISDtKZoogRskV307E2IoLrxgn2PkZWDG2cdKgiRlapUdsAECVec9abznUsQghJJ8Zx0bOhuJMauh4T79j69Gz6XoWz4SJvdZrnLsh6c1kGdcJBZmhz7KXh3VojRkMcYFdwVVxbGsC4XJ1O+2trx2XOk3aoSD8CfBS0xCG2J/mgOtzuwfAwwN0PBT6hmGXQzbMyanPiN9XfWew9OlXC+TZvYq9ptbAObHoxSfAgttr5osGhFv2i9N6EuJVTWp4OydNxXwdDeESUqw7H/58FPE",
        "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230025)(4636009)(396003)(376002)(136003)(39860400002)(346002)(451199018)(46966006)(36840700001)(40470700004)(66574015)(478600001)(7696005)(47076005)(16526019)(2616005)(186003)(6666004)(1076003)(426003)(40460700003)(83380400001)(336012)(26005)(7416002)(2906002)(30864003)(44832011)(5660300002)(82310400005)(36756003)(316002)(54906003)(8676002)(110136005)(40480700001)(41300700001)(8936002)(70206006)(70586007)(4326008)(82740400003)(81166007)(356005)(921005)(36860700001)(86362001)(36900700001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "amd.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "02 Feb 2023 12:45:31.7613 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 516b2475-7862-4f31-cbbb-08db051b5f02",
        "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[SATLEXMB04.amd.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n CO1NAM11FT038.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "IA1PR12MB6409",
        "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: Thomas Monjalon <thomas@monjalon.net>\n\nAs announced in the deprecation notice, flow item structures\nshould re-use the protocol header definitions from the directory lib/net/.\n\nThe protocol struct is added in an unnamed union, keeping old field names.\n\nThe GRE header struct members are used in apps and drivers\ninstead of the redundant fields in the flow items.\n\nSigned-off-by: Thomas Monjalon <thomas@monjalon.net>\nAcked-by: Ferruh Yigit <ferruh.yigit@amd.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>\nAcked-by: Ori Kam <orika@nvidia.com>\nAcked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>\n---\n app/test-flow-perf/items_gen.c           |  4 ++--\n app/test-pmd/cmdline_flow.c              | 14 +++++------\n doc/guides/prog_guide/rte_flow.rst       |  6 +----\n doc/guides/rel_notes/deprecation.rst     |  1 -\n drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 12 +++++-----\n drivers/net/dpaa2/dpaa2_flow.c           | 12 +++++-----\n drivers/net/mlx5/hws/mlx5dr_definer.c    |  8 +++----\n drivers/net/mlx5/mlx5_flow.c             | 22 ++++++++---------\n drivers/net/mlx5/mlx5_flow_dv.c          | 30 +++++++++++++-----------\n drivers/net/mlx5/mlx5_flow_verbs.c       | 10 ++++----\n drivers/net/nfp/nfp_flow.c               |  9 +++----\n lib/ethdev/rte_flow.h                    | 24 +++++++++++++------\n lib/net/rte_gre.h                        |  5 ++++\n 13 files changed, 84 insertions(+), 73 deletions(-)",
    "diff": "diff --git a/app/test-flow-perf/items_gen.c b/app/test-flow-perf/items_gen.c\nindex a58245239ba1..0f19e5e53648 100644\n--- a/app/test-flow-perf/items_gen.c\n+++ b/app/test-flow-perf/items_gen.c\n@@ -173,10 +173,10 @@ add_gre(struct rte_flow_item *items,\n \t__rte_unused struct additional_para para)\n {\n \tstatic struct rte_flow_item_gre gre_spec = {\n-\t\t.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB),\n+\t\t.hdr.proto = RTE_BE16(RTE_ETHER_TYPE_TEB),\n \t};\n \tstatic struct rte_flow_item_gre gre_mask = {\n-\t\t.protocol = RTE_BE16(0xffff),\n+\t\t.hdr.proto = RTE_BE16(0xffff),\n \t};\n \n \titems[items_counter].type = RTE_FLOW_ITEM_TYPE_GRE;\ndiff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex b904f8c3d45c..0e115956514c 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -4071,7 +4071,7 @@ static const struct token token_list[] = {\n \t\t.next = NEXT(item_gre, NEXT_ENTRY(COMMON_UNSIGNED),\n \t\t\t     item_param),\n \t\t.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,\n-\t\t\t\t\t     protocol)),\n+\t\t\t\t\t     hdr.proto)),\n \t},\n \t[ITEM_GRE_C_RSVD0_VER] = {\n \t\t.name = \"c_rsvd0_ver\",\n@@ -4082,7 +4082,7 @@ static const struct token token_list[] = {\n \t\t.next = NEXT(item_gre, NEXT_ENTRY(COMMON_UNSIGNED),\n \t\t\t     item_param),\n \t\t.args = ARGS(ARGS_ENTRY_HTON(struct rte_flow_item_gre,\n-\t\t\t\t\t     c_rsvd0_ver)),\n+\t\t\t\t\t     hdr.c_rsvd0_ver)),\n \t},\n \t[ITEM_GRE_C_BIT] = {\n \t\t.name = \"c_bit\",\n@@ -4090,7 +4090,7 @@ static const struct token token_list[] = {\n \t\t.next = NEXT(item_gre, NEXT_ENTRY(COMMON_BOOLEAN),\n \t\t\t     item_param),\n \t\t.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,\n-\t\t\t\t\t\t  c_rsvd0_ver,\n+\t\t\t\t\t\t  hdr.c_rsvd0_ver,\n \t\t\t\t\t\t  \"\\x80\\x00\\x00\\x00\")),\n \t},\n \t[ITEM_GRE_S_BIT] = {\n@@ -4098,7 +4098,7 @@ static const struct token token_list[] = {\n \t\t.help = \"sequence number bit (S)\",\n \t\t.next = NEXT(item_gre, NEXT_ENTRY(COMMON_BOOLEAN), item_param),\n \t\t.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,\n-\t\t\t\t\t\t  c_rsvd0_ver,\n+\t\t\t\t\t\t  hdr.c_rsvd0_ver,\n \t\t\t\t\t\t  \"\\x10\\x00\\x00\\x00\")),\n \t},\n \t[ITEM_GRE_K_BIT] = {\n@@ -4106,7 +4106,7 @@ static const struct token token_list[] = {\n \t\t.help = \"key bit (K)\",\n \t\t.next = NEXT(item_gre, NEXT_ENTRY(COMMON_BOOLEAN), item_param),\n \t\t.args = ARGS(ARGS_ENTRY_MASK_HTON(struct rte_flow_item_gre,\n-\t\t\t\t\t\t  c_rsvd0_ver,\n+\t\t\t\t\t\t  hdr.c_rsvd0_ver,\n \t\t\t\t\t\t  \"\\x20\\x00\\x00\\x00\")),\n \t},\n \t[ITEM_FUZZY] = {\n@@ -7837,7 +7837,7 @@ parse_vc_action_mplsogre_encap(struct context *ctx, const struct token *token,\n \t\t},\n \t};\n \tstruct rte_flow_item_gre gre = {\n-\t\t.protocol = rte_cpu_to_be_16(ETHER_TYPE_MPLS_UNICAST),\n+\t\t.hdr.proto = rte_cpu_to_be_16(ETHER_TYPE_MPLS_UNICAST),\n \t};\n \tstruct rte_flow_item_mpls mpls = {\n \t\t.ttl = 0,\n@@ -7935,7 +7935,7 @@ parse_vc_action_mplsogre_decap(struct context *ctx, const struct token *token,\n \t\t},\n \t};\n \tstruct rte_flow_item_gre gre = {\n-\t\t.protocol = rte_cpu_to_be_16(ETHER_TYPE_MPLS_UNICAST),\n+\t\t.hdr.proto = rte_cpu_to_be_16(ETHER_TYPE_MPLS_UNICAST),\n \t};\n \tstruct rte_flow_item_mpls mpls;\n \tuint8_t *header;\ndiff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst\nindex 116722351486..603e1b866be3 100644\n--- a/doc/guides/prog_guide/rte_flow.rst\n+++ b/doc/guides/prog_guide/rte_flow.rst\n@@ -980,8 +980,7 @@ Item: ``GRE``\n \n Matches a GRE header.\n \n-- ``c_rsvd0_ver``: checksum, reserved 0 and version.\n-- ``protocol``: protocol type.\n+- ``hdr``:  header definition (``rte_gre.h``).\n - Default ``mask`` matches protocol only.\n \n Item: ``GRE_KEY``\n@@ -1000,9 +999,6 @@ Item: ``GRE_OPTION``\n Matches a GRE optional fields (checksum/key/sequence).\n This should be preceded by item ``GRE``.\n \n-- ``checksum``: checksum.\n-- ``key``: key.\n-- ``sequence``: sequence.\n - The items in GRE_OPTION do not change bit flags(c_bit/k_bit/s_bit) in GRE\n   item. The bit flags need be set with GRE item by application. When the items\n   present, the corresponding bits in GRE spec and mask should be set \"1\" by\ndiff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst\nindex df8b5bcb1b64..3bb15cf9f7a5 100644\n--- a/doc/guides/rel_notes/deprecation.rst\n+++ b/doc/guides/rel_notes/deprecation.rst\n@@ -73,7 +73,6 @@ Deprecation Notices\n   - ``rte_flow_item_e_tag``\n   - ``rte_flow_item_geneve``\n   - ``rte_flow_item_geneve_opt``\n-  - ``rte_flow_item_gre``\n   - ``rte_flow_item_gtp``\n   - ``rte_flow_item_icmp6``\n   - ``rte_flow_item_icmp6_nd_na``\ndiff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c\nindex 80869b79c3fe..c1e231ce8c49 100644\n--- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c\n+++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c\n@@ -1461,16 +1461,16 @@ ulp_rte_gre_hdr_handler(const struct rte_flow_item *item,\n \t\treturn BNXT_TF_RC_ERROR;\n \t}\n \n-\tsize = sizeof(((struct rte_flow_item_gre *)NULL)->c_rsvd0_ver);\n+\tsize = sizeof(((struct rte_flow_item_gre *)NULL)->hdr.c_rsvd0_ver);\n \tulp_rte_prsr_fld_mask(params, &idx, size,\n-\t\t\t      ulp_deference_struct(gre_spec, c_rsvd0_ver),\n-\t\t\t      ulp_deference_struct(gre_mask, c_rsvd0_ver),\n+\t\t\t      ulp_deference_struct(gre_spec, hdr.c_rsvd0_ver),\n+\t\t\t      ulp_deference_struct(gre_mask, hdr.c_rsvd0_ver),\n \t\t\t      ULP_PRSR_ACT_DEFAULT);\n \n-\tsize = sizeof(((struct rte_flow_item_gre *)NULL)->protocol);\n+\tsize = sizeof(((struct rte_flow_item_gre *)NULL)->hdr.proto);\n \tulp_rte_prsr_fld_mask(params, &idx, size,\n-\t\t\t      ulp_deference_struct(gre_spec, protocol),\n-\t\t\t      ulp_deference_struct(gre_mask, protocol),\n+\t\t\t      ulp_deference_struct(gre_spec, hdr.proto),\n+\t\t\t      ulp_deference_struct(gre_mask, hdr.proto),\n \t\t\t      ULP_PRSR_ACT_DEFAULT);\n \n \t/* Update the hdr_bitmap with GRE */\ndiff --git a/drivers/net/dpaa2/dpaa2_flow.c b/drivers/net/dpaa2/dpaa2_flow.c\nindex eec7e6065097..8a6d44da4875 100644\n--- a/drivers/net/dpaa2/dpaa2_flow.c\n+++ b/drivers/net/dpaa2/dpaa2_flow.c\n@@ -154,7 +154,7 @@ static const struct rte_flow_item_sctp dpaa2_flow_item_sctp_mask = {\n };\n \n static const struct rte_flow_item_gre dpaa2_flow_item_gre_mask = {\n-\t.protocol = RTE_BE16(0xffff),\n+\t.hdr.proto = RTE_BE16(0xffff),\n };\n \n #endif\n@@ -2792,7 +2792,7 @@ dpaa2_configure_flow_gre(struct rte_flow *flow,\n \t\treturn -1;\n \t}\n \n-\tif (!mask->protocol)\n+\tif (!mask->hdr.proto)\n \t\treturn 0;\n \n \tindex = dpaa2_flow_extract_search(\n@@ -2841,8 +2841,8 @@ dpaa2_configure_flow_gre(struct rte_flow *flow,\n \t\t\t\t&flow->qos_rule,\n \t\t\t\tNET_PROT_GRE,\n \t\t\t\tNH_FLD_GRE_TYPE,\n-\t\t\t\t&spec->protocol,\n-\t\t\t\t&mask->protocol,\n+\t\t\t\t&spec->hdr.proto,\n+\t\t\t\t&mask->hdr.proto,\n \t\t\t\tsizeof(rte_be16_t));\n \tif (ret) {\n \t\tDPAA2_PMD_ERR(\n@@ -2855,8 +2855,8 @@ dpaa2_configure_flow_gre(struct rte_flow *flow,\n \t\t\t&flow->fs_rule,\n \t\t\tNET_PROT_GRE,\n \t\t\tNH_FLD_GRE_TYPE,\n-\t\t\t&spec->protocol,\n-\t\t\t&mask->protocol,\n+\t\t\t&spec->hdr.proto,\n+\t\t\t&mask->hdr.proto,\n \t\t\tsizeof(rte_be16_t));\n \tif (ret) {\n \t\tDPAA2_PMD_ERR(\ndiff --git a/drivers/net/mlx5/hws/mlx5dr_definer.c b/drivers/net/mlx5/hws/mlx5dr_definer.c\nindex 604384a24253..3a438f2c9d12 100644\n--- a/drivers/net/mlx5/hws/mlx5dr_definer.c\n+++ b/drivers/net/mlx5/hws/mlx5dr_definer.c\n@@ -156,8 +156,8 @@ struct mlx5dr_definer_conv_data {\n \tX(SET,\t\tsource_qp,\t\tv->queue,\t\tmlx5_rte_flow_item_sq) \\\n \tX(SET,\t\ttag,\t\t\tv->data,\t\trte_flow_item_tag) \\\n \tX(SET,\t\tmetadata,\t\tv->data,\t\trte_flow_item_meta) \\\n-\tX(SET_BE16,\tgre_c_ver,\t\tv->c_rsvd0_ver,\t\trte_flow_item_gre) \\\n-\tX(SET_BE16,\tgre_protocol_type,\tv->protocol,\t\trte_flow_item_gre) \\\n+\tX(SET_BE16,\tgre_c_ver,\t\tv->hdr.c_rsvd0_ver,\trte_flow_item_gre) \\\n+\tX(SET_BE16,\tgre_protocol_type,\tv->hdr.proto,\t\trte_flow_item_gre) \\\n \tX(SET,\t\tipv4_protocol_gre,\tIPPROTO_GRE,\t\trte_flow_item_gre) \\\n \tX(SET_BE32,\tgre_opt_key,\t\tv->key.key,\t\trte_flow_item_gre_opt) \\\n \tX(SET_BE32,\tgre_opt_seq,\t\tv->sequence.sequence,\trte_flow_item_gre_opt) \\\n@@ -1210,7 +1210,7 @@ mlx5dr_definer_conv_item_gre(struct mlx5dr_definer_conv_data *cd,\n \tif (!m)\n \t\treturn 0;\n \n-\tif (m->c_rsvd0_ver) {\n+\tif (m->hdr.c_rsvd0_ver) {\n \t\tfc = &cd->fc[MLX5DR_DEFINER_FNAME_GRE_C_VER];\n \t\tfc->item_idx = item_idx;\n \t\tfc->tag_set = &mlx5dr_definer_gre_c_ver_set;\n@@ -1219,7 +1219,7 @@ mlx5dr_definer_conv_item_gre(struct mlx5dr_definer_conv_data *cd,\n \t\tfc->bit_off = __mlx5_dw_bit_off(header_gre, c_rsvd0_ver);\n \t}\n \n-\tif (m->protocol) {\n+\tif (m->hdr.proto) {\n \t\tfc = &cd->fc[MLX5DR_DEFINER_FNAME_GRE_PROTOCOL];\n \t\tfc->item_idx = item_idx;\n \t\tfc->tag_set = &mlx5dr_definer_gre_protocol_type_set;\ndiff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c\nindex ff08a629e2c6..7b19c5f03f5d 100644\n--- a/drivers/net/mlx5/mlx5_flow.c\n+++ b/drivers/net/mlx5/mlx5_flow.c\n@@ -329,7 +329,7 @@ mlx5_flow_expand_rss_item_complete(const struct rte_flow_item *item)\n \t\tret = mlx5_ethertype_to_item_type(spec, mask, true);\n \t\tbreak;\n \tcase RTE_FLOW_ITEM_TYPE_GRE:\n-\t\tMLX5_XSET_ITEM_MASK_SPEC(gre, protocol);\n+\t\tMLX5_XSET_ITEM_MASK_SPEC(gre, hdr.proto);\n \t\tret = mlx5_ethertype_to_item_type(spec, mask, true);\n \t\tbreak;\n \tcase RTE_FLOW_ITEM_TYPE_VXLAN_GPE:\n@@ -3089,8 +3089,7 @@ mlx5_flow_validate_item_gre_key(const struct rte_flow_item *item,\n \tif (!gre_mask)\n \t\tgre_mask = &rte_flow_item_gre_mask;\n \tgre_spec = gre_item->spec;\n-\tif (gre_spec && (gre_mask->c_rsvd0_ver & RTE_BE16(0x2000)) &&\n-\t\t\t !(gre_spec->c_rsvd0_ver & RTE_BE16(0x2000)))\n+\tif (gre_spec && (gre_mask->hdr.k) && !(gre_spec->hdr.k))\n \t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ITEM, item,\n \t\t\t\t\t  \"Key bit must be on\");\n@@ -3165,21 +3164,18 @@ mlx5_flow_validate_item_gre_option(struct rte_eth_dev *dev,\n \tif (!gre_mask)\n \t\tgre_mask = &rte_flow_item_gre_mask;\n \tif (mask->checksum_rsvd.checksum)\n-\t\tif (gre_spec && (gre_mask->c_rsvd0_ver & RTE_BE16(0x8000)) &&\n-\t\t\t\t !(gre_spec->c_rsvd0_ver & RTE_BE16(0x8000)))\n+\t\tif (gre_spec && (gre_mask->hdr.c) && !(gre_spec->hdr.c))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ITEM,\n \t\t\t\t\t\t  item,\n \t\t\t\t\t\t  \"Checksum bit must be on\");\n \tif (mask->key.key)\n-\t\tif (gre_spec && (gre_mask->c_rsvd0_ver & RTE_BE16(0x2000)) &&\n-\t\t\t\t !(gre_spec->c_rsvd0_ver & RTE_BE16(0x2000)))\n+\t\tif (gre_spec && (gre_mask->hdr.k) && !(gre_spec->hdr.k))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ITEM,\n \t\t\t\t\t\t  item, \"Key bit must be on\");\n \tif (mask->sequence.sequence)\n-\t\tif (gre_spec && (gre_mask->c_rsvd0_ver & RTE_BE16(0x1000)) &&\n-\t\t\t\t !(gre_spec->c_rsvd0_ver & RTE_BE16(0x1000)))\n+\t\tif (gre_spec && (gre_mask->hdr.s) && !(gre_spec->hdr.s))\n \t\t\treturn rte_flow_error_set(error, EINVAL,\n \t\t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ITEM,\n \t\t\t\t\t\t  item,\n@@ -3230,8 +3226,10 @@ mlx5_flow_validate_item_gre(const struct rte_flow_item *item,\n \tconst struct rte_flow_item_gre *mask = item->mask;\n \tint ret;\n \tconst struct rte_flow_item_gre nic_mask = {\n-\t\t.c_rsvd0_ver = RTE_BE16(0xB000),\n-\t\t.protocol = RTE_BE16(UINT16_MAX),\n+\t\t.hdr.c = 1,\n+\t\t.hdr.k = 1,\n+\t\t.hdr.s = 1,\n+\t\t.hdr.proto = RTE_BE16(UINT16_MAX),\n \t};\n \n \tif (target_protocol != 0xff && target_protocol != IPPROTO_GRE)\n@@ -3259,7 +3257,7 @@ mlx5_flow_validate_item_gre(const struct rte_flow_item *item,\n \t\treturn ret;\n #ifndef HAVE_MLX5DV_DR\n #ifndef HAVE_IBV_DEVICE_MPLS_SUPPORT\n-\tif (spec && (spec->protocol & mask->protocol))\n+\tif (spec && (spec->hdr.proto & mask->hdr.proto))\n \t\treturn rte_flow_error_set(error, ENOTSUP,\n \t\t\t\t\t  RTE_FLOW_ERROR_TYPE_ITEM, item,\n \t\t\t\t\t  \"without MPLS support the\"\ndiff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c\nindex 261c60a5c33a..2b9c2ba6a4b5 100644\n--- a/drivers/net/mlx5/mlx5_flow_dv.c\n+++ b/drivers/net/mlx5/mlx5_flow_dv.c\n@@ -8984,7 +8984,7 @@ static void\n flow_dv_translate_item_gre(void *key, const struct rte_flow_item *item,\n \t\t\t   uint64_t pattern_flags, uint32_t key_type)\n {\n-\tstatic const struct rte_flow_item_gre empty_gre = {0,};\n+\tstatic const struct rte_flow_item_gre empty_gre = {{{0}}};\n \tconst struct rte_flow_item_gre *gre_m = item->mask;\n \tconst struct rte_flow_item_gre *gre_v = item->spec;\n \tvoid *headers_v = MLX5_ADDR_OF(fte_match_param, key, outer_headers);\n@@ -9021,8 +9021,8 @@ flow_dv_translate_item_gre(void *key, const struct rte_flow_item *item,\n \t\tgre_v = gre_m;\n \telse if (key_type == MLX5_SET_MATCHER_HS_V)\n \t\tgre_m = gre_v;\n-\tgre_crks_rsvd0_ver_m.value = rte_be_to_cpu_16(gre_m->c_rsvd0_ver);\n-\tgre_crks_rsvd0_ver_v.value = rte_be_to_cpu_16(gre_v->c_rsvd0_ver);\n+\tgre_crks_rsvd0_ver_m.value = rte_be_to_cpu_16(gre_m->hdr.c_rsvd0_ver);\n+\tgre_crks_rsvd0_ver_v.value = rte_be_to_cpu_16(gre_v->hdr.c_rsvd0_ver);\n \tMLX5_SET(fte_match_set_misc, misc_v, gre_c_present,\n \t\t gre_crks_rsvd0_ver_v.c_present &\n \t\t gre_crks_rsvd0_ver_m.c_present);\n@@ -9032,8 +9032,8 @@ flow_dv_translate_item_gre(void *key, const struct rte_flow_item *item,\n \tMLX5_SET(fte_match_set_misc, misc_v, gre_s_present,\n \t\t gre_crks_rsvd0_ver_v.s_present &\n \t\t gre_crks_rsvd0_ver_m.s_present);\n-\tprotocol_m = rte_be_to_cpu_16(gre_m->protocol);\n-\tprotocol_v = rte_be_to_cpu_16(gre_v->protocol);\n+\tprotocol_m = rte_be_to_cpu_16(gre_m->hdr.proto);\n+\tprotocol_v = rte_be_to_cpu_16(gre_v->hdr.proto);\n \tif (!protocol_m) {\n \t\t/* Force next protocol to prevent matchers duplication */\n \t\tprotocol_v = mlx5_translate_tunnel_etypes(pattern_flags);\n@@ -9072,7 +9072,7 @@ flow_dv_translate_item_gre_option(void *key,\n \tconst struct rte_flow_item_gre_opt *option_v = item->spec;\n \tconst struct rte_flow_item_gre *gre_m = gre_item->mask;\n \tconst struct rte_flow_item_gre *gre_v = gre_item->spec;\n-\tstatic const struct rte_flow_item_gre empty_gre = {0};\n+\tstatic const struct rte_flow_item_gre empty_gre = {{{0}}};\n \tstruct rte_flow_item gre_key_item;\n \tuint16_t c_rsvd0_ver_m, c_rsvd0_ver_v;\n \tuint16_t protocol_m, protocol_v;\n@@ -9097,8 +9097,8 @@ flow_dv_translate_item_gre_option(void *key,\n \t\tif (!gre_m)\n \t\t\tgre_m = &rte_flow_item_gre_mask;\n \t}\n-\tprotocol_v = gre_v->protocol;\n-\tprotocol_m = gre_m->protocol;\n+\tprotocol_v = gre_v->hdr.proto;\n+\tprotocol_m = gre_m->hdr.proto;\n \tif (!protocol_m) {\n \t\t/* Force next protocol to prevent matchers duplication */\n \t\tuint16_t ether_type =\n@@ -9108,8 +9108,8 @@ flow_dv_translate_item_gre_option(void *key,\n \t\t\tprotocol_m = UINT16_MAX;\n \t\t}\n \t}\n-\tc_rsvd0_ver_v = gre_v->c_rsvd0_ver;\n-\tc_rsvd0_ver_m = gre_m->c_rsvd0_ver;\n+\tc_rsvd0_ver_v = gre_v->hdr.c_rsvd0_ver;\n+\tc_rsvd0_ver_m = gre_m->hdr.c_rsvd0_ver;\n \tif (option_m->sequence.sequence) {\n \t\tc_rsvd0_ver_v |= RTE_BE16(0x1000);\n \t\tc_rsvd0_ver_m |= RTE_BE16(0x1000);\n@@ -9171,12 +9171,14 @@ flow_dv_translate_item_nvgre(void *key, const struct rte_flow_item *item,\n \n \t/* For NVGRE, GRE header fields must be set with defined values. */\n \tconst struct rte_flow_item_gre gre_spec = {\n-\t\t.c_rsvd0_ver = RTE_BE16(0x2000),\n-\t\t.protocol = RTE_BE16(RTE_ETHER_TYPE_TEB)\n+\t\t.hdr.k = 1,\n+\t\t.hdr.proto = RTE_BE16(RTE_ETHER_TYPE_TEB)\n \t};\n \tconst struct rte_flow_item_gre gre_mask = {\n-\t\t.c_rsvd0_ver = RTE_BE16(0xB000),\n-\t\t.protocol = RTE_BE16(UINT16_MAX),\n+\t\t.hdr.c = 1,\n+\t\t.hdr.k = 1,\n+\t\t.hdr.s = 1,\n+\t\t.hdr.proto = RTE_BE16(UINT16_MAX),\n \t};\n \tconst struct rte_flow_item gre_item = {\n \t\t.spec = &gre_spec,\ndiff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c\nindex 4ef4f3044515..291369d437d4 100644\n--- a/drivers/net/mlx5/mlx5_flow_verbs.c\n+++ b/drivers/net/mlx5/mlx5_flow_verbs.c\n@@ -930,7 +930,7 @@ flow_verbs_translate_item_gre(struct mlx5_flow *dev_flow,\n \t\t.size = size,\n \t};\n #else\n-\tstatic const struct rte_flow_item_gre empty_gre = {0,};\n+\tstatic const struct rte_flow_item_gre empty_gre = {{{0}}};\n \tconst struct rte_flow_item_gre *spec = item->spec;\n \tconst struct rte_flow_item_gre *mask = item->mask;\n \tunsigned int size = sizeof(struct ibv_flow_spec_gre);\n@@ -946,10 +946,10 @@ flow_verbs_translate_item_gre(struct mlx5_flow *dev_flow,\n \t\tif (!mask)\n \t\t\tmask = &rte_flow_item_gre_mask;\n \t}\n-\ttunnel.val.c_ks_res0_ver = spec->c_rsvd0_ver;\n-\ttunnel.val.protocol = spec->protocol;\n-\ttunnel.mask.c_ks_res0_ver = mask->c_rsvd0_ver;\n-\ttunnel.mask.protocol = mask->protocol;\n+\ttunnel.val.c_ks_res0_ver = spec->hdr.c_rsvd0_ver;\n+\ttunnel.val.protocol = spec->hdr.proto;\n+\ttunnel.mask.c_ks_res0_ver = mask->hdr.c_rsvd0_ver;\n+\ttunnel.mask.protocol = mask->hdr.proto;\n \t/* Remove unwanted bits from values. */\n \ttunnel.val.c_ks_res0_ver &= tunnel.mask.c_ks_res0_ver;\n \ttunnel.val.key &= tunnel.mask.key;\ndiff --git a/drivers/net/nfp/nfp_flow.c b/drivers/net/nfp/nfp_flow.c\nindex bd3a8d2a3b2f..0994fdeeb49f 100644\n--- a/drivers/net/nfp/nfp_flow.c\n+++ b/drivers/net/nfp/nfp_flow.c\n@@ -1812,8 +1812,9 @@ static const struct nfp_flow_item_proc nfp_flow_item_proc_list[] = {\n \t[RTE_FLOW_ITEM_TYPE_GRE] = {\n \t\t.next_item = NEXT_ITEM(RTE_FLOW_ITEM_TYPE_GRE_KEY),\n \t\t.mask_support = &(const struct rte_flow_item_gre){\n-\t\t\t.c_rsvd0_ver = RTE_BE16(0xa000),\n-\t\t\t.protocol = RTE_BE16(0xffff),\n+\t\t\t.hdr.c = 1,\n+\t\t\t.hdr.k = 1,\n+\t\t\t.hdr.proto = RTE_BE16(0xffff),\n \t\t},\n \t\t.mask_default = &rte_flow_item_gre_mask,\n \t\t.mask_sz = sizeof(struct rte_flow_item_gre),\n@@ -3144,7 +3145,7 @@ nfp_flow_action_nvgre_encap_v4(struct nfp_app_fw_flower *app_fw_flower,\n \tmemset(set_tun, 0, act_set_size);\n \tnfp_flow_set_tun_process(set_tun, NFP_FL_TUN_GRE, 0,\n \t\t\tipv4->hdr.time_to_live, ipv4->hdr.type_of_service);\n-\tset_tun->tun_proto = gre->protocol;\n+\tset_tun->tun_proto = gre->hdr.proto;\n \n \t/* Send the tunnel neighbor cmsg to fw */\n \treturn nfp_flower_add_tun_neigh_v4_encap(app_fw_flower, nfp_flow_meta,\n@@ -3181,7 +3182,7 @@ nfp_flow_action_nvgre_encap_v6(struct nfp_app_fw_flower *app_fw_flower,\n \ttos = (ipv6->hdr.vtc_flow >> RTE_IPV6_HDR_TC_SHIFT) & 0xff;\n \tnfp_flow_set_tun_process(set_tun, NFP_FL_TUN_GRE, 0,\n \t\t\tipv6->hdr.hop_limits, tos);\n-\tset_tun->tun_proto = gre->protocol;\n+\tset_tun->tun_proto = gre->hdr.proto;\n \n \t/* Send the tunnel neighbor cmsg to fw */\n \treturn nfp_flower_add_tun_neigh_v6_encap(app_fw_flower, nfp_flow_meta,\ndiff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h\nindex e2364823d622..3ae89e367c16 100644\n--- a/lib/ethdev/rte_flow.h\n+++ b/lib/ethdev/rte_flow.h\n@@ -1070,19 +1070,29 @@ static const struct rte_flow_item_mpls rte_flow_item_mpls_mask = {\n  *\n  * Matches a GRE header.\n  */\n+RTE_STD_C11\n struct rte_flow_item_gre {\n-\t/**\n-\t * Checksum (1b), reserved 0 (12b), version (3b).\n-\t * Refer to RFC 2784.\n-\t */\n-\trte_be16_t c_rsvd0_ver;\n-\trte_be16_t protocol; /**< Protocol type. */\n+\tunion {\n+\t\tstruct {\n+\t\t\t/*\n+\t\t\t * These are old fields kept for compatibility.\n+\t\t\t * Please prefer hdr field below.\n+\t\t\t */\n+\t\t\t/**\n+\t\t\t * Checksum (1b), reserved 0 (12b), version (3b).\n+\t\t\t * Refer to RFC 2784.\n+\t\t\t */\n+\t\t\trte_be16_t c_rsvd0_ver;\n+\t\t\trte_be16_t protocol; /**< Protocol type. */\n+\t\t};\n+\t\tstruct rte_gre_hdr hdr; /**< GRE header definition. */\n+\t};\n };\n \n /** Default mask for RTE_FLOW_ITEM_TYPE_GRE. */\n #ifndef __cplusplus\n static const struct rte_flow_item_gre rte_flow_item_gre_mask = {\n-\t.protocol = RTE_BE16(0xffff),\n+\t.hdr.proto = RTE_BE16(UINT16_MAX),\n };\n #endif\n \ndiff --git a/lib/net/rte_gre.h b/lib/net/rte_gre.h\nindex 6c6aef6fcaa0..210b81c99018 100644\n--- a/lib/net/rte_gre.h\n+++ b/lib/net/rte_gre.h\n@@ -28,6 +28,8 @@ extern \"C\" {\n  */\n __extension__\n struct rte_gre_hdr {\n+\tunion {\n+\t\tstruct {\n #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN\n \tuint16_t res2:4; /**< Reserved */\n \tuint16_t s:1;    /**< Sequence Number Present bit */\n@@ -45,6 +47,9 @@ struct rte_gre_hdr {\n \tuint16_t res3:5; /**< Reserved */\n \tuint16_t ver:3;  /**< Version Number */\n #endif\n+\t\t};\n+\t\trte_be16_t c_rsvd0_ver;\n+\t};\n \tuint16_t proto;  /**< Protocol Type */\n } __rte_packed;\n \n",
    "prefixes": [
        "v6",
        "4/8"
    ]
}