From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <Jerin.JacobKollanukkaran@cavium.com>
Received: from NAM03-CO1-obe.outbound.protection.outlook.com
 (mail-co1nam03on0055.outbound.protection.outlook.com [104.47.40.55])
 by dpdk.org (Postfix) with ESMTP id 425DA2BF5
 for <dev@dpdk.org>; Mon, 26 Jun 2017 15:19:32 +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=aRiMoFdPUsAQlAZl6glgMcvLxBsJj1JEs51V5HEaclw=;
 b=hwXOW6fg40kQA/gXN5UbHdqrxNHJzxCaadc26V4mMtnN+bpT/5ILkpvR+EuTbc+YpLBxMAqyJMeY6ig9nSOK3LfFmZZPQ34m5kveP3X5+hFDDnRXFxLy/4m6t4pcyWnkFhOuRXKt4G4j+ZUzg1TvLSWfblzFTfDEZn+sCzfZqHY=
Authentication-Results: intel.com; dkim=none (message not signed)
 header.d=none;intel.com; dmarc=none action=none
 header.from=caviumnetworks.com;
Received: from jerin (106.201.123.212) by
 BLUPR0701MB1715.namprd07.prod.outlook.com (10.163.85.141) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1199.15; Mon, 26 Jun 2017 13:19:25 +0000
Date: Mon, 26 Jun 2017 18:49:10 +0530
From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: "Rao, Nikhil" <nikhil.rao@intel.com>
Cc: Gage Eads <gage.eads@intel.com>, dev@dpdk.org, thomas@monjalon.net,
 bruce.richardson@intel.com, harry.van.haaren@intel.com,
 hemant.agrawal@nxp.com, nipun.gupta@nxp.com, narender.vangati@intel.com
Message-ID: <20170626131908.GA12358@jerin>
References: <1494362326-19832-1-git-send-email-gage.eads@intel.com>
 <20170511163840.GA18505@jerin> <59250C5E.6020008@intel.com>
 <20170619100521.GA20541@jerin>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <20170619100521.GA20541@jerin>
User-Agent: Mutt/1.8.3 (2017-05-23)
X-Originating-IP: [106.201.123.212]
X-ClientProxiedBy: BM1PR01CA0071.INDPRD01.PROD.OUTLOOK.COM (10.174.208.139) To
 BLUPR0701MB1715.namprd07.prod.outlook.com (10.163.85.141)
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 95688f3d-8de1-4998-b99d-08d4bc95f995
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095);
 SRVR:BLUPR0701MB1715; 
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1715;
 3:I+kHb5RF6nO4BDRfIjJRWfD49ZmBSdNJB0hpYWs8UOYiA7mt11Qo0UOesOc6nFM2TXN9x/6a9Sq854712OsJPM+Gb3GHiV/bEgOywflBcI6lhE352q3xOVK5XJ/zFV8rj56IywpQ/2whpFLayi1fsQSkUkEHbto/byPiMRkrbCoUMFnPiVG4CyKeXaxs9i7cZRaPW8eIQOCPl5Bn0FTwTcztUBLBbujabgyHUglEnbuYwgbW0bIYXFD1NOqdR9T1+6EJ1r9T2b5DO4zGmEQjFiJvPrjz2kZp0tuvEIAQOJ0iPPoytWiipFM2zXmboHiOrUWx5eqS8weF4wOLPz+c4iFpdA/DIB1rZp204DfHVInodjXoHIWeKsixqoqu7TXz08BTaLQmCdikcRrmyL+ZoBStSvWZMznFQwOgQ/zOeCdKHyaPsV5V7rVMbxVFFR5QUZZ8o0FABXMcPMZxsST07UYvPdilPV8SOnInKLMZYmPdV8WoyBSG1I+ui5fh4Db4apDVMuPFZvSND2yz4IAVrfolvWpIXPg9p6P/DMI0W1HKrI1Apso69g2MOM5NGPCx+qLfCPWSWUejUFHb1NNXgNGitu1Ai8u95lGAwSZCIIw+2nTt99+u9oKWWMfISlP4Cud3R5GNIOL/zMb6ThL9gMUssNML7Jg39eYD9wsoZTGMw3O/MONcUKbKKFbf7LRh
