From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <hemant.agrawal@nxp.com>
Received: from NAM02-BL2-obe.outbound.protection.outlook.com
 (mail-bl2nam02on0040.outbound.protection.outlook.com [104.47.38.40])
 by dpdk.org (Postfix) with ESMTP id A5AEAFAF3
 for <dev@dpdk.org>; Mon, 19 Dec 2016 16:22:07 +0100 (CET)
Received: from DM5PR03CA0018.namprd03.prod.outlook.com (10.175.104.28) by
 BN1PR0301MB0737.namprd03.prod.outlook.com (10.160.78.144) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.789.14; Mon, 19 Dec 2016 15:22:06 +0000
Received: from BN1BFFO11FD032.protection.gbl (2a01:111:f400:7c10::1:178) by
 DM5PR03CA0018.outlook.office365.com (2603:10b6:3:118::28) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id
 15.1.789.14 via Frontend Transport; Mon, 19 Dec 2016 15:22:06 +0000
Authentication-Results: spf=fail (sender IP is 192.88.158.2)
 smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)
 header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;nxp.com;
 dkim=none (message not signed) header.d=none;
Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not
 designate 192.88.158.2 as permitted sender) receiver=protection.outlook.com;
 client-ip=192.88.158.2; helo=az84smr01.freescale.net;
Received: from az84smr01.freescale.net (192.88.158.2) by
 BN1BFFO11FD032.mail.protection.outlook.com (10.58.144.95) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.789.10
 via Frontend Transport; Mon, 19 Dec 2016 15:22:05 +0000
