get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 18184,
    "url": "http://patches.dpdk.org/api/patches/18184/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1482180853-18823-28-git-send-email-hemant.agrawal@nxp.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1482180853-18823-28-git-send-email-hemant.agrawal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1482180853-18823-28-git-send-email-hemant.agrawal@nxp.com",
    "date": "2016-12-19T20:54:06",
    "name": "[dpdk-dev,PATCHv2,27/34] net/dpaa2: rx packet parsing and packet type support",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "2b3127d874fd700bac026ef9e25642049f13bee7",
    "submitter": {
        "id": 477,
        "url": "http://patches.dpdk.org/api/people/477/?format=api",
        "name": "Hemant Agrawal",
        "email": "hemant.agrawal@nxp.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1482180853-18823-28-git-send-email-hemant.agrawal@nxp.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/18184/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/18184/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 96532FB16;\n\tMon, 19 Dec 2016 16:22:35 +0100 (CET)",
            "from NAM02-BL2-obe.outbound.protection.outlook.com\n\t(mail-bl2nam02on0040.outbound.protection.outlook.com [104.47.38.40])\n\tby dpdk.org (Postfix) with ESMTP id A5AEAFAF3\n\tfor <dev@dpdk.org>; Mon, 19 Dec 2016 16:22:07 +0100 (CET)",
            "from DM5PR03CA0018.namprd03.prod.outlook.com (10.175.104.28) by\n\tBN1PR0301MB0737.namprd03.prod.outlook.com (10.160.78.144) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.789.14; Mon, 19 Dec 2016 15:22:06 +0000",
            "from BN1BFFO11FD032.protection.gbl (2a01:111:f400:7c10::1:178) by\n\tDM5PR03CA0018.outlook.office365.com (2603:10b6:3:118::28) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id\n\t15.1.789.14 via Frontend Transport; Mon, 19 Dec 2016 15:22:06 +0000",
            "from az84smr01.freescale.net (192.88.158.2) by\n\tBN1BFFO11FD032.mail.protection.outlook.com (10.58.144.95) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.789.10\n\tvia Frontend Transport; Mon, 19 Dec 2016 15:22:05 +0000",
            "from bf-netperf1.idc ([10.232.134.28])\n\tby az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tuBJFKMhq029110; Mon, 19 Dec 2016 08:22:02 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.158.2)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none; nxp.com; dmarc=fail action=none header.from=nxp.com;\n\tnxp.com; \n\tdkim=none (message not signed) header.d=none;",
        "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.158.2 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.158.2; helo=az84smr01.freescale.net;",
        "From": "Hemant Agrawal <hemant.agrawal@nxp.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,\n\t<shreyansh.jain@nxp.com>, <john.mcnamara@intel.com>,\n\t<ferruh.yigit@intel.com>, <jerin.jacob@caviumnetworks.com>,\n\tHemant Agrawal <hemant.agrawal@nxp.com>",
        "Date": "Tue, 20 Dec 2016 02:24:06 +0530",
        "Message-ID": "<1482180853-18823-28-git-send-email-hemant.agrawal@nxp.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com>",
        "References": "<1480875447-23680-1-git-send-email-hemant.agrawal@nxp.com>\n\t<1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com>",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131266345259336788;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()",
        "X-Forefront-Antispam-Report": "CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(7916002)(39410400002)(39860400002)(39380400002)(39840400002)(39850400002)(39400400002)(39450400003)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(33646002)(36756003)(2906002)(77096006)(104016004)(68736007)(4326007)(85426001)(38730400001)(47776003)(356003)(8666005)(189998001)(81166006)(50466002)(8676002)(97736004)(2950100002)(81156014)(76176999)(50986999)(305945005)(110136003)(48376002)(50226002)(5003940100001)(86362001)(5660300001)(2351001)(626004)(6916009)(92566002)(69596002)(105606002)(8936002)(106466001)(7059030);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0737;\n\tH:az84smr01.freescale.net; \n\tFPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN1BFFO11FD032;\n\t1:YZfl1JRBOP+lRp1J8JOPUIYwWgXQou6fiSBCtoOXd28cV/ywU0fYq6PMhCLIFxSOKpSyJFEhWd5GTF7rYAhOxSALaL0GbEhSgnBdJQ1PWhCpq1Jd+QyfL0VJD/WuoEqmnMUMie28y3duXpgLvXvDut3In6/HCzoJRD1AnC2sSFCuOZIEvVJwj6hGPqfea3sAvJkV7qMF3QC/u0p/GXtmTJ2gx0cystAK3cRlAZKSQuhEGFBvRhusnlqKmKRcdoBA1YtPCqq1IuzjIpHeCUExUdtBRfZhzeeRVcz8zra5O78dfQl7a+ejkPyyEr6nayTuYK7XFVr3SAED6epL6dRRqxV5De4LDKGDuaOMxkkj9A6vtV/7xAY2mo70hqlT3pXhx2JYv14AEjN6YAR2g2GLclzo8WJvesG7oFCRUgJ68ALkI0GLUllsMt4uc/8D9mz/Uz2LAYiGeA+F7O5ZwdCmOjJ/xZxLpRL9C1g+DsqDV86H47Yn15qCPkUmMcQuG9KU9k0JwGcC+VMCaWQQy31Ndx3aHST/mpicb7pEDfF3w/GN9HAdgeW+sf1pz+UbwBnNj4W6TpPrcCMN6AFWjsfZHKjBqpT2Jh8We7devCdlXojspWTQa6pBywENI13Cc+PmWlGcqo9KLBQgAspiYMH6GC2YOdKUgys5ytx421NAGIB4c0HVX8STcNCrSV4B7Sfq8qGKla3DFvhZiWtuqNRAAG7aeADO2lNsOAnMUnWHmntzsJgUkB1lSncdHdXOke6MKExPk8myCnPn3JDWu3VdfA==",
            "1; BN1PR0301MB0737;\n\t3:TRM+bRs8th0mCTbwEFkI5yhgYkT2fDKtFeBbF50QHyo3MhnJT7ku2jXN4aB7eshqM94d2/mDuDmdMdAdSr2D3wcnZkETLQd5AGikXQA9n6taYBGjLcv+knssJRDz7c4056v8/Y5ZH3WHSP6vM5rj1H1fK7zoM0AoTOfBs203yRqYPtq2KQI8xxh6awvdaBb1bw/oPRmzTW1TVbR6f9UqKvtSFX8dIfWQ4cSKbYKKvrvSXnw5/hYP5arIUWKQOvOlVtcJBSE70wFEnXnmSowIYDxLWTk+JgzgOWe2kcCjxxHlmPIPT8utkjFcCQK3rGeNi4n5EG1rdf9ASWq3i8jmEwbo3mQ1NcERksCSRoHAq3rXRawqKFu3o9Bza76ai4X5;\n\t25:8olISV7wnV47Es0vf6M6Wa2ZvkHJt/y75cvM1rU/kxbPQEsmuUhvcGnF3dEep78SugI0sRVZnuCIpEjF5SvsTXSwB+cr9EaqKSdOfqKiCy1NWw0dTx2mM0EyhfkxmKGPmOKs+k807H0r8QxcWFAiHRhQHWQRQIqQw1FVQA+VIJWFk95Pfm7zgOeHYrUHw43WVwoXsSJniovPmADxjdIRS5E06skJaym+1uzUZGsOYPuvf2DQqqK6cvAe1rTK1ZjkPMv06KXfzdeZ/UjiTqw0fLjW6gSq8OjbR4PSd6SJOJ4EaDCrFhhuj3s5stMyhTLcmzo31d/Srr0NOs27fNttyZ8444xKkVQjcevmnJC+hNGmkH1u6Xd77VhchWk7Az6rDPtmoL/tCYjxBHTQdAyYqVejb7pBcIjhnEjY68SXkzIniQM8IMGkoa/MqQAR6HWQylkUJM0tEDLh8vGCxcXmbQ==",
            "1; BN1PR0301MB0737;\n\t31:PY+udq6DLyBOXMTomQwHSRE4iY9W9uNdM0YHMxPPJe/JChGTZJrINUwcyFXJpNG8WarZXlJUxiw3lFjSQIDIce5oCwihS3Fzv99gUhaVeP3yh5Fe0yhhtSCT9qzBqRFcOp74Mo/av6mDpqIVQIdnt6+Zm3lcHUj9cohwopUNkE9CiuMBeU47SDILWvVHxT+VuaUAWPSRGH0PFF6w04cOug8gGn4KQJ0tpbbX91MWgfChJk/FO+Nn9xOP4O3c1c2PojhlFK+XraaNIpTSYMSxvbAYfPmZfMJM4/3FlZptyHw=",
            "1; BN1PR0301MB0737;\n\t4:d31kg1XytCAGrptYRlrtd5dmr1TF5N9tiTk/WlXmmnrKeobQOGbjetu83JMREQKx22sXbm5UWZKt4TwvgE6Fj+DDG2/O9PPSvXv1kdOWfjnOa8B9bT40+icPto5oohjpy7ckrbhxdH/9YvcqoIsE0w93bJk1RHTxtv3Kv+yAap/AHWuRHba4MRhNUCBslNZFxwCleTC7st1cBWkH0UKTZXIACDYQ5FHOmgu9aV4yhwCY/3B5btMzIqOCUCmO8eB4R/PeXbukUI7Fw3TYchWNVC6Wgw9ILX5RR3wpx2kKWsQpJVlPHwhRGzG2lpcTLMWidb97oHIo1hfhKYh0LD+zNmnldta4qaD+woB2OdFj99OIi0eSmy0E3jnSjDY/iJgB+4fWtdLUC6mPM4+rOTWx7a7328eMjL4+ZYrIxJ5Tq5+niKwHxz4B3xxeFb9Fus1c3+rvEkm21fmhXh03QBr51QzCCGilZwk8Uc2tGA6Ht5Cdxm8MLLWO8gsr9Or0uNLk5VZk2VcilJSVNei0UxWuEdN4t2lN1vmBzNTY4n14aL5b0wr10JtcfJ8nhJ8DeyC9jMSA/AorqpWxJxDPFSn8an3RtmOgcwpAsLrRErZW2B2sXTELJAUIQBAxJX/Dtitdox7fn2a6ArNgzXC2iQTUd2hZlu8bQZCEUeBLgQNsaqHEL45oC2nFIQfulaY572wttSSVCTUadyK2pxQ415RObgahuN7lQrkWRLLkaJ8a1oex8l60ra8tYuVD+0jyEnX2",
            "=?us-ascii?Q?1; BN1PR0301MB0737;\n\t23:Kj+EYkyVJTgjwrkmX++wMWY38yAeIX5kA1nOmXm?=\n\tKr3RX3KKsoyKKZwR0+oPNQZH2Bvj3Wo8BfDl8jdUtieMShl04EYgOl86sNg4QYcbanCuF+JVrUx9XybRP2kX0Z6Lo16JmmWyGkLFBEYJ5L6qkctikT1Vw7cHUHFYn69ZrHxLH8CEu+L9RLpNFJv4669qFgU8lPsQWpVhGggHNvhIhB/bKMXJyc3n9++QvLCOb3xvecUEDetnMY6o4Z0VbQUElSr0YKMX42y6vpXO5D9fQeMwjKgz04x9/J4EPwtYoW6ATRLi7NSbx1awo3pGdsosZW0YL9dYUPDTaqGqtpsNRCwV5gtAbg5RfGhQGs9Si99qwJxcbZKzhZJuCe+8umUPTi/DvgB1flLij79e0b88VNQ7ANJEx/l0ihF/wxJk4JICagtmBiYVIxr7JJoe5pwDXfR9z9OP9dLFScePWXTxNTGb5kEYXxKoFT/TwHZt6nhUnnSVbJkver4pENgpTB/xuwBLr+2Cs7KPAKEVsw28cZZfWnZjMGWyQcETVhyhLLLFoaPyDQV57lOjTnufB1cLAChu1u5ovU8daq0KKMv3ixZcY24wYpO3Pe9BNmGnQmtZzDPvQQ4WWBiDtGlkAZOnGtyfyiJin8VVR9Mo+g3Zx0f3+2hATW17Gyo5N0Mp3opdr/wDy204qZHrXe7CxwHR9xbpMRgQPqSzCDt3SHANvMqwXQKsrGwBP2NV81qFJtIjz0an6Fnb0NUFrTAZSBIplLPRc8dZuruCVCnoeRJEpTSnbYCf4arqGYQ/AKFN4wfiP9uEbxC73D5UpbrCI8Vs0aE7cmnQGvTYi302+BvGq3rgvFk31kaUvnoXhJvXF3/tPGFnqpyE2Qq/FDXp973wTDX1qRwIsojEdsicYv6d2PFJsogso9dXHUQ1kGKO07L7nvVKU2QHsiEzEXkFn0gNIDKCW9O2vTVu2RXUGVwuhlZRBhIE5/Ra/QSqYn5aYrKl+qX0Jmamlh77jE3TX5XMftQp3DjUXEOPy7QMFDgt+09eqCeo1NyoYKP7nlqR+VxuxHCbYf1j/A4VXmQP0iM0jwaQBa4n8W3/SgeLkyTBl1m3yOniZETKt5HdjlXKeG81829C2GMydKZnkI2a04lhYuxGFk1G0JuXdLUpqKYQtJ87XCJ2bJcE7R9zfej7XBwy7PyoM+FPTvAC8/I1qaf6TZa44fXUN6fRnvqLhBSNA5lzViKBu8P5Skieom1m34xZIDqo18pu2bZpGXKMLwLi+5uvit1C83R2OFvl16gm/gw==",
            "1; BN1PR0301MB0737;\n\t6:Cy41j8gGssWmGOE4r8OrTp0ndP4ZmUgxEb4iFdieKkx28uEybBQTpXCVVCq6AyLOLWFwCuKwPVTlDuKCjXHbbrbj+/tnzcxHZidtS5qLTuY5OlTEd/XrlvNgpR0SuP1Xo9MtD1nIB2NOL9/XurAi8QA0rlTMK0eDl7L0pViocpnkECmsbD0gmlaAcw9tLCOjQbxfq/dOZiLXmB3kmqDI72s6/7YyOugMb2SNvnrqj8jfWRB+NvXiHNdEe4HZeWOgu8o2zA1inH0TKRH8bTGFbh6b802Cq3SGfPRlq73xbGa6Ykse1n5LlpHhH63v+da0uaI4sts7uPRrz4nKgKYStISiAH9u6s+WIBGknGj6WcOYdeT4Ou2DCTJxSTasJAhOk6wfgIRCn/3T+eEcuEWNBx44URqNnnDhIGi8DKcDHgL5N4/Wu5mUbCiw0NTG6YZE;\n\t5:EiY93UpQbpxK7+rTseL02C2ujAChEB+qCsKlEHjDh2y0VBAyqfhhU67APZC+lq/4dC7GXDZFL7F+8kdeDCosbnGtgTEfi6W+AF9Oqcv6kAH4kNHg+8J7NIpEnm/KJL0hXBIJ64K5CScSMMjCL5ihLMwCbTmvmjH8c0ki5z1GqRgwVjZoWRb+/jmjozXRXi1X;\n\t24:esIDg3RYjHFRk7RZ7dEBa7Zj3eYbv3Dwn1059L/nFpX620Wf9ZG9ybWL/cd60wdPkxnTJgm/WJYQtcUN7vspfcKLHUYKgMEawxXh8LIwu98=",
            "1; BN1PR0301MB0737;\n\t7:kio1Tv5Wq7R/QsyFoOXleJHtBP7piUj/Yyf61uxDT5v4i6VLsZYaqrYjR915DXkMm7xtpnRBX9t1rX7YeTymJNC2gASTkJfj4aWFpS0VaMZf6cz7joCZcVFml7ISCR4urdEHG/dP4GWojlw/dmBgwPqdNUTHmIppJfhXLKpbQEOl3Cr/tZvt98T5YVXsXdIlb9IVCO1NJ4WKYTv8TDUEuhIG6zGaS+FNWR/nxRADTIFbOkxKkDRAZNGk2MUHW3wdDwnWR0q547neXmrSlLwudCVYvCkG40Dks6xiS22kDMLTSmhp6RqzDfzw9MAoDmKlqBZNwftA+ZTtyM8L68lJSyOvIeQNA29LX04qWsvQqE3qBq8KvMPrC3ZHHVJhMVIZbmnNiJR2mLdpVraUy1SnnFT36h6SvZVPExWOjh/90E5uv8hL2NZCi8eq4DSnL50EI94qEO3/U+62J+3haxALww=="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-Office365-Filtering-Correlation-Id": "b4994d65-cc5e-4f45-22f3-08d42822ca9a",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:BN1PR0301MB0737; ",
        "X-Microsoft-Antispam-PRVS": "<BN1PR0301MB0737F714390677BF6D041FE789910@BN1PR0301MB0737.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6095060)(601004)(2401047)(8121501046)(13018025)(13015025)(5005006)(13024025)(13023025)(13017025)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123565025)(20161123556025)(20161123563025);\n\tSRVR:BN1PR0301MB0737; BCL:0; PCL:0; RULEID:(400006);\n\tSRVR:BN1PR0301MB0737; ",
        "X-Forefront-PRVS": "01613DFDC8",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "19 Dec 2016 15:22:05.6840\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Id": "5afe0b00-7697-4969-b663-5eab37d5f47e",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.158.2]; \n\tHelo=[az84smr01.freescale.net]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN1PR0301MB0737",
        "Subject": "[dpdk-dev] [PATCHv2 27/34] net/dpaa2: rx packet parsing and packet\n\ttype support",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>\n---\n doc/guides/nics/features/dpaa2.ini           |   1 +\n drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 257 +++++++++++++++++++++++++++\n drivers/net/dpaa2/dpaa2_ethdev.c             |  23 +++\n drivers/net/dpaa2/dpaa2_rxtx.c               |  91 +++++++++-\n 4 files changed, 371 insertions(+), 1 deletion(-)\n create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h",
    "diff": "diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini\nindex a6b7964..0746d4b 100644\n--- a/doc/guides/nics/features/dpaa2.ini\n+++ b/doc/guides/nics/features/dpaa2.ini\n@@ -10,6 +10,7 @@ Promiscuous mode     = Y\n RSS hash             = Y\n L3 checksum offload  = Y\n L4 checksum offload  = Y\n+Packet type parsing  = Y\n Linux VFIO           = Y\n ARMv8                = Y\n Usage doc            = Y\ndiff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h\nnew file mode 100644\nindex 0000000..9324c6a\n--- /dev/null\n+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h\n@@ -0,0 +1,257 @@\n+/*-\n+ *   BSD LICENSE\n+ *\n+ *   Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.\n+ *   Copyright (c) 2016 NXP. All rights reserved.\n+ *\n+ *   Redistribution and use in source and binary forms, with or without\n+ *   modification, are permitted provided that the following conditions\n+ *   are met:\n+ *\n+ *     * Redistributions of source code must retain the above copyright\n+ *       notice, this list of conditions and the following disclaimer.\n+ *     * Redistributions in binary form must reproduce the above copyright\n+ *       notice, this list of conditions and the following disclaimer in\n+ *       the documentation and/or other materials provided with the\n+ *       distribution.\n+ *     * Neither the name of Freescale Semiconductor, Inc nor the names of its\n+ *       contributors may be used to endorse or promote products derived\n+ *       from this software without specific prior written permission.\n+ *\n+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n+ *   \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n+ */\n+\n+/**\n+ * @file\n+ *\n+ * DPNI packet parse results - implementation internal\n+ */\n+\n+#ifndef _DPAA2_HW_DPNI_ANNOT_H_\n+#define _DPAA2_HW_DPNI_ANNOT_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/* Annotation valid bits in FD FRC */\n+#define DPAA2_FD_FRC_FASV\t0x8000\n+#define DPAA2_FD_FRC_FAEADV\t0x4000\n+#define DPAA2_FD_FRC_FAPRV\t0x2000\n+#define DPAA2_FD_FRC_FAIADV\t0x1000\n+#define DPAA2_FD_FRC_FASWOV\t0x0800\n+#define DPAA2_FD_FRC_FAICFDV\t0x0400\n+\n+/* Annotation bits in FD CTRL */\n+#define DPAA2_FD_CTRL_ASAL\t0x00020000      /* ASAL = 128 */\n+#define DPAA2_FD_CTRL_PTA\t0x00800000\n+#define DPAA2_FD_CTRL_PTV1\t0x00400000\n+\n+/* Frame annotation status */\n+struct dpaa2_fas {\n+\tuint8_t reserved;\n+\tuint8_t ppid;\n+\t__le16 ifpid;\n+\t__le32 status;\n+} __packed;\n+\n+/**\n+ * HW Packet Annotation  Register structures\n+ */\n+struct dpaa2_annot_hdr {\n+\t/**<\tword1: Frame Annotation Status (8 bytes)*/\n+\tuint64_t word1;\n+\n+\t/**<\tword2: Time Stamp (8 bytes)*/\n+\tuint64_t word2;\n+\n+\t/**<\tword3: Next Hdr + FAF Extension + FAF (2 + 2 + 4 bytes)*/\n+\tuint64_t word3;\n+\n+\t/**<\tword4: Frame Annotation Flags-FAF (8 bytes) */\n+\tuint64_t word4;\n+\n+\t/**<\tword5:\n+\t *\tShimOffset_1 + ShimOffset_2 + IPPIDOffset + EthOffset +\n+\t *\tLLC+SNAPOffset + VLANTCIOffset_1 + VLANTCIOffset_n +\n+\t *\tLastETypeOffset (1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 bytes)\n+\t */\n+\tuint64_t word5;\n+\n+\t/**<\tword6:\n+\t *\tPPPoEOffset + MPLSOffset_1 + MPLSOffset_n + ARPorIPOffset_1\n+\t *\t+ IPOffset_norMInEncapO + GREOffset + L4Offset +\n+\t *\tGTPorESPorIPSecOffset(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 bytes)\n+\t */\n+\tuint64_t word6;\n+\n+\t/**<\tword7:\n+\t *\tRoutingHdrOfset1 + RoutingHdrOfset2 + NxtHdrOffset\n+\t *\t+ IPv6FragOffset + GrossRunningSum\n+\t *\t+ RunningSum(1 + 1 + 1 + 1 + 2 + 2 bytes)\n+\t */\n+\tuint64_t word7;\n+\n+\t/**<\tword8:\n+\t *\tParseErrorcode + Soft Parsing Context (1 + 7 bytes)\n+\t */\n+\tuint64_t word8;\n+};\n+\n+/**\n+ * Internal Macros to get/set Packet annotation header\n+ */\n+\n+/** General Macro to define a particular bit position*/\n+#define BIT_POS(x)\t\t\t((uint64_t)1 << ((x)))\n+/** Set a bit in the variable */\n+#define BIT_SET_AT_POS(var, pos)\t((var) |= (pos))\n+/** Reset the bit in the variable */\n+#define BIT_RESET_AT_POS(var, pos)\t((var) &= ~(pos))\n+/** Check the bit is set in the variable */\n+#define BIT_ISSET_AT_POS(var, pos)\t(((var) & (pos)) ? 1 : 0)\n+/**\n+ * Macrso to define bit position in word3\n+ */\n+#define NEXT_HDR(var)\t\t\t((uint64_t)(var) & 0xFFFF000000000000)\n+#define FAF_EXTN_IPV6_ROUTE_HDR_PRESENT(var)\tBIT_POS(16)\n+#define FAF_EXTN_RESERVED(var)\t\t((uint64_t)(var) & 0x00007FFF00000000)\n+#define FAF_USER_DEFINED_RESERVED(var)\t((uint64_t)(var) & 0x00000000FF000000)\n+#define SHIM_SHELL_SOFT_PARSING_ERRROR\t\tBIT_POS(23)\n+#define PARSING_ERROR\t\t\t\tBIT_POS(22)\n+#define L2_ETH_MAC_PRESENT\t\t\tBIT_POS(21)\n+#define L2_ETH_MAC_UNICAST\t\t\tBIT_POS(20)\n+#define L2_ETH_MAC_MULTICAST\t\t\tBIT_POS(19)\n+#define L2_ETH_MAC_BROADCAST\t\t\tBIT_POS(18)\n+#define L2_ETH_FRAME_IS_BPDU\t\t\tBIT_POS(17)\n+#define L2_ETH_FCOE_PRESENT\t\t\tBIT_POS(16)\n+#define L2_ETH_FIP_PRESENT\t\t\tBIT_POS(15)\n+#define L2_ETH_PARSING_ERROR\t\t\tBIT_POS(14)\n+#define L2_LLC_SNAP_PRESENT\t\t\tBIT_POS(13)\n+#define L2_UNKNOWN_LLC_OUI\t\t\tBIT_POS(12)\n+#define L2_LLC_SNAP_ERROR\t\t\tBIT_POS(11)\n+#define L2_VLAN_1_PRESENT\t\t\tBIT_POS(10)\n+#define L2_VLAN_N_PRESENT\t\t\tBIT_POS(9)\n+#define L2_VLAN_CFI_BIT_PRESENT\t\t\tBIT_POS(8)\n+#define L2_VLAN_PARSING_ERROR\t\t\tBIT_POS(7)\n+#define L2_PPPOE_PPP_PRESENT\t\t\tBIT_POS(6)\n+#define L2_PPPOE_PPP_PARSING_ERROR\t\tBIT_POS(5)\n+#define L2_MPLS_1_PRESENT\t\t\tBIT_POS(4)\n+#define L2_MPLS_N_PRESENT\t\t\tBIT_POS(3)\n+#define L2_MPLS_PARSING_ERROR\t\t\tBIT_POS(2)\n+#define L2_ARP_PRESENT\t\t\t\tBIT_POS(1)\n+#define L2_ARP_PARSING_ERROR\t\t\tBIT_POS(0)\n+/**\n+ * Macrso to define bit position in word4\n+ */\n+#define L2_UNKNOWN_PROTOCOL\t\t\tBIT_POS(63)\n+#define L2_SOFT_PARSING_ERROR\t\t\tBIT_POS(62)\n+#define L3_IPV4_1_PRESENT\t\t\tBIT_POS(61)\n+#define L3_IPV4_1_UNICAST\t\t\tBIT_POS(60)\n+#define L3_IPV4_1_MULTICAST\t\t\tBIT_POS(59)\n+#define L3_IPV4_1_BROADCAST\t\t\tBIT_POS(58)\n+#define L3_IPV4_N_PRESENT\t\t\tBIT_POS(57)\n+#define L3_IPV4_N_UNICAST\t\t\tBIT_POS(56)\n+#define L3_IPV4_N_MULTICAST\t\t\tBIT_POS(55)\n+#define L3_IPV4_N_BROADCAST\t\t\tBIT_POS(54)\n+#define L3_IPV6_1_PRESENT\t\t\tBIT_POS(53)\n+#define L3_IPV6_1_UNICAST\t\t\tBIT_POS(52)\n+#define L3_IPV6_1_MULTICAST\t\t\tBIT_POS(51)\n+#define L3_IPV6_N_PRESENT\t\t\tBIT_POS(50)\n+#define L3_IPV6_N_UNICAST\t\t\tBIT_POS(49)\n+#define L3_IPV6_N_MULTICAST\t\t\tBIT_POS(48)\n+#define L3_IP_1_OPT_PRESENT\t\t\tBIT_POS(47)\n+#define L3_IP_1_UNKNOWN_PROTOCOL\t\tBIT_POS(46)\n+#define L3_IP_1_MORE_FRAGMENT\t\t\tBIT_POS(45)\n+#define L3_IP_1_FIRST_FRAGMENT\t\t\tBIT_POS(44)\n+#define L3_IP_1_PARSING_ERROR\t\t\tBIT_POS(43)\n+#define L3_IP_N_OPT_PRESENT\t\t\tBIT_POS(42)\n+#define L3_IP_N_UNKNOWN_PROTOCOL\t\tBIT_POS(41)\n+#define L3_IP_N_MORE_FRAGMENT\t\t\tBIT_POS(40)\n+#define L3_IP_N_FIRST_FRAGMENT\t\t\tBIT_POS(39)\n+#define L3_PROTO_ICMP_PRESENT\t\t\tBIT_POS(38)\n+#define L3_PROTO_IGMP_PRESENT\t\t\tBIT_POS(37)\n+#define L3_PROTO_ICMPV6_PRESENT\t\t\tBIT_POS(36)\n+#define L3_PROTO_UDP_LIGHT_PRESENT\t\tBIT_POS(35)\n+#define L3_IP_N_PARSING_ERROR\t\t\tBIT_POS(34)\n+#define L3_MIN_ENCAP_PRESENT\t\t\tBIT_POS(33)\n+#define L3_MIN_ENCAP_SBIT_PRESENT\t\tBIT_POS(32)\n+#define L3_MIN_ENCAP_PARSING_ERROR\t\tBIT_POS(31)\n+#define L3_PROTO_GRE_PRESENT\t\t\tBIT_POS(30)\n+#define L3_PROTO_GRE_RBIT_PRESENT\t\tBIT_POS(29)\n+#define L3_PROTO_GRE_PARSING_ERROR\t\tBIT_POS(28)\n+#define L3_IP_UNKNOWN_PROTOCOL\t\t\tBIT_POS(27)\n+#define L3_SOFT_PARSING_ERROR\t\t\tBIT_POS(26)\n+#define L3_PROTO_UDP_PRESENT\t\t\tBIT_POS(25)\n+#define L3_PROTO_UDP_PARSING_ERROR\t\tBIT_POS(24)\n+#define L3_PROTO_TCP_PRESENT\t\t\tBIT_POS(23)\n+#define L3_PROTO_TCP_OPT_PRESENT\t\tBIT_POS(22)\n+#define L3_PROTO_TCP_CTRL_BIT_6_TO_11_PRESENT\tBIT_POS(21)\n+#define L3_PROTO_TCP_CTRL_BIT_3_TO_5_PRESENT\tBIT_POS(20)\n+#define L3_PROTO_TCP_PARSING_ERROR\t\tBIT_POS(19)\n+#define L3_PROTO_IPSEC_PRESENT\t\t\tBIT_POS(18)\n+#define L3_PROTO_IPSEC_ESP_PRESENT\t\tBIT_POS(17)\n+#define L3_PROTO_IPSEC_AH_PRESENT\t\tBIT_POS(16)\n+#define L3_PROTO_IPSEC_PARSING_ERROR\t\tBIT_POS(15)\n+#define L3_PROTO_SCTP_PRESENT\t\t\tBIT_POS(14)\n+#define L3_PROTO_SCTP_PARSING_ERROR\t\tBIT_POS(13)\n+#define L3_PROTO_DCCP_PRESENT\t\t\tBIT_POS(12)\n+#define L3_PROTO_DCCP_PARSING_ERROR\t\tBIT_POS(11)\n+#define L4_UNKNOWN_PROTOCOL\t\t\tBIT_POS(10)\n+#define L4_SOFT_PARSING_ERROR\t\t\tBIT_POS(9)\n+#define L3_PROTO_GTP_PRESENT\t\t\tBIT_POS(8)\n+#define L3_PROTO_GTP_PARSING_ERROR\t\tBIT_POS(7)\n+#define L3_PROTO_ESP_PRESENT\t\t\tBIT_POS(6)\n+#define L3_PROTO_ESP_PARSING_ERROR\t\tBIT_POS(5)\n+#define L3_PROTO_ISCSI_PRESENT\t\t\tBIT_POS(4)\n+#define L3_PROTO_CAPWAN__CTRL_PRESENT\t\tBIT_POS(3)\n+#define L3_PROTO_CAPWAN__DATA_PRESENT\t\tBIT_POS(2)\n+#define L5_SOFT_PARSING_ERROR\t\t\tBIT_POS(1)\n+#define L3_IPV6_ROUTE_HDR_PRESENT\t\tBIT_POS(0)\n+\n+/* Debug frame, otherwise supposed to be discarded */\n+#define DPAA2_ETH_FAS_DISC\t      0x80000000\n+/* MACSEC frame */\n+#define DPAA2_ETH_FAS_MS\t\t0x40000000\n+#define DPAA2_ETH_FAS_PTP\t       0x08000000\n+/* Ethernet multicast frame */\n+#define DPAA2_ETH_FAS_MC\t\t0x04000000\n+/* Ethernet broadcast frame */\n+#define DPAA2_ETH_FAS_BC\t\t0x02000000\n+#define DPAA2_ETH_FAS_KSE\t       0x00040000\n+#define DPAA2_ETH_FAS_EOFHE\t     0x00020000\n+#define DPAA2_ETH_FAS_MNLE\t      0x00010000\n+#define DPAA2_ETH_FAS_TIDE\t      0x00008000\n+#define DPAA2_ETH_FAS_PIEE\t      0x00004000\n+/* Frame length error */\n+#define DPAA2_ETH_FAS_FLE\t       0x00002000\n+/* Frame physical error; our favourite pastime */\n+#define DPAA2_ETH_FAS_FPE\t       0x00001000\n+#define DPAA2_ETH_FAS_PTE\t       0x00000080\n+#define DPAA2_ETH_FAS_ISP\t       0x00000040\n+#define DPAA2_ETH_FAS_PHE\t       0x00000020\n+#define DPAA2_ETH_FAS_BLE\t       0x00000010\n+/* L3 csum validation performed */\n+#define DPAA2_ETH_FAS_L3CV\t      0x00000008\n+/* L3 csum error */\n+#define DPAA2_ETH_FAS_L3CE\t      0x00000004\n+/* L4 csum validation performed */\n+#define DPAA2_ETH_FAS_L4CV\t      0x00000002\n+/* L4 csum error */\n+#define DPAA2_ETH_FAS_L4CE\t      0x00000001\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif\ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex 3c4ca28..c705014 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -311,6 +311,28 @@\n \tPMD_INIT_FUNC_TRACE();\n }\n \n+static const uint32_t *\n+dpaa2_supported_ptypes_get(struct rte_eth_dev *dev)\n+{\n+\tstatic const uint32_t ptypes[] = {\n+\t\t/*todo -= add more types */\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_TCP,\n+\t\tRTE_PTYPE_L4_UDP,\n+\t\tRTE_PTYPE_L4_SCTP,\n+\t\tRTE_PTYPE_L4_ICMP,\n+\t\tRTE_PTYPE_UNKNOWN\n+\t};\n+\n+\tif (dev->rx_pkt_burst == dpaa2_dev_rx)\n+\t\treturn ptypes;\n+\treturn NULL;\n+}\n+\n static int\n dpaa2_dev_start(struct rte_eth_dev *dev)\n {\n@@ -518,6 +540,7 @@\n \t.promiscuous_enable   = dpaa2_dev_promiscuous_enable,\n \t.promiscuous_disable  = dpaa2_dev_promiscuous_disable,\n \t.dev_infos_get\t   = dpaa2_dev_info_get,\n+\t.dev_supported_ptypes_get = dpaa2_supported_ptypes_get,\n \t.mtu_set           = dpaa2_dev_mtu_set,\n \t.rx_queue_setup    = dpaa2_dev_rx_queue_setup,\n \t.rx_queue_release  = dpaa2_dev_rx_queue_release,\ndiff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c\nindex 4b76be5..7d73bde 100644\n--- a/drivers/net/dpaa2/dpaa2_rxtx.c\n+++ b/drivers/net/dpaa2/dpaa2_rxtx.c\n@@ -49,6 +49,88 @@\n #include <dpaa2_hw_mempool.h>\n \n #include \"dpaa2_ethdev.h\"\n+#include \"base/dpaa2_hw_dpni_annot.h\"\n+\n+static inline uint32_t __attribute__((hot))\n+dpaa2_dev_rx_parse(uint64_t hw_annot_addr)\n+{\n+\tuint32_t pkt_type = RTE_PTYPE_UNKNOWN;\n+\tstruct dpaa2_annot_hdr *annotation =\n+\t\t\t(struct dpaa2_annot_hdr *)hw_annot_addr;\n+\n+\tPMD_RX_LOG(DEBUG, \"annotation = 0x%lx   \", annotation->word4);\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word3, L2_ARP_PRESENT)) {\n+\t\tpkt_type = RTE_PTYPE_L2_ETHER_ARP;\n+\t\tgoto parse_done;\n+\t} else if (BIT_ISSET_AT_POS(annotation->word3, L2_ETH_MAC_PRESENT)) {\n+\t\tpkt_type = RTE_PTYPE_L2_ETHER;\n+\t} else {\n+\t\tgoto parse_done;\n+\t}\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word4, L3_IPV4_1_PRESENT |\n+\t\t\t     L3_IPV4_N_PRESENT)) {\n+\t\tpkt_type |= RTE_PTYPE_L3_IPV4;\n+\t\tif (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_OPT_PRESENT |\n+\t\t\tL3_IP_N_OPT_PRESENT))\n+\t\t\tpkt_type |= RTE_PTYPE_L3_IPV4_EXT;\n+\n+\t} else if (BIT_ISSET_AT_POS(annotation->word4, L3_IPV6_1_PRESENT |\n+\t\t  L3_IPV6_N_PRESENT)) {\n+\t\tpkt_type |= RTE_PTYPE_L3_IPV6;\n+\t\tif (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_OPT_PRESENT |\n+\t\t    L3_IP_N_OPT_PRESENT))\n+\t\t\tpkt_type |= RTE_PTYPE_L3_IPV6_EXT;\n+\t} else {\n+\t\tgoto parse_done;\n+\t}\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_FIRST_FRAGMENT |\n+\t    L3_IP_1_MORE_FRAGMENT |\n+\t    L3_IP_N_FIRST_FRAGMENT |\n+\t    L3_IP_N_MORE_FRAGMENT)) {\n+\t\tpkt_type |= RTE_PTYPE_L4_FRAG;\n+\t\tgoto parse_done;\n+\t} else {\n+\t\tpkt_type |= RTE_PTYPE_L4_NONFRAG;\n+\t}\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_UDP_PRESENT))\n+\t\tpkt_type |= RTE_PTYPE_L4_UDP;\n+\n+\telse if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_TCP_PRESENT))\n+\t\tpkt_type |= RTE_PTYPE_L4_TCP;\n+\n+\telse if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_SCTP_PRESENT))\n+\t\tpkt_type |= RTE_PTYPE_L4_SCTP;\n+\n+\telse if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_ICMP_PRESENT))\n+\t\tpkt_type |= RTE_PTYPE_L4_ICMP;\n+\n+\telse if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_UNKNOWN_PROTOCOL))\n+\t\tpkt_type |= RTE_PTYPE_UNKNOWN;\n+\n+parse_done:\n+\treturn pkt_type;\n+}\n+\n+static inline void __attribute__((hot))\n+dpaa2_dev_rx_offload(uint64_t hw_annot_addr, struct rte_mbuf *mbuf)\n+{\n+\tstruct dpaa2_annot_hdr *annotation =\n+\t\t(struct dpaa2_annot_hdr *)hw_annot_addr;\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word3,\n+\t\t\t     L2_VLAN_1_PRESENT | L2_VLAN_N_PRESENT))\n+\t\tmbuf->ol_flags |= PKT_RX_VLAN_PKT;\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))\n+\t\tmbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD;\n+\n+\tif (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))\n+\t\tmbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD;\n+}\n \n static inline struct rte_mbuf *__attribute__((hot))\n eth_fd_to_mbuf(const struct qbman_fd *fd)\n@@ -66,7 +148,14 @@ static inline struct rte_mbuf *__attribute__((hot))\n \tmbuf->data_len = DPAA2_GET_FD_LEN(fd);\n \tmbuf->pkt_len = mbuf->data_len;\n \n-\tmbuf->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4;\n+\t/* Parse the packet */\n+\t/* parse results are after the private - sw annotation area */\n+\tmbuf->packet_type = dpaa2_dev_rx_parse(\n+\t\t\t(uint64_t)(DPAA2_GET_FD_ADDR(fd))\n+\t\t\t + DPAA2_FD_PTA_SIZE);\n+\n+\tdpaa2_dev_rx_offload((uint64_t)(DPAA2_GET_FD_ADDR(fd)) +\n+\t\t\t     DPAA2_FD_PTA_SIZE, mbuf);\n \n \tmbuf->next = NULL;\n \trte_mbuf_refcnt_set(mbuf, 1);\n",
    "prefixes": [
        "dpdk-dev",
        "PATCHv2",
        "27/34"
    ]
}