From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0060.outbound.protection.outlook.com [104.47.32.60]) by dpdk.org (Postfix) with ESMTP id 6B6177CCD for ; Fri, 30 Jun 2017 10:55:30 +0200 (CEST) Received: from BN3PR03CA0072.namprd03.prod.outlook.com (10.167.1.160) by CY1PR0301MB0601.namprd03.prod.outlook.com (10.160.142.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Fri, 30 Jun 2017 08:55:27 +0000 Received: from BL2FFO11FD020.protection.gbl (2a01:111:f400:7c09::127) by BN3PR03CA0072.outlook.office365.com (2a01:111:e400:7a4d::32) 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; Fri, 30 Jun 2017 08:55:27 +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 BL2FFO11FD020.mail.protection.outlook.com (10.173.161.38) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9 via Frontend Transport; Fri, 30 Jun 2017 08:55:26 +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 v5U8sfK7032271; Fri, 30 Jun 2017 01:55:23 -0700 From: Nipun Gupta To: CC: , , , , , , Nipun Gupta Date: Fri, 30 Jun 2017 14:24:27 +0530 Message-ID: <1498812875-6945-14-git-send-email-nipun.gupta@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1498812875-6945-1-git-send-email-nipun.gupta@nxp.com> References: <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com> <1498812875-6945-1-git-send-email-nipun.gupta@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131432865270942582; (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)(39410400002)(39850400002)(39380400002)(39860400002)(39840400002)(39450400003)(39400400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(86362001)(6916009)(47776003)(50466002)(8676002)(33646002)(77096006)(48376002)(2351001)(110136004)(498600001)(38730400002)(8936002)(5660300001)(2906002)(105606002)(81166006)(305945005)(5003940100001)(36756003)(5890100001)(54906002)(53936002)(50226002)(104016004)(85426001)(189998001)(106466001)(8656002)(2950100002)(76176999)(50986999)(4326008)(356003); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0601; 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; BL2FFO11FD020; 1:n1/ArRxt2WZRqgHjKRMNo6nrqEEaWnKTwCMj9ehfX/?= =?us-ascii?Q?kFpfB6GEcXvj4mCiS8zHicwU6ME1p6tdZmD5ALUn/t5v//BXfE772x5iLdpo?= =?us-ascii?Q?Mx32Gl1l/b6iBEtyA+MA8j6Vs8tumMksVxqsZSTS63r8/xrFx5CRKJqH/mVZ?= =?us-ascii?Q?rZZg+MDqM8lFeYBJRNEWsyRGMisxdVbwHbiTeIHSr2nVzAoiFTuh1fcSQDZU?= =?us-ascii?Q?eOF8Vc/Eny+/mWb/2TVIehZIS/jJGe94r526lDT+NpuMHh0muLxCBvjYNipU?= =?us-ascii?Q?S81Clzll9ridudDS0Q49x4PgE8IEWnqu7zGiU0r9OpqnWICom2zBsgNlqsG9?= =?us-ascii?Q?8lnr136TGKASbvZsFi5MUVcIPG1iZ6EfEkzEnkkVQJ1If8XrEtzB4YtLgJJz?= =?us-ascii?Q?Z0l440qGPuc9XqLv1CzT1GjNMcSBAwTuStXhe7nOzCCR9wHe0y+8vkx0g2/g?= =?us-ascii?Q?MYjccfluTyFxzacXsA5MQ0dEo+r4Va4EPeH8vSh0Zyb4aJibq7LKAh2azLGD?= =?us-ascii?Q?zLEZkr35exqPVV8sv0xQKvCF3nEmMessxyTcJiM5mTKk9ArTPlKgMrO8INhl?= =?us-ascii?Q?spcYUhcU4fYk2IrKZp2sGcaiawaecGhCuub6aYlMaBUDJb0/KnX0zArkv9F5?= =?us-ascii?Q?HCNxDCjZEprDXltSGH7aSUPfGxjZKK/bY1oczuWdq96t2mTgEFAj/Nxp5NKM?= =?us-ascii?Q?8cCAJ3W0g+vdUQdKvN29j/4UJ+NUjRxawI5pFsuhO9T/UqnjC9PaJCYm7Jdb?= =?us-ascii?Q?rfp43/wxV8YLcY6UaRPvpn7I16hX5mdoDrngwU1m2vmpVmTGk9JXHAXBU+Dm?= =?us-ascii?Q?ZlmPwRjW82lLyU+QXZM/r85SbEg6PupBCp6HsL+AqpkR4Ty3DTPGH4K2xg1O?= =?us-ascii?Q?4tew5EQM3uKLyeo0CZUck+6Lm7jOPoHJBPds3/dP2pVkPTmLf6e/rHFwjV0P?= =?us-ascii?Q?PS35iJLuPYTK2mbZ9XA9T78xw1bMo5Ts2QZ//hmSIwAkHoBWI5SsLSdNmUEs?= =?us-ascii?Q?MAQBIBr/GN1BOuvSZNAQzCRhjCis4Q/L8deS78TUhLZgzCvEEfPozr8OaMiW?= =?us-ascii?Q?lBWB6mu2CXsmfr4/GzQumTAC0o21N9T1ITKzoXi1vqs39nZQ=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f549c614-d853-486b-ea17-08d4bf95c0bd 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:CY1PR0301MB0601; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0601; 3:GrYqOEzqs+xfssem7vEm9MRG25jAhPqWvqeM/a1G+bet9AyIJxI8DcDcYT8V6pQjVC67hhlMvxKe2LTykSAvpnUQ517vLlOY9By+SFGDGgzZq8K2YqA1JiwHe14OJsKlfAEO6DXIf6x0DQIsAD6C4jSWPIE+VFo/AJvgLVirGlO8rwEcShGMmO9f7kl9e4jFUSBTD7cUhBq/q2E53D6kC6wmXdtxxgltv3JmL1CJ1BHm3rg+5EbiihVODsgC4FHrV5OvRwpmtfLOhYbWxW3oUdFjhMAJVMTY/+Ob1VP41e8Z5z/OiQJSz7RYa782C0eYFP7UK34ePbLG19qVyEc1OdmTrIVHb7NjsTwxScl8funl+deXRVGCIwqQfLrVJjdVwXIzc1q/ZlqIEmS1wT5Y7OcGxzwhuAXG/DRNCX7vNlJQPic5x5Ic45CHlOhbsnGpPBVlGvoXRh0M4Q1/WSj4wASkPBp5AP3pEk20mpRzez/1yRrJDi8Si6dVlIHbshXL3olqy6SXEqOfAoxBVusZCAH6ZIquo3HXeNESHXB85yNUU+SA/utipbE43sEVrdO+W2yc3og0fSAn/unpFwv0YzusXrIyQg+9pw3VCywq7cH5cZh/hm8PeEAHrxu2nmE3PBrmQ5q7ae6FzUhTxF1DlaSueRPkW22OtgKLPeon/Fxej5FyO3AFK/XPYGL4Wpwel9xuhuaIWqlRAnGg9WlLab+HuFkEwI/5SJLxmLsVhHWAS04ugO86vzbB5JaTNsZi+r0Y10uKpVEWeYeLowMIZhLsF0f8t51EbiB4y5XgHHEzm/F+Il0XVzazh7y3Y/sJICrn2Fm5+Q7c9KWYt9gWfQ2ol34r52Z4DaN7vMZooPI90TABeKjcE4/3T7myH2eN X-MS-TrafficTypeDiagnostic: CY1PR0301MB0601: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0601; 25:ua+Q2ucJ5dzT8lC9L5160xPD1ZFix5rgiBEIvevsW/mUYoalqERRiNlpdv2/qtze+WHRjktoLMLkjepUfNs1s5raHok/MpgELQ6TbjTvjYTm9vyAe22bW83lASqbJQgcesytr6da5YjLRnjbRe1SkhDyD4hQiFh4w3OGvpXW6t/m7GVOUcfOhbfNksq3hgW0E+Pg1JpvTi0GO5iw8mWJ0qtFhv75MsotuOh2XkZE+05jaab68YbRyyoGU7VdilQydYPZYZpLCCGJBWERaFgF5H0nROq/BEHm9+Soaffc8p1K+mcA4NVaIthbxWac7/UIgrgG0LUGqzbrNOUxFJTWjojni3bGdYh6+IZbO4aIvPZ4VBCEdurYUZUjrMSXrMQCF93BytqMjwkQNBzpJTWbKGupVuSR5DwgtI0oGTY+cBVZVZTm9+/jnHXjmzCznEyZznYoZQK5CFrpjJaZqScYWlyoVk6Us7/Si3+9O0lyLBn7NMpqParokO9DLpg/eUJNhX3eCbCMi8mjJW1K/n6pwLjlpW/w4QgdAU14fK4Xw5ySSQd7SNI73HLVtAWkv7QD8FHaqEI/wvjg31DIETOPaD/DL1YC3Am8ECiiF4WSJsU4vPWgwxD8q/k5BfMA04Y/uSAlo56Kj5aS+BSBRGpO43Kogxxo2v5epHQu6G4zXzLedaZiAN5XGgmkL+tMC5nVM/a+Lxgm+VCjsRk5DvFxS+ND0l8u94SdzfCNOxgaMJsR3bPrmdcgDb4k0TExlpsABRcL/Ko2u6jbQWISXgf7SjG/U+cYTdTzT8NkaqK0vFSVoeFFRAeNTGnlm/bdr6Nm/vs5wF7+eAADNt8cdWabjS4aFCkWItubwJ/VMPOGXoxZihyGrlFH/NEr2vx6J6VnrpAWTPbMrFcuV72twzAeWcR3DmDuuobEuoE7a/bLSJQ= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0601; 31:gCYPGBWBQDS4eM5KeuO7+srfw1c2vEXg7kVW0K+URYdC4UPfepe6JEoNzCkegQXmlvmV1G5yq6dqhK0lif7wN7iw5zcqLLR0pCFmV7hopFWEqaCHtVbP6YgONflSs+MykvraSPgmJSfYDFbn9PK21VFloknYTowBP9EQeJ0WhIBPxOuEKGqeMsHxU4sx+YSdvhT0AT/vV64ody6xMixBAEhdf4Eyj2/az5g2E//tB2d7jdKXaNOWnVLZb+kvZOv6pQ8Ps0ys+98xMtDM61XPYIIy34lTvqMZYuhGHkmDHnPdMXcriwWkm9F0v53puduio/+ICyLG2EGHJkWQ1Gq3kguz68xABgBhofuW4f5EwIV/RlJjP0xXAD2tlGgIjF9BU+UeGCXyPKQGl4k8a+P1G2t7j45v+/8ZcQWDem2MiqoV1VpQzpHf1dq79PxAqf2j1LctKxpp9c7FO0OCB+CvcEoc4jwg1JoFBej7LlfVETsgEF2Sg8/XEuax167aReXIQOdUzkf6BtSbiT3agcVqah1HIYxxyN6ArsBCoiB2i3CzpGIgmApdW9tekQ0iWGTQHA5AwbGJp8DWPWe1n9Rb4hvznAi0sTPjPpTxayZOgFFuLRAKzTlVeXqUI8RLmJFlvhyGpi7ulAcot1IGf/VODS44YIIuS+rbrNkepLCug5mspeWXv6tzve9ObQAR9N7HiWkVA0XmxAWJym9kzCYwyQ== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(5005006)(13016025)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6096035)(20161123559100)(20161123556025)(20161123561025)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123565025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0301MB0601; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0301MB0601; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0601; 4:ZhSba3TH8samyiE/ewOUfbj8esbV/OwbLBtpYvRj?= =?us-ascii?Q?DQjX1+QQdHmOGKxaFGgWg0XcxaicZGu087beOHzYSatnF0lltdpOgZmpMdCM?= =?us-ascii?Q?0ke+prm1dLFCB5zCsuQwqNfCMnClw4v5zs9iVpneTdH8GcIb08rlZfWB4P6i?= =?us-ascii?Q?3UAMQ5dEq+S8NycKlORXnDwlDtmy9Qga8UqA2l6Of43/S8KAA/D5n3alMjN7?= =?us-ascii?Q?d5AFOLD93vThtGBsxnXd/94ly9Ql1n2vxdWbpBeKrFL81D79ARlL8FHZ7qkV?= =?us-ascii?Q?6aGUXCtORCacPqWKMW0calx9b/rzhrcgxuUlXeNfrfui9RHuBemOWqMW36RX?= =?us-ascii?Q?ruJF6QJvDv7t3XmWmNU7R+CDbNF3fRsdzMpuV5QMB7gjEikhssKJv9EY+to3?= =?us-ascii?Q?mzX884fH6DZRMBy80IRHJw06jUb9j0LlVCuomydcZNTyRgSyDvA91Epv+TXG?= =?us-ascii?Q?9EvSiHWkThQjoCt3qroyuaDDgZiUqzSADJaaK5zNF6NXUZY8OMF0Of2RPDEH?= =?us-ascii?Q?nhzn2ivb8yzzz3T0FSzUfKyaRDe/IYf2pcc2ChQS+lIKbayZzjOp4rS3/Yvm?= =?us-ascii?Q?RycQK+WQDZE3gDruhK00kbbv1kYJdbhNA96AP18OdaVMxZ+T9Y8f2lSWxcQG?= =?us-ascii?Q?Itiu18+97W6QX/zG7xtvYy6HWiVxBmYyTfhzdQOjreuPXZRvXXBIoD9R4Bae?= =?us-ascii?Q?vPJi+8XjjpjxH2otEhl7RIUxrk7VQq7+Duky/sOu94EkBFDk9uW+wV8HqvPI?= =?us-ascii?Q?LDG+7eaiOXWIPH4Ft62iralGo2LM6wuGG1Y4gbO6cg6Qo9nANQyXGVOgp0El?= =?us-ascii?Q?rMZGgf5MxAyBUJZjw74f9KTLVdJakEZmQto0RGJ0RB5xFbCuhfX3oX8Pjci2?= =?us-ascii?Q?ouOQm7xPxWX29stnXTUc+88e6gs2rvZ0w8suUTT0YyMU81gT6gNA+K4qtgpX?= =?us-ascii?Q?oMKMNky3+qbsg3QGlYnQoWU6YYs7YhkoFeQpZVdxnRmJy4zpOoJC6u/ftWW0?= =?us-ascii?Q?O3wdCJTr45jJu/v3uRN1TwwzSQviFKJx5Ygy8uVhgSiWjszQpdYiQw0sBNV4?= =?us-ascii?Q?LL5ZnxAbzr+/UFmOC3KLy+aXrYQq09ZmqONqAxaQZZ6IXi2a0D1Pg5mdcNnx?= =?us-ascii?Q?rCm8qoJOdWcXP5eqD6eXz8CncZRcb0PU++XTGA6zUxqsGkWbfCqt50OmT/sS?= =?us-ascii?Q?/vSWFb2vOHQq9w2aqjanCZY5aWLulRBAZz+tIUCcRftZXMk/pEX7GeRIngJT?= =?us-ascii?Q?ed1zUUInJeS2ywuygR1GSKXmroxqTGDH+GYRith8z1YafuOxklc4ns4indsD?= =?us-ascii?Q?O22MiMCkNl/QDyZgTTUn9h4Etxfg0v91mr3JUAVu/RKA?= X-Forefront-PRVS: 0354B4BED2 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0601; 23:fm//202ObGC1kE10d2SCjh9Wd+hkvGCJ1gWQI5X?= =?us-ascii?Q?xjkJmgukCpZOmeiAZfQYoipP4s4R7kVhVnSnmpGFTCm0hdpFOsJWCpevvyJb?= =?us-ascii?Q?m4/ITfD2V6vPe68r3eKtkpvvwVGlz30U7DHwnvuuhJ63bph60l5d9C40mbo4?= =?us-ascii?Q?i/nvj3jrRVV2nyzv1Moqr1pgsBY++tbb495RxZyK8RFYQoeklcnqFI+o+Erj?= =?us-ascii?Q?CaBU2mOHoqbnsxj3ebuL6VBMPC7AqngVSHJfKaHvIZxRKWYxkxy5kNMFHFpt?= =?us-ascii?Q?1nGU5mQD5nUDyXfbNyqQ2sYeeQxxCLCcFhQa2aOxCS46wgMC/yr6/bN3uYEv?= =?us-ascii?Q?gviLAR/UTRYM6ZRbbpgvBVRa39J/FfQRhQ9DCecPPni1m8c80Q/EhCUCpOJ+?= =?us-ascii?Q?wTi1XUH8y+dwMom16sivZMbDzxs5YLUKW0t6HPf/E2F/Q7lg/P+kymmxezFF?= =?us-ascii?Q?5IzqQywsIhlFwtTsHrzkP5wYmbJgN5Qtqi0ejTCnPy/i7F9DDpuJmpq5518g?= =?us-ascii?Q?zkgvJszsQ+QAWK2+NlleWyODbGTQe56WwcNz9useM8k2ct1sBA23EBirrJxk?= =?us-ascii?Q?sc4ZvRVezAHipd3BdR90O19ChpxOUOvhD2MoRnbp0WBVYuevTh7wGsG+hSBL?= =?us-ascii?Q?07R2JKq7Wno4eSvAlv4E49ZmQ4qL0/9c2rfyvdpcFrWeVi8jyP/1r3ehqZcl?= =?us-ascii?Q?lEFPC6gA5wwlJibZbO9IJarP4MvYMgbLINg3a983t2smnLWp+H1mfbPlDZ0Q?= =?us-ascii?Q?GKxmMnz1i9q7Hwk1Bd6F2flQyvUKpPSzby4KTJGFE5exNISTn55VsKf01Gxn?= =?us-ascii?Q?niqbTLBWeWQmFdNpn93O0ACkdw21nZFA2p53/K0vvUQQ2iK74xuory6Lzn2z?= =?us-ascii?Q?bjQLyaZIqbnmFZZ7xPhLHoGLHcKiD7bc0lFwaB+CC/656OGvR+2mvgrQQ6SO?= =?us-ascii?Q?6l4e0RxBx57UP3qgItDTeTHGMHECPpLo8EEjM1rBeiTRIQgX5DsSUlwKSFIR?= =?us-ascii?Q?yO/MbV03W9Wq1FQxCY5+iKlHOCtz27BjVw565W+Wit6GjQdwm5s8MQ2hDDPo?= =?us-ascii?Q?2++8S35aRG5hzmhSlzgrtOaYpJcFDmysyUbxMutja0qHawWWXzNcMgnWtSHl?= =?us-ascii?Q?NyYi0CFsvb3fFmUeEx0KPV2iOt/AHgTRm9g1J1FMuhaPq4Xy7lsy81w7LsLD?= =?us-ascii?Q?jUyI/MTnL2xh/1pWn0TkpzUB1K7zsENMfz6bCfYzjeGR2tz9ir6DjPsuMD3A?= =?us-ascii?Q?sZ87hVYZD7JXvZht36Fc=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0601; 6:W62ZMwoyVKJiane0QwSgdripTpn4T4YDmqDs/r5q?= =?us-ascii?Q?p2mDOT5uWX3pjVLwqpPryOqJciu+hKmM+2vEcbPgJJSfqagGojN9C79c3WSM?= =?us-ascii?Q?dSZZLZC77DD9HiHBPCQYUdfZyGZz0dFa9Sl5p8/QPYB2AIt16pk8aI8gd9GS?= =?us-ascii?Q?zexQyIoeoKjbInPjTBnZkm6q6YWeLDiZWEJwI+GuATXWpHE+YlYdqcWBZifT?= =?us-ascii?Q?wv9oWLXvyjnNQvsK6JeKwlFhYDTvFUVdTDqXkWMcqKjJLQCYp8UFntjQ1DPd?= =?us-ascii?Q?/e1/EdmD5qYLojGtYo19ZEiVa/K9FwkFJXS9jktSiSJomKxKBJlTB4cIZYlc?= =?us-ascii?Q?/FZ1OytXehycTQzzAp/OZbdp/fG2Uk018TgaFnFrMBqjDEDXgT5HEWDgrnIr?= =?us-ascii?Q?FckxtERM8vAwLFCckOT5WTNp4Rnf1bb+tMLgH0SUViE2jD4OboUpzd9nlveM?= =?us-ascii?Q?2suBHf2wcHjp7NKsAGV4CB20Gr+eTvmXrieg6ECPjWhStccILO+Th8K6pVI5?= =?us-ascii?Q?ltS1WFo8EftD55WbrS489JJfbraFbMRy6TDP9Nu4TWMnI8nwilli9lsv1wnY?= =?us-ascii?Q?iTv4w1+fHDyDfOSWDV095rvyxfuHFq4qJEQAaCEaYZgjZqBhxT+6eM9DDUKX?= =?us-ascii?Q?OrXXg6p0hiRnsv2bZCexPa/tC7903eYfFk4xsQoAsHnIScf0THmMjMh6cJfP?= =?us-ascii?Q?p/60eCjBAjQFwQRk444iXwFODptWYN+ZeM9zw455O9cS8LQPWVEZ+0uYyYgp?= =?us-ascii?Q?+p/wLYSJWZQT1q/4wGs8WoB23seLKu0ceZb84kKSqozvs9SJwa+oxLbwFS4n?= =?us-ascii?Q?ZRCNEhBejoUA7flFfr4IUtXqST8K7cPcp8K7BG7i1xW28h20shmFDLpcl/6J?= =?us-ascii?Q?CURiXzQU+Npqad0n1IWJkWuuA+MIWmI6FlE9F3+9d/p5bWpD+6ThRsJHRDhZ?= =?us-ascii?Q?+NaDUAim0oN/usa2Q2YLbAKJbnE5SUdP3GLDNpAdlg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0601; 5:mablzh/cmzdB8PPzTz/CKPczefnRv5z3MH164OzrlnifK4ccOVp2Y70to/0yMf/IfMdLKqEL/v3iy6VYmqEuWGdOaSopN12S2dqDkIF8TczbGoca1JPfpYlCUcFWf10XQEB3OOU+As6ZrY7nKSLaNRGqEE2zwqURNwWdQJKKUpMYJ7760Eu9T77tXusYgjfLd+fT/TY+54ykFbzkT9dbr13BpiRz2AWgkpa7Kk24xN4WqSgmybtUcMCE3UEsa4AXy/aotTp7sGu+hYceZx0JI57/Y1gfSgAEct1FYrlHKt8CLBju9Yxk/s5YmZpDrreCCHnMntIuIHeKdlFPty8fyAFAClicxiM22bsVJeoiPJrJFSj80d9uJ+AJW63q4vmyCTM1q98vE5nJPaAspMIQYG9i/fD6TbSNLk9vwlRnpoFMG1BGFzr1gvc78QY0ezq04yeilREV/OD/5I8dHw6VufvpZbzJmQ13ySM93iEBf08q5VDSl8xu9+qyPeuCtr6xNfz3OU/uievGL7ZgidTtuQ==; 24:mmr48GXqAqWfLh4wuRdv/nRk/5uExgxD1WV+o4ZLWnYx3QV2k9cRVPZ0F1jCAaeYhCzXTgUZTA+q/VkIa2QtAxsGYnGIPx+1Zmq8LrLgzYw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0601; 7:QDp8BxN53EImrq4Yvyh3ZmeIkCaMQmIe5HN32il1oI5GUqB83WoihsVM4NPt1wd5o400lJjql1mHjZdQU/i3kzY5MBO6eqGe5ESPbDq3No6mVXIFHWfGdoRqD6g+xGm99oIAj8izPZlXpVAcE7JPSMU+2BGh0T1CfS9+anAHq78ouCMInZLEYJ8BHNBIZ+laqvHmf5s22/ZWFGfJvR4Ow4Aa1Sdy7YHguFS7yeta4dkPmIQPBDYlZy6gmSXtLQ+4yTg2XAu3Y+FOCSDuZaDl3wYBWVF3pvcrLiDU7rKf/EixWJAzNv5lSOgypTAe4TYa6CCWBUnoQycll+wLymVYyOKTXVQLlqSrkipa1nnS43CMF8P6eOVfELo/kO2jJAMFgCw6bspBH82l1iXgZOXkBapXjNMH+OaRwqXKUNeGyYVxyBYzs8JS9KogbjINJ0EKi9QAKMPWWGV7pMQLi5l3BkPpAfGH+btxKxcRDZ06syGDApjtzLpdBNZkF8pn64xIafljR7viFdQfZRLjsRIF4yoqRyNmevRGlSEYaVj0YmzO+f+X2NF5i6XQXsY3e9KGhk98iTTAg0WHATBMNt2uFqzxzU9cpb0v21LeoyvTXCAlNyjhzBkxCRlbNjGiLdBqCxbVbV/s/hMpdTS0/J+cBJKNRh4ByeR0p/jrqg+xGR8lrp9Kx2xyZnbiNOIQ0LxajtalK70KXdGRXhZeCbAW55omhAJ5FrqTX1vuIgZTf/gu3lW/XVJoDiFKdJm8r41Jm5fzmgyF8hM9dJjdyeStbrVx/b9bD2TbrID/XXNi1ow= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2017 08:55:26.9226 (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: CY1PR0301MB0601 Subject: [dpdk-dev] [PATCH 13/21 v5] event/dpaa2: add configuration functions 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: Fri, 30 Jun 2017 08:55:31 -0000 This patch adds all the configuration API's for DPAA2 eventdev including device config, start, stop & port and queue related API's Signed-off-by: Nipun Gupta --- drivers/event/dpaa2/dpaa2_eventdev.c | 283 ++++++++++++++++++++++++++++++++++- drivers/event/dpaa2/dpaa2_eventdev.h | 22 +++ 2 files changed, 304 insertions(+), 1 deletion(-) diff --git a/drivers/event/dpaa2/dpaa2_eventdev.c b/drivers/event/dpaa2/dpaa2_eventdev.c index b8cc3f8..c00db7a 100644 --- a/drivers/event/dpaa2/dpaa2_eventdev.c +++ b/drivers/event/dpaa2/dpaa2_eventdev.c @@ -106,7 +106,288 @@ return dpaa2_eventdev_dequeue_burst(port, ev, 1, timeout_ticks); } -static const struct rte_eventdev_ops dpaa2_eventdev_ops; +static void +dpaa2_eventdev_info_get(struct rte_eventdev *dev, + struct rte_event_dev_info *dev_info) +{ + struct dpaa2_eventdev *priv = dev->data->dev_private; + + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + + memset(dev_info, 0, sizeof(struct rte_event_dev_info)); + dev_info->min_dequeue_timeout_ns = + DPAA2_EVENT_MIN_DEQUEUE_TIMEOUT; + dev_info->max_dequeue_timeout_ns = + DPAA2_EVENT_MAX_DEQUEUE_TIMEOUT; + dev_info->dequeue_timeout_ns = + DPAA2_EVENT_MIN_DEQUEUE_TIMEOUT; + dev_info->max_event_queues = priv->max_event_queues; + dev_info->max_event_queue_flows = + DPAA2_EVENT_MAX_QUEUE_FLOWS; + dev_info->max_event_queue_priority_levels = + DPAA2_EVENT_MAX_QUEUE_PRIORITY_LEVELS; + dev_info->max_event_priority_levels = + DPAA2_EVENT_MAX_EVENT_PRIORITY_LEVELS; + dev_info->max_event_ports = RTE_MAX_LCORE; + dev_info->max_event_port_dequeue_depth = + DPAA2_EVENT_MAX_PORT_DEQUEUE_DEPTH; + dev_info->max_event_port_enqueue_depth = + DPAA2_EVENT_MAX_PORT_ENQUEUE_DEPTH; + dev_info->max_num_events = DPAA2_EVENT_MAX_NUM_EVENTS; + dev_info->event_dev_cap = RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED; +} + +static int +dpaa2_eventdev_configure(const struct rte_eventdev *dev) +{ + struct dpaa2_eventdev *priv = dev->data->dev_private; + struct rte_event_dev_config *conf = &dev->data->dev_conf; + + PMD_DRV_FUNC_TRACE(); + + priv->dequeue_timeout_ns = conf->dequeue_timeout_ns; + priv->nb_event_queues = conf->nb_event_queues; + priv->nb_event_ports = conf->nb_event_ports; + priv->nb_event_queue_flows = conf->nb_event_queue_flows; + priv->nb_event_port_dequeue_depth = conf->nb_event_port_dequeue_depth; + priv->nb_event_port_enqueue_depth = conf->nb_event_port_enqueue_depth; + priv->event_dev_cfg = conf->event_dev_cfg; + + PMD_DRV_LOG(DEBUG, "Configured eventdev devid=%d", dev->data->dev_id); + return 0; +} + +static int +dpaa2_eventdev_start(struct rte_eventdev *dev) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + + return 0; +} + +static void +dpaa2_eventdev_stop(struct rte_eventdev *dev) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); +} + +static int +dpaa2_eventdev_close(struct rte_eventdev *dev) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + + return 0; +} + +static void +dpaa2_eventdev_queue_def_conf(struct rte_eventdev *dev, uint8_t queue_id, + struct rte_event_queue_conf *queue_conf) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + RTE_SET_USED(queue_id); + RTE_SET_USED(queue_conf); + + queue_conf->nb_atomic_flows = DPAA2_EVENT_QUEUE_ATOMIC_FLOWS; + queue_conf->event_queue_cfg = RTE_EVENT_QUEUE_CFG_ATOMIC_ONLY | + RTE_EVENT_QUEUE_CFG_PARALLEL_ONLY; + queue_conf->priority = RTE_EVENT_DEV_PRIORITY_NORMAL; +} + +static void +dpaa2_eventdev_queue_release(struct rte_eventdev *dev, uint8_t queue_id) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + RTE_SET_USED(queue_id); +} + +static int +dpaa2_eventdev_queue_setup(struct rte_eventdev *dev, uint8_t queue_id, + const struct rte_event_queue_conf *queue_conf) +{ + struct dpaa2_eventdev *priv = dev->data->dev_private; + struct evq_info_t *evq_info = + &priv->evq_info[queue_id]; + + PMD_DRV_FUNC_TRACE(); + + evq_info->event_queue_cfg = queue_conf->event_queue_cfg; + + return 0; +} + +static void +dpaa2_eventdev_port_def_conf(struct rte_eventdev *dev, uint8_t port_id, + struct rte_event_port_conf *port_conf) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + RTE_SET_USED(port_id); + RTE_SET_USED(port_conf); + + port_conf->new_event_threshold = + DPAA2_EVENT_MAX_NUM_EVENTS; + port_conf->dequeue_depth = + DPAA2_EVENT_MAX_PORT_DEQUEUE_DEPTH; + port_conf->enqueue_depth = + DPAA2_EVENT_MAX_PORT_ENQUEUE_DEPTH; +} + +static void +dpaa2_eventdev_port_release(void *port) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(port); +} + +static int +dpaa2_eventdev_port_setup(struct rte_eventdev *dev, uint8_t port_id, + const struct rte_event_port_conf *port_conf) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(port_conf); + + if (!dpaa2_io_portal[port_id].dpio_dev) { + dpaa2_io_portal[port_id].dpio_dev = + dpaa2_get_qbman_swp(port_id); + rte_atomic16_inc(&dpaa2_io_portal[port_id].dpio_dev->ref_count); + if (!dpaa2_io_portal[port_id].dpio_dev) + return -1; + } + + dpaa2_io_portal[port_id].eventdev = dev; + dev->data->ports[port_id] = &dpaa2_io_portal[port_id]; + return 0; +} + +static int +dpaa2_eventdev_port_unlink(struct rte_eventdev *dev, void *port, + uint8_t queues[], uint16_t nb_unlinks) +{ + struct dpaa2_eventdev *priv = dev->data->dev_private; + struct dpaa2_io_portal_t *dpaa2_portal = port; + struct evq_info_t *evq_info; + int i; + + PMD_DRV_FUNC_TRACE(); + + for (i = 0; i < nb_unlinks; i++) { + evq_info = &priv->evq_info[queues[i]]; + qbman_swp_push_set(dpaa2_portal->dpio_dev->sw_portal, + evq_info->dpcon->channel_index, 0); + dpio_remove_static_dequeue_channel(dpaa2_portal->dpio_dev->dpio, + 0, dpaa2_portal->dpio_dev->token, + evq_info->dpcon->dpcon_id); + evq_info->link = 0; + } + + return (int)nb_unlinks; +} + +static int +dpaa2_eventdev_port_link(struct rte_eventdev *dev, void *port, + const uint8_t queues[], const uint8_t priorities[], + uint16_t nb_links) +{ + struct dpaa2_eventdev *priv = dev->data->dev_private; + struct dpaa2_io_portal_t *dpaa2_portal = port; + struct evq_info_t *evq_info; + uint8_t channel_index; + int ret, i, n; + + PMD_DRV_FUNC_TRACE(); + + for (i = 0; i < nb_links; i++) { + evq_info = &priv->evq_info[queues[i]]; + if (evq_info->link) + continue; + + ret = dpio_add_static_dequeue_channel( + dpaa2_portal->dpio_dev->dpio, + CMD_PRI_LOW, dpaa2_portal->dpio_dev->token, + evq_info->dpcon->dpcon_id, &channel_index); + if (ret < 0) { + PMD_DRV_ERR("Static dequeue cfg failed with ret: %d\n", + ret); + goto err; + } + + qbman_swp_push_set(dpaa2_portal->dpio_dev->sw_portal, + channel_index, 1); + evq_info->dpcon->channel_index = channel_index; + evq_info->link = 1; + } + + RTE_SET_USED(priorities); + + return (int)nb_links; +err: + for (n = 0; n < i; n++) { + evq_info = &priv->evq_info[queues[n]]; + qbman_swp_push_set(dpaa2_portal->dpio_dev->sw_portal, + evq_info->dpcon->channel_index, 0); + dpio_remove_static_dequeue_channel(dpaa2_portal->dpio_dev->dpio, + 0, dpaa2_portal->dpio_dev->token, + evq_info->dpcon->dpcon_id); + evq_info->link = 0; + } + return ret; +} + +static int +dpaa2_eventdev_timeout_ticks(struct rte_eventdev *dev, uint64_t ns, + uint64_t *timeout_ticks) +{ + uint32_t scale = 1; + + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + *timeout_ticks = ns * scale; + + return 0; +} + +static void +dpaa2_eventdev_dump(struct rte_eventdev *dev, FILE *f) +{ + PMD_DRV_FUNC_TRACE(); + + RTE_SET_USED(dev); + RTE_SET_USED(f); +} + +static const struct rte_eventdev_ops dpaa2_eventdev_ops = { + .dev_infos_get = dpaa2_eventdev_info_get, + .dev_configure = dpaa2_eventdev_configure, + .dev_start = dpaa2_eventdev_start, + .dev_stop = dpaa2_eventdev_stop, + .dev_close = dpaa2_eventdev_close, + .queue_def_conf = dpaa2_eventdev_queue_def_conf, + .queue_setup = dpaa2_eventdev_queue_setup, + .queue_release = dpaa2_eventdev_queue_release, + .port_def_conf = dpaa2_eventdev_port_def_conf, + .port_setup = dpaa2_eventdev_port_setup, + .port_release = dpaa2_eventdev_port_release, + .port_link = dpaa2_eventdev_port_link, + .port_unlink = dpaa2_eventdev_port_unlink, + .timeout_ticks = dpaa2_eventdev_timeout_ticks, + .dump = dpaa2_eventdev_dump +}; static int dpaa2_eventdev_setup_dpci(struct dpaa2_dpci_dev *dpci_dev, diff --git a/drivers/event/dpaa2/dpaa2_eventdev.h b/drivers/event/dpaa2/dpaa2_eventdev.h index 2a3211c..f79f78a 100644 --- a/drivers/event/dpaa2/dpaa2_eventdev.h +++ b/drivers/event/dpaa2/dpaa2_eventdev.h @@ -56,6 +56,17 @@ #define DPAA2_EVENT_DEFAULT_DPCI_PRIO 0 #define DPAA2_EVENT_MAX_QUEUES 16 +#define DPAA2_EVENT_MIN_DEQUEUE_TIMEOUT 1 +#define DPAA2_EVENT_MAX_DEQUEUE_TIMEOUT (UINT32_MAX - 1) +#define DPAA2_EVENT_MAX_QUEUE_FLOWS 2048 +#define DPAA2_EVENT_MAX_QUEUE_PRIORITY_LEVELS 8 +#define DPAA2_EVENT_MAX_EVENT_PRIORITY_LEVELS 0 +#define DPAA2_EVENT_MAX_PORT_DEQUEUE_DEPTH 8 +#define DPAA2_EVENT_MAX_PORT_ENQUEUE_DEPTH 8 +#define DPAA2_EVENT_MAX_NUM_EVENTS (INT32_MAX - 1) + +#define DPAA2_EVENT_QUEUE_ATOMIC_FLOWS 2048 +#define DPAA2_EVENT_QUEUE_ORDER_SEQUENCES 2048 enum { DPAA2_EVENT_DPCI_PARALLEL_QUEUE, @@ -79,11 +90,22 @@ struct evq_info_t { struct dpaa2_dpcon_dev *dpcon; /* Attached DPCI device */ struct dpaa2_dpci_dev *dpci; + /* Configuration provided by the user */ + uint32_t event_queue_cfg; + uint8_t link; }; struct dpaa2_eventdev { struct evq_info_t evq_info[DPAA2_EVENT_MAX_QUEUES]; + uint32_t dequeue_timeout_ns; uint8_t max_event_queues; + uint8_t nb_event_queues; + uint8_t nb_event_ports; + uint8_t resvd_1; + uint32_t nb_event_queue_flows; + uint32_t nb_event_port_dequeue_depth; + uint32_t nb_event_port_enqueue_depth; + uint32_t event_dev_cfg; }; struct dpaa2_dpcon_dev *rte_dpaa2_alloc_dpcon_dev(void); -- 1.9.1