From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on0082.outbound.protection.outlook.com [104.47.36.82]) by dpdk.org (Postfix) with ESMTP id 0BCDE2C8 for ; Wed, 5 Jul 2017 09:36:13 +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=Ug+9JsZjz6K5k4/qGOPNflsJE1M2U1v0xR+vOZAjr4Q=; b=JFX2Y3upDB3hkNYGynA+ZjVRb7Z+BDMkh98KVN8uSFqvbaoRqZifJIrqoqDMO/H4QZgQYHQj9X0hvBLcxdbAz5gE+u7Ju/EpZxrirT6GiHPndwetYou2L6H+/BZlNROdEyc5obDm6aMKBXvCtjr5bGarm3YOG90tqbvzPZQd83g= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from [192.168.1.100] (223.180.17.81) by BN6PR07MB3092.namprd07.prod.outlook.com (10.172.105.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 5 Jul 2017 07:36:10 +0000 To: Olivier Matz References: <20170621173248.1313-1-santosh.shukla@caviumnetworks.com> <20170621173248.1313-4-santosh.shukla@caviumnetworks.com> <20170703183720.381369de@platinum> Cc: dev@dpdk.org, thomas@monjalon.net, hemant.agrawal@nxp.com, jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com From: santosh Message-ID: Date: Wed, 5 Jul 2017 13:05:57 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20170703183720.381369de@platinum> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Originating-IP: [223.180.17.81] X-ClientProxiedBy: BM1PR01CA0117.INDPRD01.PROD.OUTLOOK.COM (10.174.208.33) To BN6PR07MB3092.namprd07.prod.outlook.com (10.172.105.10) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d065c915-3186-4deb-5edb-08d4c3788299 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:BN6PR07MB3092; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3092; 3:CezqN+WBONEa3gLEKVA7X5UI5Vhpog/5Aumob0GVGzMnkdwXKkYkJ5BCFlGPCdyDAf3xCHO8ljccC/tNd0pf6paA2rYNNQ43p0iZ5qDASWbwfhUHqzrYN4BWRvMRfeqFLu+OOu+JLjHLQv7X7ehTgXucFXjqFFbYaTDB1GWyTLplvsPNfoWIA2FSGqZUtSFWjHR7s6IOC1WOzIAwFVjkCFBsY0+0UPYJv9BGDhHJWnqjj9hg3kUk28P+bmO+P1furMACqda3p5O4AOViiov7MJJuDXC923wlouLrOe7GFuz2CCeiN7BaAO+aZub/vZkX+zjbYLp7kZ3GtalolasAA2NV5wPQhI3A6D4weipJ42CG17GXiNHBGqeTvA64ljo8bem14yN+KurXXFy+dBu2Iviqz2StUe/VqnCr7BC5jY3GxKcAdYdzg+X0Pc1CFnY5cgITXFV49j+hK0DS5Ro3bkrsyz2oAWAoFDIQFJBAztj1SJkUgnuP6f2qbnoi4FMIVPb2PXXnOvSh33HkyVKfOBkCpyRLneZwjTTRfvhHecPbnWu4NdMNDLdWnEfKiNDpZJruMGMjvcg2Ik5Li2ADseeZiLR11SXe4Xdju9CnWuAc9Co/8R5eHUdJJ/zqVYEGOsvkjQkspmS1n7oYz/YdCrjnDODP8sA9X9ijRYDF6X7t0s08wgsNKZgW2VGx54hyEtsFlz84NHsip9a/z4pIy5k2JtjLugEMR4I93W3XFjLH4ikwis8k9uaF6eRy7oPb X-MS-TrafficTypeDiagnostic: BN6PR07MB3092: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3092; 25:t86WhaaMURYi8bs0ZRLBkX8orf8P2g8treE+URPXklXjB9r7L/eWicEmHXoDl22dcdLM+t5ucZhPYXbQAEziZwdU6AYbzzjt04g5eqk2cAyvhi39dXs4fsg6vV0Gh39GCbT+WFTktCCjCNNcQPxYvKiFF4mgS/cOLhRFMUH7Y3xJSyVLbf63ZvSpyqBR0BJAh/PuwFWef8eOBogBhkXObovGi6tn2IKXQ663jdDoaN4cFivKebmsE3+Y5gmqRbScfnAlf34WizGmArZCwyCeeFktk0ppOqYWADMGR2MwtKn/1KG/Nof8AifSfC90vamVVUhsRzXB6qh7PFPFijslKWT9hNgk1OiWRQaQJiU/ZgnjDxOt2Z5BFrdSgCzZff3CBsjAJny3GrjagKsi5UsHFE22jQvDtzmus860RCG9dF2jdY+twL4LS0cIbcuwpNh0umEY4zWv5mQ5W2Ln36DpV98qZINZl0DfgVzdwmpo2NzJU53O6r4x/Hvb1zq5MLAK6NRIMn6vJLx18ogt3XcKw401izqCOJdhejlAZLvlb3leSsF9mAHWV5SJlL0tMBf/XvqJ3bG9MYL89K2T0ZCFHX8qhdSxnydbWPk0T8w2jnxxOnWgb+uBX7ZE0FhT6gHOXIixoZcnnmPeZf94rDAw5X/08CgsLVGiWF+UXDjhK6QxVDjp2yNH6xL3LEiEAsDUT5mXg+FCFcvMnU/JKyUhRJSKOAjCXveCt1Ifn2/+IaaZJFcqCxTamJvWP9Xuk/mdJyHYcRugTCLSXBR0wU3NR8QhhZehM0fioqaehAc4EJbUXN600qGrXMjS4sTcMVksVdHfyzWlizn6Xx4jngvy0Nr+egjouetYZqaxR/sc9QTZd05MFzClZkonfPbAtfkN2win6zx7y4oLo6CX71SNUu310xVFfjnEadE7G25YpAM= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3092; 31:AvbthPgMRrjcssY7iORiLJIwwmXeQr+0hGwveCwXHfmPi4YBjGZdQOp+YkHQeKx35Z3nOtIxuDxeqoTbEgOePRXqxiin+uVSnsOkRO32Hjmx2GjFkgVHirsu1rliJ3xsIIEDhPZ3uO3vutRY5/ZI7B4v4DjEPHpQtBqt2CWW25CL/Qp5/bupvBpqagCuEYYn7MLhbKD4QPE9YQnD4Oa8/XO9xU+P//wPsW0VaGTRGbQ4Bmyhh13nuW+uT+xxaHBiC1nyfYq6dR1OJao5q4TpaTpw8ciHRKSIhPbzGLutg0Jlbq05JavPYVIZnAiI7pzAhucz1KTVXWbprbhJ+AWyYIze9h/eQ2gDawz6MhRNxSxEehGgymsgAlqlD58RiAoxix3Ooa+k5piLnKfcrtjafR7zq+HGVrHALUW6gtr/Jt5ZgrAqSE8yQCYIMsLL0+R8Wx2VqPzT1OVjKAPXa0Q7jgF3/jiYrxWmIDny2BU4B/e+siuLbZq4tZdz/oY2O0w4kOP7pxGxF+vtpeogjxusurNMS00XcqZ3TmOL9MvkpnVHlVTrx5ZNIavmPP3FL0sw3LQGAbvKfz5WRdnE7i6yApChfkqtROZJdcN8vXvq8pTYuzyPsi/nYKx7SShZIRAsu8iQg2nBGfxh2ryBS59j6j0dBXEptyEq9rnFXrbY7yE= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3092; 20:hKj2M3edo3maDODSF2c2JPrOPhObUQJyfd6qBA0zJXUAsFnXZzKh1/KQOBq93yIPNzIvqwCC787lZ9GGhDj2+pLl7cKE0/sZ+Ic1izpWd0qPjXkj56f7jePQPVb0++ksilS04xPhGubCfJ4vk3XTjkNuoj/VI6pJEERi8WNgeXKH3YLH2vOn9kIKfVRyIqA7miTmuFEpCys4552z2rnKHOetWsrdFHlaGpslXqs1OpzoBd2/S7avPeeiL4YZ5/DZxUcWaK9TboBqpGrlJNc8ch7qzvy7j/b4ru228HThfGNF5rDqcs1mdospQKPp1fLWgGVb5Y4pUwy6B/C6YkX2/aUKK27cOS44MYEg1vxVSPr4P51+Udfkhsm2Y6/t3Mqom2ZHYEr1rKBtVLs3RJSQNpdyVNYOLzJPlVteHL+msvMwDbuu5YSZOyxsDYp8YPDNzsmvuVuguMIxDtHInRRgad6TW4dNv9ih0vNZv6bqBpoBp44yBvekuyOZ4Lh3iAlnIxcZ65TNsdoLgIipmaUV78IjeJJMATt8od6L5xUWblqiTeecueiUdcnxgzoAtXKm7+5lJ4XfBM46Nb+sBnh8r2j9unJoXI70VvF3uBc0VK8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278178393323532)(236129657087228)(48057245064654)(148574349560750)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(3002001)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR07MB3092; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR07MB3092; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BN6PR07MB3092; 4:tsaDyWOdjv8MO980913Oq0G1T9Gr4XTS6KS6b4?= =?Windows-1252?Q?nG63XQQN0ERUYgkFqqCVnDMMwpj54fB+g02hrRFO8pk3MPbixjgu8bSw?= =?Windows-1252?Q?0a8wlKfoTS0iI9XOQ8xj6SV7VRBbx3qWGgPsyYOoM3rorT4TXWdcYLNI?= =?Windows-1252?Q?0IzWP3SW8fybNmnmvvLJA81S/aKRuel6nsbRwr2fF+2w/4Hmsdr0czVo?= =?Windows-1252?Q?cUeIibBqyqiVVAUIlEzA/q0I3k7BRSi417exfvnhk5seLWeF1YOWX8sZ?= =?Windows-1252?Q?z7srgKdUU97dFEKMYnLzpMuuPjbFzT5HLkp+PsBBpHgRo3ZZYDo+JjNd?= =?Windows-1252?Q?BXBEpgUMzIWvSxPNUInFNmy3DaYFwXSosUSpDJbFpbUINKiX8iDggAWb?= =?Windows-1252?Q?WtYouSOhEYljwTWG0xzlKkgxT77LHnS5V3K1G3dUQoipgnGRzjebtZc3?= =?Windows-1252?Q?q2WYlDwbPjFIzZcDyPjmoBLNaKbKna3q9cYOfoq5k6Wp+qAhQpFg63vB?= =?Windows-1252?Q?DJcbk5gAwWMcBDW/XrvwH2KFuVNEjk1twQQiLKXuRPovMhGwTNy0kK6V?= =?Windows-1252?Q?IGZW2lZO9edlpBLkHteMoATIrnyiWjT6JSy86poS9ofpJBqtUiHpk8Bc?= =?Windows-1252?Q?KS36PYJY3Ure7YNprz0X/te6oP9UVoCr42rzmRcdar49MVibXSbEjtu3?= =?Windows-1252?Q?nwsTopzYpDb69JJiwL2qJx0RFW3RzWUtehxYHw9w8DkxpJxQqqoRnGw9?= =?Windows-1252?Q?7MBau9TacsYD2Ou8GjXugpfrKTv12aeASqc0UKJ59vzysOwevVYRGmO2?= =?Windows-1252?Q?hmsi8wdvQLT65n8a4YTFCRsSk0rM6+hR4rbmuaUcNtXMqemZc8evfxXe?= =?Windows-1252?Q?eb/vh5xJyWCBTUz1A1XaVUs4Qay4OqIN6G09Igw668zBW6yYb9C1gXyE?= =?Windows-1252?Q?HvebUumb0W043MRCyp4149JCr3u9d4CuazGmUS85TL0DlRk/RAtj9EZJ?= =?Windows-1252?Q?QHu5eDP/0Our4orYMF41tIlqKthqxW7u3G3d4lJp8b47njhUBELQRIeA?= =?Windows-1252?Q?5Xy2nSoFJajmEmdg9l0ocIZYv0Z88Zr6rOxrnhiWa8hb9Q3ShWthygf2?= =?Windows-1252?Q?/tDyVnQzaolFAWLxVgtuarDAFSQigp6TBe31s0s33d3tgDVlvjo4wwyb?= =?Windows-1252?Q?AO22rTqEQEOreVMQ8R9M98aV5jEYiF2A/b4vtjAIiOIqP3J6qeugFP0r?= =?Windows-1252?Q?fFPKAhOXZy7r6nNSEem8ogFFvQZDyw2rikyh8QMRdDgxL50jAE15ftEd?= =?Windows-1252?Q?hb0FWKMcx/2UvY6590d/HXAEQsmutk/n2bjUQEJLhl7Nj4nJnZPdWIQz?= =?Windows-1252?Q?XUS3tHwObzPx5Ukn/2H3pw7YZ82lLwihVKCFvgzR6ZoILDTepzcMw=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39450400003)(39840400002)(39410400002)(39850400002)(39400400002)(377454003)(24454002)(3846002)(83506001)(42186005)(31686004)(25786009)(8656002)(53936002)(31696002)(2906002)(66066001)(6116002)(305945005)(117156002)(77096006)(7736002)(6916009)(2950100002)(230700001)(23746002)(6486002)(47776003)(229853002)(4001350100001)(6666003)(42882006)(110136004)(6246003)(478600001)(54356999)(33646002)(76176999)(50986999)(36756003)(8676002)(81166006)(5660300001)(4326008)(72206003)(189998001)(50466002)(86152003)(38730400002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3092; H:[192.168.1.100]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BN6PR07MB3092; 23:WvHWzizUl3ZhApPL1pzYlLKtV3g7fWqyrJEz0?= =?Windows-1252?Q?qigLyUVuw/w0fhUdQIPvl7lBLVl7VVMsVObPuU5+i4rtvg6eXg01d2fh?= =?Windows-1252?Q?78EfpOueci2NHdhA7P1cJ9s+yYdraoqu4VhQDO3BPt21AQxG5CeOcUH/?= =?Windows-1252?Q?DjSJnmkQHZoRBFQCFrD6wjNnG/dHE4c3ybjJBDGleYxQVCC0fCbkCBuY?= =?Windows-1252?Q?f6f+Co6oO4Jx/qTNIz5LxV4/mI65gRfZj5Nh/V8i/ILyPb4W+Mp2KPs0?= =?Windows-1252?Q?Zolfa2zxenYs3vMF9wMTQcXZtMIs/fBVyNCRGuOEXaOwpWj7gW9IYU6/?= =?Windows-1252?Q?uPkbOpJmtzlqyhsU+/qRucZqzIkMgWirLXoXkL9AYAwXeWD8BwyrmojX?= =?Windows-1252?Q?w1ImDgmyiFmE9RtceUmEZ1ggzrP/gCROT4qoQWonnZ1T7solEWDn5Qnv?= =?Windows-1252?Q?CarpGn8x5quNh/efT2IE131gF7iikDkUj59fqIc/LJr7qPN6AXTdXR/+?= =?Windows-1252?Q?HGgEZpohaXsG1qrOWGIf5gbUZd0SlYYygHsCEdVBuZZjpdxt1shGJqBx?= =?Windows-1252?Q?eKSlfU6TTXG9N/eIhgOejaPrJTvIhIv5FYlVJPPxyXwqMcGx5/8ZBuJQ?= =?Windows-1252?Q?H9wsk/p0CPWp/MkkOmm+l9IKziRoEt7/PXGH2Ym68WNP03joEkbdhpXr?= =?Windows-1252?Q?MbNEdW6NSqR/HYAwdQuaMhTJGO/CTLF4cIi3nce6/BiCy2s0evlMBFuf?= =?Windows-1252?Q?vYo2qGBW4WuGcH82P7rAsqYi3fIBQtYINumtQze5Sj1Cgfun7dgCb5um?= =?Windows-1252?Q?M0jeiv5IvFo8D47fGS+w39R5aTJpXZqqV87npRVTAlDffFmepvUnr8QE?= =?Windows-1252?Q?JXhnC85/ZtYKExGhJ0ukcI+ggKRJ0R27CXZhLENQEmLpB7TZtGJa5UME?= =?Windows-1252?Q?+xsTiYbLDKxC/ev5edldDadIpDnWqUMggPifDNcIyfo54oIx3sxPxbHo?= =?Windows-1252?Q?lJxQLUK5brbNGGlcyXglG3rbjr7P4llN79gFrBM9Ll7qzTDHZZK+h+Db?= =?Windows-1252?Q?9VXO8JOc1HWdOqpsJ01jiOkQ6nOZhEphZMegcdCy/iO2ROHs8JsKFpEa?= =?Windows-1252?Q?9TtWLtFlYv1IXotkQL8H0rZQg57WbQ9Q3kTjHAFo3pvNLbDVyp1r+H10?= =?Windows-1252?Q?qQ4QFR12UOKIEGlUz9ZZo06A6XOFt1gGm0Be1sm3WySEYkw8SspQaqSY?= =?Windows-1252?Q?hutKOXhXnnBC6NbktjAXx96kdEBlCELqPKWpieyOV4/7QRvW+qOnSDx6?= =?Windows-1252?Q?XOpPoH2hTdVjzl7VOMWH2OtfZZc836ht74c+oQ3iWDZnYyL7/ZhqlFOn?= =?Windows-1252?Q?PyEwRR2IOrQnB/Mn4QGTncT88xhKToIRw=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BN6PR07MB3092; 6:dagdSHNB4qZDG+UgmnzYVVKXLPjo1iCHxCIGaI?= =?Windows-1252?Q?97m6ttkRQvfMNMRke8TPht34vZiigw1R9Wr7Hlb1Tdzos7rdUHD9Olf3?= =?Windows-1252?Q?lVFHpYRkeGj9HElNT9u8FmBfx83vFNfhPiN5+yATLb30+Dku/CLaDHO6?= =?Windows-1252?Q?XaN/WjIztLZH0PX3fd4IRYnKxfUW8d7tSLYuTeGpkV5zpiNPpLXROdPt?= =?Windows-1252?Q?kpCDSgDaAG7MEzClnP+WH61ayl8Xa+6ekroAsW8250xH/28BetiMyB/7?= =?Windows-1252?Q?QK5nNAZZSx13VTGSVz8ZE1j9fdeaiMOO/L9q5dzddiD9sNZYDSP2OqGu?= =?Windows-1252?Q?PDzczXUpx3u1fPqJ2BU5n77eXspY8b6mgxDFBcBw8CxMxapt7fzGyQqS?= =?Windows-1252?Q?KmG7UNQuXasHpSzwWevADoe2tP+m6emDWkmAMefN38amf8Twpd5TEiAA?= =?Windows-1252?Q?JnSjt3VNCHNdzEUJZ/OOLxe1R7PMH9fb7OEETwkdqNdUSRw9FvueEEBY?= =?Windows-1252?Q?hEWH/OD9vQNBuN5GWN3saamKafBYqOE+R2aIIrzvlYcJu5Jap4ALWBEL?= =?Windows-1252?Q?qPIUQvjozljvZSu9hwCKcONLkkhAWu7VORVyAOLfyMDtkfydsacI0njH?= =?Windows-1252?Q?0tJzG7end1M/t34O1EFvYfztML6X6sLnpfbe2uP/5X/SNUqvnMB0KCac?= =?Windows-1252?Q?DisXdFqOQIBtCRiyAQ3MbLerZFOVBWJOXPK7iiBkqvm0URVqKrL7Mb7R?= =?Windows-1252?Q?L7bcHC9eUg/iIz/AUM549APQ4CCzTDkWpRvNhtX36pGAYfNQMa1FoC5k?= =?Windows-1252?Q?qIPevowH/Qh9drHCDRPCsv0C8xpe5Rujj/72KfTrFzxwTtBPS34L9CUB?= =?Windows-1252?Q?nAetToBJRY+2AjaHM7HT4EdP89BC/qhBDSKN0nHgZendsqBXVdnlTbgz?= =?Windows-1252?Q?iPD6vivUw2Zdl8NU5pw0R3MW+Dcu3Sx6bPMVojF2RHvVNZgOM8mZvMSQ?= =?Windows-1252?Q?9o0n3nFFP/fmX5uQpmpjQrttJYE/CrTJsd4+FDVf+FZxRSsZZw1+uWw6?= =?Windows-1252?Q?Gi0LzoG5Mr1aE=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3092; 5:5Ggvz93R8hjQmHvbq5S79gMQLtLSxDuzZaX6UaVR2gQBozfwXb0aPr7y0kGIJAbifQ3UczaBIYz2xaN7WRz9Ro2tSpQ9yP1c6AhMo1QOv66egeNHGLIoB7fg9OhMnvNqkw3C9Etve9cp+HFucU45UkUhF9xxl4nBRIwARMoSEvCXVBkMNTTjAo04OZzXB/nipP8tUxx5sWU7QSBc5LHvp/TxN5w3dsHRaBZGNnYX5T8D3fsgM2thbmc9cK2w9s71980H8zYOUCgMnaMs2l1y+DFJG8tOxmYpjHvaqfhIojmyKfWkHOZLuQISgnfTpC5XFIqayhW45rzYOXNV4lgcdkKC4Ac6Z8YSzJ6I8YO2ukmDJGi0df1fN29g9JvHECixuHsfNdB/Wzq2Uoa7d1S2AEG0WAF4XVMoMkfL4+g5pZXY2OZsstitHTdsqbjFJRp3wMpMb7d9kd52ui+BKdnjJBVuFlf7FjAClTwBFoSSeLc4EnkgGWxQ91oDkDL+hap/; 24:9sN0z+D9P5PDx46exqlv6BxbcO0JKkGOHCmCkcF0pq8AFiEdJXsPEvhjZMy3n+AoJ7d7lqdw/Ryl8Lrfz0NRABgiswWC9iD4+FEfGEakT3Q= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3092; 7:krwBXRaxiFQIZ6Vx6dmque28OunPnFtAmHm2QTemIvrjONaFMa3kZbV0TF7ylAwG8yLMtwfdGuhOPKjOJUMXPBMMLg0vuN784WmouSCI0puqZ8Q/cvYnfHF8b5VBqeQl6pE80fGjpLn+KmbrKDilRVQkCul1qPYM1DHhqRdsthY9Kt1ASuGG2599e8yJYpd6RBqa+k9+ojUX377rbRMVTA3t1aE1kDd5mLxvbXt8kuqsqbJ2EebD/B0taLQ6bjN7TpuJwbZj8EU9zy1tGvz3iGEPetaVw2I5g9aXKfAIADs5qSctuahWSSJEPhe2UoIqsZkM3sA8PAXz5jCgL3on9R4jT3B6gqMAuExaTzTRlBd9s4IaF241GgbIRN3aBUWpREXQOr9VFs0Tg8fUUcU3X6ht8umagWxQChpEkQHCO8l6Q+/NtSXRYKNEXXfnHVQ84gHOW1jypDMhTdcmxb/4Rar57YNqLsnUaapSnIUehMFvTQ17NDMFEf+xGmzan86t5F7qHsjVsf41hZPv2hwTQH2mpzREcbEAx0CXN5VBDb+Avy3CtFKnSKjDR+C5MiaBax4KE6ZmlLwPA6mjjPUt0FyZ47ILRFcEo5mqtpFg3leqmDTnh1Za24YchSNz7grsXc7bHCz9HkRCfmEW4VeJXbWcmdWEfgRlbgF16bFW0HMeUIBz71Vu9i2T1puI7Xom2IfIwrCQZQIcMvYr1TLoWy8uC4Gu0gdL6hdjUI/DNPHNFs8Geq2HFGHsqBQo2Xxt4/V3ycvo5sTy1ab0GxiHarPIMHTEtom9GUHBfRl4QQY= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 07:36:10.2278 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3092 Subject: Re: [dpdk-dev] [PATCH 3/4] mempool: introduce block size align flag 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: Wed, 05 Jul 2017 07:36:14 -0000 Hi Olivier, On Monday 03 July 2017 10:07 PM, Olivier Matz wrote: > On Wed, 21 Jun 2017 17:32:47 +0000, Santosh Shukla wrote: >> Some mempool hw like octeontx/fpa block, demands block size aligned >> buffer address. >> > What is the meaning of block size aligned? block size is total_elem_sz. > Does it mean that the address has to be a multiple of total_elt_size? yes. > Is this constraint on the virtual address only? > both. >> Introducing an MEMPOOL_F_POOL_BLK_SZ_ALIGNED flag. >> If this flag is set: >> 1) adjust 'off' value to block size aligned value. >> 2) Allocate one additional buffer. This buffer is used to make sure that >> requested 'n' buffers get correctly populated to mempool. >> Example: >> elem_sz = 2432 // total element size. >> n = 2111 // requested number of buffer. >> off = 2304 // new buf_offset value after step 1) >> vaddr = 0x0 // actual start address of pool >> pool_len = 5133952 // total pool length i.e.. (elem_sz * n) >> >> Since 'off' is a non-zero value so below condition would fail for the >> block size align case. >> >> (((vaddr + off) + (elem_sz * n)) <= (vaddr + pool_len)) >> >> Which is incorrect behavior. Additional buffer will solve this >> problem and correctly populate 'n' buffer to mempool for the aligned >> mode. > Sorry, but the example is not very clear. > which part? I'll try to reword. The problem statement is: - We want start of buffer address aligned to block_sz aka total_elt_sz. Proposed solution in this patch: - Let's say that we get 'x' size of memory chunk from memzone. - Ideally we start using buffer at address 0 to...(x-block_sz). - Not necessarily first buffer address i.e. 0 is aligned to block_sz. - So we derive offset value for block_sz alignment purpose i.e..'off' . - That 'off' makes sure that first va/pa address of buffer is blk_sz aligned. - Calculating 'off' may end up sacrificing first buffer of pool. So total number of buffer in pool is n-1, Which is incorrect behavior, Thats why we add 1 addition buffer. We request memzone to allocate (n+1 * total_elt_sz) pool area when F_BLK_SZ_ALIGNED flag is set. >> Signed-off-by: Santosh Shukla >> Signed-off-by: Jerin Jacob >> --- >> lib/librte_mempool/rte_mempool.c | 19 ++++++++++++++++--- >> lib/librte_mempool/rte_mempool.h | 1 + >> 2 files changed, 17 insertions(+), 3 deletions(-) >> >> diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c >> index 7dec2f51d..2010857f0 100644 >> --- a/lib/librte_mempool/rte_mempool.c >> +++ b/lib/librte_mempool/rte_mempool.c >> @@ -350,7 +350,7 @@ rte_mempool_populate_phys(struct rte_mempool *mp, char *vaddr, >> { >> unsigned total_elt_sz; >> unsigned i = 0; >> - size_t off; >> + size_t off, delta; >> struct rte_mempool_memhdr *memhdr; >> int ret; >> >> @@ -387,7 +387,15 @@ rte_mempool_populate_phys(struct rte_mempool *mp, char *vaddr, >> memhdr->free_cb = free_cb; >> memhdr->opaque = opaque; >> >> - if (mp->flags & MEMPOOL_F_NO_CACHE_ALIGN) >> + if (mp->flags & MEMPOOL_F_POOL_BLK_SZ_ALIGNED) { >> + delta = (uintptr_t)vaddr % total_elt_sz; >> + off = total_elt_sz - delta; >> + /* Validate alignment */ >> + if (((uintptr_t)vaddr + off) % total_elt_sz) { >> + RTE_LOG(ERR, MEMPOOL, "vaddr(%p) not aligned to total_elt_sz(%u)\n", (vaddr + off), total_elt_sz); >> + return -EINVAL; >> + } >> + } else if (mp->flags & MEMPOOL_F_NO_CACHE_ALIGN) >> off = RTE_PTR_ALIGN_CEIL(vaddr, 8) - vaddr; >> else >> off = RTE_PTR_ALIGN_CEIL(vaddr, RTE_CACHE_LINE_SIZE) - vaddr; > What is the purpose of this test? Can it fail? Purpose is to sanity check blk_sz alignment. No it won;t fail. I thought better to keep sanity check but if you see no value then will remove in v2? > Not sure having the delta variable is helpful. However, adding a > small comment like this could help: > > /* align object start address to a multiple of total_elt_sz */ > off = total_elt_sz - ((uintptr_t)vaddr % total_elt_sz); > > About style, please don't mix brackets and no-bracket blocks in the > same if/elseif/else. ok, in v2. >> @@ -555,8 +563,13 @@ rte_mempool_populate_default(struct rte_mempool *mp) >> } >> >> total_elt_sz = mp->header_size + mp->elt_size + mp->trailer_size; >> + >> for (mz_id = 0, n = mp->size; n > 0; mz_id++, n -= ret) { >> - size = rte_mempool_xmem_size(n, total_elt_sz, pg_shift); >> + if (mp->flags & MEMPOOL_F_POOL_BLK_SZ_ALIGNED) >> + size = rte_mempool_xmem_size(n + 1, total_elt_sz, >> + pg_shift); >> + else >> + size = rte_mempool_xmem_size(n, total_elt_sz, pg_shift); >> >> ret = snprintf(mz_name, sizeof(mz_name), >> RTE_MEMPOOL_MZ_FORMAT "_%d", mp->name, mz_id); > > One issue I see here is that this new flag breaks the function > rte_mempool_xmem_size(), which calculates the maximum amount of memory > required to store a given number of objects. > > It also probably breaks rte_mempool_xmem_usage(). > > I don't have any good solution for now. A possibility is to change > the behavior of these functions for everyone, meaning that we will > always reserve more memory that really required. If this is done on > every memory chunk (struct rte_mempool_memhdr), it can eat a lot > of memory. > > Another approach would be to change the API of this function to > pass the capability flags, or the mempool pointer... but there is > a problem because these functions are usually called before the > mempool is instanciated. > Per my description on [1/4]. If we agree to call _ops_get_capability() at very beginning i.e.. at _populate_default() then 'mp->flag' has capability flag. and We could add one more argument in _xmem_size( , flag)/_xmem_usage(, flag). - xmem_size / xmem_usage() to check for that capability bit in 'flag'. - if set then increase 'elt_num' by num. That way your approach 2) make sense to me and it will very well fit in design. Won't waste memory like you mentioned in approach 1). Does that make sense? >> diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h >> index fd8722e69..99a20263d 100644 >> --- a/lib/librte_mempool/rte_mempool.h >> +++ b/lib/librte_mempool/rte_mempool.h >> @@ -267,6 +267,7 @@ struct rte_mempool { >> #define MEMPOOL_F_POOL_CREATED 0x0010 /**< Internal: pool is created. */ >> #define MEMPOOL_F_NO_PHYS_CONTIG 0x0020 /**< Don't need physically contiguous objs. */ >> #define MEMPOOL_F_POOL_CONTIG 0x0040 /**< Detect physcially contiguous objs */ >> +#define MEMPOOL_F_POOL_BLK_SZ_ALIGNED 0x0080 /**< Align buffer address to block size*/ >> >> /** >> * @internal When debug is enabled, store some statistics. > Same comment than for patch 3: the explanation should really be clarified. > It's a hw specific limitation, which won't be obvious for the people that > will read that code, so we must document it as clear as possible. > I won't see this as HW limitation. As mentioned in [1/4], even application can request for block alignment, right? But I agree that I will reword comment. Thanks.