From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0086.outbound.protection.outlook.com [104.47.42.86]) by dpdk.org (Postfix) with ESMTP id BFD047D01 for ; Tue, 4 Jul 2017 16:35:57 +0200 (CEST) Received: from BN3PR03CA0066.namprd03.prod.outlook.com (10.167.1.154) by BY2PR0301MB0600.namprd03.prod.outlook.com (10.160.125.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Tue, 4 Jul 2017 14:35:55 +0000 Received: from BN1BFFO11FD011.protection.gbl (2a01:111:f400:7c10::1:100) by BN3PR03CA0066.outlook.office365.com (2a01:111:e400:7a4d::26) 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:55 +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 BN1BFFO11FD011.mail.protection.outlook.com (10.58.144.74) 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:54 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v64EZM6v016426; Tue, 4 Jul 2017 07:35:52 -0700 From: Shreyansh Jain To: CC: , Date: Tue, 4 Jul 2017 20:14:04 +0530 Message-ID: <1499179471-19145-14-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: 131436525551033846; (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)(39840400002)(39860400002)(39850400002)(39450400003)(39380400002)(39410400002)(39400400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(77096006)(498600001)(85426001)(6666003)(81166006)(105606002)(47776003)(106466001)(8936002)(2351001)(2950100002)(6916009)(305945005)(8676002)(5003940100001)(356003)(2906002)(69596002)(86362001)(5660300001)(50226002)(36756003)(104016004)(189998001)(76176999)(53936002)(50986999)(8656002)(68736007)(54906002)(626005)(110136004)(4326008)(48376002)(50466002)(33646002)(38730400002); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0600; 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; BN1BFFO11FD011; 1:TD6b6aa+N0CbXAGmRTbMJHdaULbc/CW8GE5BunkMQ?= =?us-ascii?Q?9FJxXFUvJ3eD3z1ta0YQ/pCo96XAKtwrfsmVKJzWS53b14XW9+QSANVtqjD3?= =?us-ascii?Q?JO67+9I41VBWeGsl7lXO25GZZRtiKpvKsy9P4V5MFt01I15lHooIXxor0kZ2?= =?us-ascii?Q?dONNZhH2xBozjUKzs6XO4Xn6Rt563gnEBivKoJ50B5M7rymSdPsxw/Q9OxQD?= =?us-ascii?Q?iYQ2ito/vszpW+Mb3O9By2jtwJyHFROaiX17jZp4HnRxDqHdS3aM4DjNVegY?= =?us-ascii?Q?t7d8vAFydvqbS8qGH3viNwbBI0zEkMX7T8wkz5YKJ+gyv0i3mJ2LYo6cXSy+?= =?us-ascii?Q?ztRzkGSH9iQZPYn8+CpqMJz9M+ZEsRqnxHcDd3ks9nGW2Q1ZNDMwrSFq1esY?= =?us-ascii?Q?UkAZodO0NRsGZN0k64g952XbR9Yt8EaVBbnzbqgn2AKh4BpSuwsJ2JUwLWMX?= =?us-ascii?Q?Jt+2DDxN1id1HBWU5bCuVACXZw8L/IUH5BKsMS750eUHLcnMZ/5WAJfUTv+r?= =?us-ascii?Q?zvRNHh+K79g+7hRL77cSQbTO+R+4jX4wXywv4QvNVAOPpjlWg7Lh50owkWId?= =?us-ascii?Q?i9ilWCyortqKMANFBe5Hk0m4iZQ1Sg8oj9HbH/FE0RSSn46sQYuvrhc9kQzU?= =?us-ascii?Q?gUb7K/cdAnD/8m4JI5Myr6qZOjievquk0v//33Dam/edtz6qqnPgSQIvP3rW?= =?us-ascii?Q?lA38odc+GiNYH63K3EF4z2NJ5YMvRLJ8u8eRBfMy3OT6Ac2I0ILwtpV2osDV?= =?us-ascii?Q?FoTgpMBxAEwLkQu5LeCYnX0QvgFUutCfXLQ4/UtF4IKxvGbBlRkTmCw9y+0M?= =?us-ascii?Q?iEcKFZxUFf1mCjgzCzDx6HFhmONhjilEdIjAg8ail27cQY071YMR24Ur/Jxg?= =?us-ascii?Q?VjQRXcze9axNB6PGyHMobg9HrdyAmccB8BlkNjTxBNjZ5yy7fgBfNP1a9aEw?= =?us-ascii?Q?g+cwULNdRsn7tQYcw8heqhF1ZCUr/W4jilq4fgNJ2eY08/rvGTbjfJfXIAab?= =?us-ascii?Q?owAlrvtIS+SXg5X20ItO7exVQfBQDTZXwrrqM9X72WVsyof8WPqT/ah5k66r?= =?us-ascii?Q?P2Ferm2pDxaubEAWRrIEFOiEO9LnW+sH8udXE4qubg1QHG8/A=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 00570578-5f16-4466-bc95-08d4c2e9fa6f 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:BY2PR0301MB0600; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0600; 3:0gCbNzdhi/7ObVub7ApJyf3bz8G0xNBGm4/E/CrSZg+KbVi0TGzbymyKb3uqzVA6aWfEOnKr8xpfF0+NtqcEIsd2bPH6pRLLgvnmmKTzOSMKS+q4RxZ9jC8sKoA/d41pj2D9/VdBa28/EQZ0vLDM75cXLUIWrZxymtsIQgyFwuavJ0BIoZX1CaEwt/c8LScC4SqG+79H4S49Bp5Tqy75xwfhZ1YbGWVNrBI7fp6Nbiq3UHwdzC2xkZ4ycbsxIJhFhutvA/F6y3i7vJScJ8rncSn/tMCyShuDu1xL2fFWn8GvLCtgR5JKwGnvZZonwWB3kWsY54QBv5p1WFUBKTCEBcK0pNMf1y8+6rDB+DBbnJYWyfrNwu4QdEMdNLq7vOjG1iOEBoa4lGE8jIUBWMMdymRk1JbkgCjWeRzTLP/olhpUE8cpgkL5qjDZBpxZ2CPl+mbVru+1HI9JfbCGTS1DP0leYV987CYxubBVxkiqdvDTt6hXTKv6J4HWwQlvkjzZheNp9gUnKgA2PQukG+2pCxqgGdTTOvcea6T4RtqG0yxJc7wAKNSDAljFSA/M4gyUJJxw9fzR89Ep8n5nu0rvGh2CeIoL7CgO3Fa4SSst8GXGS2nzCy+0soqui6xHAIXpYP+uQGLAzol1bXeW0OJ9778WXUf4fMubOn/XWZmXvOhlM2spZFNDCey2HFui0yC5Siuh8gYsNU7CEIEVvei7TyZOZEBjgNypEMt+o3O67WlCRoulv2txS9RsewuRd1M5cBzZjiAM0uYJ3O2De6nIVUF88jeFtLgd8VklKywNhN/7qoRIBKqwZC9F5lL2tUooT0tdKiZEyVVl+QQHUmqPu0enUpAG/2w+FXrk/Z84aba+EPh4QB/78WjXilezBDdq X-MS-TrafficTypeDiagnostic: BY2PR0301MB0600: X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0600; 25:0g9B8FYzuHuc0kRpcn1l2CQyrxw8wLnWBhfrqDLky81q0D5JNud8HWPXXYh8jy+BSyKlGbMNLRG72/3UxNvKzXU4GU+48EccRRCpHsfNDTCJDl1EMud3ytVJ/weiDGOmAjRRB4B15+EoiRUatK4x6qIxntSHrhtInBOJRzBbpKs2ndTPfDctHVvSTiEXrp4hxRK0FzX7I13FIJGLhZOAGZYAMRWKJKJEbIYxoU1vnMPQM/aGeHMMtViqaJnhiWz15ENXxKn27VKNo25KCZJLxIxZTCqXMyiY/01GOmHjA5sVx9KJxQeOSRVGH6owbV6R90e46Wokvho0Og5O+4gUjN7Z/Whk4djU74x6Swax8JNmFAZn+LTfdPO90xhLSMX5NPtRd/SGhGdciJY7fKMnBtnXodaLhqjsRCx3+yH3tbxB8SPQvloeyl/ib0R4DvSyLP9gDzTok2fSehMWT2/gF5/M0j8ju3T6QDhOZeTSq8VN9GTEjk/1kChqd1/etojSeKOIsuxbyGTGapw7nAEDIMOp6qZI1tLg+tpPxesrBOulFe/ys+F7EU09pEBDTSFbldRVyTTNse3uLmrxKKeuMi4QljF89HjYEafPnq6Ih+6bw8eZYQEaKsEg1c9RgU2NZ8nNaKB38f91Q1Sx46Ox32RLHduzapNJNe0VeErmKGuWc7+8aXC/PDYek2zcLBxJVYALnQqsIrgmoJMxyhRf9lJnHwrG92iqdC+Ss237SyVbJbWD0PMZyU4dBmfdtA5xwJybT92eKBbgell8kfjGxmVDUdLAfWDg9Y3oukugnD9fE1dOLjCn2K//ojbp39jlF4z29pxuGeKrWL2QyHADITC2u6nAoWXlTx42GKevNLjfk7EzxHq+4ykx0I+vzTqbuTX8YxNjvAw8A7XOFFjUUlX9NJZh/VK56f/axmP2PCU= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0600; 31:iDpfcJKi9Lg9Jkq4djsem0ht/59NhXf5ZSqM0W0N9c856tMZJGu/+IjLo6mn//CdEekP4DEbtc/NPz112jnguuXO2KEdBKe7zJ3wK0wOG5lcqyLte8ultw0jPapQnkmSS9p2FLP/OhwfOYL6RDQtMwYhGhhyZlVOClkoEN/LaMCQO2DSd2bhmZnbYGZqGsvxvVMOUMnOOn+3mtGCQ3P3mO1/2cuaQAJ4AC0UCp2f1TyeU/yBd90xdZrhGosplIjR9hReTlq7wwpixJ5Zwl/eqVqqsoSt1l9JaG7PqKlv457AoljUw0gJEkmXBYKiuctqrcvHPPUtxXvwPeXr5RjCWucz/qphl/1IBaTbYnRvowqU5h7heApIiazB3DvHWMf+F1zjojQYhTKK7IUdFaLv6Q5kiDEaao4CIlUBcrRF3DUDjRt0KIUgj200bSc1xxZKC6Rncgh9qZRMuER5KQZIIT9Ai1m4fAjk9Ia5iPgcl8/axYo3vXaJE0nXLHshzsJttETx7J0QG+pqVVNRckelpNLiVJn58jb1Zg6X6FHzJ3MuISSlpX9/u75aiPR133+pioNW5TsWat0uwILXpDYNxYuc/WWI0Qp12ghCnOzZKsa3eSaMIvArmLkCmYTYvHKhUHVggven5lybKIWk3KNnmJMKLHShALqL9/RmgGLzb3sPnDbCYBHJU3ZNs7wpONH4ilsnGuUl8YT1aGVUYWC6bw== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(185117386973197)(275809806118684)(247924648384137); 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)(100000703101)(100105400095)(3002001)(93006095)(93001095)(6055026)(6096035)(20161123556025)(20161123561025)(20161123563025)(20161123565025)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR0301MB0600; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR0301MB0600; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0600; 4:a/fgjtr5Cv7BO74MqwnJXzY+GeC8eIgmwVShOgKB?= =?us-ascii?Q?X4emdKQ7K5b6NRWtHodTzk/Tkr4EhD6EoHVkzus4sOniM8LBq8bIcUAfc9BB?= =?us-ascii?Q?vccwljMlp5w/3UFZm6X8bB2ncunZvprAsCFc/eSJxqUMQcjMw7XBmFNyj4gv?= =?us-ascii?Q?oDnuWatP7HtLAcxP95Q3DDUCYW2TE5QRpKETE9gaViso+CnHu2l5zEv0hhZQ?= =?us-ascii?Q?jWzs8oV/ORDxJ8eYUEUvGEtOEuGtXw6H6pSjNl/+eLv7Q10LvH9DngqDqo6M?= =?us-ascii?Q?lWOZe6oyUrBiz4bttVsBLSLRcXaZ/xqeZsm5gMlZpHGhgUS4SSK1d18/xNl3?= =?us-ascii?Q?K5yznUFwDf1kna4q+OHZPApeGlbpsnadDnFAiR5tcxe4ITodbRwwvHswACbH?= =?us-ascii?Q?/kwdLrhVUBeCshRulRbFk1E2lcVin8dbRiYQuCzQpl68ahoY6aiZEWCNND5g?= =?us-ascii?Q?bSZoO2HMY2qPGXnIh45tOCzJ0FaIliJ5+zDYNAj8RmmA6GERZCeDw97sXhjO?= =?us-ascii?Q?uUUrP5OebCIACDKxDu7JxtEYgT5gbWetD++BFiKdcj9qz5CX6+5P1I9rt6P7?= =?us-ascii?Q?nwVDqgycT+25Zj9XxaRrOTBFF6KX2Gg/b0BUQQ66ggtUu2t70CzJD7zwn6NM?= =?us-ascii?Q?aQKOS3uvFx3sdzmHHtTCdOAmtP8Jc+Tw6+VTRaH3VpdXOBF97QlQ973NGeh6?= =?us-ascii?Q?McYhYqhR6MR0VBa0zaozcXrBNSN72dg2OdgU7yu8m/N+Pg8Yz0WyvnmlTLWm?= =?us-ascii?Q?8/B0WcbWP/MY5KDpH0FoEfwZ3jLfNlZd6zppFBa3Ih7Ud8TuDoRJxC1w4PP+?= =?us-ascii?Q?cOgu5VCNqSzGTmH9s0Oyck/sA0eJAcOmcMD0rNKGGGHAau698VEdHQmChFNg?= =?us-ascii?Q?OVZZg/yWLWmZd+Iwh9wBBWY1e6hyit+ffs3GkF5F3zXd0gZD6BvKh4gTbTbB?= =?us-ascii?Q?JUFvtxYSQuJRaVhgd5h7Ca7CNu7RN2elhzLhWGOCsSjfwZEebv4R5RGgiftJ?= =?us-ascii?Q?8nNS3gmV9Y2H0NaGVa1wptJsOdx5GCfKVPKlPeYJUVXqj7zCzrM2BfU7DBu4?= =?us-ascii?Q?2JhBc9MT4yiVVm+5u6JsBEHTutNurp+mJZK6jTaBX2OWU05t3k3ybuyzUMqX?= =?us-ascii?Q?5gSY+UrvkJopfZoYp5w2H61VTLjlqy5/nY0062otT78Cke6ff0tNz7AOXKSI?= =?us-ascii?Q?BCQA8V0IS0k7J/Mi06MY6zENHRefMRNpIdfPURyJ4VZSFGvw1/e6ousjVJGY?= =?us-ascii?Q?xmjiGzcPCQf2kI7H9haL7a8mivaJTTtJ18t+/40MInzHJ2p0na4iAHXJwK3r?= =?us-ascii?Q?qsK0q+y3vMHSnVI4s4yW4xC3w/F9gBWbycNBZhkZ4utbHj7TzfUjUPwzceIQ?= =?us-ascii?Q?WSNDgxqBwU/Hte87l/YSmv9pc09i2UIF8YrG/Z6MTPCNz6mQ?= X-Forefront-PRVS: 0358535363 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0600; 23:lLOHJaVCBhOjOp7NCDWEgF+nQShQ8NQxhxBXaXY?= =?us-ascii?Q?nv3lBHb4HerxsDRRLY9sDQC/Vm7yOeWOGPyzOHLGSMq1FhbYlhHGUNablMA6?= =?us-ascii?Q?R1TORsRBrC0/ZTpnr6aVLS2Uy8BViLv4MOc8xcX6zDc+FCH6mvNo0Nr62BAQ?= =?us-ascii?Q?uT5a6hnB1Pehd20+WzfDKrCSWeK9OBUDf4jgKF0lyBj96ySD1eKzV2NO/1lq?= =?us-ascii?Q?Iqmr0wrp+u/TbftukEl8gQ9fgOOstK7Vzzl/7wD9AxKiV6zLyAQdmkqQC2oZ?= =?us-ascii?Q?24Z6sacmGUnzzTLVAVK3HukOdus9tsp/8wIthuQODT+1/Hbvbo/MzNYzFXNu?= =?us-ascii?Q?tudh/RFLEpmQGpcjZtEMMA5cZDQgbUZkMSrh5ODzAl8LpgSXMbCuCgyfMzLf?= =?us-ascii?Q?hJ4YjSfAlJRWg5fJ4H7iQcTJSbciZCJiQ6D6HfaWom9IxFa7v5lK7rJutDsD?= =?us-ascii?Q?nfJvbTgVCjU7HnV6gFP22Evm1lBcyq3Xz10Gd8+7qd0gNiKFU6Q0sYOs0BNZ?= =?us-ascii?Q?neXXb9zPgU4yXzWuYiobt8/pDHp2JOF+9AbcEtQ8XjOutvFXFCCgnb5OUczP?= =?us-ascii?Q?cMdrbQD2eQjo+0mGsAalTafK2tIMeeKteG1YeIb4WNZiUlGJseFEscXmX7qs?= =?us-ascii?Q?faiwb0pop8rQ1EX279dy6ip3GTl6d2YNJ8nAlL/ZnYhCIS00ki9UHXNBigVS?= =?us-ascii?Q?MkVPRrdutZpTBEBBeVI8Mm8heA+ShshymPsDOqXY++xfJAJfsZNl/TfGhdhk?= =?us-ascii?Q?MMXMKD6GekSaS2/vG+lDBlfrgjZpPbPP0VDlSKX5Hf9lVA4OVL9Lxx0GuePQ?= =?us-ascii?Q?6wqyFJ4MM2gcTq+j+HgVYyLtEia8GIgf76z2NoCxf9MgQBjl4UYnJUfo4SKO?= =?us-ascii?Q?+QjlA3r5tU960bNi7yyleGxTHTy/wEXTySKgXVaMv+k/FyhyjxfklBp5wfFh?= =?us-ascii?Q?BrjuvdWiCQUOrflnN1x04BI0EGefozXNF8uLFiIFD9cfVhHqakwYiqJjZwUV?= =?us-ascii?Q?MzXKPYTZTEwEqiQR67bX/fuHXhN3tW2HK59BKloOCLOrnRIOqoIhkJ9N6j5U?= =?us-ascii?Q?HvEYOqM9kamjiD7nd7d/e5PIV1b1me47MrhHwbQYfOuzEJyYCFTwjFzPWbsb?= =?us-ascii?Q?KHe7UBawWQ2BBRsPpSak+tDz8djKD9xqfk3Ap/OZCkZKymEdYzTEIedpLADY?= =?us-ascii?Q?RCeGCcweNdjCBgyltlsqpr6LcpwktM+wDeUWP/KRoPUaD1/zoV12dnrLUkEj?= =?us-ascii?Q?A3Qux8hMtlGBTqlLVeaCHIat9NVJFqEP+jx2JmrzMCl4Bbi8wqfDbG5KJC4N?= =?us-ascii?Q?ESw=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0600; 6:CtbQ0xO79ddECasiMHenrG/mjLK2JZQ/BnuCYz3z?= =?us-ascii?Q?A5zCEM0r4p9Vc1yOGhhvfNc+VyTQeEms8LpqiSuLfomRKPkTKLmyOqGHyzed?= =?us-ascii?Q?Llkfhraj2v96AL4Vkghp7qXb13MbR1hIv7bTx5V43/Y6Iy7nVvsP6+I5D9aN?= =?us-ascii?Q?bqzQzxPx3exR+OVsNmtmXVQ0uqWTtVTtrC92z8lKhr1zDjb9pvogsazxFPEw?= =?us-ascii?Q?S/2SsLWlVHpqb8rRZ5Wa9tlP32i/28czD+i+7A0iolImloHDWJhBhtf3tVKg?= =?us-ascii?Q?QiVXSJB3vt6URUX9L5gSdheRDKQOVo9aiySAkDsWUhdD8KuqlPGzQBFTs+DO?= =?us-ascii?Q?skLoQlNLOYDtrl2PSOYo+2N2IapShu9c6ip0hYx0Xl7VPNJp7jyXvgX4LLJo?= =?us-ascii?Q?u2mZCSxTIg0oV2BtCpmRqLj9G+FxAmjlYeZxsuOpn1MPPHiaF+IVItZ+oIxz?= =?us-ascii?Q?BGGJ+BLTN3yTaxIRMMPZPDR8br874A2AvDQULl6g94o3fuuBZe4LkNQs+z9y?= =?us-ascii?Q?bTLtgkITBZqBgp7eXzHjlRzQ5WQ0os7Qu6/ZPLwQ9fo5gGCqjayRbVfzudSd?= =?us-ascii?Q?ZondLFfwnmX7cV68qPG+j5YAf8vm89mRFcngb/p6w419GwWeg9t7HrvjwnjL?= =?us-ascii?Q?A/Sp2oTZWZH3UX9FPZxGPC6ZwWpgmxCTWugGpXAd/4F4gS6l4cJnsWaHOJlm?= =?us-ascii?Q?zfo87PkJT3sU/DG4/o1Hn3JEByg3olzXZWYdyt09tH4rNIFXWWcVM1GRUw3a?= =?us-ascii?Q?VgzZ7YxUfFbV4aXi9D3+PxizBjExYB6Ex+pg3uJS8iukrFE4LphK86hGXdUq?= =?us-ascii?Q?oaNW9qRpKqpHPE2SEE3BsORHT/hvNX9zZK8xvNCpc7Oav2zKADVKdO5XSlx9?= =?us-ascii?Q?+YzclVtr3hoDBB5SU2Y2vJT2cmcORmvGGvVgbknyfTi/NznuaJG/p65KZ7sL?= =?us-ascii?Q?jfF7tS3eaSvulQQk381E+3AVl98GFUSMi1wlV7W/nQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0600; 5:+JRyWC9XPXPhOA5nrcVLFFsJozDKsZptNXfumEcNnRuLa201FhfFLA6qTBVGx1HT0YppP2HCwD4f7QSa7MdOKCMPqn7Ks10MQvslTpfZ29maFSjfw+dB0bSB4bVweKZtn+SPk0I1ITZTu2HDLwMCZoELzEmF9J1ulexumVDXuPaRvatfmDSCTs5jdU30YtrT6kmrypdd6eKPJyD3BfkxLoXT9wVpo1IDMKZJDxh68qvTfjB7no5oyr7VnOIiqliQFsnZJ2Zx5z0TSM/1y+Twr3wcMYJCenr3ufHw7+lb4iG7xNyIuh7O2CRrMAm8hNjfNTEs1nlBvLHttwm1wLMe63HzMujDq8LycosxmrvZLKD5JmGbNR5H3bmVWD6k+V+ac3LfxIY7LQOsgFYy96z8oHTwrfjxfJu/GxsLOcUNY7Tk81PNjbcfnXClId49f1zfHiQYQySADDbzADd/2ZOQRzKIVIz4GgJRi6o6GteGgX24UOeJpgq4/GhBsQwkk5Gonortfv7vmmhGuMa7eFx56w==; 24:43yuxjlHPrdSHtqyldzk7LG3Z96uYoV9pCUzeFOH8SgrQyPSDTiZm95iMXsIVX3bd78d8+gn5bs+SuCJMwD4j9k0X83CLuJQjuf0pcyZtX4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0600; 7:3t7nxvz0m31fMwGkO0Hdtn/nNgyw1xZTXa3KCGumRHhCWsuifJqyKmKUq3I3HLTOJKXb79hYiv0X5LNyiLRXBiYKpOvmN2S0SapUdWCfLS94qAWiezUJYny8iVTOjiUwNU5mmMnodq/j12T9N44lasqsvfzEdqbFuZn4XCgKLcYFMJz4NEpQ5qhcy9va1GE7gElOfbCT6lEY58dz9G2LX3ddfTMxS7Mv8KOJ0Xr0Uzly8S87BP/zlH+LkIJw4WJaVU7m8/xOWHxKMogEHQAX64QvsGx9VZO+Si/PHll4p4wdg+lrdzxWkY/fsloEGxE3nusP6DJAzT6mTLmUa388SjAcSob/y5WQ602oTrGMSCrMVFPAensP0K8lKErERxuGe+qjpznxhR3QbFDg5V62IREnjO9LW6XaIL+V5qdiMGv1Xf5r6LVc98CalEggrji/KQyT8FZn2AX4wG/yTMd+kbEIfwmf4CAhOF1us8O/yaAruiX0NC56uH+k2fsani1pzH559XbS6mkr4qv1N9sX4es3oY76k+pROlS9bwDHcIyvUvTdl6TugtvFR/KLhvQKtiP7dWqAiDZrIuhf6k5qMRS7dok2IckREjANZJWLnPXmuC90JfT0YWx242dgwOypKhlKfD5ZXf46F/zXarodGJmzM2DMxHfd+vEQRQwkiRUst5IC4IRPvJoxazpXmLPwFHxJOiMB2Rj91ClUkHgZRxEPkwWKQhKGQsldF+Dh99tEW5MaaIUTzt/gqnWUnbnJPZ27UI+jjTYbu71AEmiPQyY24oeWuR5xvq+OXswrEAo= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 14:35:54.8381 (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: BY2PR0301MB0600 Subject: [dpdk-dev] [PATCH v2 13/40] bus/dpaa: add support for FMAN frame queue lookup 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:58 -0000 Signed-off-by: Geoff Thorpe Signed-off-by: Roy Pledge Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- drivers/bus/dpaa/base/qbman/qman.c | 99 ++++++++++++++++++++++++++++++- drivers/bus/dpaa/base/qbman/qman_driver.c | 7 ++- drivers/bus/dpaa/base/qbman/qman_priv.h | 11 ++++ drivers/bus/dpaa/include/fsl_qman.h | 12 ++++ 4 files changed, 126 insertions(+), 3 deletions(-) diff --git a/drivers/bus/dpaa/base/qbman/qman.c b/drivers/bus/dpaa/base/qbman/qman.c index 829e671..f2bfcc2 100644 --- a/drivers/bus/dpaa/base/qbman/qman.c +++ b/drivers/bus/dpaa/base/qbman/qman.c @@ -176,6 +176,65 @@ static inline struct qman_fq *table_find_fq(struct qman_portal *p, u32 fqid) return fqtree_find(&p->retire_table, fqid); } +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +static void **qman_fq_lookup_table; +static size_t qman_fq_lookup_table_size; + +int qman_setup_fq_lookup_table(size_t num_entries) +{ + num_entries++; + /* Allocate 1 more entry since the first entry is not used */ + qman_fq_lookup_table = vmalloc((num_entries * sizeof(void *))); + if (!qman_fq_lookup_table) { + pr_err("QMan: Could not allocate fq lookup table\n"); + return -ENOMEM; + } + memset(qman_fq_lookup_table, 0, num_entries * sizeof(void *)); + qman_fq_lookup_table_size = num_entries; + pr_info("QMan: Allocated lookup table at %p, entry count %lu\n", + qman_fq_lookup_table, + (unsigned long)qman_fq_lookup_table_size); + return 0; +} + +/* global structure that maintains fq object mapping */ +static DEFINE_SPINLOCK(fq_hash_table_lock); + +static int find_empty_fq_table_entry(u32 *entry, struct qman_fq *fq) +{ + u32 i; + + spin_lock(&fq_hash_table_lock); + /* Can't use index zero because this has special meaning + * in context_b field. + */ + for (i = 1; i < qman_fq_lookup_table_size; i++) { + if (qman_fq_lookup_table[i] == NULL) { + *entry = i; + qman_fq_lookup_table[i] = fq; + spin_unlock(&fq_hash_table_lock); + return 0; + } + } + spin_unlock(&fq_hash_table_lock); + return -ENOMEM; +} + +static void clear_fq_table_entry(u32 entry) +{ + spin_lock(&fq_hash_table_lock); + BUG_ON(entry >= qman_fq_lookup_table_size); + qman_fq_lookup_table[entry] = NULL; + spin_unlock(&fq_hash_table_lock); +} + +static inline struct qman_fq *get_fq_table_entry(u32 entry) +{ + BUG_ON(entry >= qman_fq_lookup_table_size); + return qman_fq_lookup_table[entry]; +} +#endif + static inline void cpu_to_hw_fqd(struct qm_fqd *fqd) { /* Byteswap the FQD to HW format */ @@ -766,8 +825,13 @@ static u32 __poll_portal_slow(struct qman_portal *p, u32 is) break; case QM_MR_VERB_FQPN: /* Parked */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + fq = get_fq_table_entry( + be32_to_cpu(msg->fq.contextB)); +#else fq = (void *)(uintptr_t) be32_to_cpu(msg->fq.contextB); +#endif fq_state_change(p, fq, msg, verb); if (fq->cb.fqs) fq->cb.fqs(p, fq, &swapped_msg); @@ -792,7 +856,11 @@ static u32 __poll_portal_slow(struct qman_portal *p, u32 is) } } else { /* Its a software ERN */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + fq = get_fq_table_entry(be32_to_cpu(msg->ern.tag)); +#else fq = (void *)(uintptr_t)be32_to_cpu(msg->ern.tag); +#endif fq->cb.ern(p, fq, &swapped_msg); } num++; @@ -907,7 +975,11 @@ static inline unsigned int __poll_portal_fast(struct qman_portal *p, clear_vdqcr(p, fq); } else { /* SDQCR: context_b points to the FQ */ +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + fq = get_fq_table_entry(dq->contextB); +#else fq = (void *)(uintptr_t)dq->contextB; +#endif /* Now let the callback do its stuff */ res = fq->cb.dqrr(p, fq, dq); /* @@ -1119,7 +1191,12 @@ int qman_create_fq(u32 fqid, u32 flags, struct qman_fq *fq) fq->flags = flags; fq->state = qman_fq_state_oos; fq->cgr_groupid = 0; - +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + if (unlikely(find_empty_fq_table_entry(&fq->key, fq))) { + pr_info("Find empty table entry failed\n"); + return -ENOMEM; + } +#endif if (!(flags & QMAN_FQ_FLAG_AS_IS) || (flags & QMAN_FQ_FLAG_NO_MODIFY)) return 0; /* Everything else is AS_IS support */ @@ -1193,7 +1270,9 @@ void qman_destroy_fq(struct qman_fq *fq, u32 flags __maybe_unused) case qman_fq_state_oos: if (fq_isset(fq, QMAN_FQ_FLAG_DYNAMIC_FQID)) qman_release_fqid(fq->fqid); - +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + clear_fq_table_entry(fq->key); +#endif return; default: break; @@ -1258,7 +1337,11 @@ int qman_init_fq(struct qman_fq *fq, u32 flags, struct qm_mcc_initfq *opts) dma_addr_t phys_fq; mcc->initfq.we_mask |= QM_INITFQ_WE_CONTEXTB; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + mcc->initfq.fqd.context_b = fq->key; +#else mcc->initfq.fqd.context_b = (u32)(uintptr_t)fq; +#endif /* * and the physical address - NB, if the user wasn't trying to * set CONTEXTA, clear the stashing settings. @@ -1419,7 +1502,11 @@ int qman_retire_fq(struct qman_fq *fq, u32 *flags) msg.verb = QM_MR_VERB_FQRNI; msg.fq.fqs = mcr->alterfq.fqs; msg.fq.fqid = fq->fqid; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + msg.fq.contextB = fq->key; +#else msg.fq.contextB = (u32)(uintptr_t)fq; +#endif fq->cb.fqs(p, fq, &msg); } } else if (res == QM_MCR_RESULT_PENDING) { @@ -1861,7 +1948,11 @@ static inline struct qm_eqcr_entry *try_p_eq_start(struct qman_portal *p, QM_EQCR_DCA_PARK : 0) | ((flags >> 8) & QM_EQCR_DCA_IDXMASK); eq->fqid = cpu_to_be32(fq->fqid); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + eq->tag = cpu_to_be32(fq->key); +#else eq->tag = cpu_to_be32((u32)(uintptr_t)fq); +#endif eq->fd = *fd; cpu_to_hw_fd(&eq->fd); return eq; @@ -1907,7 +1998,11 @@ int qman_enqueue_multi(struct qman_fq *fq, /* try to send as many frames as possible */ while (eqcr->available && frames_to_send--) { eq->fqid = cpu_to_be32(fq->fqid); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + eq->tag = cpu_to_be32(fq->key); +#else eq->tag = cpu_to_be32((u32)(uintptr_t)fq); +#endif eq->fd.opaque_addr = fd->opaque_addr; eq->fd.addr = cpu_to_be40(fd->addr); eq->fd.status = cpu_to_be32(fd->status); diff --git a/drivers/bus/dpaa/base/qbman/qman_driver.c b/drivers/bus/dpaa/base/qbman/qman_driver.c index a7faf17..5c535dd 100644 --- a/drivers/bus/dpaa/base/qbman/qman_driver.c +++ b/drivers/bus/dpaa/base/qbman/qman_driver.c @@ -279,5 +279,10 @@ int qman_global_init(void) else qman_clk = be32_to_cpu(*clk); - return ret; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + ret = qman_setup_fq_lookup_table(CONFIG_FSL_QMAN_FQ_LOOKUP_MAX); + if (ret) + return ret; +#endif + return 0; } diff --git a/drivers/bus/dpaa/base/qbman/qman_priv.h b/drivers/bus/dpaa/base/qbman/qman_priv.h index 4ae2ea5..e9826c2 100644 --- a/drivers/bus/dpaa/base/qbman/qman_priv.h +++ b/drivers/bus/dpaa/base/qbman/qman_priv.h @@ -44,6 +44,10 @@ #include "dpaa_sys.h" #include +#if !defined(CONFIG_FSL_QMAN_FQ_LOOKUP) && defined(RTE_ARCH_ARM64) +#error "_ARM64 requires _FSL_QMAN_FQ_LOOKUP" +#endif + /* Congestion Groups */ /* * This wrapper represents a bit-array for the state of the 256 QMan congestion @@ -197,6 +201,13 @@ void qm_set_liodns(struct qm_portal_config *pcfg); int qman_testwrite_cgr(struct qman_cgr *cgr, u64 i_bcnt, struct qm_mcr_cgrtestwrite *result); +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP +/* If the fq object pointer is greater than the size of context_b field, + * than a lookup table is required. + */ +int qman_setup_fq_lookup_table(size_t num_entries); +#endif + /* QMan s/w corenet portal, low-level i/face */ /* diff --git a/drivers/bus/dpaa/include/fsl_qman.h b/drivers/bus/dpaa/include/fsl_qman.h index 9735e1d..f66cb93 100644 --- a/drivers/bus/dpaa/include/fsl_qman.h +++ b/drivers/bus/dpaa/include/fsl_qman.h @@ -46,6 +46,15 @@ extern "C" { #include +/* FQ lookups (turn this on for 64bit user-space) */ +#if (__WORDSIZE == 64) +#define CONFIG_FSL_QMAN_FQ_LOOKUP +/* if FQ lookups are supported, this controls the number of initialised, + * s/w-consumed FQs that can be supported at any one time. + */ +#define CONFIG_FSL_QMAN_FQ_LOOKUP_MAX (32 * 1024) +#endif + /* Last updated for v00.800 of the BG */ /* Hardware constants */ @@ -1245,6 +1254,9 @@ struct qman_fq { enum qman_fq_state state; int cgr_groupid; struct rb_node node; +#ifdef CONFIG_FSL_QMAN_FQ_LOOKUP + u32 key; +#endif }; /* -- 2.7.4