Received: from bf-netperf1.idc ([10.232.134.28])
 by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id uBJFKMhq029110;
 Mon, 19 Dec 2016 08:22:02 -0700
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: <dev@dpdk.org>
CC: <thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,
 <shreyansh.jain@nxp.com>, <john.mcnamara@intel.com>,
 <ferruh.yigit@intel.com>, <jerin.jacob@caviumnetworks.com>, Hemant 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>
 <1482180853-18823-1-git-send-email-hemant.agrawal@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131266345259336788;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.158.2; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(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);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0737; H:az84smr01.freescale.net;
 FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD032;
 1:YZfl1JRBOP+lRp1J8JOPUIYwWgXQou6fiSBCtoOXd28cV/ywU0fYq6PMhCLIFxSOKpSyJFEhWd5GTF7rYAhOxSALaL0GbEhSgnBdJQ1PWhCpq1Jd+QyfL0VJD/WuoEqmnMUMie28y3duXpgLvXvDut3In6/HCzoJRD1AnC2sSFCuOZIEvVJwj6hGPqfea3sAvJkV7qMF3QC/u0p/GXtmTJ2gx0cystAK3cRlAZKSQuhEGFBvRhusnlqKmKRcdoBA1YtPCqq1IuzjIpHeCUExUdtBRfZhzeeRVcz8zra5O78dfQl7a+ejkPyyEr6nayTuYK7XFVr3SAED6epL6dRRqxV5De4LDKGDuaOMxkkj9A6vtV/7xAY2mo70hqlT3pXhx2JYv14AEjN6YAR2g2GLclzo8WJvesG7oFCRUgJ68ALkI0GLUllsMt4uc/8D9mz/Uz2LAYiGeA+F7O5ZwdCmOjJ/xZxLpRL9C1g+DsqDV86H47Yn15qCPkUmMcQuG9KU9k0JwGcC+VMCaWQQy31Ndx3aHST/mpicb7pEDfF3w/GN9HAdgeW+sf1pz+UbwBnNj4W6TpPrcCMN6AFWjsfZHKjBqpT2Jh8We7devCdlXojspWTQa6pBywENI13Cc+PmWlGcqo9KLBQgAspiYMH6GC2YOdKUgys5ytx421NAGIB4c0HVX8STcNCrSV4B7Sfq8qGKla3DFvhZiWtuqNRAAG7aeADO2lNsOAnMUnWHmntzsJgUkB1lSncdHdXOke6MKExPk8myCnPn3JDWu3VdfA==
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);
 SRVR:BN1PR0301MB0737; 
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 3:TRM+bRs8th0mCTbwEFkI5yhgYkT2fDKtFeBbF50QHyo3MhnJT7ku2jXN4aB7eshqM94d2/mDuDmdMdAdSr2D3wcnZkETLQd5AGikXQA9n6taYBGjLcv+knssJRDz7c4056v8/Y5ZH3WHSP6vM5rj1H1fK7zoM0AoTOfBs203yRqYPtq2KQI8xxh6awvdaBb1bw/oPRmzTW1TVbR6f9UqKvtSFX8dIfWQ4cSKbYKKvrvSXnw5/hYP5arIUWKQOvOlVtcJBSE70wFEnXnmSowIYDxLWTk+JgzgOWe2kcCjxxHlmPIPT8utkjFcCQK3rGeNi4n5EG1rdf9ASWq3i8jmEwbo3mQ1NcERksCSRoHAq3rXRawqKFu3o9Bza76ai4X5;
 25:8olISV7wnV47Es0vf6M6Wa2ZvkHJt/y75cvM1rU/kxbPQEsmuUhvcGnF3dEep78SugI0sRVZnuCIpEjF5SvsTXSwB+cr9EaqKSdOfqKiCy1NWw0dTx2mM0EyhfkxmKGPmOKs+k807H0r8QxcWFAiHRhQHWQRQIqQw1FVQA+VIJWFk95Pfm7zgOeHYrUHw43WVwoXsSJniovPmADxjdIRS5E06skJaym+1uzUZGsOYPuvf2DQqqK6cvAe1rTK1ZjkPMv06KXfzdeZ/UjiTqw0fLjW6gSq8OjbR4PSd6SJOJ4EaDCrFhhuj3s5stMyhTLcmzo31d/Srr0NOs27fNttyZ8444xKkVQjcevmnJC+hNGmkH1u6Xd77VhchWk7Az6rDPtmoL/tCYjxBHTQdAyYqVejb7pBcIjhnEjY68SXkzIniQM8IMGkoa/MqQAR6HWQylkUJM0tEDLh8vGCxcXmbQ==
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 31:PY+udq6DLyBOXMTomQwHSRE4iY9W9uNdM0YHMxPPJe/JChGTZJrINUwcyFXJpNG8WarZXlJUxiw3lFjSQIDIce5oCwihS3Fzv99gUhaVeP3yh5Fe0yhhtSCT9qzBqRFcOp74Mo/av6mDpqIVQIdnt6+Zm3lcHUj9cohwopUNkE9CiuMBeU47SDILWvVHxT+VuaUAWPSRGH0PFF6w04cOug8gGn4KQJ0tpbbX91MWgfChJk/FO+Nn9xOP4O3c1c2PojhlFK+XraaNIpTSYMSxvbAYfPmZfMJM4/3FlZptyHw=
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;
 RULEID:(6095060)(601004)(2401047)(8121501046)(13018025)(13015025)(5005006)(13024025)(13023025)(13017025)(3002001)(10201501046)(6055026)(6096035)(20161123561025)(20161123559025)(20161123565025)(20161123556025)(20161123563025);
 SRVR:BN1PR0301MB0737; BCL:0; PCL:0; RULEID:(400006); SRVR:BN1PR0301MB0737; 
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 4:d31kg1XytCAGrptYRlrtd5dmr1TF5N9tiTk/WlXmmnrKeobQOGbjetu83JMREQKx22sXbm5UWZKt4TwvgE6Fj+DDG2/O9PPSvXv1kdOWfjnOa8B9bT40+icPto5oohjpy7ckrbhxdH/9YvcqoIsE0w93bJk1RHTxtv3Kv+yAap/AHWuRHba4MRhNUCBslNZFxwCleTC7st1cBWkH0UKTZXIACDYQ5FHOmgu9aV4yhwCY/3B5btMzIqOCUCmO8eB4R/PeXbukUI7Fw3TYchWNVC6Wgw9ILX5RR3wpx2kKWsQpJVlPHwhRGzG2lpcTLMWidb97oHIo1hfhKYh0LD+zNmnldta4qaD+woB2OdFj99OIi0eSmy0E3jnSjDY/iJgB+4fWtdLUC6mPM4+rOTWx7a7328eMjL4+ZYrIxJ5Tq5+niKwHxz4B3xxeFb9Fus1c3+rvEkm21fmhXh03QBr51QzCCGilZwk8Uc2tGA6Ht5Cdxm8MLLWO8gsr9Or0uNLk5VZk2VcilJSVNei0UxWuEdN4t2lN1vmBzNTY4n14aL5b0wr10JtcfJ8nhJ8DeyC9jMSA/AorqpWxJxDPFSn8an3RtmOgcwpAsLrRErZW2B2sXTELJAUIQBAxJX/Dtitdox7fn2a6ArNgzXC2iQTUd2hZlu8bQZCEUeBLgQNsaqHEL45oC2nFIQfulaY572wttSSVCTUadyK2pxQ415RObgahuN7lQrkWRLLkaJ8a1oex8l60ra8tYuVD+0jyEnX2
X-Forefront-PRVS: 01613DFDC8
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0737;
 23:Kj+EYkyVJTgjwrkmX++wMWY38yAeIX5kA1nOmXm?=
 =?us-ascii?Q?Kr3RX3KKsoyKKZwR0+oPNQZH2Bvj3Wo8BfDl8jdUtieMShl04EYgOl86sNg4?=
 =?us-ascii?Q?QYcbanCuF+JVrUx9XybRP2kX0Z6Lo16JmmWyGkLFBEYJ5L6qkctikT1Vw7cH?=
 =?us-ascii?Q?UHFYn69ZrHxLH8CEu+L9RLpNFJv4669qFgU8lPsQWpVhGggHNvhIhB/bKMXJ?=
 =?us-ascii?Q?yc3n9++QvLCOb3xvecUEDetnMY6o4Z0VbQUElSr0YKMX42y6vpXO5D9fQeMw?=
 =?us-ascii?Q?jKgz04x9/J4EPwtYoW6ATRLi7NSbx1awo3pGdsosZW0YL9dYUPDTaqGqtpsN?=
 =?us-ascii?Q?RCwV5gtAbg5RfGhQGs9Si99qwJxcbZKzhZJuCe+8umUPTi/DvgB1flLij79e?=
 =?us-ascii?Q?0b88VNQ7ANJEx/l0ihF/wxJk4JICagtmBiYVIxr7JJoe5pwDXfR9z9OP9dLF?=
 =?us-ascii?Q?ScePWXTxNTGb5kEYXxKoFT/TwHZt6nhUnnSVbJkver4pENgpTB/xuwBLr+2C?=
 =?us-ascii?Q?s7KPAKEVsw28cZZfWnZjMGWyQcETVhyhLLLFoaPyDQV57lOjTnufB1cLAChu?=
 =?us-ascii?Q?1u5ovU8daq0KKMv3ixZcY24wYpO3Pe9BNmGnQmtZzDPvQQ4WWBiDtGlkAZOn?=
 =?us-ascii?Q?GtyfyiJin8VVR9Mo+g3Zx0f3+2hATW17Gyo5N0Mp3opdr/wDy204qZHrXe7C?=
 =?us-ascii?Q?xwHR9xbpMRgQPqSzCDt3SHANvMqwXQKsrGwBP2NV81qFJtIjz0an6Fnb0NUF?=
 =?us-ascii?Q?rTAZSBIplLPRc8dZuruCVCnoeRJEpTSnbYCf4arqGYQ/AKFN4wfiP9uEbxC7?=
 =?us-ascii?Q?3D5UpbrCI8Vs0aE7cmnQGvTYi302+BvGq3rgvFk31kaUvnoXhJvXF3/tPGFn?=
 =?us-ascii?Q?qpyE2Qq/FDXp973wTDX1qRwIsojEdsicYv6d2PFJsogso9dXHUQ1kGKO07L7?=
 =?us-ascii?Q?nvVKU2QHsiEzEXkFn0gNIDKCW9O2vTVu2RXUGVwuhlZRBhIE5/Ra/QSqYn5a?=
 =?us-ascii?Q?YrKl+qX0Jmamlh77jE3TX5XMftQp3DjUXEOPy7QMFDgt+09eqCeo1NyoYKP7?=
 =?us-ascii?Q?nlqR+VxuxHCbYf1j/A4VXmQP0iM0jwaQBa4n8W3/SgeLkyTBl1m3yOniZETK?=
 =?us-ascii?Q?t5HdjlXKeG81829C2GMydKZnkI2a04lhYuxGFk1G0JuXdLUpqKYQtJ87XCJ2?=
 =?us-ascii?Q?bJcE7R9zfej7XBwy7PyoM+FPTvAC8/I1qaf6TZa44fXUN6fRnvqLhBSNA5lz?=
 =?us-ascii?Q?ViKBu8P5Skieom1m34xZIDqo18pu2bZpGXKMLwLi+5uvit1C83R2OFvl16gm?=
 =?us-ascii?Q?/gw=3D=3D?=
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 6:Cy41j8gGssWmGOE4r8OrTp0ndP4ZmUgxEb4iFdieKkx28uEybBQTpXCVVCq6AyLOLWFwCuKwPVTlDuKCjXHbbrbj+/tnzcxHZidtS5qLTuY5OlTEd/XrlvNgpR0SuP1Xo9MtD1nIB2NOL9/XurAi8QA0rlTMK0eDl7L0pViocpnkECmsbD0gmlaAcw9tLCOjQbxfq/dOZiLXmB3kmqDI72s6/7YyOugMb2SNvnrqj8jfWRB+NvXiHNdEe4HZeWOgu8o2zA1inH0TKRH8bTGFbh6b802Cq3SGfPRlq73xbGa6Ykse1n5LlpHhH63v+da0uaI4sts7uPRrz4nKgKYStISiAH9u6s+WIBGknGj6WcOYdeT4Ou2DCTJxSTasJAhOk6wfgIRCn/3T+eEcuEWNBx44URqNnnDhIGi8DKcDHgL5N4/Wu5mUbCiw0NTG6YZE;
 5:EiY93UpQbpxK7+rTseL02C2ujAChEB+qCsKlEHjDh2y0VBAyqfhhU67APZC+lq/4dC7GXDZFL7F+8kdeDCosbnGtgTEfi6W+AF9Oqcv6kAH4kNHg+8J7NIpEnm/KJL0hXBIJ64K5CScSMMjCL5ihLMwCbTmvmjH8c0ki5z1GqRgwVjZoWRb+/jmjozXRXi1X;
 24:esIDg3RYjHFRk7RZ7dEBa7Zj3eYbv3Dwn1059L/nFpX620Wf9ZG9ybWL/cd60wdPkxnTJgm/WJYQtcUN7vspfcKLHUYKgMEawxXh8LIwu98=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0737;
 7:kio1Tv5Wq7R/QsyFoOXleJHtBP7piUj/Yyf61uxDT5v4i6VLsZYaqrYjR915DXkMm7xtpnRBX9t1rX7YeTymJNC2gASTkJfj4aWFpS0VaMZf6cz7joCZcVFml7ISCR4urdEHG/dP4GWojlw/dmBgwPqdNUTHmIppJfhXLKpbQEOl3Cr/tZvt98T5YVXsXdIlb9IVCO1NJ4WKYTv8TDUEuhIG6zGaS+FNWR/nxRADTIFbOkxKkDRAZNGk2MUHW3wdDwnWR0q547neXmrSlLwudCVYvCkG40Dks6xiS22kDMLTSmhp6RqzDfzw9MAoDmKlqBZNwftA+ZTtyM8L68lJSyOvIeQNA29LX04qWsvQqE3qBq8KvMPrC3ZHHVJhMVIZbmnNiJR2mLdpVraUy1SnnFT36h6SvZVPExWOjh/90E5uv8hL2NZCi8eq4DSnL50EI94qEO3/U+62J+3haxALww==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Dec 2016 15:22:05.6840 (UTC)
