From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0049.outbound.protection.outlook.com [104.47.34.49]) by dpdk.org (Postfix) with ESMTP id 5E8262C12 for ; Mon, 26 Jun 2017 12:05:50 +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=uiBhAp2tFxnvHXCBjaR9gKNj6zGNlQ9LEnompVKdeUA=; b=k7mQ++uMg4Cf90Bre32xH3qQGBiY5FKV3aZnWUK1Zoj/LYy6QeZfqAjga4SDxifSyTw6h6d6cPhDY9dV33ZA+ndvUQ1Q/y03g3ZT6GgqAty2j7D1OA+LmVlOcNb53PX6xsueS3WMn2rxwmRCw6A1XI75u+mnkQzXbluw3kBLvSs= Authentication-Results: 6wind.com; dkim=none (message not signed) header.d=none;6wind.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from localhost.localdomain (111.93.218.67) by DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) 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 10:05:46 +0000 From: Santosh Shukla To: olivier.matz@6wind.com, thomas.monjalon@6wind.com, dev@dpdk.org Cc: yuanhan.liu@linux.intel.com, Santosh Shukla Date: Mon, 26 Jun 2017 10:04:54 +0000 Message-Id: <20170626100455.3806-1-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170608142831.28166-1-santosh.shukla@caviumnetworks.com> References: <20170608142831.28166-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR01CA0089.INDPRD01.PROD.OUTLOOK.COM (10.174.56.29) To DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ca5621fa-a47a-467d-1cba-08d4bc7aeb4d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506067)(300135500095); SRVR:DM5PR07MB3098; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 3:aDMpsJKnaRWh8bqWaoQ5d6uhpypMMhZ1MNJ2btzXJBhuwhEDMSuG6WDNRDQmKKlAhPqZFBUCPARHcHvzIW214v8Qr+qGGne9rdl7ilur+mGbe/XKSBl5j4d7WpG4LoSnnvXqHrvE71d238rUMw9zpd28walgOuuDhLZl1Dm3PLXUW4zm9THRARnyMv5w1YeOHD7OSc3wtXAGCZ35ZTVZfAxvTPFYfTnhH7HVHsud+Y6nVlKmFaCdn/IlHgkpcQeiaTKOfxXurbPE/ePngPVohsgOa2YH43k2o04opUBtLH1ekEwQ/6IruajRXztoQu+0KRgQXeKKSY5zbT2o5WHHvumOo/p0m8IBLzwpqTCTlEVH3yvWwJhDK49XQ1LeXLpVmo+TDaisH7tVid6uB6BpsnbEIvRXZxIsY8umFRKcbV/s7Lm2LiIs43VxAMSSICnnXfi5e/bemN8ZOqtg7ivWdQQGbdkMtAffyD0GKICzRWYeW/TLvNCKz2i9SNz5QFa7Oe5w0eeh/E0ZtsAAX30ESYuohvDyaCNOu4IuHXZiHA62sz4Cm76K2C6H5C2/l/qeDE9pBdtcKQZziqyuABK0HPYEzdPBtF9itV8zmDmGmPRIAdFdBx8FFinUunZ1a6XXddBAK/lXHRQezVkD0iJnqvAi5DVftJUvZwu1tdopwStHeApb6UDclcHfV5iuJOt6noFHgm7DoaEZJBVvD4/KcpyKoORZ7pSnYXYq2+gKkpc= X-MS-TrafficTypeDiagnostic: DM5PR07MB3098: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 25:7JLlYCs2l4hbdolaYmF7r/R9qIjdUsdbaI0kfSH9Rxp/4cVvymxIvcN2Ku6ZahGK8fZt2I33yapMt7c+EBiumkhTSp1mTSAE75JPZaSlIrNYPJDYV/iMXFpy1fG8yc4XB/Bw5/Ji97FdTjMyHwoQd4gn4dAMAYYKMTmWoyGYhDjJEPtqQD0LyhNoz8RqCKCtKAHjT1Zh+9t6mcOq28QOm5b0ek/0Q5EvCFgnfXfdo1154ILwasModMOCAqCJz8eZMKdhtD13zkSo42RLTXq4S/MU9G7uITZ/919ehm1xk8dp3G9eKZvGhT+t2Padx26rUQSqZUzDEJwi/ek7UiOgyNfmcWQf37W8uzmyUlPN5VUMq9iLTrX09jA+Q6QLAuqBhUBkbzzwCBoZgCtsRmoUd9kCNbmBFuEkWWc5vd9q+pL5sNIz4uKAubNl6CtJ6Ow5k82KEYh99TG5OA+czV840enz+0PkMqUqVTjBoBbKXc6iRsfhUFC0ox9ocaLIy3iZD33ZXOavOul6zTW1EzIUWyIsDPGX026DdwYUcNyBntBKit9Q5RHO+uajYGE4OTIEZaKvoE+feyGOJ+QqUmNZ6/3hwiUUM3fzZOiQ+SnjqwZRduSN/V5/QbTGSSQ+Xhatamih6Gtmy2/gO9eD3edPNgiqjZt3qZfaut0WJuEOw4/8kZqc+YZvDGCqC2yUySyo2oSbjRnlQpeQn8Kjjn9hN5Y58kINDM/gPvSid8zN6chtgfDp/uV63CznzePPdN1DYpBE4OLYsaKprCKT2rsZ431Xc6nBxEU5Y3EDWLink0hh/NSoupk4JCOaH751W2KlD2sfFcqhG7os7/+Iswqeg265YEmcsR4fW0Ce1MLEsZ8fWS2JCc1djCA44XDBHoirIJ3alvCSL9urdCU9RqiDvqa/7gQywifhYBtsqxEKExk= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 31:qTxF5AkH9Q+t4B9e+tgi44l/Seco0Xn7RkDBFEKvUQ0Bhlp3xauj531sg7SyimdMFYeOp1LE/Mrdn/6uC3NMhWzYBCORTk8dWtn4PGiwgOFjjjfxP3nMb0cQYQ5pWgSvUl5xhcb0A1QbonRkX5c+giMDXqRDfHugvBCKmKS8/KgHgIUwpaI0+Il6k0pG/1lgPMsQQitV3gDxzIXmny8DqCu8K9V2ZAfDRmvXCDWhC7OiOs8Dtt6s+zBsTIQ1E5dksJVvq7FEY65lMCiX/s7TSL4XurQ44LPm9fxtFJSWS+u1vDY+WTS7EnJVD8eg+anKpd9axcWatvkOwpePukFqx+iACix8iS05iFm8pqxIowT7l9ehvQlJVBn1Bj2sTBjy+04+INhj7BRG1XznbLZAB7PdAGI97wkf0R83PGZmwXirI8B9pHtEtwgokGeZDg2FK4DhaUIPrPgqgBHsR5L5U/VkM056yYh2eAMs+9QyArs6LHXGrG6uNSBOPEuxfUCJmZ5l9Gev0xbSTlGSNUxGVHvU/lKOEAAEOEo6E+Uh95drE1AvvevHyQN+pxoMiyHQ7Z9vCoqs/0/WYgzc6t/FrP0Lj+8flqdmO9dmkBscxlnCoHeQ1YALqk/qbilpx+89ot5LhfkErJh4C6P2uBGDWLGZz1D0XJc+zfF+hRdlVTl9hCZF0KLK3prZer8FU8RXwwfn7g3G4yRTMGwBrhBs9Q== X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 20:yVRX6yPL6eCT42sQZnFBX8Hvl9JcTkPh8XZ1xURtr/ilv48utzxa4gvRFuw7Ed2RnaH5dX1e4m7pOccLS+0sIEZ9ODe/ZmVD5JpZ6gmXUCyDHXbBXW5XtFVDmS6EhXEEu6iCV6wiD1mhiTdUsUVuOViU2lx1YxogDNHuP12EPtYZ5KqRj9eruYDxqTGoRrStBltcnJbhLFyWAnnF9BlLVX0zc3ZddzJIsTZ2ir8cAhtrVoNt6nH33ca64i1nlkiD8BhwCvHUYxmWOB05+QhO7/VKEt8gowBMOhoO/nNU8tNGhhEQmr4Cc3I2s9T65rojxFgTGvY43IftSLCyzQQbQW/5mSKUTxJZsntj52My/K2b37NqPu+bo2FwCh1RwJZMyAJ3mFpHmtr04nfzDaKlGQ8hkLGD/TuR+hxQ4lNs6z3i3k2LsKhvYgHtT/sDqeDrXO7YbRHwuDOSdwW5Q8eWTcanj19a+2INg4CH27OcqRMRz92flswRLP9Q/eRvv7GLwq27p1IPp+l6MNXCQngD3JdDEMCZ1yPtNqvmVyjzg6zdClN3cOXi7mI51vZODu3lu/OSNZUQajLORjQyv10p69go0nNLTNO1+rKEorvamIA= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(100000703101)(100105400095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3098; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3098; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3098; 4:dsnwXn2JZsYX8mKcaYz7UgVg9IcziolBvgGR64gJ63?= =?us-ascii?Q?Ozg9gS30151HzESqSklcsP+By0CsW9ppyFPe1fZ3ljrSe0oe1gHFySNQwWsr?= =?us-ascii?Q?/G3rqc/qiupMAAO+/4+lUFXjSRucgxNobyo+Os9f5FzgorttmOy1ykhHEX2e?= =?us-ascii?Q?lMSxnAmYciAoXm+DZE2vVaPG25/D9Q4Ez4DBdDe29AJhvrb/SAARoKv20LRn?= =?us-ascii?Q?VbAeHBBlMoPmw/f5atghpdzuNw1R8VI+AGwKPiE4TYAY6arZ9OGxiYsGcMjr?= =?us-ascii?Q?8DeQpE9Va6RBjmffDWAERuvANHZrAvuFiAdeS5cZtJOlLecmxDp85tODpAlA?= =?us-ascii?Q?HlIjCmF7SsJOwu7k/IXqA6duS5Mq+rxfEQZfN/GwdGdpA66lUmrGEZ9PjV/H?= =?us-ascii?Q?PXMlqct71OvTDO+qov7AmhBBl8OPi+hnDWY/XVqlabCkJJKAimKNedEbM2hL?= =?us-ascii?Q?Q5b2b/jOhVH5VR/ZVpgSiGg+U6DwRXj/CTxVP2Q9M/mgVz8X7YmJ4470u0Qf?= =?us-ascii?Q?edLOySN5Fj/Bzt+kGg1jB5LKOqqIryrgrVpsTNENYCefXAwMKEg/k3hhWvyb?= =?us-ascii?Q?Eirrr0uC2XPOYJEk+tbMg67ZeD8t/RHZz+nlZvhQs3fR+7O8FfIeilTAwb6m?= =?us-ascii?Q?hgCT9XBKyTxV1ARvF+9MVNI7NFdV3WtiBYJP+KFuRHs2n4N650Wb2C6sK3fm?= =?us-ascii?Q?ZIXWWN686uy8hUiE4GcSfrHj2tO4QMtctdU1LFkoXmmA1VjQFoijGVAmUbHq?= =?us-ascii?Q?qwPdzU8VQd7QFiT01JaG1boOwbQAYsh+0Hp/HeonD7zsFsMh6PiEg58Dd50f?= =?us-ascii?Q?oNWdVAXIjIchaGmFhUQj6Wqhi6Uy6Fh8VRhcKS/crzYXYqRk8DM3bvTED7dW?= =?us-ascii?Q?tllmnsJN5b26hf36ZnFd/D6HRTc5r8dEX+sQFXxUFKJSWHN5twNk+ujAzIzM?= =?us-ascii?Q?2m/uNEEsDhzeyBk76Eorc5FY77u2yKKyh0FU0Ck66e+CMDxtWoLMXjLZREaU?= =?us-ascii?Q?CT0XhxfMB5ixgPq6IkE9Nbe/uOiou7f/0YjOtYn6cYNJZ6dUMQ7UYEEp+iyy?= =?us-ascii?Q?FwEgOXpUu07wk3sCZJO/nm0f2ff0Hnl4dWzWDgWsHoSvi8d5duOkwM2U/2i1?= =?us-ascii?Q?oPJr8gaiaHHW+JLBbB83WbRhIUInQ8kuF0krVN/q+C2wx6GAmIVaCPQv1gy3?= =?us-ascii?Q?mU3OUGe2lpfcYvlW8iXHqdoGlKyJ4sNc1J?= X-Forefront-PRVS: 0350D7A55D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6069001)(39850400002)(39410400002)(39450400003)(39840400002)(966005)(33646002)(5660300001)(42186005)(3846002)(6116002)(50986999)(5009440100003)(6486002)(189998001)(6306002)(478600001)(36756003)(6512007)(53376002)(110136004)(53936002)(76176999)(305945005)(7736002)(48376002)(66066001)(47776003)(2950100002)(72206003)(42882006)(6506006)(50466002)(107886003)(81166006)(2906002)(25786009)(5890100001)(5003940100001)(38730400002)(8676002)(1076002)(4326008)(6666003)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3098; H:localhost.localdomain; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3098; 23:0EIBIJscqJ2M4Re8+xEiybTkeEmvZDW+pz2CJ1egk?= =?us-ascii?Q?KyNUYJPI52g+EtkHkBkzNoXJoMf/4wH1+tS/wP6GXTxGgNWG1pX+FHEWQ+h5?= =?us-ascii?Q?uCzzugky+eGEFPcIec5MLOzc3FamX3owAYPXNU+2YXIvPXUldM/OSGu8x21j?= =?us-ascii?Q?ktLWvNSOiiS42kNfcB1W6OIvtvagZgbK47uh5hSkNfMv+hArzbwVCcjxNyJb?= =?us-ascii?Q?DKZjDXKrSb4/kC9ALSg9lcFJMGeocKwP01VHGNPUss5v7Fx79nG94N8bytpN?= =?us-ascii?Q?FN5pKyWZf0T8xb9zMK7+ONagxsdy+aTFg4sYNzWa9Vjm4I5m1YQH9oDA9jrz?= =?us-ascii?Q?6HlwVflm0qN4uMFEoBvzf3CF0WoBkXFWgt9bxFp75fPySV7rmlwDXUkN2oPx?= =?us-ascii?Q?GDQUmCPxUNb/7Es49oV+dB9VwcZQtOrdtggQDRM/DLCRV0b8b4tUv+ew/oDC?= =?us-ascii?Q?8NJQurLnLTWeCBkxGQdJfy+tdmwIikeBYAUkf94X8Md6VKgeYpJ2wgqC08p/?= =?us-ascii?Q?yXgVEL+5vgNELdoYL/IKh4cPEqunZI0IlkyRNeMPJp+gTRYthkJCPmPZ2B/g?= =?us-ascii?Q?UPpSTl0y9zSuBzPkMb632wYRONtJxZbXpj/zJ+vSfTxp8jk/h/wFNt+UT00N?= =?us-ascii?Q?muWsUTKU2Uq3p8u14j+60XTW6pcUMslvGMV6+8uYuc/gKojrjpYgtMYjKKma?= =?us-ascii?Q?3kc34JjDzMHALNhIVU8cvcEeHLX7DaNWevRy8apkDOfHAS5/jMFxw4TiTG4F?= =?us-ascii?Q?ycbNMBEeWx5LMLYJk1RDHKj1sWoBQNIHxh/pFkZOS+T0KJYxGrI8UyixDbL1?= =?us-ascii?Q?evjjbVBBbBjGrBcmcAe8fivr2IZXwr+UX3rvTK/7VLrKYPfWNc6UHT0Ke+Zl?= =?us-ascii?Q?jwRMAIxV3hkc45ULP/urz+bgqr7AVzB58uN+g4eJhifIexo8H4nsdGNMLVhb?= =?us-ascii?Q?nlmM6Zxn0BwnyUmbQPj4jOtr/4JScmGwYX2H46IycBJF9SnxxWwYL4QsZeYu?= =?us-ascii?Q?Og/3ToUEYJ1iykKXwVdeZxVhRm8l5ufKyXsyWZTLpszg1h4hR7W/jzI/iIRk?= =?us-ascii?Q?+F4l41Y9GbLhEzoxAncuGrmuQ3kjOvRFce6ZDJqD4taNtPOt6RpThjS9dJpw?= =?us-ascii?Q?9ZGHkwOrQGCNqBcKKFBkGsTa4fjik0F0FRCHQpy7nVjVBj9/7XbtSJobAcbe?= =?us-ascii?Q?c0/3Qj6fcqE2Dc=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3098; 6:002EnUlf6wNu3KsHvZbl2at2Pvyao8iryNyEI/AnPM?= =?us-ascii?Q?kWRUfRjo6A2FTwWtXbyGPizCzoBQZ3GsC/8z2Q0sjISY1AEw7bvRIesD8V8F?= =?us-ascii?Q?0eUiNFiOp7IlNwgPe5pwtYYa9bGjfVTHUv7ath+gAdBONdOqzYBThF/0zZHt?= =?us-ascii?Q?bl2C9qA+tprwujBILwdD7GQdHNPCn3Gz29dJri8azTXWzuXKIziJvi4gb93t?= =?us-ascii?Q?xnb7NFF8zlaxr6nKFZr4C3mWmWzE1eNMeh4P+Y0POi07gquXW82RB+/x41Am?= =?us-ascii?Q?0lBLwDxrNRjKOf7zgBpqTDiyMoAI09+bltaWk8IUdu5SqC84W/lVG/sg/eG6?= =?us-ascii?Q?yF4R97tk7TFYjWWhYICKGTQ8GI5a52Cktk35XT3547RiDKR50R8fK0s2ajcj?= =?us-ascii?Q?lXJGBgrmeQ6JL2eXCJnG6J+i/L0MaRiG8InZP0q8O4eMKOrr+t6KdissQJv5?= =?us-ascii?Q?laG14oe8ahKAgwM7r9izmnmtEcpeAXkYSsOjXu72k0vM3JbZAowGxVOGIUcS?= =?us-ascii?Q?mwh6pLnyioKAoG/tjxI00SjIsxRe6K2UO8Fem++8EJUdZUXa0I8tZTZrjTNv?= =?us-ascii?Q?v6p0FYJqBHzdUYwgdZEB1XfdQK+FgOvpLnr3msGxxCXUHOqMHfKyYPs/g7RN?= =?us-ascii?Q?NE9JcFw8BXDktG8CdG5c0Qg3xS7lV6pns+jFsWNJlwfHUQIVJ3x+lSRH4Oru?= =?us-ascii?Q?izZRR48YSWwpY5PiQZcjmG8cI+29Bj81H5tVuRXoq997ObMUS1X+vv5SzqSb?= =?us-ascii?Q?5wDYrmsUoOov9h8z4GV+evNMoJYegRgp42CDaXad2ypA9egETXQvUVNrC2ti?= =?us-ascii?Q?ZfPkibHMS2GI/yIegl+K280JYPwbnJM17YGH3bjdZB/6grNVCcaynHc4ENY+?= =?us-ascii?Q?/xgGQOW53RrI+ZV0gX9bu0DLLuRPBTbia43V+B8/PsGCMzSdW6fJ6XE3EY10?= =?us-ascii?Q?xMEqj/7kAQCr55iFHCS51tHGKdEazCEOsUraWhQf5KNsl6wtYSRMPA+WvP/F?= =?us-ascii?Q?Q=3D?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 5:EtK2HBVZd4fR9rNBCr04jF5+gNFhCTCiwPexjupc3OBGwofBmzqw+HESas56kmNhYWoiuyY2ByOYuV8H0BKN/O+fCDL5vTg3cPtcHmBEfCxY7xiMYwtfd2sQuOabOU2kgsprkYbzz2ooY4VotUAbmCaiKP2NlSp52EJPk8RThQo8Xk0IdDecTBv2oQrkZlax0p/4j89oQ7ptdivOG3FxXTDZmx5xISLkbmCq3Jf3G7EVeBO+QXCuuYWiirQybnb72c2O0cs5vR9jsuBfRlJBvog3ue8HqNuFRKJGOlgwX9wrpHwuLNc78fp0XvOYJ51Ns32ujw0TaIqam7qDJKX13t6HSX09PvMqRD2A4f0CR1Q56W2WRPoeID4BRW4aVaWsjzBgjnehHvBUKa1Hs554Qbm9/Un2lFQ44jvhAd9tLnbqsKzfSFjxaT3XL7n+eC/g1fCU5PUI2wqLUbYweV75kWe/YrHUtYA4sm+aIBG3ntl3TGXmSZw4VTFK5nlVmU80; 24:WtngTRKDNwtTHVQZnSr6lSd8yQy19fgK0bgItbB3MoIM7hpjOrgnNARX5w1ljd+w47G8sqMEau3IvFeZ2PXamei7pIIHHEBBygkvoQ1egGQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 7:UuOryTHfopMvm3vexhjdu0o3oEcBVUwhzgEoq2gvxcpMAtLn/YVnCv7VIEI2ZyeDQSnjh2ER07SLMZ7Rvn6/PAsH8krM3+OY4Am+KgoRJ4mhGmnaKLYUd70v+BrpstNhn56lBUtEep0U5AuifhhiHJ57/ksS08H5CxV9XwBsf7IQrlipjPjCip0lw3Q6alc0KO4kFf5E/SJltz0rLIqCPEUX+WdlnJoj4C6f8LeVuGSRMAvIUh3gYUY9UofRaZt/5SEdb9e2kSTxZSBA5ebqAdK5pAbxiW+XFmFHFYQZq5Z0fQqdgHRX66ubmIiAxldGTDghC12g+fdyfozKpoExMvW5qD9MW6lH43D3F38pyoeNKzOU9MonA+IifUk6+BEiMu1a6x7BF+seDNeIkZwoyf5d8dujAV+HHKNITPHBC/hFrj5qMXu7EzyrZ69+m5S2vZDZ+Aj1nziNMh6lyx7I2Bs8DDduewDA1oW/j805ebjI1L1c6JcPgfoUSc+n3BJwzSNmIWidbTSuB2yEMcMfRHFMOzUtYMZSKzWHbmWAMlwZSPU1ZGtOQmo4uDft0m/BHmYEdsqRyR7z9E0rlcrdMcmPMUU3/ooKHStl69pOjD6pQYm5WH+DdNf7fZdJMYFF80ZmVHbIamj7r6/MvrRquxHBX2M9pjGKDP/LlmsCPrXUkO78l2Stdhl3K70wsJLeft9nOCdlfFEqcvEDzpLYz+fSB5cr9bOhzEqC5kX+sexmHPAfpiAQkwXY5AsRLUmwx/qJXNvtWdTfKVr1lqXTeiYapAcwBs+tzpoPgkD9WgI= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jun 2017 10:05:46.8329 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3098 Subject: [dpdk-dev] [PATCH v3] test/test_mbuf: remove mempool global var 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 10:05:51 -0000 Currently, pool resources are allocated statically and are not freed. Results of that test can not run more than once. Fix removes static dependency from test application and now allocating and freeing resources dynamically. Test runs for more than once. Fixes: af75078fece3 ("first public release") Signed-off-by: Santosh Shukla Acked-by: Olivier Matz --- v1 --> v2: - Clubed v1 two patch into 1 patch per Olivier review comment [1] v2 --> v3: - Reword the description. refer [2]. - Removed Cc: stable@dpdk.org. [1] http://dpdk.org/dev/patchwork/patch/24237/ [2] http://dpdk.org/dev/patchwork/patch/25202/ test/test/test_mbuf.c | 148 ++++++++++++++++++++++++++++---------------------- 1 file changed, 82 insertions(+), 66 deletions(-) diff --git a/test/test/test_mbuf.c b/test/test/test_mbuf.c index 758402d6b..2057a5182 100644 --- a/test/test/test_mbuf.c +++ b/test/test/test_mbuf.c @@ -82,13 +82,8 @@ #define MAKE_STRING(x) # x -static struct rte_mempool *pktmbuf_pool = NULL; -static struct rte_mempool *pktmbuf_pool2 = NULL; - #ifdef RTE_MBUF_REFCNT_ATOMIC -static struct rte_mempool *refcnt_pool = NULL; -static struct rte_ring *refcnt_mbuf_ring = NULL; static volatile uint32_t refcnt_stop_slaves; static unsigned refcnt_lcore[RTE_MAX_LCORE]; @@ -144,7 +139,7 @@ static unsigned refcnt_lcore[RTE_MAX_LCORE]; * test data manipulation in mbuf with non-ascii data */ static int -test_pktmbuf_with_non_ascii_data(void) +test_pktmbuf_with_non_ascii_data(struct rte_mempool *pktmbuf_pool) { struct rte_mbuf *m = NULL; char *data; @@ -182,7 +177,7 @@ test_pktmbuf_with_non_ascii_data(void) * test data manipulation in mbuf */ static int -test_one_pktmbuf(void) +test_one_pktmbuf(struct rte_mempool *pktmbuf_pool) { struct rte_mbuf *m = NULL; char *data, *data2, *hdr; @@ -328,7 +323,7 @@ test_one_pktmbuf(void) } static int -testclone_testupdate_testdetach(void) +testclone_testupdate_testdetach(struct rte_mempool *pktmbuf_pool) { struct rte_mbuf *m = NULL; struct rte_mbuf *clone = NULL; @@ -432,7 +427,8 @@ testclone_testupdate_testdetach(void) } static int -test_attach_from_different_pool(void) +test_attach_from_different_pool(struct rte_mempool *pktmbuf_pool, + struct rte_mempool *pktmbuf_pool2) { struct rte_mbuf *m = NULL; struct rte_mbuf *clone = NULL; @@ -542,7 +538,7 @@ test_attach_from_different_pool(void) * test allocation and free of mbufs */ static int -test_pktmbuf_pool(void) +test_pktmbuf_pool(struct rte_mempool *pktmbuf_pool) { unsigned i; struct rte_mbuf *m[NB_MBUF]; @@ -583,7 +579,7 @@ test_pktmbuf_pool(void) * test that the pointer to the data on a packet mbuf is set properly */ static int -test_pktmbuf_pool_ptr(void) +test_pktmbuf_pool_ptr(struct rte_mempool *pktmbuf_pool) { unsigned i; struct rte_mbuf *m[NB_MBUF]; @@ -636,7 +632,7 @@ test_pktmbuf_pool_ptr(void) } static int -test_pktmbuf_free_segment(void) +test_pktmbuf_free_segment(struct rte_mempool *pktmbuf_pool) { unsigned i; struct rte_mbuf *m[NB_MBUF]; @@ -680,10 +676,11 @@ test_pktmbuf_free_segment(void) #ifdef RTE_MBUF_REFCNT_ATOMIC static int -test_refcnt_slave(__attribute__((unused)) void *arg) +test_refcnt_slave(void *arg) { unsigned lcore, free; void *mp = 0; + struct rte_ring *refcnt_mbuf_ring = arg; lcore = rte_lcore_id(); printf("%s started at lcore %u\n", __func__, lcore); @@ -704,7 +701,9 @@ test_refcnt_slave(__attribute__((unused)) void *arg) } static void -test_refcnt_iter(unsigned lcore, unsigned iter) +test_refcnt_iter(unsigned int lcore, unsigned int iter, + struct rte_mempool *refcnt_pool, + struct rte_ring *refcnt_mbuf_ring) { uint16_t ref; unsigned i, n, tref, wn; @@ -760,7 +759,8 @@ test_refcnt_iter(unsigned lcore, unsigned iter) } static int -test_refcnt_master(void) +test_refcnt_master(struct rte_mempool *refcnt_pool, + struct rte_ring *refcnt_mbuf_ring) { unsigned i, lcore; @@ -768,7 +768,7 @@ test_refcnt_master(void) printf("%s started at lcore %u\n", __func__, lcore); for (i = 0; i != REFCNT_MAX_ITER; i++) - test_refcnt_iter(lcore, i); + test_refcnt_iter(lcore, i, refcnt_pool, refcnt_mbuf_ring); refcnt_stop_slaves = 1; rte_wmb(); @@ -783,9 +783,10 @@ static int test_refcnt_mbuf(void) { #ifdef RTE_MBUF_REFCNT_ATOMIC - unsigned lnum, master, slave, tref; - + int ret = -1; + struct rte_mempool *refcnt_pool = NULL; + struct rte_ring *refcnt_mbuf_ring = NULL; if ((lnum = rte_lcore_count()) == 1) { printf("skipping %s, number of lcores: %u is not enough\n", @@ -797,31 +798,31 @@ test_refcnt_mbuf(void) /* create refcnt pool & ring if they don't exist */ - if (refcnt_pool == NULL && - (refcnt_pool = rte_pktmbuf_pool_create( - MAKE_STRING(refcnt_pool), - REFCNT_MBUF_NUM, 0, 0, 0, - SOCKET_ID_ANY)) == NULL) { + refcnt_pool = rte_pktmbuf_pool_create(MAKE_STRING(refcnt_pool), + REFCNT_MBUF_NUM, 0, 0, 0, + SOCKET_ID_ANY); + if (refcnt_pool == NULL) { printf("%s: cannot allocate " MAKE_STRING(refcnt_pool) "\n", __func__); return -1; } - if (refcnt_mbuf_ring == NULL && - (refcnt_mbuf_ring = rte_ring_create("refcnt_mbuf_ring", + refcnt_mbuf_ring = rte_ring_create("refcnt_mbuf_ring", rte_align32pow2(REFCNT_RING_SIZE), SOCKET_ID_ANY, - RING_F_SP_ENQ)) == NULL) { + RING_F_SP_ENQ); + if (refcnt_mbuf_ring == NULL) { printf("%s: cannot allocate " MAKE_STRING(refcnt_mbuf_ring) "\n", __func__); - return -1; + goto err; } refcnt_stop_slaves = 0; memset(refcnt_lcore, 0, sizeof (refcnt_lcore)); - rte_eal_mp_remote_launch(test_refcnt_slave, NULL, SKIP_MASTER); + rte_eal_mp_remote_launch(test_refcnt_slave, refcnt_mbuf_ring, + SKIP_MASTER); - test_refcnt_master(); + test_refcnt_master(refcnt_pool, refcnt_mbuf_ring); rte_eal_mp_wait_lcore(); @@ -839,8 +840,15 @@ test_refcnt_mbuf(void) rte_mempool_dump(stdout, refcnt_pool); rte_ring_dump(stdout, refcnt_mbuf_ring); -#endif + ret = 0; + +err: + rte_mempool_free(refcnt_pool); + rte_ring_free(refcnt_mbuf_ring); + return ret; +#else return 0; +#endif } #include @@ -870,7 +878,7 @@ verify_mbuf_check_panics(struct rte_mbuf *buf) } static int -test_failing_mbuf_sanity_check(void) +test_failing_mbuf_sanity_check(struct rte_mempool *pktmbuf_pool) { struct rte_mbuf *buf; struct rte_mbuf badbuf; @@ -931,7 +939,9 @@ test_failing_mbuf_sanity_check(void) } static int -test_mbuf_linearize(int pkt_len, int nb_segs) { +test_mbuf_linearize(struct rte_mempool *pktmbuf_pool, int pkt_len, + int nb_segs) +{ struct rte_mbuf *m = NULL, *mbuf = NULL; uint8_t *data; @@ -1022,7 +1032,7 @@ test_mbuf_linearize(int pkt_len, int nb_segs) { } static int -test_mbuf_linearize_check(void) +test_mbuf_linearize_check(struct rte_mempool *pktmbuf_pool) { struct test_mbuf_array { int size; @@ -1039,7 +1049,7 @@ test_mbuf_linearize_check(void) printf("Test mbuf linearize API\n"); for (i = 0; i < RTE_DIM(mbuf_array); i++) - if (test_mbuf_linearize(mbuf_array[i].size, + if (test_mbuf_linearize(pktmbuf_pool, mbuf_array[i].size, mbuf_array[i].nb_segs)) { printf("Test failed for %d, %d\n", mbuf_array[i].size, mbuf_array[i].nb_segs); @@ -1052,53 +1062,54 @@ test_mbuf_linearize_check(void) static int test_mbuf(void) { + int ret = -1; + struct rte_mempool *pktmbuf_pool = NULL; + struct rte_mempool *pktmbuf_pool2 = NULL; + + RTE_BUILD_BUG_ON(sizeof(struct rte_mbuf) != RTE_CACHE_LINE_MIN_SIZE * 2); /* create pktmbuf pool if it does not exist */ - if (pktmbuf_pool == NULL) { - pktmbuf_pool = rte_pktmbuf_pool_create("test_pktmbuf_pool", + pktmbuf_pool = rte_pktmbuf_pool_create("test_pktmbuf_pool", NB_MBUF, 32, 0, MBUF_DATA_SIZE, SOCKET_ID_ANY); - } if (pktmbuf_pool == NULL) { printf("cannot allocate mbuf pool\n"); - return -1; + goto err; } /* create a specific pktmbuf pool with a priv_size != 0 and no data * room size */ - if (pktmbuf_pool2 == NULL) { - pktmbuf_pool2 = rte_pktmbuf_pool_create("test_pktmbuf_pool2", + pktmbuf_pool2 = rte_pktmbuf_pool_create("test_pktmbuf_pool2", NB_MBUF, 32, MBUF2_PRIV_SIZE, 0, SOCKET_ID_ANY); - } if (pktmbuf_pool2 == NULL) { printf("cannot allocate mbuf pool\n"); - return -1; + goto err; } /* test multiple mbuf alloc */ - if (test_pktmbuf_pool() < 0) { + if (test_pktmbuf_pool(pktmbuf_pool) < 0) { printf("test_mbuf_pool() failed\n"); - return -1; + goto err; } /* do it another time to check that all mbufs were freed */ - if (test_pktmbuf_pool() < 0) { + if (test_pktmbuf_pool(pktmbuf_pool) < 0) { printf("test_mbuf_pool() failed (2)\n"); - return -1; + goto err; } /* test that the pointer to the data on a packet mbuf is set properly */ - if (test_pktmbuf_pool_ptr() < 0) { + if (test_pktmbuf_pool_ptr(pktmbuf_pool) < 0) { printf("test_pktmbuf_pool_ptr() failed\n"); - return -1; + goto err; } /* test data manipulation in mbuf */ - if (test_one_pktmbuf() < 0) { + if (test_one_pktmbuf(pktmbuf_pool) < 0) { printf("test_one_mbuf() failed\n"); - return -1; + goto err; } @@ -1106,47 +1117,52 @@ test_mbuf(void) * do it another time, to check that allocation reinitialize * the mbuf correctly */ - if (test_one_pktmbuf() < 0) { + if (test_one_pktmbuf(pktmbuf_pool) < 0) { printf("test_one_mbuf() failed (2)\n"); - return -1; + goto err; } - if (test_pktmbuf_with_non_ascii_data() < 0) { + if (test_pktmbuf_with_non_ascii_data(pktmbuf_pool) < 0) { printf("test_pktmbuf_with_non_ascii_data() failed\n"); - return -1; + goto err; } /* test free pktmbuf segment one by one */ - if (test_pktmbuf_free_segment() < 0) { + if (test_pktmbuf_free_segment(pktmbuf_pool) < 0) { printf("test_pktmbuf_free_segment() failed.\n"); - return -1; + goto err; } - if (testclone_testupdate_testdetach()<0){ + if (testclone_testupdate_testdetach(pktmbuf_pool) < 0) { printf("testclone_and_testupdate() failed \n"); - return -1; + goto err; } - if (test_attach_from_different_pool() < 0) { + if (test_attach_from_different_pool(pktmbuf_pool, pktmbuf_pool2) < 0) { printf("test_attach_from_different_pool() failed\n"); - return -1; + goto err; } if (test_refcnt_mbuf()<0){ printf("test_refcnt_mbuf() failed \n"); - return -1; + goto err; } - if (test_failing_mbuf_sanity_check() < 0) { + if (test_failing_mbuf_sanity_check(pktmbuf_pool) < 0) { printf("test_failing_mbuf_sanity_check() failed\n"); - return -1; + goto err; } - if (test_mbuf_linearize_check() < 0) { + if (test_mbuf_linearize_check(pktmbuf_pool) < 0) { printf("test_mbuf_linearize_check() failed\n"); - return -1; + goto err; } - return 0; + ret = 0; + +err: + rte_mempool_free(pktmbuf_pool); + rte_mempool_free(pktmbuf_pool2); + return ret; } REGISTER_TEST_COMMAND(mbuf_autotest, test_mbuf); -- 2.11.0