X-MS-TrafficTypeDiagnostic: BLUPR0701MB1715:
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1715;
 25:5BB08RTkBHkyf5t72g7tyx/OmLaO68QqimNZCi7fbKdRyz70/YkEvZh032X+5JRV7vJ5JgCtZVe80AlmcoqOtVgOOzA04zecAnjE4AyTt2Od1THA1BbnfTmqjV28mQjPlSVof/N1+gBDK+rgvF3hYdhexto0rJiqfwnnL8dwhD+Rs15b4zADQ0HL9p5acV3Fa0aNB/FfYbwuu0dvuM/E4NtzJeaXMn++d/MLrwIAMx0kYw+DBqKLlmbgE1yjmE84df9fZGLpwK8IKIX4Fd0byr6ibciKJ68G7HLw3JWv6X7zzs7TIsX074I7opu72Ew0jGwPXBp2/fM8QphrfSySUiiYlZdUazH/Xf5TzAsjGvXLuqHMcQHUB0K9fa1ZNAUXXt6YXvbhqOjbQLOM4JLiqnPES6KTYcT0qyKCklw8y2S937ZUUPwnmT7c91NaVpX485Noz8FCkm3HTKo6MgwBBRke90VwqMH+yWaUBEDuiDRZmcEGteVUT1pyQAnAfBk5A/zfFzyb25xmbkPSVMh1v0MxAzHTpZAiSpGUGeTLiJhi3QWDryQ/Di+K5DAZfYrrsy2yK4tAjNa9EOHSjpzACqj7otga+xQwnKt2n7lP4uflKLWqudyUW7aSpX1n1xgk69rOETwOHsVSoGpSzBjiRZKozCAnSkC0UxAnzG0LzF4UTlEDAkxHRxv60enfpfYg/j0AAlEJ7GSOBP0a/ewbHUeifRDSvf616VP0VQTykRITmZjuEf38ZO+TqokVkUgIWOl3i+8cj2WKYjHChymJvFyxxJRah4EyjHzFSH8sGmKPcmNP3R9BfcqBs/Uo18xXW4XrH5poxO9CBEYiY4Tz3a3hY1xWRc5jZijmmUqmpaFX2KZ46OJ+ZY7bnoGPJ5fdBKc48GAavRWcHYxsK0NR/b2WfUxyrNO+J3tMAoK3oCE=
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1715;
 31:0iKTsIJDIqaieKXEygJkyHDLWxKIWoVQzLk8mE68z/IOb3Rrzy4fwBNaZZWtv/h0wlEKRiXBvYivvHr4s2d72YHyfJ57wU/xfa1Qh6pgOPTnpSGGVJdbmLpdE9Jpqz37NOp+kMFTzCvgssTTQxmg3dJGhyWiBtSMEquF4i6WTONbXMNcmS88Ix0c2DqXGLGSdBGmDA3+NcpXguy0E1yC10QwI7WQWKhk+m/Df79+tBOf9/MgBmro8FgbQLp99fPIonBQkRXdF4PVeMYQryOvrKc4I6uyf4HJxXPJzSkbO/xRpDx/UFrmt8Pg3iIvC2Lkv5lPWMYNltu2JGDuf3kspbe4oKrq6x5TJo1D+vLovgqaRh+HjSWS3xs3qEFS5K25wdlM8iwi3Lht+p8IX14ydR0QTlNkJ/3TdqO+RtFLRHy5AzHCIP2Ml6XGI+ghMpNnOAt7THQYx6dUI/+v+Tnkddn7Q7Z4UhvoB33kXlv1O0Jz674U3jL7bIUU45ngx82WLHToX2CXXFYJnq3mBAx4Juzjg0Ml7mcsWnD/9fj1/Medveb/MrDJNUOwZ3/SY/kXdo2bU0DOIM+fO/O1IEHUzmESfemNgJyWFxjWa8EieDGOZJvNHb5VEBPCK1eCCGl87RxBDFKSP8jGPO2kL6PBz6DBZTq3Qts57YzdM40412mAA53r8hPbvFM4LJrmTtcZLUqFzEVje/9rl3DYMvybhg==
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1715;
 20:mySxgaixPy5wufOyh0P9aifdML/AcOtVa6CYttGSu2QszCEL8daAbp6sdKKvsRRBXfyHhXC8hArC9JIAywCgGCbROvZcWTOXU8q/RNZQmM2Su0lmqq+HV0+8jIaA2DZSmXAwRzgaSWsJPPTWABOgJZAYz0NhXn3U/6mM842B2NjtxR9cVkUJ7ZQi9D5pUIHVHfXV5RsQtBBG4efRrZNNwA9Bq9HH/C96rSdIItLGC42674dKL/4ZfXNmhalKQ70yhbh8p94wYAXLdhvSunvO2ilL8c4An/zQQ8C7Hlxitvqy8yD7WIoJGcoRxg9sxoZj2T+joPBup2kTkUcMC3lhnk5LTAw1QPsHUntciNWtR51Tc9knZOW3pQB4UPF/NqAv0VxDFAYuP0p6dzYvmlPlW1JP/UgZJEa8BL8JBpd1zMH/dOQOruDlXxYKje8V+1YFkpbR4KzsJ2zGR2LxeCHgM1caI7py6fTOWutRwEEHDoEXopkrcdwzkOoodFOUbRcGA6rQiO6IUikHtf6zNtRCl8YpbJq/VgX/0UUxKJ4qlCv7uvX4fh4RuYMpB1xlAHuOfjmqY6G9PJUEee9FEJwSWbinsCItrSJQwT8X6K35+TY=
