From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Jerin.JacobKollanukkaran@cavium.com>
Received: from NAM03-DM3-obe.outbound.protection.outlook.com
 (mail-dm3nam03on0058.outbound.protection.outlook.com [104.47.41.58])
 by dpdk.org (Postfix) with ESMTP id 99C687D04
 for <dev@dpdk.org>; Mon,  3 Jul 2017 21:15:47 +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=4xBLfIG5N9LuvVUV8aCp7FFU44IuH0n+mh/rh0QPsqI=;
 b=K/QAW8ub0wcFwG4xivoX8pcTkFiF4OO1epljQa3lMCNzFEfCE3rS1wn5/wZ9iH8xHcb3vkuqT64x3LphWQ6tW7LiLViFu06sSVfwdjwfCat+GENihMJEvn443He6wTYsnT5qyS271nu3YjuBsu4ukqZ9Qn3EfT+42E0CYybYTHI=
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:15:43 +0000
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
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 <jerin.jacob@caviumnetworks.com>
Date: Tue,  4 Jul 2017 00:43:45 +0530
Message-Id: <20170703191402.3638-18-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
Content-Type: text/plain
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: 8bb09c56-f246-4aed-b72e-08d4c247e868
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:OmSqxYXskqtCK2lkAhKb6bPoO0tOOtjF9tm3gKZvHjUpiBl+gGbiPXvc/+Oz4OcMSIk/8R5hdNCV8pfslK2WrupdemJ36nyxX7RxKau8IM/pM7ryftO/tgazP0j/0KMtLB1SDU3dCFb8M6mzrF44oWaIzmlOfk1odcIOdU2CDm3s23BpilkEORlYXHKcJ3b33rmLNSmEI0ad64Szvtk0FD50Dul+VR3fN5JEt8O+lDFD1XSefEkVTTg5OFdlHaIqGz7KVThCFmEVIwqj8xOfJs1dP0QQFD3MI4oK45iTP9GCXUDoa/P1CsmCag3lhzDpoHToKO/HLGuduslxfaqdoCnHnw3nJj+Fuk5WUd0TFaPbyZW1Jugthz/s/i4VXdiQWKxzwSOGdsRlcykC1hDU7IevYhW19ITQaxMnFw4Laqe1jAhWAlrIwevAweUpXx7KT0cWQVCbl3DwhgRSw7dD8wo32DMLigyTCeB+4oE67T22NNDA6Ko8a/yzYf0992NuKNjOZeuEFCnMoirkbhzLRUg24UGOu0EXNQpleDnP9naLxKAalyrcNhNQj4NKK6I+m9xjqu/diima3NDJhDaDH8WPQSlsZn/Ve5/VKyq0Ii58KqkFaD8CAR1FYwNJEjo3YYS0LQgUgLdQI/kKR2BTEeKAYlUL9s/fdDx/nqTRtNQCMcQz0o3zeMK+3jtcPGx3BG+C73G7ukk1cHzrSFDlhtEnDmgWtskytam1Lykv6Y2HMZeLAREGoTGT0ug88l1c
X-MS-TrafficTypeDiagnostic: BLUPR0701MB1716:
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716;
 25:4Jkqh9P3CXCj1Ko5UMfgLQkPBpnfmxSJcRvfPrEBVpSDWzOFqm1npm6otGkl/tb2pWEAMA7nrIElFss2Iex/5ZrjhaYOIimDMW3xG0pnYzahPwNi9aCzipFIVOTSH7YFanM2nBdaI7BFeFlhUNa4du7fqE6yWjfyQjrWQsqV7RrafrYLik0QzBgwlPzLviptFN2zuKXLPWqR7VT0culnWFpwaQL6nEhxy49N9Fo2J/QOrinqD/+Z6KEegalgKENAWttvJXh+AqaJZ4gGg3LNt3kYx+Z32RBBPEWEikdDtCQIaOMfZVeySis7jJHFrdNXTZuB5svkcNwLxOJ3PxquAOnDo9HHraiy0IPviHjSybVVJntotxTPa8ewVdjS8zFh0nmFtSQ1yW8ncLIExup6fUEjE0482mUwTiLTJMCwnbf0bFKPmoTeXPxE5NArJwUGhCUOArpUIJ2KAbAjR55FxponJQSdrzQhadak7AcBLBUnjKY5v23+O9nhDCv4WzTt6QP6ZVYcvT31mg9Cp/VbRoMEJ9yUDiDbnIn054v9Qc4V/AEsxmq4wLjR24+Ku/i56zX8tFKBX21xzw0EgPO5ZfgTKCz5LKncepcAGPW/rJwDxSrWH6Ba7Col/b79KAISV2NDi8ol2ByHdZ60NJsSUvyEvnRxYLgdRSNapEUP/Xadx1Xrc2/MqfMWtZtXdJpFE6xmEkfrYkOsWEupNzEulwHUENKY3HZSGek+vCGoF2tcRox6FzXV4al4sEKG0AgLKAyK+9vdOviBwKLqZvLDUQcyD+Z0H6YktOUzwga7kIFfg39Z3Fhzc4rk2IGEqOLezNGhET05dwWJybIsRxPugREmh3iAq7O1n4F6o6sNYrIx1I8Ni3sA5Wdny5uXwfJrAQcXHiZFcZZ+yyAleiKe1WIsEjDdBcTzJzNcEXH6wfA=
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716;
 31:BsxEF9I6i9i9KOBY3FCYlOu8WHOLHkOjoEXnNNumCWRn6V/SAKeUNHW9Lh8JLU/9ZoqE6WbglzR+Uha7k5Nl1/Wlgsuvnk/oegbZSLgbwuJIP9yjLNJyo/54LIQLXYGdF8zehE+MgaHEossK2p3QFkTsqzeuWpz5doaXfRfXa8tsM12LXKv5nv7w/mbo4t09o4B21IaBXZjRhzUMgfgi2q4u3GTYlMC4gc7HyCkRKHTVZJ+ShnCj1xRre0hoUe18cwnOBxq4t4vZYjIBps/4OMD1UWTf4n7ttFjh97jy1sKqI6ftbhBsQcJzqYRmYCaqc/NrnSo4PCVomjIwyvzO+poMRPgw+NIKuHum/rs2mvK9k7vHf0b48P95pXVYKBWYPQsqDSAU3D+CzHbxXB3MY82/N1ZmXrrDvuXDnlfO3H3dziXdQwvcqclpnKgeqEKEQVcWILZ3AeV1+JVFHYyrLR/Y8uoXsXxoGt+phsR9Sc/bB/b3Ic8kc/G/2/3vVaKJHQOQigxQIsl2PGckB5ZiRuqB361QkGE6Y4vCtdVoEEUEvJvCgVZjKNwGJs69ZMsmpiiEld7BDZwoEes1H2+FcWTmacellZH71Mx0W9spJ0BmNgWWY5DWJGx8/jnq2F7JyQu0BtcV9gDV4x4LIn8SfmwwG1T5vDBJXnurJ7IAr3c=
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716;
 20:OdlB20uVGHPOfk/wzWXDZqR/h8wRBsofz3fjXht6IQNXmM+fv4m2WFHR2Qds12VVi62uu1GLHPtknxXfZOe/n07qmDA6BY12FMCxfCAFB+G4VzfdKUNvAdAPLsyDqXlLMaj87qm3I42JVpBopbIn2rHCL/RURLDbCS/R+PWzscXg4xwESss89OZA3oVDUlIkY6+91EXs1Ls5elkwtdOxGa2G9lRrmF+5eBVwVLw6cP8M6r1JSESoOcyE0xrD6wke3y4srAY5BXeBize/bOvPF1inRXCPIF11PHLd8xaNuzOXMY6KAQ2yDXtzFBTphKPzmPokdSoD5QY0ASwTh7MQFKCfAfCGyhljwKnxEcTN//p8Okv3A5an95Ztad5ClBMIHk2WZV7ykkYU2qv+ZUvzttKt8U2agomTZYjLv5OF+V/mMBNaI4dbOTmfOGdfcFmR0ilEYdGyIJsEiE2Zqd6HegnPonm8mfbUNvu7/Zp10HWIh7o1DqJyBHRZ2QdPKmrvNP1uqKoe+IBJUG25lyxC/vOjuUoi1UahIcO9ZErEufQgN2x74Lzzn+AsiV94nCQGz7WcEbHuHBtV27J9KtKZpd2axPthkgFPFVhRvxJ9UcU=