X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.158.2];
 Helo=[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
	type 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>,
 <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>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 19 Dec 2016 15:22:08 -0000

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 doc/guides/nics/features/dpaa2.ini           |   1 +
 drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h | 257 +++++++++++++++++++++++++++
 drivers/net/dpaa2/dpaa2_ethdev.c             |  23 +++
 drivers/net/dpaa2/dpaa2_rxtx.c               |  91 +++++++++-
 4 files changed, 371 insertions(+), 1 deletion(-)
 create mode 100644 drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h

diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini
index a6b7964..0746d4b 100644
--- a/doc/guides/nics/features/dpaa2.ini
+++ b/doc/guides/nics/features/dpaa2.ini
@@ -10,6 +10,7 @@ Promiscuous mode     = Y
 RSS hash             = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
+Packet type parsing  = Y
 Linux VFIO           = Y
 ARMv8                = Y
 Usage doc            = Y
diff --git a/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
new file mode 100644
index 0000000..9324c6a
--- /dev/null
+++ b/drivers/net/dpaa2/base/dpaa2_hw_dpni_annot.h
@@ -0,0 +1,257 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.
+ *   Copyright (c) 2016 NXP. All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of Freescale Semiconductor, Inc nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @file
+ *
+ * DPNI packet parse results - implementation internal
+ */
+
+#ifndef _DPAA2_HW_DPNI_ANNOT_H_
+#define _DPAA2_HW_DPNI_ANNOT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Annotation valid bits in FD FRC */
+#define DPAA2_FD_FRC_FASV	0x8000
+#define DPAA2_FD_FRC_FAEADV	0x4000
+#define DPAA2_FD_FRC_FAPRV	0x2000
+#define DPAA2_FD_FRC_FAIADV	0x1000
+#define DPAA2_FD_FRC_FASWOV	0x0800
+#define DPAA2_FD_FRC_FAICFDV	0x0400
+
+/* Annotation bits in FD CTRL */
+#define DPAA2_FD_CTRL_ASAL	0x00020000      /* ASAL = 128 */
+#define DPAA2_FD_CTRL_PTA	0x00800000
+#define DPAA2_FD_CTRL_PTV1	0x00400000
+
+/* Frame annotation status */
+struct dpaa2_fas {
+	uint8_t reserved;
+	uint8_t ppid;
+	__le16 ifpid;
+	__le32 status;
+} __packed;
+
+/**
+ * HW Packet Annotation  Register structures
+ */
+struct dpaa2_annot_hdr {
+	/**<	word1: Frame Annotation Status (8 bytes)*/
+	uint64_t word1;
+
+	/**<	word2: Time Stamp (8 bytes)*/
+	uint64_t word2;
+
+	/**<	word3: Next Hdr + FAF Extension + FAF (2 + 2 + 4 bytes)*/
+	uint64_t word3;
+
+	/**<	word4: Frame Annotation Flags-FAF (8 bytes) */
+	uint64_t word4;
+
+	/**<	word5:
+	 *	ShimOffset_1 + ShimOffset_2 + IPPIDOffset + EthOffset +
+	 *	LLC+SNAPOffset + VLANTCIOffset_1 + VLANTCIOffset_n +
+	 *	LastETypeOffset (1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 bytes)
+	 */
+	uint64_t word5;
+
+	/**<	word6:
+	 *	PPPoEOffset + MPLSOffset_1 + MPLSOffset_n + ARPorIPOffset_1
+	 *	+ IPOffset_norMInEncapO + GREOffset + L4Offset +
+	 *	GTPorESPorIPSecOffset(1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 bytes)
+	 */
+	uint64_t word6;
+
+	/**<	word7:
+	 *	RoutingHdrOfset1 + RoutingHdrOfset2 + NxtHdrOffset
+	 *	+ IPv6FragOffset + GrossRunningSum
+	 *	+ RunningSum(1 + 1 + 1 + 1 + 2 + 2 bytes)
+	 */
+	uint64_t word7;
+
+	/**<	word8:
+	 *	ParseErrorcode + Soft Parsing Context (1 + 7 bytes)
+	 */
+	uint64_t word8;
+};
+
+/**
+ * Internal Macros to get/set Packet annotation header
+ */
+
+/** General Macro to define a particular bit position*/
+#define BIT_POS(x)			((uint64_t)1 << ((x)))
+/** Set a bit in the variable */
+#define BIT_SET_AT_POS(var, pos)	((var) |= (pos))
+/** Reset the bit in the variable */
+#define BIT_RESET_AT_POS(var, pos)	((var) &= ~(pos))
+/** Check the bit is set in the variable */
+#define BIT_ISSET_AT_POS(var, pos)	(((var) & (pos)) ? 1 : 0)
+/**
+ * Macrso to define bit position in word3
+ */
+#define NEXT_HDR(var)			((uint64_t)(var) & 0xFFFF000000000000)
+#define FAF_EXTN_IPV6_ROUTE_HDR_PRESENT(var)	BIT_POS(16)
+#define FAF_EXTN_RESERVED(var)		((uint64_t)(var) & 0x00007FFF00000000)
+#define FAF_USER_DEFINED_RESERVED(var)	((uint64_t)(var) & 0x00000000FF000000)
+#define SHIM_SHELL_SOFT_PARSING_ERRROR		BIT_POS(23)
+#define PARSING_ERROR				BIT_POS(22)
+#define L2_ETH_MAC_PRESENT			BIT_POS(21)
+#define L2_ETH_MAC_UNICAST			BIT_POS(20)
+#define L2_ETH_MAC_MULTICAST			BIT_POS(19)
+#define L2_ETH_MAC_BROADCAST			BIT_POS(18)
+#define L2_ETH_FRAME_IS_BPDU			BIT_POS(17)
+#define L2_ETH_FCOE_PRESENT			BIT_POS(16)
+#define L2_ETH_FIP_PRESENT			BIT_POS(15)
+#define L2_ETH_PARSING_ERROR			BIT_POS(14)
+#define L2_LLC_SNAP_PRESENT			BIT_POS(13)
+#define L2_UNKNOWN_LLC_OUI			BIT_POS(12)
+#define L2_LLC_SNAP_ERROR			BIT_POS(11)
+#define L2_VLAN_1_PRESENT			BIT_POS(10)
+#define L2_VLAN_N_PRESENT			BIT_POS(9)
+#define L2_VLAN_CFI_BIT_PRESENT			BIT_POS(8)
+#define L2_VLAN_PARSING_ERROR			BIT_POS(7)
+#define L2_PPPOE_PPP_PRESENT			BIT_POS(6)
+#define L2_PPPOE_PPP_PARSING_ERROR		BIT_POS(5)
+#define L2_MPLS_1_PRESENT			BIT_POS(4)
+#define L2_MPLS_N_PRESENT			BIT_POS(3)
+#define L2_MPLS_PARSING_ERROR			BIT_POS(2)
+#define L2_ARP_PRESENT				BIT_POS(1)
+#define L2_ARP_PARSING_ERROR			BIT_POS(0)
+/**
+ * Macrso to define bit position in word4
+ */
+#define L2_UNKNOWN_PROTOCOL			BIT_POS(63)
+#define L2_SOFT_PARSING_ERROR			BIT_POS(62)
+#define L3_IPV4_1_PRESENT			BIT_POS(61)
+#define L3_IPV4_1_UNICAST			BIT_POS(60)
+#define L3_IPV4_1_MULTICAST			BIT_POS(59)
+#define L3_IPV4_1_BROADCAST			BIT_POS(58)
+#define L3_IPV4_N_PRESENT			BIT_POS(57)
+#define L3_IPV4_N_UNICAST			BIT_POS(56)
+#define L3_IPV4_N_MULTICAST			BIT_POS(55)
+#define L3_IPV4_N_BROADCAST			BIT_POS(54)
+#define L3_IPV6_1_PRESENT			BIT_POS(53)
+#define L3_IPV6_1_UNICAST			BIT_POS(52)
+#define L3_IPV6_1_MULTICAST			BIT_POS(51)
+#define L3_IPV6_N_PRESENT			BIT_POS(50)
+#define L3_IPV6_N_UNICAST			BIT_POS(49)
+#define L3_IPV6_N_MULTICAST			BIT_POS(48)
+#define L3_IP_1_OPT_PRESENT			BIT_POS(47)
+#define L3_IP_1_UNKNOWN_PROTOCOL		BIT_POS(46)
+#define L3_IP_1_MORE_FRAGMENT			BIT_POS(45)
+#define L3_IP_1_FIRST_FRAGMENT			BIT_POS(44)
+#define L3_IP_1_PARSING_ERROR			BIT_POS(43)
+#define L3_IP_N_OPT_PRESENT			BIT_POS(42)
+#define L3_IP_N_UNKNOWN_PROTOCOL		BIT_POS(41)
+#define L3_IP_N_MORE_FRAGMENT			BIT_POS(40)
+#define L3_IP_N_FIRST_FRAGMENT			BIT_POS(39)
+#define L3_PROTO_ICMP_PRESENT			BIT_POS(38)
+#define L3_PROTO_IGMP_PRESENT			BIT_POS(37)
+#define L3_PROTO_ICMPV6_PRESENT			BIT_POS(36)
+#define L3_PROTO_UDP_LIGHT_PRESENT		BIT_POS(35)
+#define L3_IP_N_PARSING_ERROR			BIT_POS(34)
+#define L3_MIN_ENCAP_PRESENT			BIT_POS(33)
+#define L3_MIN_ENCAP_SBIT_PRESENT		BIT_POS(32)
+#define L3_MIN_ENCAP_PARSING_ERROR		BIT_POS(31)
+#define L3_PROTO_GRE_PRESENT			BIT_POS(30)
+#define L3_PROTO_GRE_RBIT_PRESENT		BIT_POS(29)
+#define L3_PROTO_GRE_PARSING_ERROR		BIT_POS(28)
+#define L3_IP_UNKNOWN_PROTOCOL			BIT_POS(27)
+#define L3_SOFT_PARSING_ERROR			BIT_POS(26)
+#define L3_PROTO_UDP_PRESENT			BIT_POS(25)
+#define L3_PROTO_UDP_PARSING_ERROR		BIT_POS(24)
+#define L3_PROTO_TCP_PRESENT			BIT_POS(23)
+#define L3_PROTO_TCP_OPT_PRESENT		BIT_POS(22)
+#define L3_PROTO_TCP_CTRL_BIT_6_TO_11_PRESENT	BIT_POS(21)
+#define L3_PROTO_TCP_CTRL_BIT_3_TO_5_PRESENT	BIT_POS(20)
+#define L3_PROTO_TCP_PARSING_ERROR		BIT_POS(19)
+#define L3_PROTO_IPSEC_PRESENT			BIT_POS(18)
+#define L3_PROTO_IPSEC_ESP_PRESENT		BIT_POS(17)
+#define L3_PROTO_IPSEC_AH_PRESENT		BIT_POS(16)
+#define L3_PROTO_IPSEC_PARSING_ERROR		BIT_POS(15)
+#define L3_PROTO_SCTP_PRESENT			BIT_POS(14)
+#define L3_PROTO_SCTP_PARSING_ERROR		BIT_POS(13)
+#define L3_PROTO_DCCP_PRESENT			BIT_POS(12)
+#define L3_PROTO_DCCP_PARSING_ERROR		BIT_POS(11)
+#define L4_UNKNOWN_PROTOCOL			BIT_POS(10)
+#define L4_SOFT_PARSING_ERROR			BIT_POS(9)
+#define L3_PROTO_GTP_PRESENT			BIT_POS(8)
+#define L3_PROTO_GTP_PARSING_ERROR		BIT_POS(7)
+#define L3_PROTO_ESP_PRESENT			BIT_POS(6)
+#define L3_PROTO_ESP_PARSING_ERROR		BIT_POS(5)
+#define L3_PROTO_ISCSI_PRESENT			BIT_POS(4)
+#define L3_PROTO_CAPWAN__CTRL_PRESENT		BIT_POS(3)
+#define L3_PROTO_CAPWAN__DATA_PRESENT		BIT_POS(2)
+#define L5_SOFT_PARSING_ERROR			BIT_POS(1)
+#define L3_IPV6_ROUTE_HDR_PRESENT		BIT_POS(0)
+
+/* Debug frame, otherwise supposed to be discarded */
+#define DPAA2_ETH_FAS_DISC	      0x80000000
+/* MACSEC frame */
+#define DPAA2_ETH_FAS_MS		0x40000000
+#define DPAA2_ETH_FAS_PTP	       0x08000000
+/* Ethernet multicast frame */
+#define DPAA2_ETH_FAS_MC		0x04000000
+/* Ethernet broadcast frame */
+#define DPAA2_ETH_FAS_BC		0x02000000
+#define DPAA2_ETH_FAS_KSE	       0x00040000
+#define DPAA2_ETH_FAS_EOFHE	     0x00020000
+#define DPAA2_ETH_FAS_MNLE	      0x00010000
+#define DPAA2_ETH_FAS_TIDE	      0x00008000
+#define DPAA2_ETH_FAS_PIEE	      0x00004000
+/* Frame length error */
+#define DPAA2_ETH_FAS_FLE	       0x00002000
+/* Frame physical error; our favourite pastime */
+#define DPAA2_ETH_FAS_FPE	       0x00001000
+#define DPAA2_ETH_FAS_PTE	       0x00000080
+#define DPAA2_ETH_FAS_ISP	       0x00000040
+#define DPAA2_ETH_FAS_PHE	       0x00000020
+#define DPAA2_ETH_FAS_BLE	       0x00000010
+/* L3 csum validation performed */
+#define DPAA2_ETH_FAS_L3CV	      0x00000008
+/* L3 csum error */
+#define DPAA2_ETH_FAS_L3CE	      0x00000004
+/* L4 csum validation performed */
+#define DPAA2_ETH_FAS_L4CV	      0x00000002
+/* L4 csum error */
+#define DPAA2_ETH_FAS_L4CE	      0x00000001
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 3c4ca28..c705014 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -311,6 +311,28 @@
 	PMD_INIT_FUNC_TRACE();
 }
 
