From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0048.outbound.protection.outlook.com [104.47.41.48]) by dpdk.org (Postfix) with ESMTP id 6F807374 for ; Mon, 19 Jun 2017 12:05:46 +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=vDlGiOPPwe+oNS2odYJFeuWEg96m8bDESriqGSN2fIg=; b=RuZdfB5zucI6TuVGoTNrWySQBt/ab5H8rtPaxI7rMkV6F2sHRiR6e3otypGoJqiC6mTb/vothXYwNjeQv1bPu+qPJmh9Ne8Q/HYoW8hF3qNkSOQMGXV56Uxv5VhnGETutxyB0goKCEHvHHRDtBv/xebxz6Zc+ePvT/ZIfRtU5EY= 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 (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.1157.12; Mon, 19 Jun 2017 10:05:40 +0000 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 Message-ID: <20170619100521.GA20541@jerin> References: <1494362326-19832-1-git-send-email-gage.eads@intel.com> <20170511163840.GA18505@jerin> <59250C5E.6020008@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <59250C5E.6020008@intel.com> User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BMXPR01CA0031.INDPRD01.PROD.OUTLOOK.COM (10.174.214.17) To BLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BLUPR0701MB1716: X-MS-Office365-Filtering-Correlation-Id: cb139a94-25b2-479d-5771-08d4b6fabf2f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:BLUPR0701MB1716; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 3:GITuJ/L3cvjqki33+6AO8RZfxpoKQ/0ow60nzt8o3l3qkZz29jcWLl8Fx3risfUManoqHxfXnd87M75DaGnvnKRDJwEBNA6NaBJr2FG7vxxt1cmv/t0oZ2/WbEtVB4lhv5SR1VhbD/870yWiEPNAgFnDQpxnbpRNQtbFcEb56LTBLbhl66+aLz4KVCsV+rcnAQpaOg9b2PvVVGAtbnC0sAdJS3VrdumOFev3eIfPplbDXY/B+0M/DpSfPVqQtD7jV2jgz7Q3Gkx1a0ydmhSXpQWkxEreXZI54K0L71kQeQ6+BfyTN15yYOJ6rE5GgouNdTbNOOR4UVqJKofg7H+S9A== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 25:QDAKvWN0oTA3X/LTGBG736cZAgWcOXMDNt9R1DiTzBMj3USNZDzCmlGyIqAewPPIDW5C0SGhk48wlmNZjMFpiUKUkr/L4WeZc7Ze8n4u58clAxSrQ2UOwkywI8hBklzUPVrtrBgmaxKqG9ES11S4Y/HkuoFp0c4Mo+lNVaj2mWW++HsAPCdfPulqzXRl3RuGOk790ixHATcodQZQLBb0AyPW9OoPCf1FwCjqSU6txhr8pwrtuxi/p4GPTG7vHOsulkZDOVTRZnYiGxaXh4JpndhIttZ53rClXJ480hZ0uygJwMKlgstCsZ35EbwP6hAQQUAphjTleyftAbKWsHlLP8iLRyk63M+baLmgLsgTK3Z0R8MafeluMqyFWMHOmqklQJ5zYYT4i5TWJ9JyvRShqI9///hy3FqSUZUTMnfKsdfZAy3/biSi1TUtBRafLjQgvr+oCZbJVmPiFboQ0qFie6zAX2wY8wuqhkxoloF7KdxCTGBeBt0vDNimDgRRk7Dy4xCLjTvwPQoR2XHInr2azh16MOKtSa1MyOZm7uYPhYC1RQxW+rkMsKQt9dxfEL9kkkKMXsVnsQ6nyAS+eNM0uM92Gttwdzm1HroshtAUHfmjG2heydD2YlzHagRijx/5+lke6X1xFK1KhAyEdDnn8DdDhxL0s10OLcGLvnxY1kD4R73eDF+P0j829yMrnuauQGYGY9kseCAx4mUDPELZpx9XGA/7z2mxoLAG911ysXITzWlp41kXp9ZBF2Rg08MLfgkcWz6X2MsI2QEeHyh7LUNjX/rSkhnaFprezclMZJHIBJz6KrgPgcYrUyQ6eykMlfp6I6Lgz4VxQGwl+mgoO+gbMr/AAf6I6A7oxcuIyfNfiZVRW9ezcBm7W6ERIVvvA0uXplrhrJpGDbn9ZJhwN1l7dv2MF22ZxjKH8FIGYU4= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 31:DuGDSBzfeyJWdp9Mg5QsaUHqG/au4JL43sh5ZOXrDB20wk2IPxNKzhEzWMtvyDpr7r31kzstjXVB4eBaI5Ox0vUYVrfr4einrwC4cfNwBIYWk4YOCPre4NXjia/bXpR9jlRb/IeTv3NEVyOBsA9hMl+YkJ7IR3ZGt4rRfGVIwZleyAb+gALKF54SgQvdjhoVDN02oN7J5RYfoFCYjl6kOKYOM4ce7eZqTw770xokLYuNG25KNU7r0SfytwfjgBF2tmJF9jQP4zpapRYTg7v/SFabaUetNc85hlNAYxwdBNxGNmnUuFR20sBYF0dUAHSpftGVS5jwbHd9r8kMWapjv9/pwE6GXXTiNkOXWlJ8yTw+yjVD2GgFUD96Gk/gXdNpmvIpX2+yG/+nf3lCBlKZJZZoM6EpHBH5pHFNId4Vh1DAfEnb/kVJrYl+KBr5gZyiWAgh+PjKuOM3Agzc0QtxByCRzj86vsK7mdph/nLseHjOCW6dYtn1rzP8esgVa5dd2S49tHU784TD9Zb73tcABPciD30r3Dv9kw5ACgiHx0YVxH1oGRkMQBxAUQhA1ObT3WrdCwPLv5SSI2FtYFtRXIxwDq25OP23x3TP6UsuWK5pABX72UniENqgIvUlji8hXh82IrGe/Cezt9wRKjPO9bXER3UjY2xUjiBRVNpz5De2dCIJr39hcSlUzdTzT1NcT1B+yYYE8GisFpmHStBT4mBD8LorKpQpcIDOnWlkejM= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 20:nM6a/nnpztXZIs/pQG2QWS7eFtFPnjaX0oxdAGf680nthcEdOQ1RrI7QuAXAkcjeqQTIJEa0ueSqDyxdC5H6wXcKIn4oopq3BBmtJhzoYpZomY3BeCw6UmdjEUm0neffbx0DOV/zXezzKssAOZQ+GilUTZQmmDcPj7cG6BPCPPY9Cw0Yh1xIOWdr66mX5xU3TWDDe+8rX4+QobgH/AeYiSCs+SJzUEjUHaF7iswALJ6fs5DL8kTCAcRLQolmLwhr7GcCsc1WMFHfHcitYFNEnwSvQnPobJ6+G+wTT7ght+OxcXGZXOGGJ2Bk6vJdyPpURLSawMI7L9Q4+RUO27F6WflHR+b7URCYhVTgnJ6kyTuibZTbI01W0w/zs5WC+8bzNoDjHnpIc3xp1xAcIoe9cjAqJ+vIRq4SnN2Ki5XztAz6B6XiO5DApeQUUVxnp7q+MNDFmTPy8VT+N+hgzYdBzwTJdQseHqV25kk07ZtKD/BpW/BqYq05xwwWTqsoF3mS1zF5J8k1aQ495Rs6nlg+Jv1URmhpRMeK/4fuyh2bgX19oC8Sc6wbNNj6NbUEGtPYem5OuA9T2Y9MRSQ+Bs9Vb5YbHjANFq+f9bLd3Il9tig= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(131327999870524)(185117386973197)(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)(20161123555025)(20161123562025)(20161123558100)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(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:ARxgQI9wexyQoI79qbfYUoKtMPjq7SnZJCOTR8Gj?= =?us-ascii?Q?9tR9ptwKRb+4tpffNk3G3Oqi1Wy425ouubgyASKDf2OoFsT40eUr2rdcu8W1?= =?us-ascii?Q?ibkRSOoyGEODuvwbDfYlh5KchLd0zD2jvrNMX03Bfk9vMv6wHzfXqTvmPMiC?= =?us-ascii?Q?S57oUhoxFUaSXxBzPDnc0pKrECX2Sc9j695wlbuilV5x4Ks5HpS+pSFGNL3q?= =?us-ascii?Q?lsktGgO2kMKkysDJD4vO+ojjU7U/zaVzGOZkRuzzwZZV5fhhHg4e6Z9YT5gf?= =?us-ascii?Q?Wq0OdNX18wXTgU6HhFVuykaDICbkIU3DtW3QFgr8I8VMc/OUksnHHAQFuARb?= =?us-ascii?Q?IzF2Vntrx3W7sFa5XmzSmK0dr8QroFN7zoDcc4+bFHvrQG37iqMuOUjINbad?= =?us-ascii?Q?ENbxm48vkT5s1ERiJBXIRm6ZUkIFXPVgFBYmTgdI11TbtT41MmOrU3e84oOE?= =?us-ascii?Q?Wd1eYxIY38WPPFNY4acS85qf4psA7p5KF2VJDARKnEFcUxsMUUic6iOFg8FO?= =?us-ascii?Q?AzZ+4JlfvvD+79PDHaurVCaU3wMtW53fAsu6w7sjv9MFulICMG/Tsr+NoCAt?= =?us-ascii?Q?mDpqji7SYOo+KClyl5gUs8wBmmWnPySHVVztuMGSogFxnOkfBzSwItxiuc+z?= =?us-ascii?Q?icxnx3fi4nqzFC65L26/Ngb1eI4UTYW9Hoe5IZwcYFu2VanCY2m8lfnORsWx?= =?us-ascii?Q?SidPAvj7QJUKONr7+L4P1tXPy57KVL7GI5kLkNDH0kIVtk1/0iWUq6OCKjHz?= =?us-ascii?Q?cuU0vnsRlL+qkvkXRI1VR3yPv8Iidc078WZ3654fRmrjUOxueerUJpfagDk1?= =?us-ascii?Q?biTQ+pluXT/u7kMZS4CDcKICwUjYo5FuAdyS9lmeNjlT+FBTiPxDqk0hj9eT?= =?us-ascii?Q?5q0AW6su/zP4KGBLuA/uomFshuyNemku2k+2zciiBndeCqyIRmKrLZ9Uv6/d?= =?us-ascii?Q?jEPgAZz7AsVApsr8hxw/eUV8ydnqGaYvGS32GugDlvGWvU6sJxlG3MaO3B8e?= =?us-ascii?Q?OU3HMOI2eYEFLbI8Mb1yBPxRr/1NIMJQ56/c7dO6+blTafaD4AsS7rQcbKqz?= =?us-ascii?Q?hFZ7SUYFGyqm2GtkLVq4JGfgCwtaaytN2mFhCI0Zq4DDJsfrrmkDAQRnt7Os?= =?us-ascii?Q?qvl9VwSnYW68Z8fK2O5rVe+C5LfJ0zJI0iThiZK8LSUPtxeBCR/SR6NFiwZc?= =?us-ascii?Q?bkN9/1cGv4PDO4oOUmkVyMyDCDu0lNFwH+ZSEK1Gj8wRVJqk+CV8UWysCjfA?= =?us-ascii?Q?LGlB/IphV6sEssRZDBs=3D?= X-Forefront-PRVS: 0343AC1D30 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39840400002)(39410400002)(39400400002)(39850400002)(39450400003)(377454003)(24454002)(13464003)(51914003)(76104003)(5009440100003)(9686003)(3846002)(23726003)(55016002)(8656002)(189998001)(7736002)(25786009)(53546009)(5660300001)(305945005)(33716001)(4001350100001)(2906002)(53936002)(6496005)(83506001)(6306002)(6116002)(1076002)(229853002)(6246003)(53376002)(110136004)(50986999)(54356999)(6916009)(2950100002)(42882006)(47776003)(4326008)(8676002)(38730400002)(33656002)(66066001)(42186005)(478600001)(6666003)(76176999)(81166006)(72206003)(966005)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716; H:jerin; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 23:rBVBXf0h2jom4P3FTc4HyScUDdJJNqhRQ/44Juh?= =?us-ascii?Q?zEGe+l9hfHpeniquSFvtsqr8c7MInJG3YZu8KoG7BOGM9BTazPc/CNfrp64I?= =?us-ascii?Q?iINzgUMI0VKKiN2wYcbyU97QtQaqJhZ90B042UgN5CW/+Ta9lvfgMzL8TetY?= =?us-ascii?Q?OydcVJ/yuIbNl7bDVM+cyWqGz3n4Ee+IKVbglG9FqbFpehdIzEvtsoUHPJ5E?= =?us-ascii?Q?FFQt4OwiGsP54mLS4+ivZsAIZSTW+MelbEpbe1ZvzpWE/gXWVDO7ndpY+LOF?= =?us-ascii?Q?dLQ9skCCVklbd/vLt9iYMFxVhlQvNke4z2qQ3SmAcdkmRoYwb8k6XR7TpZGQ?= =?us-ascii?Q?J3z0tnMxcWFyRRDKlSdLl6uS3VuOkw00JTEpT6QyKYj98/wHLljrf6q2N8+Q?= =?us-ascii?Q?okhlHYUAXwt3LpeoDahQMZZIqebvW7V7mojGLdAeNT3DfTwfKseKnS9vA0Ap?= =?us-ascii?Q?+EjgK0dwLmHKQHcX0n0Y5zOcbuP8WhWfJ+CqhU4D6QTaQscUc8tjAujC1+ZS?= =?us-ascii?Q?UvBPkgvPU34ramhlICPjhR6MMh7CYyPVsmCv+GwwC1MInnoF0/MnGAYc0Ae/?= =?us-ascii?Q?GYHi5QE0jC6tKMkADVdqrx+ACYhd1SQ4s4ZvK8Gt1Kg2/+UEHtZEZuB0i+8Q?= =?us-ascii?Q?Kncnbz6JVB1GAG+viNWPk+kc1nQnLOfEwx95HwmpmpxoXYFlEbJGv2my3n0e?= =?us-ascii?Q?oaFKUMMFr0N3/X0uhxCFM1prrk24oxK+EwETSZ3hvGZ/QuF4MxKEDAoH+ROZ?= =?us-ascii?Q?8OBN0UstWFbxacLqWF9nRYTTQpbdQjw2ShULJUfntHZhTjyG7PtIC0eJQs75?= =?us-ascii?Q?ZDCrG7L2DpKLGZHWZJYoiJ/DkguvRMBHNg68HXCqeSfm3lIUMV5vNyax8Fs3?= =?us-ascii?Q?tb9EMrOpG+2U11cmTujaXMLe01V2r0D/e/r0XCjgqVWP5CU7aSIgTly57Lcb?= =?us-ascii?Q?0PTxL6B3XLKbPguMzQfAIdd/zJSHakpfvgqQNV8iRE5VvdGoOJ9VQbiE+nTj?= =?us-ascii?Q?4Yitlc69Ns8EVcQmzCfFEijHrCuXAhf/v0iVqY50hQQhUt6zR+FG2uItRygB?= =?us-ascii?Q?EdRJD8Wx/xj9z/3aaCfY701I5fcpR2TBcSuUleSv4R052zQ3cRkh6xaFNo/h?= =?us-ascii?Q?ygromOuZJKYqfvI4v0uatPGfmWbKOpZCbTnO2NWVcFYQ9X00dBPjJjUR39iO?= =?us-ascii?Q?lU8apSNL3dx6Epac5oM7Nvrx++dYYmqICv49KaieaPwP5MUNZFzqVOX3Kav4?= =?us-ascii?Q?LP2RszoDDnGw1rr/BbGKmHphc0Wy/D8f/Nasu7S/q7zkGKNbttk1LqMSysmN?= =?us-ascii?Q?4fLrcEU2dFnlvMbqnRI/HX7q7qPm4x/WlyJ6IZQJfAvq8q+QOs+I0cI8cGZ9?= =?us-ascii?Q?YkE9dmsFOjGEzZq+t2eeLMGax1Kk=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 6:x2gbyNYftc1jgysmg5k4BGiu3lReBPKMstslzTry?= =?us-ascii?Q?EWRAx9e5VMvx+ao2JjJ/U7rRsvsxIJgRWQIt+VEJhaDeEOLGFF7pjS5BuydZ?= =?us-ascii?Q?jVXNV5npae+ScBXJRcs9+X3YoFJ6LqfB2mIQuzyJ7QXitjYA7ZDshWqYMmUL?= =?us-ascii?Q?S+DjzbzqMkTJi0DqTWj0vNJLzpWE/9PpIDoxwoi3jWiKJWxIatPBTdYb5ISr?= =?us-ascii?Q?yMalBzsUb/AHWemqCNDBoUoPmne1vJBtf67yS9Jc5oH3EwbaqJDkKaTLP4qX?= =?us-ascii?Q?olDmGjWI2tSktAc1gLgnqcMxHx+u7bdexoZXcGY1FeYXMxhRYnYnlOn16MA+?= =?us-ascii?Q?UMaxA60D8AAP7MFjSjcGNNNow/xdN+sU/fF1cO8lcykLEDPaL00s+cfefHsS?= =?us-ascii?Q?/NQLOEsiO3vQmscebD5QfPuruBO79C6cnYS4FPBBKWzpzRmoDfx+FVuKBBhB?= =?us-ascii?Q?CNSc+Zm2uSLTV+pjgthSwjVHvVLr2r3HUjmlPsfjfT1TF8WOIEPoGkGZirFR?= =?us-ascii?Q?Qnwkn5wKeN2IhiI9nkpUB0d73NmllxcmP9oxdbXs77IR3J1P+Fm4JQSX5DMQ?= =?us-ascii?Q?W9klkq5NrYsOOlMxXYh/ilh4Du9rr5d4KbJ8a7nSMz+Py4v/xlxuI3LCN173?= =?us-ascii?Q?R2Gal85V167lLlvguB1Ldv5q79JC5764br67ltTdKdcZg5UzAeJQrX4mzUCK?= =?us-ascii?Q?/eLfmTIyNtGYkjUzexdBqV2nLHfvSR/zaYL9Cw8VsGLVa40ybnsrcOJzgHTX?= =?us-ascii?Q?hdZF2/dwnZi9e5/i4Q77Ccp0VIYh4I+2HLCGqB+G+UYAeT/xG3PyUoOkEXjG?= =?us-ascii?Q?CnmEjWEpK921aE02cOUXupQeydFlwnKySZ3d+gBpXeDBfZGZzMtkvh3RU5CC?= =?us-ascii?Q?j8HAERt2OcM1I3gULh2kHdVcbBdGhk4EjyAkqKTtvCXg6813iLGE03NwoUNH?= =?us-ascii?Q?E4FtS45sdTG7qVsFdSXQpqFo83WnoTdn+htVP5yJe8tWjwxps1Qxnjso/bN+?= =?us-ascii?Q?1+Q=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 5:SgRLbG/Qf0wsswlm8bsLYDfXLv8+ogcEc0m+ECtt2N5E3EDYSx5U76/6KaAXrvuuol8trP0g2Qps1zz4Aa2U9dc1145CPOuQzpCh1eEJmwH73WPK4t6vvHvItG1Rjsn5FIBRuoqkfkjwWhZhE5tGfihuSF8o2G0ILBB+mID/nEFkOGP7n8DwSoq6koTMQaSetI20PyVoZ3hMtWeFgxEfYyX+ZTGdpD1h5rWslz9qoSNEJuJv017lnkH4AEvTTvrX1+JxLTYc+q1g8gex147pKt8BavcVq+7ObN+AesvTOIXu/ZxR0QHft7qqry10rcTx1qxY/mFPjEnuphuKRzzVjWPC/TemYMcwTNbyFdmcu5nhI6pOMu95fxZ/AjO1WnMW/3riBwMmDUGP/YelNLlDYob7bqS14cICWiVmvgkxf6QCROOhrPIRbA2VAZ1j49PA9oFw1ddo+NSXykHXOIMrYt5y1EI8+IuKUGEU2fTPrHq+YUj2ZFO8jwtMotO5xi2Q; 24:RUW7onRCgrnOirdXoLNp6daYDJKr+79jR3Hn2RpisWu+LRlFnzoV+Hj3qCYTZew0PQcc7YKlurISssM2qFNK9JsJrNcp7BK602RcbQNivKM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 7:uGInh/EhYJ4MB4nfk8Yba2PvNsE3K+nQVMPELgWLmJhph001zP7bj5JGP7AMeSYPDp4U1n2cALZ3QXP2c6KYXYEz3jH/D9i5kjWQySyIUn0w+QkS/Q64Pi5i0ZXa5k0+DzTqm1sBwCYTDzQYMdG/ufRpFYMsM4OTienAee69Z+gsfo/SJ3bnwX/pYRhtxB/DMdRVeUShWsBmwXeq83iBW6er1PyqzKHYTfUW0luheJPlGlPui2WTBUW0qA+ADt54Td9JK/pjXIqxqmP3Tc7LWdlX50KNbGUHB3B+o/sUl6iWp5mtKiGx0OVf9czZEW6fkTvvqqla9JAZoJ43HhULu9EZb8sUpGDPRDwGE0+P21Ak4wJKq4kJ1A+zZS7INGlnVG5Q1CYuUhVSkGeU1xYejDqIwudEC0ccr9NC1CA1eeUBJHwOB9qV/CKzC64u7viun9VBxLV9AdEZZ93sSos5BXlYvoUFcrlR/V9Y+qxhKuMv8wAbuLsRELK8u1+Dle4GJpig7fsvzh3F9vb5hyS0yjJj7k/8ZAY5tpKlsNAWyf5FAWydWz4x/uxUCbxjhUaYdHdAWb7DClYd3NxJ74Gv6j3fNVHFX/LylY0kb7xaS6qMNBLUER+OTZrt2TXkhBmjPx6ofMuskGuvT90i0kOF3b3QDiz5uy0QEDDhKdEnG8ZyuhTY+2u/Av5NyJa8NGAYoiGtpsbXM6Hi7uqBuxlM3jzi/qb6N1vYnzPY2Ozyo5+vInZkmfOcxomvBid7BNofEwDHPndXUonZgmjz76YoE7IhGdwlysm8HDY7Q3gIM7g= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2017 10:05:40.6242 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716 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, 19 Jun 2017 10:05:47 -0000 -----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. 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.