X-Microsoft-Antispam-PRVS: <BLUPR0701MB17160C5A6C8AB540D9ADAE99E3D60@BLUPR0701MB1716.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(167848164394848)(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:ezVjF8+tHpgsxETVYagireTJbLaMtz1OHj8GlFjl?=
 =?us-ascii?Q?HcyMWGynx6S5lYeAne+A059GJDUfNvvQKihehF3fM3YvdDnnRaOFSQjGAhw8?=
 =?us-ascii?Q?3CKyL3D9pYxChARzvDje9uadJKM2dEh8mzKjNPYVIlYbJfB2iJYxcnEj+/DR?=
 =?us-ascii?Q?8BxdRNtJDfRBjq+lLGy0x08fHus82e1acrFnEd6jJSaeQo78EfCkFf6FA32m?=
 =?us-ascii?Q?wOJz+KOLiaEBGI/1oZrUheO0A9T2Cnm/veO4XvubR88EOKCYX8iBY/GRa/bL?=
 =?us-ascii?Q?qZZBtjHpCYDxj9IchSsmm0kOFDVzFl24VeJQ0l3bVDhR2L4cZ+6FyYn3U4p1?=
 =?us-ascii?Q?A5/+3GMH4qM9Z0ogEl7f4V/I8d7cQODS9K53e+0OAbFrxEGJFDkTLNaeoIlj?=
 =?us-ascii?Q?8iJd1W+mgV5gamWLeaggPdaKIFHI5X2nBqkdT6PkhOaO+yfCO14PTCe8GQ+R?=
 =?us-ascii?Q?xfz8m1dX01opVek5pODxmpH99eECMVSpb0EuEc09G31oyoL5OB0kKB8Xstdx?=
 =?us-ascii?Q?+O0JqZ8TQ0Si4Ox4qPIQw8p8PMTrW/GQuzf9WTEaMKdKo1tx5+7dKOmEHi5V?=
 =?us-ascii?Q?hNPsV8vv/zDfipa7dN2h6LYDK+3amZJQ7B9K7vDo6YoG+LveoPzCImVtDlIk?=
 =?us-ascii?Q?X0vcgwL8vZJrzJLAQ8rP1py4YLVQyIeGIZfqf6r8WqdFzGatk1neuUDIHTLf?=
 =?us-ascii?Q?c3H7zYMYahLxwwO6nCwt9FxOQ0TQLvT7sYKDEBDzfet8fTptgpNMGrzwEcNn?=
 =?us-ascii?Q?HaLs4meSZjIfzOe0fNLCg506xOMQ4pHW7Lcjzl/1ZBwYu/IgtW8lkwGKTG8V?=
 =?us-ascii?Q?9+/ImK5RCiyQcmUS6gz6kySVL0maghiTQ1bSlQ49Xptus737KsZa9rNV5qlp?=
 =?us-ascii?Q?T2ngHXsRH84wG8lZPo2wAEB56l4yaAn0z6TplBPcEARr8+2IXExpE54MR+nP?=
 =?us-ascii?Q?JNFGdl1JxnreAruK0BHUZJbQ7Yt4x0ceoUcH121agTQDqv4UQOlgxRn3IykZ?=
 =?us-ascii?Q?vRj3AbwOaPpoejzQxZF/cSX3Qa7B3UZ5glzf5QHWYP0j9kbWJo7So/4bmD8c?=
 =?us-ascii?Q?71zOpqGqmU9m4Dy12uDTmaqXWlghVHE0HWYOAMkhoxm/kym0/wq9chhfb4Dm?=
 =?us-ascii?Q?CGgFoTMfOMOzfLlCEj2NvoN9PKByq3T0BhkiWe9CmjF1s28HFTOKSrGx6oUC?=
 =?us-ascii?Q?ktfq68sQIdNIFiutSiBGNO/4K1aivTi2V3kLbccKm3Jjv37tLrxQ/u4bPDX6?=
 =?us-ascii?Q?+JnHXTbAcnsrm3pEobQ=3D?=
X-Forefront-PRVS: 035748864E
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(4630300001)(6009001)(39850400002)(39840400002)(39400400002)(39410400002)(39450400003)(7736002)(966005)(478600001)(53376002)(53416004)(72206003)(38730400002)(110136004)(107886003)(42186005)(8656002)(50986999)(76176999)(36756003)(6512007)(6306002)(53936002)(4326008)(25786009)(5003940100001)(6916009)(42882006)(2950100002)(66066001)(5009440100003)(2351001)(2361001)(6486002)(6116002)(189998001)(305945005)(33646002)(19273905006)(5660300001)(81166006)(8676002)(3846002)(47776003)(1076002)(2906002)(50466002)(48376002)(562404015)(563064011);
 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:d6elFZqXigwZS4QxI0oYa5vYIaeLF388S2+DIwT?=
 =?us-ascii?Q?m+Y7Ad8HhbM3nqZWmYEVFlU3bLMVT55K/LPi1B5DAYNjzVydhnGjJ+JXJ+ou?=
 =?us-ascii?Q?8z1nL+F/SF67rhoP/ayq3EDmmFSWznxUmRRZj6LXNJzIFSRf/APBT++4llLy?=
 =?us-ascii?Q?pQLg/fcmTZls7CVdkHPTKvZ5VbpCVardegZtekaGilyBsmr5Jk70DHnVcfYD?=
 =?us-ascii?Q?9kBR+79k94oIPXjZULsG1qHrkCashKUGZ+9psROYnnoEYm8rqEPvfga+4sIV?=
 =?us-ascii?Q?gT6gtCpO/qZNrtjspgICOpnEQ9fFs1BlydJQ9BSdTfP+0UGzBNysg3+HGQhH?=
 =?us-ascii?Q?2Q1KJ5WmjBX/GS/48cMLQj4H+Oi3qS9cRMPOifFrMfCL1SE8cXbGf27zIMBs?=
 =?us-ascii?Q?bAWse8meuG598Q/bjWP0q+J5yd+U9J/EzAF9DprIRhKDhbDj1C3nxZCR+Y6w?=
 =?us-ascii?Q?ak9EUIqENWKlzYS3eFIcWVKbkffxox9MwhDuHCagbrEd5qzC0KqovhPp2n3R?=
 =?us-ascii?Q?JO+z+7/zGNyt4iB2iNbfoTExlfydhmN5E9Bcwrw1S7Enm/WYOu/+IrBhqfFg?=
 =?us-ascii?Q?HfjSq2TQIXgnfXWuCyO2Mb12JftvHA61WDuVnP37mPebGR+wIL8ZAGSek7Wl?=
 =?us-ascii?Q?HuGe6pXfoKjbyjCqazrov2lsrapwxM6pEMoDsGsQxZ7SWzkxWajF4kb9eMHT?=
 =?us-ascii?Q?Grc6PkE/B7RwVhP819XgICYq0/OTNMy9MaP6MOfq3DPcxxyy3w3WGbE0N0U5?=
 =?us-ascii?Q?Vh91qlEOGRNMxUFMopsKUmQhS7NrCw6vkc0cPHe9tNfMvgDdav7wha72e4xT?=
 =?us-ascii?Q?GbJjEjI59RD+PHYh2kJGk0GRi1de7nMfCU06RInBrMNYEhYE1l29NRhNapbf?=
 =?us-ascii?Q?m8rEVAK3M8L5NmtWhp5nZsr1ku7EiVLutVDrNxleB+C24bfiILOmeE7I/1lJ?=
 =?us-ascii?Q?PAO4vEAhsBZINxn/BkChWj6o9fpyppNP628OOj+fDaw9lgpg+TMp5u7MqkMf?=
 =?us-ascii?Q?Bwa2Tym7JDKMvQqgZwF+ks9uZ5VdKL/nJ/gP+xi50UPFYbH1PZGPf3sybCaK?=
 =?us-ascii?Q?/PtGJmZCaufXqSc0ASIRwFmIYuRMcOKd0RweHlG+ykdP1NgDS05fzcpCSs7+?=
 =?us-ascii?Q?QZwwIxvuFdgSnGVJXtSFo5XQepR+LOVzsdv3vJrmodkdX+GNaRgVxYx4sDuD?=
 =?us-ascii?Q?KI07yoAAFS3nbSRkAav5ePP5d1tKDZ3+dUQChuabUTeSdH8IRUFxG4BukXSb?=
 =?us-ascii?Q?Sepb1LkVw1cm/bz7rVopznXDjF7HJQIQ/1T2waVOM?=
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716;
 6:eTbTi68nGjUoSJHO5OCg56NDQICrwEi8VwZPXvZA?=
 =?us-ascii?Q?7AB/VKmrERyWEeRSGcVJdBg2WluM3NJD4mVgx+qbaH9QU+pjcLvSwjXmuNIY?=
 =?us-ascii?Q?78xRe6hbfzokaSXG1wh7uPFiSQuFU+VFGK7aMGJVJKcCv9dtFT22ceSFJPBS?=
 =?us-ascii?Q?GpbTL02/cQDaGXPRcpossNQIQr9Ce8Sb8g63sAiY8LN0w/8mx7SYszEiy386?=
 =?us-ascii?Q?OMt4WDERqnxTVDRjd6f6Jsi1eNXhsFxltkW1XjFFRbmyZUgsSufEis6zTV8m?=
 =?us-ascii?Q?59JStWloJXMV09HglTmTmeTzBRGA0cIMG0dftlmByL9+t7ie2TQmuqyrYGDC?=
 =?us-ascii?Q?7tz8+tWOJ7y9T4yU0O6VqJAUKhs+hUUJiZ1/R6waw/RlzQhe4mRXQtl0lNu2?=
 =?us-ascii?Q?hFueKkybulB2MFOZDg3KpixPVpZsy4K40ELNeUZC9cBJGSXEYXRgVMAdXTbl?=
 =?us-ascii?Q?UlmyUNC3uer5vMhq8l3320Q4LHIFkODF0Hezfjse9hafgMMl+9dhWCuvBckE?=
 =?us-ascii?Q?xb8svXbmx1WmS5i7cMQyEs1K/ObwZJx6XaqS24XovsHiEBB9gfAU5Z/4Jp8U?=
 =?us-ascii?Q?7jrRfN+HnZF0+bZa+bWrpF6jBg7BpFALNVRbEWEfmKN9CFytlpdigFelTC5y?=
 =?us-ascii?Q?WnBVYwBjiQ9SYqXbkCHhZAS1by9lmnL99NRosIaDxGav9mxCl+Too9+8g8JB?=
 =?us-ascii?Q?ir7CD10OuzOcLB5X2EiLl3Pxey6+GxJkEYwFnV7R5oY3pJOPy8nB2gmOBa8q?=
 =?us-ascii?Q?vgsPglIwrq/0O7TBQ89Nfh4NaDvnmihnwDBQXjv4fc7YsdZDhTqAU1lOl/45?=
 =?us-ascii?Q?/mcUEHBfI/jiQuAVuFVXiCTDLVV6To3Ctww58hiKuJEktgM7NzXHhh5IXaHa?=
 =?us-ascii?Q?P4wKnDFe5qVXRtkRA/nb2tKdvHLPy/lxU0cwUClLgJ+6DGLx68sD++bwCqx6?=
 =?us-ascii?Q?591zBxZLtYOCYE9MudGk1CCTCmHBWQZCavPWlqn5HwAe6NiB/3rBN3iqZWF5?=
 =?us-ascii?Q?ePg=3D?=
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716;
 5:j6xar+PFKjNxLNbdbaRmMNChiN+54jjNpqfy3i1pMQcZFFCptoAb9rnm7byCm9b1GckhIhlzFvdyw76HMxfzNEdSgE4lGXEL2TeyqkHRlWdnPCiE9kdkYmFUT6gL23k3xHpZlreVc8ddzE/SuqfyBVptwOJJLK7r2PsXZfKJyxrN++qHOel6OHPJ8GiaUtwF4G4NNHHLJfbcgaAdW7Sichf/dhbqJutgl87lmlrmo3KmS78VI4g6Uha8lbZxU0zw7WKBE/4ep1NkZR+9jCNngDe5mh7Dv+XjLFfrieL90pUoFH/Q8555YygTk+WnEdKdmeJZOrFtgACRbmxcvnU37x+hFhwhY9grs17l3SGHPda5vqBElpFpF09+RQTMk8FjteKZXk7yLrBsm0r5e6fg5mWxAHot7+aoz3CTjcyskQQ5L4u2XMiPwuzV9x0/oRsGdSD1zUFIU9bTn2S0n9tBSixHHDnZ7KTS3oG8+KZS2EZHJf/3bIqTotEEOiPiMaHJ;
 24:fDoOeXMFFrUmos2bHy0Wysc/O20O1y94EE09QkXX58GL89bFsZUPQQPCrNooi+f7cMs7jqJPsisEN0G3gu/hFhyiLf/ttI+emeLGOUjF8VY=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716;
 7:UPuB2ZQYCzeyb1nfdwpqQfX4P7ai9REhZa31EW149pChgR5Xm0yjrSRs6Zm64hepLuoxtAXwQXvAiBdFM13OQImx2mtMaaoLCmbMGehVeUogwO1klcoVNGpMSmn9Mz50aJkgmJWWGc0DmeKxxrQ8jpYJMgHwdF51x5wmLV8NAyMl8OdrrcvVNCz6vQtYoGNMwwQR2T9ngLtE/bPSsTbjO+8h5H8MyqDe1rbAluv3XsklMq1iW+J5gDiwXqVcma1fECBevUlyMEE1HDief72Nm3WeZ/APZ+3mjY1AR1NTVnfZ56R0PdoknDTVXwBkPfbLBmfl4hQqTQ3xX7gKD3rrPScupYC50zRNRgGn2Gbs98gk0GFA+YmifinHDZLcOcZ1Qo4LxhhzOPKn8z8zQbnt3EEUd7wxw/MVCZl+YaywOUQNqaHmL4yU2K27u/wYQzH6ggIg+Brx609WM8ITx90laXL7MQ/q78E0BcvsRuUNQ2nY/wxiGH66VxA8Tg/vHxlLPYddg7GJeEVo660rqeZKh7l002Xd8T/WCCY5E0d9prOTREKYZsNGKtPnxCfTfrSMa+fw7k1p7FEZilscFOM5wmZp6kV8ac69+qBdbTakivtggannYuAlN1uVIcWm83n3HpisKC1m3674t2F4OPn+vZuimx5NXIoUPHmluCUkHTNfee9qsXiU8Kzl/dN78GzwSOBHf/yqbsO028AeL2MmsI8/WUINrVSuxbI3CH6mWV5SAl5bipZMVPQIxYFPjXsxO3cdH9sB/6OpiwRSnySccIDur0BeanT+khBHMHLRF0U=
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2017 19:15:43.1380 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716
Subject: [dpdk-dev] [PATCH v2 17/34] app/testeventdev: order queue: add
	worker functions
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Mon, 03 Jul 2017 19:15:48 -0000

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
---
 app/test-eventdev/test_order_common.h |  47 ++++++++++++++++
 app/test-eventdev/test_order_queue.c  | 100 ++++++++++++++++++++++++++++++++++
 2 files changed, 147 insertions(+)

diff --git a/app/test-eventdev/test_order_common.h b/app/test-eventdev/test_order_common.h
index a760b94bd..88cb2acd9 100644
--- a/app/test-eventdev/test_order_common.h
+++ b/app/test-eventdev/test_order_common.h
@@ -90,6 +90,53 @@ order_nb_event_ports(struct evt_options *opt)
 	return evt_nr_active_lcores(opt->wlcores) + 1 /* producer */;
 }
 
