get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 79639,
    "url": "https://patches.dpdk.org/api/patches/79639/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20201005120910.189343-24-jiawenwu@trustnetic.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": "<20201005120910.189343-24-jiawenwu@trustnetic.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201005120910.189343-24-jiawenwu@trustnetic.com",
    "date": "2020-10-05T12:08:37",
    "name": "[v2,23/56] net/txgbe: add packet type",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "d882218f518bc067a74a98dca4fafd6e7cf8a54c",
    "submitter": {
        "id": 1932,
        "url": "https://patches.dpdk.org/api/people/1932/?format=api",
        "name": "Jiawen Wu",
        "email": "jiawenwu@trustnetic.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/20201005120910.189343-24-jiawenwu@trustnetic.com/mbox/",
    "series": [
        {
            "id": 12690,
            "url": "https://patches.dpdk.org/api/series/12690/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=12690",
            "date": "2020-10-05T12:08:14",
            "name": "net: txgbe PMD",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/12690/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/79639/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/79639/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 29F40A04B1;\n\tMon,  5 Oct 2020 14:18:02 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id B72811BD25;\n\tMon,  5 Oct 2020 14:09:25 +0200 (CEST)",
            "from smtpbg511.qq.com (smtpbg511.qq.com [203.205.250.109])\n by dpdk.org (Postfix) with ESMTP id D59D71BC1A\n for <dev@dpdk.org>; Mon,  5 Oct 2020 14:09:11 +0200 (CEST)",
            "from localhost.localdomain.com (unknown [183.129.236.74])\n by esmtp6.qq.com (ESMTP) with\n id ; Mon, 05 Oct 2020 20:09:07 +0800 (CST)"
        ],
        "X-QQ-mid": "bizesmtp9t1601899748t6hidwbem",
        "X-QQ-SSF": "01400000002000C0C000B00A0000000",
        "X-QQ-FEAT": "EIpS3UBwyb6tNh/iSiAu+FzSeQpNEcIXp2QgMDq8L+t4RYsAnidVj49mCaUvb\n 7ONM9RQxGJ2mbdDiBWF4y022gW/E2+c0/OmD4hzigranSSE1X3Fv0eQLr+qVXqKJAXk6FJ1\n cWsX7kVy0OIvUoHvsStVqSinHnXOqMPETrEsNpwusO8Se0eDUiL0g/Kvt8NYN/wsGQiJ4DD\n awsStP5DIy40Q9azFnkgf6mLkgT1m3ciLMkmWFJJBLxCJl+M9XhNpGXha8E1lpUiGnN6FE+\n fdHVL0ljQtEFS1LnthxS+a35A0zOIo3ytsKNYaNeUJ8dodaeEPLKeL2RXOcCOagCYqaY4TN\n iBFaEIoeFq8PWnSpWMjbowUxpb7ig==",
        "X-QQ-GoodBg": "2",
        "From": "Jiawen Wu <jiawenwu@trustnetic.com>",
        "To": "dev@dpdk.org",
        "Cc": "jiawenwu <jiawenwu@trustnetic.com>",
        "Date": "Mon,  5 Oct 2020 20:08:37 +0800",
        "Message-Id": "<20201005120910.189343-24-jiawenwu@trustnetic.com>",
        "X-Mailer": "git-send-email 2.18.4",
        "In-Reply-To": "<20201005120910.189343-1-jiawenwu@trustnetic.com>",
        "References": "<20201005120910.189343-1-jiawenwu@trustnetic.com>",
        "X-QQ-SENDSIZE": "520",
        "Feedback-ID": "bizesmtp:trustnetic.com:qybgforeign:qybgforeign6",
        "X-QQ-Bgrelay": "1",
        "Subject": "[dpdk-dev] [PATCH v2 23/56] net/txgbe: add packet type",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: jiawenwu <jiawenwu@trustnetic.com>\n\nAdd packet type marco definition and convert ptype to ptid.\n\nSigned-off-by: jiawenwu <jiawenwu@trustnetic.com>\n---\n doc/guides/nics/features/txgbe.ini |   1 +\n doc/guides/nics/txgbe.rst          |   1 +\n drivers/net/txgbe/meson.build      |   1 +\n drivers/net/txgbe/txgbe_ethdev.h   |   1 +\n drivers/net/txgbe/txgbe_ptypes.c   | 674 +++++++++++++++++++++++++++++\n drivers/net/txgbe/txgbe_ptypes.h   | 351 +++++++++++++++\n drivers/net/txgbe/txgbe_rxtx.h     |   2 -\n 7 files changed, 1029 insertions(+), 2 deletions(-)\n create mode 100644 drivers/net/txgbe/txgbe_ptypes.c\n create mode 100644 drivers/net/txgbe/txgbe_ptypes.h",
    "diff": "diff --git a/doc/guides/nics/features/txgbe.ini b/doc/guides/nics/features/txgbe.ini\nindex e76e9af46..247704572 100644\n--- a/doc/guides/nics/features/txgbe.ini\n+++ b/doc/guides/nics/features/txgbe.ini\n@@ -14,6 +14,7 @@ Unicast MAC filter   = Y\n Multicast MAC filter = Y\n CRC offload          = P\n VLAN offload         = P\n+Packet type parsing  = Y\n Linux UIO            = Y\n Linux VFIO           = Y\n ARMv8                = Y\ndiff --git a/doc/guides/nics/txgbe.rst b/doc/guides/nics/txgbe.rst\nindex 9ae359c9b..3bee5d023 100644\n--- a/doc/guides/nics/txgbe.rst\n+++ b/doc/guides/nics/txgbe.rst\n@@ -12,6 +12,7 @@ Features\n \n - Multiple queues for TX and RX\n - MAC filtering\n+- Packet type information\n - Jumbo frames\n - Link state information\n \ndiff --git a/drivers/net/txgbe/meson.build b/drivers/net/txgbe/meson.build\nindex 3c11d5e33..ea028d208 100644\n--- a/drivers/net/txgbe/meson.build\n+++ b/drivers/net/txgbe/meson.build\n@@ -6,6 +6,7 @@ objs = [base_objs]\n \n sources = files(\n \t'txgbe_ethdev.c',\n+\t'txgbe_ptypes.c',\n \t'txgbe_rxtx.c',\n )\n \ndiff --git a/drivers/net/txgbe/txgbe_ethdev.h b/drivers/net/txgbe/txgbe_ethdev.h\nindex 1a29281a8..21b1699ea 100644\n--- a/drivers/net/txgbe/txgbe_ethdev.h\n+++ b/drivers/net/txgbe/txgbe_ethdev.h\n@@ -6,6 +6,7 @@\n #define _TXGBE_ETHDEV_H_\n \n #include \"base/txgbe.h\"\n+#include \"txgbe_ptypes.h\"\n \n /* need update link, bit flag */\n #define TXGBE_FLAG_NEED_LINK_UPDATE (uint32_t)(1 << 0)\ndiff --git a/drivers/net/txgbe/txgbe_ptypes.c b/drivers/net/txgbe/txgbe_ptypes.c\nnew file mode 100644\nindex 000000000..9b841bff8\n--- /dev/null\n+++ b/drivers/net/txgbe/txgbe_ptypes.c\n@@ -0,0 +1,674 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2015-2020\n+ */\n+\n+#include <rte_mbuf.h>\n+#include <rte_memory.h>\n+\n+#include \"base/txgbe_type.h\"\n+#include \"txgbe_ptypes.h\"\n+\n+/* The txgbe_ptype_lookup is used to convert from the 8-bit ptid in the\n+ * hardware to a bit-field that can be used by SW to more easily determine the\n+ * packet type.\n+ *\n+ * Macros are used to shorten the table lines and make this table human\n+ * readable.\n+ *\n+ * We store the PTYPE in the top byte of the bit field - this is just so that\n+ * we can check that the table doesn't have a row missing, as the index into\n+ * the table should be the PTYPE.\n+ *\n+ * Typical work flow:\n+ *\n+ * IF NOT txgbe_ptype_lookup[ptid].known\n+ * THEN\n+ *      Packet is unknown\n+ * ELSE IF txgbe_ptype_lookup[ptid].mac == TXGBE_DEC_PTYPE_MAC_IP\n+ *      Use the rest of the fields to look at the tunnels, inner protocols, etc\n+ * ELSE\n+ *      Use the enum txgbe_l2_ptypes to decode the packet type\n+ * ENDIF\n+ */\n+#define TPTE(ptid, l2, l3, l4, tun, el2, el3, el4) \\\n+  [ptid] = (RTE_PTYPE_L2_##l2 | \\\n+\t\tRTE_PTYPE_L3_##l3 | \\\n+\t\tRTE_PTYPE_L4_##l4 | \\\n+\t\tRTE_PTYPE_TUNNEL_##tun | \\\n+\t\tRTE_PTYPE_INNER_L2_##el2 | \\\n+\t\tRTE_PTYPE_INNER_L3_##el3 | \\\n+\t\tRTE_PTYPE_INNER_L4_##el4)\n+\n+#define RTE_PTYPE_L2_NONE               0\n+#define RTE_PTYPE_L3_NONE               0\n+#define RTE_PTYPE_L4_NONE               0\n+#define RTE_PTYPE_TUNNEL_NONE           0\n+#define RTE_PTYPE_INNER_L2_NONE         0\n+#define RTE_PTYPE_INNER_L3_NONE         0\n+#define RTE_PTYPE_INNER_L4_NONE         0\n+\n+static u32 txgbe_ptype_lookup[TXGBE_PTID_MAX] __rte_cache_aligned = {\n+  /* L2:0-3 L3:4-7 L4:8-11 TUN:12-15 EL2:16-19 EL3:20-23 EL2:24-27 */\n+  /* L2: ETH */\n+  TPTE(0x11, ETHER,          NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x12, ETHER_TIMESYNC, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x13, ETHER_FIP,      NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x14, ETHER_LLDP,     NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x15, ETHER_CNM,      NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x16, ETHER_EAPOL,    NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x17, ETHER_ARP,      NONE, NONE, NONE, NONE, NONE, NONE),\n+  /* L2: Ethertype Filter */\n+  TPTE(0x18, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x19, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x1A, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x1B, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x1C, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x1D, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x1E, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x1F, ETHER_FILTER,   NONE, NONE, NONE, NONE, NONE, NONE),\n+  /* L3: IP */\n+  TPTE(0x21, ETHER, IPV4, FRAG,    NONE, NONE, NONE, NONE),\n+  TPTE(0x22, ETHER, IPV4, NONFRAG, NONE, NONE, NONE, NONE),\n+  TPTE(0x23, ETHER, IPV4, UDP,     NONE, NONE, NONE, NONE),\n+  TPTE(0x24, ETHER, IPV4, TCP,     NONE, NONE, NONE, NONE),\n+  TPTE(0x25, ETHER, IPV4, SCTP,    NONE, NONE, NONE, NONE),\n+  TPTE(0x29, ETHER, IPV6, FRAG,    NONE, NONE, NONE, NONE),\n+  TPTE(0x2A, ETHER, IPV6, NONFRAG, NONE, NONE, NONE, NONE),\n+  TPTE(0x2B, ETHER, IPV6, UDP,     NONE, NONE, NONE, NONE),\n+  TPTE(0x2C, ETHER, IPV6, TCP,     NONE, NONE, NONE, NONE),\n+  TPTE(0x2D, ETHER, IPV6, SCTP,    NONE, NONE, NONE, NONE),\n+  /* L2: FCoE */\n+  TPTE(0x30, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x31, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x32, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x33, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x34, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x35, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x36, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x37, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x38, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  TPTE(0x39, ETHER_FCOE, NONE, NONE, NONE, NONE, NONE, NONE),\n+  /* IPv4 -> IPv4/IPv6 */\n+  TPTE(0x81, ETHER, IPV4, NONE, IP, NONE, IPV4, FRAG),\n+  TPTE(0x82, ETHER, IPV4, NONE, IP, NONE, IPV4, NONFRAG),\n+  TPTE(0x83, ETHER, IPV4, NONE, IP, NONE, IPV4, UDP),\n+  TPTE(0x84, ETHER, IPV4, NONE, IP, NONE, IPV4, TCP),\n+  TPTE(0x85, ETHER, IPV4, NONE, IP, NONE, IPV4, SCTP),\n+  TPTE(0x89, ETHER, IPV4, NONE, IP, NONE, IPV6, FRAG),\n+  TPTE(0x8A, ETHER, IPV4, NONE, IP, NONE, IPV6, NONFRAG),\n+  TPTE(0x8B, ETHER, IPV4, NONE, IP, NONE, IPV6, UDP),\n+  TPTE(0x8C, ETHER, IPV4, NONE, IP, NONE, IPV6, TCP),\n+  TPTE(0x8D, ETHER, IPV4, NONE, IP, NONE, IPV6, SCTP),\n+  /* IPv4 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */\n+  TPTE(0x90, ETHER, IPV4, NONE, GRENAT, NONE, NONE,  NONE),\n+  TPTE(0x91, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, FRAG),\n+  TPTE(0x92, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, NONFRAG),\n+  TPTE(0x93, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, UDP),\n+  TPTE(0x94, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, TCP),\n+  TPTE(0x95, ETHER, IPV4, NONE, GRENAT, NONE, IPV4, SCTP),\n+  TPTE(0x99, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, FRAG),\n+  TPTE(0x9A, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, NONFRAG),\n+  TPTE(0x9B, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, UDP),\n+  TPTE(0x9C, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, TCP),\n+  TPTE(0x9D, ETHER, IPV4, NONE, GRENAT, NONE, IPV6, SCTP),\n+  /* IPv4 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */\n+  TPTE(0xA0, ETHER, IPV4, NONE, GRENAT, ETHER, NONE,  NONE),\n+  TPTE(0xA1, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, FRAG),\n+  TPTE(0xA2, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, NONFRAG),\n+  TPTE(0xA3, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, UDP),\n+  TPTE(0xA4, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, TCP),\n+  TPTE(0xA5, ETHER, IPV4, NONE, GRENAT, ETHER, IPV4, SCTP),\n+  TPTE(0xA9, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, FRAG),\n+  TPTE(0xAA, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, NONFRAG),\n+  TPTE(0xAB, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, UDP),\n+  TPTE(0xAC, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, TCP),\n+  TPTE(0xAD, ETHER, IPV4, NONE, GRENAT, ETHER, IPV6, SCTP),\n+  /* IPv4 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */\n+  TPTE(0xB0, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, NONE,  NONE),\n+  TPTE(0xB1, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),\n+  TPTE(0xB2, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),\n+  TPTE(0xB3, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),\n+  TPTE(0xB4, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),\n+  TPTE(0xB5, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),\n+  TPTE(0xB9, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),\n+  TPTE(0xBA, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),\n+  TPTE(0xBB, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),\n+  TPTE(0xBC, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),\n+  TPTE(0xBD, ETHER, IPV4, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),\n+  /* IPv6 -> IPv4/IPv6 */\n+  TPTE(0xC1, ETHER, IPV6, NONE, IP, NONE, IPV4, FRAG),\n+  TPTE(0xC2, ETHER, IPV6, NONE, IP, NONE, IPV4, NONFRAG),\n+  TPTE(0xC3, ETHER, IPV6, NONE, IP, NONE, IPV4, UDP),\n+  TPTE(0xC4, ETHER, IPV6, NONE, IP, NONE, IPV4, TCP),\n+  TPTE(0xC5, ETHER, IPV6, NONE, IP, NONE, IPV4, SCTP),\n+  TPTE(0xC9, ETHER, IPV6, NONE, IP, NONE, IPV6, FRAG),\n+  TPTE(0xCA, ETHER, IPV6, NONE, IP, NONE, IPV6, NONFRAG),\n+  TPTE(0xCB, ETHER, IPV6, NONE, IP, NONE, IPV6, UDP),\n+  TPTE(0xCC, ETHER, IPV6, NONE, IP, NONE, IPV6, TCP),\n+  TPTE(0xCD, ETHER, IPV6, NONE, IP, NONE, IPV6, SCTP),\n+  /* IPv6 -> GRE/Teredo/VXLAN -> NONE/IPv4/IPv6 */\n+  TPTE(0xD0, ETHER, IPV6, NONE, GRENAT, NONE, NONE,  NONE),\n+  TPTE(0xD1, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, FRAG),\n+  TPTE(0xD2, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, NONFRAG),\n+  TPTE(0xD3, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, UDP),\n+  TPTE(0xD4, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, TCP),\n+  TPTE(0xD5, ETHER, IPV6, NONE, GRENAT, NONE, IPV4, SCTP),\n+  TPTE(0xD9, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, FRAG),\n+  TPTE(0xDA, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, NONFRAG),\n+  TPTE(0xDB, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, UDP),\n+  TPTE(0xDC, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, TCP),\n+  TPTE(0xDD, ETHER, IPV6, NONE, GRENAT, NONE, IPV6, SCTP),\n+  /* IPv6 -> GRE/Teredo/VXLAN -> MAC -> NONE/IPv4/IPv6 */\n+  TPTE(0xE0, ETHER, IPV6, NONE, GRENAT, ETHER, NONE,  NONE),\n+  TPTE(0xE1, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, FRAG),\n+  TPTE(0xE2, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, NONFRAG),\n+  TPTE(0xE3, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, UDP),\n+  TPTE(0xE4, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, TCP),\n+  TPTE(0xE5, ETHER, IPV6, NONE, GRENAT, ETHER, IPV4, SCTP),\n+  TPTE(0xE9, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, FRAG),\n+  TPTE(0xEA, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, NONFRAG),\n+  TPTE(0xEB, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, UDP),\n+  TPTE(0xEC, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, TCP),\n+  TPTE(0xED, ETHER, IPV6, NONE, GRENAT, ETHER, IPV6, SCTP),\n+  /* IPv6 -> GRE/Teredo/VXLAN -> MAC+VLAN -> NONE/IPv4/IPv6 */\n+  TPTE(0xF0, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, NONE,  NONE),\n+  TPTE(0xF1, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, FRAG),\n+  TPTE(0xF2, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, NONFRAG),\n+  TPTE(0xF3, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, UDP),\n+  TPTE(0xF4, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, TCP),\n+  TPTE(0xF5, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV4, SCTP),\n+  TPTE(0xF9, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, FRAG),\n+  TPTE(0xFA, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, NONFRAG),\n+  TPTE(0xFB, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, UDP),\n+  TPTE(0xFC, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, TCP),\n+  TPTE(0xFD, ETHER, IPV6, NONE, GRENAT, ETHER_VLAN, IPV6, SCTP),\n+};\n+\n+u32 *txgbe_get_supported_ptypes(void)\n+{\n+\tstatic u32 ptypes[] = {\n+\t\t/* For non-vec functions,\n+\t\t * refers to txgbe_rxd_pkt_info_to_pkt_type();\n+\t\t */\n+\t\tRTE_PTYPE_L2_ETHER,\n+\t\tRTE_PTYPE_L3_IPV4,\n+\t\tRTE_PTYPE_L3_IPV4_EXT,\n+\t\tRTE_PTYPE_L3_IPV6,\n+\t\tRTE_PTYPE_L3_IPV6_EXT,\n+\t\tRTE_PTYPE_L4_SCTP,\n+\t\tRTE_PTYPE_L4_TCP,\n+\t\tRTE_PTYPE_L4_UDP,\n+\t\tRTE_PTYPE_TUNNEL_IP,\n+\t\tRTE_PTYPE_INNER_L3_IPV6,\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT,\n+\t\tRTE_PTYPE_INNER_L4_TCP,\n+\t\tRTE_PTYPE_INNER_L4_UDP,\n+\t\tRTE_PTYPE_UNKNOWN\n+\t};\n+\n+\treturn ptypes;\n+}\n+\n+static inline u8\n+txgbe_encode_ptype_fcoe(u32 ptype)\n+{\n+\tu8 ptid;\n+\n+\tUNREFERENCED_PARAMETER(ptype);\n+\tptid = TXGBE_PTID_PKT_FCOE;\n+\n+\treturn ptid;\n+}\n+\n+static inline u8\n+txgbe_encode_ptype_mac(u32 ptype)\n+{\n+\tu8 ptid;\n+\n+\tptid = TXGBE_PTID_PKT_MAC;\n+\n+\tswitch (ptype & RTE_PTYPE_L2_MASK) {\n+\tcase RTE_PTYPE_L2_ETHER_FCOE:\n+\t\tptid = txgbe_encode_ptype_fcoe(ptype);\n+\t\tbreak;\n+\tcase RTE_PTYPE_UNKNOWN:\n+\t\tbreak;\n+\tcase RTE_PTYPE_L2_ETHER_TIMESYNC:\n+\t\tptid |= TXGBE_PTID_TYP_TS;\n+\t\tbreak;\n+\tcase RTE_PTYPE_L2_ETHER_ARP:\n+\t\tptid |= TXGBE_PTID_TYP_ARP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_L2_ETHER_LLDP:\n+\t\tptid |= TXGBE_PTID_TYP_LLDP;\n+\t\tbreak;\n+\tdefault:\n+\t\tptid |= TXGBE_PTID_TYP_MAC;\n+\t\tbreak;\n+\t}\n+\n+\treturn ptid;\n+}\n+\n+static inline u8\n+txgbe_encode_ptype_ip(u32 ptype)\n+{\n+\tu8 ptid;\n+\n+\tptid = TXGBE_PTID_PKT_IP;\n+\n+\tswitch (ptype & RTE_PTYPE_L3_MASK) {\n+\tcase RTE_PTYPE_L3_IPV4:\n+\tcase RTE_PTYPE_L3_IPV4_EXT:\n+\tcase RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:\n+\t\tbreak;\n+\tcase RTE_PTYPE_L3_IPV6:\n+\tcase RTE_PTYPE_L3_IPV6_EXT:\n+\tcase RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:\n+\t\tptid |= TXGBE_PTID_PKT_IPV6;\n+\t\tbreak;\n+\tdefault:\n+\t\treturn txgbe_encode_ptype_mac(ptype);\n+\t}\n+\n+\tswitch (ptype & RTE_PTYPE_L4_MASK) {\n+\tcase RTE_PTYPE_L4_TCP:\n+\t\tptid |= TXGBE_PTID_TYP_TCP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_L4_UDP:\n+\t\tptid |= TXGBE_PTID_TYP_UDP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_L4_SCTP:\n+\t\tptid |= TXGBE_PTID_TYP_SCTP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_L4_FRAG:\n+\t\tptid |= TXGBE_PTID_TYP_IPFRAG;\n+\t\tbreak;\n+\tdefault:\n+\t\tptid |= TXGBE_PTID_TYP_IPDATA;\n+\t\tbreak;\n+\t}\n+\n+\treturn ptid;\n+}\n+\n+static inline u8\n+txgbe_encode_ptype_tunnel(u32 ptype)\n+{\n+\tu8 ptid;\n+\n+\tptid = TXGBE_PTID_PKT_TUN;\n+\n+\tswitch (ptype & RTE_PTYPE_L3_MASK) {\n+\tcase RTE_PTYPE_L3_IPV4:\n+\tcase RTE_PTYPE_L3_IPV4_EXT:\n+\tcase RTE_PTYPE_L3_IPV4_EXT_UNKNOWN:\n+\t\tbreak;\n+\tcase RTE_PTYPE_L3_IPV6:\n+\tcase RTE_PTYPE_L3_IPV6_EXT:\n+\tcase RTE_PTYPE_L3_IPV6_EXT_UNKNOWN:\n+\t\tptid |= TXGBE_PTID_TUN_IPV6;\n+\t\tbreak;\n+\tdefault:\n+\t\treturn txgbe_encode_ptype_ip(ptype);\n+\t}\n+\n+\tswitch (ptype & RTE_PTYPE_TUNNEL_MASK) {\n+\tcase RTE_PTYPE_TUNNEL_IP:\n+\t\tptid |= TXGBE_PTID_TUN_EI;\n+\t\tbreak;\n+\tcase RTE_PTYPE_TUNNEL_GRE:\n+\t\tptid |= TXGBE_PTID_TUN_EIG;\n+\t\tbreak;\n+\tcase RTE_PTYPE_TUNNEL_VXLAN:\n+\tcase RTE_PTYPE_TUNNEL_VXLAN_GPE:\n+\tcase RTE_PTYPE_TUNNEL_NVGRE:\n+\tcase RTE_PTYPE_TUNNEL_GENEVE:\n+\tcase RTE_PTYPE_TUNNEL_GRENAT:\n+\t\tbreak;\n+\tdefault:\n+\t\treturn ptid;\n+\t}\n+\n+\tswitch (ptype & RTE_PTYPE_INNER_L2_MASK) {\n+\tcase RTE_PTYPE_INNER_L2_ETHER:\n+\t\tptid |= TXGBE_PTID_TUN_EIGM;\n+\t\tbreak;\n+\tcase RTE_PTYPE_INNER_L2_ETHER_VLAN:\n+\t\tptid |= TXGBE_PTID_TUN_EIGMV;\n+\t\tbreak;\n+\tcase RTE_PTYPE_INNER_L2_ETHER_QINQ:\n+\t\tptid |= TXGBE_PTID_TUN_EIGMV;\n+\t\treturn ptid;\n+\tdefault:\n+\t\tbreak;\n+\t}\n+\n+\tswitch (ptype & RTE_PTYPE_INNER_L3_MASK) {\n+\tcase RTE_PTYPE_INNER_L3_IPV4:\n+\tcase RTE_PTYPE_INNER_L3_IPV4_EXT:\n+\tcase RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN:\n+\t\tbreak;\n+\tcase RTE_PTYPE_INNER_L3_IPV6:\n+\tcase RTE_PTYPE_INNER_L3_IPV6_EXT:\n+\tcase RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN:\n+\t\tptid |= TXGBE_PTID_PKT_IPV6;\n+\t\tbreak;\n+\tdefault:\n+\t\treturn ptid;\n+\t}\n+\n+\tswitch (ptype & RTE_PTYPE_INNER_L4_MASK) {\n+\tcase RTE_PTYPE_INNER_L4_TCP:\n+\t\tptid |= TXGBE_PTID_TYP_TCP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_INNER_L4_UDP:\n+\t\tptid |= TXGBE_PTID_TYP_UDP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_INNER_L4_SCTP:\n+\t\tptid |= TXGBE_PTID_TYP_SCTP;\n+\t\tbreak;\n+\tcase RTE_PTYPE_INNER_L4_FRAG:\n+\t\tptid |= TXGBE_PTID_TYP_IPFRAG;\n+\t\tbreak;\n+\tdefault:\n+\t\tptid |= TXGBE_PTID_TYP_IPDATA;\n+\t\tbreak;\n+\t}\n+\n+\treturn ptid;\n+}\n+\n+u32 txgbe_decode_ptype(u8 ptid)\n+{\n+\tif (-1 != txgbe_etflt_id(ptid))\n+\t\treturn RTE_PTYPE_UNKNOWN;\n+\n+\treturn txgbe_ptype_lookup[ptid];\n+}\n+\n+u8 txgbe_encode_ptype(u32 ptype)\n+{\n+\tu8 ptid = 0;\n+\n+\tif (ptype & RTE_PTYPE_TUNNEL_MASK) {\n+\t\tptid = txgbe_encode_ptype_tunnel(ptype);\n+\t} else if (ptype & RTE_PTYPE_L3_MASK) {\n+\t\tptid = txgbe_encode_ptype_ip(ptype);\n+\t} else if (ptype & RTE_PTYPE_L2_MASK) {\n+\t\tptid = txgbe_encode_ptype_mac(ptype);\n+\t} else {\n+\t\tptid = TXGBE_PTID_NULL;\n+\t}\n+\n+\treturn ptid;\n+}\n+\n+/**\n+ * Use 2 different table for normal packet and tunnel packet\n+ * to save the space.\n+ */\n+const u32\n+txgbe_ptype_table[TXGBE_PTID_MAX] __rte_cache_aligned = {\n+\t[TXGBE_PT_ETHER] = RTE_PTYPE_L2_ETHER,\n+\t[TXGBE_PT_IPV4] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4,\n+\t[TXGBE_PT_IPV4_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP,\n+\t[TXGBE_PT_IPV4_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP,\n+\t[TXGBE_PT_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_SCTP,\n+\t[TXGBE_PT_IPV4_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT,\n+\t[TXGBE_PT_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_TCP,\n+\t[TXGBE_PT_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_UDP,\n+\t[TXGBE_PT_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_L4_SCTP,\n+\t[TXGBE_PT_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6,\n+\t[TXGBE_PT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP,\n+\t[TXGBE_PT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP,\n+\t[TXGBE_PT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_SCTP,\n+\t[TXGBE_PT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6_EXT,\n+\t[TXGBE_PT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_TCP,\n+\t[TXGBE_PT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_UDP,\n+\t[TXGBE_PT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV6_EXT | RTE_PTYPE_L4_SCTP,\n+\t[TXGBE_PT_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6,\n+\t[TXGBE_PT_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_IPV4_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_IPV4_EXT_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT,\n+\t[TXGBE_PT_IPV4_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_IPV4_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_IPV4_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4 | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT | RTE_PTYPE_TUNNEL_IP |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,\n+};\n+\n+const u32\n+txgbe_ptype_table_tn[TXGBE_PTID_MAX] __rte_cache_aligned = {\n+\t[TXGBE_PT_NVGRE] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER,\n+\t[TXGBE_PT_NVGRE_IPV4] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV4_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT,\n+\t[TXGBE_PT_NVGRE_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6,\n+\t[TXGBE_PT_NVGRE_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT,\n+\t[TXGBE_PT_NVGRE_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV4_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |\n+\t\tRTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_NVGRE_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |\n+\t\tRTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_NVGRE_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |\n+\t\tRTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP] =\n+\t\tRTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |\n+\t\tRTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV4_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |\n+\t\tRTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_NVGRE_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |\n+\t\tRTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_NVGRE_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6 |\n+\t\tRTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_NVGRE_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |\n+\t\tRTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_NVGRE_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV6_EXT |\n+\t\tRTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP] =\n+\t\tRTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |\n+\t\tRTE_PTYPE_TUNNEL_GRE | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_NVGRE_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4 |\n+\t\tRTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_NVGRE_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |\n+\t\tRTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_NVGRE_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |\n+\t\tRTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_NVGRE_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_TUNNEL_GRE |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4_EXT |\n+\t\tRTE_PTYPE_INNER_L4_UDP,\n+\n+\t[TXGBE_PT_VXLAN] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER,\n+\t[TXGBE_PT_VXLAN_IPV4] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV4_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4_EXT,\n+\t[TXGBE_PT_VXLAN_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6,\n+\t[TXGBE_PT_VXLAN_IPV4_IPV6] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT,\n+\t[TXGBE_PT_VXLAN_IPV4_IPV6_EXT] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV4_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_VXLAN_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_VXLAN_IPV4_IPV6_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV6_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP] =\n+\t\tRTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |\n+\t\tRTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV4_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_VXLAN_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_VXLAN_IPV6_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6 | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_VXLAN_IPV4_IPV6_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV6_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_UDP,\n+\t[TXGBE_PT_VXLAN_IPV6_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV6_EXT | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP] =\n+\t\tRTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4_EXT_UNKNOWN |\n+\t\tRTE_PTYPE_L4_UDP | RTE_PTYPE_TUNNEL_VXLAN |\n+\t\tRTE_PTYPE_INNER_L2_ETHER | RTE_PTYPE_INNER_L3_IPV4,\n+\t[TXGBE_PT_VXLAN_IPV4_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4 | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_VXLAN_IPV4_EXT_SCTP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_SCTP,\n+\t[TXGBE_PT_VXLAN_IPV4_EXT_TCP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_TCP,\n+\t[TXGBE_PT_VXLAN_IPV4_EXT_UDP] = RTE_PTYPE_L2_ETHER |\n+\t\tRTE_PTYPE_L3_IPV4_EXT_UNKNOWN | RTE_PTYPE_L4_UDP |\n+\t\tRTE_PTYPE_TUNNEL_VXLAN | RTE_PTYPE_INNER_L2_ETHER |\n+\t\tRTE_PTYPE_INNER_L3_IPV4_EXT | RTE_PTYPE_INNER_L4_UDP,\n+};\n+\ndiff --git a/drivers/net/txgbe/txgbe_ptypes.h b/drivers/net/txgbe/txgbe_ptypes.h\nnew file mode 100644\nindex 000000000..6af4b0ded\n--- /dev/null\n+++ b/drivers/net/txgbe/txgbe_ptypes.h\n@@ -0,0 +1,351 @@\n+/* SPDX-License-Identifier: BSD-3-Clause\n+ * Copyright(c) 2015-2020\n+ */\n+\n+#ifndef _TXGBE_PTYPE_H_\n+#define _TXGBE_PTYPE_H_\n+\n+/**\n+ * PTID(Packet Type Identifier, 8bits)\n+ * - Bit 3:0 detailed types.\n+ * - Bit 5:4 basic types.\n+ * - Bit 7:6 tunnel types.\n+ **/\n+#define TXGBE_PTID_NULL                 0\n+#define TXGBE_PTID_MAX                  256\n+#define TXGBE_PTID_MASK                 0xFF\n+#define TXGBE_PTID_MASK_TUNNEL          0x7F\n+\n+/* TUN */\n+#define TXGBE_PTID_TUN_IPV6             0x40\n+#define TXGBE_PTID_TUN_EI               0x00 /* IP */\n+#define TXGBE_PTID_TUN_EIG              0x10 /* IP+GRE */\n+#define TXGBE_PTID_TUN_EIGM             0x20 /* IP+GRE+MAC */\n+#define TXGBE_PTID_TUN_EIGMV            0x30 /* IP+GRE+MAC+VLAN */\n+\n+/* PKT for !TUN */\n+#define TXGBE_PTID_PKT_TUN             (0x80)\n+#define TXGBE_PTID_PKT_MAC             (0x10)\n+#define TXGBE_PTID_PKT_IP              (0x20)\n+#define TXGBE_PTID_PKT_FCOE            (0x30)\n+\n+/* TYP for PKT=mac */\n+#define TXGBE_PTID_TYP_MAC             (0x01)\n+#define TXGBE_PTID_TYP_TS              (0x02) /* time sync */\n+#define TXGBE_PTID_TYP_FIP             (0x03)\n+#define TXGBE_PTID_TYP_LLDP            (0x04)\n+#define TXGBE_PTID_TYP_CNM             (0x05)\n+#define TXGBE_PTID_TYP_EAPOL           (0x06)\n+#define TXGBE_PTID_TYP_ARP             (0x07)\n+#define TXGBE_PTID_TYP_ETF             (0x08)\n+\n+/* TYP for PKT=ip */\n+#define TXGBE_PTID_PKT_IPV6            (0x08)\n+#define TXGBE_PTID_TYP_IPFRAG          (0x01)\n+#define TXGBE_PTID_TYP_IPDATA          (0x02)\n+#define TXGBE_PTID_TYP_UDP             (0x03)\n+#define TXGBE_PTID_TYP_TCP             (0x04)\n+#define TXGBE_PTID_TYP_SCTP            (0x05)\n+\n+/* TYP for PKT=fcoe */\n+#define TXGBE_PTID_PKT_VFT             (0x08)\n+#define TXGBE_PTID_TYP_FCOE            (0x00)\n+#define TXGBE_PTID_TYP_FCDATA          (0x01)\n+#define TXGBE_PTID_TYP_FCRDY           (0x02)\n+#define TXGBE_PTID_TYP_FCRSP           (0x03)\n+#define TXGBE_PTID_TYP_FCOTHER         (0x04)\n+\n+/* packet type non-ip values */\n+enum txgbe_l2_ptids {\n+\tTXGBE_PTID_L2_ABORTED = (TXGBE_PTID_PKT_MAC),\n+\tTXGBE_PTID_L2_MAC = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_MAC),\n+\tTXGBE_PTID_L2_TMST = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_TS),\n+\tTXGBE_PTID_L2_FIP = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_FIP),\n+\tTXGBE_PTID_L2_LLDP = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_LLDP),\n+\tTXGBE_PTID_L2_CNM = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_CNM),\n+\tTXGBE_PTID_L2_EAPOL = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_EAPOL),\n+\tTXGBE_PTID_L2_ARP = (TXGBE_PTID_PKT_MAC | TXGBE_PTID_TYP_ARP),\n+\n+\tTXGBE_PTID_L2_IPV4_FRAG = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_IPFRAG),\n+\tTXGBE_PTID_L2_IPV4 = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_IPDATA),\n+\tTXGBE_PTID_L2_IPV4_UDP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_UDP),\n+\tTXGBE_PTID_L2_IPV4_TCP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_TCP),\n+\tTXGBE_PTID_L2_IPV4_SCTP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_TYP_SCTP),\n+\tTXGBE_PTID_L2_IPV6_FRAG = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |\n+\t\t\tTXGBE_PTID_TYP_IPFRAG),\n+\tTXGBE_PTID_L2_IPV6 = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |\n+\t\t\tTXGBE_PTID_TYP_IPDATA),\n+\tTXGBE_PTID_L2_IPV6_UDP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |\n+\t\t\tTXGBE_PTID_TYP_UDP),\n+\tTXGBE_PTID_L2_IPV6_TCP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |\n+\t\t\tTXGBE_PTID_TYP_TCP),\n+\tTXGBE_PTID_L2_IPV6_SCTP = (TXGBE_PTID_PKT_IP | TXGBE_PTID_PKT_IPV6 |\n+\t\t\tTXGBE_PTID_TYP_SCTP),\n+\n+\tTXGBE_PTID_L2_FCOE = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_TYP_FCOE),\n+\tTXGBE_PTID_L2_FCOE_FCDATA = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_TYP_FCDATA),\n+\tTXGBE_PTID_L2_FCOE_FCRDY = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_TYP_FCRDY),\n+\tTXGBE_PTID_L2_FCOE_FCRSP = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_TYP_FCRSP),\n+\tTXGBE_PTID_L2_FCOE_FCOTHER = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_TYP_FCOTHER),\n+\tTXGBE_PTID_L2_FCOE_VFT = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_PKT_VFT),\n+\tTXGBE_PTID_L2_FCOE_VFT_FCDATA = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCDATA),\n+\tTXGBE_PTID_L2_FCOE_VFT_FCRDY = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCRDY),\n+\tTXGBE_PTID_L2_FCOE_VFT_FCRSP = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCRSP),\n+\tTXGBE_PTID_L2_FCOE_VFT_FCOTHER = (TXGBE_PTID_PKT_FCOE |\n+\t\t\tTXGBE_PTID_PKT_VFT | TXGBE_PTID_TYP_FCOTHER),\n+\n+\tTXGBE_PTID_L2_TUN4_MAC = (TXGBE_PTID_PKT_TUN |\n+\t\t\tTXGBE_PTID_TUN_EIGM),\n+\tTXGBE_PTID_L2_TUN6_MAC = (TXGBE_PTID_PKT_TUN |\n+\t\t\tTXGBE_PTID_TUN_IPV6 | TXGBE_PTID_TUN_EIGM),\n+};\n+\n+\n+/*\n+ * PTYPE(Packet Type, 32bits)\n+ * - Bit 3:0 is for L2 types.\n+ * - Bit 7:4 is for L3 or outer L3 (for tunneling case) types.\n+ * - Bit 11:8 is for L4 or outer L4 (for tunneling case) types.\n+ * - Bit 15:12 is for tunnel types.\n+ * - Bit 19:16 is for inner L2 types.\n+ * - Bit 23:20 is for inner L3 types.\n+ * - Bit 27:24 is for inner L4 types.\n+ * - Bit 31:28 is reserved.\n+ * please ref to rte_mbuf.h: rte_mbuf.packet_type\n+ */\n+struct rte_txgbe_ptype {\n+\tu32 l2:4;  /* outer mac */\n+\tu32 l3:4;  /* outer internet protocol */\n+\tu32 l4:4;  /* outer transport protocol */\n+\tu32 tun:4; /* tunnel protocol */\n+\n+\tu32 el2:4; /* inner mac */\n+\tu32 el3:4; /* inner internet protocol */\n+\tu32 el4:4; /* inner transport protocol */\n+\tu32 rsv:3;\n+\tu32 known:1;\n+};\n+\n+#ifndef RTE_PTYPE_UNKNOWN\n+#define RTE_PTYPE_UNKNOWN                   0x00000000\n+#define RTE_PTYPE_L2_ETHER                  0x00000001\n+#define RTE_PTYPE_L2_ETHER_TIMESYNC         0x00000002\n+#define RTE_PTYPE_L2_ETHER_ARP              0x00000003\n+#define RTE_PTYPE_L2_ETHER_LLDP             0x00000004\n+#define RTE_PTYPE_L2_ETHER_NSH              0x00000005\n+#define RTE_PTYPE_L2_ETHER_FCOE             0x00000009\n+#define RTE_PTYPE_L3_IPV4                   0x00000010\n+#define RTE_PTYPE_L3_IPV4_EXT               0x00000030\n+#define RTE_PTYPE_L3_IPV6                   0x00000040\n+#define RTE_PTYPE_L3_IPV4_EXT_UNKNOWN       0x00000090\n+#define RTE_PTYPE_L3_IPV6_EXT               0x000000c0\n+#define RTE_PTYPE_L3_IPV6_EXT_UNKNOWN       0x000000e0\n+#define RTE_PTYPE_L4_TCP                    0x00000100\n+#define RTE_PTYPE_L4_UDP                    0x00000200\n+#define RTE_PTYPE_L4_FRAG                   0x00000300\n+#define RTE_PTYPE_L4_SCTP                   0x00000400\n+#define RTE_PTYPE_L4_ICMP                   0x00000500\n+#define RTE_PTYPE_L4_NONFRAG                0x00000600\n+#define RTE_PTYPE_TUNNEL_IP                 0x00001000\n+#define RTE_PTYPE_TUNNEL_GRE                0x00002000\n+#define RTE_PTYPE_TUNNEL_VXLAN              0x00003000\n+#define RTE_PTYPE_TUNNEL_NVGRE              0x00004000\n+#define RTE_PTYPE_TUNNEL_GENEVE             0x00005000\n+#define RTE_PTYPE_TUNNEL_GRENAT             0x00006000\n+#define RTE_PTYPE_INNER_L2_ETHER            0x00010000\n+#define RTE_PTYPE_INNER_L2_ETHER_VLAN       0x00020000\n+#define RTE_PTYPE_INNER_L3_IPV4             0x00100000\n+#define RTE_PTYPE_INNER_L3_IPV4_EXT         0x00200000\n+#define RTE_PTYPE_INNER_L3_IPV6             0x00300000\n+#define RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN 0x00400000\n+#define RTE_PTYPE_INNER_L3_IPV6_EXT         0x00500000\n+#define RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN 0x00600000\n+#define RTE_PTYPE_INNER_L4_TCP              0x01000000\n+#define RTE_PTYPE_INNER_L4_UDP              0x02000000\n+#define RTE_PTYPE_INNER_L4_FRAG             0x03000000\n+#define RTE_PTYPE_INNER_L4_SCTP             0x04000000\n+#define RTE_PTYPE_INNER_L4_ICMP             0x05000000\n+#define RTE_PTYPE_INNER_L4_NONFRAG          0x06000000\n+#endif /* !RTE_PTYPE_UNKNOWN */\n+#define RTE_PTYPE_L3_IPV4u                  RTE_PTYPE_L3_IPV4_EXT_UNKNOWN\n+#define RTE_PTYPE_L3_IPV6u                  RTE_PTYPE_L3_IPV6_EXT_UNKNOWN\n+#define RTE_PTYPE_INNER_L3_IPV4u            RTE_PTYPE_INNER_L3_IPV4_EXT_UNKNOWN\n+#define RTE_PTYPE_INNER_L3_IPV6u            RTE_PTYPE_INNER_L3_IPV6_EXT_UNKNOWN\n+#define RTE_PTYPE_L2_ETHER_FIP              RTE_PTYPE_L2_ETHER\n+#define RTE_PTYPE_L2_ETHER_CNM              RTE_PTYPE_L2_ETHER\n+#define RTE_PTYPE_L2_ETHER_EAPOL            RTE_PTYPE_L2_ETHER\n+#define RTE_PTYPE_L2_ETHER_FILTER           RTE_PTYPE_L2_ETHER\n+\n+u32 *txgbe_get_supported_ptypes(void);\n+u32 txgbe_decode_ptype(u8 ptid);\n+u8 txgbe_encode_ptype(u32 ptype);\n+\n+/**\n+ * PT(Packet Type, 32bits)\n+ * - Bit 3:0 is for L2 types.\n+ * - Bit 7:4 is for L3 or outer L3 (for tunneling case) types.\n+ * - Bit 11:8 is for L4 or outer L4 (for tunneling case) types.\n+ * - Bit 15:12 is for tunnel types.\n+ * - Bit 19:16 is for inner L2 types.\n+ * - Bit 23:20 is for inner L3 types.\n+ * - Bit 27:24 is for inner L4 types.\n+ * - Bit 31:28 is reserved.\n+ * PT is a more accurate version of PTYPE\n+ **/\n+#define TXGBE_PT_ETHER                   0x00\n+#define TXGBE_PT_IPV4                    0x01\n+#define TXGBE_PT_IPV4_TCP                0x11\n+#define TXGBE_PT_IPV4_UDP                0x21\n+#define TXGBE_PT_IPV4_SCTP               0x41\n+#define TXGBE_PT_IPV4_EXT                0x03\n+#define TXGBE_PT_IPV4_EXT_TCP            0x13\n+#define TXGBE_PT_IPV4_EXT_UDP            0x23\n+#define TXGBE_PT_IPV4_EXT_SCTP           0x43\n+#define TXGBE_PT_IPV6                    0x04\n+#define TXGBE_PT_IPV6_TCP                0x14\n+#define TXGBE_PT_IPV6_UDP                0x24\n+#define TXGBE_PT_IPV6_SCTP               0x44\n+#define TXGBE_PT_IPV6_EXT                0x0C\n+#define TXGBE_PT_IPV6_EXT_TCP            0x1C\n+#define TXGBE_PT_IPV6_EXT_UDP            0x2C\n+#define TXGBE_PT_IPV6_EXT_SCTP           0x4C\n+#define TXGBE_PT_IPV4_IPV6               0x05\n+#define TXGBE_PT_IPV4_IPV6_TCP           0x15\n+#define TXGBE_PT_IPV4_IPV6_UDP           0x25\n+#define TXGBE_PT_IPV4_IPV6_SCTP          0x45\n+#define TXGBE_PT_IPV4_EXT_IPV6           0x07\n+#define TXGBE_PT_IPV4_EXT_IPV6_TCP       0x17\n+#define TXGBE_PT_IPV4_EXT_IPV6_UDP       0x27\n+#define TXGBE_PT_IPV4_EXT_IPV6_SCTP      0x47\n+#define TXGBE_PT_IPV4_IPV6_EXT           0x0D\n+#define TXGBE_PT_IPV4_IPV6_EXT_TCP       0x1D\n+#define TXGBE_PT_IPV4_IPV6_EXT_UDP       0x2D\n+#define TXGBE_PT_IPV4_IPV6_EXT_SCTP      0x4D\n+#define TXGBE_PT_IPV4_EXT_IPV6_EXT       0x0F\n+#define TXGBE_PT_IPV4_EXT_IPV6_EXT_TCP   0x1F\n+#define TXGBE_PT_IPV4_EXT_IPV6_EXT_UDP   0x2F\n+#define TXGBE_PT_IPV4_EXT_IPV6_EXT_SCTP  0x4F\n+\n+#define TXGBE_PT_NVGRE                   0x00\n+#define TXGBE_PT_NVGRE_IPV4              0x01\n+#define TXGBE_PT_NVGRE_IPV4_TCP          0x11\n+#define TXGBE_PT_NVGRE_IPV4_UDP          0x21\n+#define TXGBE_PT_NVGRE_IPV4_SCTP         0x41\n+#define TXGBE_PT_NVGRE_IPV4_EXT          0x03\n+#define TXGBE_PT_NVGRE_IPV4_EXT_TCP      0x13\n+#define TXGBE_PT_NVGRE_IPV4_EXT_UDP      0x23\n+#define TXGBE_PT_NVGRE_IPV4_EXT_SCTP     0x43\n+#define TXGBE_PT_NVGRE_IPV6              0x04\n+#define TXGBE_PT_NVGRE_IPV6_TCP          0x14\n+#define TXGBE_PT_NVGRE_IPV6_UDP          0x24\n+#define TXGBE_PT_NVGRE_IPV6_SCTP         0x44\n+#define TXGBE_PT_NVGRE_IPV6_EXT          0x0C\n+#define TXGBE_PT_NVGRE_IPV6_EXT_TCP      0x1C\n+#define TXGBE_PT_NVGRE_IPV6_EXT_UDP      0x2C\n+#define TXGBE_PT_NVGRE_IPV6_EXT_SCTP     0x4C\n+#define TXGBE_PT_NVGRE_IPV4_IPV6         0x05\n+#define TXGBE_PT_NVGRE_IPV4_IPV6_TCP     0x15\n+#define TXGBE_PT_NVGRE_IPV4_IPV6_UDP     0x25\n+#define TXGBE_PT_NVGRE_IPV4_IPV6_EXT     0x0D\n+#define TXGBE_PT_NVGRE_IPV4_IPV6_EXT_TCP 0x1D\n+#define TXGBE_PT_NVGRE_IPV4_IPV6_EXT_UDP 0x2D\n+\n+#define TXGBE_PT_VXLAN                   0x80\n+#define TXGBE_PT_VXLAN_IPV4              0x81\n+#define TXGBE_PT_VXLAN_IPV4_TCP          0x91\n+#define TXGBE_PT_VXLAN_IPV4_UDP          0xA1\n+#define TXGBE_PT_VXLAN_IPV4_SCTP         0xC1\n+#define TXGBE_PT_VXLAN_IPV4_EXT          0x83\n+#define TXGBE_PT_VXLAN_IPV4_EXT_TCP      0x93\n+#define TXGBE_PT_VXLAN_IPV4_EXT_UDP      0xA3\n+#define TXGBE_PT_VXLAN_IPV4_EXT_SCTP     0xC3\n+#define TXGBE_PT_VXLAN_IPV6              0x84\n+#define TXGBE_PT_VXLAN_IPV6_TCP          0x94\n+#define TXGBE_PT_VXLAN_IPV6_UDP          0xA4\n+#define TXGBE_PT_VXLAN_IPV6_SCTP         0xC4\n+#define TXGBE_PT_VXLAN_IPV6_EXT          0x8C\n+#define TXGBE_PT_VXLAN_IPV6_EXT_TCP      0x9C\n+#define TXGBE_PT_VXLAN_IPV6_EXT_UDP      0xAC\n+#define TXGBE_PT_VXLAN_IPV6_EXT_SCTP     0xCC\n+#define TXGBE_PT_VXLAN_IPV4_IPV6         0x85\n+#define TXGBE_PT_VXLAN_IPV4_IPV6_TCP     0x95\n+#define TXGBE_PT_VXLAN_IPV4_IPV6_UDP     0xA5\n+#define TXGBE_PT_VXLAN_IPV4_IPV6_EXT     0x8D\n+#define TXGBE_PT_VXLAN_IPV4_IPV6_EXT_TCP 0x9D\n+#define TXGBE_PT_VXLAN_IPV4_IPV6_EXT_UDP 0xAD\n+\n+#define TXGBE_PT_MAX    256\n+extern const u32 txgbe_ptype_table[TXGBE_PT_MAX];\n+extern const u32 txgbe_ptype_table_tn[TXGBE_PT_MAX];\n+\n+\n+/* ether type filter list: one static filter per filter consumer. This is\n+ *                 to avoid filter collisions later. Add new filters\n+ *                 here!!\n+ *      EAPOL 802.1x (0x888e): Filter 0\n+ *      FCoE (0x8906):   Filter 2\n+ *      1588 (0x88f7):   Filter 3\n+ *      FIP  (0x8914):   Filter 4\n+ *      LLDP (0x88CC):   Filter 5\n+ *      LACP (0x8809):   Filter 6\n+ *      FC   (0x8808):   Filter 7\n+ */\n+#define TXGBE_ETF_ID_EAPOL        0\n+#define TXGBE_ETF_ID_FCOE         2\n+#define TXGBE_ETF_ID_1588         3\n+#define TXGBE_ETF_ID_FIP          4\n+#define TXGBE_ETF_ID_LLDP         5\n+#define TXGBE_ETF_ID_LACP         6\n+#define TXGBE_ETF_ID_FC           7\n+#define TXGBE_ETF_ID_MAX          8\n+\n+#define TXGBE_PTID_ETF_MIN  0x18\n+#define TXGBE_PTID_ETF_MAX  0x1F\n+static inline int txgbe_etflt_id(u8 ptid)\n+{\n+\tif (ptid >= TXGBE_PTID_ETF_MIN && ptid <= TXGBE_PTID_ETF_MAX)\n+\t\treturn ptid - TXGBE_PTID_ETF_MIN;\n+\telse\n+\t\treturn -1;\n+}\n+\n+struct txgbe_udphdr {\n+\t__be16\tsource;\n+\t__be16\tdest;\n+\t__be16\tlen;\n+\t__be16\tcheck;\n+};\n+\n+struct txgbe_vxlanhdr {\n+\t__be32 vx_flags;\n+\t__be32 vx_vni;\n+};\n+\n+struct txgbe_genevehdr {\n+\tu8 opt_len:6;\n+\tu8 ver:2;\n+\tu8 rsvd1:6;\n+\tu8 critical:1;\n+\tu8 oam:1;\n+\t__be16 proto_type;\n+\n+\tu8 vni[3];\n+\tu8 rsvd2;\n+};\n+\n+struct txgbe_nvgrehdr {\n+\t__be16 flags;\n+\t__be16 proto;\n+\t__be32 tni;\n+};\n+\n+#endif /* _TXGBE_PTYPE_H_ */\ndiff --git a/drivers/net/txgbe/txgbe_rxtx.h b/drivers/net/txgbe/txgbe_rxtx.h\nindex 1a02f8fde..62a512568 100644\n--- a/drivers/net/txgbe/txgbe_rxtx.h\n+++ b/drivers/net/txgbe/txgbe_rxtx.h\n@@ -65,8 +65,6 @@ struct txgbe_tx_desc {\n #define RX_RING_SZ ((TXGBE_RING_DESC_MAX + RTE_PMD_TXGBE_RX_MAX_BURST) * \\\n \t\t    sizeof(struct txgbe_rx_desc))\n \n-#define TXGBE_PTID_MASK                 0xFF\n-\n #define RTE_TXGBE_REGISTER_POLL_WAIT_10_MS  10\n #define RTE_TXGBE_WAIT_100_US               100\n \n",
    "prefixes": [
        "v2",
        "23/56"
    ]
}