From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <nipun.gupta@nxp.com>
Received: from NAM02-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam02on0050.outbound.protection.outlook.com [104.47.36.50])
 by dpdk.org (Postfix) with ESMTP id 00B1D5587
 for <dev@dpdk.org>; Wed, 28 Jun 2017 17:17:31 +0200 (CEST)
Received: from BN6PR03CA0069.namprd03.prod.outlook.com (10.173.137.31) by
 DM5PR03MB3163.namprd03.prod.outlook.com (10.174.190.36) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1199.15; Wed, 28 Jun 2017 15:17:30 +0000
Received: from BY2FFO11FD037.protection.gbl (2a01:111:f400:7c0c::134) by
 BN6PR03CA0069.outlook.office365.com (2603:10b6:404:4c::31) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11 via
 Frontend Transport; Wed, 28 Jun 2017 15:17:30 +0000
Authentication-Results: spf=fail (sender IP is 192.88.168.50)
 smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)
 header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;
Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not
 designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; 
 client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;
Received: from tx30smr01.am.freescale.net (192.88.168.50) by
 BY2FFO11FD037.mail.protection.outlook.com (10.1.14.222) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9
 via Frontend Transport; Wed, 28 Jun 2017 15:17:30 +0000
Received: from b27504-OptiPlex-790.ap.freescale.net
 (b27504-OptiPlex-790.ap.freescale.net [10.232.132.60])
 by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v5SFGaPr032734;
 Wed, 28 Jun 2017 08:17:26 -0700
From: Nipun Gupta <nipun.gupta@nxp.com>
To: <dev@dpdk.org>
CC: <hemant.agrawal@nxp.com>, <jerin.jacob@caviumnetworks.com>,
 <harry.van.haaren@intel.com>, <bruce.richardson@intel.com>,
 <gage.eads@intel.com>, <shreyansh.jain@nxp.com>, Nipun Gupta
 <nipun.gupta@nxp.com>