+static inline __attribute__((always_inline)) void
+order_process_stage_1(struct test_order *const t,
+		struct rte_event *const ev, const uint32_t nb_flows,
+		uint32_t *const expected_flow_seq,
+		rte_atomic64_t *const outstand_pkts)
+{
+	const uint32_t flow = (uintptr_t)ev->mbuf % nb_flows;
+	/* compare the seqn against expected value */
+	if (ev->mbuf->seqn != expected_flow_seq[flow]) {
+		evt_err("flow=%x seqn mismatch got=%x expected=%x",
+			flow, ev->mbuf->seqn, expected_flow_seq[flow]);
+		t->err = true;
+		rte_smp_wmb();
+	}
+	/*
+	 * Events from an atomic flow of an event queue can be scheduled only to
+	 * a single port at a time. The port is guaranteed to have exclusive
+	 * (atomic) access for given atomic flow.So we don't need to update
+	 * expected_flow_seq in critical section.
+	 */
+	expected_flow_seq[flow]++;
+	rte_pktmbuf_free(ev->mbuf);
+	rte_atomic64_sub(outstand_pkts, 1);
+}
+
+static inline __attribute__((always_inline)) void
+order_process_stage_invalid(struct test_order *const t,
+			struct rte_event *const ev)
+{
+	evt_err("invalid queue %d", ev->queue_id);
+	t->err = true;
+	rte_smp_wmb();
+}
+
+#define ORDER_WORKER_INIT\
+	struct worker_data *w  = arg;\
+	struct test_order *t = w->t;\
+	struct evt_options *opt = t->opt;\
+	const uint8_t dev_id = w->dev_id;\
+	const uint8_t port = w->port_id;\
+	const uint32_t nb_flows = t->nb_flows;\
+	uint32_t *expected_flow_seq = t->expected_flow_seq;\
+	rte_atomic64_t *outstand_pkts = &t->outstand_pkts;\
+	if (opt->verbose_level > 1)\
+		printf("%s(): lcore %d dev_id %d port=%d\n",\
+			__func__, rte_lcore_id(), dev_id, port)
+
 int order_test_result(struct evt_test *test, struct evt_options *opt);
 int order_opt_check(struct evt_options *opt);
 int order_test_setup(struct evt_test *test, struct evt_options *opt);