+static const uint32_t *
+dpaa2_supported_ptypes_get(struct rte_eth_dev *dev)
+{
+	static const uint32_t ptypes[] = {
+		/*todo -= add more types */
+		RTE_PTYPE_L2_ETHER,
+		RTE_PTYPE_L3_IPV4,
+		RTE_PTYPE_L3_IPV4_EXT,
+		RTE_PTYPE_L3_IPV6,
+		RTE_PTYPE_L3_IPV6_EXT,
+		RTE_PTYPE_L4_TCP,
+		RTE_PTYPE_L4_UDP,
+		RTE_PTYPE_L4_SCTP,
+		RTE_PTYPE_L4_ICMP,
+		RTE_PTYPE_UNKNOWN
+	};
+
+	if (dev->rx_pkt_burst == dpaa2_dev_rx)
+		return ptypes;
+	return NULL;
+}
+
 static int
 dpaa2_dev_start(struct rte_eth_dev *dev)
 {
@@ -518,6 +540,7 @@
 	.promiscuous_enable   = dpaa2_dev_promiscuous_enable,
 	.promiscuous_disable  = dpaa2_dev_promiscuous_disable,
 	.dev_infos_get	   = dpaa2_dev_info_get,
+	.dev_supported_ptypes_get = dpaa2_supported_ptypes_get,
 	.mtu_set           = dpaa2_dev_mtu_set,
 	.rx_queue_setup    = dpaa2_dev_rx_queue_setup,
 	.rx_queue_release  = dpaa2_dev_rx_queue_release,
diff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c
index 4b76be5..7d73bde 100644
--- a/drivers/net/dpaa2/dpaa2_rxtx.c
+++ b/drivers/net/dpaa2/dpaa2_rxtx.c
@@ -49,6 +49,88 @@
 #include <dpaa2_hw_mempool.h>
 
 #include "dpaa2_ethdev.h"
+#include "base/dpaa2_hw_dpni_annot.h"
+
+static inline uint32_t __attribute__((hot))
+dpaa2_dev_rx_parse(uint64_t hw_annot_addr)
+{
+	uint32_t pkt_type = RTE_PTYPE_UNKNOWN;
+	struct dpaa2_annot_hdr *annotation =
+			(struct dpaa2_annot_hdr *)hw_annot_addr;
+
+	PMD_RX_LOG(DEBUG, "annotation = 0x%lx   ", annotation->word4);
+
+	if (BIT_ISSET_AT_POS(annotation->word3, L2_ARP_PRESENT)) {
+		pkt_type = RTE_PTYPE_L2_ETHER_ARP;
+		goto parse_done;
+	} else if (BIT_ISSET_AT_POS(annotation->word3, L2_ETH_MAC_PRESENT)) {
+		pkt_type = RTE_PTYPE_L2_ETHER;
+	} else {
+		goto parse_done;
+	}
+
+	if (BIT_ISSET_AT_POS(annotation->word4, L3_IPV4_1_PRESENT |
+			     L3_IPV4_N_PRESENT)) {
+		pkt_type |= RTE_PTYPE_L3_IPV4;
+		if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_OPT_PRESENT |
+			L3_IP_N_OPT_PRESENT))
+			pkt_type |= RTE_PTYPE_L3_IPV4_EXT;
+
+	} else if (BIT_ISSET_AT_POS(annotation->word4, L3_IPV6_1_PRESENT |
+		  L3_IPV6_N_PRESENT)) {
+		pkt_type |= RTE_PTYPE_L3_IPV6;
+		if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_OPT_PRESENT |
+		    L3_IP_N_OPT_PRESENT))
+			pkt_type |= RTE_PTYPE_L3_IPV6_EXT;
+	} else {
+		goto parse_done;
+	}
+
+	if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_1_FIRST_FRAGMENT |
+	    L3_IP_1_MORE_FRAGMENT |
+	    L3_IP_N_FIRST_FRAGMENT |
+	    L3_IP_N_MORE_FRAGMENT)) {
+		pkt_type |= RTE_PTYPE_L4_FRAG;
+		goto parse_done;
+	} else {
+		pkt_type |= RTE_PTYPE_L4_NONFRAG;
+	}
+
+	if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_UDP_PRESENT))
+		pkt_type |= RTE_PTYPE_L4_UDP;
+
+	else if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_TCP_PRESENT))
+		pkt_type |= RTE_PTYPE_L4_TCP;
+
+	else if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_SCTP_PRESENT))
+		pkt_type |= RTE_PTYPE_L4_SCTP;
+
+	else if (BIT_ISSET_AT_POS(annotation->word4, L3_PROTO_ICMP_PRESENT))
+		pkt_type |= RTE_PTYPE_L4_ICMP;
+
+	else if (BIT_ISSET_AT_POS(annotation->word4, L3_IP_UNKNOWN_PROTOCOL))
+		pkt_type |= RTE_PTYPE_UNKNOWN;
+
+parse_done:
+	return pkt_type;
+}
+
+static inline void __attribute__((hot))
+dpaa2_dev_rx_offload(uint64_t hw_annot_addr, struct rte_mbuf *mbuf)
+{
+	struct dpaa2_annot_hdr *annotation =
+		(struct dpaa2_annot_hdr *)hw_annot_addr;
+
+	if (BIT_ISSET_AT_POS(annotation->word3,
+			     L2_VLAN_1_PRESENT | L2_VLAN_N_PRESENT))
+		mbuf->ol_flags |= PKT_RX_VLAN_PKT;
+
+	if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L3CE))
+		mbuf->ol_flags |= PKT_RX_IP_CKSUM_BAD;
+
+	if (BIT_ISSET_AT_POS(annotation->word8, DPAA2_ETH_FAS_L4CE))
+		mbuf->ol_flags |= PKT_RX_L4_CKSUM_BAD;
+}
 
 static inline struct rte_mbuf *__attribute__((hot))
 eth_fd_to_mbuf(const struct qbman_fd *fd)
@@ -66,7 +148,14 @@ static inline struct rte_mbuf *__attribute__((hot))
 	mbuf->data_len = DPAA2_GET_FD_LEN(fd);
 	mbuf->pkt_len = mbuf->data_len;
 
-	mbuf->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4;
+	/* Parse the packet */
+	/* parse results are after the private - sw annotation area */
+	mbuf->packet_type = dpaa2_dev_rx_parse(
+			(uint64_t)(DPAA2_GET_FD_ADDR(fd))
+			 + DPAA2_FD_PTA_SIZE);
+
+	dpaa2_dev_rx_offload((uint64_t)(DPAA2_GET_FD_ADDR(fd)) +
+			     DPAA2_FD_PTA_SIZE, mbuf);
 
 	mbuf->next = NULL;
 	rte_mbuf_refcnt_set(mbuf, 1);
-- 
1.9.1