Date: Wed, 28 Jun 2017 20:45:52 +0530
Message-ID: <1498662964-11251-10-git-send-email-nipun.gupta@nxp.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com>
References: <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com>
 <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131431366503656108;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(6009001)(336005)(39400400002)(39850400002)(39840400002)(39410400002)(39380400002)(39450400003)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(356003)(498600001)(47776003)(2351001)(105606002)(33646002)(50466002)(48376002)(106466001)(4326008)(36756003)(110136004)(53936002)(54906002)(38730400002)(50226002)(104016004)(5003940100001)(8936002)(81156014)(5660300001)(81166006)(305945005)(8656002)(8676002)(189998001)(77096006)(6916009)(6666003)(2950100002)(76176999)(86362001)(50986999)(85426001)(2906002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB3163; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; 
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2FFO11FD037;
 1:nmb3fT0xeJ+5DpgFP0DODAaj/B9NEZVPoZaD981Zo6?=
 =?us-ascii?Q?9cH+vWXxeaIqs1dlPzSmqQYH6Wz1LK/6VmqnQMZ5DEnQ2FEhM3TBt4Mjv240?=
 =?us-ascii?Q?YSAIcno0pdZBs0rlrsNJcts+15ay3FwD/ZcLoEmrBoCB/I9oK84LLywvN7Ci?=
 =?us-ascii?Q?sXiqjeFDVCfIVyq5jpMCTV8OyM5NJYfsM6oTecIG501aRb5SRDwAN1K/blv9?=
 =?us-ascii?Q?GkOOsoU2pV3rC0Fed1jY75mibTwopQMWeMmHNlT+nVVxDRQdu0Ce48F0RiDg?=
 =?us-ascii?Q?xSoJqHnoV5UowgIpoWUDYsN7iT1+PkQxVpEWOooE/oxVavsbZrxG0vfjge6K?=
 =?us-ascii?Q?kOXhYk4XfXNed1mCzxz0m8jS1Jze3g/uLu7+wubAObhlExo+lnlk5Hw6rzYU?=
 =?us-ascii?Q?nqe3wLs45touLKbbAz1aCh05umHKMK5sBwpp7JluOUy/hyYz1RT2K7y/mWrs?=
 =?us-ascii?Q?WscnmQy1Hu1JLpurVKbb/XVVISP25UMLnTWkRK8Eyr2jSHWgn88l2376oZiv?=
 =?us-ascii?Q?pS2I4o5dik5QYMrPEIO9Ys6pyoF/n+e0K7K2M36rFcJHpoCyewWW+c8tUVHj?=
 =?us-ascii?Q?zQMKch93kKdI0/T5dF8ELfjJ3amZCIq5II28Khi0B4lrB9pJKsMgLWyzh1aT?=
 =?us-ascii?Q?eH70c6uRDH8XSZIQkZL7f9XQxMtBF/cj1GrIOygb70ZQUxRfxQEwQzjImMqw?=
 =?us-ascii?Q?2kaLUXLXaq+GWcObCznvRwTHEx94aFS9ZQSFC6271LLHSLNEd7cnElpdeAjQ?=
 =?us-ascii?Q?brOktO2/btjwrmA3bN5igZ8JBTLu7M0eCil65ZuSQeCNGyC1AaHafFfqZ3/T?=
 =?us-ascii?Q?kCk4CMQmxsRjsVWoOW/7z98GX/YE0lGWb1hS+5zw09UB3Q8IAT6HkZJ6f2/U?=
 =?us-ascii?Q?WM9LeppCQopPTkERyR3FUaof7JBImyRQyVtQNcJLtsGU9MEpHiaf2irPOd9K?=
 =?us-ascii?Q?v2zXYMIF3xMbuOJNpMvFJOSno2YGGKohBONArLm6acfFdusUsCgPu1AWf7/w?=
 =?us-ascii?Q?gukV6YK1nGGLwgZTDFSlZpUms9wBCUmJ2QvpGnA0aqh58VLCqYebrpnhHzu4?=
 =?us-ascii?Q?ITF+02NiuWBc2iWqQoHLonDR/hIcorHcAl4cssi3QRNMW3Qg=3D=3D?=
MIME-Version: 1.0
Content-Type: text/plain
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 0bf24d76-0779-4c40-094a-08d4be38cb40
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);
 SRVR:DM5PR03MB3163; 
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163;
 3:fTTFwNNp0xcG41JEFaZ737+zv1wVPq5YT/5ylnYJJoBKCaIS8EjWk7GDjontTD6nu/jJiYFYSGaB6L8RcSTjoFyYGpEo5kA9H3sUkXuUc6K+Ln9maQoji/fKEwG4fTx8c4YyPb+YtLxpG26FmhDnC79oSaXedckjbhBQ7U0ZtBZ4UdinzIT/HCpQ/hwUrn1U2S3gcILZhbLbtKAhmpHpYoEKMC+ziOklYLRc0hS2OVBVgp3gx1DGWorRCTv3R4RMKQU9IdpwTQt1fF++ow0mEQbM2waJ1UVURShiQ6a6KtXxNJs3o4pQl+S4xoa0O4X1uhdQw1v2YxyJs0bQk6VEqEU+gDNdmEM86c0UTaCP8LZC2yiV9oyAwUfK67pYpUcgKGWcf3a+mxMnKzHkE0Bfw6qdr2w31B8fLGkW1SyJKcq7CIqXNsVtKrmAICmmPrHqRXr8vsI2DP2YODV5vu2qSDLfGSd8JPTqHsGBJ+1dKFDYVWtQmY4ATzJ6nXhu6u13kJMhKpitNUnYA9sfNVlG9L4aSGei6W0AHteWy4c2oevzW3LvnG5vJRwDOkx5FCgHfdxjUCJPRFrvLkwBVflqYjP8SHD9MKw+8m0dbShk3RYFdze5sLm0p6jAahKhuvInFo+HmQrYPvjEB+9n8WIYZE9pBFXK0+FYu7Liayzck+4aQCQ/brh96kF9+9RM4oROjD5M/MLAr21Ui626llDnQtAiayF0DZKiY8FB7YbvAx8PfnZGef+xSuRxGLljSVtO03DmwTby0MAeDyjTmdwirucjt091bk7jR4UE/qB/L6Iljdj+P5xzb9P4VjlkMy+CtpLLGGkn4lU+82UCGyfkpQ==