X-Microsoft-Antispam-PRVS: <BLUPR0701MB17150ADA7454882773CB90B9E3DF0@BLUPR0701MB1715.namprd07.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(131327999870524)(185117386973197)(48057245064654)(148574349560750)(228905959029699)(247924648384137);
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)(20161123555025)(20161123558100)(20161123564025)(20161123562025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);
 SRVR:BLUPR0701MB1715; BCL:0; PCL:0;
 RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);
 SRVR:BLUPR0701MB1715; 
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1715;
 4:5UchvxXA9JloT50OYjqBd40fotuDx5K4SUhdZt65?=
 =?us-ascii?Q?kE2UXIzSD3ticsVAD7UJ6rLOG5zwPRzo2UIOCQsXSthO+40bcV+EvnrAleu5?=
 =?us-ascii?Q?c+lI/7WZZLpMEUR1TSXdXccBeBzS57Nhr9Qf2ns0ALqpnqREcQ8syzcv/LCF?=
 =?us-ascii?Q?PQD8t7xwJoH8DODpvft2PbuJ6NzprERlJ7d4c1RtNVc2A7G2+u5wWC8DfJEZ?=
 =?us-ascii?Q?YeSM3r6cSlKSAL/dV1hjB4clEKsXgl6ijWH26q2PKDtiTtRMXk939A7BZHjX?=
 =?us-ascii?Q?tbJqIjJ2aHHLgkbfb5ZJGSLCUE3FphFW0gnLo8PZdbzhGtgf9kQ6tPsV0IvS?=
 =?us-ascii?Q?0ZIG/9NMkwtzZ+yg9On9huMUD8XD9t6x8YETiRdDI9Qx1R+Ka7cDhwg468Wu?=
 =?us-ascii?Q?ymT2ssuqu02MIvKIspTRFWzTqUyNxpron1JKRH/gd9D5DdVgDBePOLfeTowd?=
 =?us-ascii?Q?Uu9hCSlhI/TuM8USBp6VKLhdZH2tf8ed6+xJ9NXnGQluQv1TotZHnmCL8bgy?=
 =?us-ascii?Q?mumestGiYx68TmNzENpTxcaN49jRxzDg5XBwleywF4Eutqaci0YYZRQxWMFk?=
 =?us-ascii?Q?yn1VM3E0abE8Euim+neK+SJosNsX2QtRwxj2qAzqaYqv+hUOV518MVHhP+ly?=
 =?us-ascii?Q?nNWa8BAB5ImhyDuyTdXcFXW/FSuZ/jAdpH+ttvgeCUXuVw/UEZmDxall+Nfs?=
 =?us-ascii?Q?waRZU2DbO+MDxMPG1xW1mf+PgQOmhPpBWwbyqAr+z56RBJ2GLfd2oyesR+xF?=
 =?us-ascii?Q?Wmzwc3CIgFwv5KKwkSYbuNC/t9ufeYqZF9ZJw+3NLhBHrBGHtkw0JkBdLW59?=
 =?us-ascii?Q?US9zLXKQh914uZ/Mfr/5pKJIEmII8PKOooOnroqV9kAzVk7NatJ1qb6j9/Yr?=
 =?us-ascii?Q?rF5wZHyRu0Ov/NNGJStcSGP9Xnj3j3/C9kEkDqbpSXxivweb02BQ5QfhD/73?=
 =?us-ascii?Q?1BkvMceleFvftqG9z0Nrvz0OvDlVk5YOFOZhDg0XqHErtlMF+iF5I/BpcrdR?=
 =?us-ascii?Q?h4Y0P7abePDI+wLAfke6TEaEs2f0RereKWs/pgngwJeJjAE4TJ53owuGEJwY?=
 =?us-ascii?Q?h22QUZ+wNGNJ/NcfAqNf3rAbm/i+n7LojM3C9dmohNXFfuy4AGGeYzmT2AVA?=
 =?us-ascii?Q?Co6CIsV08+Ue75ENnN/p3hAyS8Wzthk8+Q6+ayN1L5KM302MbKxv6eFdJwpy?=
 =?us-ascii?Q?+bfHM9H/rUWXK4OxAr+KmEmQlv0PwAN4SDVbo66d+UubXUM1blHK9ILdxplr?=
 =?us-ascii?Q?WL7Zkm6pwUlO9HM62iWEmcXxwWqxKMcZckEw5QWBKKinQ9aI4TJ4C4/4Ylp0?=
 =?us-ascii?Q?Ay48/YnFW3BJ0FYjGgxkf9vy0tqW3snEJMBB1z5dA60enIcmD+ABG0w6ZsEE?=
 =?us-ascii?Q?K/BVggKCF6X3hrMU9e9KrYF0YG4=3D?=
