From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 ; 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 To: "Rao, Nikhil" Cc: Gage Eads , 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: 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-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 > To: "Rao, Nikhil" > CC: Gage Eads , 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" > > To: Jerin Jacob , Gage Eads > > > > 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 > > >> 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 > > > > > > 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 > > >> +#include > > >> +#include > > >> + > > >> +/* 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.