X-MS-TrafficTypeDiagnostic: DM5PR03MB3163:
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163;
 25:P0jzKjSa7jWkmX04bhl+gg9dmNt4T8UVL48N+urb3rqBpXX67wEcYF9ZXidLdjisp+2GY1Al8AK4ixEdMwOI4TQrbWuFiNoyymWfGpURBuXKFd4kjGLDqkiyWrTYC90FYEw9AFeATSLsNDRkdSBkyz8+EyBy8KvGPZ/6FaEywqUs4XmumiDxpun7fFPZoVSiywO2fmMRpuPwEpKifUGtPaQOK0BBVmLFihNhaMsAeVa4gg76xAT4VbA9VE6Q+KtxKCGIMl+lQfcKGAE2amYn/uPEWl8OLeqU46GwKfhAO3Zp/rSUvPnuXkF53g9IQZTaElFXeuRLrKHsAC0B2DEI0Woc7TUr1/jjIavWRgOSehIY3VeK3w0Xo1CNjDL19cY8qHYV5mX3RGcTXnnME0SoyOC5tKmpEIWWwsim3LY+9LaVWzmvgNTH7fg9TjX+RI0QGq2BtxD0TfW6c62EPcH5jGcsvLNQ/emEEJYgltye6+lxaJJSJPXm5fFzppcjdAmS2AQinaxijpzqWiZxmaa3RbAsVJmTTSErxUVpYWhGKxdt0SWMcaygrg9730kGi251Z2AWcPEW1JWnysgU+dNdfagcjD3fPBQcqBUZvXKpC6IzEz4dqy2iTF5eWjRAuXgQOUXTzJTHRlHJUl9M9oRNx6Z1BHEM9dqKS2MBhZQxwiZ1DWuO4LRXcyKtn/lk39LFrpfCFJbmD1nPGqEdWcOp0BrGTn9wKJyicvjKuA5BpYOJR6bOBITFzmbpQiqPuRUNXdPuP54V4Nc9wlRUiv7iMvzQgT/wr8TWqThpBnBW9oe/5hcnqDYomQ4xhx2gyb+qO/nTiZIyrvLHy9Kgqzo3CDy4qaaECtXwLz7wiHP9/mvtiYIXQIzBRfIbs3euJu0/JGo0ri9AW1zBAm628RBMhLpcC6nkThw2sGQEgzqKwLM=
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163;
 31:tHQVZboIf638G8f8E3okCpXiECrbTLNk1a1c6rjTjBrqtulX0/ELGJNwc3nJr74AfVO/ubBjRXNKlbhmL6xMuW+C4ApWdLQyREr5zAw+HYRgNCRII0H3HyA8m3tef/etwMY+eEd1EbePnVAVvDyIL6Qes8wEasMLVWLsRY9r+qaNHAjrhVhW12CCpYBNPKfSr7lmXGyMtIjI4xtm+PNqg4g6SB9q1WKRnen7eubYLBRpTr5sxSpjwFNVhU5ZFdaRh5VXv7FtSwQhpJE1+uk5m72F7/GCscXQBBTpgbcQjSx+IiEZb0JdUkNzKKUUPJ7Ixe3El6/LYPm7x03LIKlP8azyKgTD2cCF7aNLCXBz1nmCkgDkDzt9pyRJeJEYkq9cxyPRQdsXauS2GmQYGKAu94+TUtXeJ2xpyWiFefmqLYcp6+aM1d6qvGjaeCeEuA6iM8RkMsLfhTZSHY/asJFgdHd5htfImRF/Cf+ZIrlxT2bANA5IBbwGLdaqWWBO+AWZYtjyvk0QyLmaJGgdyiua31lKcogFxuUJvczcp9VcFkM/75IDHHnVCLmnUTEZr31dx3wCR1d//y3v0Zc91JhlBGWKWy4C9PzgAA3GXzDeneXwW7P/2LrPbaQTgLDK9Dw8CGdd18EDrtXPohBz/6dYJbIA4E2GH3Z5pyaYEEMrlAobmPul71HN+1444PbKXXA7Q4/4Z7RU8Sb0ymzIDckwJg==
