From patchwork Tue Jul 25 11:21:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akhil Goyal X-Patchwork-Id: 27169 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 6313A37B7; Tue, 25 Jul 2017 13:23:40 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0067.outbound.protection.outlook.com [104.47.34.67]) by dpdk.org (Postfix) with ESMTP id 66AB93977 for ; Tue, 25 Jul 2017 13:23:36 +0200 (CEST) Received: from BN6PR03CA0021.namprd03.prod.outlook.com (10.168.230.159) by CY1PR0301MB0905.namprd03.prod.outlook.com (10.160.165.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10; Tue, 25 Jul 2017 11:23:34 +0000 Received: from BN1BFFO11FD048.protection.gbl (2a01:111:f400:7c10::1:141) by BN6PR03CA0021.outlook.office365.com (2603:10b6:404:23::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10 via Frontend Transport; Tue, 25 Jul 2017 11:23:34 +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 BN1BFFO11FD048.mail.protection.outlook.com (10.58.145.3) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1240.9 via Frontend Transport; Tue, 25 Jul 2017 11:23:34 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by az84smr01.freescale.net (8.14.3/8.14.0) with ESMTP id v6PBNOJK030534; Tue, 25 Jul 2017 04:23:29 -0700 From: Akhil Goyal To: , , CC: , , , , , Akhil Goyal Date: Tue, 25 Jul 2017 16:51:53 +0530 Message-ID: <20170725112153.29699-2-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170725112153.29699-1-akhil.goyal@nxp.com> References: <7834b3bd-0800-500c-1c89-3b89e2eb47fa@nxp.com> <20170725112153.29699-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131454554144741739; (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)(39400400002)(39410400002)(39450400003)(39850400002)(39380400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(81166006)(48376002)(81156014)(1076002)(33646002)(68736007)(8676002)(8936002)(6666003)(5003940100001)(50226002)(5890100001)(77096006)(626005)(4326008)(2906002)(2950100002)(5660300001)(104016004)(498600001)(53936002)(54906002)(86362001)(38730400002)(36756003)(69596002)(8656003)(2201001)(105606002)(106466001)(305945005)(356003)(189998001)(97736004)(47776003)(50986999)(76176999)(85426001)(50466002)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0905; H:az84smr01.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1BFFO11FD048; 1:LEFW42ua/XSNXA7eCQ6rjcxYzT6yYfTsBavZIsCCD?= kWiIysj7JkHDWDp5Amf0TaFWMaoksZLkxhGUjykk3nuk2xkjhwyUjBfByzbhkFJ++at5eQsdVzcYFNRIFlQPBTIs41K9m13x2mFFRcZI0WiE0GiSyqcHi/BeyqZBqoKmdKWcsv9gm9yf61F8B7m5LOBB7awM3eUokBTVBZQ1sfKRDbXxD5+6bh4OiwD+VT/g2NWXWA1j92miRo9nkiRMH5oPZApNWSWtjt/G88nn65iiLnLVWTU2tVNP5DSYNlATLRzBY3w8TcKENoAv5wqN+Y0VlM+o5fwY8djy0RcchQs6UQ1dkreJv/vxnrKpwuwBgg7doBArpffdp5nFtxhGhJPLHbH/iC7KJrPU7aAAPlV2GvUJL+Hqau8YKN3usCEUUBIUgdLmhSumv0KGu3y8az7N+ugei1SNOAn2sioBe5ib2600MOQHRGgG705F6MO6w4OCx6uSnHgWKC4lxbTvJNAF0w8syYhJb9FL1LPRFtwRr8nIooMMNIOUFT7wPjmo5zqcke3W+J1hgQXkfm0Nk7a7xOc4v+DaKBYuAlUmFxDjcNQ4c6/og31KAT8cm23RRv5HDKMgPv+LeVWRPZwu9D6NKkhmxVoH9Zvso6t4i/eyDknxotXwvvgZJy+w9Rzbuh8xEK+VTvRsyRnxKuLuaMJhT+ShljNDtZjQ1cnYw9pkFZ3YLeklTiByfPUuOaT2bLi0K6mG30i36xj85gLtpkbpf/9z6qG2dMWhuM18EP9rO7ZfR+fxdrybC3gGOtF1e/2P8eW87dsQahAW/QBOhtswXgY/44BgZIRYNVNRujP4Gqwd7Cegqe9rR1i2md935SAUl37mhJT1OLhkUpXYGLLDbQ91uuEQLXePn7chOGTNUe2n/3WkfL3JJQ11he0bwef9RWokgpStT2jMj6WHYV9Y/ZNWVNJuGFf2cmV8xlQMqvJs/JWClM+4fD+5YRz5tWyN+W/TEp5cmen9RK/Ic9SFvOR3PvRQNH2hWp/DKKhYxXpgmI8Yvn46c0veZfVi8x8ZhmfWd/oCCpJx8eN31Vh MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c39ef542-06a9-44b2-8e73-08d4d34f964b 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:CY1PR0301MB0905; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0905; 3:W9cW6m5LZzHas4cCg1jytltNm1rx1mB7uDCFiFsX599O90ykA3AeqNy7k5zDEQp5rx9JJRN1GAB8JM/qX/GXkjaoRhITA5z8PKcUbO8+Qpb3YvHgO4kGTvveCmT7fKyPhptMu0ELYtdBoGxTwM2uHFyeQ5mW8TVUz7Uaup+2rXvAhFsJ3mGuU2IHWrXepKPvpy37WH+ounrpMdTzN59VaNZbe3oFgEdAT0iK3TUsX8sVdtkWKx6sckOrR5ePBIt3/m0zfVa9fAE5ia61XQ0modgbn6YkrbnXRbjvgepFPpdEgU77/A/WzoatTIaRexzUUTICEgXbxdWcq8CO86+XNOudSezSiUHL9bnLe3o2DsYh+xYtTE4NPVKxTlKgmbvQpfCG8hYiYxTP89zYxpEr5R1DfI1PCTJF5p4txc6nUWfBzMmLAnlfm7qEsgxH+Ra5Tq6TSwK/oK/YDc2Q088gwJSUbhvLSjfEgl7ks2TxuSMCS26bvzATkoJ207lgDZExb/ZpFfVrqmu32/ba1y/2MjoRJ8wWeWQjjp2T381GG3CtDeV4YNLoHTKXjiNCSuIe+ms+mVn2MmbOyw3RwEwoE0gyCXSwUOfjphBOFQTABMCyzdEUtoki8SlYtP+/ZJrOvi9JiXvmtRs6IYTTOyjTG1Ynvw/zC6Mrnpx+xRC+T3AMRmqhEgZbQ7dvJxFmgOMdGwT1JYnZWNqzFWnIsdhzNTdr7nBb5CdJBTt4jw4E7OUV8k3Iqgg+6gmJHfLvkSOq64QMXa7Yl94X79Ee0PPRm4qrUS2/aUeLoVGj8t8eHjSs3fEecINH3pczznwY3c9BhMxtpvJnbEEKCwaNAr5J6FcDLsmFMtqQ5pxAKXijtle/1kKJR9nQwQBi11uj6QAv X-MS-TrafficTypeDiagnostic: CY1PR0301MB0905: X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0905; 25:7zMfbwQToxN2E7spRHJzOTSFBPp0S0aI+gnK0RYfaKmTrj3fDJapDYEf1kFeoZoszWSfu6qCUKZZc4uAEWcxmZ0oiV6SehFpWwr/5iMGg75m4NQLUT8JN27TYsYMb27+HV0JY2EzKmpv2ORCUGnFkYGCda8tkHw4p+vHeWB07MEGYVrrFgPmq7tVxlOTsRaKXwlrFOkL8BMEqbcH2AmWscpVgnWUecNrf+mdGwmEIEeL7/kBGN7Cj5T3EPM+66o6XT3nc8wDLw+z9tzsHzsmcpGWdrBNxtgr1V4vVPU4XPLrIeervuWpRBb1CX31Z5Zcwbv0CoWqBk4jPucQIuGA145zVDSYoV+SCpLfLbEa7mnjKEIeFJdRMBJ5bHFfpDjtJF864GHqzhgJsE32KXScsKO+rCZehAWFR35/EsJ0nbv9KjIm1mxfk2kS7eWq02+1fDA/2noV2OWBI2ewvLFvrL0r4gV9GlT48Xjt0CxQ8/qFP0zDxum8cowgewPt/0C1exXp2uZSpxzr4c3o+CO0E8HeCfiHPa+HNrNVqUNw8JlktCRjpmJFk65H3dokzEgfWYyzMjQEoB4e6apG/jHrIOfKoafJchxPv+3byVnUFu3nQUBZEJ7XnRdHee5g2Rllsr9vAvSjTEZUg6PXTJ78w6VroSITUiaTHlYE7ejEislzY5MZfdxuEKJ7j4pImsz37DG4LZGe1St1yA6k5bIXLcVEaTw3dQT1UtMWsaarRkusMj7DTGWQCFCWuH+sPj5EtMjmau5rCt8tWq1qP4OrSjg67SbwoQ5N5KoUFEzv4VEZscyKNyf/uK2CC4Rdc71jJOQdA1lIgA4Fkox0uV8wyoai4K2H9AwMltAzxApMoFC+raorTVkQz5ipzZ6UX/DR1BysX9oXOezfhJ33JdpdBxZ00dw+OvOTMRyF9BrQmM4= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0905; 31:ZyKgwFfBq19OB3hIjHMIzu8LxUad1WNMupaG9HHpzV4kzon3Dfi/XYFn8m4Re14UcMFdAmwZuWdguEQuIx377A+sbhXgSPJWDQvCsYo1/r7RRWrGypWTthGzg9chSYeKPu/b5FeFc1l78Kx7VXaJbadzE9xwPyCwMXP1qXNEZAU89mVBwhbUcQDRPE2ao1wZbwLbQGDElyGxKZ7AStjhJJdrB/Hd+1RCnSzzGnfmwqO3ShJ12y0sOeqFKhxR4837DD33yvvwNk6zMMX92N7us5iUz1k31i9MYmL+ee5pVjwpOscKPZBTMoWc3bahqU0BTGdCsRKyKWayQFaK19BZet3wo4dKMERXsKA7BqXQs6fNl8KcVng2ZGpWw0jrkj2s/m5gaL4bh/VfAg3tATNAr7txVWVAlpA1pyrF6A4+FAsVs1TR3L8RZ9iyY4QLSuuFHM3eRcZvKVhixZKqf+rItcuhltvw8coSo3dYS+mrjLirgFviqZSRa9FEJtUXg+2YsXc3sxukdgLnf+BlEi/BwUIltbSodOMCZqlPXnDZ+t3+5DbIkA8xJAmaHEuLdq4Ac+XkXWQ9HGk6Q8IrjEsHsHBpSuYjDL4K/evzMCnQRH5GJlh3p+YAqKs+Lv6AQw2ESYkK2rCRUWpwDD0aJlhoT9bWKkPMz3X8j7IBUAsrKWpWT3oILZekXUuhGc3ax+VWvRlBzLYpvnaD6Gk31cA22g== X-Exchange-Antispam-Report-Test: UriScan:(192374486261705)(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)(8121501046)(13016025)(5005006)(13018025)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6055026)(6096035)(20161123565025)(20161123556025)(20161123561025)(20161123559100)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123563025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR0301MB0905; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR0301MB0905; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0905; 4:tLgIMRP5OsWngbkELuvBwAUkyU5Hie9OjTdhLT1G?= wegUnbjyTRpLBNJx/JumqiK9S+YuNqnDuZJomFtlvuHkTqr+7QF3u3lRMK9tRXkk1/nq3rvAJFWUjy/0GB2qaUONEgiyzDYK6lDzTPqJKoPnGGTwgwvEKSJpyfZ5lH8s8VW2aFdn1DhgvpPPe1CUqihCnRJ/u3Ob+Djrr04YAx6v1gdnDCZEh1AtXBaB8VFtJW8AO89gab7wEGFreK+oK/jq6HhfsUpcQX10MVa5b861ynqNve7lC4tjlKeil4dTzm8H1wp+1Am5wWUiLWVWaCUr2bg70NTD3bTsgfqaEFKqJAbIdwnd5MpAVMZsLt3thmyIIjrtIYQIIXNtF6kBggZo1P6ATTAZ49naWP6z52LNpdLHVwLj2LmfErm2Yzj5HYRm721P0q0lEYVtgFdvAKiuln5O1Ryvwuc49MtqExW23uPv9CfQdBTu/f6nscyoV7FLjqSpZwdpgxgRLZAHQrQQQa1Vv0Nk7PZbXMT0k4A9qmQiBny2nbOe0A9SKaDNZaccuT4bZjnidH0T5LSOiaytLjRYPub3iWoenZ8foZdhEE6S9EVQ7PF3pI8y8rnQzcPip+KmuiUBYUZ7wmA5Lksm88MDIogI5EEJQGsNkdx6z6NRv2QCpU40yUsd+BOYdywrX/ih83zNnm/Op6YRpKHzlEr9z20LaAk/89af71zy2WQdmE83Y0FNizlut70gtgwYiDhCKaU/CuVQyJajBiza0AdLEBKMpBKsKjbIWZ0ubwNz8BdmI26OnHUYfKJAOtyiXlhUmXXCLS/sW0fqxJvbXkYyngEJVpFvQm2uLy4B2dbmcI/tQt11NRyoXOAMrqV3bBDf7VYp2qp8QJc8zGnGPzceaXVIpLujErSyI+LpDBR9cpkfXWO4FoNtILowGFUrfsWx9QmYZu7YnoyMFn1i9S2E2Zs9wyn5Pwyz8m8pTD95d5SqfpPC6pmBJskI275+gJOdqwhYJT9B58JWu3VKmIOaPCWsdB1HsToT15yftKftD/Oob8LAj1oYf1G1iWlf8zPX4W0j2fGVgAK7UQfiKMkB2IuQoRmd7rPsLWIVh50e/DS4a+sYLIXEvV+VQARwKql/H9XpUdP1O0Wvp2gbuozFIX9lWRIQbY7ACJK1r2gZ+f5wsgY/4Lgc0M4P4/86zB+Kby+mgtXI1ssZnmTWxE6bW4apyakTPzj+m1eC1FiWORMcCsZFR4cBA8UsmboMksxsFMslULCZA8OAhtMFIXnPjU9mWXN80si2QNLWGg== X-Forefront-PRVS: 03793408BA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0905; 23:POBUrQMiscbHxAR3B4zaXijQCRx7v/x9262b+Qc?= m/9MmMRghs/BfpwGCU3nRcv5DrZeLFlAjrOKfvxJmNcBcQxsGDkHZAndnzGeliMKBHtb5BuA4d5/6zlS8LFbgHAPwuUYNUgwIRGraPu6o3rVrTb7vFmfQb91RzIscFpCwKKG1aGtNeSGReZwSNYtIF456CQz0MCj1TJH+XAKP3ffetPhGcpZd4Vurksi6qmH8WtPt92C+558CHQXHOij4tOyQaQbqard0o5IrD8wyX2C5pttzgE3gquCDLnXUlulUxLZ98XHwNsLDSd1FzvDIgOru1VwWrgVcQAYHGHo/VlL+kkHmQMNMGcX1Tmu7ViNzDPc1b+uQqZxxHzv1M9H/chK4eTXGqbEQ1nJJTQIzbLRew5uU2gDY23gpxuVwKAFLGw0LBdj4OsN6Ej+o8PsoFu+omMk3SxsjhfQwyH4wtVrrto79mkUNzywSdH7Iad7JaGNzQS9h+S7RIAeXFsLylhBir4z5sacJT/gVFlscmfeAl0V7Sk+2cGvQUewYmeqdTjqrYXVegVUmvHC3RHsQSTmidfivtAXGtAWuUdtlS/Ir8TS/9cVTK/U9SXpevzFgl4Lkxe5iC/rSLymVrVmDdE+50UP8XHK+loS70zgXdtt67bbrZAV83UWJs+QaTtD65lOUC4pLbxYrAM5fi8+Uuu+8DMJUyG4dPtXm++N5Iw9pF7hJXaI/PsyYvtnpCmnkFfhxOTN0tAqW8phgnpGhVRdJqPrt7A2hdphpw1/XqURbuwv+qcVhOaRWL/8W7NJxw1OLykACmCswuZeW67Kks6L/x7EwYKl0wg6/a71Qcv8d5keU2lW2mSr8VQ1dMjAormUP6HRWLVOj1AP4KfhQ+bCYoukOJz2ZAKRxPvy/P9Hv6iguFcqOb+QT2fjNtOwLivua9msciyZreErNLhDpQheE5WuXU8dbKvyEOuzah+luE1D5eLduyZQd1+VrIw79UEaYvyLMcRMYRfznAUK8Ye+ZXvXVHC0E+iqeh2mSB8iwes9P8lDJWiqgH4+PmRZXPSpJBJ9VwrsrcxcHsBIvxGzsDtpzxX8HlOBtz7XubRQpbuqCeKN2t9nRlEy345jWsSNfwr30Es5q2A8dNrLi+xa3ieY1NfInZ427LdA+i1ltqPRExskt29KZIoUdXPPPLJTX/4kQLr6tmKNS4v/L0sY+TDyWWkc5DbTVbal+dA4Hy/lW47G5tPrCmnSS04gwDgRJK0MCJPhOxnJSG2U/PNVMW8JhFFdssKv+0ddZWmctaUnqap9mS+wm8o55YYfI+KhtBYBB6/UKArNfgadTZ8HS X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0905; 6:c1wPf6Ev6aiPhxEjpYj24mwyh3ibDiGgT3B/x8sj?= vhLK+h7A7b3a4GfECWDteGnZii8vED0TqeLhuGafFMarb7k0/x5AByQHagnzyVITkl6n2tjAUtZjiVCck6HAuHBnF42GK8W85vGO2l1Ee2TWhYeXMzoOcEqWibhwe9Su3yCuHmsLxiBcCtR7RX8iB37Ap6Tqa/2/gqbIL7iHCJtGjHJPBLZCNFD4wMlM1M7/meCCrTmqti1kFU2D5QtvEOk3zSTFbChwDpNHAof/JP+MrCGcb71wPeG+rTKPIDDD4tXSaaH8/ruF+KfpBcUFoc/c6lHPgb5hi6+dF50fmT42JEB0XYUTBSWDf5L45zQjIodlEIh5TxkynGoqzlhNiR6zCBH2e7W5e8YLX9oGOkNLgkL35XXot9/anhqEu5tVRy8f27QySRtg7+7OsjlYuPWeIg5R/Lkn2+mPQwFQCnCCFNIQYDcpHzrzesU5yqQf1u/+I44kCbIPvPvK4djmUdGqDjcmVYL/txaSdtPgY1tidXHHYRa0UY/Bb9mQMUIDggGX7uV2BAEMJDvY/p7Mi04xA3Nl8pcZH5c/PPvbOekXViaQWrCg/YABFcPnRFJJ/CH7V1Gntx19EUSG49gUfNz9OGZ8pvSEZvLa+r8J1Bs2B09wmxH84R7VyN7PLmuIVSp4iZFrdogIYJK5vcIpD9Q2xPSgCNZku4z3+q1HqSSHTcj+etogbkqPjbR52/0Vh3e1bWNiOhR1MeHiI/iPek0mUKvxRZ6iYhRzTOjXQkNjHHwaCVNXrW/u3LP5rmxZCiBzXWM2PkChKob3lcRWFgTkpkfz6tIF9vsF15ICP07F/+tRFnpxaswvPu2L+BhXeah8OZM6vtECeHbyvXXRK7d37WbS+aFeKTmE2r7JO3a5WLgPJxRBgaSohkS1YlWHcD+JPn70zqdBq4vNkzO2CZzuxeuQU7DM/s2aR0JNmpKYnQ== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0905; 5:NjAIz1h6mWeaOFFw5nIm6HWVlN+Rm5LDx6TKjOW/Lv17NC0m2wlx4FI0i0aqMq5+RQ3OL8l2sUqUNkVXBGUCyhOEE0wgemm9u1lrsgPb5zT3W5GtsvyHpZu7aWi62p9f1+0SlnfXDhTxgGJ8Z2DFBu5C4Lzxxe3enicQ/CwbZOvmZaqnw0G+39XG5rK6QSCTQpz0Z1NN4hrt64odq7blrBO8Xe4ag+I85b+Y8fsRhHHSIfhJPYnFzdDSHCZJtPDvCACfhx6xI6KpN575/lCsLl7lwQkKu0qrrH8cqGVxLJfTImqRr3/XE3YI+r5d1QGmg77sTHCcPLkp6DVaFkiLewLbj5aVbfMfg2esnYJUlqVufMcpguY09LF4QYjxa//AhGhR4IlCvhyUwTOq59eiojhQHJC/dg5FhQ6D48SLh61eXEkX/aOplf8CYmL7Y58a8Thv42vUXsrDZZ64g0d6OePNMSc7xvf5/jsahFEics7qI18V6kCG6o6I4BBHe1zpfkT27g6iFT0gPJeOq7ju5Q==; 24:dtN8ggkj/h9vD7kS2HYOn6Zl02q/TF9YZIm5vYF/7huitAzAI5bKNIedRqfEJQSK4+K9P0+Z4VesREMqpj0umI21Hyz1a28AQ+sVeuyWtcI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0905; 7:tCcu/KRV1+LOVGLNZbRpq0YX49BK6AIxCcNt+a/8Q8Bi8d7rcx93MazTOjTm4wp3lx/Up5u5AliXBiofK+4nFBIJMCZrNrBKOx3CPGCvvpXD654Uq37MW0zsw9CX2u6HZ/oW3rU0mqSOvI1B39T9J/GMSw+bVDjKLmyLg81a0Ll1a5mv5PDOLFRZcDaGZq18gB0MwtCwa8t//choVamRdc3y9UmzoaFBv8NX680dtO4ZbMo3ROd6S1kk1q3rNeQWzTMQ3+iPntf0xlP4i3VFi5lOi4Oue5mmubyzA3Yga1DpD80HqZfLStRftSw2JqDsGm/OVhmWK1hqeIeRFi1TJFBqw1QxZdWTY/qwGMkvGB3kI1m3eeTqjWxQyGPu8ejlJw/SkGQ2HJatm8SUabkJ3pTVbTpCbbj1cZRfmFnqQKkYGGgq2zl3PRPb1xZJieMrzQO0d97jm3BSU/IqGfgxbRfkBXnyvdYT0M0dM3Y0YReKtJHjaaZ9kz04qlTMD3ANlcZuPeu652lQndd+M2ve/buPBKYdnZkYfaFj/5hBIJSo+Pg/IPMsPxv3VtKGFc2w6QLl6N/YBqUjuVlpml7RmLpw4u9ubys0bhX/j4NUIigBxheaUYVPM/AYUd3Uoc1PYS3sYHxZgPwnngscMaaWcj7fB3POZ8xxtYYd1sg+rFaOTJe3i54iOx4EtIKgTZfNv5T/YSPKkpvDSqLznLdGqkEWHFG6F6Z2rURZtHWnil+B0N6y+fL4J64OVkgYDTQOl9+bnMDfFWvV11WS2NQRpndIls35brx1mn04KBUgajg= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jul 2017 11:23:34.0997 (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: CY1PR0301MB0905 Subject: [dpdk-dev] [RFC PATCH 1/1] rte_security: proposal 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Detailed description is added in the coverletter Signed-off-by: Akhil Goyal --- lib/librte_security/rte_security.h | 405 +++++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) create mode 100644 lib/librte_security/rte_security.h diff --git a/lib/librte_security/rte_security.h b/lib/librte_security/rte_security.h new file mode 100644 index 0000000..b46e096 --- /dev/null +++ b/lib/librte_security/rte_security.h @@ -0,0 +1,405 @@ +#ifndef _RTE_SECURITY_H_ +#define _RTE_SECURITY_H_ + +/** + * @file rte_security.h + * + * RTE Security Common Definitions + * + */ + +#ifdef __cplusplus +extern "C" { +#endif + + +#include +#include +#include +#include + +#include +#include + +/** Security Assosiation direction for IPSec */ +enum rte_security_conf_ipsec_sa_dir { + RTE_SECURITY_IPSEC_SA_DIR_INGRESS, + /**< Ingress path */ + RTE_SECURITY_IPSEC_SA_DIR_EGRESS + /**< Egress path */ +}; + +/** IPSec protocol mode */ +enum rte_security_conf_ipsec_sa_mode { + RTE_SECURITY_IPSEC_SA_MODE_TRANSPORT, + /**< IPSec Transport mode */ + RTE_SECURITY_IPSEC_SA_MODE_TUNNEL + /**< IPSec Tunnel mode */ +}; + +/** IPSec Protocol */ +enum rte_security_conf_ipsec_sa_protocol { + RTE_SECURITY_IPSEC_SA_PROTO_AH, + /**< AH protocol */ + RTE_SECURITY_IPSEC_SA_PROTO_ESP + /**< ESP protocol */ +}; + +/** IPSEC tunnel type */ +enum rte_security_ipsec_tunnel_type { + RTE_SECURITY_IPSEC_TUNNEL_IPV4 = 0, + /**< Outer header is IPv4 */ + RTE_SECURITY_IPSEC_TUNNEL_IPV6 + /**< Outer header is IPv6 */ +}; + +/** + * IPSEC tunnel parameters + * + * These parameters are used to build outbound tunnel headers. + */ +struct rte_security_ipsec_tunnel_param { + struct rte_security_ipsec_tunnel_type type; + /**< Tunnel type: IPv4 or IPv6 */ + + union { + struct { + struct ipaddr src_ip; + /**< IPv4 source address */ + struct ipaddr dst_ip; + /**< IPv4 destination address */ + uint8_t dscp; + /**< IPv4 Differentiated Services Code Point */ + uint8_t df; + /**< IPv4 Don't Fragment bit */ + uint8_t ttl; + /**< IPv4 Time To Live */ + } ipv4; /**< IPv4 header parameters */ + + struct { + struct ip6addr *src_addr; + /**< IPv6 source address */ + struct ip6addr *dst_addr; + /**< IPv6 destination address */ + uint8_t dscp; + /**< IPv6 Differentiated Services Code Point */ + uint32_t flabel; + /**< IPv6 flow label */ + uint8_t hlimit; + /**< IPv6 hop limit */ + } ipv6; /**< IPv6 header parameters */ + }; /**< Various tunnel parameters */ +}; + +/** + * IPSEC SA option flags + */ +struct rte_security_ipsec_sa_options { + /** Extended Sequence Numbers (ESN) + * + * * 1: Use extended (64 bit) sequence numbers + * * 0: Use normal sequence numbers + */ + uint32_t esn : 1; + + /** UDP encapsulation + * + * * 1: Do UDP encapsulation/decapsulation so that IPSEC packets can + * traverse through NAT boxes. + * * 0: No UDP encapsulation + */ + uint32_t udp_encap : 1; + + /** Copy DSCP bits + * + * * 1: Copy IPv4 or IPv6 DSCP bits from inner IP header to + * the outer IP header in encapsulation, and vice versa in + * decapsulation. + * * 0: Use values from odp_ipsec_tunnel_param_t in encapsulation and + * do not change DSCP field in decapsulation. + */ + uint32_t copy_dscp : 1; + + /** Copy IPv6 Flow Label + * + * * 1: Copy IPv6 flow label from inner IPv6 header to the + * outer IPv6 header. + * * 0: Use value from odp_ipsec_tunnel_param_t + */ + uint32_t copy_flabel : 1; + + /** Copy IPv4 Don't Fragment bit + * + * * 1: Copy the DF bit from the inner IPv4 header to the outer + * IPv4 header. + * * 0: Use value from odp_ipsec_tunnel_param_t + */ + uint32_t copy_df : 1; + + /** Decrement inner packet Time To Live (TTL) field + * + * * 1: In tunnel mode, decrement inner packet IPv4 TTL or + * IPv6 Hop Limit after tunnel decapsulation, or before tunnel + * encapsulation. + * * 0: Inner packet is not modified. + */ + uint32_t dec_ttl : 1; + +}; + +/** IPSec Operations */ +enum rte_security_ipsec_operation { + RTE_SECURITY_IPSEC_OP_ENCAP, + /**< Encrypt and generate digest */ + RTE_SECURITY_IPSEC_OP_DECAP + /**< Verify digest and decrypt */ +}; + +/** + * IPSec Setup Data. + * + * This structure contains data relating to IPSec + * used to create a session. + */ +struct rte_security_ipsec_xform { + enum rte_security_ipsec_operation op; + /**< IPSec operation - Encap or Decap */ + enum rte_crypto_cipher_algorithm cipher_alg; + /**< Cipher Algorithm */ + struct { + uint8_t *data; /**< pointer to key data */ + size_t length; /**< key length in bytes */ + } cipher_key; + enum rte_crypto_auth_algorithm auth_alg; + /**< Authentication Algorithm */ + struct { + uint8_t *data; /**< pointer to key data */ + size_t length; /**< key length in bytes */ + } auth_key; + uint32_t salt; /**< salt for this SA */ +}; + +/** IPsec Security Session Configuration */ +struct rte_security_conf_ipsec_sa { + unsigned int spi; + /**< SA security parameter index */ + + enum rte_security_conf_ipsec_sa_dir sa_dir; + /**< IPsec SA direction - ingress / egress */ + + enum rte_security_conf_ipsec_sa_mode mode; + /**< IPsec SA Mode - transport/tunnel */ + + enum rte_security_conf_ipsec_sa_protocol proto; + /**< IPsec SA Protocol - AH/ESP */ + + struct rte_security_ipsec_xform *ipsec_xform; + /**< IPsec Transform */ + + struct rte_security_ipsec_tunnel_param *tunnel; + /**< Tunnel parameters, NULL for transport mode */ + + struct rte_security_ipsec_sa_options *options; + /**< various SA options */ +}; + +/** IPsec Security Session Configuration */ +struct rte_security_conf_dtls { + /** To be Filled */ +}; + +/** IPsec Security Session Configuration */ +struct rte_security_conf_macsec { + /** To be Filled */ +}; + +/**< Security Session action type */ +enum rte_security_session_action_type { + RTE_SECURITY_SESS_ETH_INLINE_CRYPTO, + /**< Crypto operations are performed by Network interface */ + RTE_SECURITY_SESS_ETH_PROTO_OFFLOAD, + /**< Crypto operations with protocol support are performed + * by Network/ethernet device. + */ + RTE_SECURITY_SESS_CRYPTO_PROTO_OFFLOAD, + /**< Crypto operations with protocol support are performed + * by Crypto device. + */ + RTE_SECURITY_SESS_NONE + /**< Non protocol offload. Application need to manage everything */ +}; + +/** Security Session Protocols */ +enum rte_security_sess_protocol { + RTE_SEC_CONF_DTLS, + /**< DTLS Protocol */ + RTE_SEC_CONF_IPSEC, + /**< IPSec Protocol */ + RTE_SEC_CONF_MACSEC + /**< MACSec Protocol */ +}; +/** + * Security Session Configuration + */ +struct rte_security_sess_conf { + enum rte_security_session_action_type action_type; + /**< Type of action to be performed on the session */ + enum rte_security_sess_protocol protocol; + /**< Security protocol to be configured */ + + union { + struct rte_security_conf_ipsec_sa ipsec_sa; + struct rte_security_conf_dtls dtls; + struct rte_security_conf_macsec macsec; + }; + /**< Configuration parameters for security session */ +}; + +struct rte_security_session { + __extension__ void *sess_private_data[0]; + /**< Private session material */ +}; + +/** + * Configure device(crypto/ethernet) to enable Security operations + * + * @param dev_id Device id on which Security operations need to be enabled + * @param dev_name Device name - crypto or ethernet device + * @return + * - On success, zero + * - On failure, a negative value. + */ +int +rte_security_configure(uint16_t dev_id, char *dev_name); + +/** + * Create Security session header (generic with no private data) + * + * @param mempool Session mempool to allocate session objects from + * @return + * - On success, pointer to session + * - On failure, NULL + */ +struct rte_security_session * +rte_security_session_create(struct rte_mempool *mempool); + +/** + * Fill out private data for the device, based on its device id and name. + * + * @param dev_id Device id that we want the session to be used on + * @param dev_name Device name for which session is to be used + * @param sess Session where the private data will be attached to + * @param conf Security config to apply on flow + * processed with this session + * @param mempool Mempool where the private data is allocated. + * + * @return + * - On success, zero. + * - On failure, a negative value. + */ +int +rte_security_session_init(uint16_t dev_id, char *dev_name, + struct rte_security_session *sess, + struct rte_security_sess_conf *conf, + struct rte_mempool *mempool); + +/** + * Frees Security session header, after checking that all + * the device private data has been freed, returning it + * to its original mempool. + * + * @param sess Session header to be freed. + * + * @return + * - 0 if successful. + * - -EINVAL if session is NULL. + * - -EBUSY if not all device private data has been freed. + */ +int +rte_security_session_free(struct rte_security_session *sess); + +/** + * Frees private data for the device id, based on its device name, + * returning it to its mempool. + * + * @param dev_id ID of device that uses the session. + * @param dev_name Name of device that uses the session. + * @param sess Session containing the reference to the private data + * + * @return + * - 0 if successful. + * - -EINVAL if device is invalid or session is NULL. + */ +int +rte_security_session_clear(uint8_t dev_id, char *dev_name, + struct rte_security_session *sess); + + +/** + * Attach a session to a crypto operation. + * This API is needed only in case of RTE_SECURITY_SESS_CRYPTO_PROTO_OFFLOAD + * For other rte_security_session_action_type, ol_flags in rte_mbuf may be + * defined to perform security operations. + * + * @param op crypto operation + * @param sess security session + */ +static inline int +rte_security_attach_session(struct rte_crypto_op *op, + struct rte_security_session *sess); + +/** + * Security Capability + */ +struct rte_security_capability { + enum rte_security_sess_protocol protocol; + RTE_STD_C11 + union { + struct { + enum rte_crypto_auth_algorithm algo; + /**< authentication algorithm */ + enum rte_crypto_cipher_algorithm algo; + /**< cipher algorithm */ + uint16_t block_size; + /**< algorithm block size */ + struct rte_crypto_param_range c_key_size; + /**< cipher key size range */ + struct rte_crypto_param_range a_key_size; + /**< auth key size range */ + struct rte_crypto_param_range digest_size; + /**< digest size range */ + struct rte_crypto_param_range iv_size; + /**< Initialisation vector data size range */ + } ipsec; + /**< IPSEC transform capabilities */ + struct { + /* To be Filled */ + } dtls; + /**< DTLS transform capabilities */ + struct { + /* To be Filled */ + } macsec; + /**< MACSEC transform capabilities */ + }; +}; + +/** + * Provide capabilities available for defined device and algorithm + * + * @param dev_id The identifier of the device. + * @param dev_name Device name for which capability is needed + * @param protocol Protocol for which capability is required + * + * @return + * - Return description of the security capability if exist. + * - Return NULL if the capability not exist. + */ +const struct rte_security_capability * +rte_security_capability_get(uint8_t dev_id, char *dev_name, + enum rte_security_sess_protocol protocol); + +#ifdef __cplusplus +} +#endif + +#endif /* _RTE_SECURITY_H_ */