X-Forefront-PRVS: 0350D7A55D
X-Forefront-Antispam-Report: SFV:NSPM;
 SFS:(10009020)(4630300001)(6009001)(39450400003)(39400400002)(39850400002)(39410400002)(39840400002)(377424004)(25584004)(24454002)(377454003)(13464003)(38730400002)(4001350100001)(93886004)(53936002)(25786009)(305945005)(33716001)(966005)(47776003)(66066001)(2906002)(53376002)(229853002)(8656002)(6496005)(23726003)(83506001)(55016002)(81166006)(189998001)(54356999)(3846002)(76176999)(8676002)(6116002)(33656002)(6916009)(5660300001)(6306002)(4326008)(50466002)(6666003)(42882006)(2950100002)(478600001)(110136004)(42186005)(9686003)(72206003)(7736002)(1076002)(5009440100003)(6246003)(53546010)(50986999)(18370500001);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1715; H:jerin; FPR:; SPF:None;
 MLV:sfv; LANG:en; 
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1715;
 23:+gm84fEL9OCpReUbq1DpnlO4LVXdBwf20YnUVvn?=
 =?us-ascii?Q?CBF02X5yIek3wHqV6UOdMf5g/Gdf2axyOKMK3UFG5F1LV94DxFK8+BI8NluO?=
 =?us-ascii?Q?HU6wjzWxpvL+kWMi3elGkJ/zu/0jAHy479JcxO84uCU6QopaSWqth3x6fe5E?=
 =?us-ascii?Q?YyU+SupUc3I36LvhDFcITXEiKQyGm/AecQX7Maz/8CuT8Sc8DuDJ9Sh5YOgf?=
 =?us-ascii?Q?mrmxpnblqdeCTzj6vEg2lK7BU8BLmD1exvf435cmC93Q3/f3l7yfe8+G7tER?=
 =?us-ascii?Q?nQnakoDX3gMmYkyZmKiGtj8a2+1hbD8KTmOSOs2XaNEfMpJUH7Vm4J7vWOg9?=
 =?us-ascii?Q?u1AbpP594kPd8FZiF0HQpiY7ppjPQUQoq5dSBWd1hmUkbLrbWKnEf4TnC8/6?=
 =?us-ascii?Q?scSELU3kEBxCCinUocSb8W95Aeqf9SriO85ywsvvISUK95lntXAG71Nbe6Ek?=
 =?us-ascii?Q?UyPJtA9NR4AMR9zguqJKL6OAaww7gRHF1pz1ziQAY5+5JkMnFTVDje2eUX+z?=
 =?us-ascii?Q?gU1LbnHf+DP6k6CIeCQdhkswuMznz3zlVuYE5fSY+xh6ArPbyIv3fNOvmnLj?=
 =?us-ascii?Q?s8VLLVZoNINvF03clDw++ut/pB40lOQO2sw8lpm/jFzBPkX2CN3aSIi2xY7J?=
 =?us-ascii?Q?WuRGFDcmMsZjvG2C6NqOIvMdWoGkD8W7bB7xtDaTiarMfFZXURxjWv258lqP?=
 =?us-ascii?Q?nar+8ub64Surd4qZwHOUE1IXbfXUuIAh5Y2fdTfCo5pmTi7MbvPfXfhkSVY9?=
 =?us-ascii?Q?lU2eA6Mn0qDgzdREJ/zC/fK7toSM5Zr0T97xW3N5rNP7V8gq2xPP8Cr8LiYl?=
 =?us-ascii?Q?vL1Yk8oPYoLfsCG5m2Dhs/n7ofrqv9m4r3aGL1rWY0ng+plRfLmGDKKPlXAw?=
 =?us-ascii?Q?rXvI0EyeDyCGtWcAJ2kzRZVArAKMO6Xwmm2P0mNGaHeJ4MMrioCnezXDdB5d?=
 =?us-ascii?Q?sdSIpTLFOzAiWXZpH/cca8mgvry2ux+tocZd2VibURWElXadZ7QbvVNRwBKD?=
 =?us-ascii?Q?EJQfL91uVdPzMyjzXPq/W56LZvlygzExFMnNPAOP6+mYVZtzzkDI73X/uXji?=
 =?us-ascii?Q?iRqhScfhR4GeYJva5VQTrcYGCt2kUnQhOP8oUVopWcrRUPyUr3y24KAvurnC?=
 =?us-ascii?Q?xfOA7KuIZHgymGtMj3dgQuhYFy7KLoWkGUEtM1wdGMqFwWTHx0+u30mslU4l?=
 =?us-ascii?Q?0G9eCyPlsPExIBhO/zBeCH1mzbU8nNpFHgUWe94i1Nf3Po2x2zsjnOAktmY1?=
 =?us-ascii?Q?YCVaTvAMhTCP+AkiMOCUaSpwfbZZ1EtqkglyfiPxlk19EE7Njz3d1Ovg0eRk?=
 =?us-ascii?Q?RNKVxTSZTisLn89BBq0ezlHUmAma+XkK2KFVH9F+aFXXovCX33fmwbOVB0+A?=
 =?us-ascii?Q?wlQv5+nXrtNxVgUUkNPoBUt4/RGZ4kzhpDZr+UWd4fpDH9ROMZnV/hd3TNhF?=
 =?us-ascii?Q?2cvYpUlQHwQ=3D=3D?=
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1715;
 6:oFKaNuDzmPYSRyVKxmqhFTS4P9ekI3pwh6TasJnJ?=
 =?us-ascii?Q?pxRy86R7XrEsV34WHiaDwMfkmvTidy/nWLwEijrsHf+bVnDdp9jkJBJMBvrK?=
 =?us-ascii?Q?N0D5qUZUa136iKOPOozemQDN53N/Z4iqi2dZ6tvWO0IPDtEzU8NAkaG8Djxv?=
 =?us-ascii?Q?Q850bR49F3lDOUJ1K5BJhfwiTd2j/YQ5OTmSCGGHVK0mt4mGEEixHiQ8ctar?=
 =?us-ascii?Q?zKDsvJlDiIuOl56galiM855tYYc9Vmrhp0wXXLSosuC91ButjCSkutw26SXY?=
 =?us-ascii?Q?ZKru8PFGFs4OuuznBKOUX+MOJqQ/0w1seOjIxwsuRzL9AHsMu/lWpOFt87Z5?=
 =?us-ascii?Q?rLheID0BcciL2uKEg4/SN2ec5tKI4sR1Ve+Vy4Ey+tZfFNGSZJSFBL+LDeKG?=
 =?us-ascii?Q?3Di3DRUKfXC/Zjex1psC+YNS3F33F3VL+/VTsXFdQZgMm5GfOxB5VVwd8dli?=
 =?us-ascii?Q?BeU7CZ+0Ysc7qXkrWMpimiGQsALSG/bEp0F3zF76k/vIN5TgBNurxcfmGmv3?=
 =?us-ascii?Q?Z0Zqo5GTNZSzIFv+VAiWmWGf1avzwWwjDM24mct0CasShHiKY0KDrXApi1J1?=
 =?us-ascii?Q?voG9EdCckIXgJ7EGNfpndgepLFasqOcSLx/m69JIVDjzBe0t5zMkCIArrtkt?=
 =?us-ascii?Q?nTXIFsU9nmTgNF9Lfaa+nL6jOYcA0QMd0FgFQpSUoMke7vkBv4jLBWkfIaHK?=
 =?us-ascii?Q?+os71GfLHwoRSQD/uKfmqtHt4OsLfzvCWoJbXQtFadFBJBmJY5+FK6zwA5TH?=
 =?us-ascii?Q?zp+caSQHiLIRWwG4Suchpusy0ncF8tkgXFqsJo1OSKWtO3e8NcxMmZcKqcjv?=
 =?us-ascii?Q?IxL/BSKZstdgOEsAhbbFT9FAKlOBuyrrVvsyxljUbk5G+eYXZbT26+UBkvNU?=
 =?us-ascii?Q?jeDDGsLNsHl5JJxTPnDqI+KqAnfrxRdTPH1EA/mLVLyMNNJ2il4eabA13Zst?=
 =?us-ascii?Q?Qaj5ymrEEz0q4iXkMu/8JHYdsXbg/zpBQI4rsNENwPG5941Ui1uwqEtIFS4T?=
 =?us-ascii?Q?t80=3D?=
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1715;
 5:FryGSVbN7xIs40oPw3sWIZr9aITxCXwvmpEmCXRckjr0q6rnaqSjIbfZPEDq/AsJCn5/Kv79SnDniRerm4gk5hQsKhnqtMYXFIhvwNQXbE1D1jXJ6ZFpXdAACJwRHw0BqtdJIAOWZ2UMSOQnr2aG1pD1DE+MuxkQVq/nbiMxxS/M6rnOmu75pLG+tkdHK1XCl+SbKOD5Su71Vcc/kvnbCdl4YF8q9GEnKvfwHcDJzmNmTl2YcKiUeZaOwFOVpVMQxBQ7fwuSFiRU67v+ae//ACOWTXaOFJ2xTieRqFYeTqZ1NPbcDAytxtLi+qLJiRKKkMccMwDjXy3+GvHPiHeoWDvkccorMmxa/GI7Fw1gWfCTgHa7DrUCDJmfktGUKfffKjzAFbh/egUCrjn1YVXh2I+emLOcHLz05X0ciOAgGbzUNiMeNQOavKqR5CeTIGs++bnAFSzP0EKAJG1p9EpcmIfG3KCKXunK4u5i7eaK7mkJJrXhtfVWvWLu4+BCfIhp;
 24:iqYBsnry8gd2bl1AoFBO/ZS1XvPzF9vY6/u5pctRSExZa2TsHCTSau2hyl5NVuM2JRfAtjVGo9xAZE8PvzQvZGpCKiK82wWGryZSRfhHwjU=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1715;
 7:uq5DJX3JOVWb9lXeBdll9YgliwNlH4Xk5/hA0cux8y5QaBXbqTyFhsRtJAv/UUJh/xq5mk3M/ryGivntqShdX/Fl88E/DJDUy+AiVaYJxSCDeu18RsYT03ZvFZ+IAbIWu5uM1OLtS7BmdbLUzo/S2lgNNSdEXZNSXM0QSslNNtckUIE1TTlJpvs9ZverLT2DIS0a4r5S7SFQJRBk3uhFw9rv8vu/1X99Yl+6b7/bF0l2EpziRTCq+rkX+qj4mqDsdEQUX/DNmWUAxGAPVtDEk3/j3Z+CYrfFcc4OgAv143YCOR6n2qiV8oRcEMkt94avQOjM3BKaeqkU8+RVu9B8tXaE88pgPgqQ+dbnfqQbBm0FFnNFF0DPw7Cr8qqssHaEznfpra6xU5mjoDL76u/M6195PQ9bo94nVMpvYHOcj41PFrXnj6/+6iXA5dq1DjfGEP5xZl6JdRDtvt4SIgM4TBvI+eI4ek7/Eu9cJupTQvbCacbGhV74aa9Sgg3XKjS5Xbt6FFfhhtGnAwoJfnk11vwi6NVOs2tSUvOUD7B8WU/bY3iZH3vja24hqzXtLoiJTGXPCw1gJr43ORUexhVZOfUCe5NV74RwqL4WHEZAp1EUo1N1V7lN349r6x9X0oM2WESvGWYrOE0GoEzA464YDAOM9W/EAhn9uLAOX9D/QrFUS3kzt9aNWSuxqUNEj2hrQ05n4o6UvffFRY2lmGMNfanGPq1v1Z1HBKyfvZ4nSZ1FlQIeI8t1Jqh6yNDEyTnSG4vpBt9LONskFKVnP3mfxAD9fRiQUy5jaqC9j/ZfoFM=