X-Microsoft-Antispam-PRVS: <DM5PR03MB31633E09A6D1A5FB157B221AE6DD0@DM5PR03MB3163.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(148574349560750)(275809806118684)(158140799945019);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13016025)(5005006)(13018025)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6096035)(20161123556025)(20161123565025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123559100)(20161123561025)(20161123563025)(100000704101)(100105200095)(100000705101)(100105500095);
 SRVR:DM5PR03MB3163; BCL:0; PCL:0;
 RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);
 SRVR:DM5PR03MB3163; 
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3163;
 4:w7y5x7K7jo3IMl7f37aYcFAHp75kB4HvuIYO4CJOCV?=
 =?us-ascii?Q?1ZENxdw5nsDmm4+R9HxqiKTWQGKh9dEpcpFMW3z5JnKgpXXfItC/wtTcqBdv?=
 =?us-ascii?Q?8MyVYhWZm2BEKNF2OoM2P7E0HDCm1XgBAd/uf6UaXyvbbYSZRhV55/wMyI2T?=
 =?us-ascii?Q?os7sefo1W3yRVadom/sgmXiBpBwfPt7ZD60hNuX5GEgbiPcFoksRCS0GyvHJ?=
 =?us-ascii?Q?y5QLkMDWEzrccTOJkcNN6OG3NYe+ttIgjZ6S9h5hS3h7uH0a+N42XSBiQ+vp?=
 =?us-ascii?Q?3Q65xEIaJJq3aXseMyil2nstwO2sTcXLbly9i5KSDEBZ8nt0fWNPcgKkjKhT?=
 =?us-ascii?Q?D8luqV/lb5OVEUC6iY+xX9xg4RigspXUPoi+fYD7y9cmCGqjajL3KNnOpL75?=
 =?us-ascii?Q?gpC4OJZglf80wlpYMo+O9Yy00YzSvrtFgeSxKBo03ye+0tPCG7HEbpXmLmuY?=
 =?us-ascii?Q?yowDmIZEw0Ozrqvh+j9Jg8Aq7M9T+Sw6iHIawk+mMcyT/azZl8XvXWWH0EIN?=
 =?us-ascii?Q?qRQXPp+E5EIZVBrWrk3+rGhS1qR9HbW4EY8R0WLlcB0sgsizitg0EewRbqFF?=
 =?us-ascii?Q?3p2Mi5mULc2MApa2+F/w9Glhk57umNU/rD6shUG1HREXBZtasTTicwxN8BVq?=
 =?us-ascii?Q?tzKjiESLBJPj7QMmgLgHMYBK/b+v9EJNGHLZktSWXVuX79cIV6bKwi3We83Z?=
 =?us-ascii?Q?8pelQNWHkPn/p8U1dp1BGn74Pwo7bmF5nlSWp5N14lvqOtU6g+IXlJg+3yXv?=
 =?us-ascii?Q?yLnbkuyFKn5yeoEMNmDgzFT0J3g1oU5MQ2BhD+DV6dqDcVe7IDDsi0eq0v5l?=
 =?us-ascii?Q?7I3f3ukAxoIR57KGFoM9w5WvKN7mG9HNbBU009GzZSVFz0fOJXchyWknX2SU?=
 =?us-ascii?Q?Eq9mKCGFMGPasBMu3kuCi+j3Kfe6wVyTSTsp/b8g7zAZPm485f18fgb8AxZc?=
 =?us-ascii?Q?WKmsAwpzG5wv0aC9+FnRbnrM7Jo8iox2mmg5fMnxzb+eSfjZxyqO3LXCC/9H?=
 =?us-ascii?Q?wZXgkv77FF3i96DDkhgM1I5Cq/oPiCgEm0shvxctY9/EHMKk2DaBKGUOgQrg?=
 =?us-ascii?Q?THiLakMfYGGCXJ9bBr66F3KMfbDnocUEu9KYlb09sZJuNSlTsNXb5mVHgoPX?=
 =?us-ascii?Q?O2WHbDSXUKSZhBPzxsx+upuHvPFKLlVwuMZE7EAIYh/ZjLhn3CsW9ISlKzlC?=
 =?us-ascii?Q?KdL2XQGEuMgdRe0B3zwaXX3/qTZMGaAGmTIMilBBzvvSjUkOvZwzQz4QmpVf?=
 =?us-ascii?Q?LLVyPKLbCrEEqhYf7qr/UMzNhXrqyYPHvC960YfXWA2mC2ILBCmcv5XyGyxC?=
 =?us-ascii?Q?kF9i1yElLO58FBMlQyP3oGACkfdoDuC8XRf87LZf7pktX2i32VE6ncL5VAcv?=
 =?us-ascii?Q?KllYaA6NGiqjUC9sGeoGFsDWjK86Vuf2MwnytGy/c1Hwmk?=
