From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0072.outbound.protection.outlook.com [104.47.32.72]) by dpdk.org (Postfix) with ESMTP id 27C527D6E for ; Fri, 16 Jun 2017 07:33:37 +0200 (CEST) Received: from CY1PR03CA0033.namprd03.prod.outlook.com (10.174.128.43) by BY1PR0301MB1189.namprd03.prod.outlook.com (10.160.195.148) 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:35 +0000 Received: from BL2FFO11FD015.protection.gbl (2a01:111:f400:7c09::158) by CY1PR03CA0033.outlook.office365.com (2603:10b6:600::43) 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:35 +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 BL2FFO11FD015.mail.protection.outlook.com (10.173.160.223) 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:34 +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 v5G5WNFa001003; Thu, 15 Jun 2017 22:33:33 -0700 From: Shreyansh Jain To: CC: , Date: Fri, 16 Jun 2017 11:11:07 +0530 Message-ID: <1497591668-3320-38-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: 131420648150996390; (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)(39840400002)(39450400003)(39380400002)(39850400002)(39400400002)(39410400002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(2351001)(50986999)(105606002)(76176999)(47776003)(104016004)(6666003)(2906002)(5003940100001)(33646002)(106466001)(6916009)(498600001)(2950100002)(110136004)(48376002)(86362001)(38730400002)(85426001)(575784001)(356003)(4326008)(5660300001)(54906002)(8656002)(36756003)(8676002)(189998001)(50466002)(53936002)(81166006)(305945005)(77096006)(8936002)(50226002)(83323001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0301MB1189; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD015; 1:ldZHgrSzz5BL1TFR+xPqUCiQZrz2wIcuY+UD7BAk7qRCaNqfmKhslDjYYKca7GaB/JNDoteGAJkF2txMJp6BdyYhnp8I25MPyAGS89zuwTRocfdEEKMCUeR3BvadjGBSxsUrIVBEONkkySsWrg/JE3wdW90PWi+XduvfoWfzoviZFXyt/Y6pMbNyDUEpbUpyB20YDS9DSRNtBy/l1T+h/oeIhS4+ALAhOj2gLH9KQkVWRzG7WSJFjJAay5WwRVZ7cBYWe7xQlU2hqRb+GjSiqENJePjtk+kmu6r1RoCIfTqwGtwSkWnTi6nY5Wnh8ktvsXfTjfOjvLwFDEucEdRel667Cmo/KWSjiGL+imjG4pIZuMIigtsmGrAAXVDuIhqT3EY8DPVJq3GfsaLkkwZ+pjN8pRBtqsN+T5fdhkJFMmL6nvIYiDdO7xdi1NU+kfBpFSaJHkYQew4XmUbfQ1SHfnSsQ4xT5XQYV3A+mMge3tZlyBNJ1O756t/2g9nL8N1YFyc+Arrpf29W3GQSrNEJDV/l2pArDR05BclSr5CGPr/NrB5TckkSgUp+n37z5SV10pcSz9QJwtIZO63DFi/V8zEGc7eOXtozY7FAOGfPJ/ymasyGqThKo1+5OpOJPwjJIcN+qKovXv2V0EXayzlydLUO9U0kyYkOMN52w6WXLbGGeOCl7CtwXUIP5bc7hDHAlGFF2A82LXSNyCbDjP++o77EcrAZUh6grBzKrLmrnAc= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR0301MB1189: X-MS-Office365-Filtering-Correlation-Id: 737f9704-6123-4d5f-15a6-08d4b4793ba8 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY1PR0301MB1189; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1189; 3:2ccFpeuFUBMJ1J1Bdf9kpZgm3K5W0+V430lWovmTrN7Emb9qcHZcRAjORqH61KXlBBzNFKKsYTLpNtTK7Lb644QlIjJ4pV/Ezf/q7HDrjNG/km+HzdZVjOawG+tpcl1xkJCyUzmrqEbNKVv/DcY97Y+qpDuxKWNItkNJyWpjtuP25BIS/jq+RpNGAPw7M3g/mfGU1E9YdhFu9Q57I4tL7Jmi22NtVpEvKCMHbx7IIu4n0qDj6lqek/X/2uQU7KHBCxZL43oqKAqMg7kzDDP5IvyhqUZcMdlZ2g9QzO2cKWoJIlsZZR396WHl0T+VULOMZ03H1EMpcNtBYkmgzlip1t95CSrQ6grBWKpSTJ5kLIk1vDpsEKqYQrI5vpTlcyvcNshjaZB2Sh1EsIAGEwC3zmJEvOcW0f21RZW+qgPNKNCA5QxnhO6t7M1vRALSYeMR; 25:pm+lgOL4C+GQdSMM8U9lzVD/tP/AFGysWT03zoDpCIEjioWIqjh5j+lO0RS82RVwxwpkNkKq7lVw1mfdHPBjoBDNz/S5Nhwt8v88x+aintC9oSDoO44UB1LuehAFhiOGdHZV4smJVPD2F2BXoXjVWBh3RbRszl7/cPqtikf5AfvS6ezsuTQXq9/pgGM/zFYuN5hao0WcggarliDr9+duNFDOT/gjry/e1fg/+h08LtvHZSdFabQIc9c6i3rNZnkyXNZpDbYnls3N8w+LHffNg91f6p3ElkNkKM0NpHGcqi3YiVeo8tMyOaX/0Hb4csIck0uXlMpaes7X7tjBo6awXDCAVJvM9+Wh4l93qaGFdq6ORxSIqIvcq7LOHa2LCBencaKPha9/Iu8VHLVliyKU0d2N5KPh/0X/oqA6UeXsCJycjmhJvKFfCDN5KBljlnIbyvav5hPEtPDJrPYEtt8G5gu0cZsXdFSWfPjYsn1X4Mk= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1189; 31:0kDzpBFA7gFYg7WHwnHxBFMRh+Lo67p+nTeKPlzBfqWqrDIIGTAKHKCAZOEyDpUOAeaabgq++ArWhl49CdWE/qrq/EHflUaHlmwLY0ZRzLQ9rEN3X4nB95BhW2vFf6mW49vRbZiOaMk60QRqZq2BGu7bVxXs1nzIj4C4VRwwUMjM3Oa8i6ldK+Jmtr7IhZM5kcWCGzWo6z30WPAqN9+c76WoOlshzFs/SNEJ1IEfHLy5fUPDtHlj7JKl7mw0alFPAaPECiJGETHocGR9T9+3+A== 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)(100000703101)(100105400095)(10201501046)(6055026)(6096035)(20161123565025)(20161123563025)(20161123559100)(20161123556025)(20161123561025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY1PR0301MB1189; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY1PR0301MB1189; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1189; 4:5Km+fQWretAN5tS3n8tRA08rQX+pUJAPDGm+f4Rk?= =?us-ascii?Q?A1lbJYwWXIF7GJJPf3Aa8JUlezD8E9J5ltDa4t+qbqjEGbYkyvE8i1lY7j74?= =?us-ascii?Q?QKr2hHOm3eFAmJJjZx2R+WkPMJ81krBUg6EdgO5GQ1Aqy54e0ri5I2fPeOo5?= =?us-ascii?Q?wriUsgtpBnie25+OGgnv9CXzK37j9sRxcbevdORXCAmRjBFgc0U26uKO3Xyt?= =?us-ascii?Q?xia69/hQShLYC3sFo5z9T4805uHcQCVAkEkRMN8nbp9efsYOMCcTXmXsCBoS?= =?us-ascii?Q?/3wwnk5YFXrcJm3c65Klasb7xKrtjzpeR3f42lCCLR3HICHN2OXJxxBYFnq9?= =?us-ascii?Q?0tkzjqWI8TZzKopmYh/PdM8leLydvY/1m9XlvoSOosEnG9ipfgYZxKzUezc2?= =?us-ascii?Q?oD82+ln5pfDAl12mJpGKo+hm6wOCWMOEOlDtjzC+StbP/bCY+aFLrHG2tV7a?= =?us-ascii?Q?QhOEckK92ygKEqa7IMez90qmTB3MLtZnHcYEzCUDzpXm05CCttkd6Dlg4Mem?= =?us-ascii?Q?cZuxjGHRPv/N2K6FR20xGIq7qBH+zwUapS/TzhR+XM6JiRxdqxFY4+Sp29Xb?= =?us-ascii?Q?glHl5tKSudjjxPb8hcVzYSAxduiczEnkzX9vpTkA1deBNjYKxt55vXM1SFy7?= =?us-ascii?Q?GMFww5qgRbbENuqxzdA7i4dcnTlZnTWjwUTF0/FNG3hq4NrFHGH/4SXnM9s+?= =?us-ascii?Q?2RiD7IfcCtPtyChhvcTOJtu8owo5hWXsB8JEkWwcfxu8xGf4kQSWwXPiJiAo?= =?us-ascii?Q?Z/429RwVrBZq6/6udgOz7WegjMvvTGTnrD4IjQoVZ88vf+pfBp/f6+WhEOQa?= =?us-ascii?Q?5FJlyoZ7eosSDrzQ8E5cXisFFXcSRNQ6yMaz0IQEH+E1y0C9X623LKlSIc4s?= =?us-ascii?Q?dj5f0wgKi6QUXryzUc4Tacw9Qw/6p2KAnkqebfPmXPNK2fiKFyneuPT8OTJh?= =?us-ascii?Q?gzRgw8/Q7QeL3kNBNk6nEE6jmKf0wrb6+yAcHxCdh01jYmueNgvcvjPDYElJ?= =?us-ascii?Q?htosHOd089xcoE4kf0JcmfyPeDK91sDZTIGz4PXhXprAcyTC4hQj1ndgu4Hm?= =?us-ascii?Q?hEg5olL7YNNZ7TahJJRtdbHRnf1G3BjZO5QbKfH8ThN3Mxwy4sDS4SHlj9RU?= =?us-ascii?Q?VQ+syT/eKR2kKGNgRd/h8YsvB2TauwEAfmu+AQJhhymnf2CGfum0GlXyqWPt?= =?us-ascii?Q?usD5R0PGQnVsrgyJ4AZaRmtSZ2nl/NB42J0G62tnThDAejzXala4S+BN0hUw?= =?us-ascii?Q?aaE8+eqIOsy0WYzj59w9dkOoBIqR6mVMrP4KLbwm?= X-Forefront-PRVS: 0340850FCD X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1189; 23:gqilQryRL1EL1VHewAzv//h8mZp6mTbHNtrMiHe?= =?us-ascii?Q?X8V1/bNY6FC8ASt0MuJkD5ojDTITw4A9I2nGLL1lQB7PW1aARFyGUrYCSmIG?= =?us-ascii?Q?QpwEF6AojFcIrq5web+WWsYKKLpbqg/zTE1FLTMJ3VHXCTH5WEaTEx51SNlO?= =?us-ascii?Q?4olcvK6V/Ca21H/WY7Cent/cuT27xDbVMj04f+GDIfImW86uLWEoFzIogPDz?= =?us-ascii?Q?TudUWJdDhX/z30ZOrleO070kCrEwW44g771JIOPK1z8nZRDJjj/jFUuDHyCf?= =?us-ascii?Q?GUiZiN54wREf54/tw3lgD9keErLy9JGCod1We6djmUAiXiu/5WqsegKnIf23?= =?us-ascii?Q?d6CKptNN+KIJN7QWDqKoPfXravhXQXb/e30M+YHDp4jern2Ye0V0b5fpa0ty?= =?us-ascii?Q?fcF/ZggaqH1Kpz6UKCM3JHVD9TTY5JrCzqO0SmDoPsG5ujVQ7hCejEKpQrj5?= =?us-ascii?Q?OITX9VlbEsjdxSjSFsx65mkiA6buuT1bFGXXAAbOwR64wDXGe92gfvF1Eoxz?= =?us-ascii?Q?0tMFuj5EbGcGAeaw7f/dApEBRtD5RVlJjfbZ0BZvbrKonrfasNqTOFkl/u5x?= =?us-ascii?Q?B+rb7iQSZM5S+nXpCx77ynek9xVKiQlr77pLkXL47xuYOqVOBLHNYHu+DRS8?= =?us-ascii?Q?sWYzo3Gl3bKweSgngoLFdJFVFucmBYbC9hRqGCEAD4PCTkRvGYud+kbwyGOA?= =?us-ascii?Q?0fGRhSkroJRdYGBKs0JYwvGFTG6v56A+IVI7j+JG/F5+IMoTh+kQwVBDedoH?= =?us-ascii?Q?UZDiRRGZIIT2E4Bj10VzaiKKiC43VJlJLRFnp1G0ycsVMT8Dbc8qQmIJsbA9?= =?us-ascii?Q?XX0eJAoRhp1oWfWDHYf9tVB0nyT/b9oHKswkrKr7YQIYECZvSHKX2vXBxe2E?= =?us-ascii?Q?WYCbSSWFrB8K2C4bKYOFNJbb6mn/jOBmrpmDDw1YTZCrOrKXMDTBYTztwoKo?= =?us-ascii?Q?QOB3w/7sML0/YL4BrsPxqLSTII1mQZDUzUYD+c65LeqP/W4WTwkbfjlxTBfj?= =?us-ascii?Q?Wf+DT0OkuutBexy6C+kbfTfgmlnYnajOCN1VxMZYAyLmCWcKtfsMBZftQ4HE?= =?us-ascii?Q?UkmnIqqhK1pnc/7oFgXhyH+ucxjfl1J1QLICIbPx0PDfplvo2EthYvnj9R0K?= =?us-ascii?Q?OxrPAaKziblgSCdXAx/TLjxfC230MLYL12UJ1GGm0HAEQG0OZ8n70TQvFk6Z?= =?us-ascii?Q?mm3F7FEf40GJzuN6XOlHBbdGYxKz54uVBhpuOLlztsRU0POH1iUT3YB1IJIN?= =?us-ascii?Q?RZY0vc9ZgiWXPHbRpkJB+8w8GtkF0z06bHkYqwnpgENfYOXRePO1Y+xRa7yf?= =?us-ascii?Q?OnQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0301MB1189; 6:wgeO++LkNrTcoYpsWweTuTg+oXN1CW//zyVeAnK8?= =?us-ascii?Q?Zarkm2ONj2LsVbZDrJzjSvIBFkPKisyWYudncAGLAqeNusFeNtFoSGkGc8K5?= =?us-ascii?Q?UnQ0iklyiEsrPZCFqDi5RUjbDtzX1rrjo4/9SfFvD0136gAcbzXOzlLyK64q?= =?us-ascii?Q?KsOi3g8FzZeoHgZ6iwRgJ5X6Ty1B8EDUgMugZw7X4ve6tCibaRxM8d1J9a8K?= =?us-ascii?Q?NkknODSorVICVTJ5qmb03LXl2cKnfUL0EETBorMT4ksLMLPLt7V/gBOUGRmh?= =?us-ascii?Q?13aoR2v3jtAMD8ejXND317FsOo8UYsXPgxQ8CbBEDCwleS5MEzBRW692WjiE?= =?us-ascii?Q?0dFIt8q6upJIcnZQnEWsxplXAwfedHSS9dq7EGlQjuiNJTi9lv01iiBzhDm5?= =?us-ascii?Q?ZPIgzGzmLzXndI+kr8sMX0eUPTRM0mR/XilDR0VC3rJj5fwA2KpfZ+LmPvbL?= =?us-ascii?Q?3QnBvIXvSgDWpklZpCK9+J1D/3fBqiYEafvkzEL7C7mcqMUGrhtdjlGCwZ0r?= =?us-ascii?Q?RggCSAKrn3xUs/lZtQkVXO1hhr6vlmaQNPwtW/Abmq7QxfTcYfYJwDLOJeRE?= =?us-ascii?Q?Ou2X7lVAxsjfrwbAQJIpuozcc0jAi3eZBWcHjmzQXZzfILAUKdyNJqhNZgG8?= =?us-ascii?Q?QT8HKzdUbQfKfv4QqiRV3PFCSn2gCKjnTmvP6V3oywn970PG4ICqgXlxPuXF?= =?us-ascii?Q?XoDbq/bEckbXuaoQzcrmKxf8f1xGHUUcwZLCcjJvnXkNHRB5QpdfVQrfMiWa?= =?us-ascii?Q?uXxLkcgOXRKUDOt3F1a/JSPIr6MSRuwEL6rdJj0iQGH4gilA3t4penio03ae?= =?us-ascii?Q?CPzGfoMsnqnH6tOCVB/ZTg59W1b+NdzhgH4jXCwrk9zypH5hFx0JD8j1bWGb?= =?us-ascii?Q?oddVtjIiyZCOUY/HAqwKqb0jF8ufP6Iw6f+OmwMvY2XAPVoJYorPzgmVVZ3t?= =?us-ascii?Q?CmgvI2ZZdGhaJxwQZvQ9sF+du3khlA9RgMxN8hLD8A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1189; 5:YhIrgvk3xA/pJ7JNRnxNTdKj/w5iHwW9EzIowfO7Tkgeml0x8atXcd4JlQ6wFtXrwMmjtT5HK13tEpEJH0sLasq2PndoVUyxy9SnmC/FJsyODj+lZ4ybx+Gb/wYD/hQm6B93QMSQUIR5ryNFFX2pT3JLCQf33K3RYWGkWi+LyvPbo2AAi5qJIt47Pe0TSsQLct74Mch8L/jv3lmQKok7SdsWriPrK7EAzxUjYn8jZNj7OpK7B2AqfSu3n5hQBAYceUw5S6duOslF+Blatl2rGwYRSSBadl+fgL4vQ0MPiqteoR5qfhmmuX9FC6TqgMb4yaMMS34NBL/vaC9lkEiiPhHkNLaz74iU7i0OVyDqfDNMhkOD95DgMBdCclOfh8wOya7D61Wu+HKD4PdFYZd7O+5e6zJ9wm5hqSu2vytF6oo/RJznY+PgjPUilvVbt4U9rOhzvBo/sdO+oKpqdfLSP3BQcjYwxx6PzNU+WgNspG+kxo04F0H8Dr6nvxEh6iMonsqbYXOKYgCm5m30Lxs/Pw==; 24:3aoWcGNQixF4imcV3MDSUhmc2VC4etfX7t010xxaEUYWVrQjCvk7hqWk4VI7Sp/D7R6zrP5AftS/d2csEbQtS4Iz6WNU7cE5aWg+3JnmJiI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1189; 7:K3NpeHPG0XaxDhCkY7Vf+FSXC3WVbgg+/yr93JNJMPrZF3yco8TNMwLktdLyF/JDwV3J6qyBjcnzB8rJ6UBz0XEr4NrUpLVS+UVQRvpZQPAW/SjLepi3vRxuuAsNAq69jQVio6AQSSxXXnw4RZbyQl6WGnBSrT4N2A46dLZH2o10gFpbHRw6LkCL6WPB8zm1Etl6KU1XZBl7ZJ9VnzFvkP8RtaQnZ1oTBScAV6Im07v+BbYcYVED3F9+bDA7xFjMknFcnBNS/0iEWHaUiGERzUS0Kc1H0ohzGF+//r9GaGuN/DDTfS/aPfri/osysa+Ijvz4elPYMyuxsy+ZZrAS6v5VwtHFpReLY6HAUHq9WDxiCMljEbuDrwUEgWEMDLh5hiaeE0gAA9xfggl6M4RG3SkEncN+8HHGvFwPwcLiTxJzLa7iDWnljeLTXcjTzHqjuT1YaOdaQxj9S7bst0S88FPiZGehbeJkk80LXxuuidNL69nHl6yZ1bgLfLG0xAwWze9rY0geDYUXyfAsL5iDOg+LKX1BKH9hINsdjtflGl7UQIcJCjdzyjcDE4zF63cysu4joU0UJhFhcQAUkW+syhES3veVE1DvNw6P3P+nxrFT1HiOL0V9RJuEEnEVb7f3spljSDiDMIA20Q7Cel+0O/bUXlrBD0x3rDrMIizpkq9UjzRQtFzE4agG9Dpj8UfgWJU1O05TXrCRn0wD8uLf/7FgbhQGjpyvsirGrH3anZgS2AeGSyzu7qHg47ktGU1XK5AVlPTWIa/8EAO82RNBuAIidJiVuI8nOoaJYHCISGI= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jun 2017 05:33:34.9280 (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: BY1PR0301MB1189 Subject: [dpdk-dev] [PATCH 37/38] net/dpaa: add support for Scattered Rx 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:38 -0000 Signed-off-by: Hemant Agrawal Signed-off-by: Shreyansh Jain --- doc/guides/nics/features/dpaa.ini | 1 + drivers/net/dpaa/dpaa_rxtx.c | 160 ++++++++++++++++++++++++++++++++++++++ drivers/net/dpaa/dpaa_rxtx.h | 2 + 3 files changed, 163 insertions(+) diff --git a/doc/guides/nics/features/dpaa.ini b/doc/guides/nics/features/dpaa.ini index c8e3561..d86e495 100644 --- a/doc/guides/nics/features/dpaa.ini +++ b/doc/guides/nics/features/dpaa.ini @@ -9,6 +9,7 @@ Link status = Y Queue start/stop = Y Jumbo frame = Y MTU update = Y +Scattered Rx = Y Promiscuous mode = Y Allmulticast mode = Y Unicast MAC filter = Y diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c index eef0d49..9af3732 100644 --- a/drivers/net/dpaa/dpaa_rxtx.c +++ b/drivers/net/dpaa/dpaa_rxtx.c @@ -271,18 +271,82 @@ static inline void dpaa_checksum_offload(struct rte_mbuf *mbuf, fd->cmd = DPAA_FD_CMD_RPD | DPAA_FD_CMD_DTC; } +struct rte_mbuf *dpaa_eth_sg_to_mbuf(struct qm_fd *fd, uint32_t ifid) +{ + struct pool_info_entry *bp_info = DPAA_BPID_TO_POOL_INFO(fd->bpid); + struct rte_mbuf *first_seg, *prev_seg, *cur_seg, *temp; + struct qm_sg_entry *sgt, *sg_temp; + void *vaddr, *sg_vaddr; + int i = 0; + uint8_t fd_offset = fd->offset; + + PMD_RX_LOG(DEBUG, "Received an SG frame"); + + vaddr = rte_dpaa_mem_ptov(qm_fd_addr(fd)); + if (!vaddr) { + PMD_DRV_LOG(ERR, "unable to convert physical address"); + return NULL; + } + sgt = vaddr + fd_offset; + sg_temp = &sgt[i++]; + hw_sg_to_cpu(sg_temp); + temp = (struct rte_mbuf *)((char *)vaddr - bp_info->meta_data_size); + sg_vaddr = rte_dpaa_mem_ptov(qm_sg_entry_get64(sg_temp)); + + first_seg = (struct rte_mbuf *)((char *)sg_vaddr - + bp_info->meta_data_size); + first_seg->data_off = sg_temp->offset; + first_seg->data_len = sg_temp->length; + first_seg->pkt_len = sg_temp->length; + rte_mbuf_refcnt_set(first_seg, 1); + + first_seg->port = ifid; + first_seg->nb_segs = 1; + first_seg->ol_flags = 0; + prev_seg = first_seg; + while (i < DPAA_SGT_MAX_ENTRIES) { + sg_temp = &sgt[i++]; + hw_sg_to_cpu(sg_temp); + sg_vaddr = rte_dpaa_mem_ptov(qm_sg_entry_get64(sg_temp)); + cur_seg = (struct rte_mbuf *)((char *)sg_vaddr - + bp_info->meta_data_size); + cur_seg->data_off = sg_temp->offset; + cur_seg->data_len = sg_temp->length; + first_seg->pkt_len += sg_temp->length; + first_seg->nb_segs += 1; + rte_mbuf_refcnt_set(cur_seg, 1); + prev_seg->next = cur_seg; + if (sg_temp->final) { + cur_seg->next = NULL; + break; + } else { + prev_seg = cur_seg; + } + } + + dpaa_eth_packet_info(first_seg, (uint64_t)vaddr); + rte_pktmbuf_free_seg(temp); + + return first_seg; +} + static inline struct rte_mbuf *dpaa_eth_fd_to_mbuf(struct qm_fd *fd, uint32_t ifid) { struct pool_info_entry *bp_info = DPAA_BPID_TO_POOL_INFO(fd->bpid); struct rte_mbuf *mbuf; void *ptr; + uint8_t format = + (fd->opaque & DPAA_FD_FORMAT_MASK) >> DPAA_FD_FORMAT_SHIFT; uint16_t offset = (fd->opaque & DPAA_FD_OFFSET_MASK) >> DPAA_FD_OFFSET_SHIFT; uint32_t length = fd->opaque & DPAA_FD_LENGTH_MASK; PMD_RX_LOG(DEBUG, " FD--->MBUF"); + if (unlikely(format == qm_fd_sg)) + return dpaa_eth_sg_to_mbuf(fd, ifid); + /* Ignoring case when format != qm_fd_contig */ ptr = rte_dpaa_mem_ptov(fd->addr); /* Ignoring case when ptr would be NULL. That is only possible incase @@ -385,6 +449,94 @@ static struct rte_mbuf *dpaa_get_dmable_mbuf(struct rte_mbuf *mbuf, return dpaa_mbuf; } +int dpaa_eth_mbuf_to_sg_fd(struct rte_mbuf *mbuf, + struct qm_fd *fd, + uint32_t bpid) +{ + struct rte_mbuf *cur_seg = mbuf, *prev_seg = NULL; + struct pool_info_entry *bp_info = DPAA_BPID_TO_POOL_INFO(bpid); + struct rte_mbuf *temp, *mi; + struct qm_sg_entry *sg_temp, *sgt; + int i = 0; + + PMD_TX_LOG(DEBUG, "Creating SG FD to transmit"); + + temp = rte_pktmbuf_alloc(bp_info->mp); + if (!temp) { + PMD_DRV_LOG(ERR, "Failure in allocation mbuf"); + return -1; + } + if (temp->buf_len < ((mbuf->nb_segs * sizeof(struct qm_sg_entry)) + + temp->data_off)) { + PMD_DRV_LOG(ERR, "Insufficient space in mbuf for SG entries"); + return -1; + } + + fd->cmd = 0; + fd->opaque_addr = 0; + + if (mbuf->ol_flags & DPAA_TX_CKSUM_OFFLOAD_MASK) { + if (temp->data_off < DEFAULT_TX_ICEOF + + sizeof(struct dpaa_eth_parse_results_t)) + temp->data_off = DEFAULT_TX_ICEOF + + sizeof(struct dpaa_eth_parse_results_t); + dcbz_64(temp->buf_addr); + dpaa_checksum_offload(mbuf, fd, temp->buf_addr); + } + + sgt = temp->buf_addr + temp->data_off; + fd->format = QM_FD_SG; + fd->addr = temp->buf_physaddr; + fd->offset = temp->data_off; + fd->bpid = bpid; + fd->length20 = mbuf->pkt_len; + + + while (i < DPAA_SGT_MAX_ENTRIES) { + sg_temp = &sgt[i++]; + sg_temp->opaque = 0; + sg_temp->val = 0; + sg_temp->addr = cur_seg->buf_physaddr; + sg_temp->offset = cur_seg->data_off; + sg_temp->length = cur_seg->data_len; + if (RTE_MBUF_DIRECT(cur_seg)) { + if (rte_mbuf_refcnt_read(cur_seg) > 1) { + /*If refcnt > 1, invalid bpid is set to ensure + * buffer is not freed by HW. + */ + sg_temp->bpid = 0xff; + rte_mbuf_refcnt_update(cur_seg, -1); + } else + sg_temp->bpid = + DPAA_MEMPOOL_TO_BPID(cur_seg->pool); + cur_seg = cur_seg->next; + } else { + /* Get owner MBUF from indirect buffer */ + mi = rte_mbuf_from_indirect(cur_seg); + if (rte_mbuf_refcnt_read(mi) > 1) { + /*If refcnt > 1, invalid bpid is set to ensure + * owner buffer is not freed by HW. + */ + sg_temp->bpid = 0xff; + } else { + sg_temp->bpid = DPAA_MEMPOOL_TO_BPID(mi->pool); + rte_mbuf_refcnt_update(mi, 1); + } + prev_seg = cur_seg; + cur_seg = cur_seg->next; + prev_seg->next = NULL; + rte_pktmbuf_free(prev_seg); + } + if (cur_seg == NULL) { + sg_temp->final = 1; + cpu_to_hw_sg(sg_temp); + break; + } + cpu_to_hw_sg(sg_temp); + } + return 0; +} + uint16_t dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) { @@ -451,6 +603,14 @@ dpaa_eth_queue_tx(void *q, struct rte_mbuf **bufs, uint16_t nb_bufs) dpaa_checksum_offload(mbuf, &fd_arr[loop], mbuf->buf_addr); } + } else if (mbuf->nb_segs > 1 && mbuf->nb_segs <= DPAA_SGT_MAX_ENTRIES) { + if (dpaa_eth_mbuf_to_sg_fd(mbuf, + &fd_arr[loop], bp_info->bpid)) { + PMD_DRV_LOG(DEBUG, "Unable to create Scatter Gather FD"); + frames_to_send = loop; + nb_bufs = loop; + goto send_pkts; + } } 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 b1c292b..4d89f32 100644 --- a/drivers/net/dpaa/dpaa_rxtx.h +++ b/drivers/net/dpaa/dpaa_rxtx.h @@ -58,6 +58,8 @@ /* L4 Type field: TCP */ #define DPAA_L4_PARSE_RESULT_TCP 0x20 +#define DPAA_SGT_MAX_ENTRIES 16 /* maximum number of entries in SG Table */ + #define DPAA_MAX_DEQUEUE_NUM_FRAMES 63 /**