From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0080.outbound.protection.outlook.com [104.47.34.80]) by dpdk.org (Postfix) with ESMTP id B3B5C2935 for ; Wed, 5 Jul 2017 08:42: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=AXGqrNAiUH8w3KU9fAPIcoJSa6eDu0HtxOL0RFbk2zE=; b=ivX2dL1uySts4y/c8DclfZCy4Wt8oEateZK76g1QFxD75vZrhfb5ughw800ixqWVZ3BAmnEukqhmk70sh06cT6LtRyZeFnt1RYu0tpp9sPs8aochMhkrX1s/i1dkqxPR0GH0GwvGX1cOlnqrTYtz1kqFkJXDjrkkGhkwvHk28I0= 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.0.101] (103.76.56.167) by DM5PR07MB3097.namprd07.prod.outlook.com (10.172.85.7) 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 06:42:09 +0000 To: Olivier Matz References: <20170621173248.1313-1-santosh.shukla@caviumnetworks.com> <20170621173248.1313-2-santosh.shukla@caviumnetworks.com> <20170703183705.627d185a@platinum> Cc: dev@dpdk.org, thomas@monjalon.net, hemant.agrawal@nxp.com, jerin.jacob@caviumnetworks.com, bruce.richardson@intel.com From: santosh Message-ID: <2da743bb-9581-e181-6540-3ca9956063cb@caviumnetworks.com> Date: Wed, 5 Jul 2017 12:11:52 +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: <20170703183705.627d185a@platinum> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Originating-IP: [103.76.56.167] X-ClientProxiedBy: MA1PR01CA0090.INDPRD01.PROD.OUTLOOK.COM (10.174.56.30) To DM5PR07MB3097.namprd07.prod.outlook.com (10.172.85.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f8ceb486-d2ff-4005-fb9f-08d4c370f707 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:DM5PR07MB3097; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 3:BM2CYtclyi7Wa2PSTzgDEMxTazhJRv6z/4JPQKKKu+Fkl/3f6a/FLrcR2nIzSDlQfkdCqcCAHNWmN53i7Z0U5nR7Yzdf/NYDdJIM9rRPpKhn9V2grCwYhPjnO5eDFqwFvjHJQioCZJ2JgxooHQI7XB9JNUOr0MNtzQgFquShKqD5lKNTUdMzLrVvatO3TmalwNuKBjL3IMX313/vx/fXvme5AL/0aTnYHpkng/Ys3kRwa/p3MeIFBIuOpZaZKSZE4gr3GtuamJ85YqsqcBlivNjKPiBdEEoCFSIsXaq6qaxkV3v0mMT+maXbDGjbuoMVyFLrs+kvTiZDAsl74HMIzafIYk0tPoST4W/SpODWeVJQUYSu31uZBO+RGWru/7+UMrMvGZa2r7nA5Vhz9cgLKOLa0y2uWOfKIED+/2Yve/xF/4d7fIi8M0Z4FaeMijdsLxC4LTiOchS2khwrslw+nCbaweKVdBjqK+MKtcuEcqp2fQer4DhqV8rMPCBU5rdE/XxNf4ZPwPYF1rk/Jm9yWuhV4KZccwf61g/xDlPp0CtLG+8juGzBoIi0qOwpSkDyqBON3jTS+t0EzNbWlqngHXL9QSb0ZaoOps6SdfLsFZ+XeFUVmUP+weC/R9HKxl7Ra6++Q+humeN8EqoW2UnVnywTmVCr/u6J1J/AeNij5RHYEWE5va+7Wzp9Y6wfR2a1wI8rtKna1UH00Osechx56qRSW+rs7zvIF+GCr4AT61rg9EaNPTBMI9lZoEhejVXg X-MS-TrafficTypeDiagnostic: DM5PR07MB3097: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 25:zsyCmXktZeVoUCfSCqH+wN3x5eumMJeGXO389YyNZYJMl5yKX5wKJrwr+nu3VhH9vH4RMCEYfOF+L01Am7WM8YYxhXg9syUsnhbIXcWLDub1EqmU22nwNqs+VIQKrVscQE45EDTCD6DfFCv7NCmhzNQeG6lASUG8s8NN2i2VJ50XiKAGEKOlwHh8R+kIXQr8KqCvn4t85MpgQ0FPI5xYmQ6n7QOhgLLLvAyfhGVs79O6mZ1bNr8A0854/5qmFGWKZSfRWmkZX52PSlKtszqw1mdOq1TDjHLzsnVHmHXCzHLt343gDj6JC2efZaBbw/ZpGB8Z56MkD1Z2bLraeIG9konUHVwjtVkel2pIIWNhcN2muxZnsV21bNtHxcL3KQscen/Kx2uy5qQWaNMib9rR8/tumV6kmo09DL+fqZUVta+TLoin95WG0s7p5yf1IzTnyGBJJUO0hG0cWB1ETHcQt2WTovT6L3kh5RVPxWNtLyz/la9tZcN3u7HfbCH0B6DpMHBT3hZfzjpgoXHyztyfSZgN4MYZoyTCsS0oEF3/TG7EE5+XltcYnGuvkoIQLebQOd5ieNrQ2rVTZcHqkjjkrgqOY6jP2TWJepluwI0GnnNslUXmmQyfOZtocouBALljuy1MLwmQRIVv4c738AZFa4m3/FynbTiDHUqXo65EqeR3SM3c8anrpgxembcypFPHtOKL8jJSATGielmvLHg+g/Pi6BOrP+sBlghjk/R+vNYkZhYyK5OK1FR62xB1I2WTdnuqgaDRLI8s0fUBxyaxBJh9ya8uwBjEcPAm/ItJBIY4GytBxmadw9FtkvU0rO6J208aiZDmoBwvlzUiGs6x2t1dCGdjtBgVnyoc9aGSOyzAhWhhEbUVZpgKXhjXKqp9tqd5jLOui4RvZk/U5M6twvrp1Lh7dnJJQUftPrB6PGI= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 31:HAkPF8w4iYdXQ/QwVdm7CRJ2naIxrNowolI1XJ2Zy9XLm1p8WO68pPmhVcIOIwefAaQS1wWhbZFswjcjUgZ8ru5r+7Tu+m0jqWznqSD0ubzUpVhX0FKyxh2CwSXpTNP8ghvH6Upo+MdjAt2jazrflR7wTxA6gRVLdqnmEDt6s9h8VMXVPTAwRfd1e8z6Sba5ytyY9RNcmHgJgKu+q9zuzwA+3piHFF31x7bxxP0Yth927N423f5TReVkjqPoJpFjT0ASmhjUGC3yTgcXq9W+YTJSeZGf027ojO5BMXX1jtxgJ5UdDjfYJHpo0SP1ih2tef4lBa1RuBEQqckToAuUUD2v1n2PxuiK/UV7HBLhB4nvakY5nLJrzhIfB8OFzbT9iDOE7T70EpvJlYmNz3jCl3nxGeNRtQEjlUa6eoz6ISP5AH760xOGQX6BlXFJdrxEuFka+TdXlpcQE+9Sy9kQo9bdhDvQ+1qCskmYRoTV9Pf6fVTkpC+xRZn1upBxI6g0uQ2OW1RScQj8DJKIiLYifQVmqhK0OAxii6LmgU4GG9os9qCmOtDpahdJCahngzKUmfH0BCH8cYG9Ze0yHfAyzWEiPEKv62LalFkqQWIzEDPVOXQhhW02YkFNmJqf+pDqwizBpgDaq+6kh0/+Kwa2+lOCjopX5ryYplEHLl+A7C4= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 20:H0VojiSgo5LliVBUyGoCpc3KyVXIvdHcovDZ8/7D8fQ7dfwRFwSdplwdAnRMuM1fpavd7JwwcLgudszM0567lYxwNYK8idS03hYg0DBwcC7T+kyNv7dEdnvsLBeM1J0iR2mOm9b6cHbhk4w7XkXthvqRayXWQFSqoqfVMgg6M8wcX2L+tYwWPpTiCuDQzq0g6AM/r+kinkKSkYqowaJG1kuN4SRIvp5/ODTpSYkSdMOmmEqNA2A+9tpufuUQw5rnFMnqwK/dUVHaoNgW3LUN/EqXH4mCwVydJPkDwLhq9r84D8/w1d7d7qexo9nK/8U1BHxrUyH6nLA0kCgMXJsR2LyLbJcyeeq3k8eF5DoguW11EMRgfZWBwx5nWN8LeY+ES8nSwER0pKv/Rflf2mrEoDW4T2s1U9KPZvehhmjZp+HpPJ45PW4PmXG0mBvUa61VKBBWX9fpfLBTyLllfbQ+vJEc/69AE39pFs4FXVKtUYjGMxWsztV6jbYWnXH21BOiAIVjJNPDu/txBhQZpiyJmrd2SyqWsGHEd65kMpNVb0uLMVpv/bi6OBbuJEOeo6n4SebTzbrQBO6JKCtnSBSEo2UXQO3iM83K0X5G0FhoF7Y= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(2017060910033)(3002001)(100000703101)(100105400095)(93006095)(10201501046)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123555025)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3097; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3097; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR07MB3097; 4:bMB4PcD+b8es1An7SisLLcQ3MDMx4fzn9dFZ8A?= =?Windows-1252?Q?04ZwNSBv7QXOD3EG6eDemlC77A4KUANrrxOLtNHVdk6UQmKgxHp78rsy?= =?Windows-1252?Q?C2kYLBT5QMGNlpwGlYu5j7tuMX6m+i/WrhcHw+UGvEnL7EZ1TY499qV+?= =?Windows-1252?Q?nuVrIAKlFXPl+PGCLCfyn29/5Pi884VnQ5LgfsoWSConBf9YAPHkQ04R?= =?Windows-1252?Q?9L8tLZoHfr352+GFKCR7958K2OxhKZkPZKegs0y4yLc0zfEMRLRvjks2?= =?Windows-1252?Q?/9VrRMmxZNeB8HFE323TIvmJ6hFwm0XOsHPG1o5CAWov9n2Fe2CpoeX+?= =?Windows-1252?Q?YumEyJVVfigG7plXc3xb0LxUvT4nZjkFzMEgd6CJ1iOB0+URPFKnavVr?= =?Windows-1252?Q?DNa63fHck39ncqSQ9r0D912EW6WOGhJlGUoXDiJPGJ1YOEp6CSCykjvK?= =?Windows-1252?Q?f03qp8+fPspcT9decJ3p0Cx7Z1qrErrZjxqb73ZWpfpBWgphzq0aZdX3?= =?Windows-1252?Q?H0n01H6FBaMfnuMDpHG0lnBYK0HUxic2LFhUN/aQ1dywj0QJqJW/y3cc?= =?Windows-1252?Q?DYrL4ELp+qI6Fg6XNf87fEYgPaH5tR18hX+FE4rDm/XQf7kQ/OmqfQsv?= =?Windows-1252?Q?OnagXFMTmN5OC/tVJ+NIrUzNQjRvJGmmONzSTP78WnOTHtdj8DyjLYa8?= =?Windows-1252?Q?q0Hei1Umwtq3P2K+3s+K9JM9LVs3q9KmMbYsIiiHnVjBt1LcEDdWxl5t?= =?Windows-1252?Q?Asn0NQwORKTfydVwxRDBgeyeiljJyYigy2NVLnKJnFh8QgKECx3pvGdt?= =?Windows-1252?Q?UvOTCqbWGZBca4Ifd5jJp2yvnPbBID92QPLIDZfWoX+ec9X86CM/eu+A?= =?Windows-1252?Q?/VU2cdDmEleX5wdEasy1MtDIk3/uyCxftZdX4YKAqtkRvW3noxES8vSX?= =?Windows-1252?Q?yEFBM+FMfQ1NTJp8NX9aGInvlU439XadkWD2M1wHT+d8luX9mgc92yxO?= =?Windows-1252?Q?Nj5dTEE5AO4YSVEt1JT7Nhx2/IjM0CCzDXr+ChzxHCC+RoA5680/bPUz?= =?Windows-1252?Q?a5z+1m6gGomZPLCB/fspGfFsbRDIaMkGCdKmgRXyoHufVncfifHU4uAj?= =?Windows-1252?Q?E7C7EWNe0LR57rpLcDj2CpHzjm3O071uUQZdgczIb6P1esOKFG7RhMBi?= =?Windows-1252?Q?3+s9/S1GR2CEOzTZ4XakjGlODMMTqVoQqyE4nSmst4QFyXNPgDbVxwX+?= =?Windows-1252?Q?UKwjQ+COAtbmv0dJ5LfkOaFybTDNXchxN1lHWMem9k3Y83i9RTJzRpZ1?= =?Windows-1252?Q?p/zrjJ/tqsLPXFS5VBv7/DNA=3D=3D?= X-Forefront-PRVS: 0359162B6D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6049001)(6009001)(39450400003)(39410400002)(39840400002)(39400400002)(377454003)(24454002)(1720100001)(23746002)(4326008)(36756003)(31686004)(478600001)(117156002)(25786009)(8656002)(83506001)(3846002)(53376002)(230700001)(38730400002)(6246003)(6116002)(31696002)(66066001)(65956001)(4001350100001)(86152003)(6306002)(110136004)(50466002)(47776003)(305945005)(8676002)(76176999)(7736002)(54356999)(72206003)(53936002)(966005)(2906002)(81166006)(50986999)(6486002)(33646002)(77096006)(42186005)(65826007)(229853002)(2950100002)(42882006)(189998001)(6916009)(6666003)(5660300001)(15583001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3097; H:[192.168.0.101]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR07MB3097; 23:U7ak9sdhbdneFkw+GtSRl0iLIhSsY22ffJfWY?= =?Windows-1252?Q?Y3aw450sTOrDOKv/rdgh8VBnZVmjN3LXeuHJsF1l8h7Ihi4jTa/bcvJP?= =?Windows-1252?Q?KappXEovFETc9xS8EJRE6pj9I4n60tXgF5nbs8dPE8PtDpxI0UFL3KDs?= =?Windows-1252?Q?Kvw2TG1WWsG6+lcPyXQUEprvxA9JFzAO7CE3yXd6Uh4m6Q48krXnJdgL?= =?Windows-1252?Q?NTKNI8IRoMluQw0dlKWfysJ0CPYjOvhPVX9s32h/RcwUxLEzdepp8/Jt?= =?Windows-1252?Q?P43qV0uSDfmTnXL02vI1xBeA5GyhYNbw1WT4d2zEiM2ZAk9nfgtan3gt?= =?Windows-1252?Q?Sk6RIJutO/ZGc+9U6OH5eZ6vRgKhd44pNv4rGYeWwJ+p3BX4+cIYi+fg?= =?Windows-1252?Q?V72XoQHOP37HQ5kiIZpfZHrvlsfCuhJAlcMycyosAWKp7+BO5XWMI/SG?= =?Windows-1252?Q?9ibHh9ZWAjJgvYiGcD4xm80z/QZAdPSwe4AvxjhQe+BmGdaFJBlylLOf?= =?Windows-1252?Q?RFsmA0JUsCi0qLfDvyTQ92GFtv9YSwWADwWsd+/egyaCzdi9PvH7iPLM?= =?Windows-1252?Q?wGMg6QTjKZBQ6b+cPAsr/F8DkrEACqBFFYMjIKQ5B8e6ZB1xmU63t70Y?= =?Windows-1252?Q?lAijg0FS5Nywa9bCD5KhcEsz2h5nHVBd7fOmD3hMBw1z9aPoZRoMB0Gs?= =?Windows-1252?Q?BZVX7goEa9TQPBRKDf9mQxpdGTTYAUmw5Ag/Y5iHUSmkxsYidVx00l4U?= =?Windows-1252?Q?NoPT7R0aOsoo3rGBt/x+0TlLlaZSfscyIedCIxCu77BpgknJq8G/7Tu0?= =?Windows-1252?Q?WNJoqdDHQdGUq+LAAUwa8w21olwZkRdo6jQjNGIyITVN91H1Rco8zRBW?= =?Windows-1252?Q?dNF842kIFUN/05LSCwdoIT+RD5MYu6oR2eBXCz4ulzkrp0uXGwBDxhvM?= =?Windows-1252?Q?2zE4RZs+G0vU2AxLSDpFEyybnCVQ/GOmziK87Y3v8IcY7hxbybWvNnPL?= =?Windows-1252?Q?rc+ykKvqQWeIgJnWcpfW4uSoOS4Bnsi2EzlM//LngglnUB10FAkNpvQZ?= =?Windows-1252?Q?AtZ2wpdgVdAqjzZ+VKk5ll5DP1eYYtAEV7UggRYGZeuFzRO+tIrR04s0?= =?Windows-1252?Q?EbGigsmFytuIIXkBAEVSZv5wurnuXBbXJS5k5LnXMWVU2qEFuDdksMTr?= =?Windows-1252?Q?hxZakWZ/9m630+cK42ls6EUxAvc0zGD3G3AQF5cHPcM3U9TpmmbwU7Mx?= =?Windows-1252?Q?Kc5+WOrVtxvHWeFcQTljuKbJHynHe9k2wivmhaws+aU+Vc83/WmDE/Yt?= =?Windows-1252?Q?ayhfGAsucm7nAPcmjmor87dukQllHyXvSoIrn7T2p8Fce8as80iJjBLD?= =?Windows-1252?Q?APSpYVnNGav2wmsj7E2343K/E3OhVhtv4Ci3YGI2jq5nt/GAgFZSbWif?= =?Windows-1252?Q?WzL2Dhbv1LP/rEoAp4VB2sLmcRd6ga0L5CCnFjryhZ3zq6c4fJTXjhZ6?= =?Windows-1252?Q?XAWf5J4bcAMbfRGFTxqyX6W4PvR?= X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; DM5PR07MB3097; 6:IUtdbv26CnDhZ1bWAUwh5apmwN2u9Zf7cWmd4Y?= =?Windows-1252?Q?8CiGGL33c8qVZuom9Kih0RQwyOltfmuvOW898LUbiASmzFUCpoWch8Vd?= =?Windows-1252?Q?ViIwLrFa019ntoxmHG/ciC01849vLgD1usNRnsRU+zFQdPQd06zPXkkc?= =?Windows-1252?Q?GDiLcKr/6+O/W31GbV2gmteZkySrGGcf1+yQCH/SuZpnAkloC4F8WsVv?= =?Windows-1252?Q?MCb0VGdJ3Bf9OTeBV0T879LgIhQ7xHsP6OlRPW1vDKC2puABcAzG3Wcr?= =?Windows-1252?Q?dz5cR4+Fc68tKnbycQaMcOyGAdWRME8NvJxB5NF/Y5VkKU6dnE0w/uII?= =?Windows-1252?Q?BS1E80R5zzE3FvngifdVzE9x7q8nAKNRrzhXZdDBwOgmX0OMUCTS4nlL?= =?Windows-1252?Q?qJd4XgIdXcWC4HyEpVs25guv6OhSS2y6Tq1BWTzjHp6rwt/eVH3TVkC9?= =?Windows-1252?Q?WP7aya1/dcbw4KAmjbRU3JXJvH8JZICycu9MH2wc8+6nyxWmCsePmU5x?= =?Windows-1252?Q?usQE3wtyWu8vVI+Ur0vEOt8aRCZkDYBi2HsJWFUnElpVTjX7Q8MnUrbx?= =?Windows-1252?Q?AH9U45hM0otbNgLC04HmcGA3b8aQ5qwkcmvjl14juuPuJtFVCuIcaZT6?= =?Windows-1252?Q?MPYsdJj0laT0IasFLL7kWaIYeCMBPeyOlaLD45oBcQc6rWFhlspwWb8v?= =?Windows-1252?Q?pYZeseogPnzSm8nVYec3nEUotPbAO1ambwmTpdMGdQjh2WXeVHdF+iYZ?= =?Windows-1252?Q?5iZiEIs07PLcIBQysu5Fy6NBZUTO83iSjv0I8ezyxB5a0M36l64riMiX?= =?Windows-1252?Q?veR0x/4+23lxseRn7QjAcdZHd80FFJaFo65Tz7yow05cdmnSyHZQ7gXT?= =?Windows-1252?Q?jmCk8FpHEkB724VbyckiUg1i14GH1wePEGN7K85RUo1qEnM5th95+CLz?= =?Windows-1252?Q?a+9h5Jk2GFHsw6DOSEy5c984egcheVNDWZaHNsp/+59vezYFmtGLQ2zq?= =?Windows-1252?Q?JZ/ytlpZI/G/x4fjwf7M3aZ49sODtlH2ct/ZNsGpGdgDsG86b6LI4KLz?= =?Windows-1252?Q?cMIfDRUS2Tvzk=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 5:xDRTcQRIv0QqC7T7kSqu0ASqXGqHfo9lE/f5hQnGV5LrgHTSLoNkIrTbq2oaVst/1UicnKkGfUq0Fg2sbHrFaz4CmvLYWO/y6OmDh3y5anetqBH7IKvYV54JWlq6RcEFVawgutcLgWiUa4LyHwpbHbMCODyyCd3mNYSJzDmoYd7+WG6LdUMv97Gpa24TbfICBU+KlsRKK3QpoJNZkphW+SLNM8mrkOFSfYPesqZLQoOpo2JiiWcIFemBKQzZhI/xWhvKmaAiSjZOsxFyt6SNRUiWeutOIWZmuLKrzZ8oy/3rT9reNxvCPvuKaqda9uobIawAzoAlgDa5+SAitfo1zHh5eaIBY+EF4ixEIyLNeoBwrRvN4bVPHytQ5D0JBxq/HOpa86tb0eUH5u50Dgty0Se8WNlQD4DFueEvknUpAojqAtJ9UdHBv3dpW+K/BurHadinyMxUhB5B1Cr26fZK4nSEgbknxkPafuISdfGiDh0f3TcEOjY2h4yJI1IaZVnc; 24:2UOx3trNZiRAgRlOvZN41rRQ+Qe7WTYr0YxHMbEQIhps+h/4dCV6mqmdqb8UBig34mUCLCPCp0um866yTl7ZVLZc6s3crhmod2On6tv+xDA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3097; 7:064ckRKXaWHSfU9aZN/vEITnbSBjkpxl2LuXKLEp3pMIOIv9juk92EolDmECYnOo0EoTJ6lB8mt2dHJS+uqIU8AVKOMhOarmVu6QCHqejRPaOavzbl7HYfDksKys9qLswrEK+vdrZVkgDX9IzECpDKRpRUnqqkBXV4K11wzINe9BvojCSQWagJBcDTbyyTe7yF8DuWxRaiQ4Hd2nZPuTxSPxv2Fqdp6h0530/9IZKFOZIbUrCqRQW+Q/hMb39W2HcniC8KiOi5gxhe16svC7k+q3dHg7QS60Km5AbEdUzswd69oIkK1xXol4jV1NtaM56ashbUAC64p8tJPsdxZfnkoAZfm5ACgSpmvYKhiLDuCWMRmyzzrRj7iwy36If+PDR8O7TZp422IJQKl9AJpVJNZ4dzEYqBbdMaoD/ElvbKfPJhpMhUwyOpbJk0Ipwvm2bHg5Vh3+CtkrohlRylWT7ELxDu6rnUQuhSJdMjVDD8Vbwh3Y1kttS033xPbg8m3zh7GOGJuVIUyrcwEh9EIlopzzPFeG1MRU2Yi1+/Ll0+OoV5AOQL8Bk3ZTyAbfLTVEg+t71uIA+5QPiQy+ixNBI+QMG2rpyeamnnsFrFcJPJEQ5yZ2oXN/yypbmXDil5+wgTEEHsHuIHjS1Yx36DtM2Jh2HnwgrLGPlQmhnjhgp1GUb+C2D7FltmEA6aVI/rx67FlP99UiQ29NphfV05DVUFA25A/7WqeQqsKy6yp3cL8Q8GtqzhsCB5kd+tRIOUDQCW9oVGWkSN9c6/C2jmCTlI5GGozqN7yPJwdCffbGWkE= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jul 2017 06:42:09.2768 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3097 Subject: Re: [dpdk-dev] [PATCH 1/4] mempool: get the external mempool capability 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 06:42:14 -0000 Hi Olivier, On Monday 03 July 2017 10:07 PM, Olivier Matz wrote: > Hi Santosh, > > On Wed, 21 Jun 2017 17:32:45 +0000, Santosh Shukla wrote: >> Allow external mempool to advertise its capability. >> A handler been introduced called rte_mempool_ops_get_hw_cap. >> - Upon ->get_hw_cap call, mempool driver will advertise >> capability by returning flag. >> - Common layer updates flag value in 'mp->flags'. >> >> Signed-off-by: Santosh Shukla >> Signed-off-by: Jerin Jacob > I guess you've already seen the compilation issue when shared libs > are enabled: > http://dpdk.org/dev/patchwork/patch/25603 > Yes, Will fix in v2. > >> --- >> lib/librte_mempool/rte_mempool.c | 5 +++++ >> lib/librte_mempool/rte_mempool.h | 20 ++++++++++++++++++++ >> lib/librte_mempool/rte_mempool_ops.c | 14 ++++++++++++++ >> lib/librte_mempool/rte_mempool_version.map | 7 +++++++ >> 4 files changed, 46 insertions(+) >> >> diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c >> index f65310f60..045baef45 100644 >> --- a/lib/librte_mempool/rte_mempool.c >> +++ b/lib/librte_mempool/rte_mempool.c >> @@ -527,6 +527,11 @@ rte_mempool_populate_default(struct rte_mempool *mp) >> if (mp->nb_mem_chunks != 0) >> return -EEXIST; >> >> + /* Get external mempool capability */ >> + ret = rte_mempool_ops_get_hw_cap(mp); > "hw" can be removed since some handlers are software (the other occurences > of hw should be removed too) > > "capabilities" is clearer than "cap" > > So I suggest rte_mempool_ops_get_capabilities() instead > With this name, the comment above becomes overkill... ok. Will take care in v2. >> + if (ret != -ENOENT) > -ENOTSUP looks more appropriate (like in ethdev) > imo: -ENOENT tell that driver has no new entry for capability flag(mp->flag). But no strong opinion for -ENOTSUP. >> + mp->flags |= ret; > I'm wondering if these capability flags should be mixed with > other mempool flags. > > We can maybe remove this code above and directly call > rte_mempool_ops_get_capabilities() when we need to get them. 0) Treating this capability flag different vs existing RTE_MEMPOLL_F would result to adding new flag entry in struct rte_mempool { .drv_flag} for example. 1) That new flag entry will break ABI. 2) In-fact application can benefit this capability flag by explicitly setting in pool create api (e.g: rte_mempool_create_empty (, , , , , _F_POOL_CONGIG | F_BLK_SZ_ALIGNED)). Those flag use-case not limited till driver scope, application too can benefit. 3) Also provided that we have space in RTE_MEMPOOL_F_XX area, so adding couple of more bit won't impact design or effect pool creation sequence. 4) By calling _ops_get_capability() at _populate_default() area would address issues pointed by you at patch [3/4]. Will explain details on ' how' in respective patch [3/4]. 5) Above all, Intent is to make sure that common layer managing capability flag on behalf of driver or application. > > >> + >> if (rte_xen_dom0_supported()) { >> pg_sz = RTE_PGSIZE_2M; >> pg_shift = rte_bsf32(pg_sz); >> diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h >> index a65f1a79d..c3cdc77e4 100644 >> --- a/lib/librte_mempool/rte_mempool.h >> +++ b/lib/librte_mempool/rte_mempool.h >> @@ -390,6 +390,12 @@ typedef int (*rte_mempool_dequeue_t)(struct rte_mempool *mp, >> */ >> typedef unsigned (*rte_mempool_get_count)(const struct rte_mempool *mp); >> >> +/** >> + * Get the mempool hw capability. >> + */ >> +typedef int (*rte_mempool_get_hw_cap_t)(struct rte_mempool *mp); >> + >> + > If possible, use "const struct rte_mempool *mp" > > Since flags are unsigned, I would also prefer a function returning an > int (0 on success, negative on error) and writing to an unsigned pointer > provided by the user. > confused? mp->flag is int not unsigned. and We're returning -ENOENT/-ENOTSUP at error and positive value in-case driver supports capability. > >> /** Structure defining mempool operations structure */ >> struct rte_mempool_ops { >> char name[RTE_MEMPOOL_OPS_NAMESIZE]; /**< Name of mempool ops struct. */ >> @@ -398,6 +404,7 @@ struct rte_mempool_ops { >> rte_mempool_enqueue_t enqueue; /**< Enqueue an object. */ >> rte_mempool_dequeue_t dequeue; /**< Dequeue an object. */ >> rte_mempool_get_count get_count; /**< Get qty of available objs. */ >> + rte_mempool_get_hw_cap_t get_hw_cap; /**< Get hw capability */ >> } __rte_cache_aligned; >> >> #define RTE_MEMPOOL_MAX_OPS_IDX 16 /**< Max registered ops structs */ >> @@ -509,6 +516,19 @@ rte_mempool_ops_enqueue_bulk(struct rte_mempool *mp, void * const *obj_table, >> unsigned >> rte_mempool_ops_get_count(const struct rte_mempool *mp); >> >> + >> +/** >> + * @internal wrapper for mempool_ops get_hw_cap callback. >> + * >> + * @param mp >> + * Pointer to the memory pool. >> + * @return >> + * - On success; Valid capability flag. >> + * - On failure; -ENOENT error code i.e. implementation not supported. > The possible values for the capability flags should be better described. > ok, >> + */ >> +int >> +rte_mempool_ops_get_hw_cap(struct rte_mempool *mp); >> + >> /** >> * @internal wrapper for mempool_ops free callback. >> * >> diff --git a/lib/librte_mempool/rte_mempool_ops.c b/lib/librte_mempool/rte_mempool_ops.c >> index 5f24de250..3a09f5d32 100644 >> --- a/lib/librte_mempool/rte_mempool_ops.c >> +++ b/lib/librte_mempool/rte_mempool_ops.c >> @@ -85,6 +85,7 @@ rte_mempool_register_ops(const struct rte_mempool_ops *h) >> ops->enqueue = h->enqueue; >> ops->dequeue = h->dequeue; >> ops->get_count = h->get_count; >> + ops->get_hw_cap = h->get_hw_cap; >> >> rte_spinlock_unlock(&rte_mempool_ops_table.sl); >> >> @@ -123,6 +124,19 @@ rte_mempool_ops_get_count(const struct rte_mempool *mp) >> return ops->get_count(mp); >> } >> >> +/* wrapper to get external mempool capability. */ >> +int >> +rte_mempool_ops_get_hw_cap(struct rte_mempool *mp) >> +{ >> + struct rte_mempool_ops *ops; >> + >> + ops = rte_mempool_get_ops(mp->ops_index); >> + if (ops->get_hw_cap) >> + return ops->get_hw_cap(mp); >> + >> + return -ENOENT; >> +} >> + > RTE_FUNC_PTR_OR_ERR_RET() can be used in v2. > >> /* sets mempool ops previously registered by rte_mempool_register_ops. */ >> int >> rte_mempool_set_ops_byname(struct rte_mempool *mp, const char *name, >> diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map >> index f9c079447..d92334672 100644 >> --- a/lib/librte_mempool/rte_mempool_version.map >> +++ b/lib/librte_mempool/rte_mempool_version.map >> @@ -41,3 +41,10 @@ DPDK_16.07 { >> rte_mempool_set_ops_byname; >> >> } DPDK_2.0; >> + >> +DPDK_17.08 { >> + global: >> + >> + rte_mempool_ops_get_hw_cap; >> + >> +} DPDK_17.05; > > /usr/bin/ld: unable to find version dependency `DPDK_17.05' > This should be 16.07 here > Will fix that in v2. Thanks. >