X-OriginatorOrg: caviumnetworks.com
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jun 2017 13:19:25.5506 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1715
Subject: Re: [dpdk-dev] [RFC] eventdev: add event adapter for ethernet Rx
 queues
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, 26 Jun 2017 13:19:33 -0000

-----Original Message-----
> Date: Mon, 19 Jun 2017 15:35:22 +0530
> From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
> To: "Rao, Nikhil" <nikhil.rao@intel.com>
> CC: Gage Eads <gage.eads@intel.com>, dev@dpdk.org, thomas@monjalon.net,
>  bruce.richardson@intel.com, harry.van.haaren@intel.com,
>  hemant.agrawal@nxp.com, nipun.gupta@nxp.com, narender.vangati@intel.com
> Subject: Re: [dpdk-dev] [RFC] eventdev: add event adapter for ethernet Rx
>  queues
> User-Agent: Mutt/1.8.3 (2017-05-23)
> 
> -----Original Message-----
> > Date: Wed, 24 May 2017 10:00:22 +0530
> > From: "Rao, Nikhil" <nikhil.rao@intel.com>
> > To: Jerin Jacob <jerin.jacob@caviumnetworks.com>, Gage Eads
> >  <gage.eads@intel.com>
> > CC: dev@dpdk.org, thomas@monjalon.net, bruce.richardson@intel.com,
> >  harry.van.haaren@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com,
> >  narender.vangati@intel.com, nikhil.rao@intel.com
> > Subject: Re: [RFC] eventdev: add event adapter for ethernet Rx queues
> > User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101
> >  Thunderbird/38.7.2
> > 
> > Hi Jerin,
> 
> Hi Nikhil,
> 
> > 
> > Comments inline.
> > 
> > Also, another function needed is
> > bool rte_event_eth_rx_adapter_multithread_capable(void). 
> > 
> > This would be used to set the "multithread_capable" service core 
> > configuration parameter. 
> 
> OK.
> 
> I was thinking like, in order to effectively use adapter scheme, it should
> use ops scheme like rte_flow or rte_tm[1] where the same API can be
> can be used for both HW and SW. If we see, Both RFC[2], We have a lot of
> similarities. I think, We can base the eth_rx_adapter model based on your SW
> requirement RFC and introduce capability wherever it is not applicable for HW or
> vice versa.
> 
> See below as a example[3]. Can you take of the same in v1 of this
> series? if you don't have the bandwidth then I can try. Let me know.

