From patchwork Mon Jul 3 19:13:51 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 26278 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 3E6F87D4A; Mon, 3 Jul 2017 21:16:14 +0200 (CEST) Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0058.outbound.protection.outlook.com [104.47.38.58]) by dpdk.org (Postfix) with ESMTP id 14BB07D31 for ; Mon, 3 Jul 2017 21:16:12 +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=BynQ051wjA60Q9Wq8YhhfXjYp3GRPKjipH7F3xlPuAs=; b=CqZjeC4pW/whKIc7SVJW4Sft8phQaHFL2Ydia0r1ON+vh/jBiwq868FL8oRhjMhGyI4HF5wh2KOgj5JoB1FCOrjC2R3bVuul8ZD5rf8qvmks0wLRNQERIyUfBdia2iQsH5NUZKA8+Vp8yAhuFMXXM59vyH6zLaql7T7k9j9WyqU= 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 (111.93.218.67) by BLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Mon, 3 Jul 2017 19:16:07 +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 00:43:51 +0530 Message-Id: <20170703191402.3638-24-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170703191402.3638-1-jerin.jacob@caviumnetworks.com> References: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> <20170703191402.3638-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (10.174.144.19) To BLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 25c370ed-d76d-4188-2f00-08d4c247f72e 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:BLUPR0701MB1716; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 3:ACIm41UwpXd3p+WAM3tmw6MLFmyAlZmz3SFHqtRBENB6XJ0d/5YcnpFox3aC8HGMmvl2c3lJxv+PAYV7hZ9lp0ccdvjyDxQ5GfeH/60UucYFcFnzSXz5E0kNJVV0XOXQ3xXtxWe3r4K/sqpXCwk02+rZNmAWfIbDOiAtzUkh4hd4+cQQV7FXpmDZ2M2IhHSHKIerAqDtNmCYc5QIwHkL3vBD6twJRdsOslGUJvpcz/d6lPDSEBR5wRKwyEGCW/oiWEWhO8zJ2wMucqgOuA2uKdjv8ycXaWAQJWEF75w6vneog+xXLTQ7tiZxmzksxhS8fOdFemoT6s1dsskEmSNfYbkPt5QDgZu+rveHzGNxN792ao7A+OU0ePgb4ZYvfB0hi5mm28wnr7th1ot3nsVIsB3HqrQzT0HDxprCNUit4TJ2vcb29oPqxNnN0w7HMDl04Iqzv3RHWTY5iPwSn9vRj6f6y38D4QG8ucLjtoJTlHkwbiwBzma7KEFt/c/4meCOP/GacZrHePSog+iZIKeuqGKX8ZsqnIqkWAqFZbY5UjUme8QxiB3H6yUG4D1PWcK34ivTOkbtfpzSydrpSoKhcNp5HNdaHRODXjjjin4zfg1YXZdMeaN9cvJlFmvpngJXgtNCK7rWV1yPAWoOEwWTIS2173L0zib1ZVPMedZaL8wQjWcIuWX6+4413IUWYKveS6UEOMpyNO/slXBpycT3Hc20JpQcARObjlvNLNlYv0I4AI2cMSEUsshH4Lrd2mai X-MS-TrafficTypeDiagnostic: BLUPR0701MB1716: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 25:hUzcDHrFVh6CIXVMPR+U0wpycRSXUxsBOYHrx4GgQxs0qQA7pZyaB5TDyBFXrLGn6fxvQifn0qJjwOL+eP2MJenXR4Nlb8bRbkAOX7Pt5ILNEJ04RGKPhW/LQcx/h35GqoghbWQfKV1wGlPOXwr3u8ANeYzu18APGCbdAPhOffcLU9gD8xL9akXRMmaqpw/HU6Q3RwNwDm1iRJH/YGdmuj9dVJfhAeSUO2qzTH3AfOH/D7awfD6Z9KSsFx307cC+qpDmLZ5H+qFpW2H8I52egVBsSj4Sfx/I/RtOJwc6yYMZSZ57uWENfIANanF16Wj0eH97rHXUDATjzaKxBmKoeAVmaDWLbW4W+A3AS8i8baDvmW+YVezwGW3T4lnMrrq//gpEHZB4tzgIAixm+9xHGkbecFzi3FBVSuCHeVUpsUJCLxbKWlHo7PZ+Ej1FXcf7nqHlFt6ftomTTNG2mhz2CmGkOVRlqTTwo+ncY2s8IiNZttwQ4sL3ntAmbOaWDrDsOfxNWN2C7P/68YpBdzfFMgIQgck//w3axxlEE/obrjQsEGzvUnZmBB5DLb8SNcjoYj+TD8NuMEQNXdR/NUtjuazi2DTbY5LFZ4FUhMjM10IA0fpf0nthK/fkj8LrXLUU1ZidarJlvYZDT7o2bblC+1//+ecGm6Fjd0o+Fgz95Ti/yWFCTMHquqGUBsBzJvew/dXxSIqe7R5UvBwziPb3q9NqkvMTXkosgFeMPjNNYbcGh3i2es4xugv6Z4nrtIbeWPuuo7KPgZ5TYKIiCpw80Rq6unmVnIec9pPzGZyadyczin3Jtdx7AHfOtv+uogQ8ep8ibTCLuIcc2QqrjYTS+uU8+L1LSVGB5SOS2JJ30BiAhvWvH8wdVlDZuCmSQ/eowitLomrZq76rKg1s+1tghsRl0p2N6eBtr0RT/KXq3dU= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 31:uBf8/veCz5QrWYHLvnMzRcoHNRQYFo3Qn/Auqzbv21sngWYOgDcBHgnPAVjWjacUAfPwOUhwZ576Zvgadq2ZmfWiFUxHIZQHpJQaWUNcPF6nwaIi1wPhGMdw7cKb93Xh3NbUxPBnT0DJV1KgNW3FxV5+hU4xKhYX5MUS+7xtlbCFnZJBtVc2JSf6EzsKWGicEU8MawKKa3jEbsRqA0FbhoOx3uDaXi1M2jMS9V6DS/mmI15C1OMnVmT90YdG6aojeKYXzKojD5KK75PqVMbulq1IRArbzxerNaCY5JxaL9//yE6tFXPQZxVtP7MmDKlu0ut9KN5keOHoRff94T+ss180iRYBz4x11fOzkbTwEK56T+C4GEoKS3pgiNt7WvGsTtXuaDWdK0YXLcyMOct1PIfbbnl/M7ODuUiadqh6TB8APkGpZaexHceq02SJcuABVUovBkZSPJd4vJpyCijEiNlugAx1UouNzfRjKQTM/A4nnrLfNPCza1rttoq6TSWnTTz6E8ktiPuPN8oQFhgscfaeYmzSvdCkv76PuI/dLBY0aJLfs6EeuTMSiX19FJyVofu12OpQToFNKw4YS567FARksntl8dkNPEjiArbYdtn9RK2DCkTL50vGTd4FUSOBV9sGwbxRUF2A4AkcrlO51Y7Hee+FRY0ryxT9UJWqoIY= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 20:t9yOsNm5p87bbav9K/Sna0de1U3Rf0HhOLgizkaxRigdMVuVidPCzXMyLwj01ZbDKDJJyjN66pARIG33QfMg3tRarIxVuAFEqHdWMsO3k4bYRdEQsGZAQfWFQHknB80k/OGfQxwYqsN3p4+0lrBTxnSOLkzskwbJofyRjUmL1TKBDFaXurGCkQ8XpVgaRWnSbnxis55Jl0Jiqzqm+KfDPSa4eBtYUBAQKEO8/KOA6xEqiizPMvO1bJpsAIfSi8ntPuBKb9zYKuzgTvSKgGQ8QyPZs+g8WNf4xKQr4BCG1wSS9xsi99eKcdLlwvXE9E+Ixb3+nNOGWF36mLrXB+LIT07TgSo5vS6mnvaUmIg45o1p65j9j7OwCOJUKiSNH2MzgbyKB7l+6ndMTcWRdjPJ1nWHgw7LlOYRRsOpacygv/Nx/pz94NneOn3pWD16wNiHcNLeOFR6Iy6V+MMDoiV05XVaFU9CWXe8v3JL3JRcKA1MEsOgaEWyxVQELfON41ggbq8Y2JOQpmc4SmMGrMYYxE1xKN6InYRrJgWtT7N/tNLzzn6+/MtruBAn8K4gr7wi0u01u2sRbi77TtuzfDWz2oaF6jRzu6tlE67y2bgCTKs= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123555025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1716; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1716; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 4:NEDmX/cs56CMAU134BoztdzaqoERQniAc2iP1hW4?= KQI2aaO2xp2AtuN2o/EWsCGYEajjbEfeMK/rrbWkV0XbWWxD40JDDRMfywb7ndZm+Vjle9veaoV8vKXt+/4V1ahFVRXO3UmpRBKOvK+K2UckM1fluH2kCbSbSqIUBL3F2zPSgPozW5bwOyso3vVzKtQECnQTobPmWwX/hChIk2A1cBJesr5Ztb34cNJyk84nV8lBxJB2vx7DQ2ywx67SVcf8RSu5+23hTfIAnIo/lB0xqZYrO3ZzXzIGSUtFb1SOueI3O76cvOFODUVDiJKUCjUoOgzU+a9lFcl0R5e4DbL0zq9khGboFfrrQ9UHt+VH/xg51r++6pnkimBzIBivqLZmMUBd8x72HD4un27zhBIhgc4KiZ0LF+4uVSWApJjrvE4d17NCTrE9zmIlabWsXiWBMRo7jLw6m8P33X8HFqOYTmRpLSplQcF0PLGDRKlwXEOB49T8sXYDrMTrDpbZbz/QzocUkwo8i48MZku6M0HPfUIK482K4kDLvIKqIB6oGNxAIbEhpqUtwTmctHUoPArWSGGGBi9t33YZh701yKpzM/5lSxd17M3RUYnQqd2u0S3Cfk6ab8rnOnASb0CepPpaxVp8dEPsQunPZgbdnfu168LLFCvsaFnLPjOXYsGXZcXhoMn7faRl+rvFj2VdbJqzvAUnwzESqdhvRRe7VlHEDI9b8AzoZcQmiO2pqWJdMdiMUqc1mVMnbYMPooaukAcoa+6HyhQ/6MY3EgW+tR9a4diDsmo5vyASLwSlCVCHBdKGI+CQ/Ju9YfKgKYJfIOuhCdpZEOrcgN3rkmdU1az5zMw/xSu86aGrzXzXkth7Nq03n6CLlVM3o7HinRu3wMxnWiWXfuzePTUFWklhL89MKZqzmjgBfEo6l/kigjIis5I4lcfHb5e+kWGZl4cWhvEHul5ofjVoYYjL5uxPOP99O3bZmtoQ496ystqkenvyi/aq2oHC2wsZrhaFRilLkgwbsS2vSKK9mwTWwPYSIvxFsPWePdnjDqW/p5+KIAKlDu2YeFTGMCwc/RuSbjbmHz8eQ9FeRZhUtODxyg54/qpdQrPtVd5/RIzcz23uOJ2/e5f7Emn6OodLAmxd0cx3r/F8wEEZy9MHMAuiL5o2h9ojeEznZzUR2g470O7e2hXADGHG4Xr1jLEIj2Hoyf11QxOucbWvM8ZVW0AXzjBU70LP+m36aSJK/Q9XszKYR6mCvek= X-Forefront-PRVS: 035748864E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39850400002)(39840400002)(39400400002)(39410400002)(39450400003)(7736002)(478600001)(53416004)(72206003)(38730400002)(110136004)(107886003)(42186005)(8656002)(50986999)(76176999)(36756003)(6512007)(53936002)(4326008)(25786009)(5003940100001)(6916009)(42882006)(2950100002)(66066001)(5009440100003)(6666003)(2351001)(2361001)(6486002)(6116002)(189998001)(305945005)(33646002)(5660300001)(81166006)(8676002)(3846002)(47776003)(1076002)(2906002)(50466002)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716; H:jerin.domain.name; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 23:VJ/ptt6fmp18k8M/GjhIxtjiYYtspEeZTWHY/66?= o0bwOk6Wg/nUSm6JiIUcWiKoPEZ3vvQ1bLiDe9zIZdKUvx+4JF3DHawolzqrIIivdle2XxE057BWXDS1tD9fJ/9bz40XWuzswFdN2nrfa3L6kUwvk+s+BFTYij/R2jmTtV55AJExMDFKJ0JUL7RedrsnmHE84u3xAOkUbLXOEyR1b2GXoiGMoHRaqmwixla6HknHLr7+1gFgYs9K4h3aa1LlTYiMHoeCkSi06iO/KDUEMR9AI0kUwpLbV8KXNmOSERQLbwVdgWdrByPM2H/WwHiIrj6L5h9if3w5/12014R9mTTaCeN9haZlUjQ8PomJr1J1ntKyUxTD8A3/5kiD0aWMuXQABt8DoFL3rNR5JcGgwalwgUYSrm6nIJHwhO1kJd0W5umUAgvtJnj3DVFxoElsh2PCK0FdCHCBN6E4ini4MPZvKk2aOlGpiTzoNTcG0xsqSeYTFXUChImpStkjtIZxVjvDpsVUw2PlCeddLRG3/jg/utqLheWIXlRHDNaHOibHjH5SnX+p3q8TWnUomjenNmPhMrB5PoNcjOmY/3chk6ZpOirRM7A7w/Kl5tPLV6dBioGtRYBRqr7lT5Fi6fpWNc1jJxjOumE+TwbDGQ6b5DQGFIgtCD4rwVhBG+hVk8v0j0b8qC6FgTcsGVl05VYQD2WZoTAqrGRbOHSVFH2OxOOchRnwO+grjm7h+icvRlmmVDVpcvE/E2ZVQBlJmKq+1qv8qAwo3FR/ckTw0S/di5g7vrZ1iroWIGVTN1/XHimsMU8VMCGZhRotRLg4pWFu97tnDa4645HmoX09upsRtPpEsFqQlh8IiWKLsUpA/UBae5O/5GgbbJIvUIBO089Ky6/obvpJAKBMrAv8TOuUhL7FI7/UzhV60Y2Dfo3uQjdyg26dTS9qfCpEHcxGGq5e8BTfOp7vr7eLZ1b4fafWmnTRAwbQ8iz+xYAbc+ixQXSwC2qpTep4SobS5LhoNsZxnKGQ3kBeOWWvMO1xZpQJo+M1BCrTdVfKprYMDoVcyYCSnjIU+ozYwGSBb9+jWm5dwAzfgWDhvxJl3YpIgyN8L5uJ6dz5BcUbu4mfWHUF42RXGhoJvdTsvWWUtdLCVfsotzp/28FJhoZlaqgl/NFKRkg== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 6:SrxFQQmlmalIWnDAx981u4N6pdfsCww8hplk+OGE?= Mmwbl7lEQ+abRvMv73fuYjLc6MZnFSw1Y6AmgLr/u/hTCK8ZpGEq5B11C1SAgE13AX9rj3gcGWRORLqMkz4mbJpXYvXorxToeM4egnLgNPzrBFQpIZZmozSIEbCd0M0u0qPgX0wRP0Mnag9kfFvf/g9DUGUCtUbHYwleKvPkv+abfuust0R6UrtGDpJjk1DmnvVfxFrk2xmnO4eglpzAKtT03hFFjpXkIwzyKWF6/4lrXrVBxDS1SFDGv5N9gYSfe1qLyL6O/b9M1NhRI1rwnveqQD8W3aRn9c7eg92j8HvXk5Ei/viKpIej0Zd7ebcOgI1IcPz8GLpd4qTEn5Nwn/h1LZG/NZ9l0TKLD8hy1F9ePTdu48GNCIepcIJ2Rr19/t/s/W6jYkTWGn9pTcqJM3n0oxlUOkhMeSvwxFcKL8o7dEQrG0jOed8hfqBZdbrvTzb/aNHRWD/Caz09g/DKHsKyLIk5MFsYW2nSohSCW+PdNeorDbxCbPwuf6aI3E+9LrnW8xYUD5NqFj+3XQdR4l/8zJnn+SnrCu9wdVWXgs0hciJ3jRXN8sjD+3PUocxlbHIYhiF2ecEtfhHHV06BWGHoa1+VTmQ/HMJ0Q+tGJb8fPZgpeQAQ6LK6KaKFlktkWarcn9pVWb8Q6qs/4PGRmOLOUAbFpstFB+CU2ByLX9cXegpN7ouS7ep+5SioTFNIpl/D185HIShcqIaSHN1DAu6S82NIPqvtoSwJ7mL3BPTPaVMUq9LLM3VfZ6suerSOaeKcuzSc4oq5uUkjaWFvaRUrzK0ZwZddltD1Vr0IUDleanU3uTAbaxHqqEjGJpwAiYXTfwLT28h3m9CCf/Rabf542ORDnxVYQBSQoDsSfOBMTNTHVX7z13M6f/LGR7XhAKzIpK7CtFneQZBMXIQqRaADNAhmaqzJo9FmlH1uoyw6fdap7DCkZaXKoPfNL67Jpks= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 5:5PVEwrxwxG9TtS+bnHAr4W3cr43GAy6GHc/2uFglTLXIVtFHchZkLH7cdHy2aXxRoaSAxDbM3E2VCR8cQtarS8YYK9EfHfQfwV9dVmbOLtpyjJKXu0XJoQ2SCWuVXDvJRzLd3P80jgMFcBNw96KyUvzUmL49KJcR93gpXhOzDxgU5XEF+LgFUpiOEewlQib5X9opk0SD69Sk1CmHlnXP0Z3Yu2bthbdfzh5DlI6XMpHKlduwVWezOLC7wCdSoB2EFXtWwTFo+AEhs5s82MdHnRtBaR2RwSSfLAvlX7BxPlmUxOlgzP5msn3ZI/SFO1JCjVpYHlzmL030sLe4zCh0hbitnkBlUpEfqxZ4k5OG7BAiBqybpHIDbVFd0yxbqWybA70aAHP9/qsRm6mHGIOkwA34yZ9DVeMufF1MPfU0uZMODiK6iRZqI65Q46ig/LC43vyNKEWJrT4xySh9usA2PzzgDTavg7eKC9Ks27JOYi0ZPEXCe1NZs+ueKCV++vsc; 24:TTI/pPiCybDB+eAMaaFHi8SYJexdxqMQN+mX+umTP1M0E2dbXxenJNewVciAoeAgwp+HeRpbJUcJB2jBxDMZxbJxN/D74oZ94/7jXYUbPBk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 7:wLKiHt7fp6SZdZLWAiTjYaXgyDOiddY2afyUjZM+KGGh78spGek5g9x4/BraGfM/lr+vx7e3PgsdDBvy15/vQ49Z4rhlMuEFyCwsxTF6eL0Oin1Wr+xOgg5j3smelJz/GjGdfR+Sax5x/CAv35dcc5/albkd3cTEpArXwre7E5vdpyeq4RqkMhuCJFqvLHgqijyG7OdIXUHgH4OwnH6s4r5Gu6PNHbpPJbranmowoI77ECEjho9uUKOXUSMC6Xm0IIcCmvs7egD2Bx798mxRJFO8TB2bDkWB+PCRPatt1bCwafoqtTV7NXBHznEHFlUwo0bT55a4JF1utfyRrJVsSQdMGyEin+i2VuXf2jXMun5lNiRMtnSt9xG49as/mwnyVnxYBfVWRUrjH9ZbSEvrYu2JoCU1CavXs4O4xTxjSELpEA/xWM7Km4Gzy33JyA07+KiiChmp/d9uVkSSlFFJx5WUv4qh2RdCIV/k0w/lG0NNFzE+JNqXAdVWZk7G9xqs/Kd/wgNRtpa5pjY5BQRvYWxuH/dOo8S6fP7g/9Qfx9TVhKePiIyRBuBDODqtyr3HCNh6kz1r29qlRusncFJLbVidI3ied/QbGr6ZTML1skcRAPr/BGXLP/JeVM/bdNijFe/RacjHO1mZcgfgXYyNgLb1lbTL/rSMB9nRRYmDqCvmuf82z0NrP6qYMw52Ijq91dpAKPCG7lpctHGV+tx/wwrvgViMZCE+338Q6Ctl+43yGubWLgyUr+dlKl0Ts5zpsj2xZoDugX9EjMcuYZC0041kNFtbShjwVerId0ruE6Y= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2017 19:16:07.8265 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716 Subject: [dpdk-dev] [PATCH v2 23/34] app/testeventdev: perf: launch lcores 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" The event producer and master lcore's test termination and the logic to print the mpps and latency are common for the queue and all types queue test. Move them as the common function. Signed-off-by: Jerin Jacob Acked-by: Harry van Haaren --- app/test-eventdev/test_perf_common.c | 199 +++++++++++++++++++++++++++++++++++ app/test-eventdev/test_perf_common.h | 2 + 2 files changed, 201 insertions(+) diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c index 46dd05704..91bb48dae 100644 --- a/app/test-eventdev/test_perf_common.c +++ b/app/test-eventdev/test_perf_common.c @@ -41,6 +41,203 @@ perf_test_result(struct evt_test *test, struct evt_options *opt) return t->result; } +static inline int +perf_producer(void *arg) +{ + struct prod_data *p = arg; + struct test_perf *t = p->t; + struct evt_options *opt = t->opt; + const uint8_t dev_id = p->dev_id; + const uint8_t port = p->port_id; + struct rte_mempool *pool = t->pool; + const uint64_t nb_pkts = t->nb_pkts; + const uint32_t nb_flows = t->nb_flows; + uint32_t flow_counter = 0; + uint64_t count = 0; + struct perf_elt *m; + struct rte_event ev; + + if (opt->verbose_level > 1) + printf("%s(): lcore %d dev_id %d port=%d queue %d\n", __func__, + rte_lcore_id(), dev_id, port, p->queue_id); + + ev.event = 0; + ev.op = RTE_EVENT_OP_NEW; + ev.queue_id = p->queue_id; + ev.sched_type = t->opt->sched_type_list[0]; + ev.priority = RTE_EVENT_DEV_PRIORITY_NORMAL; + ev.event_type = RTE_EVENT_TYPE_CPU; + ev.sub_event_type = 0; /* stage 0 */ + + while (count < nb_pkts && t->done == false) { + if (rte_mempool_get(pool, (void **)&m) < 0) + continue; + + ev.flow_id = flow_counter++ % nb_flows; + ev.event_ptr = m; + m->timestamp = rte_get_timer_cycles(); + while (rte_event_enqueue_burst(dev_id, port, &ev, 1) != 1) { + if (t->done) + break; + rte_pause(); + m->timestamp = rte_get_timer_cycles(); + } + count++; + } + + return 0; +} + +static inline int +scheduler(void *arg) +{ + struct test_perf *t = arg; + const uint8_t dev_id = t->opt->dev_id; + + while (t->done == false) + rte_event_schedule(dev_id); + + return 0; +} + +static inline uint64_t +processed_pkts(struct test_perf *t) +{ + uint8_t i; + uint64_t total = 0; + + rte_smp_rmb(); + for (i = 0; i < t->nb_workers; i++) + total += t->worker[i].processed_pkts; + + return total; +} + +static inline uint64_t +total_latency(struct test_perf *t) +{ + uint8_t i; + uint64_t total = 0; + + rte_smp_rmb(); + for (i = 0; i < t->nb_workers; i++) + total += t->worker[i].latency; + + return total; +} + + +int +perf_launch_lcores(struct evt_test *test, struct evt_options *opt, + int (*worker)(void *)) +{ + int ret, lcore_id; + struct test_perf *t = evt_test_priv(test); + + int port_idx = 0; + /* launch workers */ + RTE_LCORE_FOREACH_SLAVE(lcore_id) { + if (!(opt->wlcores[lcore_id])) + continue; + + ret = rte_eal_remote_launch(worker, + &t->worker[port_idx], lcore_id); + if (ret) { + evt_err("failed to launch worker %d", lcore_id); + return ret; + } + port_idx++; + } + + /* launch producers */ + RTE_LCORE_FOREACH_SLAVE(lcore_id) { + if (!(opt->plcores[lcore_id])) + continue; + + ret = rte_eal_remote_launch(perf_producer, &t->prod[port_idx], + lcore_id); + if (ret) { + evt_err("failed to launch perf_producer %d", lcore_id); + return ret; + } + port_idx++; + } + + /* launch scheduler */ + if (!evt_has_distributed_sched(opt->dev_id)) { + ret = rte_eal_remote_launch(scheduler, t, opt->slcore); + if (ret) { + evt_err("failed to launch sched %d", opt->slcore); + return ret; + } + } + + const uint64_t total_pkts = opt->nb_pkts * + evt_nr_active_lcores(opt->plcores); + + uint64_t dead_lock_cycles = rte_get_timer_cycles(); + int64_t dead_lock_remaining = total_pkts; + const uint64_t dead_lock_sample = rte_get_timer_hz() * 5; + + uint64_t perf_cycles = rte_get_timer_cycles(); + int64_t perf_remaining = total_pkts; + const uint64_t perf_sample = rte_get_timer_hz(); + + static float total_mpps; + static uint64_t samples; + + const uint64_t freq_mhz = rte_get_timer_hz() / 1000000; + int64_t remaining = t->outstand_pkts - processed_pkts(t); + + while (t->done == false) { + const uint64_t new_cycles = rte_get_timer_cycles(); + + if ((new_cycles - perf_cycles) > perf_sample) { + const uint64_t latency = total_latency(t); + const uint64_t pkts = processed_pkts(t); + + remaining = t->outstand_pkts - pkts; + float mpps = (float)(perf_remaining - remaining)/1000000; + + perf_remaining = remaining; + perf_cycles = new_cycles; + total_mpps += mpps; + ++samples; + if (opt->fwd_latency) { + printf(CLGRN"\r%.3f mpps avg %.3f mpps [avg fwd latency %.3f us] "CLNRM, + mpps, total_mpps/samples, + (float)(latency/pkts)/freq_mhz); + } else { + printf(CLGRN"\r%.3f mpps avg %.3f mpps"CLNRM, + mpps, total_mpps/samples); + } + fflush(stdout); + + if (remaining <= 0) { + t->done = true; + t->result = EVT_TEST_SUCCESS; + rte_smp_wmb(); + break; + } + } + + if (new_cycles - dead_lock_cycles > dead_lock_sample) { + remaining = t->outstand_pkts - processed_pkts(t); + if (dead_lock_remaining == remaining) { + rte_event_dev_dump(opt->dev_id, stdout); + evt_err("No schedules for seconds, deadlock"); + t->done = true; + rte_smp_wmb(); + break; + } + dead_lock_remaining = remaining; + dead_lock_cycles = new_cycles; + } + } + printf("\n"); + return 0; +} + int perf_event_dev_port_setup(struct evt_test *test, struct evt_options *opt, uint8_t stride, uint8_t nb_queues) @@ -195,6 +392,8 @@ perf_opt_check(struct evt_options *opt, uint64_t nb_queues) evt_info("enabled queue priority for latency measurement"); opt->q_priority = 1; } + if (opt->nb_pkts == 0) + opt->nb_pkts = INT64_MAX/evt_nr_active_lcores(opt->plcores); return 0; } diff --git a/app/test-eventdev/test_perf_common.h b/app/test-eventdev/test_perf_common.h index 06e887b98..f8246953a 100644 --- a/app/test-eventdev/test_perf_common.h +++ b/app/test-eventdev/test_perf_common.h @@ -99,6 +99,8 @@ int perf_test_setup(struct evt_test *test, struct evt_options *opt); int perf_mempool_setup(struct evt_test *test, struct evt_options *opt); int perf_event_dev_port_setup(struct evt_test *test, struct evt_options *opt, uint8_t stride, uint8_t nb_queues); +int perf_launch_lcores(struct evt_test *test, struct evt_options *opt, + int (*worker)(void *)); void perf_opt_dump(struct evt_options *opt, uint8_t nb_queues); void perf_test_destroy(struct evt_test *test, struct evt_options *opt); void perf_eventdev_destroy(struct evt_test *test, struct evt_options *opt);