X-Forefront-PRVS: 03524FBD26
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3163;
 23:lRtlwU3ZCwuIpCUgwwBRc3soYsVQvEJEXjwdHswJ6?=
 =?us-ascii?Q?WhWSwjYqsRazD49mylQbUbPVqg3ADKLeN+Ool4lRc3+AX2uq2rnR+robiW35?=
 =?us-ascii?Q?C9wweW0zy6h0V/LoQZqf15Nr2kSMcRj/ftS10ddkvc+tNeHrce9i++wz2hKn?=
 =?us-ascii?Q?Y4LHv2nx/rL9+FpQ4uExIyW91P5mc1Lf//YDT376ThNypYP8iEiAkzkzHmAy?=
 =?us-ascii?Q?gaG+SYhdwfvNwyF3UQ5vn0QoHR68nVU3QM9jx6o5zGKM4dFGvO1PmhyUaDfh?=
 =?us-ascii?Q?OSx3p1oiCXSpr8TZ8yEkdHfOALZ5vKiBtLmVIgxSdHJkJ9L9AUrVGXESsh2M?=
 =?us-ascii?Q?gXFob9ZBHnWzkb8/IqOv2gCpaUPMLfn54NGbvvNyWLYAi0v3MKfb2+jnG+l2?=
 =?us-ascii?Q?pK5Q6hVPwV9kcXl73BE8iCgGipUUFeqoF9KLNsIgyO4xUGTM+Bg5vH7F9VTL?=
 =?us-ascii?Q?ixK2Ow8eXDtDCNCEFj0llywwZ24mZSFQY6xLpCp3EdPo9pWjMc7/t62RYIgU?=
 =?us-ascii?Q?eyBHT5sd5KZHK9dZVIMHFuqrAX12bv9YFMSTXsmlK+JVIUKRYX2ibN1qKaqU?=
 =?us-ascii?Q?AtNCZfB+RKJ7IIRSSqpJjQuNlKNlve5o+rE4Scer9DxBmBDz3538ZBkh3A7t?=
 =?us-ascii?Q?wQ2FN/AYCpvEiXMuyeicuvgdGqSR45qLGShT9OwWezTOT7ZpU2xmye0rfr/a?=
 =?us-ascii?Q?vAkhnHczE7TRZ57oEE1LBkWKGaVdIMk6312ABHzVktjj7OCcyJhPa6ULct0G?=
 =?us-ascii?Q?Le0J7xoZ5SM/SiGj0N5UdsV1MV1jqCLJrqeDPlTzTz0BieNy9idn7sQJfD3Y?=
 =?us-ascii?Q?aWPXwmKqrfWivpbkCS+Ee4p/MSoOFSY+T9/mX/CYPzAllFdK6hbIOj/sEbyX?=
 =?us-ascii?Q?41xsBbxt08ELvU9KwkTWtCplBsfLJWrFo95HM7Cn4W2lUXLg5P/4EGFTXeSy?=
 =?us-ascii?Q?ZmEIuTPFz5hRgcDclLc7dStzQSmnp3KyUS6Ym5V2EYhpek+QmhN/FrsCZuy2?=
 =?us-ascii?Q?H0FeVhgT6odirtTbCFl07nkfdOYcIfU/vKxUhQEM0Fq5wI+foQCszJq6MfkB?=
 =?us-ascii?Q?MVFnvH9Kje/6nUKxi94FOQsHt2wyUeIFNaagEV+Js3R4wwZh4sT03148SzDl?=
 =?us-ascii?Q?ngS3XL1wyB7nLRvEOYAroEdh4VazdER4so4+EdFCYrvVEZWwdoprQMWK+uBE?=
 =?us-ascii?Q?AirvUt7JC/7USpkL8RNQ1YaxBdrkZ9siUD0hmHI/5QQp1yG6+k0daOYyrtoc?=
 =?us-ascii?Q?oNENwy14qjb6C2mII1Fuhcyvn3tYpsSTra5uX7D?=
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3163;
 6:l3nhedF47LTd12GoAZdrpRjm2bFgJXg/6dQQ8h1aBM?=
 =?us-ascii?Q?z9wJCOzb2MqwllI6iDy87qgyKyDmkehsFAD4HE44KgOc8F1XJl7d8UuBVg+S?=
 =?us-ascii?Q?3RuhETvlDXRLrUnCHTE6m4DoxEjwZWqtmXlx9QFgds+P+rc1B9nLGQMMG43M?=
 =?us-ascii?Q?+r9PIav1HzkRbx3fwDQG36g7aRjodB1adrh+HyElkMagGYrAKrAKQ9vEqOxA?=
 =?us-ascii?Q?bRWm4K20QIlMWeC5Ofhx7d4Nc0FNVZmpx+mm6obl2hNMeWWDPlUOms3/4lYo?=
 =?us-ascii?Q?Lq8AjGyzh9N2V5DjFGhfzaBwW1d5DCSrpMG0Px+gYzl/S9bY4HTl/dHUf2Ks?=
 =?us-ascii?Q?NhPLv0qqn6+Mx4o7tenE+V8rkf9xatcG1jbYnRIwUugcQ+hvIdtTf2kpmNw4?=
 =?us-ascii?Q?sFuqEgKUyQd6H+kR8LCHzSoK4CzDS79UqUkvoDGmxS/A0UCqQjXuJ2SwqbrT?=
 =?us-ascii?Q?z/UJoRJAKauwUsLBZB7K3J3XP0ESVriCEHFQahIm4ZusUXFG5sdOWVEsM4be?=
 =?us-ascii?Q?KvgnQ5d4QG1h7TIVt0/TwlhzOfjfTGbxYWcxLKQE4MkQp+/qBWlVnepfjFfy?=
 =?us-ascii?Q?nN2jgc2+wRCwh/obqu13KNi6SMJdTb/bhZ26sM1hS3aB1HBndKiLpSjn3ERj?=
 =?us-ascii?Q?TCbJvHkZleqXvXLRqVQ59CEMfT6gaYPobWZCIjhv7fzHG8vI9/97E3sW4txg?=
 =?us-ascii?Q?XthSV/L3Djel9aU8/61Tu0NiaL1oF1nTzqui0cPsBZm641ZjICG3junWYAjQ?=
 =?us-ascii?Q?WxsGvuXcZS763iYn87xBivtz2Q+oOrjgSlMcBLrotbAHzI354wTzWmKddmf2?=
 =?us-ascii?Q?NHP6jqZHugiGdUegxIduwuRwXDBSwTnhjL7DU9uykwGPlphAA2yJy+uqWnWJ?=
 =?us-ascii?Q?wH0r+oPuOXaL6bEeqdY6CtuVlBZj3GmXeIAz4EAjp5isUg0/jS8BBSDvoSud?=
 =?us-ascii?Q?cYarhGelo0WHiqLLzhmhjlHSjX8GmVmqpBcU8r4w=3D=3D?=
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163;
 5:JPeVOUdEIsc/Hlio7s7iO/uRMUgNAUSnTZBZWfwmrOrfZD/uetu+c84Obyy4J/BH+p40Mzy+Cli1Yj7Sb6dZr2fjmSh4JxsfOQVZ3UtZqEQReyvpez+q+/UgwREX9h3ZUdehAaF6JC2wxqYQ6fRvs30S2Opkhy0KRo8Chhg4WTI6+D+BGFHhEI30zrKMJoPzxgUuJ/AfWfy5NORjVisElt4XdyvNkvXkHIZ4Z3EsQzfVV/anWuxVC3LEp3lLv6PVWP5rYP2cuc+CfcmTfVNMKnULVXQlJ8IC3J3gzmF3VGC05O7F7kxQbemXFxSDUs6ubcXAq5CptaxwOEUpupl+/4A+owliq73XNOGSl4COh08NUrQ+YPZxLC7jUhh3Zb+q4g8GOz8CTkF0d5SdH13FaUz3POWs1B44ZOJMG4gdFFBuvpX46guGgBA4VpN+joGTZh18EI432CylxKJSuEDk/qqbmPuIham1xfKPbLMWI4q09M3LpC/GrvkatfPjCWz4N0JkP0oQWmYfq9pxfGniLg==;
 24:7zPWs7OuyF9F1/TRgglJPJN1YTGF3bd30Em+ve7j3sbo7zOPFz0w5BX2fLG8wORCaU5hjd4H69+qGn4ju7hP2eX34PYhWpYrw7Cff1FGVbc=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3163;
 7:eows/DqqwBseyIDC/2kLqOHmWqMA5cNHd/81lryZyHZTtNjzt+/AMNRbhdjo2uL+blzq1so8zsVBrj9CrJF/dMU3joNr3pFZiKA80IRVo5IBw4N+2ZqH5LwqPo7Wn+79IuUia5SHsOp4EiRLUnFTfSEoSQkjkjkz8a+HdNl6OpbHGlKA6OmvSw8gun4P4pd/DahRYTwH3FI7COTJoUw/NtJcl40ZDvPM2gA49Ef6z0ckANAa+MKzKB7Cc/ED2BFcl5OdCDwXBGmJdk5CYMuQcS4m+1PnIbpZQJdJASUsgFH8MuwXC2xsddIag4/6pTh4veufgjiiD1usDhl3Ivoz0pvaKCILZPw1E33+1/1Q0rhsadIgaxrhwjS3u5DgaOgpCQAABs4p+11CJ3X1fyQR/eL5sHEB1K7SRKJuHkQq3owdawI0NYVWsyBcdgRsaRC72StFG3KTJyiOum2il03y8MZBcGJzOTci5jYXyleNIFqUsITumSnqOKjlox07RzacXJTBRVVAjUZ1Ex9iMPHwGcqOePXzPj9GczAZPH983nsc2ZcuysQji0M+P3dbe1qFaJrxDm+AmF+CuJb0JiO2pkSQiOtAtJXv4jfM9Bnn5cdZK5vNSO01WBI7yk62ayB5QA0g+QbLYwK7vhLW3AWXxbDTYBSoyAgTIRV/IHBDzaIq+h1aPxflLvxGEdEfP5uV20WgKYfZ7B8T5VABUSoPRq0llVqImQXbphlI2RBTSJfCcsKKAhe1GO1Uw7NbYXc/KFgx5IIOUXwh2P/r23135Fn+XDiHj+FE3DasFxACHis=
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2017 15:17:30.1628 (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.168.50];
 Helo=[tx30smr01.am.freescale.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR03MB3163
Subject: [dpdk-dev] [PATCH 09/21 v3] bus/fslmc: register dpci as dpaa2
	device for bus scan
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: Wed, 28 Jun 2017 15:17:32 -0000

Registering dpci as dpaa2 type device handling initialization,
allocation and freeing of the device

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
 drivers/bus/fslmc/Makefile               |   1 +
 drivers/bus/fslmc/fslmc_vfio.h           |   1 +
 drivers/bus/fslmc/portal/dpaa2_hw_dpci.c | 179 +++++++++++++++++++++++++++++++
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h  |  15 +++
 4 files changed, 196 insertions(+)
 create mode 100644 drivers/bus/fslmc/portal/dpaa2_hw_dpci.c

diff --git a/drivers/bus/fslmc/Makefile b/drivers/bus/fslmc/Makefile
index 4884d87..a156847 100644
--- a/drivers/bus/fslmc/Makefile
+++ b/drivers/bus/fslmc/Makefile
@@ -72,6 +72,7 @@ SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += \
 
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpio.c
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpbp.c
+SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += portal/dpaa2_hw_dpci.c
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc_vfio.c
 SRCS-$(CONFIG_RTE_LIBRTE_FSLMC_BUS) += fslmc_bus.c
 
diff --git a/drivers/bus/fslmc/fslmc_vfio.h b/drivers/bus/fslmc/fslmc_vfio.h
index eddce31..7c725f4 100644
--- a/drivers/bus/fslmc/fslmc_vfio.h
+++ b/drivers/bus/fslmc/fslmc_vfio.h
@@ -42,6 +42,7 @@
 #define DPAA2_MC_DPCON_DEVID	5
 #define DPAA2_MC_DPIO_DEVID	9
 #define DPAA2_MC_DPBP_DEVID	10
+#define DPAA2_MC_DPCI_DEVID	11
 
 #define VFIO_MAX_GRP 1
 
diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c
new file mode 100644
index 0000000..d222f26
--- /dev/null
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpci.c
@@ -0,0 +1,179 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright 2017 NXP.
+ *
+ *   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.
+ */
+
+#include <unistd.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <string.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include <rte_malloc.h>
+#include <rte_memcpy.h>
+#include <rte_string_fns.h>
+#include <rte_cycles.h>
+#include <rte_kvargs.h>
+#include <rte_dev.h>
+#include <rte_ethdev.h>
+
+#include <fslmc_logs.h>
+#include <fslmc_vfio.h>
+#include <mc/fsl_dpci.h>
+#include "portal/dpaa2_hw_pvt.h"
+#include "portal/dpaa2_hw_dpio.h"
+
+TAILQ_HEAD(dpci_dev_list, dpaa2_dpci_dev);
+static struct dpci_dev_list dpci_dev_list
+	= TAILQ_HEAD_INITIALIZER(dpci_dev_list); /*!< DPCI device list */
+
+static int
+rte_dpaa2_create_dpci_device(struct fslmc_vfio_device *vdev __rte_unused,
+			     struct vfio_device_info *obj_info __rte_unused,
+				int dpci_id)
+{
+	struct dpaa2_dpci_dev *dpci_node;
+	struct dpci_attr attr;
+	struct dpci_rx_queue_cfg rx_queue_cfg;
+	struct dpci_rx_queue_attr rx_attr;
+	int ret, i;
+
+	/* Allocate DPAA2 dpci handle */
+	dpci_node = rte_malloc(NULL, sizeof(struct dpaa2_dpci_dev), 0);
+	if (!dpci_node) {
+		PMD_INIT_LOG(ERR, "Memory allocation failed for DPCI Device");
+		return -1;
+	}
+
+	/* Open the dpci object */
+	dpci_node->dpci.regs = rte_mcp_ptr_list[MC_PORTAL_INDEX];
+	ret = dpci_open(&dpci_node->dpci,
+			CMD_PRI_LOW, dpci_id, &dpci_node->token);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Resource alloc failure with err code: %d",
+			     ret);
+		rte_free(dpci_node);
+		return -1;
+	}
+
+	/* Get the device attributes */
+	ret = dpci_get_attributes(&dpci_node->dpci,
+				  CMD_PRI_LOW, dpci_node->token, &attr);
+	if (ret != 0) {
+		PMD_INIT_LOG(ERR, "Reading device failed with err code: %d",
+			     ret);
+		rte_free(dpci_node);
+		return -1;
+	}
+
+	/* Set up the Rx Queue */
+	memset(&rx_queue_cfg, 0, sizeof(struct dpci_rx_queue_cfg));
+	ret = dpci_set_rx_queue(&dpci_node->dpci,
+				CMD_PRI_LOW,
+				dpci_node->token,
+				0, &rx_queue_cfg);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Setting Rx queue failed with err code: %d",
+			     ret);
+		rte_free(dpci_node);
+		return -1;
+	}
+
+	/* Enable the device */
+	ret = dpci_enable(&dpci_node->dpci,
+			  CMD_PRI_LOW, dpci_node->token);
+	if (ret != 0) {
+		PMD_INIT_LOG(ERR, "Enabling device failed with err code: %d",
+			     ret);
+		rte_free(dpci_node);
+		return -1;
+	}
+
+	for (i = 0; i < DPAA2_DPCI_MAX_QUEUES; i++) {
+		/* Get the Rx FQID's */
+		ret = dpci_get_rx_queue(&dpci_node->dpci,
+					CMD_PRI_LOW,
+					dpci_node->token, i,
+					&rx_attr);
+		if (ret != 0) {
+			PMD_INIT_LOG(ERR,
+				     "Reading device failed with err code: %d",
+				ret);
+			rte_free(dpci_node);
+			return -1;
+		}
+
+		dpci_node->queue[i].fqid = rx_attr.fqid;
+	}
+
+	dpci_node->dpci_id = dpci_id;
+	rte_atomic16_init(&dpci_node->in_use);
+
+	TAILQ_INSERT_TAIL(&dpci_dev_list, dpci_node, next);
+
+	PMD_INIT_LOG(DEBUG, "DPAA2: Added [dpci-%d]", dpci_id);
+
+	return 0;
+}
+
+struct dpaa2_dpci_dev *rte_dpaa2_alloc_dpci_dev(void)
+{
+	struct dpaa2_dpci_dev *dpci_dev = NULL;
+
+	/* Get DPCI dev handle from list using index */
+	TAILQ_FOREACH(dpci_dev, &dpci_dev_list, next) {
+		if (dpci_dev && rte_atomic16_test_and_set(&dpci_dev->in_use))
+			break;
+	}
+
+	return dpci_dev;
+}
+
+void rte_dpaa2_free_dpci_dev(struct dpaa2_dpci_dev *dpci)
+{
+	struct dpaa2_dpci_dev *dpci_dev = NULL;
+
+	/* Match DPCI handle and mark it free */
+	TAILQ_FOREACH(dpci_dev, &dpci_dev_list, next) {
+		if (dpci_dev == dpci) {
+			rte_atomic16_dec(&dpci_dev->in_use);
+			return;
+		}
+	}
+}
+
+static struct rte_dpaa2_object rte_dpaa2_dpci_obj = {
+	.object_id = DPAA2_MC_DPCI_DEVID,
+	.create = rte_dpaa2_create_dpci_device,
+};
+
+RTE_PMD_REGISTER_DPAA2_OBJECT(dpci, rte_dpaa2_dpci_obj);
diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
index 429eaee..0026ba9 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
@@ -79,6 +79,8 @@
 #define DPAA2_HW_BUF_RESERVE	0
 #define DPAA2_PACKET_LAYOUT_ALIGN	64 /*changing from 256 */
 
