From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0084.outbound.protection.outlook.com [104.47.32.84]) by dpdk.org (Postfix) with ESMTP id 0F3C97D7B for ; Fri, 28 Jul 2017 13:09:23 +0200 (CEST) Received: from BN3PR03CA0051.namprd03.prod.outlook.com (10.167.1.139) by BY2PR0301MB2120.namprd03.prod.outlook.com (10.163.197.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10; Fri, 28 Jul 2017 11:09:21 +0000 Received: from BN1AFFO11FD007.protection.gbl (2a01:111:f400:7c10::198) by BN3PR03CA0051.outlook.office365.com (2a01:111:e400:7a4d::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.1.1304.14 via Frontend Transport; Fri, 28 Jul 2017 11:09:21 +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 BN1AFFO11FD007.mail.protection.outlook.com (10.58.52.67) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1282.16 via Frontend Transport; Fri, 28 Jul 2017 11:09:21 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v6SB9Bkt026670; Fri, 28 Jul 2017 04:09:17 -0700 From: Akhil Goyal To: , CC: , , Akhil Goyal Date: Fri, 28 Jul 2017 16:37:38 +0530 Message-ID: <20170728110738.28922-3-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170728110738.28922-1-akhil.goyal@nxp.com> References: <20170728110738.28922-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131457137613791890; (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)(39850400002)(39400400002)(39380400002)(39450400003)(39410400002)(39860400002)(39840400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(5660300001)(81156014)(106466001)(50466002)(8676002)(626005)(4326008)(36756003)(8656003)(2906002)(8936002)(81166006)(48376002)(105606002)(356003)(54906002)(104016004)(69596002)(50226002)(86362001)(38730400002)(33646002)(498600001)(68736007)(53936002)(77096006)(2950100002)(5003940100001)(1076002)(189998001)(47776003)(85426001)(305945005)(50986999)(6666003)(97736004)(76176999)(21314002)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB2120; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1AFFO11FD007; 1:FWQQj9rU+tORAVfldozkWNgxdsthUG+gEk/0qzwWz?= =?us-ascii?Q?Tes2hmF6mP/0Bz1AngNvq5SuBzDNXmK6vrtNSUvzF8gf9rCq+ZU5AjHvHYY5?= =?us-ascii?Q?j1lpPNpisS8E9jB21qPvVoDWeSRYDLGsZfs+P4jP/5ZY2mTyNoGPIWDKKuDV?= =?us-ascii?Q?fjcPrB8gDrniqC9l79j4LBIfBMKiwpuJxfi2h2YkGU+4c7s/IjeuIsEtr0M0?= =?us-ascii?Q?2I41trupUBv1fhCaixDZ3BBWbKnceCm4MOFwgNhzEYAXrNt08c5xbMfxw+jj?= =?us-ascii?Q?tXLiBCNlyWiB7G9QMZtJs77ik7K6NmANrJn4ArrDjQUdU/18/y+S4PoSEut2?= =?us-ascii?Q?yE5Q5xNPUrl2JYxgDnGWCaLDH8b8j/9/mAWsmfP2TT4m6DXAP8CsATJ+mRKN?= =?us-ascii?Q?uE14ij/1XxxfAVwPnMo7GhdDR/2sZzhnOOtntNWN4FhKgLEyvGmXYe9S7bOt?= =?us-ascii?Q?KOfMoqhMw28o3phoWexBrbK3+EHBFZ09u0LftzTNGIoK3iNxE8vXU33KrFc/?= =?us-ascii?Q?72K01dkBpc8Aq1aJTVpH1sB16176kR+yWz1YvZDoMWArwDjEfvZVTxFNqVKq?= =?us-ascii?Q?mb0uB+WYZrqdEms7uTKyEH6/aqU5bnsRRAqw5PrPi2VuYMkEQC9lE+uI7Wco?= =?us-ascii?Q?A+jAHoVhnUb3XrMyguJdZkvZUVXpyFtaIB/sILSnwtXl0SqLWFPwVhB+8p+I?= =?us-ascii?Q?Ji7GbQC2robix0uEAxGcNlBTHRGIV5fM8Ivs8EVxNlmbZrrbJAm4el93OFJo?= =?us-ascii?Q?+eSti7R5/n9dhrpEsq5nt8E5SWBdGYl2RB1spmd7QMW+ZZGffkdNT282wLcW?= =?us-ascii?Q?gq5MWSv/RtekFh/rVIGb0DRFxfXKV2+nNbwF+wfVwa3aFml8l+8RyaijlXXD?= =?us-ascii?Q?zdJAJacA8Y6rah9vuNzsqHeNMIahKe3L7BxXNjKflk+L2XtqYwyjwHtDbCPa?= =?us-ascii?Q?i/JnYMKlkR211OenZrBBVaUkdJMePIfi0zoRv0c771PQIObjCMvdaFl/nwzX?= =?us-ascii?Q?Rlnou4cshcBbhZkb3vhbNSj?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 00461f54-4a2f-4389-8126-08d4d5a9191d 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:BY2PR0301MB2120; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2120; 3:wh257mLzfGvSt2+ldty23xgmJx/KAlCUVKtPZUydagF4UOqTboIxHwB+r4+MMLTrn/MZStS/RnwZEvPeF73xFJjjYewbKaSD4oUGsY04LhIIZ3Sjc/3Kf/1Gv3v+R4429mA0sQ9bWPZsk5y7Q1BGk4iQmgFqO36NaWMLkovQrQ5VB8yIWPfIvIkIw6tGYvA3mZD8YXv4JauU18Dx63Y/q+r1TZA1bWHoXL9S3kG0pt+DFVIU6FoVmGTnayP4fUDzfms7+dj5ueXCv3WAKtK/n2YO6j4mHIB612BEQfUNzY0HiCLm3mVQnhwHqLGNNAr4jGjNWH5W6tkPvU4+pOwFKnZF8RM/gkFBqBBjihE7VxCR95bccVSfB/AsArQpZdJVD/se8rhJhrg7N1VlxRAs0Z8Wuy/v4YQG9svzMkzcF8xSbNSgmfVnMu9Edcugok9OUCi6ws7EVsldKDdkgJvFkn33nieX/UXHcpfA0N8WujFw5T3dByKGo1eRT5mqIbgpzaVrwlY53YHyNY23buVYu7oJrxKCIofEB1yR5q9dUCAdIW9PRUCVpnaihA8pshG2xG8qLqPx+mDhjUoZsX+XpVRAcIP9Qyk5MAnIECP1gNx3WTPOBxOQCDE9qylZ7c5j2k4NhmplDbIpaozfLxzgV5st8Frr2S0VkhpJfgVLxpn27Y+3jiUtDT1cC76AVe8FHTRSCFGZe0BxUYYMmR/ccg9nK+0RML8RMCiCUJNmLFI2OSjROhF5K5AiaZZC45NfdjMGqzBH+anxAHyE4mYD/qNJVkeWTP7hsn7cIfXEyN0QEpRrUjhLkABqcBSb3LLih4CqenTeQAOzZNOuylYgt2ctnIORblT8kcDa0lvh6fKdknVJn2ZCwPxn5/zsAIf+ X-MS-TrafficTypeDiagnostic: BY2PR0301MB2120: X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2120; 25:m1hD9kKbzmIhJd70ajH3LYcAPr0KNfAVQfZt4NCqZ+mCNhOhSFZdehJvxziY9DwXJDFH7gleD4qz3rvqsgbBznzzr4yYlPTEAbFfMER1iXm3zH2z6UvJYJ7rfkQ6eeevkbt5to1CXI7cTN0XJsOhe1SLXMr++jIR+NDgyq0844mxrUMnVLn6XEoUDDe7c8x2SB9j42y9Q5zq3Qx0d0pWXcUq4Amm5TlziONFgN/Zs6lg1a/Is01MU9KclaeRmili+JOXekZpQriX9ZiupQ61L9/XKEVB8S5q8ccyhuNTKreyJZmQzevfrgTYb3+/FZOysXYUJcj5F826wQGRwyddJf8qyS8L9Ne3umpLkTa4qlZPBubPfOCOS2fTWo6nfHgrNflQ/spg8nZFhbwlG4M/SNeZOQk3c70DUiTYnF2pwGooLjijRUzQeH4fL4jaoKd/mA/78ajfeB8J6H8eld3TOYgirKckaR7NTtXBrfpIc106EYEei6SuS3XX1SIkGCh5PdgE3ulOOxhVxaQNghGkPXD9lTC+QjTuwi2yCmS7julYIJxFFrD70e+qT84kr2f1Wipy9qwBnwreSeNJqDJjMYCi6E6uRvStnp8H3RhpquTJoQ3fTuo4K/5xWH+xZ5GA+ddTPthXDHD5xsuSdlneQUDAyu8nGMUyXhbe0hlo6w0AsYDEeINl5mtwaJp0rbZyUes+aFg/BaiN2T0uPDDCayeMw6QjOBvpRx2an7GNONr2SlykehIhN8FoRp6jU7Liz+qBgR0HfvWsJbs1e0JN80IX+bx9JkNBqj0yo91DoFW+SfI7DmAKvhZqoHtrIXFxitAEGIYM97ZrIKqLRt12iHZDWFU5rKUkhDa6UbWnRkco8Epe/rdzgHdN07kHtY7Mw2Dpk7oGNAZgtCJd78Hw63PauJZ4br/SxrPpKYUM4nw= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2120; 31:kErJktj4k/D0YlTtEM/+b6IPApFm/0+pCs6F9a/hC/YvYNrZAqB5JoYrT+typKLq25sB2WWobzbG94c+kIdY4DapDos0s3HdbPYv6lKyO39tZIB/BipMBSVHFXobdA0uBSKZGWH8E1pIYaJKdWY4Fy1qReakpA+37HZp0ewkwHJdd5yFN3teN+Vyp5RETKKRdw8K9tqAyMC4dMafXLdcLjBmLN4HmfRuwjlZcrW8tkhyGP38fniRvyxPa4zpRZjobMYp+y1rJ8c8vC4aL/COsFFLjCNoah1ja5AwcEWf5INVNNX4SiBTVuLVXFC1SLE+/Y3af8TztQ11jzZ4uPls7yBTFGrGgP4kVQu/vcKFa4lSWH8Z3Us9QbUuNYfWsAtcpkvskbB0l+i0tPFIdw8coutxWnOidTDv3q1amgtajUwEpC5eH2DlWivhGDFM6UmWHJn17qfYysl8ULIyPyLk1kh5kqQtxu4DIqQHL9lKl8QZiMksPN/qldsOod5zjR7UIXehavBoBBUELvjeslKzPw4OuBCFoInchcnWKK3ootkU73ggr0FiYKWwelylYopGthRNOh9H0Lx8elZfCkJaS/JsPXusYErIA2zfSXIsbywxpvOt9KEWmG4HfHafYCsB6fBoQIv7NoJ1Ua67eVK/utzlqyDRb9bMQ+wYnauqHMJC+s8ibVmIgX6uTRGGvBwZHniyOiM3Xp/GrVMfwisANw== X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(5005006)(13016025)(13018025)(8121501046)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(6055026)(6096035)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123565025)(20161123559100)(20161123561025)(20161123556025)(20161123563025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR0301MB2120; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR0301MB2120; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB2120; 4:h730AgzP5OThZFy/jJ6eDA9Tt1I0IV2IKvoOBpDG?= =?us-ascii?Q?pooMLTK84dbtRrzWFs1AhA8XneUGpUFSWiCDlNHHcw/MyZ3ZeMc90PAZpRdX?= =?us-ascii?Q?eBjHmqDmUDAh4HhEUQAa3qGSaI4NTFzPNhn8Dqm3l11IV9+NmNquJP61QZjx?= =?us-ascii?Q?lNLD7/+nt0lIZdp4KNTCEeUy3YIPDWCu0Av4kut7r1hHzMF9Df14azYM6Yje?= =?us-ascii?Q?cz5KjsXd1F7DLA3OKAVWg5yWyauZ64ArVNhXIcd1KJju7IqdJBcj3r25p+KF?= =?us-ascii?Q?cwzlJCS3iPFcZVkXkKmAc5GCPOxnfHKrA1CdoXy9BuUjnVp/pxHeLySUAH1n?= =?us-ascii?Q?lEoWHILDPCz05+//ZD99GGV9HbxESu2TluWMpB0s27F3EU7FP4V+YGEJykCY?= =?us-ascii?Q?Dat1IAxGuh1XVT3vyzEL7Mbth62UxDjDqzF2dhN/7yizb9mcb4G1KC8XONt+?= =?us-ascii?Q?BWO92T4I1l7zBXrRTUaoVB0NvqN6ymin0W47ZaBP9/aTjbOLhDNoCXmVhtGe?= =?us-ascii?Q?lTC8A05WK8/zdplIl//UamtWr9wmVqwVO/UNeLPGnNjYL15UwKw5pKV3leNc?= =?us-ascii?Q?OfR9VfZ9SupEA/cidjuahgsEBVaxjdrilsVJWLp8vt0V0mYE2WL5LN2gJoK0?= =?us-ascii?Q?0Gd2uo186/AE24qGgCvetvEJKkPlD04WI6YiblGCV56YW1lDKYK+Pc7sPeC9?= =?us-ascii?Q?zdBO7WtmKbNVVdH8H6o6ZE8ilSdZ/og2tqDfcdv9mhNrTx76aPKoYHbGW88k?= =?us-ascii?Q?uVK8t52ye4Qh014aF1nxr/gg6hgCsJjuKjtBnAbxe83wZxaR2iMDhgAUhcIe?= =?us-ascii?Q?NTyfVpuTXo2p+KwZE0thmqFVh1rsKFWXrQ8EYZsllxauxDQde2oYX4ITF6zv?= =?us-ascii?Q?xaCxUEvLer7vXKRBTj7nwnpFhYBK+8exJDtI7bKlBl1snba6Ab9ONNv9BUZS?= =?us-ascii?Q?JdtBaItNM3cEPQllz7+FFS6q6kJFPQrRwJdXD1bp73WIOI24AFa0VDkweW6f?= =?us-ascii?Q?YzNtC0Xku98QJJacJ9mrRExRB4SBzRd+I1L7DFF8629ThXoN8Xe307z2k+l/?= =?us-ascii?Q?R6gqfOYKcbn1T/HI/5vcUtg4CuxjqyDu790avoIZR1Ps53LziiXzu6AR7C/k?= =?us-ascii?Q?LEXHWDSI3R/KhQeK9PbWHjo3E7F615uR0+spsTWi+FEwnsgbFnCHYz58/htp?= =?us-ascii?Q?IzfsuhRE3z+UO127y+nCJkAeU9Q40HaX4pFznusUE0QYvUUYwFIrjZsiwuoB?= =?us-ascii?Q?XjQs2QgS2icoFyLotmOUEwcZLjJ/zmnbUecyixPr?= X-Forefront-PRVS: 03827AF76E X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB2120; 23:Z0bS8pNrh7d60lX7ksIKnesuhj4jX2veNcoRJmb?= =?us-ascii?Q?ITfWNA+zEDHaMam0ScLv22HWRV0FXv5RpRNzj4oMoxqMXupqw71Vi9MPnSzT?= =?us-ascii?Q?OXQ1SaDwz1+LSDMW+2UiK3Mu5DlY1VIhsl/NkDPymqKdWPVvYYOerxjcpdeA?= =?us-ascii?Q?8orvr9Vl12avQLdsiAkLzIaUXO8os0fHfQ59yfVAbhA6mjBGuqIeoXWlbPXj?= =?us-ascii?Q?w/E4QRwq1rOXcSbG1ZdVCwdEBkq8BnVq7vZz9NLDnoQeuaYYVMIshet+yUOF?= =?us-ascii?Q?srylKAWLk22/4MBXaSz8UGXUxjV/MDzG5O5SuCgl7cBfK3KIRGyNwHeef6Xo?= =?us-ascii?Q?Rhm4MsHL4pCaXZLdp6SenvFhlYYUGjsPAb6f6NmJhRHoEU4psFDzbk3nv/VK?= =?us-ascii?Q?wAoqjdQPNiM0S1QT6Bi4K3Qy3+5+2Par0kL0wq7NX+/vQbwc0noxf7COzzCQ?= =?us-ascii?Q?281gX2fP6Lm1DIIIkzw94Grzz9Vgjf+THVGiwVfU8wBOAHyRE5fYsQPXXJfN?= =?us-ascii?Q?2Lkf+A2mAm16OQt27WjbG10QR/YKb43xp41L99g6fEpxiAIZn+NCnkiJncGY?= =?us-ascii?Q?5N6d92bDDoS0J/yVYyteEFoK3tNIIAA4OjowAMvBuccW4DiY/9iaqaguORmM?= =?us-ascii?Q?VFqOAndvYwoRHJLWL010tM5VoOqcr0BDZ7ou08t2rIyuXkDYBIS3EUJkbZ1d?= =?us-ascii?Q?Bsh/zxnAoqLnAdstSxfzMK2d2bVb9n8rWXkNbA+F2qNQ8/fbySc+1a+HRyuw?= =?us-ascii?Q?546QvCJT9kexo0EJ2z1m5cUn4MJ5b3WD4XVSc5IwyM23JJHXvuvX9kUm+IUk?= =?us-ascii?Q?BYK6Alb8ykSEunUXsoaDrYQnZMy/nYB1OETpW7Cgrg/p0i5tZw+GDFMYuCsw?= =?us-ascii?Q?U+2s/5lg+lf9Vqjfp9DMOA9P+FV0v9fgqxs76h/h9CprGL43vTaGDiHKgq8K?= =?us-ascii?Q?Ex3y/CZxZIuZRXbwupZGGLGl7GRJ99VsZeOSk5E8dGuyqkatAGGIAOLXK8Rx?= =?us-ascii?Q?IgOzGGsHWOMZSyfLTl4pshD1UoF7WZnYVXVbpah3yAj4iHN5rB8/4zPSQJ58?= =?us-ascii?Q?wt9UzRYkJ5uIoyt3THxNczHBlIIaphXL11DYUUbkOILYU9D3bV2DTfvm8JkI?= =?us-ascii?Q?DOTD9ODBjcmdqQKn0vHdf8sAUWv60CUogvbTcpx4DxVoB9Iuktd67AADtD5E?= =?us-ascii?Q?YswbewocVGtLl+VGoc2Fc1CJV64FH0JNJFHMVr1rAfiKR16Qmih4gRqfLhQ2?= =?us-ascii?Q?3e2XerjOLsJXcc5H5c5AbV4O3ZkC3F6tZEJJ5GCVNGUW6rpBdCB+QW/q9C3F?= =?us-ascii?Q?yIK5tune4TSXabEYLbjhpId8=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB2120; 6:vP5Axwz8qzXdT29qTv6yjmXX8jLDPEMKTVByElNp?= =?us-ascii?Q?RWyJvoxgigj89ld6ZbA3HjM3TYZzAEKlw6bfvqiyInBO2zy/Oos+IRLIYvza?= =?us-ascii?Q?mgs3scyGAS3I9O/rx385ki62P+mkyIvWGle0HLsvgVKHvU90tZwJwH+5cXMk?= =?us-ascii?Q?TLxvzmbEEr0JM+mALMOLBeBx16E6HlRUxNoBHVOtMyFtUtk0DncqjzdxHktc?= =?us-ascii?Q?w1LD/C99/tg+ARZVLtFuPlVgOjDm00HmH35wKtGsQLWEQ0z31o47n2BfY8d6?= =?us-ascii?Q?5usnZXp2viOIsmETIgJDnPLJ4ykuTZXTZ2SK2RPNLJuuwJxw5GIAP6XA73fr?= =?us-ascii?Q?R8KMlKx7cg+0zgBzy3K3ujcYMuSViFaWxTsmNTFzk3uEIKUP4dHgBEmHMLRp?= =?us-ascii?Q?nqGEUGNYuEiyG624ISpBrTLw9DAm4ZLvpYCk2aWEcqCeGepKHuuk8yhcoukQ?= =?us-ascii?Q?X676eBm7nYH3hbtOVXCQ587hAI6SsVU1tpRO2qN25qC2PHc3IT0Hj7JJLtOR?= =?us-ascii?Q?uyzUx+HI3rd6rT3aoEWwevlfUeUcvhdH3cDVlCbrjbJdR/fIUJUumXfJUBHq?= =?us-ascii?Q?6/oQpGla7D3VNSq6m8HfF5TNzFKuF10v017N4lNjRObP1qSV9NFJ3W5kMLhr?= =?us-ascii?Q?66MVEr2HltmjEQbku9GAnICcm/YOHe+XRljZ/XUUMuekJMhxJ1nATdq8Q/P+?= =?us-ascii?Q?tm5WV5D/djunsHm2HEwVFfT8uGeXgX9tvEkEUbwwhw0wTGCJkB4hiA7/9GgL?= =?us-ascii?Q?CupAj5bEVpM7yp7ocCzcVvH0vo4pJR5XthFIlxikaGQTt+OYcLGK3p0DIcjv?= =?us-ascii?Q?hOz4hxD2L0ftEnfjK7psXCikOmjPT6CRcpDR+EfP6OLue30rg2Fv4shs0IAB?= =?us-ascii?Q?+VXceRNuym9qaBQf9IIdBmE+DgtN0JntZRmdkF2DwiUkTr29/zwFfgV/tUKa?= =?us-ascii?Q?Dc1+rfoTLNwf0e5sel/2YzNwAcJfmWp92R7diSv+/A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2120; 5:4Gv9NDogHbDsmxrMyLUqExlY4qtX/Y/yGL+54QLBuQm1YH48q0YQkH2ay+nH+bUxN5+94grIh1kNYVtL78alPcK2A15FOY7IBfSH9dJpFprU0tO8aAkt5UySquk4x1yrr6MNuavuhmMrsYhctJbNn2pYZduhv2DIZD/YlRWHivxXfbrW2PXPQ7Njss3P+b/exQ35qg2jEzGl+nOjtB4y6qyvXztS6YCUVf7QZJ2ik6YuFeQKUM8bsrl0P77UNfuivj9bS2BK6IJxww2m78Gft0vVRCc/H8Er46D+wDWunwbe7neG8NJKOiFVBFxSmEOqaOWkCXt1EhYq1eR90SadNbRMzoIoSCfon/R/PIDiVlfZn1/fWBUlFzEUt6x80oJlrhhPLEjTfRbNipKErWSJZ0wjwtIy+J9Ccjgl9WAg2cYREp1/2WlauZ7UkQjNv/PIQgjLkGuXgYbDls3LfePVrzySOkH6MluIh7+kOxwmBiY0FUFPkUvPtGiaC86N5bfOOm6RdKxwTEGX0YZm2SmwgQ==; 24:U2gJ2R4RViasn4rrPzWS90jPDpdujsVkJKGgZGYBM1PW5j6MVjo/spBvIUqB9t+mZvQW8flI7PiIQQSkahA4WaWdgUWqpIWL78qw4vPWTyc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB2120; 7:nO2/Oii2zT0a7PXVvIuxCcKGRJwF2jOUWbyiUsObVM/b/+yWn8j+v3qHmXYEkOrjP4Gl3op8yLu54Y/Bh9i7XNBy04v7vLvnqpsSkX2WtgCFZz1s5UNqz7AY5Ep4KmBgrYszZja6bCjoWIb/XwhAyDDZAs5QrtuI51Gbd7URHSgShed1bzOtj5EAVMKtrS8r5gIslCK9/MPBL0BRLQ63fJKsj1n/ktrMlFZOTB3uzxy4TkfS8QXWqLU7JfmfDYh3LvGNPO5Gl+mAMFnH10NwwznRhR0QZdu2WYxL7ivX7igQDRzOdGFMV1YlHik9waUPdofdiWPWB1DKbQBf8e6IGcSh6HQHUiRPhVIL0I8SURQoPfKR42ylrIiB1IabSYj5X4eLVtZPQYPe55F8M38rDvhRCF4c0+WeugZMy3oEl0yD8fKD/Eo8vBW9860bLCsGbb0P9bSFZ9NgrdDxSFLNq4aRqMXAbaniPPhMjPPRVIa/Ld/TFuDugG6DsX3TMQf70oHM9Pt0smKUvmidpR8mbM8DaXD8Tp8eIBpVZgPLRxlq/5M83/jJdfNBUPWZj/Vs9z5ggRBV3YaLMZK0/whuU6xII0gNQrdmueO6QR0wrOXH4flhF4h54h4Fps1783+mkoPzd0iVnKwPxKQc5cwsu8Eke5nOold5mnE3wKBAVh4UrMzJb90gXioXJt1AKHYqq8ediAtzNa8J/D+nSozaZBh0kAhNIh1wjsgNyOLu45qSa8mzdl75thFSQ+YutqguFse6Oe/e5b53QovRY7ti32g1BUeZUA7xmn2Npzy3kNM= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jul 2017 11:09:21.1295 (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: BY2PR0301MB2120 Subject: [dpdk-dev] [PATCH] crypto/openssl: performance improvements 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, 28 Jul 2017 11:09:23 -0000 key and algo are added in the openssl ctx during session initialization instead of adding it for each packet. Also in case of HMAC the openssl APIs HMAC_XXX give better performance for all HMAC cases. Signed-off-by: Akhil Goyal --- Tested on arm and xeon machines autotest passed with no issues, perftest passed with improved performance numbers, l2fwd-crypto passed with improved performance drivers/crypto/openssl/rte_openssl_pmd.c | 95 +++++++++++++++--------- drivers/crypto/openssl/rte_openssl_pmd_private.h | 3 +- 2 files changed, 63 insertions(+), 35 deletions(-) diff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c index 0bd5f98..b11a7fb 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd.c +++ b/drivers/crypto/openssl/rte_openssl_pmd.c @@ -39,6 +39,7 @@ #include #include +#include #include #include "rte_openssl_pmd_private.h" @@ -307,6 +308,22 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess, get_cipher_key(xform->cipher.key.data, sess->cipher.key.length, sess->cipher.key.data); + if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) { + if (EVP_EncryptInit_ex(sess->cipher.ctx, + sess->cipher.evp_algo, + NULL, xform->cipher.key.data, + NULL) != 1) { + return -EINVAL; + } + } else if (sess->cipher.direction == + RTE_CRYPTO_CIPHER_OP_DECRYPT) { + if (EVP_DecryptInit_ex(sess->cipher.ctx, + sess->cipher.evp_algo, + NULL, xform->cipher.key.data, + NULL) != 1) { + return -EINVAL; + } + } break; @@ -333,6 +350,23 @@ openssl_set_session_cipher_parameters(struct openssl_session *sess, get_cipher_key(xform->cipher.key.data, sess->cipher.key.length, sess->cipher.key.data); + if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) { + if (EVP_EncryptInit_ex(sess->cipher.ctx, + sess->cipher.evp_algo, + NULL, xform->cipher.key.data, + NULL) != 1) { + return -EINVAL; + } + } else if (sess->cipher.direction == + RTE_CRYPTO_CIPHER_OP_DECRYPT) { + if (EVP_DecryptInit_ex(sess->cipher.ctx, + sess->cipher.evp_algo, + NULL, xform->cipher.key.data, + NULL) != 1) { + return -EINVAL; + } + } + break; default: sess->cipher.algo = RTE_CRYPTO_CIPHER_NULL; @@ -403,12 +437,16 @@ openssl_set_session_auth_parameters(struct openssl_session *sess, case RTE_CRYPTO_AUTH_SHA384_HMAC: case RTE_CRYPTO_AUTH_SHA512_HMAC: sess->auth.mode = OPENSSL_AUTH_AS_HMAC; - sess->auth.hmac.ctx = EVP_MD_CTX_create(); + HMAC_CTX_init(&sess->auth.hmac.ctx); if (get_auth_algo(xform->auth.algo, &sess->auth.hmac.evp_algo) != 0) return -EINVAL; - sess->auth.hmac.pkey = EVP_PKEY_new_mac_key(EVP_PKEY_HMAC, NULL, - xform->auth.key.data, xform->auth.key.length); + + if (HMAC_Init_ex(&sess->auth.hmac.ctx, + xform->auth.key.data, + xform->auth.key.length, + sess->auth.hmac.evp_algo, NULL) != 1) + return -EINVAL; break; default: @@ -547,7 +585,7 @@ openssl_reset_session(struct openssl_session *sess) break; case OPENSSL_AUTH_AS_HMAC: EVP_PKEY_free(sess->auth.hmac.pkey); - EVP_MD_CTX_destroy(sess->auth.hmac.ctx); + HMAC_CTX_cleanup(&sess->auth.hmac.ctx); break; default: break; @@ -693,12 +731,11 @@ process_openssl_decryption_update(struct rte_mbuf *mbuf_src, int offset, /** Process standard openssl cipher encryption */ static int process_openssl_cipher_encrypt(struct rte_mbuf *mbuf_src, uint8_t *dst, - int offset, uint8_t *iv, uint8_t *key, int srclen, - EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo) + int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx) { int totlen; - if (EVP_EncryptInit_ex(ctx, algo, NULL, key, iv) <= 0) + if (EVP_EncryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0) goto process_cipher_encrypt_err; EVP_CIPHER_CTX_set_padding(ctx, 0); @@ -743,12 +780,11 @@ process_openssl_cipher_bpi_encrypt(uint8_t *src, uint8_t *dst, /** Process standard openssl cipher decryption */ static int process_openssl_cipher_decrypt(struct rte_mbuf *mbuf_src, uint8_t *dst, - int offset, uint8_t *iv, uint8_t *key, int srclen, - EVP_CIPHER_CTX *ctx, const EVP_CIPHER *algo) + int offset, uint8_t *iv, int srclen, EVP_CIPHER_CTX *ctx) { int totlen; - if (EVP_DecryptInit_ex(ctx, algo, NULL, key, iv) <= 0) + if (EVP_DecryptInit_ex(ctx, NULL, NULL, NULL, iv) <= 0) goto process_cipher_decrypt_err; EVP_CIPHER_CTX_set_padding(ctx, 0); @@ -971,10 +1007,9 @@ process_openssl_auth(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset, /** Process standard openssl auth algorithms with hmac */ static int process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset, - __rte_unused uint8_t *iv, EVP_PKEY *pkey, - int srclen, EVP_MD_CTX *ctx, const EVP_MD *algo) + int srclen, HMAC_CTX *ctx) { - size_t dstlen; + unsigned int dstlen; struct rte_mbuf *m; int l, n = srclen; uint8_t *src; @@ -986,19 +1021,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset, if (m == 0) goto process_auth_err; - if (EVP_DigestSignInit(ctx, NULL, algo, NULL, pkey) <= 0) - goto process_auth_err; - src = rte_pktmbuf_mtod_offset(m, uint8_t *, offset); l = rte_pktmbuf_data_len(m) - offset; if (srclen <= l) { - if (EVP_DigestSignUpdate(ctx, (char *)src, srclen) <= 0) + if (HMAC_Update(ctx, (unsigned char *)src, srclen) != 1) goto process_auth_err; goto process_auth_final; } - if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0) + if (HMAC_Update(ctx, (unsigned char *)src, l) != 1) goto process_auth_err; n -= l; @@ -1006,13 +1038,16 @@ process_openssl_auth_hmac(struct rte_mbuf *mbuf_src, uint8_t *dst, int offset, for (m = m->next; (m != NULL) && (n > 0); m = m->next) { src = rte_pktmbuf_mtod(m, uint8_t *); l = rte_pktmbuf_data_len(m) < n ? rte_pktmbuf_data_len(m) : n; - if (EVP_DigestSignUpdate(ctx, (char *)src, l) <= 0) + if (HMAC_Update(ctx, (unsigned char *)src, l) != 1) goto process_auth_err; n -= l; } process_auth_final: - if (EVP_DigestSignFinal(ctx, dst, &dstlen) <= 0) + if (HMAC_Final(ctx, dst, &dstlen) != 1) + goto process_auth_err; + + if (unlikely(HMAC_Init_ex(ctx, NULL, 0, NULL, NULL) != 1)) goto process_auth_err; return 0; @@ -1122,15 +1157,11 @@ process_openssl_cipher_op if (sess->cipher.direction == RTE_CRYPTO_CIPHER_OP_ENCRYPT) status = process_openssl_cipher_encrypt(mbuf_src, dst, op->sym->cipher.data.offset, iv, - sess->cipher.key.data, srclen, - sess->cipher.ctx, - sess->cipher.evp_algo); + srclen, sess->cipher.ctx); else status = process_openssl_cipher_decrypt(mbuf_src, dst, op->sym->cipher.data.offset, iv, - sess->cipher.key.data, srclen, - sess->cipher.ctx, - sess->cipher.evp_algo); + srclen, sess->cipher.ctx); else status = process_openssl_cipher_des3ctr(mbuf_src, dst, op->sym->cipher.data.offset, iv, @@ -1174,8 +1205,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op, /* Encrypt with the block aligned stream with CBC mode */ status = process_openssl_cipher_encrypt(mbuf_src, dst, op->sym->cipher.data.offset, iv, - sess->cipher.key.data, srclen, - sess->cipher.ctx, sess->cipher.evp_algo); + srclen, sess->cipher.ctx); if (last_block_len) { /* Point at last block */ dst += srclen; @@ -1225,9 +1255,7 @@ process_openssl_docsis_bpi_op(struct rte_crypto_op *op, /* Decrypt with CBC mode */ status |= process_openssl_cipher_decrypt(mbuf_src, dst, op->sym->cipher.data.offset, iv, - sess->cipher.key.data, srclen, - sess->cipher.ctx, - sess->cipher.evp_algo); + srclen, sess->cipher.ctx); } } @@ -1265,9 +1293,8 @@ process_openssl_auth_op break; case OPENSSL_AUTH_AS_HMAC: status = process_openssl_auth_hmac(mbuf_src, dst, - op->sym->auth.data.offset, NULL, - sess->auth.hmac.pkey, srclen, - sess->auth.hmac.ctx, sess->auth.hmac.evp_algo); + op->sym->auth.data.offset, srclen, + &sess->auth.hmac.ctx); break; default: status = -1; diff --git a/drivers/crypto/openssl/rte_openssl_pmd_private.h b/drivers/crypto/openssl/rte_openssl_pmd_private.h index b7f7475..e36741e 100644 --- a/drivers/crypto/openssl/rte_openssl_pmd_private.h +++ b/drivers/crypto/openssl/rte_openssl_pmd_private.h @@ -34,6 +34,7 @@ #define _OPENSSL_PMD_PRIVATE_H_ #include +#include #include #define CRYPTODEV_NAME_OPENSSL_PMD crypto_openssl @@ -164,7 +165,7 @@ struct openssl_session { /**< pointer to EVP key */ const EVP_MD *evp_algo; /**< pointer to EVP algorithm function */ - EVP_MD_CTX *ctx; + HMAC_CTX ctx; /**< pointer to EVP context structure */ } hmac; }; -- 2.9.3