From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0087.outbound.protection.outlook.com [104.47.40.87]) by dpdk.org (Postfix) with ESMTP id 591E57D35 for ; Tue, 4 Jul 2017 06:55:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=3KlWEyJ9e0E26WPTYsBsEdgbMNzNNeN58wLXQ8lZwFY=; b=MuIVHNLJ/2xH28gIWP74P6poA004tZL+QU7ptCyRoLcd9zmfi+Fm9gBEhV7SUc6n+GnDluNKUP3R3v7FRdNBj1wVmmq0NGR3SfynO2tcZUrmrA1vFOi684N7478tq2o5wuFhwb6/rgbnmpjPo+ewxRYFlskx81d0Rv/DoxEWYV8= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin.domain.name (106.200.206.49) by BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Tue, 4 Jul 2017 04:55:32 +0000 From: Jerin Jacob To: dev@dpdk.org Cc: harry.van.haaren@intel.com, bruce.richardson@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com, narender.vangati@intel.com, nikhil.rao@intel.com, gprathyusha@caviumnetworks.com, Jerin Jacob Date: Tue, 4 Jul 2017 10:23:20 +0530 Message-Id: <20170704045329.24711-26-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170704045329.24711-1-jerin.jacob@caviumnetworks.com> References: <20170703191402.3638-1-jerin.jacob@caviumnetworks.com> <20170704045329.24711-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [106.200.206.49] X-ClientProxiedBy: BM1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (10.174.208.22) To BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ddbeb18d-56a7-4feb-9f51-08d4c298e85a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 3:N+FbkoHmDzUv8lNzQBNkMeYZaAl7G7xFr0xWhvYL1kNhHZGRtJRoybRbpEuP3wulwltF0H87TEyXng68k1n0/lb19CDtfEQxyqNtcxlqzh84MQr7CtEe98qtyEDMvw7Lcn8R4cjK5FT3KlBcN2FGSF9ppEECQkvl/vvitmKtaqMXBfPJIWDt4sImgub1PGrVba9yhvOjzwfdyn0dCBMDxiVGQn85fuoRWmJQVfBT1De3tDYO7JxDgf94LZgWp780mT9NfO949keXfJ+hrKZFF77YuTAtkk8w7m7V+bg8UzNBMo3zgTlGBJI/0ZY9jkLDT8JYuSR9cE7fotUHizV/B5b9AF7WH4lIKv+R4tuTBNTzi7usae2YfNO0G+PAWbSL7gro6sFF3ymQdlxHL2es3Y/E2rtT6xliwU6Bkc3rFmlzaLf+DBLAIQd4OFN4ZExmXVXzJ3rdWmkBmXmegBN6IlDjtpy6URI/3ZJYGvwegskE1U+vUWPm7gsx9Yup2/mESnePodYSSwg3o7ZLal4u6dx4MQreUdGUOy62AY6/JgX8jDDi737alrRChklIOo5abKGICEyKF1Xr1fDEchr+27X/5cyVLUf9zhNGM/ZY8wc44acHDOWFS+l3f81KmTHr58pnPegEc0s4Re/9zz1BiTAzq9tkYkg/VVc7RIJorV9otmP+Mg5itTY0vykRnBIRfKrHkvS0+9nCulKi1aeebRI5goCaLOxiSocef2mHXbS3nHMSzh/xoBbjAoIgg33Y X-MS-TrafficTypeDiagnostic: BLUPR0701MB1714: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 25:2YHpj26BWSCpvsKFUJ0WHvpG95wqM6ZSDDoUR+hJznx/dKzOSCAKLWqP3EGMowvoiJRvuw6w3UYfKMaWQM3XSp8+e7UT4D7pzRzTfDVI+T/8YLD3RDd3gCabANB0zL8PIpKtc6tFx7pVZKmAJUqDPq+pE7D2Kj8VzBH7iLpuJcuQYvrc22gn+v8fjyQli0eduy7VMAC7XJ1f4vH92px39sLobOLOwuMmtiOBZ2DozyP4a1RbOcPbFWLfY5WTSjxaxnZydN9owvJRtcueVswnkfcOezucRfMGtYmwmW6wqDq/ltEAiAzWW2NIgUB4HIYhP2sp4C09pOovs8nAIkOoRDmBadXpXf+BjnHP52+OVgjhWg6kEK69AIIClvKBiruhO6ZbPu3fpqgJzMEbHv4sqbV90YwzcixIdmBARvQIkejoBIphMAcZ47HY3SqUMxz5zgfff2fc2KfRaq5Z3qwbTmlP400ETYjrUx3GJRTNfu9oDzr1aei8EV6SoajdEU2Hcfn5duCDcnPwtEy6RiC/SEGc6tI3Ici6ho9M+Cv9qTl441ga+nbhP5neyvRYz8Dx0C3gOFSylNKINs09GU89+sKSyfeMNawiu8Y1sjoTXJCcCaOr02J139SHdGN4kkPmQLJ2Owve+dc8w8vs25PFj/IOwJolaWXIR/iOavUNZwMkGv2MghPyHWk4scV7On0y+HXEE5i/FgKseR3tN15BYCmOalVRddxLvkVcE61kH311p03WYRfn0HdLNFc2MYypc5Mf5fItKJnNyeO+dZwwqPM9flqy7kVlSFP2YX+Ndnoq/BsoGDaY9hqgSDz805t53Bzf1xvARx60VG2Qlt3H9oJLoQnMpDQsRs4TSGN1D+rg9uzi1XuPHXns7qJtjlpoG+1Lgydilq1TRYIJA4I9lls4MauioCmz8SFe8V19zks= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 31:rl5GpIbn/2DbzesqySFafup+z3siwX9sctK2WlhP7pks13Bsbow/EM2ZxPZEsf76aWjQ2mx2nuEP/tw+if2DumxNLa7MOhu3JZeboAAEkwi3VgyhH81um2iCZrMbvvn/8IKBvwbsD1rN2KNCLgERTXS2oqjvuNOZWCxjDnaG1KEPc2k8eXE6nz75zLSkO0Sac1kc2XFn5UeJ+5zqaomOJPGGsIRc2R7M6EtFSWd4KQCIGXm0qkZMN5r4bdacReNQhnaAxJPYS3uuAhdeHTc1adS+eL/rKng7isrzIjjyeHpJQdR2njsIKry64ALOTR01VNomvumKoZ2EWelekXGwjCEcVVVdbKHlWcu1T1HyHF5IDiMd1c+Nu4I0+o8q+n9hT0x1PZB3mULkmNhr5xJ0WALdQ0lhA6WhzSXv8puhlS6Pg/SraXlWU6Mr4xueLJApofVnAXZPTZw92VN9LNuE1HnO0iN4IpOCxbs6bP714rNL379VDpUWjYFIAfrQ1aF2KFsm0zavlh4VFF1fupzvM4hTDwNFvQoGFvwssHpRturICBLAWrks90OFcA4Qf/zB8jC1L1lVfYbtks5BDwlqcOz/6jOHkN4VgEul5uX9TA4XtCesZYEMHT5/M8GC70rW3ABrZ6P0X4rEUxsavJbOL3mChe6CcaTaSLdlo1dkBdQ= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 20:zb9N6/rnM2z5E9+s7MS3R/nXy37425nGkVYrF3bff+v0S6az0tWoGKe231ulTuu3RceG1Nmk3aYT2rpJbFawMHdCp7WF5JOXO+Yt23FmmlwsNYGLjZ+TQloxVH3g/3dUvZygE4MEO9rCeL6O85KKeW0COUvHahqBCkjqp6R61t4xbCm6n3yLahMdNHIkZs9fBGDlh4YpN67O/UibJlBsnw3/GbPupOn6SLb/LZbzuLXRU6aONIXST2br6K9YRqBSKcPb0cV4sS9/ZGA3YUgqHwWBIVk8rS8EV1K9DQDVPWy0y0erKU0YsVM22yBUW0KORH+a4oZH6h9aJHBwnF6UMIH31UL9kpNkGmcZDEZ1wAC7A02poiaWVzUvfaDhT9ln+7zYk2HaNt2iuewwUHaUlPtgXxUrEcqTNJl/0yxc4N9tppujz2MwJ8oSH2ONhO2/BCuOrX/PUgpdPdlTEbtWWmzEcAdpEY2YGCqNf7gGB5U3Bo9c1EU7aDpDb12bm0r2/yXo9nmpy6Shr/3OO9T03w+W53spBdWxc/wD8A21K2/ZpPdC+bHulT+BrsVOa55OGNrd5Yq04vLvW0v2kII9+TpkO6DyVEg2KIKGurR3PJ8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1714; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 4:SPK5rNFLhGM5vZVAJ+V2n1JiY7+bt5hjzJvwjRou?= =?us-ascii?Q?ELA0UhUB341r6s8s8D2Le+afoOgYVy0kRR85uPehJ/mY9sc/1wpHXhXIZ/Zj?= =?us-ascii?Q?hQutHjfgVbeg5BR+0SBakFXPs5/doS7FgEMJQwktdRha68A7uxVjPYfpn5Tl?= =?us-ascii?Q?RflywBv9qBbbdofhRg7Z8Gtf2bvheIlZi8JcfIPZaetQsfxV465+EjkG2jlb?= =?us-ascii?Q?etwNJuPYCTaZcAxxaUUrIBl5gSNC5ZicNZSNwDaS0Ol2GJn4n0Q5VK2VTlYQ?= =?us-ascii?Q?qlalEUSr2E3HOQ9q8ullxZb9WWy2FPrAjinNmStWJYB6gcUggbqaoGo0N/YG?= =?us-ascii?Q?1NGv0OJyuplkx7vrdIoaQLBTA5hymWq/0xcHn9nOtth2eAHE77KomE90oejV?= =?us-ascii?Q?mteaQ5n9I5A3WR561buAe3HWDiaLhX1iJGUfdtoAGEkhRv9qIVzzY4DI/eR4?= =?us-ascii?Q?vJqx92xCcqq3Q3ZUiKJOoBZallj3pq8f1KCCH5Y6xZhxPtjSaAXuXupZwy90?= =?us-ascii?Q?YxYH/5ELtMC2D3t2jsfpqHdwmKGGFxlmsGpDb5Y9R0YZ3glKGhq+CujIInKJ?= =?us-ascii?Q?Ne2sDrqeIYvzPJjh8Dk2/S+eWQXfQhd7fdDaY7jrDkLrdYr87+ujoGTcekGP?= =?us-ascii?Q?yHAv/bqFLnK6CBk3mGm8GuDocgeh4O5MH3WC+F/v/BwWvIQWtPgPw4L1A1Fu?= =?us-ascii?Q?Dx1jLhGWrWGnHC5xGOeuioL4NMpfLAL8KlAirTeqV1Wy63qB1yKeA7lcjHgW?= =?us-ascii?Q?PMsw6AKnGre9BDDWnIVeMAp6seQH8IqVgJ4FDf+zsiCOfwxYakcFDcasQiV3?= =?us-ascii?Q?5/VdkDQjkANE3KDcYZqJIlZf8UOJ0FepKLjwBCznE2lgQ2Gx4n2HuQxmeG2O?= =?us-ascii?Q?RAI/7E1/SVK5b1tCcR8JO7B+D3fhsc2AxV+drJmGTIjzbDt8dxzncx0tOyBm?= =?us-ascii?Q?qcoz/HcdqK4nSGfRTRZ+vdu0Z/87c6iI0KccJzIjMbedg3AIs7gJWMin4u1x?= =?us-ascii?Q?x/fkAm/ahE92mON0FnR1eYJo/tibqVdxJAOGaaiDW6hrEPg0c01F0LO/Vbgp?= =?us-ascii?Q?lpw/rL1oBCw6E+ZUVE0wXY1lyyIltBGBV/ySVY2idToOoODnhO4CyJgxax0+?= =?us-ascii?Q?/ZFdvhCvpSXDXLq7r1NuUJBF/NTN9/2QXyQ9C/x8eMtpqx2jg0VOhA=3D=3D?= X-Forefront-PRVS: 0358535363 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39850400002)(39400400002)(39840400002)(39410400002)(39450400003)(4326008)(107886003)(38730400002)(6512007)(42186005)(6486002)(8656002)(6506006)(33646002)(53936002)(25786009)(6116002)(6916009)(1076002)(5003940100001)(3846002)(42882006)(47776003)(2950100002)(478600001)(2906002)(6666003)(66066001)(8676002)(50226002)(48376002)(81166006)(7736002)(110136004)(2361001)(2351001)(5009440100003)(189998001)(5660300001)(305945005)(72206003)(53416004)(50986999)(76176999)(575784001)(50466002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1714; H:jerin.domain.name; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 23:sFz4X26JXwcqTmqucmE92QBvUWMxhRfQNCrMiAv?= =?us-ascii?Q?3/pHtTptBtptfyqk1zf2P+gsdvH9TMl2CyllEhmR9PQHkVbvDtQfNEUrefa/?= =?us-ascii?Q?01PMNEkkVG66crYqbs55u/3Jp6NGqCgD+0PPBVxVtLWlLkddm0L3LSjGwyyL?= =?us-ascii?Q?GPVLOZwEEBOsADU8+WLclDAko6ZLHahlZ6eUdnVRpxCNC8gYOcHwTdeJd2ku?= =?us-ascii?Q?ji8GT5zGhdN5wx6oIjMGs16gmhc/gWWF6KesQ3IXmEKOkgx26zAs2f6NFwLS?= =?us-ascii?Q?Cl7O9XREpajwPGOUKAtWh51+WaDdeJm9dpbIaFyzF6IbC0l6ifmv0sNGcgPg?= =?us-ascii?Q?ni8Nog+l/iJjagQvxk5wXy2/nmaY9eInDDke2urmEGSvxuDyfAWW9PB32h1n?= =?us-ascii?Q?Lq2XYcW1salvq5/pQbeulVzLcjKQLNDnHzOVwB4rrBr/zoX5hkRRjwPNM2nJ?= =?us-ascii?Q?3LWmeCzBGRRvX5s9ehCkTSuDEZAIFQcRzmIyV68WNfynOiHw3zBax4oUPSs9?= =?us-ascii?Q?cLGV6fa19/ye9miQ3H+okZyH9itTF24gafy9ySjhMMN3RxBf7CkXmxkwhCDt?= =?us-ascii?Q?Kv8bPQM269alpqq+T2WakNsS5koZzQDSWTPCCBOKYYsUQExUaFP0neCwYgDc?= =?us-ascii?Q?20HCAUMVcc9MAqxuid4+aXo7DsVq8Pw+kAusFhvZfjyqJRnNPKCZn+Ifzp0R?= =?us-ascii?Q?xZonyXafUa2azZF/dpnouZ/hUnmFyyJgfo0gEz+8hS9peU/BXotHJ8GzroVs?= =?us-ascii?Q?hGbom/X3FvdUNhC2eKCNyYujrQ6MNzGC6siU7fdklgVwCNzoYeN4rW2fgMbK?= =?us-ascii?Q?FAmsZeVwOc3r1LPZw1KwSph/Nlk+wWYB1mljhp1b0+Aue3sfjDRnhKkhA6MJ?= =?us-ascii?Q?tV1u/Vl4fGr1eMhsSZVQ2e9WKf0IlJ9m1mkPXqoZybL5srjJ9xLB0soNBVdL?= =?us-ascii?Q?ZURzvrQjclLg16MRpkBCEdGh50LVaZ650B2z6cfyRJflUD9btfvyq5JtRDV9?= =?us-ascii?Q?jkN/KKTwMS3jVsD1QqHRhVGBhDyXz9byNb+3WbX8LrVZ9oCjYyfaWSNvw67L?= =?us-ascii?Q?NvtUvKS8LfhZMj1EHIGx4auZG/0fJGv1tbcqkYtppgHaxMiqrNBNET++nj2a?= =?us-ascii?Q?21Z4GoCGUIzJL3WcYiMW9caF7Kav475Gl9DCHzBTHmDvT2MxH/jknUmMc+LH?= =?us-ascii?Q?WwKZPe5Y1XNvUBm2SefL7r7RK22yjB6LOED4WxcFpaMMTDUKcldtjLntQcQ?= =?us-ascii?Q?=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 6:fLXcAyOwwpmLGY3PnaOQQL1GqfbWU+BCmysH/NGT?= =?us-ascii?Q?49XpJ7OJBPVeotjqaE5UmGK9Hg59DiE0seLsvcf28qi1A2Om4Wk+KM3cHadv?= =?us-ascii?Q?3FIi6O5JnGvY5ZpzqTVBfNUaebA+dXKVpherp6nGy5aZ72HvKySgACq+reRw?= =?us-ascii?Q?PsKPYEx37P48+LXdmloQahbWP/2GLBy8tCKLEOnUV4jIJjRNbl3YFOrXZKG7?= =?us-ascii?Q?Zvd88tYg2zoru/j5tzlcQBIIO+izNAPqMMLaX9TBHlDT2x7YQWSf98Lpc1K4?= =?us-ascii?Q?DruEftKC5x5MIOFwkzCVMguFCdGW7W099Zu0ZAuSpyZyeRg0Yq6qyFX3RU7X?= =?us-ascii?Q?0Y86rgiXl5ZRsdQ3RT65AQ/PEGE+RmIqp/dsnBZUILroZLLs8hQK7AmPzrY6?= =?us-ascii?Q?jhOafU79Yhz0N2OITsDC7yL0CBQOb0FctEJSDTsE5T3NrLkr7dmFASky54k8?= =?us-ascii?Q?DjRzvFYRzrNQC0/QVdNiagofY+zzsnIqj1rfDTcyRkjJpgAJ6HBSs2p1dB0W?= =?us-ascii?Q?RW6Ul6zCZlDw8r+9NhQy3ZvNdDRcEcmWAnHoiXLmxBqQQdMrtHu24001C3ZY?= =?us-ascii?Q?8z6uOmZAOJoEgansiuH0cS2nWVSUfe+4UHFXmAj9X1TgywZ595SFNqeTA823?= =?us-ascii?Q?FVJjcVum8GL9zd8nwsAQOJR0WnZWqPYwcnhPusFp8ppq2fw2gmeOBWa8Np/o?= =?us-ascii?Q?d15u/NDnuMvH797qA0LYJmRd1wua6XqvJ+OHGPs1gktc3dHvfLkV6SwJXo+E?= =?us-ascii?Q?94kkUw0P+JtD9FMx9QjdjUM1hSHJgy43675drNesi7kR9VXU4WyJgw/m79Hy?= =?us-ascii?Q?zwTMm0UosOmNSLyyujMYMm4vCnttwBLpzi2d/Xufdg6dVMdiz2KB2tt8VjF8?= =?us-ascii?Q?blfxFovztzEgU8/0sP88faAGLwJOrsNUAG68rc0xuDZsAVFYPsMf7BopqpMj?= =?us-ascii?Q?6g88mFc8eXh1HnELC9frQLyXXph0qxo52hn7sevVReEitK2S+9ail3w2hQzW?= =?us-ascii?Q?y5c=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 5:U56L+USIPK0a++HqICc+DtbG2465Y2KBuncha8sEtZJXPMHplGZuJJMBhK3gQNkAIatVOFqObg5m19FCR30lWbf3okpa4DB9gYtz7wdnMs5UwehobsS4YzPh+agLW08TGhs+IC6mrU1iP/QZ79cBrsBWcnDRcWx3b2fQlu9WbAousGzQ/ZhN3hBWQOO8GAwgARj+jViPA+y881TNeufeVopQQj9aA0oE8rTMjYpt5m702vwFs9NMGQUjz2MU05qvzULCeEM5hGk+/ngPBn7w2iHoIVb3fF3hGS97ZtapF80e0foPaOzGcl4LY01V0VXBD2/GUkVNNTGpf74GAghJ8FuHIOSfKNwWeZ61WSitZ76ndvhXB4yOTjLX3GdGYrN6PzWnehdKzo5/kD+mPGDpgknxSIDmn2LBW+zJmJXfoycBtsXBHlSRX8nI7rdefZZojwm/Sb+bmWH8Gxh88N51aESqioGg5hYhbdvsN0wQbzDdBXVFpm3pTpdHMUdJsvuR; 24:L36dgbNK4c0oNwlYzYotDUJnkPpS3Cs+0h7vfF+b17byIEY3FAxaGmgvvGkt0dh7LtLlbA8eFTco+LNoj81WFR0rFd3UINAj3ZWBWUBThaU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 7:i7aJ0TzLqq6BQ9qa471fUWmGMTQ4kl91cZ3hlDVO66K6OgHSANwMI+C9eO/qdbEWq75sCsKnD5K/X4+oXXOVV/cJqjKD9SEZVWYgx3x0XLTKCWRY+H5K712tFc5dQBBCgSGqC67Y6uYQVU8wau1dbOlgOhCmVaVEi884jc/vasdO+mvqedIiosRhcuwF6aoey2AczyHI+k8bfvb5C7r/713Y+nqp+Rq5ViOFpZ1wQPhHc3fz1F98yXb2mzW564PemcE7oxpascK4rvGhyB8sQdvE2zWmLstS46l51BYpN237AEBVBBlbzGMarHmB7uSKy0zDkRknohWTHFC9tTR8fQyVz9vBtHEdiDZHMHxtp27DDGM0LqNi8Yo2vrP/UEbnvR9Lzlk5ThunDJGdJRdbh1BUvrSgr1yxQk0s6i8PqqoiaGIU2HgYFZnzTJPHG/WhSkTo7yCjEGhyS4UrCx+FOqI9DM5ojk4KaMfUYRyGjKEDTGcbzAXf2I+6K006PmpnVieKEoqVziwYTm2WhnZq5GC8YijvNmauXGZvVIAR446fOyTjGGJ0ErbblSjYjCi8g5Wg5z5ZGi8X3fI30FGHHsfEllOzNHHymLXm678YWa61RNYaNp2VM9nquNmWvucQOC7uDVUvW6h2Edv7QrqVtVNRrFcSn5RkdJis8zfZQD+60/JuqTMRmFC6J+l2jXthlbs1l1EVx+f8cN0itu91Siw+BQcCdJCo8Qewz/0KaZ50rIGm26a80sjpQeeymrbzHMdHCmsEWS8nrR82BOeV7XM+2ecs7UvfUmKbyh/e8wY= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 04:55:32.3844 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1714 Subject: [dpdk-dev] [PATCH v3 25/34] app/testeventdev: perf queue: add worker functions 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: Tue, 04 Jul 2017 04:55:38 -0000 Signed-off-by: Jerin Jacob Acked-by: Harry van Haaren --- app/test-eventdev/test_perf_common.h | 60 ++++++++++++++++ app/test-eventdev/test_perf_queue.c | 136 +++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+) diff --git a/app/test-eventdev/test_perf_common.h b/app/test-eventdev/test_perf_common.h index f8246953a..9888e5078 100644 --- a/app/test-eventdev/test_perf_common.h +++ b/app/test-eventdev/test_perf_common.h @@ -86,6 +86,66 @@ struct perf_elt { uint64_t timestamp; } __rte_cache_aligned; +#define BURST_SIZE 16 + +#define PERF_WORKER_INIT\ + struct worker_data *w = arg;\ + struct test_perf *t = w->t;\ + struct evt_options *opt = t->opt;\ + const uint8_t dev = w->dev_id;\ + const uint8_t port = w->port_id;\ + uint8_t *const sched_type_list = &t->sched_type_list[0];\ + struct rte_mempool *const pool = t->pool;\ + const uint8_t nb_stages = t->opt->nb_stages;\ + const uint8_t laststage = nb_stages - 1;\ + uint8_t cnt = 0;\ + void *bufs[16] __rte_cache_aligned;\ + int const sz = RTE_DIM(bufs);\ + if (opt->verbose_level > 1)\ + printf("%s(): lcore %d dev_id %d port=%d\n", __func__,\ + rte_lcore_id(), dev, port) + +static inline __attribute__((always_inline)) int +perf_process_last_stage(struct rte_mempool *const pool, + struct rte_event *const ev, struct worker_data *const w, + void *bufs[], int const buf_sz, uint8_t count) +{ + bufs[count++] = ev->event_ptr; + w->processed_pkts++; + rte_smp_wmb(); + + if (unlikely(count == buf_sz)) { + count = 0; + rte_mempool_put_bulk(pool, bufs, buf_sz); + } + return count; +} + +static inline __attribute__((always_inline)) uint8_t +perf_process_last_stage_latency(struct rte_mempool *const pool, + struct rte_event *const ev, struct worker_data *const w, + void *bufs[], int const buf_sz, uint8_t count) +{ + uint64_t latency; + struct perf_elt *const m = ev->event_ptr; + + bufs[count++] = ev->event_ptr; + w->processed_pkts++; + + if (unlikely(count == buf_sz)) { + count = 0; + latency = rte_get_timer_cycles() - m->timestamp; + rte_mempool_put_bulk(pool, bufs, buf_sz); + } else { + latency = rte_get_timer_cycles() - m->timestamp; + } + + w->latency += latency; + rte_smp_wmb(); + return count; +} + + static inline int perf_nb_event_ports(struct evt_options *opt) { diff --git a/app/test-eventdev/test_perf_queue.c b/app/test-eventdev/test_perf_queue.c index 1ac823109..323d15f0e 100644 --- a/app/test-eventdev/test_perf_queue.c +++ b/app/test-eventdev/test_perf_queue.c @@ -41,6 +41,141 @@ perf_queue_nb_event_queues(struct evt_options *opt) return evt_nr_active_lcores(opt->plcores) * opt->nb_stages; } +static inline __attribute__((always_inline)) void +mark_fwd_latency(struct rte_event *const ev, + const uint8_t nb_stages) +{ + if (unlikely((ev->queue_id % nb_stages) == 0)) { + struct perf_elt *const m = ev->event_ptr; + + m->timestamp = rte_get_timer_cycles(); + } +} + +static inline __attribute__((always_inline)) void +fwd_event(struct rte_event *const ev, uint8_t *const sched_type_list, + const uint8_t nb_stages) +{ + ev->queue_id++; + ev->sched_type = sched_type_list[ev->queue_id % nb_stages]; + ev->op = RTE_EVENT_OP_FORWARD; + ev->event_type = RTE_EVENT_TYPE_CPU; +} + +static int +perf_queue_worker(void *arg, const int enable_fwd_latency) +{ + PERF_WORKER_INIT; + struct rte_event ev; + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (!event) { + rte_pause(); + continue; + } + if (enable_fwd_latency) + /* first q in pipeline, mark timestamp to compute fwd latency */ + mark_fwd_latency(&ev, nb_stages); + + /* last stage in pipeline */ + if (unlikely((ev.queue_id % nb_stages) == laststage)) { + if (enable_fwd_latency) + cnt = perf_process_last_stage_latency(pool, + &ev, w, bufs, sz, cnt); + else + cnt = perf_process_last_stage(pool, + &ev, w, bufs, sz, cnt); + } else { + fwd_event(&ev, sched_type_list, nb_stages); + while (rte_event_enqueue_burst(dev, port, &ev, 1) != 1) + rte_pause(); + } + } + return 0; +} + +static int +perf_queue_worker_burst(void *arg, const int enable_fwd_latency) +{ + PERF_WORKER_INIT; + uint16_t i; + /* +1 to avoid prefetch out of array check */ + struct rte_event ev[BURST_SIZE + 1]; + + while (t->done == false) { + uint16_t const nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + if (enable_fwd_latency) { + rte_prefetch0(ev[i+1].event_ptr); + /* first queue in pipeline. + * mark time stamp to compute fwd latency + */ + mark_fwd_latency(&ev[i], nb_stages); + } + /* last stage in pipeline */ + if (unlikely((ev[i].queue_id % nb_stages) == + laststage)) { + if (enable_fwd_latency) + cnt = perf_process_last_stage_latency( + pool, &ev[i], w, bufs, sz, cnt); + else + cnt = perf_process_last_stage(pool, + &ev[i], w, bufs, sz, cnt); + + ev[i].op = RTE_EVENT_OP_RELEASE; + } else { + fwd_event(&ev[i], sched_type_list, nb_stages); + } + } + + uint16_t enq; + + enq = rte_event_enqueue_burst(dev, port, ev, nb_rx); + while (enq < nb_rx) { + enq += rte_event_enqueue_burst(dev, port, + ev + enq, nb_rx - enq); + } + } + return 0; +} + +static int +worker_wrapper(void *arg) +{ + struct worker_data *w = arg; + struct evt_options *opt = w->t->opt; + + const bool burst = evt_has_burst_mode(w->dev_id); + const int fwd_latency = opt->fwd_latency; + + /* allow compiler to optimize */ + if (!burst && !fwd_latency) + return perf_queue_worker(arg, 0); + else if (!burst && fwd_latency) + return perf_queue_worker(arg, 1); + else if (burst && !fwd_latency) + return perf_queue_worker_burst(arg, 0); + else if (burst && fwd_latency) + return perf_queue_worker_burst(arg, 1); + + rte_panic("invalid worker\n"); +} + +static int +perf_queue_launch_lcores(struct evt_test *test, struct evt_options *opt) +{ + return perf_launch_lcores(test, opt, worker_wrapper); +} + static int perf_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt) { @@ -143,6 +278,7 @@ static const struct evt_test_ops perf_queue = { .test_setup = perf_test_setup, .mempool_setup = perf_mempool_setup, .eventdev_setup = perf_queue_eventdev_setup, + .launch_lcores = perf_queue_launch_lcores, .eventdev_destroy = perf_eventdev_destroy, .mempool_destroy = perf_mempool_destroy, .test_result = perf_test_result, -- 2.13.2