diff --git a/app/test-eventdev/test_order_queue.c b/app/test-eventdev/test_order_queue.c
index c4003efd2..232dcf26d 100644
--- a/app/test-eventdev/test_order_queue.c
+++ b/app/test-eventdev/test_order_queue.c
@@ -37,6 +37,105 @@
 
 /* See http://dpdk.org/doc/guides/tools/testeventdev.html for test details */
 
+static inline __attribute__((always_inline)) void
+order_queue_process_stage_0(struct rte_event *const ev)
+{
+	ev->queue_id = 1; /* q1 atomic queue */
+	ev->op = RTE_EVENT_OP_FORWARD;
+	ev->sched_type = RTE_SCHED_TYPE_ATOMIC;
+	ev->event_type = RTE_EVENT_TYPE_CPU;
+}
+
+static int
+order_queue_worker(void *arg)
+{
+	ORDER_WORKER_INIT;
+	struct rte_event ev;
+
+	while (t->err == false) {
+		uint16_t event = rte_event_dequeue_burst(dev_id, port,
+					&ev, 1, 0);
+		if (!event) {
+			if (rte_atomic64_read(outstand_pkts) <= 0)
+				break;
+			rte_pause();
+			continue;
+		}
+
+		if (ev.queue_id == 0) { /* from ordered queue */
+			order_queue_process_stage_0(&ev);
+			while (rte_event_enqueue_burst(dev_id, port, &ev, 1)
+					!= 1)
+				rte_pause();
+		} else if (ev.queue_id == 1) { /* from atomic queue */
+			order_process_stage_1(t, &ev, nb_flows,
+					expected_flow_seq, outstand_pkts);
+		} else {
+			order_process_stage_invalid(t, &ev);
+		}
+	}
+	return 0;
+}
+
+static int
+order_queue_worker_burst(void *arg)
+{
+	ORDER_WORKER_INIT;
+	struct rte_event ev[BURST_SIZE];
+	uint16_t i;
+
+	while (t->err == false) {
+		uint16_t const nb_rx = rte_event_dequeue_burst(dev_id, port, ev,
+				BURST_SIZE, 0);
+
+		if (nb_rx == 0) {
+			if (rte_atomic64_read(outstand_pkts) <= 0)
+				break;
+			rte_pause();
+			continue;
+		}
+
+		for (i = 0; i < nb_rx; i++) {
+			if (ev[i].queue_id == 0) { /* from ordered queue */
+				order_queue_process_stage_0(&ev[i]);
+			} else if (ev[i].queue_id == 1) {/* from atomic queue */
+				order_process_stage_1(t, &ev[i], nb_flows,
+					expected_flow_seq, outstand_pkts);
+				ev[i].op = RTE_EVENT_OP_RELEASE;
+			} else {
+				order_process_stage_invalid(t, &ev[i]);
+			}
+		}
+
+		uint16_t enq;
+
+		enq = rte_event_enqueue_burst(dev_id, port, ev, nb_rx);
+		while (enq < nb_rx) {
+			enq += rte_event_enqueue_burst(dev_id, port,
+							ev + enq, nb_rx - enq);
+		}
+	}
+	return 0;
+}
+
+static int
+worker_wrapper(void *arg)
+{
+	struct worker_data *w  = arg;
+	const bool burst = evt_has_burst_mode(w->dev_id);
+
+	if (burst)
+		return order_queue_worker_burst(arg);
+	else
+		return order_queue_worker(arg);
+}
+
+static int
+order_queue_launch_lcores(struct evt_test *test, struct evt_options *opt)
+{
+	return order_launch_lcores(test, opt, worker_wrapper);
+}
+
 #define NB_QUEUES 2
 static int
 order_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt)
@@ -133,6 +232,7 @@ static const struct evt_test_ops order_queue =  {
 	.test_setup         = order_test_setup,
 	.mempool_setup      = order_mempool_setup,
 	.eventdev_setup     = order_queue_eventdev_setup,
+	.launch_lcores      = order_queue_launch_lcores,
 	.eventdev_destroy   = order_eventdev_destroy,
 	.mempool_destroy    = order_mempool_destroy,
 	.test_result        = order_test_result,
-- 
2.13.2