+#define DPAA2_DPCI_MAX_QUEUES 2
+
 struct dpaa2_dpio_dev {
 	TAILQ_ENTRY(dpaa2_dpio_dev) next;
 		/**< Pointer to Next device instance */
@@ -142,6 +144,16 @@ struct swp_active_dqs {
 
 extern struct swp_active_dqs rte_global_active_dqs_list[NUM_MAX_SWP];
 
+struct dpaa2_dpci_dev {
+	TAILQ_ENTRY(dpaa2_dpci_dev) next;
+		/**< Pointer to Next device instance */
+	struct fsl_mc_io dpci;  /** handle to DPCI portal object */
+	uint16_t token;
+	rte_atomic16_t in_use;
+	uint32_t dpci_id; /*HW ID for DPCI object */
+	struct dpaa2_queue queue[DPAA2_DPCI_MAX_QUEUES];
+};
+
 /*! Global MCP list */
 extern void *(*rte_mcp_ptr_list);
 
@@ -311,4 +323,7 @@ void set_swp_active_dqs(uint16_t dpio_index, struct qbman_result *dqs)
 struct dpaa2_dpbp_dev *dpaa2_alloc_dpbp_dev(void);
 void dpaa2_free_dpbp_dev(struct dpaa2_dpbp_dev *dpbp);
 
+struct dpaa2_dpci_dev *rte_dpaa2_alloc_dpci_dev(void);
+void rte_dpaa2_free_dpci_dev(struct dpaa2_dpci_dev *dpci);
+
 #endif
-- 
1.9.1