From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0061.outbound.protection.outlook.com [104.47.34.61]) by dpdk.org (Postfix) with ESMTP id 6FCEA2BB9 for ; Fri, 16 Jun 2017 07:33:36 +0200 (CEST) Received: from DM5PR03CA0044.namprd03.prod.outlook.com (10.174.189.161) by BY1PR0301MB1191.namprd03.prod.outlook.com (10.160.195.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Fri, 16 Jun 2017 05:33:34 +0000 Received: from BY2FFO11FD023.protection.gbl (2a01:111:f400:7c0c::177) by DM5PR03CA0044.outlook.office365.com (2603:10b6:4:3b::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14 via Frontend Transport; Fri, 16 Jun 2017 05:33:34 +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 BY2FFO11FD023.mail.protection.outlook.com (10.1.15.212) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1157.12 via Frontend Transport; Fri, 16 Jun 2017 05:33:33 +0000 Received: from Tophie.ap.freescale.net ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v5G5WNFZ001003; Thu, 15 Jun 2017 22:33:31 -0700 From: Shreyansh Jain To: CC: , Date: Fri, 16 Jun 2017 11:11:06 +0530 Message-ID: <1497591668-3320-37-git-send-email-shreyansh.jain@nxp.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1497591668-3320-1-git-send-email-shreyansh.jain@nxp.com> References: <1497591668-3320-1-git-send-email-shreyansh.jain@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131420648137957213; (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)(39450400003)(39380400002)(39860400002)(39840400002)(39410400002)(39400400002)(39850400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(86362001)(575784001)(33646002)(105606002)(305945005)(189998001)(106466001)(2351001)(5660300001)(104016004)(356003)(4326008)(50226002)(8936002)(50986999)(8676002)(76176999)(50466002)(81166006)(2906002)(48376002)(77096006)(36756003)(6666003)(54906002)(85426001)(38730400002)(110136004)(53936002)(8656002)(6916009)(47776003)(2950100002)(498600001)(5003940100001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0301MB1191; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD023; 1:D5j3St7V6Af6wWaop+nTAJFzWHuDBpns2QjjTDgZR9dwlWhdlXMcLoyjLOx54NI9A54pByd24pnSlkZ+MirefyCeR59zMt6frTA6k2z2UyPWbW8kQMnZ6LGPtJ+vCwRkYzkDZ+ThpZdjXceFv+P+zv/4NOoLfE/25LXN5YA1HsYsDYqkJodKK6WSD7CZtQmmmJr+qlI61lc0BMLmiavOQug19piXXair2+KIBNB0r+OY/u/ongIM1Mhq9u6WQVkYL1FO7+aiR7CheJocxM2MBriKZzYq2gecNwn8WaaIeTLgctSvqaAvdQJEX55LUKD20BvXopJn0Zy7s0Nf2RZY5ux9rKJozB2w4KEYkSdpFpZK0oY3PHceVAoqfRmerleDKWWUBJ2SE840GQXrIXCDS/oX//axrOvsp0nROBUGV7fNlDJIHJwFXW2BtgDRuPpU7337N79EQnoY5rKlz04ZYzeHlUeYm5P0ICk0pvpS95iuVBET6N79JKi6eH5+Hm8Bqs8zWa2aIzq5xkaUqiFB1m6jeisQobe5cZYr8tZ4Ur2D9R0Q9QYVNRVYUPCywBeVUHWcIQxjaliv9Yw5eFLPQpuzlusQ0Lmfa5EWkcBWgBVq6b5QSwfclsylFIUIx/iG07TCmD9nOO94f8YvR6fiO0kX4LHvwoCdyZbQ1hbm2GdFRPeYqCiZ9u5Ya+NGXPlkY+pPwOKw+pHOz3a7CsPs8ZVFiDwUHKQAdQqu6IDb67g= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR0301MB1191: X-MS-Office365-Filtering-Correlation-Id: 8dd0fa90-5d67-454e-1455-08d4b4793ace X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY1PR0301MB1191; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1191; 3:zRKaXaFAjrS4D2sJion7FOS9LdxYOQZLr4I0Fo9312VHIp+uVH/ttRhQpx0B+ptea6s8RaviT3uZLmaQlOHJFuDyEWPIcsoS2mL/Cnp4nlg1bfkFUbv8eF2CPr5CGvsU7Th59pUPh3d7AVQuH8HeZDkG1uMoYdHw90sBftJgXvsyXLl74aLbbdYiHiZoWbJNw2EML4rdbQAYPt9EBNi6SovRqUmvPWPGomd9bKNm9UIY1VqdS1MpAS1ShMaK4mF8bgqe9UP5iXJ3cS+toSU2aNCg3Yyt4vw8/v+ZlOOvOrOcW/mdeqgOPBnaxglrQD1qdrba/KIdoQD8k8b+6AKuj/bkctrSzq038T/rBoEWo+XjoPsO8nmZL4/Svx8B2UOIpkPmFF5SC+pyTXaw0+IRJh83DiAUG6FjZgyIQRlQZuSLBO/qC8y2D4sW0Hz0IZ6N X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1191; 25:Ah6o+Nuk6uk43vHfrQD7cX7OOWVsLqTehbGg5AGXaeZjiYLqT3x3V4c2x49TXIUvpoSIWTZepHrGgcsQucvaDUOAYyVQXU2rRSjMGNZWL8VOPTGf+PI6nxvD7FaU4WY9GUcR+mgo2VsaIkZwoelFbcUbwiZ7bZ+e/zszjRoHnQmHXc9CmBGicieQi5K/MLCPzushuuBBt3j3QFi5b9YtgO9KzgorkJgWLVnuoyj3nlj1A974eOGNAtqsNRBU43yvjFLU3eGiAfisxkDkoTaPcfFZ0Xqp3ah6F4arj3w15g6+kfm0/aMsdFnKNzMm2r5zj96DFRdGg5PKzGk1yarDutyohHHnT1qXHUo7ZfH+inAYOPrXVhyZ0k1Y3Px4IKJzqDVYi+3zobMkyRHXhOZQ676eOsIIilJWCUID9IoXem38fIOWDyOGMczazE7pYjssZywZB84vLuzEnQk1bBdGQvWLQW12yA4/LctYIk/CuqrTwN7LPKsbKJ6Guzv+/ZsdCd46OmtXpLDg7X7klX9vFB+jwCLQgYZBtuIYjuRVlVjwqFNPKDFyL/Kf7/AvXqm2IQtcobIJAg5kuMUrjpfVpWiqA9jnC/Dv82vgjFN8Y28CyfjFM3XiaAuTibBg01TRal93SnzZKD4jJIsb4pvL68Mo4af14r9SomF5oHQKIeLXWr4Ev6YvE1ODsFhr6I6RKHiVb3vOMVfaddGvku9MOOllTmdQAomT3reIbdUcUPrQRd3eFQQkDujnwz1fMy9Z81rPWHL3co3jaIhdhYFYrC3ICP9AxqNkJh8uHm8PJcjixBj9aAz4wtOwA9IYyJtabWEfn6DdA1kkzseQ1l2719yH1oExo0RiibHz35eSFnJMJ+EcBf118ZfTs1yfHwjZlmUrGG+SFQR0veiEXrUFLvyYtiZfVeDgIWit7FfaPUg= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1191; 31:xBLu5iOBNr4qVOEdCzNXTtSxMFMrmy7a834afLOFg6lrqWzIMwS2ZPasqgQxJMwuSrkyIZiyfW6VmlSG7EIqyT/YErgdwZHTZip3nEFaDBtipfIjdlEEGKWHg62s8G9GlNy6Joq/UMr5zSz2nQIR1S5oAx4ewRYuniNc3RLwRelEVH5cKNcURKhErAxSEvGIH/5HmOJqIPpjCe2Zsgnufft3+vfNjYYIZJofryEyyoK/Us6+OnRCmDOZdqyoui4FlWdaM5tnv4IX3OA3C5I+OXCO16Wq4WU2AnP5ABjxP+LNLzPpvxF1MNmG6P8OnsqrRDNoi1jpsfheWAmPb9aYFpCgrt3RtzRs4Y4yhnO5jQPiWILf+EXCaCmZrOA5MtyJwnqhdDqlkcqsZ3wzPRSAbL/kdzhNAfLgrdHcaIs3Phu0HeWgIWpj2KpPC5/5RcLv60LbfS1gxJAOyH0zzbSQpbk46fGfBDFYcn85tunhkVaQWt4/kzdokjQ62ts43qNzAGlFS3zBH8VlLcxO3CCLBm9uckME8n8v4d/Ua4WUGaNU+L2nhWygHV0Fsj7OeFH63bdmja3jDbVz0Q7qacM3hYYGnGb/YwNo36d3H9gznNPMuPYIMFTSXz2kpZkv1yfqWsSK22NTEbNeSSWfGC9+OrL9DsmuWWxUj1gPFGjbm4GMfzV8jIYLK/DJKMH1tqgJz97z3qgXIXMot0Oe4llsEg== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(5005006)(13016025)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6055026)(6096035)(20161123563025)(20161123556025)(20161123565025)(20161123561025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123559100)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY1PR0301MB1191; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY1PR0301MB1191; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1191; 4:/Z1rpMIct6b2FlbhceZ1LPo5G+pjc9Gay061iKgt?= =?us-ascii?Q?6kZ0LeEKiPTekLbjbwJnq8tuyIo6LxRqf5lsOEJEQkYtHI7GvIeIk/RXY9lI?= =?us-ascii?Q?Qk0zi3ccRhk93GbOW13UPm6jnxZ7bgdOmbvFpvIS6djPnqHsaGzUZBYi3BdG?= =?us-ascii?Q?ZS3rOm5KrkiVQNw0L79u6H0q7E5vHHMgOntJdEdskb5RmTXbOzGwYky+cwQO?= =?us-ascii?Q?WoXN/JNUfffoumJRQiI79q+QxDoGQE1x2U668ry0Xd4QbnUhBf4XCwoQPNTt?= =?us-ascii?Q?pvPnsOngnBEwbphhJnfec2r7PQy3MjsBZMeqga446idt34nvqCyxAqZSljSm?= =?us-ascii?Q?myG/OTKTICGmdWogaF5cfqofn6xKlnNpw8VXMHzCyWnGjTwAPSIrApvuhdUU?= =?us-ascii?Q?8IfX+I2R0P0xHPNN9WnU5q1RcAja5QfYShiPDTjxlfcAd0AC/hiFs5eJFsgD?= =?us-ascii?Q?53ANzKji/fcrnekV/uQ/gL7CnOyuS83Yr0AVVef2vmII+KS6+L9sI1t05/sM?= =?us-ascii?Q?WbDHx0pdV0fbVpJir73boLfvnw+4wezidUy95QOhD/d5vfKfpYN3B9kU0+gO?= =?us-ascii?Q?gdSx9jLxdeBnqoaXJjTKXfxHBVkUIbLGp/pDGwq0Mct9G9K+uhuL2Ec6rxjp?= =?us-ascii?Q?ZVHdq0d913x2JK6QFkYzwyyvwpndi1XThod80Besku8aizkuwe8241V7NFR8?= =?us-ascii?Q?SydTVFfcfyitnYii1s5ZXv7hJ7kNmNrw4jHjeTBsvhdZzKIb7hPJzU5HGf5s?= =?us-ascii?Q?cehxUkM/OxiSTOhnLACd9V/It3rbyDcBEMy0itDhaKsUWJlXMCsVinn1Rmy8?= =?us-ascii?Q?CAsR4r13yI1qVYBo5b97FkWAHGddjg1iy0YRxRGqTsAIxdoeTMUBhtUFgKU6?= =?us-ascii?Q?8M+H21bXIjECi9nQrXKIEksPIUKkhm+TbhNwcxNovoPeeFAuqoT5RWrMDoqz?= =?us-ascii?Q?++0l9fOaeWmakN+3mwqb6hIh3WgJsCRvLj6HlmplxMJx3MPou+1eWBVA2vPF?= =?us-ascii?Q?BS/O8+AyEPTPCmgSKVnODwTiQjTDLochSg05JhpCkuAWjTnhMUnoThTKajLN?= =?us-ascii?Q?8hHCuu27ZVaQPmUGiTPaOpRDiDk25TnriiEJXmTuhXnWmE1MYJWOwAKzWKys?= =?us-ascii?Q?f+Bbb1GG6VYQgl/0pBShvXMftH/dTowAVIYuJHsxwWMuRFJncjgz8VSHxyth?= =?us-ascii?Q?6zlOi5vQm+4nbP+ehUHfCaLheiUwMsqKe45kSiPHb1sVwPI/0F5ppV2LKkVK?= =?us-ascii?Q?b/YVkYa+LIU1kN+qsFFKiR8fG3TwrbEMOQIhTeIJ?= X-Forefront-PRVS: 0340850FCD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1191; 23:pZucq73FT9LLYg1Fk91y3P0PpizZvicMvLjHEgv?= =?us-ascii?Q?5amo+sDDzJDf2w+sL6ZrpdNTFd2pgu4yTRSkWzHdQSS2vjAhcf814LgdCt7v?= =?us-ascii?Q?c9uff5BEsUfMrQTItp6sAtJBkcIG6ktMbHa6wWjiUNasN+ySwDGN/E8m39XV?= =?us-ascii?Q?xobo+S/ikSUzv2wS7o/ur7zGrxIfP7mT5LZOU0onZwQjeAivYwrLADCZpKxx?= =?us-ascii?Q?jEZfhvquvkEXsGJBMkOtOtO3wlmcOegkBuUrFgLb/QJCjfhHrLuQZ7mUOp2T?= =?us-ascii?Q?D7qr0W5KOvb/42zB2+6fgsRVivcjWZb1CL+aQwjnAD0mWUgJKRNiq/wJI+LE?= =?us-ascii?Q?GXd6cTpGj5aNSlXURME4lLacDZu2/ognoP+j/rBIzCC9IEChzU+IYzLonFom?= =?us-ascii?Q?9zW1ig4RAl91hZv08VdUPaqFg2vxdjJv/N/VJy2aKrCjoCJAsWmqdypmxsIO?= =?us-ascii?Q?ue+CC13VWx8NU1MFYGIk5/BW5HNuczSR9MP2eKBtAEqOrIUnMN1EnVvi/O9o?= =?us-ascii?Q?j7Fo3uvhquUfQX9TuhyTX+xy5t6XkhnMXOKKjLgyRmDj9qs4NKhxr1QsAYCy?= =?us-ascii?Q?xGj8V3FuYHC1/z4azQx2qeHklKUkRHwGBZIEviRzezJDFXouvcvIPEZHcRl8?= =?us-ascii?Q?108wk7cUnL5ub4KvOwdMH9YiV/hSSZL2qJF20o0F3V62bwazqaHaWdLEBtIN?= =?us-ascii?Q?AiXb0XvYilCyTi88F7Pm8PL5PCpABstQ5qnNJPqB5fgG8LmdQbXk9HHP8krb?= =?us-ascii?Q?ke3tnJKcfDbxXOLpaUuv9whaRdXW95ZqY3bMPLWhCTTlro3+U4L8CgrshzHm?= =?us-ascii?Q?oaC1zzppfeByMNclYBaVfQWWMKH9prX5pZsrehhDfa+n0kV8YfLeRA5ZQ+ii?= =?us-ascii?Q?evIvx/gutwjI8kMAxOm07tLktpHB2sNrLS2idwcwWcYSpnicEGwJ8SdZ7hUs?= =?us-ascii?Q?sQsuWTE4Z/bKl33zqCMSPDnEYmzM50YjMcjejVbl2vrBZJMguk1ZNjssP4I8?= =?us-ascii?Q?4PrdaI4TXYDZ2z//oGYEiU9q2XZE9F4tER4ShdJQluC79t+jbUXHBkJ6AG4m?= =?us-ascii?Q?Xv1yXPR8irHnnf6z7oeen2J5LDqZV+VK3lpOIRzv8jfa7IpaIYlDBe8SQpE2?= =?us-ascii?Q?0yRmoKgJUUlY+6/ZeOLr0FApBKGeXNfU9rqVbvYP6HIQb9oKFeq6nU4XRiGy?= =?us-ascii?Q?bhi7FdrC6OpZHU2/U9CdkiRb2Dv8K0XxuVAHj0YL4H0q7NfpwFOhIfZzGMNH?= =?us-ascii?Q?KTXZoVpxl27k4F6hpkRiW8HPSwu+C7LwLMTq0Av4o?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1191; 6:NPUL9uXLsQUrCCMvnK4t3FZJix+KdLFSdvTzO2Ud?= =?us-ascii?Q?6ic/pOSgxpOIiwbhkpnOqqGWDTGId1x7HcbTKs8F15/HTUVRlhGRae9IazeS?= =?us-ascii?Q?ynBBtTtfGTIqyMNFIAl4qbeog1wJYGgvz5SdbDIUswyEenvSYi1by1sVzufp?= =?us-ascii?Q?/KeZZu8g198Nm5Xi/a8BhqBEn0oc3iZ9YLIvozr4K+yXE66TJaeCbt5rCI6V?= =?us-ascii?Q?gU7d7BstADneyNoUX9KYqlmks5ixJDadkJCeqEaLHkCIUWtkYZ+S1+D6BHjk?= =?us-ascii?Q?v9hce5e5YP6HMUnHpCdcGoc058AUzy4Y2F+5/D1H0cKhFRqT8jbostpUZ+eM?= =?us-ascii?Q?Fh/hIHjU8TVLhjv6FGh/P6K7d1T0mCe9NtPgZkPLx/dXzEy0itr6XOfUpv74?= =?us-ascii?Q?6BNKcDmSkWtAQSZQ0HBNQ0eR6OLZO+q8p2n42EyTeu3ORplmQ9cHk0Gdl4si?= =?us-ascii?Q?dmxYcCVlW8XpX58wV7/0cdBkqJ4luQWQDSbiKcaLLn6ho4b9du/a16lI8WQm?= =?us-ascii?Q?zcZK8WR+xUc+rgi+7XkzS+GIdz4q/4Bxr1y7SENWIAVDprgH6H4F737mWvki?= =?us-ascii?Q?zjmJD9+asDAc8HJ728nAXlwdt6sm4HUjF7LcDlFtd3SGK658hmbwZqpw89JE?= =?us-ascii?Q?6ldzLOMCvpSDADz+2HzzZ76Wtu02J4PEGRUV0xKmcdATdRRri8tlAzrPnfdL?= =?us-ascii?Q?s4kyw13dVXKYoV2mT8jXOUN13EKU/xovcx22BkrYYcmQd9Xa5OF+80Or8yxD?= =?us-ascii?Q?7yrlk2rNr16AQhUETTGpDuZtK1LYVRRn2EPy+GwjQoTfIWZEXiN3UXeYMOrA?= =?us-ascii?Q?pjB+eKlF8zIIWiEf2dTrkxpIxbg7Vf+M97XkwhPQZuqSIiOPv9jKYlWal+WW?= =?us-ascii?Q?oYOAYEFa3aKUrJ8x36de0HwdpWyRMBny4XUPtSijWgXa/30LB5rU9UO8toIw?= =?us-ascii?Q?QDJZinNkSjniF6tEBhecTdco72zG5Ms9y9erHhVR+g=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1191; 5:y7l5d0dde9OTa0QtOVMWAdcE6HdSPU+5ZbW6jYh8zcjyGTso1En6HWiH95bPoR2sce8mhpLhO8bytQic2CDz9OoUKga7SaXWdtGtkaXlh7QZHOL7FnEekueDBBuIqNdR/AOo7ucv3l8sIkJ3Oosde4YJLyQu6tF23oY5klm3dx2jLVEtTPVyVy0+cTBx1I7I9t4bouXPn2YB80fB8s0BXT1ivegnIklc4BwD4moDJQnTiV4YiEs2rkvpIUsg7IcT1MEGz8u+HXId1ni9zuvomnNWz8yvbnGL/sEE741ZXh0h0vvOM6EtapdJWwnGuJHOTTMDbAf0pBPv6KHvkm/4iZe4pgrSpTzWfajt29zLRFnkGCOYvBsUPdRL7f1emLeaPB92q6A8C6Yg3vhbnNqeZDn0RQ7Xac0f+iMjyZjubCNZ986gcxLUXma8KTLruZ47t68GwqU5ELe2fY1crVQQ7RM8DQzXII0Q5cRfOZQM8HVWlfBOczE/lYmw9zKmmoqzIkmyjiraugV/FJtJyZxXaA==; 24:THl0LJF/t6mdm3YwvS9vz+D63jj4E19hxF1Isge8/bOl+pmfYabUwbZbDVSczPeXl+gI2VK4vfkp3XPDA0KP8E89b4IWZWqSPZzYfea0/cY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1191; 7:ycDcnd2Gh2xWuzHe++8oeAF7xCZVx55cm+cwpBeSsx7gnQJntnD7KnPlyL4MaQGQEKCDQwYEZrnAo0iaN6xhJH1gdtV2lRZN6p0rbJd+d3k1LpiFAQfzLJDXkl49EjpBf1HHVAJrB+W+OYjQdncboWvzEfLIwWldV9D3tb9/KaV99z02y2hdgxQqHZFY/81xpk1kSdWvFavtBwzYgHukNoRyBBYnq3TQcWzx2MwgFy5DEx19uBoDHdj2etU6bvSdEaZQafXMVaWzdf6VOhZTYXsbb0uy2OPvoUTblIRncee9m+aCB8icWnsMq3BE76DcfGTwBhHcfLtkjreCvON9bIXqazuFsP9EX26hP118EnKvg7vIRbfgbX79ReO8aw+aQ/3iGqk22g61VfHv2oJHkNweWYuSLzOigUsN+nfXD+z9OEF2aXcCXrmvfqf0Yyq27x0g/rv4eYJt/UBVFcYbep58AJ4tUCN+evfTVGwzrz97QfVv9PXzIKkraIsEfDMoOeQZDqWAGpnaIRxd5KE3ZktHm8SEuVi9p93t8PybcmkoLGB9ml4VoMd9KlsZHQ174dSOUEocQY9dcfsBPXVjbTxzuUW3dSBgF5SsWuKP20n9SE94GJmH2yMgGntc07w3NmNdV9RFP3uJzaX4VRR2DFPcFHaNliqrqhKGPiI8u0d2jz17beGgX+Q4i0OWwEojacfAKchV54v1f36/DagpdRXSoO/A1KOudXL8AdRuv6Pjif3C8xLMBrxdEZwGc88gMTB+6dIwAmzimP2Dbg3/f0Bt9vdf1t0MFxTXYVs9FHY= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2017 05:33:33.4525 (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: BY1PR0301MB1191 Subject: [dpdk-dev] [PATCH 36/38] net/dpaa: add support for checksum offload 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, 16 Jun 2017 05:33:37 -0000 Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- doc/guides/nics/features/dpaa.ini | 2 + drivers/net/dpaa/dpaa_ethdev.c | 4 ++ drivers/net/dpaa/dpaa_rxtx.c | 88 +++++++++++++++++++++++++++++++++++++++ drivers/net/dpaa/dpaa_rxtx.h | 19 +++++++++ 4 files changed, 113 insertions(+) diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini index 2e19664..c8e3561 100644 --- a/doc/guides/nics/features/dpaa.ini +++ b/doc/guides/nics/features/dpaa.ini @@ -14,6 +14,8 @@ Allmulticast mode = Y Unicast MAC filter = Y RSS hash = Y Flow control = Y +L3 checksum offload = Y +L4 checksum offload = Y Packet type parsing = Y Basic stats = Y ARMv8 = Y diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c index 4d2bae0..da14a1c 100644 --- a/drivers/net/dpaa/dpaa_ethdev.c +++ b/drivers/net/dpaa/dpaa_ethdev.c @@ -184,6 +184,10 @@ static void dpaa_eth_dev_info(struct rte_eth_dev *dev, (DEV_RX_OFFLOAD_IPV4_CKSUM | DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM); + dev_info->tx_offload_capa = + (DEV_TX_OFFLOAD_IPV4_CKSUM | + DEV_TX_OFFLOAD_UDP_CKSUM | + DEV_TX_OFFLOAD_TCP_CKSUM); } static int dpaa_eth_link_update(struct rte_eth_dev *dev, diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index e2db3cc..eef0d49 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -195,6 +195,82 @@ static inline void dpaa_eth_packet_info(struct rte_mbuf *m, m->ol_flags |= PKT_RX_VLAN_PKT; } +static inline void dpaa_checksum(struct rte_mbuf *mbuf) +{ + struct ether_hdr *eth_hdr = rte_pktmbuf_mtod(mbuf, struct ether_hdr *); + char *l3_hdr = (char *)eth_hdr + mbuf->l2_len; + struct ipv4_hdr *ipv4_hdr = (struct ipv4_hdr *)l3_hdr; + struct ipv6_hdr *ipv6_hdr = (struct ipv6_hdr *)l3_hdr; + + PMD_TX_LOG(DEBUG, "Calculating checksum for mbuf: %p", mbuf); + + if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) || + ((mbuf->packet_type & RTE_PTYPE_L3_MASK) == + RTE_PTYPE_L3_IPV4_EXT)) { + ipv4_hdr = (struct ipv4_hdr *)l3_hdr; + ipv4_hdr->hdr_checksum = 0; + ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr); + } else if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == + RTE_PTYPE_L3_IPV6) || + ((mbuf->packet_type & RTE_PTYPE_L3_MASK) == + RTE_PTYPE_L3_IPV6_EXT)) + ipv6_hdr = (struct ipv6_hdr *)l3_hdr; + + if ((mbuf->packet_type & RTE_PTYPE_L4_MASK) == RTE_PTYPE_L4_TCP) { + struct tcp_hdr *tcp_hdr = (struct tcp_hdr *)(l3_hdr + + mbuf->l3_len); + tcp_hdr->cksum = 0; + if (eth_hdr->ether_type == htons(ETHER_TYPE_IPv4)) + tcp_hdr->cksum = rte_ipv4_udptcp_cksum(ipv4_hdr, + tcp_hdr); + else /* assume ethertype == ETHER_TYPE_IPv6 */ + tcp_hdr->cksum = rte_ipv6_udptcp_cksum(ipv6_hdr, + tcp_hdr); + } else if ((mbuf->packet_type & RTE_PTYPE_L4_MASK) == + RTE_PTYPE_L4_UDP) { + struct udp_hdr *udp_hdr = (struct udp_hdr *)(l3_hdr + + mbuf->l3_len); + udp_hdr->dgram_cksum = 0; + if (eth_hdr->ether_type == htons(ETHER_TYPE_IPv4)) + udp_hdr->dgram_cksum = rte_ipv4_udptcp_cksum(ipv4_hdr, + udp_hdr); + else /* assume ethertype == ETHER_TYPE_IPv6 */ + udp_hdr->dgram_cksum = rte_ipv6_udptcp_cksum(ipv6_hdr, + udp_hdr); + } +} + +static inline void dpaa_checksum_offload(struct rte_mbuf *mbuf, + struct qm_fd *fd, char *prs_buf) +{ + struct dpaa_eth_parse_results_t *prs; + + PMD_TX_LOG(DEBUG, " Offloading checksum for mbuf: %p", mbuf); + + prs = GET_TX_PRS(prs_buf); + prs->l3r = 0; + prs->l4r = 0; + if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == RTE_PTYPE_L3_IPV4) || + ((mbuf->packet_type & RTE_PTYPE_L3_MASK) == + RTE_PTYPE_L3_IPV4_EXT)) + prs->l3r = DPAA_L3_PARSE_RESULT_IPV4; + else if (((mbuf->packet_type & RTE_PTYPE_L3_MASK) == + RTE_PTYPE_L3_IPV6) || + ((mbuf->packet_type & RTE_PTYPE_L3_MASK) == + RTE_PTYPE_L3_IPV6_EXT)) + prs->l3r = DPAA_L3_PARSE_RESULT_IPV6; + + if ((mbuf->packet_type & RTE_PTYPE_L4_MASK) == RTE_PTYPE_L4_TCP) + prs->l4r = DPAA_L4_PARSE_RESULT_TCP; + else if ((mbuf->packet_type & RTE_PTYPE_L4_MASK) == RTE_PTYPE_L4_UDP) + prs->l4r = DPAA_L4_PARSE_RESULT_UDP; + + prs->ip_off[0] = mbuf->l2_len; + prs->l4_off = mbuf->l3_len + mbuf->l2_len; + /* Enable L3 (and L4, if TCP or UDP) HW checksum*/ + fd->cmd = DPAA_FD_CMD_RPD | DPAA_FD_CMD_DTC; +} + static inline struct rte_mbuf *dpaa_eth_fd_to_mbuf(struct qm_fd *fd, uint32_t ifid) { @@ -363,6 +439,18 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) } rte_pktmbuf_free(mbuf); } + if (mbuf->ol_flags & DPAA_TX_CKSUM_OFFLOAD_MASK) { + if (mbuf->data_off < DEFAULT_TX_ICEOF + + sizeof(struct dpaa_eth_parse_results_t)) { + PMD_DRV_LOG(DEBUG, "Checksum offload Err: " + "Not enough Headroom " + "space for correct Checksum offload." + "So Calculating checksum in Software."); + dpaa_checksum(mbuf); + } else + dpaa_checksum_offload(mbuf, &fd_arr[loop], + mbuf->buf_addr); + } } else { PMD_DRV_LOG(DEBUG, "Number of Segments not supported"); /* Set frames_to_send & nb_bufs so that diff --git a/drivers/net/dpaa/dpaa_rxtx.h b/drivers/net/dpaa/dpaa_rxtx.h index f688934..b1c292b 100644 --- a/drivers/net/dpaa/dpaa_rxtx.h +++ b/drivers/net/dpaa/dpaa_rxtx.h @@ -41,6 +41,22 @@ /* IC offsets from buffer header address */ #define DEFAULT_RX_ICEOF 16 +#define DEFAULT_TX_ICEOF 16 + +/* + * Values for the L3R field of the FM Parse Results + */ +/* L3 Type field: First IP Present IPv4 */ +#define DPAA_L3_PARSE_RESULT_IPV4 0x80 +/* L3 Type field: First IP Present IPv6 */ +#define DPAA_L3_PARSE_RESULT_IPV6 0x40 +/* Values for the L4R field of the FM Parse Results + * See $8.8.4.7.20 - L4 HXS - L4 Results from DPAA-Rev2 Reference Manual. + */ +/* L4 Type field: UDP */ +#define DPAA_L4_PARSE_RESULT_UDP 0x40 +/* L4 Type field: TCP */ +#define DPAA_L4_PARSE_RESULT_TCP 0x20 #define DPAA_MAX_DEQUEUE_NUM_FRAMES 63 /**