From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0047.outbound.protection.outlook.com [104.47.40.47]) by dpdk.org (Postfix) with ESMTP id B58E27CB8 for ; Tue, 4 Jul 2017 16:35:47 +0200 (CEST) Received: from BN6PR03CA0063.namprd03.prod.outlook.com (2603:10b6:404:4c::25) by DM2PR0301MB1199.namprd03.prod.outlook.com (2a01:111:e400:501d::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Tue, 4 Jul 2017 14:35:45 +0000 Received: from BL2FFO11FD056.protection.gbl (2a01:111:f400:7c09::162) by BN6PR03CA0063.outlook.office365.com (2603:10b6:404:4c::25) 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; Tue, 4 Jul 2017 14:35:45 +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 BL2FFO11FD056.mail.protection.outlook.com (10.173.161.184) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9 via Frontend Transport; Tue, 4 Jul 2017 14:35:45 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v64EZM6r016426; Tue, 4 Jul 2017 07:35:42 -0700 From: Shreyansh Jain To: CC: , Date: Tue, 4 Jul 2017 20:14:00 +0530 Message-ID: <1499179471-19145-10-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1499179471-19145-1-git-send-email-shreyansh.jain@nxp.com> References: <1497591668-3320-1-git-send-email-shreyansh.jain@nxp.com> <1499179471-19145-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131436525453965785; (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)(39400400002)(39410400002)(39450400003)(39380400002)(39860400002)(39840400002)(39850400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(38730400002)(6916009)(2950100002)(5660300001)(105606002)(85426001)(2351001)(106466001)(104016004)(47776003)(77096006)(356003)(5003940100001)(48376002)(50226002)(8936002)(498600001)(8656002)(8676002)(76176999)(36756003)(305945005)(50986999)(33646002)(110136004)(4326008)(68736007)(69596002)(54906002)(189998001)(6666003)(86362001)(626005)(81166006)(2906002)(53936002)(50466002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0301MB1199; H:az84smr01.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2FFO11FD056; 1:zmUobwZI0IHkNe7gF2S+K4MkmXkJnkbfU531nKuHK+?= =?us-ascii?Q?uYzy1QZd92j6mDQUqaNx2pQwhqBUCG2U8Gxl8u+7DB0yKtO1G2ua31v5wKAr?= =?us-ascii?Q?Bqqr/11kA/kTy1aVNduDnDLHYpJyXjvTn6HeabchJax3Wjd9wsNvLVXE55lz?= =?us-ascii?Q?Naz+UTMfwJJ755qnQ9j+lF2e/4zZOTvOlV2BLz9htJmzR2NZ5s1QCobxpLPH?= =?us-ascii?Q?pjRFfE2QmUo2cjD36SZ+qX6vbovq/mAL3qxBTVgYxaWXpHfqcQe+wKCoMA6L?= =?us-ascii?Q?+2+JyceLIiVEt5N19LElxPOUCHCL8y3dXy84321ThMdg5BBKyo6Ivl+R/SUb?= =?us-ascii?Q?oG2k3IVNywq/+2Fq7lLQ+1mmia/obrikBrvXaJNEci5iwwsZktNjtxDyEH11?= =?us-ascii?Q?Va43Ay4yJAQtqpaFGlpf1CrvZVqKZCf4LLqToQhyUofeNExmuDyKzi6LTeOT?= =?us-ascii?Q?4ifNSof9obYqMTdXweQFIQFGArvz4jUaJ09SsmjhwRT5U26bX44CfPKxs6xG?= =?us-ascii?Q?ZpUxwmthPMVVI8/XAM/yy9Z3LgLq4xVprykjojP2wjw+hHVMnJl4yDSo+zq/?= =?us-ascii?Q?8CSDiao7J4yv776FkVldc6MVYIYqT/WpAXbOa0bvviMG48OvT9WVoL5HyLI9?= =?us-ascii?Q?5YqfJXBe5t/uzGaF7jBTXI9mOLpSDwSVCKGU8bOVZcm13McP+D8rVAl13DSK?= =?us-ascii?Q?ZToZHKFqP12vqONIzGc80pBOCLMDxQ2s5q26U9YOb+jhpSzrTvAIZeSbxI/R?= =?us-ascii?Q?hfJuCoJudgdWtWWgC1/5XqYiQH5bbVql84g9D3rMwn8RCOTA559cLCWsSaxk?= =?us-ascii?Q?8/ipOaM2fgY+VoHbRqNvSG2d5UNYqqU6esZ4EzPfmLPZpJ8yMyGso7sARYxa?= =?us-ascii?Q?7sdKlUWmDQsBZJz0dNVCQZpPB1jIyi83gYEmToYJNCVKRPt+0SnExlHugWp0?= =?us-ascii?Q?6Cm+XLE9NgKxIHwQLHYWSAsmfPSlOOgoz9RyoH4uxoSkb25+b6fR1v0xKqx5?= =?us-ascii?Q?INsASKPBrKbhDQrTFL0MonYVGQYaiz94cvn4wKmCkYJjsoBbu7nH87Kwt+Wl?= =?us-ascii?Q?9B/ODna5IJmmskG5wGgmieiVQwDt/LRLDqWJRYik+NEcLaZQ=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fd260904-c4b1-4814-eee9-08d4c2e9f495 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:DM2PR0301MB1199; X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB1199; 3:RdcwTpEfUuWK4bMjmCTa5l4LfYVXCDQzCs8HxEesUzP/tUJugTAY24VSjWZk9a9d5deOh21VR0A5kkwi28+4af9H5tXSXukubOH067KqtmFuM32AU0bIUpsLD+Pz3yejPHWH2cMt1UQ7v+JZdCejfduY++wjDK5ODLpwjU+nsvx9vt2xxcWMsFL9OmI8YC8SihlDjOlQ9XRdiIwlwYgaYPJSb6iVEQE4417fAf4CaD9aV8uIgf4B+rjHGVlOLs43iliimff0XX948CGcWYoFFnQIO7aXHipSvDQ9TEQLSxjViJ32iw5/45CSOZT2kXcqo5XdFZ9TWoaJBZELXr4dT1tg5K+S5PQvY77CLGW/T5IGkr00EtUOSuJKsP8HX5K6rhn1hf38XSla8tpFygdUBteGlZUzYoyOrxTAJm5fLMN+eofOf4Afcm1IYfPC9r66q66tMc4aqoKHteANCPel6jKMxjeR6GZKDElJotNU/VHfAEKpnTt2WWnmiD09BB/SM+1XHvFhe6rPOKoisyNkV5XxTskdRN96wtNpmTxO/3eTf6QQ8K02Vk1XeG9ANZK9lrn3I7EDKCmG0CuIBm0Ue7LVGTr+tyXY0EVOAa0xiNiQ8QuEIGMe+Xn9k/9Un9DVFA9xkuB1GPIpCg9QGQKARwwibX9eN0x8mUd81ym+OpW36E7AwH644QvO0cbv3lbusW2QwWoSW6Xp7C00/Tu6uJVkP5uRx9QbgNO8qZirrKILKgKoCHvZJyLgW1BZPJQe0MMUDv47lPNwEahrbWi1nCDHp1Mx/JAlLSEee1g9OqgT++6/ZTjcbgKXAK4ocXFdgkD6FbMYLfSf9niMv3CHIkyQAqLnYssSZMmaFCYA1IQytSt51QTqZx6ebBalMe2m X-MS-TrafficTypeDiagnostic: DM2PR0301MB1199: X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB1199; 25:g53X8wqyEbFPLLh86wLnFBtcE9CCarYNonWxKhLpCPYNWytIv14gpCTGqWGtm2jvE967lS+2K0fFlvW3rAPesDX+7g9Chk1jMMiaAjs4gUCcWlA6z++zMt/7yf5AMX43EdYSli+cbS470sxpxr6RQT4mNM2M1xo0Si8or6eOkh6zj3FT+Vk1JCWTYWO/o/MZqHDaO/xEGzyJ3gm6yrCqeKcnMVeOaVPhGrc5someCbLK4uIGZqBRxW5aV3IKhhJdHzIf7p7ftq85FxwFZO4quEq/2gbQmO4jNByA809qGsEAETfkqCLKzlx5l9lVOsRRM6sTj2ZP2KGpei30II8ERYvfqyFoxYDJL0XHOBqfMbOGagfYGNZdlr/18XuNivdMTa8MaWGfurH18UNNEpQ7fxc3K3YD2iyjK6RAabrJrD6BqOfm7soDiJuTVXfJXpJtoVih56T+u2lMH+OvH6Pu9a5ir/dy8//rTSTDXAX/6jxCl6epLZRNbOkD1W/NbUpvo01WxChq4sBa2vZoGI0AwBNndurtRuS55+Oh8P2jy0GSFiRKLyJLK5JtyjBBQxVZwaT2ThlKd9Ps9e2343wvEH2BK/oUUKw8auOVGgX/uuwnc5Bmz4ZMPpqGWGRT9PtqWw5zP8Fx7CJZKSdACsTkt4807mzmB3ahdU0uXrXHfBXvY0I6vicSbyMzj/8IUj89uNyqxrplcZbV1HWsmnxAlqoNOY4cKcJY/BPyAq7IOG6KqPWwYIWKH+Sg5n1x2tp0VC5otkM/WEKDf8/OCGk2lHypIsAJg3gCxVdJ8ADUnef0YN+lj7EHL123nAxEnbyf16gwuSVMlx9NEc1Z3RW+KFsNq/oklACFcrn2lUUPVgP2sknkkEs8iIVtSbe6dmUBKHnq8vl5ET7Fu7cpbBB5Q1My56J1Le7gyxYDxhyvgdk= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB1199; 31:WOhJMJfkyCtdWzmqHEc90RehqsuQ4vbMAjVxC+pF5Wss76xr7cQIKi9g6GYdPfUASG+8hzky1TWyLbveouKioeXy0IpXdKYptYErJXwysDoXa9JgWVQr6tGyq8TZNS5tCNNjeosdv4zFR9aDtkrPyiH+h5rUAw19nNtkqmLaRN7jkWhKFbzYZY6Zf7GROjn/wgAHxgvmBZGPQ311SFw1M+jWrE8Anm8ODy3ytHp7K1lVWXk7r6wR2O7rsbRfYhn15wQSZBHFzWFqIf5q4TqR6wkC7wJ9FojPIbq5aE+RADMZc7CikGTRLoLayBeny4Tl6uxF6u9PanrnpPKdd62sGv6yk55K4KGbvjs7Mpmoz/ID/jfZ3r7ZxmXymYDHfWrpKthuxJlZVYhEzCW6QE9b2xdh8ST3NUHVDM1BzMBRFUykjqk6knE/5Xc8AkfMpOVAefnPbwHWrQCKo4Prayv5Wu+uk5F+li9cZvu22vC5pyubCI7N9FXGTbpbA8Fai3XitOuwEB/NGVoYEljj9t2zAC4zzKAx73V9DWeUOUHkaYD085b7vtjw5bT1+4Corg/i8BHXSOw7kknKsq5Pjwy1hxyyZkUAmjSPLXmLfj9tA6ky4ALF/E59LhJvj/6IQtA68VmCb5jUyQ64hBPw0luzY11MjcnELvAx399lI4JTbdSxroAQLJI8tR2RvmhgmTa51ym9Buq43otpppwC6TeYBw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(148574349560750)(158140799945019)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(5005006)(8121501046)(13016025)(13018025)(3002001)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(6055026)(6096035)(20161123556025)(20161123561025)(20161123565025)(20161123563025)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123559100)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM2PR0301MB1199; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM2PR0301MB1199; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB1199; 4:glGsCR8h8Q3FstODKAKo2rMpuYcUhYbcURjePw17?= =?us-ascii?Q?yryFmMfaS67XQVtVS6J5eosuIRIqT9TXr1rYrpFzqijzMsnOQyIPnmpkz/Dm?= =?us-ascii?Q?c0MBxVPHd6/4OEzhvpkW/ubUYf5UJnutO/WsGdjduqGn3UQyLBoeuGu0eOZt?= =?us-ascii?Q?YnR2BdCcf1uIITSGxNIMlWF7a8BKLC9ArYGP2qCrfITy6S27+mN169QZwBKl?= =?us-ascii?Q?jCumTWpH96zGHOakTUWSAp6uyh3VKKRSz8t7pdvKDJN2W31XX9VGOklOdiRX?= =?us-ascii?Q?dFnXavzZ8HTwPnkXn7e7c6dy57J34/XL38a32PUFFFoCw+qYNqZ3Ky/zkO22?= =?us-ascii?Q?GZzc60jFtECYR8AG77MeT7CIf6ynxkd+XAgo8AZoLjb1yVr99FB/Npubvcji?= =?us-ascii?Q?Hym/NYLKJm1IqitKHFfCb0qO/HeKdgZhJd8LVWjKe8moQ9Kg843+DQzo+ibc?= =?us-ascii?Q?9lUc//phsu5tmz+f2W5lP1fTcTQU3Dttw42DLpLRMf+fFARTxNTzQbhCsw02?= =?us-ascii?Q?SPOX22ksfxgeSZU7fDPbPJ8Ctusx07dczxDFtOmaQ+ycHGRTmf3wPtloQGzy?= =?us-ascii?Q?kZuuF2Kd64z794ARpXqi57zRc639Hsk2TwmIacKXsAAzaRtQs+jfVrX8DFDB?= =?us-ascii?Q?5VtwwobjZcsrrKyAPNgrObtOa5g/R/U7x9L2dWmSaE5Dd2WXH1YlGiKSnMhl?= =?us-ascii?Q?3f9Xb1t0xfLLCzN2d78R1i8/hOO6p1wf5Xq3hgi/vYJHTEB1Nh8BDloOsDRO?= =?us-ascii?Q?En+p3d0nLc5RFbn4w4tUjnPWMZwrKYlREQp60MhnGnHwNsr1uqWqrF0vQYz2?= =?us-ascii?Q?DSzsjipWliRk3dEmGtSZtwwl+mI8DIYYOs4nt0zACLqYkP5TWHIK89KVhqmm?= =?us-ascii?Q?Z1vKdztwpepRFMnWN6TnBrAbJBQgr5Kz97jG7MIsVAs6s+g2rOnafXPmKmlN?= =?us-ascii?Q?2FE6IKVrRwduCMJ3XlwZZ4WUvgZ1CMh36ZHQRDpW3QM+1pVknVG886KVDbx+?= =?us-ascii?Q?JHDYKrk9nNygXEnj2vPPcB0ZsBJxPGqU4H035LpugXxWqFScSITDUWadS5Fb?= =?us-ascii?Q?wHGg8BoNgZO6EO67+8QKLG2PPvuTQN9cdPtpKGnOd8Jqp/aLTfEzzalbRdCc?= =?us-ascii?Q?wY0ONCQ69l0ob0O4eFbnrdDbZKQLU1bbs58TO6p2iO5Lc2Mlbb6vVUfo+hoO?= =?us-ascii?Q?Dndi0S79vKXvQrow2CUV5EWJozyQRPeK5c2cnFsfgdUiOoXbUJvW4tKzM8W0?= =?us-ascii?Q?DKIS31+Eg8mBY0ezBVsu9LEtiExpToe/RHY4ZWueYzk2A0yDD8X6+WICQ6gl?= =?us-ascii?Q?tzMPHje58S/GK8DHVPpyMZOuBdMnZlutHE3/uOSHxLgN/2Hy8hIF+97L4LKx?= =?us-ascii?Q?AN91V0oKCcRK8+ECbk/GtqYZvzGYgtn2IKUCWlQzkXPPiM/W?= X-Forefront-PRVS: 0358535363 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB1199; 23:n+HXZDuQIVmOCMWb20DQdv4NJZBuZ7x3HCnqJ3F?= =?us-ascii?Q?1BU5swyq8/A0v1TUcmUimGY2Di9rJyEQoYifaAdJWeariRvHNi8NNyct1yXb?= =?us-ascii?Q?r0mnd/DvPYFfNHv4Nr+Lm5L1wjYibWPlTeOgKlMoJy16dOxKEvRCxbJhNHDD?= =?us-ascii?Q?whg/Q2aRDc59+x1BQ2uJg8vF8DUW4XO9Da5ZB74Vaba92RRwNs4OkNwl0VS8?= =?us-ascii?Q?DQc5u1QKSt+qriIdczh7wuAY93nqcGQyvo2Z/nRKuhPkTn/esXsQuI4IgaYS?= =?us-ascii?Q?mz1aC9+6KkaZQa7M5DxPCm0rnUsNPTJL3UcVaVhEyPLU5zdIk8yp4blEKP+Y?= =?us-ascii?Q?OCT6bhbA2HBziKu4DS1TYkRb2cEJINrrTDUt1nJqDJLal2EQF8CpODh1ObiU?= =?us-ascii?Q?SFSypOiqK6vv/oeTc9gGSjDtopLh6fjvQJrYR4QE6vW4Wrv/74M0nkvOC2tf?= =?us-ascii?Q?LLIW+MI6AQBxEQ9hji8jPyJFhdathWMDiegIiH9NED3qBIy3ZDFmsADl7ejH?= =?us-ascii?Q?EvEsWW6MSvXoBupVoLqBVlI3F8NKa37xFy3dOF75A0QaerlsF36Fly20q7XM?= =?us-ascii?Q?5HIImq8bpP5m/3+2Vif7s2lmzKYhK+4bo6CKvsBrUf8j+fDV4YOHM9yMTYZF?= =?us-ascii?Q?TW7ri2dIzdRj4qvHgrbT6cpjnh9CAtFyWjHRAmLeH5ep2GYPaGzSIloQ1oVh?= =?us-ascii?Q?4N6bXwlXnCtPhHRF4yjVSoGYqE9wjUJPjwJsMYRWNFdZbjW2V4D77LbK0lBo?= =?us-ascii?Q?BBUdUDIQaf+pv+1h0jT4LP1D/GePO+n6ILFVzifNehFYKB9Ldun4LIOoGNUA?= =?us-ascii?Q?KhXl2XT21iXezz4aYAPYUoeWFo7v5ec4bC/vkRcB+9VFliKVPoHdDY4DYEgo?= =?us-ascii?Q?sn/6w30anJzNmUYHivdmMzv0d/MPGyYe/3juqbgHz64oxVKEvbxHANJosiey?= =?us-ascii?Q?ATBXJrKTtflDS4976WEIS2mp34KzAZgKM63DOyUgTacYnKjmv/lNpB6X8+oB?= =?us-ascii?Q?5yJMJE4KFCwI/3zoZAfdxTFDpqSAp+bc85ioSb0o4rkdfy0LMgodb5BFCPI8?= =?us-ascii?Q?Ap9kGu3ddT4PZnjOc+VXqMEEl7cMRk7qXk16IfVJ5AOw3j4z/Xiz0luEt8BQ?= =?us-ascii?Q?JrfNxj7yzNCdlPhn7GxaL5JyiNo27XLpjHMp5jQ7Y8tdfzkZVO/H8OHwfSXe?= =?us-ascii?Q?ZQHDTHWL115H1RfZxtpbjLfkB6l1RN2BV7eoxlCIh30/O/QBQBTTbWFsFYam?= =?us-ascii?Q?SIevL4QdhGTQ/+DPFmchmrcwZjtX+lKm22WBNUvtsu3pH2mv85FcLren8Pg5?= =?us-ascii?Q?Cdg=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM2PR0301MB1199; 6:IkJaHoeA1LyUE6/9JQKrPNcyriyfIN/f9lzKwLP2?= =?us-ascii?Q?x6YE5fljVjo+tbXRmY+tzF1AhAj1WWbgRqVHHr2O/Adm2Cm0KQrZf6EaKFvT?= =?us-ascii?Q?V47Nwq1HfQnkC09IGp4qch/Orz5g4VZg+wJKBGGw+/u9e66LD8zjZekWh55h?= =?us-ascii?Q?BH8Y1COWKgU7oRk+OFhQ2IqpNM0T+MXVdtgOQmuI6D22KPOrCSop02AW8J+L?= =?us-ascii?Q?1OYKmRXCkNTrlVgXjoSzvd5mkO5mvPDamMOGQn83J1WYuZS7jfqGNRmCnTun?= =?us-ascii?Q?WX8ckxl3Z8TUScg3CMAUXu67tfLZaBZqXLs3eJ4E+FfqoOHXBrWLDdCgQbVg?= =?us-ascii?Q?N+a8ujzqtokjZAmmGaIcwZsGfWAM1iduEyv2YRdjT6qSDE7vkbJT1x81XYZy?= =?us-ascii?Q?tuaKPPn4RN7zxGUPHCFvNGkPl2Game6Oj1ULFx7KiQINDRUzZGPl+AoYUzg+?= =?us-ascii?Q?Bl4Yd4hvdD/Kgz8lQBOesB/2qLd8KnCCP4qqtGuTmf9G9BXTpLXIELi8SSOU?= =?us-ascii?Q?U/ro3OJObXhvNOADph+qjqlNnSJlxtVQGxXlO9+5w2X8vXbqsqPwhunE5tQI?= =?us-ascii?Q?X3GH3fxrhq7rPpDFtTSRwMEwV1MWymFeaO+hiYdRlr9/ZhmeCKwTBR6naxfd?= =?us-ascii?Q?DcSo5beLNQchecoDp6fUeNu4DFXSYM+wHpEXNpdufzREoBTxaXMbIA/CUe7q?= =?us-ascii?Q?QVuNR7Duc4PcB6UJCXk1agBt92I0erFovZ1/9mF7faIoS+Jg4WKDywStFc6/?= =?us-ascii?Q?Jo1JJ0gn2UGH+w1H2hfBe0yAI4APPHsyjk2/dZGf+/dT3oHVGp0fod6IMAlJ?= =?us-ascii?Q?znD1UhUrZ+l2qC2NZkD2meD/PoYEMO8G6e+bRl/2RBb8MTLcQhAjvdu/DOaO?= =?us-ascii?Q?MEFKL8xJi+eo7lZ/lJDMZoNYCoOHeMsw+QYRT0vmotIBmagV3eDxCGoa9sfr?= =?us-ascii?Q?9yexT7nD4A//C+Jk9590/vxwDc8ZIkT11FV+RxnaBg=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB1199; 5:AfMFKG+tu7Gio1xnx6PGxXMotmDAzMiAePsl2SODdez7zfP5zNR9SQAFeKhTyvqF8df84WSdvl1dcvEggE7ew2noc/s2r+VUO3u4qBaJqm9V5Tg8fCKc5vNMWtQgB33XoAXmqDenz8ezHC5VXhHOjTerH/rRiQYcA3BIPl3oMrwCA+H0CuOOcBkHIz+BauTXZVeTW9s7anPtKrGPr+l1VFzvH0NZa9S96qHCqk8Pa6FC2nEk8e2pt/UNehtCUCJ8kb00/OikVArkEq5G5pOIBGBMInmygKyJdzySL68sWpFUQ7kEC9B2UZajfGdIjTaOc122jgrHX3l8raqQJyKcmcaKTv51TBLwi0xR7ZvejssfBHSXtizVKH8JWSM7uhcPQvuPVbj851QYuCzi/2LuYeFQPUGyzOJESU2lXtwDfYwObibieegI/AjIkm/4Hdf4Q3kjP6VWn9NBGAhLc8SaQMrC0CWqRl6b/g6cIlc1ZV76VHj6VJkyiJovPTvYD3WyMBvr52Lt0N1kv1mzbT0L5w==; 24:hXSQgJnkDBpbBYYIKLjK9kKIWHGyvhenRblE99lIK598ZWclevLrdHnW4qtA3XeObCby1VHZWwq6mXmc/iuz4XvRANiCo1g5UpD79notkZc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM2PR0301MB1199; 7:3hFITsXN3NSo9Un4UoPiFS973ozPQAyyJmH6PrJiP8AV6J4AppOoqKAVbUTsgapUuAVYoarZ4iioK1jMhAS4Lyo8v9WDlCJNXS61ky2G3z1JHrEO5ChSXKdkuSvKoyT4dXS4hwU6duSSujGSu0ke386KhO6f4nIhBOP658LWeUTRbNeKa6blQLqY16Wn8bwwioXEkA4eqgFnOLCaPUuoIceaz9NCi/LZ7a74EfhGDbNe7+7pi5XRAQNBVigE5FOhf5Qf/8gajDbMlin8mC6Y3KBnqiQu2nw3fcnQ9VOiJvOHfb0M9tuMUV6ZTtpuIEZcH33QuPY1NWDuuxa0qm0K32erbmtQms2bwOInaSUyhDlcENV/DC4lU5sjLG3QCvBhQTtTgPAeztBgNeqMbzxPFsLygLcltHLMw7AS+0869XDoqoQzWj2uKm3R2ghQOVHw+4nJUHC02VhQMFm0d0v787Wke+AiNtdeoc+G60cx9/aZinKKHBxOPc88uWjHVzU3As47nX52dVEfbUol3IveBqMFljhOsX3VKVVQjtjgNMotVg1MuoSU+Dlg8pD5n4FpcP6fYYOT0bR3UDA10lbFwuGRaFDa1LmuGmRzFUzzE30QoNa/DoGMdo/+7itqySnGXXBz47v//EFATMJGerIuWj5xKxOZqiHpyshDs1ZnKPRmGXlOTdE7Zf0vSK5AKJJonEdDRzVmosUekCXM/EmbFcoAoVB4kp4HkCJ2vEQdZ9wHK4OFCPiktHXSpRw+EtLOmbefiAWPC4magB7medFl6OXcxCm9j7+OM0nb96zM/x4= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 14:35:45.0377 (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: DM2PR0301MB1199 Subject: [dpdk-dev] [PATCH v2 09/40] bus/dpaa: add routines for managing a RB tree 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: Tue, 04 Jul 2017 14:35:48 -0000 QMAN frames are managed over a RB tree data structure. This patch introduces necessary routines for implementing a RB tree. Signed-off-by: Geoff Thorpe Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- drivers/bus/dpaa/include/dpaa_rbtree.h | 143 +++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 drivers/bus/dpaa/include/dpaa_rbtree.h diff --git a/drivers/bus/dpaa/include/dpaa_rbtree.h b/drivers/bus/dpaa/include/dpaa_rbtree.h new file mode 100644 index 0000000..fff2110 --- /dev/null +++ b/drivers/bus/dpaa/include/dpaa_rbtree.h @@ -0,0 +1,143 @@ +/*- + * BSD LICENSE + * + * Copyright 2017 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 NXP 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. + */ + +#ifndef __DPAA_RBTREE_H +#define __DPAA_RBTREE_H + +#include +/************/ +/* RB-trees */ +/************/ + +/* Linux has a good RB-tree implementation, that we can't use (GPL). It also has + * a flat/hooked-in interface that virtually requires license-contamination in + * order to write a caller-compatible implementation. Instead, I've created an + * RB-tree encapsulation on top of linux's primitives (it does some of the work + * the client logic would normally do), and this gives us something we can + * reimplement on LWE. Unfortunately there's no good+free RB-tree + * implementations out there that are license-compatible and "flat" (ie. no + * dynamic allocation). I did find a malloc-based one that I could convert, but + * that will be a task for later on. For now, LWE's RB-tree is implemented using + * an ordered linked-list. + * + * Note, the only linux-esque type is "struct rb_node", because it's used + * statically in the exported header, so it can't be opaque. Our version doesn't + * include a "rb_parent_color" field because we're doing linked-list instead of + * a true rb-tree. + */ + +struct rb_node { + struct rb_node *prev, *next; +}; + +struct dpa_rbtree { + struct rb_node *head, *tail; +}; + +#define DPAA_RBTREE { NULL, NULL } +static inline void dpa_rbtree_init(struct dpa_rbtree *tree) +{ + tree->head = tree->tail = NULL; +} + +#define QMAN_NODE2OBJ(ptr, type, node_field) \ + (type *)((char *)ptr - offsetof(type, node_field)) + +#define IMPLEMENT_DPAA_RBTREE(name, type, node_field, val_field) \ +static inline int name##_push(struct dpa_rbtree *tree, type *obj) \ +{ \ + struct rb_node *node = tree->head; \ + if (!node) { \ + tree->head = tree->tail = &obj->node_field; \ + obj->node_field.prev = obj->node_field.next = NULL; \ + return 0; \ + } \ + while (node) { \ + type *item = QMAN_NODE2OBJ(node, type, node_field); \ + if (obj->val_field == item->val_field) \ + return -EBUSY; \ + if (obj->val_field < item->val_field) { \ + if (tree->head == node) \ + tree->head = &obj->node_field; \ + else \ + node->prev->next = &obj->node_field; \ + obj->node_field.prev = node->prev; \ + obj->node_field.next = node; \ + node->prev = &obj->node_field; \ + return 0; \ + } \ + node = node->next; \ + } \ + obj->node_field.prev = tree->tail; \ + obj->node_field.next = NULL; \ + tree->tail->next = &obj->node_field; \ + tree->tail = &obj->node_field; \ + return 0; \ +} \ +static inline void name##_del(struct dpa_rbtree *tree, type *obj) \ +{ \ + if (tree->head == &obj->node_field) { \ + if (tree->tail == &obj->node_field) \ + /* Only item in the list */ \ + tree->head = tree->tail = NULL; \ + else { \ + /* Is the head, next != NULL */ \ + tree->head = tree->head->next; \ + tree->head->prev = NULL; \ + } \ + } else { \ + if (tree->tail == &obj->node_field) { \ + /* Is the tail, prev != NULL */ \ + tree->tail = tree->tail->prev; \ + tree->tail->next = NULL; \ + } else { \ + /* Is neither the head nor the tail */ \ + obj->node_field.prev->next = obj->node_field.next; \ + obj->node_field.next->prev = obj->node_field.prev; \ + } \ + } \ +} \ +static inline type *name##_find(struct dpa_rbtree *tree, u32 val) \ +{ \ + struct rb_node *node = tree->head; \ + while (node) { \ + type *item = QMAN_NODE2OBJ(node, type, node_field); \ + if (val == item->val_field) \ + return item; \ + if (val < item->val_field) \ + return NULL; \ + node = node->next; \ + } \ + return NULL; \ +} + +#endif /* __DPAA_RBTREE_H */ -- 2.7.4