From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0079.outbound.protection.outlook.com [104.47.36.79]) by dpdk.org (Postfix) with ESMTP id CA4F05587 for ; Mon, 3 Jul 2017 14:33:04 +0200 (CEST) Received: from CY1PR03CA0032.namprd03.prod.outlook.com (10.174.128.42) by BN1PR0301MB0594.namprd03.prod.outlook.com (10.160.170.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Mon, 3 Jul 2017 12:33:03 +0000 Received: from BN1AFFO11FD032.protection.gbl (2a01:111:f400:7c10::139) by CY1PR03CA0032.outlook.office365.com (2603:10b6:600::42) 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; Mon, 3 Jul 2017 12:33:02 +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; 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 BN1AFFO11FD032.mail.protection.outlook.com (10.58.52.186) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9 via Frontend Transport; Mon, 3 Jul 2017 12:33:02 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v63CWqgq001316; Mon, 3 Jul 2017 05:32:59 -0700 From: Akhil Goyal To: CC: , , , , Akhil Goyal Date: Mon, 3 Jul 2017 18:01:36 +0530 Message-ID: <20170703123139.15148-3-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170703123139.15148-1-akhil.goyal@nxp.com> References: <20170630074322.30661-1-akhil.goyal@nxp.com> <20170703123139.15148-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131435587823905612; (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)(39410400002)(39450400003)(39840400002)(39860400002)(39400400002)(39850400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(33646002)(105606002)(8936002)(2351001)(106466001)(81166006)(2950100002)(6666003)(85426001)(6916009)(5003940100001)(50226002)(189998001)(8676002)(305945005)(47776003)(48376002)(4326008)(54906002)(36756003)(2906002)(498600001)(356003)(50466002)(626005)(5660300001)(86362001)(104016004)(53936002)(8656002)(76176999)(50986999)(38730400002)(110136004)(77096006)(1076002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1PR0301MB0594; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1AFFO11FD032; 1:oca5pUlSCZk8GX6b2jadb4+kUI5X3t5tyD//Q2r2G?= =?us-ascii?Q?aOTedU51FlFZnRDCE2ZyPNqwrw+d4fu1bU+fDuRBUFEMZF+yOmnxK/uGaKOB?= =?us-ascii?Q?0xo0BcIjpErfGhFbn6TrFfuSgIRvzYxkcXTbW0hSFaO2LY9zGIHF2ahbPZmU?= =?us-ascii?Q?DBK2bJf+UanGtiaerFSuNDB8omVZhFKO5qZfkto9z4fURazOvUiZDGhWKjVp?= =?us-ascii?Q?JX+U9E2h25//IYBse4BDEEUPQYd2hXCCnr/jmeyklS2WyMUcBKLUaZXFnhOZ?= =?us-ascii?Q?gHDTjYHj7z8BNK+MEJxUnQ8AdZQ5IP3mxEby4Aw3Q082SzLvB8FmwpF2geiY?= =?us-ascii?Q?60eXjRiGyH8SN2sPxoHrqkSEauHMJW61Cf43vffQwHQSp5HCCAxE5Be7N9qz?= =?us-ascii?Q?s01tBzKR4anBj2WWiPhwEmwCENJW1BeOae8LzGkwSGETRXjx00fFD/zzUd5e?= =?us-ascii?Q?CX339Ow2leYDaS4BKSQXS1XVlX+PNLuIDiXin21j25TCrFj4CBhU08cSUgVt?= =?us-ascii?Q?QviMTensXCHQsVMo8M2ZolwJwsWyQrUkqa8qGNTSaH4FwjZezDzYprYUUfYA?= =?us-ascii?Q?JG29RBaehIlCfKDwvLYK5Re4mZXpYJ+RFLw6XAy3eVe+jGiCH21tJpGjGol9?= =?us-ascii?Q?iDsa/S9J8t9vwiYTfxVM2Jmi0KTnFtPrKl4/tjD2UWSh39NDcrEiFRm2/cMB?= =?us-ascii?Q?+svnHvqNRcZr5aiS3z69lqEyIICJBzMUX4bS6Ws3yBhDY6LutlFXTamsR+aI?= =?us-ascii?Q?GR6PpUDsRp67zHKU3Zf4354jF7HhFmAHCbrFLTNgRICSjGV/+cWx2FtLwnz6?= =?us-ascii?Q?TWw5aqmBDEr74FkxMqPFsOzSt7VcIwEzJDGw0uJzuZqNEpWSKExQlFxWsprW?= =?us-ascii?Q?mv3Sv82j0NNRItFplK+AuTro4w0FbkwUJIaVVuCyp9o4sTsm6o1V5hRUWVO3?= =?us-ascii?Q?HLRK1HjcjtC68+6RmV/hlc3nxLCXQq+vYBoi6c1Dwf3tZ52Ea6Yc2zm20gJl?= =?us-ascii?Q?wNEKtQ9WovSKH1Sbnp0FX1LxLhS9EBzt4sx3BKl97X2V/Dnf4vI5rtLzzdXz?= =?us-ascii?Q?X2/9lFSQ7jKPc0mAQvocr0uBjaOWNKOqKKkBVFK7lZCagnpiw=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 05f649d2-27ef-4812-49ec-08d4c20fa58b X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN1PR0301MB0594; X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0594; 3:sx55vNH68lHCgKt9rHsAPAp9xlDQa6/+sINmgc/fK/yPG1f6Bu/Kx7bGPgzNyVyDLTYABYZLZRW0AatcVntM0XxClf62KvZBd8klaQdGHa5cJPfqdpx1UVVBugcOT7+Ea9azwDBnLAm+pH7lyMmEO6wgeK/39ek/QVRs7lKAxV2a74J1skGnXI1f76/KjQbVreCOLdWQwgXzUfLOQkYsidOge1GfSll54UcjAyoJjw34qW+PAzb2IgfCvgRyNakEUPRCvs4EKMr7Tk5xSiS3uyvCJsmK2c5ZZBsPkkW2nMEWJCP4jeysWkOUPuky/jxKqBGLFDeXFcvxWEtbyB3NlYHbkXzguHtNjdGle7+VHN85pVNNbDbIy8WsNgr1jnLhx/aar0uJnA2qqM4VZqWIORo9OECicVf1FCIblmtAczS0F1jnpRzdvHC4KhopJYglIrll4u6sp6r0r6c636wIRs7ZD3V2hYTP2I/1JwOUnWFUQfVsetoCBSJq4JEfHgO3u7tCnsBLdR2TuG1n32Ur2qHLFrpcYcexhYI0rFEjTcXmY7fvc5TurcM5nivK7dkedR6EN+VVHnyacEN3jbSZt2VtYxd4XY8b9oPwWHwLAPN97I24QZyz7Qhu1zAC8v98/DaqCt+Yd9gVEv+2QBp+CFSDETlKdzFVbnbHLdVPVGAkSsdrFke+y0SwIsyiYFXgw0YSqdxKoLErJ5QsIhVXoEVvzEO/riMe3TY53DLCd/lcRXB6SvuOPqQdJu/sRcCpHX5hsszVlthSRbqLrhYf+ZtF/Je5hYnLUbGNWAS4rjHXd5QF8pHLPbSlisyU4stkSxBmpxFmIItSGKBfMyKAvTQogd00A+9/xOwDUTDu4n3fRb6i32SX+aodJdA2yCkY X-MS-TrafficTypeDiagnostic: BN1PR0301MB0594: X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0594; 25:aAe9ImlH37yT99szlF+h+isBU02Vjfd8/33xwOs7PWmn7zBp3KXsWXsrPtr1H/GUUaz96Cagd80aOlwbY4Oeu75LsUDYsCGfkyk3fERIM1zNJeGxuEv/GFJNEnpbKhYMR4SeUjq/oQNTAADUBY2gwVkGWOT7+5ifXZ6AoefTl1yB9D69ubV56lCACEdDNUUvfbER9KW2E+3VuD9Tx/Vr/vOYbUolbpOFKx4+ZfE2yeKHH9/2YZOJKoPA9udRgTThApWsQHGQFSMsYPyhFwuCibRNyyGgQDXjaHdOwCprEOwWzfqQb+NG2Gi5GTVy+eg73J6kAfjxrGeIv/yO4ZDq4Y5e5YenguIiW+gZP34H5M5UHkvrInSo5oUPKhLRS2taNDKLFIF66xEPlhAgp0rIFrMxDN3gwums6yvAw7rQkKt/Qnm8li0k4rG0Jn4KgjUfjZzkZpxFYRs6vhYbq5kThlBl+ZXfDMBmaPL2UPB+JGPf+n2Qyig0zLJuGecXk8H4EWdX1XkBi5tUFpsN7nFfFULNa05PU5Px5epClOQB6d8L0kFz8l5uMQxxDYkTSV5y6mxrZarh0qho0wAxNzcT2vP+4KDC+oHBr+6Rs6qI2ICpQLX+KNFg9R6Q8QHvfcSFAeXw/fmSBPJVxh/DdjAq8SRu2p+4VjBDuiFYMXKuLnmUWR4lK9Y4LNWCCPvLnOKXFZ/Ul1P+saoI4axb43ZZ02uxS3DVsI6a9RAR+sWkoU1fyFwX4fGKYoX9nIuRef22OydypLJ3E3C6arLxPZj63fJgyMvIrnAUZbDw8dUFsLo0aEUqbSUTw1E+sUX/SukVbc7trVlOIjL9HPjXeeJsRx1fUzhy6gUK5rOUtRzLjxI/H1aoKtSKH6YAM6tNFNl6sq2tbSIvRbkmmojvmtYkXndfphgkhNm4Lwio7nQRYjM= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0594; 31:vTx8NBq7Qv51Sge7tup2rewtBJwqsfHbeIzkS09t22u31Y6aitTUyFHWkK8Jf3L+Gx2W758WEgNcQrYLUKSNmO0Y8zvXIs45EZ9+08NQJpv5Ja9q2FlRzYY/m+IhO8h3DKqkTqof6Q+fez1Bblu5K1gszc96f6mQ9CNnwDMEavZx4ukHrLBUG0trOFsX9TtlaGuK0mrJ3pF1QbCQQJjlfXtIRKOCMooOEF/jD+U/f+ZwgpB/fVbKoI27NLHFZoXR/7JxcA66SQy+0FZewqID/zVawwoRCjaZyxCza4EufApnEbI+sUs1lQIPR0QOpkGP5pmmjsK9CfSyQtzdTHswzKQ5cCWop9LmrTHTDTcZywFIS2xnCzh3q4Qjs7lo4gXGq2Q5kEwVJfvYJkJ3Fui5MXMXR9wN/eIBAHAbf3jFoELYPF4EfBjUuSEQTs1B3WE6/l9dXbTZxqa73ZX8TtNrard8IfFQQZRbJodYJqrAOjMMS1fmLuQg/yTK+qP1Pe6ix9eq1H8We1gStIAsfvU8AjqJ5BsWclph/u2FJjNcn4VSEladAruBBvmnSsU/lcsxpZpQjwTxq+ufkq23EpdsOOOP6Pzw++DuHA/l3i7Szc4kU98ljqDwHIjPEnWTkGJkfbgD0+1pUqm/k2cC8pYhPODVS9tC4Z3XBHmS7Sk9Dogjf+Z7LK6fXV+m6Q8VxrdC9/sZQHBpgva2G1t71jh9sw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(275809806118684); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(5005006)(13016025)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(93001095)(6055026)(6096035)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123556025)(20161123563025)(20161123561025)(20161123559100)(20161123565025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN1PR0301MB0594; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN1PR0301MB0594; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0594; 4:LBVCt2a1HybVoony8J9+m6gbd8JCrWPD4H6cLMsC?= =?us-ascii?Q?Ik9h1h3zUNyGva1GrriGuo6006SPjVsywf/C5//83G001DhWFMqFP7K6k4bi?= =?us-ascii?Q?pObFARx9lsJyEREv7SkMFgjUyNtMdsXdL73gH03k/10zQd9ca4azxqW4J4L+?= =?us-ascii?Q?mqgJrF/oqJekZdYU4nVz9ZZULduW0xNSk3LJGve0Biq2aqAkNv9ZS47yNWdf?= =?us-ascii?Q?c8X3MvEdqgZP+cjo8JRLhv59okaUEpxoL4NYyaCFiCiqSQZWiFznSg6aPv1N?= =?us-ascii?Q?jFbrMYbYpFVSTZReTbq0V9Y7VTRPv6soWXq1EXYiG/4UTpWH5lvPHAD/35wa?= =?us-ascii?Q?cCLMyBkT0p6jz0blo3r9NE6OFsM8SBLlF8I+X2UByq5CAuYhOdqLc9HzesRw?= =?us-ascii?Q?7JmV6KYgT+HthzMOIWYo4MTYDM2DDWSz0lpfDWMcB8ZKAig9yO88ZoyYexVS?= =?us-ascii?Q?jG2fObxwy8xm3agTYUBUd91SDaYAsTc3VH+Ky/f3/K6kS1pATDfJulYtoHI7?= =?us-ascii?Q?E7p90O8AR/zg6QQNGNlrLbyoVRIxNPTv2fs3GanRAVTHHvEle1Lbav6lMfMJ?= =?us-ascii?Q?vbBLZwq5SrsRLB7rugm5Bfs15rK42t/9504NWySVNhfaQydHeC+9afvrjLih?= =?us-ascii?Q?2tssz5O3wwx4/Z4M6Wz6HxM4N6B8jd5/tkq5EE2nL5cHWkEVRG0izZ8QH7UV?= =?us-ascii?Q?CNLB/e8N5BaalFq/ShudE8TG5tkK2uijkiYgwf8Gj6RflDvlRWem5RtSk/rm?= =?us-ascii?Q?iR2PMsxOqR1N4RrBFmh3Rrmw3AjTsKirw4Ihtz2TJaPCvT2JqRG3Vne4y50J?= =?us-ascii?Q?BDNRkbSLtS8GRt4fAbOP0ZnVpjx30vWRlTn6quRuXEtyVP+cCnhdIhNKxYLg?= =?us-ascii?Q?Wi1lwPIY/1H/VJtSTP+BzLqn93MOMqBkStfWUhFZ64e00QAUevfHIRRV+ky7?= =?us-ascii?Q?lDD9NH8ksioN0yvbBHCNEhum7+hjEvqErGLLFr2pnmm75ucZKZpvIHG0KJTU?= =?us-ascii?Q?7W38EdYu31wwN7KQw0kRgxKAAwZPNzoFfZW9+Dzb8VmHr4Ul5CNmjnBJeRED?= =?us-ascii?Q?pFLsSRgzbnU5Zc2GzXB6QnoXQD1NumDm+QY+jk+AE8YBMaik1SUsfSmr3w55?= =?us-ascii?Q?RhxHNgum9z/ey51kvf7feRFBbWjy4RlvPSrTFry7A/D1SPryezY5GmKLc7Lu?= =?us-ascii?Q?Cx3AihkG9u/WKOEakNKfN74bTfhhk0IqFTCdP3D6k+HjLmaoaDNL2oA7SPb7?= =?us-ascii?Q?osESUZKjqnb9b3KNdy7BowkzSp0yHfJaYFnT0virlqJtmSsju6/2xc4vSUDJ?= =?us-ascii?Q?PVh6JvBZ1ytxBQA0d63Nwd4pbekdBqZ1anCdlQPt9zGn?= X-Forefront-PRVS: 035748864E X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0594; 23:PboOTGykazNsvU5483Utzfp2WZ2uYJAJmGAL3vp?= =?us-ascii?Q?Qu/FHYJMhXWkO65KvA/qfcnLeC/seC/EEb2tNAED0061O1VGTfxrnMtZJ9Eb?= =?us-ascii?Q?xEkzZmZSse7gsarN5OoLCGvAZ3TUE4z7GM1TaBw2y5RhUsgelnoKRbsinGef?= =?us-ascii?Q?D3xhqI+mADTkuMc2dVamnaZaQzwdVem4Ddv8YjCIR+F6+9STZW4+pGFrEaEt?= =?us-ascii?Q?cPxS8CSOIwsnkHEG/kbTLdmvGHk2Q82W0HMMb+gWN4yjDlYTd/mj8Iuyeeis?= =?us-ascii?Q?AmMNUq8fWg5RNFNrJFqAuDWAOttRqjGR+8Ie5KVfNCnI50xkv8ZY0OX8xrL8?= =?us-ascii?Q?UnR0Lo6d5tJXbEK16/ZeBuys/vn+dmGq85daH4IdbiGfsTNxO6qBD8RekmAl?= =?us-ascii?Q?lAlk3gK8fqsSSqGj+/7XMzKmZRdemZlKp6CBoL8jY5k57nUTRJsEbox163sf?= =?us-ascii?Q?7Jytd1sCm9Zh09/nDEE27JxYRMEPUyFyp2fffCaNriznvSA0ALzm1Z8uoz6g?= =?us-ascii?Q?KAFQMEQubg6woPjBtw+54x/Yt05O+Dbmh988yd1Y5tYUdxldybL4ND5XX60p?= =?us-ascii?Q?6Yaus07OcZm41LBZPpQPKsWq4Fu5qfADOkcdDI3HpybLRizjcsi4cqwNq+eB?= =?us-ascii?Q?8bWFhsza4qrj8IU22kh4v3HuCkTZ9yOVeqIj+s7o+1pKtVYE/tn0KFI2LHGz?= =?us-ascii?Q?OK8eJ/n6/8Dilq+6ebro/uarujPTMEsl0eKqEpiD3kgCm5/x9+GQw5QHjYGH?= =?us-ascii?Q?nmacAe9Ozqxw5wGv8Gpfc6q4RHFS096xOoadkvWmV9wFir305P11cfgKyeor?= =?us-ascii?Q?AaeaMRfIS6ji3AQqvdIGilLX5cuxDX1LDy3tFoLorpZ8pHUlACgbZBBxXY7c?= =?us-ascii?Q?XfLzLUQQ4FCWQlicObF6hwiv70kmFVbZyrhhrws9bM1+EJ5ATWk/PsDkXjSw?= =?us-ascii?Q?jDNJA5NQQAgEGRynuPxZCcdRCaqC/AbWO4Zh/nfk9DK47gnVb9clQQ1x/xLf?= =?us-ascii?Q?0wreWHEGVNZ+CzW/Domztyro0PxEityO2Uqu2UwwjESkSdjmZ72XOKA9x962?= =?us-ascii?Q?4DXnU+LOJO7Orpti4o5RO2xBJAka0sVn/ax3HkpTUcSQ+z8o9lyqxKqDVSL5?= =?us-ascii?Q?96Sk3ViwMBglajwbQgPPgyFV/wodR/vpWX4J8iyqWSv4z5JXxREy9R69ZIAL?= =?us-ascii?Q?mabICX4BcKss16fzjxhBIXvaq3q/EPJSrhHUKh3G/cCUj2vb4JLOksfxBrIh?= =?us-ascii?Q?/KE6+1kbl8tS+LClZLVHhFZu/C7Qo3foz5jzrav7c?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1PR0301MB0594; 6:W47zEFz7RYGCHfPmq8NK4rZBVYY1psE/ej2FO8Dc?= =?us-ascii?Q?/ZRROyfCitJaDA9GjcrdLfTu4vaZkOvQD57HfteTeg/wKb97feEB0n5XZ/37?= =?us-ascii?Q?uUK4sTzedC/2sDMhhc73mybrBmW8pT9fZ+nY24M+kCku47nxeSmc918nHaYT?= =?us-ascii?Q?eEIN1uIIjajdr76tYgWeQoYjvKTzfPmhYNDbzHoD0lafy9G2vx17Aqj/XB8a?= =?us-ascii?Q?HpBfEtDtYQPGPHwDnNoL+vdQs2SF4D4A7yNJmqOrWPVnloMASzrQsUK5ieHE?= =?us-ascii?Q?Kc9LLmte6fDP1LtcSCmWNzlz7t4a9Iqz2zQ3wlMY7eDffjho6xmEMNwam/Nf?= =?us-ascii?Q?q97HPSdX07Uk6k6gi1OxwXMVyngl3LqmaScJW9HLvptnT42+9K49AqsLCsC5?= =?us-ascii?Q?mKWnXElnpR4cF1prRodLIbsOa0iXQQuLGEYzdIAs5Ho4Ku15gpfa4sbMIlrC?= =?us-ascii?Q?CrQ1mC8L718AzeKOJTHLhCOZoXHU87kbGXdxj+vCDdG1xS1zAQs8zRq2A1HW?= =?us-ascii?Q?rYBLwW/C9K3+c5w11pOAe2wZbD8Idvd1NKVn3niToelAO1kqxYIBPTKLPECO?= =?us-ascii?Q?4aqlZPOF5Hzjs7IbbQZYsNfxsq4zJALmtKsD0095g4JiyMRK3JXwIz/rdmmZ?= =?us-ascii?Q?rPeM/rW/S+RRUwGTzGD2AMy/gBZoYIu0FMqlHtF8G9DylT+KCD8zt5Z7Na+L?= =?us-ascii?Q?DgG3hg/5OUgmyJIqESUaktMv58kAaxpjpbNS1HHKeTTGywg6WAusFBXs2nqr?= =?us-ascii?Q?Fbycq9EmUbAUK49ZBJQRD4kHQ6Z6+4VBv7hykCGQHmJsMRK1pjDQJQtff/TJ?= =?us-ascii?Q?0giXkoxh0WNC6ye7SqzMoWI/FDrEEoWuBjoXp1h3P0hcY6Pd5Fn6ZeZ49jAW?= =?us-ascii?Q?d3KsVK1cpWyPJMaUSymX7TkTA4JkyXPH1LVTgfKCuwstNj79P8vIGEJ0EAu6?= =?us-ascii?Q?MddQzs9lVVa5qh4Sq9jy10IUYwL/Ml4w/UpvoXV1WA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0594; 5:LnPz9bFxo8BzT6dAF6E7j88FViI4EPf5KEsbWJTEmnyP5AakuKZYMur1bQO6ksk5iMHHmClBrYOVX0qNAdRKhqV58ie65Lx/Rtqx/g2lxr2ap/WAfwEbOP96mgWA8TENkzOrqgd4Q2/OWMWYhiVkQhvrK/uvQV/R31h0eh9jReJtOcg1oIUF1eoBUH6Ejw0c1uEXpX1so4FzjIt2SjNEe3iKNqrhivh9wBjf3cIRN/Asdh/iwbrbTRVig9SX11Tj4tzjOem2MZUoWm+pfnOIa2dEVz7PJsJtt6DmSl+U8BYl+Vey3HmxAJVeM3tBFPD5urempwAObGeRa0b+gG4Q3gO5HND8k/ShyIGsxXF8agHThdPjwX+M8tEccWetFhYNyRvCvnUxhCUNd3SGtJGgZueu/jF8tub/E2mHiuz6CUSfq4K+V5M4DkSqwrkZTh9YU3gHlAPe9aHNjRrEiyqGA6/kJqM+U3wLHa9lJPH9l1we3QPZe9pAgpAq6NSymYHiboww0yVp5cjKi9gPAqoxkQ==; 24:ZiqBW6WDl9QJqss+gxADiUb0W+tgs5AzmaHgrIRWlNA6/CaOTo5X34gECvetnn1gCeDVrEuStCcqk3JVoq2KevHOoH4Mb24ZbCs3fygx55k= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN1PR0301MB0594; 7:BbkBFqoTdm7fkwV+cJPX9WIEEiY+MAwN3Lz0tAC8b35uHP/IxvRuKUFznC0GK2qBH/D14u4288MzdQnGYIjt3M7MvBD8jh/QN8cX6VBr4SvbowD/i6TzHt4EfqU5IQWOeZWx5/k0spwpAwKzGDQCK4qsKxaI5Dh8ocCZrsGM3u8SOvM67FRhQz8DCbpVgURpG1TORyP1YxVcGIq9xomQSO05+A76dlYoD2/CZ18KT5lDgfWLKix6sgxHSVeOo3yXMJ59CqWU24pg9KM2ZznZHya00lATjrDn0L+kVOtxeMC/5+lUdGeoDuy+FqUEOvz6zqT2xLHLjgqjNwf8+B0flvW5MABmgod4Cv6v05W20y7vEaz56OzerwzYguHpbohpBC0KItxj3EgpdOeC8tD4+2/njbebsmV6r6LSi4aJ3QR8s3tnp2K+gJDtr9WrB5c0jCtx8L/BFjyuqojigdpAm3viSEqzVWg4LdVsLklF7YixBxt1RdfGCUM5KHlf2YNzpSZW+wvYQv45qcZ7ZfwCb04aY2U/IsNbp4PAZjedixgD3m3mT8Gh9n+4RhUhqenQF8H/Phe7c19zeTKNRgkKf9UE2Z86y7IrI3XH0JtEd1nLt2w7NbdRXYsBkHqBSHkaO/eucoNmWx53mi1aTlzXfusHUAO+uE8qFOnFiqx4zUe5dSKF8H/S6YX5x/MnUuvpLbdt06i1Nb4qmPDDo3nSbQ4ECA4iVLwMesRhft0OULOhb9Z176tQGS86qYdxFZC1eF8pMeP2qW94rfSIAE+Mful8em4px3XhR6BjMPVNyiQ= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2017 12:33:02.1565 (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: BN1PR0301MB0594 Subject: [dpdk-dev] [PATCH v3 2/5] crypto/dpaa2_sec: add per dev mempool to store fle X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jul 2017 12:33:05 -0000 rte_malloc uses common memory area for all cores. Now rte_malloc are replaced by per device mempool to allocate space for FLE. This removes contention and improves performance. Signed-off-by: Akhil Goyal --- drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 79 ++++++++++++++++++++++------- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 2 + 2 files changed, 63 insertions(+), 18 deletions(-) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 3620751..dbdaf46 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -71,6 +71,13 @@ #define NO_PREFETCH 0 #define TDES_CBC_IV_LEN 8 #define AES_CBC_IV_LEN 16 +#define AES_CTR_IV_LEN 16 +#define AES_GCM_IV_LEN 12 +/* FLE_POOL_NUM_BUFS is set as per the ipsec-secgw application */ +#define FLE_POOL_NUM_BUFS 32000 +#define FLE_POOL_BUF_SIZE 256 +#define FLE_POOL_CACHE_SIZE 512 + enum rta_sec_era rta_sec_era = RTA_SEC_ERA_8; static inline int @@ -84,9 +91,8 @@ build_authenc_fd(dpaa2_sec_session *sess, struct sec_flow_context *flc; uint32_t auth_only_len = sym_op->auth.data.length - sym_op->cipher.data.length; - int icv_len = sess->digest_length; + int icv_len = sess->digest_length, retval; uint8_t *old_icv; - uint32_t mem_len = (7 * sizeof(struct qbman_fle)) + icv_len; uint8_t *iv_ptr = rte_crypto_op_ctod_offset(op, uint8_t *, sess->iv.offset); @@ -98,12 +104,14 @@ build_authenc_fd(dpaa2_sec_session *sess, * to get the MBUF Addr from the previous FLE. * We can have a better approach to use the inline Mbuf */ - fle = rte_zmalloc(NULL, mem_len, RTE_CACHE_LINE_SIZE); - if (!fle) { + retval = rte_mempool_get(priv->fle_pool, (void **)(&fle)); + if (retval) { RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n"); return -1; } + memset(fle, 0, FLE_POOL_BUF_SIZE); DPAA2_SET_FLE_ADDR(fle, DPAA2_OP_VADDR_TO_IOVA(op)); + DPAA2_FLE_SAVE_CTXT(fle, priv); fle = fle + 1; sge = fle + 2; if (likely(bpid < MAX_BPID)) { @@ -214,21 +222,19 @@ build_auth_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, { struct rte_crypto_sym_op *sym_op = op->sym; struct qbman_fle *fle, *sge; - uint32_t mem_len = (sess->dir == DIR_ENC) ? - (3 * sizeof(struct qbman_fle)) : - (5 * sizeof(struct qbman_fle) + - sess->digest_length); struct sec_flow_context *flc; struct ctxt_priv *priv = sess->ctxt; uint8_t *old_digest; + int retval; PMD_INIT_FUNC_TRACE(); - fle = rte_zmalloc(NULL, mem_len, RTE_CACHE_LINE_SIZE); - if (!fle) { - RTE_LOG(ERR, PMD, "Memory alloc failed for FLE\n"); + retval = rte_mempool_get(priv->fle_pool, (void **)(&fle)); + if (retval) { + RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n"); return -1; } + memset(fle, 0, FLE_POOL_BUF_SIZE); /* TODO we are using the first FLE entry to store Mbuf. * Currently we donot know which FLE has the mbuf stored. * So while retreiving we can go back 1 FLE from the FD -ADDR @@ -236,6 +242,7 @@ build_auth_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, * We can have a better approach to use the inline Mbuf */ DPAA2_SET_FLE_ADDR(fle, DPAA2_OP_VADDR_TO_IOVA(op)); + DPAA2_FLE_SAVE_CTXT(fle, priv); fle = fle + 1; if (likely(bpid < MAX_BPID)) { @@ -306,7 +313,7 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, { struct rte_crypto_sym_op *sym_op = op->sym; struct qbman_fle *fle, *sge; - uint32_t mem_len = (5 * sizeof(struct qbman_fle)); + int retval; struct sec_flow_context *flc; struct ctxt_priv *priv = sess->ctxt; uint8_t *iv_ptr = rte_crypto_op_ctod_offset(op, uint8_t *, @@ -314,12 +321,12 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, PMD_INIT_FUNC_TRACE(); - /* todo - we can use some mempool to avoid malloc here */ - fle = rte_zmalloc(NULL, mem_len, RTE_CACHE_LINE_SIZE); - if (!fle) { + retval = rte_mempool_get(priv->fle_pool, (void **)(&fle)); + if (retval) { RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n"); return -1; } + memset(fle, 0, FLE_POOL_BUF_SIZE); /* TODO we are using the first FLE entry to store Mbuf. * Currently we donot know which FLE has the mbuf stored. * So while retreiving we can go back 1 FLE from the FD -ADDR @@ -327,6 +334,7 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, * We can have a better approach to use the inline Mbuf */ DPAA2_SET_FLE_ADDR(fle, DPAA2_OP_VADDR_TO_IOVA(op)); + DPAA2_FLE_SAVE_CTXT(fle, priv); fle = fle + 1; sge = fle + 2; @@ -499,6 +507,7 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) { struct qbman_fle *fle; struct rte_crypto_op *op; + struct ctxt_priv *priv; fle = (struct qbman_fle *)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd)); @@ -534,7 +543,8 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) DPAA2_GET_FD_LEN(fd)); /* free the fle memory */ - rte_free(fle - 1); + priv = (struct ctxt_priv *)DPAA2_GET_FLE_CTXT(fle - 1); + rte_mempool_put(priv->fle_pool, (void *)(fle - 1)); return op; } @@ -764,6 +774,7 @@ dpaa2_sec_cipher_init(struct rte_cryptodev *dev, dpaa2_sec_session *session) { struct dpaa2_sec_cipher_ctxt *ctxt = &session->ext_params.cipher_ctxt; + struct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private; struct alginfo cipherdata; int bufsize, i; struct ctxt_priv *priv; @@ -780,6 +791,8 @@ dpaa2_sec_cipher_init(struct rte_cryptodev *dev, return -1; } + priv->fle_pool = dev_priv->fle_pool; + flc = &priv->flc_desc[0].flc; session->cipher_key.data = rte_zmalloc(NULL, xform->cipher.key.length, @@ -875,8 +888,9 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev, dpaa2_sec_session *session) { struct dpaa2_sec_auth_ctxt *ctxt = &session->ext_params.auth_ctxt; + struct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private; struct alginfo authdata; - unsigned int bufsize; + unsigned int bufsize, i; struct ctxt_priv *priv; struct sec_flow_context *flc; @@ -892,6 +906,7 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev, return -1; } + priv->fle_pool = dev_priv->fle_pool; flc = &priv->flc_desc[DESC_INITFINAL].flc; session->auth_key.data = rte_zmalloc(NULL, xform->auth.key.length, @@ -980,6 +995,9 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev, (uint64_t)&(((struct dpaa2_sec_qp *) dev->data->queue_pairs[0])->rx_vq)); session->ctxt = priv; + for (i = 0; i < bufsize; i++) + PMD_DRV_LOG(DEBUG, "DESC[%d]:0x%x\n", + i, priv->flc_desc[0].desc[i]); return 0; @@ -995,8 +1013,9 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev, dpaa2_sec_session *session) { struct dpaa2_sec_aead_ctxt *ctxt = &session->ext_params.aead_ctxt; + struct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private; struct alginfo authdata, cipherdata; - unsigned int bufsize; + unsigned int bufsize, i; struct ctxt_priv *priv; struct sec_flow_context *flc; struct rte_crypto_cipher_xform *cipher_xform; @@ -1032,6 +1051,7 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev, return -1; } + priv->fle_pool = dev_priv->fle_pool; flc = &priv->flc_desc[0].flc; session->cipher_key.data = rte_zmalloc(NULL, cipher_xform->key.length, @@ -1199,6 +1219,10 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev, (uint64_t)&(((struct dpaa2_sec_qp *) dev->data->queue_pairs[0])->rx_vq)); session->ctxt = priv; + for (i = 0; i < bufsize; i++) + PMD_DRV_LOG(DEBUG, "DESC[%d]:0x%x\n", + i, priv->flc_desc[DESC_INITFINAL].desc[i]); + return 0; @@ -1496,6 +1520,10 @@ static struct rte_cryptodev_ops crypto_ops = { static int dpaa2_sec_uninit(const struct rte_cryptodev *dev) { + struct dpaa2_sec_dev_private *internals = dev->data->dev_private; + + rte_mempool_free(internals->fle_pool); + PMD_INIT_LOG(INFO, "Closing DPAA2_SEC device %s on numa socket %u\n", dev->data->name, rte_socket_id()); @@ -1512,6 +1540,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) uint16_t token; struct dpseci_attr attr; int retcode, hw_id; + char str[20]; PMD_INIT_FUNC_TRACE(); dpaa2_dev = container_of(dev, struct rte_dpaa2_device, device); @@ -1572,6 +1601,20 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) internals->hw = dpseci; internals->token = token; + sprintf(str, "fle_pool_%d", cryptodev->data->dev_id); + internals->fle_pool = rte_mempool_create((const char *)str, + FLE_POOL_NUM_BUFS, + FLE_POOL_BUF_SIZE, + FLE_POOL_CACHE_SIZE, 0, + NULL, NULL, NULL, NULL, + SOCKET_ID_ANY, 0); + if (!internals->fle_pool) { + RTE_LOG(ERR, PMD, "%s create failed", str); + goto init_error; + } else + RTE_LOG(INFO, PMD, "%s created: %p\n", str, + internals->fle_pool); + PMD_INIT_LOG(DEBUG, "driver %s: created\n", cryptodev->data->name); return 0; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index eda2eec..b4dfe24 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -40,6 +40,7 @@ struct dpaa2_sec_dev_private { void *mc_portal; /**< MC Portal for configuring this device */ void *hw; /**< Hardware handle for this device.Used by NADK framework */ + struct rte_mempool *fle_pool; /* per device memory pool for FLE */ int32_t hw_id; /**< An unique ID of this device instance */ int32_t vfio_fd; /**< File descriptor received via VFIO */ uint16_t token; /**< Token required by DPxxx objects */ @@ -128,6 +129,7 @@ struct sec_flc_desc { }; struct ctxt_priv { + struct rte_mempool *fle_pool; /* per device memory pool for FLE */ struct sec_flc_desc flc_desc[0]; }; -- 2.9.3