Nikhil,

Now that Harry send first version of service core patch? Are you
planning for new version with above comments?

> Thoughts?
> 
> [1]
> http://dpdk.org/dev/patchwork/patch/25275/
> http://dpdk.org/dev/patchwork/patch/25276/
> 
> [2]
> http://dpdk.org/ml/archives/dev/2017-May/065341.html
> 
> 
> /* adapter has inbuilt port, no need to create producer port */
> #define RTE_EVENT_ETHDEV_CAP_INBUILT_PORT  (1ULL << 0)
> /* adapter does not need service function */
> #define RTE_EVENT_ETHDEV_CAP_NO_SERVICE_FUNC (1ULL << 1)
> 
> struct rte_event_eth_rx_adap_info {
> 	char name[32];
>         uint32_t adapter_cap;
>         /**< Ethdev RX adapter capabilities(RTE_EVENT_ETHDEV_CAP_)*/
> }
> 
> 
> struct rte_event_eth_rx_adap_cfg {
> 	uint8_t rx_event_port_id;
>        /**< Event port identifier, the adapter enqueues mbuf events to this
>         * port, Ignored when RTE_EVENT_ETHDEV_CAP_INBUILT_PORT
>         */
> 
> }
> 
> struct rte_eth_rx_event_adapter_queue_config {
>        uint32_t rx_queue_flags;
>         /**< Flags for handling received packets */
>        uint16_t servicing_weight;
>        /**< Relative polling frequency of ethernet receive queue, if this
>         * is set to zero, the Rx queue is interrupt driven
>         * Ignored if RTE_EVENT_ETHDEV_CAP_NO_SERVICE_FUNC set
>         */
>        struct rte_event ev;
>        /**<
>         *  The values from the following event fields will be used when
>         *  enqueuing mbuf events:
>         *   - event_queue_id: Targeted event queue ID for received packets.
>         *   - event_priority: Event priority of packets from this Rx queue in
>         *                     the event queue relative to other events.
>         *   - sched_type: Scheduling type for packets from this Rx queue.
>         *   - flow_id: If the RTE_ETH_RX_EVENT_ADAPTER_QUEUE_FLOW_ID_VALID bit
>         *               is set in rx_queue_flags, this flow_id is used for all
>         *               packets received from this queue. Otherwise the flow ID
>         *               is set to the RSS hash.
>         */
> };
> 
> int rte_event_eth_rx_adapter_create(uint8_t id, uint8_t dev_id, uint8_t eth_port_id);
> int rte_event_eth_rx_adapter_get_info(uint8_t id, struct rte_event_eth_rx_adap_info *info);
> int rte_event_eth_rx_adapter_configure(uint8_t id, struct rte_event_eth_rx_adap_config *cfg);
> int rte_event_eth_rx_adapter_queue_add(uint8_t id, int32_t rx_queue_id, const struct rte_eth_rx_event_adapter_queue_config *config);
> int rte_event_eth_rx_adapter_queue_del(uint8_t id, int32_t rx_queue_id)
> int rte_event_eth_rx_adapter_run();
> int rte_event_eth_rx_adapter_free(uint8_t id);
> 
> 
> 
> > 
> > Thanks,
> > Nikhil
> > 
> > On 5/11/2017 10:08 PM, Jerin Jacob wrote:
> > > -----Original Message-----
> > >> Date: Tue, 9 May 2017 15:38:46 -0500
> > >> From: Gage Eads <gage.eads@intel.com>
> > >> To: dev@dpdk.org
> > >> CC: nikhil.rao@intel.com, jerin.jacob@caviumnetworks.com,
> > >>  thomas@monjalon.net, bruce.richardson@intel.com,
> > >>  harry.van.haaren@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com,
> > >>  narender.vangati@intel.com
> > >> Subject: [RFC] eventdev: add event adapter for ethernet Rx queues
> > >> X-Mailer: git-send-email 2.7.4
> > >>
> > >> From: Nikhil Rao <nikhil.rao@intel.com>
> > > 
> > > Hi Nikhil and Gage,
> > > 
> > > Thanks for the RFC. A few questions and comments below.
> > > Looks like SW has more constraints on event producer side, after we
> > > finalize on this RFC(I guess only a few minor changes are only required).
> > > I will align other[1] RFC based on _your_ RFC as we need to
> > > converge on name space and we can't duplicate configs like struct
> > > rte_event_dev_producer_conf etc
> > > 
> > > [1]
> > > http://dpdk.org/ml/archives/dev/2017-May/065341.html
> > > 
> > >
> > > 
> > >> + */
> > >> +
> > >> +#ifdef __cplusplus
> > >> +extern "C" {
> > >> +#endif
> > >> +
> > >> +#include <stdint.h>
> > >> +#include <rte_mbuf.h>
> > >> +#include <rte_eventdev.h>
> > >> +
> > >> +/* struct rte_eth_rx_event_adapter_queue_config flags definitions */
> > >> +#define RTE_ETH_RX_EVENT_ADAPTER_QUEUE_FLOW_ID_VALID	0x1
> > >> +/*< This flag indicates the flow identifier is valid */
> > >> +
> > >> +struct rte_eth_rx_event_adapter_config {
> > > 
> > > Since this code is going to be at lib/librte_eventdev, We must start all
> > > public symbols and file name with rte_event_*.
> > > 
> > > example:
> > > May be this structure can be changed as rte_event_eth_rx_adapter_config
> > 
> > OK.
> > 
> > > 
> > > 
> > >> +	uint8_t event_dev_id;
> > >> +	/**< Event device identifier */
> > >> +	uint8_t rx_event_port_id;
> > >> +	/**< Event port identifier, the adapter enqueues mbuf events to this
> > >> +	 * port
> > >> +	 */
> > >> +};
> > >> +
> > >> +struct rte_eth_rx_event_adapter_queue_config {
> > >> +	uint32_t rx_queue_flags;
> > >> +	 /**< Flags for handling received packets */
> > > 
> > > Better to add references with @see
> > > example:
> > > 	@see RTE_ETH_RX_EVENT_ADAPTER_QUEUE_FLOW_ID_VALID
> > 
> > OK.
> > 
> > > 
> > >> +	uint16_t servicing_weight;
> > >> +	/**< Relative polling frequency of ethernet receive queue, if this
> > >> +	 * is set to zero, the Rx queue is interrupt driven
> > >> +	 */
> > >> +	struct rte_event ev;
> > >> +	/**<
> > >> +	 *  The values from the following event fields will be used when
> > >> +	 *  enqueuing mbuf events:
> > >> +	 *   - event_queue_id: Targeted event queue ID for received packets.
> > >> +	 *   - event_priority: Event priority of packets from this Rx queue in
> > >> +	 *                     the event queue relative to other events.
> > >> +	 *   - sched_type: Scheduling type for packets from this Rx queue.
> > >> +	 *   - flow_id: If the RTE_ETH_RX_EVENT_ADAPTER_QUEUE_FLOW_ID_VALID bit
> > >> +	 *		is set in rx_queue_flags, this flow_id is used for all
> > >> +	 *		packets received from this queue. Otherwise the flow ID
> > >> +	 *		is set to the RSS hash.
> > > 
> > > This scheme is good. I was duplicating the elements in "struct
> > > rte_event_dev_producer_conf"
> > > 
> > > IMO, We need to set ev.event_type == RTE_EVENT_TYPE_ETHDEV implicitly in
> > > library.
> > > You can mention that here as a info.
> > OK.
> > 
> > > 
> > >> +	 */
> > >> +};
> > >> +
> > >> +struct rte_eth_rx_event_adapter_run_args {
> > >> +	uint8_t id;
> > >> +	/**< Adapter identifier */
> > >> +	unsigned int max_nb_rx;
> > >> +	/**< The adapter can return early if it has processed at least
> > >> +	 * max_nb_rx mbufs. This isn't treated as a requirement; batching may
> > >> +	 * cause the adapter to process more than max_nb_rx mbufs.
> > >> +	 */
> > >> +};
> > >> +
> > >> +struct rte_eth_rx_event_adapter_stats {
> > >> +	uint64_t rx_poll_count;
> > >> +	/**< Receive queue poll count across both polled and interrupt mode
> > >> +	 * queues
> > >> +	 */
> > >> +	uint64_t rx_packets;
> > >> +	/**< Received packet count */
> > >> +	uint64_t rx_enq_fail;
> > >> +	/**< Eventdev enqueue failed count */
> > >> +	uint64_t rx_enq_retry;
> > >> +	/**< Eventdev enqueue retry count */
> > >> +};
> > >> +
> > >> +/**
> > >> + * Create a new ethernet Rx event adapter with the specified identifier.
> > >> + *
> > >> + * @param adapter_id
> > >> + *   Event adapter identifier.
> > >> + * @param config
> > >> + *   Event adapter config parameters.
> > >> + * @return
> > >> + *   - 0: Success
> > >> + *   - <0: Error code on failure
> > >> + */
> > >> +int rte_eth_rx_event_adapter_create(
> > >> +	uint8_t id,
> > >> +	const struct rte_eth_rx_event_adapter_config *config);
> > >> +
> > > 
> > > One adapter creates one service function. right?
> > > It is good to mention the mapping.It is missing in the doc.
> > 
> > Yes, in this case, the application creates a service per adapter, it may create multiple
> > Rx event adapters with each adapter handling a subset of Rx queues. As per Harry's
> > patch, only DPDK internal components are expected to request service cores, once Harry posts
> > an updated patch, I will make any necesssary changes and post the next version of this
> > patch.
> > 
> > >> +/**
> > >> + * Free an event adapter
> > >> + *
> > >> + * @param id
> > >> + *   Adapter identifier.
> > >> + * @return
> > >> + *   - 0: Success
> > >> + *   - <0: Error code on failure
> > >> + */
> > >> +int rte_eth_rx_event_adapter_free(uint8_t id);
> > >> +
> > >> +/**
> > >> + * Add eth device to the event adapter
> > >> + *
> > >> + * @param id
> > >> + *   Adapter identifier.
> > >> + * @param eth_dev_id
> > >> + *  Port identifier of the Ethernet device.
> > >> + * @return
> > >> + *   - 0: Success
> > >> + *   - <0: Error code on failure
> > >> + */
> > >> +int rte_eth_rx_event_adapter_dev_add(uint8_t id, uint8_t eth_dev_id);
> > > 
> > > rte_eth_event_rx_queue_add() also have eth_dev_id.What is the
> > > significance of eth_dev_id here. Looks like eth_dev_id is a duplicate info.
> > > 
> > > if it is duplicate or it can be avoided then I propose to reduce the number
> > > of APIs for easiness of application programming(i.e removing rte_eth_rx_event_adapter_dev_add,
> > > rte_eth_rx_event_adapter_dev_del)
> > OK.
> > 
> > > 
> > > You can also mention the following for better clarify. If following is
> > > true.If not, What do you think about, co-existence of poll and event mode?
> > 
> > Yes, its true.
> > 
> > > The rte_eth_rx_burst() result is undefined if application invokes on
> > > bounded ethdev_port and rx_queue_id.
> > > 
> > >> +
> > >> +/**
> > >> + * Delete eth device from an event adapter
> > >> + *
> > >> + * @param id
> > >> + *   Adapter identifier.
> > >> + * @param eth_dev_id
> > >> + *  Port identifier of the Ethernet device.
> > >> + * @return
> > >> + *   - 0: Success
> > >> + *   - <0: Error code on failure
> > >> + */
> > >> +int rte_eth_rx_event_adapter_dev_del(uint8_t id, uint8_t eth_dev_id);
> > >> +
> > >> +/**
> > >> + * Add receive queue to event adapter
> > >> + *
> > >> + * @param id
> > >> + *   Adapter identifier.
> > >> + * @param eth_dev_id
> > >> + *  Port identifier of Ethernet device.
> > >> + * @param rx_queue_id
> > >> + *  Ethernet device receive queue index.
> > >> + * @param config
> > >> + *  Additonal configuration structure.
> > >> + * @return
> > >> + *  - 0: Success, Receive queue added correctly.
> > >> + *  - <0: Error code on failure.
> > >> + */
> > >> +int rte_eth_event_rx_queue_add(
> > >> +	uint8_t id,
> > >> +	uint8_t eth_dev_id,
> > >> +	uint16_t rx_queue_id,
> > > 
> > > How about changing it as int32_t rx_queue_id and -1 to denote all Rx
> > > queues configured for given eth_dev_id are added. This will avoid the
> > > case where application needs to call this API one by one when application
> > > interested in all the queues.
> > 
> > Sounds good.
> >  
> > >> +	const struct rte_eth_rx_event_adapter_queue_config *config);
> > >> +
> > > 
> > > Don't we need rte_eth_event_rx_queue_del() for tear down?
> > > 
> > Yes.