From patchwork Thu Jun 29 20:49:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Akhil Goyal X-Patchwork-Id: 26043 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 F01305689; Thu, 29 Jun 2017 22:50:27 +0200 (CEST) Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0052.outbound.protection.outlook.com [104.47.40.52]) by dpdk.org (Postfix) with ESMTP id 9680A2C2A for ; Thu, 29 Jun 2017 22:50:22 +0200 (CEST) Received: from BN3PR03CA0102.namprd03.prod.outlook.com (10.174.66.20) by DM5PR03MB3275.namprd03.prod.outlook.com (10.174.241.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Thu, 29 Jun 2017 20:50:21 +0000 Received: from BL2FFO11FD045.protection.gbl (2a01:111:f400:7c09::190) by BN3PR03CA0102.outlook.office365.com (2603:10b6:400:4::20) 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; Thu, 29 Jun 2017 20:50:20 +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 BL2FFO11FD045.mail.protection.outlook.com (10.173.161.207) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9 via Frontend Transport; Thu, 29 Jun 2017 20:50:20 +0000 Received: from netperf2.ap.freescale.net ([10.232.133.164]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v5TKoFPQ005297; Thu, 29 Jun 2017 13:50:18 -0700 From: To: CC: , , , Akhil Goyal Date: Fri, 30 Jun 2017 02:19:00 +0530 Message-ID: <20170629204904.23684-2-akhil.goyal@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170629204904.23684-1-akhil.goyal@nxp.com> References: <20170629204904.23684-1-akhil.goyal@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131432430207838882; (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)(39380400002)(39400400002)(39410400002)(39450400003)(39860400002)(39850400002)(39840400002)(2980300002)(1109001)(1110001)(339900001)(199003)(189002)(9170700003)(48376002)(2351001)(110136004)(105606002)(38730400002)(50226002)(106466001)(6666003)(2906002)(2876002)(76176999)(6916009)(47776003)(8676002)(8936002)(2950100002)(81166006)(77096006)(50986999)(1076002)(50466002)(54906002)(86152003)(33646002)(53936002)(189998001)(5003940100001)(305945005)(104016004)(5660300001)(356003)(86362001)(4326008)(85426001)(36756003)(498600001)(8656002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR03MB3275; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BL2FFO11FD045; 1:yydiwM3Wvld6jM4/gSbd8wkym9f1F45yEDOtZmiAWA?= L/2yubDkdCPOkqg86kNTGZcTzvSt92xBQhjCVolGLzbvs/SDZHM+Ip+6BVc93YVyK3BWdCj7QuP3IxDSgZNcBVk5BcfsSWDROQ7QOPVW4cVUTQ+B1g/zrWujhygQKoEsKZk0VG0IZGhYmDB89XYfYbOQ0VzcUChrXuzff/frAE3kPrjC6puZMiA1Vm1y238xnf3F/Otfh72mGawCtkHUIvcOfeeHEMrjpwOm+Pehm8sMvagcZy0z79c1QKdquhxJ3N8rVSjLW355LPBJbgKY0Gaq/B7rTL1MKs+nOQx0V1bBfnq6jAU2AUyRqXXjFatMF6OUupFEllbYU3OmXi5Qj2RbtFgmyeW95n0zllJBJX/RxW0dO3UXZNLRgp/VZ/02PZ3dTxG9+rT+33C0W/9sPNINTbjZS/8pxSDVsRjxciCItLQTF8GvStB2As03AMKVEkHyq7SGEOx/FlSi9qhpI1RAFHsGTpyG7HEnO6aFV/r/7BzK5NCytEmmX1R+aWFs6pPtnQdTqECpp1Q1+0gDlTsvW9TL5lNc4CEZznsWaHsQwNpvI2kxmGPG4vPmT0fiesVhB0lpGCP9fLkx7VdoWwbUpWtLpHI4AFDu3CugJ5LUoYIBgZEjUuRx63zUzOqb7e+vZkrJexK7XSOV8DtttLz6dssQJSI0s7YS8zJ2CTktcJa/As3xJNCcRsZ2IRd/3dKSsdql5G6XGIzO7CCHiGLUH+z8jwlYpbO4H9Pjj5MlknuKrYsInmISF58COVWdxvYfvrjWnR+XDfQHR8ji0jtv4V2hSy1AEDTHipnivK7yohikIsrn9ZY15GHh8GDmT6Jn46t5u5e1KBUGdzkacvZ871Nd/aK/IqNGmJ/r48/1EM+a/hEQrBIT/2F9r3puWmfULvgJ1OCxqVLyVCpukjZv7k88oOW10+PxXy0Dy/BoG6z01vGPYpurN/UgGWpzJFp9VT/eAnzTlSCBndcKNyYIE/tSnBTNMpeq/gQ4iF0ZqAmWzrVce7fhA1Q4EU8JFcave2kZtUv9q5/64bKlfoRXSqcyN0veg9ORIGWefaVw== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 87e77f1d-9c94-400e-c944-08d4bf3074f5 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:DM5PR03MB3275; X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3275; 3:m4gKf+vJBuw8AgDwhLK8g5L7QV+25Uhnzd1ZFT4G3W1lYCwkkK5Z/W35MlJ11/a+rgVx/cAHvnfo1WkYLuF6+DZ1A7jbCJ+jW08ldmi0Ot/uYW+4lkq9mC7YGZvxfhMhCduyt0/X5EChDjE6At0cMHv3FTQRwrwdUXihgSR2soI+Vdw9xik17fU1DKwgc0NDfzFv+PgtqDnGER2LPJiXoTG0n8vsTsezeG7Kfa2oM6LM0eYZAanQyycO3O6kx5iEjR3VGiszoDjzxTcJSfwvX74V680meB93Ibe/8jAAjFSJE/o57UC96x1eg7q3xssuP0Fn8eXSs8YchT4euxc3sBRUQQzWsNYxHAfqpV3FSzzGKGX9HubIXSzG6kR/GhqMuw/h0QDnJWg1W7w02Nnz6cU9upE8seNR0KAF1aLHEivxAjgzwUMDY2LxbIrvBVN79e4eqVzr9usIddXc5l9dJo9USKgu0fq1l2RFy9SKhyHdN4MxxSdumUjGjpuY5V6E5w2I0Lmqh0nD6yUf9GjvHqCyxJJ6G4wFQErdrBh2lPp+MBHUbAXCJ1XPiOZ6BX2Jz0XjRF0MpHP78a6Z+58zZ+7Yh4GHBBZsXaYuJLrSgF1DJIrSfcz3CykYfRivayYpBxC/fUjpx1t4y7LXflTtVpx2MxVBFRlCMZjceSBKng4rPcbwrygTANrKOascjLs89iORpTtGgRReyaHdvQsOMNChtMzXLl6FY+2wEvNGQvXyHWu7tqicvC/gIhJwfbnFKHxU5lwqM5jWQtiFS3E4mVYqBw3K52JDoHZimhLT26eT2UBWkPtwqlQ9Nxj4XdtEjWLUGVqknHSoztp/8zfOGei+1FtlzWanO2SdBCrG5kGZyc20qTLNC4/vBow5cq28 X-MS-TrafficTypeDiagnostic: DM5PR03MB3275: X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3275; 25:LKJFOKgd09Z5RRumTif8Cgj0ROATyuklcXMLV0qzaR8Y5MdunT+OLDtqzfPO0aM9uYEA7SRv4XwneI0dz0KT8W7ZLSoiC+g8n8AbqU63qIEYNVItmAEbLFqJ+JVVCIpifYJk65RVlN22JhpfgS8o+VQQu2XQbsMGGTnM4T6PydH5pb7+7/zTrrdMWiGsdbd+Ei58s/Ezbkakw1oeSedf19B0FdNIJudtj5byIMVwZt4QX/YNY5RwLs3VdqhiAvqGQ/5a1HJ5QJYZOd7fdESjSqRHkZAy1rCLTTqJul7O550Lx+MdMsqhcHu1zCw0yZBaRaKuow78wZm8IXQrQGEHfW/y2qdvTjy413qqv/7NppaPFdlLntgKXjBxR97iA723U7lHObj7cB272un1+hzp+TIytA+/TBSZA9Os4sfqR+QL4CBeyWQ8icaap9ItG5YHkttZTtLiAHd4JER4eaR82FOD67U6+5YWmjuh5D6qlHiCpewwwDaNeDBSJzpHzSdvd45+cFsITBCwGp9B5ESgMTbyI+6JitCF6qSKQ6snE3QMKqXk6pNi+rqpwCxntFeqmMNjUOcJlBfJyLg6kfAPZAFngQHcVeWWC2G+FDzCBkT4viy3ItebCP25QWhpZjmsBRqhdWDHoqr2TDIa0ZquXYRUZOa3LfKhsPxyjylehbH/VC+j7H6bWEwHsKUen4DcZ3iHtAFyvXHVqKfCcVlFPaWwUaMFzPr5IknE6hI0lfoP16jvRh1GrJ6L3KZayfSZv/sNLf6Anrp490X7r/LvV6AIhO/dq7NOOoGu9DYs8VI3NLDDWfhJAySMk2lol6j1IE3Gj3X7WExyCcE4gTCEJA7RDcnY5tPgPcUUP6sC+ma7bh1RZ3kpnTx6PRVEpZ7scspGLreqjMN3YKXf5HLZWO8tKvadrqPOLd3EVUHZ+a0= X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3275; 31:cuVEQGb/lKOg2Z3cUapA/Cn3Xbm7v8tqKCJ/yOSY9KYdoTJZoM4MzPTHhYDrCtMEsRrDN01GkkivDEa4kBxaMA2muN0TVCYmJfQoGul7USMdPJxISB6D5wPOyCCwSXsTmBjKlbdolgSoAwKLMUtOuYuOIr3mYdvXZf/h/nWEZtUJiTgxxkiBuwxXZoMeHpoOnGJ8tdHsj/iGVCF+AfH5VUQYi+HZN9WeQNq7yTrD2ASUFhMdJEwn6ZrC5O72/2vq5GedAybdxkfVlY/P4SUCrsf2SB6vSlzs2zbNu6E27IXOe867SlE545C9CY6j/FbnC8Pi5c+R9mhI4D3JdmttIb0io4ynGrml3P0h6zcK8cOnVDoOxX0f7aW5c3Xdghoqz7Pav2Xf8RXCCSpvw89BAwpt72/eLYff/wlC3O+P8ODHYaYM7zUD5Wf/KyMVyYbFA9sMz+AJ+bJcbNBTESNJok6mpy+h9duNndlidCjOdFQ9gvvqe7JyTndyawifz/Z+0UYHdcJs0EHFYyKogMCYNNrVKeWu3g3hWgRndV4HDoD8y3hfnjVeA9GcYQKNsgzw4f1ZkOR/OoY5cwCxh7p9kz42qRzc0xujRHPf/Nem+pN2eEJGh1+jlsEZrOpvHGMx4HqMQm3OSM44DbDgRMXumV3RZoHYFLaVhgXVJQXabX6Pspq7//Ol38tHdXA+EEPI X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(275809806118684); 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)(20161123565025)(20161123563025)(20161123559100)(20161123561025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR03MB3275; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR03MB3275; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3275; 4:6fk+T3kUO+ExwMyQ/JwCRixK9+tvzkPoqlsfVTJb2p?= /0lvv2u7991emh/UVEljDrfoGkwbE/v/L5EtPb46x2/AmbqJamvc5rcvUi/J3aHYs3EF21PsFM4rYzSwz4RJpQr26o/8jRqh8TqIi01JXh/r2t97cN9ZAq7KwezKGc5vLSxdGn3T2LzIooxuAf2x1q4xgfMd1QtyDQ7nlDf857Y0iPza7HrJR8gQK3craETTvIiAF9GmGLJ+puwbm+gIKp9NPNk7RpoEg/oUcqBRvTyCiKKpCPohn+clyYUv7p+SG647b5m+Ig+OCEUTas+wtzvL4JW/IctkVwYwp1l/Vofe0cLFhr0cfELTi3rKPoa8EMeVrS/jjHGGPAObAMkvVGVAF098ujKTkD1CYGMnRsHpu9UckgDifvge84jM385qaLL9f8m0eYyV4NDLsy5aF+gY4taFlZPrCzRHdxgLg5cavgm+8XcgJWJDFrNPvys1B2jnn0l/QOAKE/uq8bmyjLGdDXSaJTuzozvmNpBMGv+A9j3JoiBH/qHNNPnxsoeof1i8DNIkJEBPpXR11c1VBxHhiTjY2V88yhN7urPHvi8ofDRnTjJcTNABUsprtuB2JU6We4wfeQJdEyuiDTQJauTSv9/ticUsewWTHnLahefTcrkVPm+ff6+4YJm/E2BXdfvtY95h1v0Z5S4FCGxPf6avINm9thVk5oFG+KuaAWurqEnvQ4C1SIJnhKuyYF3/WcYCvyALf81/4iUzhTqU3+BhLnZ8nP5h6AVh4n/lqtL0Gi3WzyA4PWnexnf/87YCHavy5M+1NqAdeWx1dVrNbwKUKFUgjxzByV/5Z0aH8DKqp3Az8Hz791BAUYHJ7XJk22IcIsN4HfAHfZ0iTjyFWl7NP1KNetU0W2gTLrVvaTvgKhfUxLWsR62AMdVk5VT8JcclmXQkIDEVECqSaWDLHnfiNYzL0lh0OJMGyStCSssXnpEns0cdc+vltDJCTAU5sccZQC0bVF0P0JM77zdtXcszjHOkngilY0tjEN8oL8E4dust62I+iOetdXgBnjNkV3ystAGqZHniBXgozOIsi+u4JnJp822Kz29IjlJ8fTY19wDKE3vgAUu/B1jGfBn63Cpedqx7DdGbWRVRwjPsOZ1minYXPqpUf3wBJhU6KmpLcY8d7/YJHQ9xC2Z3RCsFQmU3Qor1ADshq/MB0BT8yJVTuFxwe06AlOlzy0riCJElG2SLari2LD7peb1tvE8m8SfM4yFo4TU5MImE4L2B6ZnvPhQX+6afDTmMe91QDciAxNdMyR4yCcY/jEzEu4oOdx3Sps+dVt72jKVOKA3TJh X-Forefront-PRVS: 0353563E2B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3275; 23:XqyzyS5r8SA852+mjoKSMVErG+YlQmwFdneLDL7SN?= 7lX1gXODsGRKV7EWUR+aKJd84dzS4lQ3HD/qS0DalktupPuL2ZMGFv0XjraJq7V29oVx53rmkEOnVLz8IxZyr4c/Rs27SJK+6rBZFlAnA9MGTJOGQS95tHZy4XzRL2VY9RXkxtpyU+4nLkN9mUujGxoMTqdQrPGeQ36rm7lwwMS8ET2KGupZe41BXDWYzvxmciji4CJcErWfBNVTiTxXQ+PggawAEeoU6bVRcYXM1BWc2Gfa5bJtkgjbsG6R02s9Blu6PxhWgtC0sZgA4ALazDUn5tcyfP+MvAmfdXXEerjvZ7qetsNC5L90xL1swf5NySTLs+yHHwBoH6yenJlrZv7ZdZyF3qMPm0XRBQlAxv40HqApczcxIUdPmzY+G8Fny//1Ky7vrTpGdBbTKsFTwFu6Hdv13LYOhDFuG1yoMSHQ4UXBq2A//+kr8HBfeTL9Scw4wCyTBgZ8+UGYs9TCL/h+xDUXOuOI7ZvmHRDHwjMmJO1OiIAFqDziq+JRHckaXzhe0qCozvj1m0g5CisepqWwsZb0wso21ir/dLbPxeNDJBj6khAP24sSi0h9lEbr4NwsTTFFzPEZIuFVPfKjLCucVYcXfWnd8fZ7i5zqINzUuT5Bb7hrriMqHnuKhgKx/AODYZNPBKZXa3ArHzmLL9nzlPaBkHn8j+diiIl6/em2hm0cuZ7EHslxb9hThjKiyx6PYnoMWqlVv+11YWNz/hbtzNy3qSD1OZWRMr+f+zIwbRgen28RNgZJcRzTE93zoUs5E52XuNeXnpH7vEJZRs3zk163z4GvXBPNjT3IGRV5pxjQmgbNwh5CW2SDMpzXouCn1w4M3+lYVqV++QltRofZ5bO/920XT8kNMtrwoKmCMwOPqlMWjWzetAQMTfGpX72KKgPzTOJLa9mRkEorN2PHlTQCIJOLSJyIE0gC/6CCxZTphMXDRdSmY9bf3mzZTD39OfZvVElyFM3Shpv2tbw1+ZTbbK9vpHI3tEXaljO+0HUAN3gjs8ezF6qbg9qzmeh5m0UFA7y/19/8tMnlHVo99C61ZuMskPlJkC/DJ1DIqvMVw+uSS54evbdlGrSlZXTk2H+zmgM1VRPnsfzZ3hhv9SukBxfsGoGfK54PDzb8eiTNLUQOuwRWJJVprZ5PQestYmQ0pbpBZFaYEJNoz7+yCZjQaDLijxjqzIuMh7F32pD5sK4MNrxYLnBSxYGFg0wAN+yejsmN98imk0Qs9Q0CxWstULdZvJoKObnPQPT3A== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR03MB3275; 6:BPqVVN4JM8+HIUpezYUgrGq45FZew6JkDHcHOlYg6N?= pj66AkuIHM509uJfRD0lXzdfqAn7d6hUTxC0X/n+2E6t6Q4NYqcu8UEXrUMfBk1g2HuxnsJGsnOGtE0+7fHCA7c7yv20hoTnjU+1kBl3CodLlT20qT82sP4SIZsChLn7/HYJhDd2PHpsBcQKG5MjEIC8ytka/IM1Y6zIjmY6kmPqRTxskWkJOXAyHtAEa35STd/ei5zweD8XnzmMm3ufyX3ZmmR4TTEUvuD4jA4So8xkvX/lNQcA2y6/YcaNz8tXZoEQdMQTqRPlkf1vUjpVHPY3swzOzHwEjlG4ZYU2CEzixqFraZ8bv5akDOKbTfbHmJdXb/c5Sf6PNOD79IlGfS6eJ6Xf307lqTufwmD0/TCH1jonfgO94sHfH03uF3zziqeeTIXXkiY0L1Dxdl48udQiGVSaCxMnpp9m3vSv9iSj5F8OqsK5wbAFhirSqbGlGTC4ED3qdIsJ/kmWq0QDX1i5e9+VsjPztbkqWVEu658Iamx0w+bN7q23USz9di8+bMOzRzxc6qHn4nQEa8H7iy+3Y8F8J6KRuAeq2tWU3QEEv4LKpvQseNGJZB8MW0r6/7Byym7BzkqOFTHzG2eFXaFEw4UR52aDmRV1ADQ6HQJTNrkKgnELexr5duYPdevDJknSTvYpK+IBl6tKP7Bn1jFMbbjZ7KDk3HzDo2qMpiFmpwgipAmzJ16I1ocyqTOj1D476eKcn2w+C1LD9qYCArSEdniYDZcxZDW1U9HimgtBPY3vm4LGhv0n8MPQWkpYp7C4U74OegKX3k+P+9HXBwYkY4imkZmRZS8c8+IBDi+hqwtNQyPx/IEVg+bLGxycF0ji4ni8L2ZUXQ0BvTsL8F0BGO/GCfT7SalC2oKEqE9x1e/3Oh+gmfAbRQYkgh7ZxNxAi6UvJc/iWp+rZVTuQKZjfeOjSCb3VQu1N8fFNZ2Q== X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3275; 5:TeUuFI9ghMKZVYQEUmEUI9aY21T8jo5oGxTVP9HUdraUby0ZbpMDMVRBjmYnwY0ZoiWNLMwgPXG2Wdgpmp32xHf59jCWPxBX1jmdCtNiVS/YmouuHo+XPuLckXbsaG5jpjrlsDDFYR/y+WxsIDjjYStKHjzTPa1kb2UY0PSkuyilbfOBdB5qWyizzWm+TEuc4rAzxp6T2KUaN8nwUKtqBuM0dHSyFI9af3JVzA55M0amgQKXeMmtelVhKzRagMz7OgQ8bzh4tdOX6DORP1h57u/uShYS2YfYItmMgAlYnbgWUropEfseh6Gp4Oh6lFU6vmKi/NBxkBKQVhxgIzcwWFMpk4AOUToKKRjSzd/zMKUboGNOLt2Og0EMBN8L2Uo1JDgKlgNRzRDWfSnT+9Zu1x8GrOEMOu+kcj4NMQMpzrtBHB6HeMrIFKf2wHYECSpbkER81m4/UYzTDSpDFz/pr4MR9kOuoewtsfc4r8YvNUt0wbFLTx+CVjApxZ/7SWe6T0Yr6TNIpMIST2doRD4VHQ==; 24:StTy2cOtKpWVbdghMHmiQRh31RIslGNsLpQbKw0hfSF92KBL3NdWUNwfwoVtiFR1xQnCRtj7qHiQZLkL20UVy2e3xeEetrGvVeMz/k+yCk8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR03MB3275; 7:JXwFKPnqZ4E2moWC4iJ/ySQNxOBbDv0iIoI9SyyWwe+3YuREgtrrhEliOD8st9CBbHEUB1qcBrNACX3whqdX9xw6pM9g/QjJOazGG4YS9CZ454Kz6j+Hn32shaUzAfSKFhE/bFPH8RsfmI1raIz0QfVu96woiYhHd6Jb3bjzvoMT+BI/yDv7P2C684+et6bUMeVL3JAgTM/DPfZHB2wXGTznuPEAm66EXx/9jhB9KdOK1DNXH4cKrlL7O16yHB5MZdYdG/nxlBJVutNh35wOnRQW2pGORLcJQCr7rxyQZQFUGyq8Pz8iC1cDB8lEiJ7xJug1id4krkxnBmaFO/krBmZPYGLidZ895E8skEcuGJ4vKuvTkxBy3qohBntIkZpV6V5BJA3Ht1rqBsNN5kn+6rR5RmYVj5VybOiKZGyEvSgGKWjzMLEKpHFWSR8Lekka+pTygeaj0iOzwGTnUWmTB42pkSJaUVPiXZpPlYjRNXmClXp7sybsiZwvUJ6dJqoqWLmue1Y6YJOz4AwvhBWr4I+V1zA9QB+iRVXVl+IpAjsBwAPCiKeTOOYSYXIc4+ab+YO/IQsgvFjRXkw4+GjrtdAk/Ggbz3MH6EOLZS688HINqksbfMafEVAU9kxF0FrAydvINbLdBHOZ5aora92YaMCcEGCHcxgO7V7VJ+GLTROTVLwKnBlNOPPWgKnN+hRzfJ1qCWXptDCqTDgu8aseYM7JxQKVCyLOYt2sZP3lzIgnsLz7HYwIMKgVZxKOW7zd6M2fGq5rfVDhORf8XUgzn96rI8Ko3fqHeVuw7gmQtdc= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jun 2017 20:50:20.6122 (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: DM5PR03MB3275 Subject: [dpdk-dev] [PATCH 1/5] crypto/dpaa2_sec: add per device mempool to store frame list entries 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" From: Akhil Goyal rte_malloc uses common memory area for all cores. Now rte_malloc are replaced by per device mempool to allocate space for FLE. This removes contention and improves performance. Signed-off-by: Akhil Goyal --- drivers/bus/fslmc/portal/dpaa2_hw_pvt.h | 7 +++ drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 79 ++++++++++++++++++++++------- drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h | 2 + 3 files changed, 70 insertions(+), 18 deletions(-) diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h index 429eaee..16cadf5 100644 --- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h +++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h @@ -182,6 +182,13 @@ struct qbman_fle { fle->addr_lo = lower_32_bits((uint64_t)addr); \ fle->addr_hi = upper_32_bits((uint64_t)addr); \ } while (0) +#define DPAA2_GET_FLE_CTXT(fle) \ + (uint64_t)((((uint64_t)((fle)->reserved[1])) << 32) + \ + (fle)->reserved[0]) +#define DPAA2_FLE_SAVE_CTXT(fle, addr) do { \ + fle->reserved[0] = lower_32_bits((uint64_t)addr); \ + fle->reserved[1] = upper_32_bits((uint64_t)addr); \ +} while (0) #define DPAA2_SET_FLE_OFFSET(fle, offset) \ ((fle)->fin_bpid_offset |= (uint32_t)(offset) << 16) #define DPAA2_SET_FLE_BPID(fle, bpid) ((fle)->fin_bpid_offset |= (uint64_t)bpid) diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c index 3620751..dbdaf46 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c @@ -71,6 +71,13 @@ #define NO_PREFETCH 0 #define TDES_CBC_IV_LEN 8 #define AES_CBC_IV_LEN 16 +#define AES_CTR_IV_LEN 16 +#define AES_GCM_IV_LEN 12 +/* FLE_POOL_NUM_BUFS is set as per the ipsec-secgw application */ +#define FLE_POOL_NUM_BUFS 32000 +#define FLE_POOL_BUF_SIZE 256 +#define FLE_POOL_CACHE_SIZE 512 + enum rta_sec_era rta_sec_era = RTA_SEC_ERA_8; static inline int @@ -84,9 +91,8 @@ build_authenc_fd(dpaa2_sec_session *sess, struct sec_flow_context *flc; uint32_t auth_only_len = sym_op->auth.data.length - sym_op->cipher.data.length; - int icv_len = sess->digest_length; + int icv_len = sess->digest_length, retval; uint8_t *old_icv; - uint32_t mem_len = (7 * sizeof(struct qbman_fle)) + icv_len; uint8_t *iv_ptr = rte_crypto_op_ctod_offset(op, uint8_t *, sess->iv.offset); @@ -98,12 +104,14 @@ build_authenc_fd(dpaa2_sec_session *sess, * to get the MBUF Addr from the previous FLE. * We can have a better approach to use the inline Mbuf */ - fle = rte_zmalloc(NULL, mem_len, RTE_CACHE_LINE_SIZE); - if (!fle) { + retval = rte_mempool_get(priv->fle_pool, (void **)(&fle)); + if (retval) { RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n"); return -1; } + memset(fle, 0, FLE_POOL_BUF_SIZE); DPAA2_SET_FLE_ADDR(fle, DPAA2_OP_VADDR_TO_IOVA(op)); + DPAA2_FLE_SAVE_CTXT(fle, priv); fle = fle + 1; sge = fle + 2; if (likely(bpid < MAX_BPID)) { @@ -214,21 +222,19 @@ build_auth_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, { struct rte_crypto_sym_op *sym_op = op->sym; struct qbman_fle *fle, *sge; - uint32_t mem_len = (sess->dir == DIR_ENC) ? - (3 * sizeof(struct qbman_fle)) : - (5 * sizeof(struct qbman_fle) + - sess->digest_length); struct sec_flow_context *flc; struct ctxt_priv *priv = sess->ctxt; uint8_t *old_digest; + int retval; PMD_INIT_FUNC_TRACE(); - fle = rte_zmalloc(NULL, mem_len, RTE_CACHE_LINE_SIZE); - if (!fle) { - RTE_LOG(ERR, PMD, "Memory alloc failed for FLE\n"); + retval = rte_mempool_get(priv->fle_pool, (void **)(&fle)); + if (retval) { + RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n"); return -1; } + memset(fle, 0, FLE_POOL_BUF_SIZE); /* TODO we are using the first FLE entry to store Mbuf. * Currently we donot know which FLE has the mbuf stored. * So while retreiving we can go back 1 FLE from the FD -ADDR @@ -236,6 +242,7 @@ build_auth_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, * We can have a better approach to use the inline Mbuf */ DPAA2_SET_FLE_ADDR(fle, DPAA2_OP_VADDR_TO_IOVA(op)); + DPAA2_FLE_SAVE_CTXT(fle, priv); fle = fle + 1; if (likely(bpid < MAX_BPID)) { @@ -306,7 +313,7 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, { struct rte_crypto_sym_op *sym_op = op->sym; struct qbman_fle *fle, *sge; - uint32_t mem_len = (5 * sizeof(struct qbman_fle)); + int retval; struct sec_flow_context *flc; struct ctxt_priv *priv = sess->ctxt; uint8_t *iv_ptr = rte_crypto_op_ctod_offset(op, uint8_t *, @@ -314,12 +321,12 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, PMD_INIT_FUNC_TRACE(); - /* todo - we can use some mempool to avoid malloc here */ - fle = rte_zmalloc(NULL, mem_len, RTE_CACHE_LINE_SIZE); - if (!fle) { + retval = rte_mempool_get(priv->fle_pool, (void **)(&fle)); + if (retval) { RTE_LOG(ERR, PMD, "Memory alloc failed for SGE\n"); return -1; } + memset(fle, 0, FLE_POOL_BUF_SIZE); /* TODO we are using the first FLE entry to store Mbuf. * Currently we donot know which FLE has the mbuf stored. * So while retreiving we can go back 1 FLE from the FD -ADDR @@ -327,6 +334,7 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op, * We can have a better approach to use the inline Mbuf */ DPAA2_SET_FLE_ADDR(fle, DPAA2_OP_VADDR_TO_IOVA(op)); + DPAA2_FLE_SAVE_CTXT(fle, priv); fle = fle + 1; sge = fle + 2; @@ -499,6 +507,7 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) { struct qbman_fle *fle; struct rte_crypto_op *op; + struct ctxt_priv *priv; fle = (struct qbman_fle *)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd)); @@ -534,7 +543,8 @@ sec_fd_to_mbuf(const struct qbman_fd *fd) DPAA2_GET_FD_LEN(fd)); /* free the fle memory */ - rte_free(fle - 1); + priv = (struct ctxt_priv *)DPAA2_GET_FLE_CTXT(fle - 1); + rte_mempool_put(priv->fle_pool, (void *)(fle - 1)); return op; } @@ -764,6 +774,7 @@ dpaa2_sec_cipher_init(struct rte_cryptodev *dev, dpaa2_sec_session *session) { struct dpaa2_sec_cipher_ctxt *ctxt = &session->ext_params.cipher_ctxt; + struct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private; struct alginfo cipherdata; int bufsize, i; struct ctxt_priv *priv; @@ -780,6 +791,8 @@ dpaa2_sec_cipher_init(struct rte_cryptodev *dev, return -1; } + priv->fle_pool = dev_priv->fle_pool; + flc = &priv->flc_desc[0].flc; session->cipher_key.data = rte_zmalloc(NULL, xform->cipher.key.length, @@ -875,8 +888,9 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev, dpaa2_sec_session *session) { struct dpaa2_sec_auth_ctxt *ctxt = &session->ext_params.auth_ctxt; + struct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private; struct alginfo authdata; - unsigned int bufsize; + unsigned int bufsize, i; struct ctxt_priv *priv; struct sec_flow_context *flc; @@ -892,6 +906,7 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev, return -1; } + priv->fle_pool = dev_priv->fle_pool; flc = &priv->flc_desc[DESC_INITFINAL].flc; session->auth_key.data = rte_zmalloc(NULL, xform->auth.key.length, @@ -980,6 +995,9 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev, (uint64_t)&(((struct dpaa2_sec_qp *) dev->data->queue_pairs[0])->rx_vq)); session->ctxt = priv; + for (i = 0; i < bufsize; i++) + PMD_DRV_LOG(DEBUG, "DESC[%d]:0x%x\n", + i, priv->flc_desc[0].desc[i]); return 0; @@ -995,8 +1013,9 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev, dpaa2_sec_session *session) { struct dpaa2_sec_aead_ctxt *ctxt = &session->ext_params.aead_ctxt; + struct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private; struct alginfo authdata, cipherdata; - unsigned int bufsize; + unsigned int bufsize, i; struct ctxt_priv *priv; struct sec_flow_context *flc; struct rte_crypto_cipher_xform *cipher_xform; @@ -1032,6 +1051,7 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev, return -1; } + priv->fle_pool = dev_priv->fle_pool; flc = &priv->flc_desc[0].flc; session->cipher_key.data = rte_zmalloc(NULL, cipher_xform->key.length, @@ -1199,6 +1219,10 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev, (uint64_t)&(((struct dpaa2_sec_qp *) dev->data->queue_pairs[0])->rx_vq)); session->ctxt = priv; + for (i = 0; i < bufsize; i++) + PMD_DRV_LOG(DEBUG, "DESC[%d]:0x%x\n", + i, priv->flc_desc[DESC_INITFINAL].desc[i]); + return 0; @@ -1496,6 +1520,10 @@ static struct rte_cryptodev_ops crypto_ops = { static int dpaa2_sec_uninit(const struct rte_cryptodev *dev) { + struct dpaa2_sec_dev_private *internals = dev->data->dev_private; + + rte_mempool_free(internals->fle_pool); + PMD_INIT_LOG(INFO, "Closing DPAA2_SEC device %s on numa socket %u\n", dev->data->name, rte_socket_id()); @@ -1512,6 +1540,7 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) uint16_t token; struct dpseci_attr attr; int retcode, hw_id; + char str[20]; PMD_INIT_FUNC_TRACE(); dpaa2_dev = container_of(dev, struct rte_dpaa2_device, device); @@ -1572,6 +1601,20 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev) internals->hw = dpseci; internals->token = token; + sprintf(str, "fle_pool_%d", cryptodev->data->dev_id); + internals->fle_pool = rte_mempool_create((const char *)str, + FLE_POOL_NUM_BUFS, + FLE_POOL_BUF_SIZE, + FLE_POOL_CACHE_SIZE, 0, + NULL, NULL, NULL, NULL, + SOCKET_ID_ANY, 0); + if (!internals->fle_pool) { + RTE_LOG(ERR, PMD, "%s create failed", str); + goto init_error; + } else + RTE_LOG(INFO, PMD, "%s created: %p\n", str, + internals->fle_pool); + PMD_INIT_LOG(DEBUG, "driver %s: created\n", cryptodev->data->name); return 0; diff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h index eda2eec..b4dfe24 100644 --- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h +++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h @@ -40,6 +40,7 @@ struct dpaa2_sec_dev_private { void *mc_portal; /**< MC Portal for configuring this device */ void *hw; /**< Hardware handle for this device.Used by NADK framework */ + struct rte_mempool *fle_pool; /* per device memory pool for FLE */ int32_t hw_id; /**< An unique ID of this device instance */ int32_t vfio_fd; /**< File descriptor received via VFIO */ uint16_t token; /**< Token required by DPxxx objects */ @@ -128,6 +129,7 @@ struct sec_flc_desc { }; struct ctxt_priv { + struct rte_mempool *fle_pool; /* per device memory pool for FLE */ struct sec_flc_desc flc_desc[0]; };