From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 ; 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 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: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: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 03 Jul 2017 19:15:48 -0000 Signed-off-by: Jerin Jacob Acked-by: Harry van Haaren --- 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