From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0046.outbound.protection.outlook.com [104.47.41.46]) by dpdk.org (Postfix) with ESMTP id 7B32F5587 for ; Mon, 3 Jul 2017 21:15:15 +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=0TVI79PykPKzr3JDx63iAnlWwWwQmxwvPu4f9yeeqq4=; b=lJyK9qUmY40v3FRBfnKgpFZ+D0M9xNsjxbufWQtAuwwQvJlWnbjgJ2tL5gcPf4ghJhb9Rj/xiXz0J+IZUM9JHV675TP1EM80+E4BsK1JyDtG51eU2vh+gAkxAka57uYDwVM5YLxu40WXreTJRIF1PidKVFbmtZ1K6LhRRnMVpZU= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin.domain.name (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.1220.11; Mon, 3 Jul 2017 19:15:10 +0000 From: Jerin Jacob To: dev@dpdk.org Cc: harry.van.haaren@intel.com, bruce.richardson@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com, narender.vangati@intel.com, nikhil.rao@intel.com, gprathyusha@caviumnetworks.com, Jerin Jacob Date: Tue, 4 Jul 2017 00:43:37 +0530 Message-Id: <20170703191402.3638-10-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170703191402.3638-1-jerin.jacob@caviumnetworks.com> References: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> <20170703191402.3638-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: PN1PR01CA0103.INDPRD01.PROD.OUTLOOK.COM (10.174.144.19) To BLUPR0701MB1716.namprd07.prod.outlook.com (10.163.85.142) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e0df1dce-7761-4a1a-3f54-08d4c247d55f 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:BLUPR0701MB1716; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 3:trdqNVR7w90kmcM5VOrI0bcucVRdWRnCzcJYsxs23P8ynwb6WfaOmAamr6DOr7hMOhFe3y6gHH2FPY6vkXxwBnTLzkKoRduRNgfQMba7FYFcfvJXOKlW32Y8elt71r8qkCRIOe9SqwSGNaURycIAU1aaQ9FFdtkZrryzlsC9HnNCPXgNPqdun6anP6rfASQDp/pBGNsbbtwcqUK58qU76vYw2S94F11skYV3X2AuYkobnFQJiWbDQT568Qq+6mosRTdaXUxsP6LEWl0fDjM6798y5NC63Wz+VmwtA/MTqkAjnOaW0UEYG9YRaTEa7/MDWwl1mJLVTOFoP/8tu7T5vKHjtEH6GQ41mKH1kSIwIdDVDLkGS22gAOnmZDTqgzTO7LbMpastp03XsTMUy25MgKHwOtwPAz98gHxEHx6XFVHYu/94l5nuO7LeuwTV+72pWOuqFoM54E3QD61iqkIKBdzFhrhnCyAWi2zNFYx0ba6K7Sk6x3fEBgnQEVshBmqmg+R/1rLE9TGibtTJL4Kdcnt0d9+Ix+FfpIsSJNHb9pzQnDJIaEUUrnGV4vB57D1KeJTjZasWZ0Tozl5Lqtka/gyB/7paguak6APjN6CkZPDDMBMELiWXlhRupwI40eNQZDWfPXP2xR+1MUKwOylGYqiKb8d/Xlbiylf4VGYHPLPvyS6eaR2vfKf4n6lQmHAa38rVPF0oU0nyyigKiNbKdxiEdM7tc+GjbVLOENQBwvSNLi2GUC61Bo9X5qAN2RjO X-MS-TrafficTypeDiagnostic: BLUPR0701MB1716: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 25:5ewJnEVC35M84GOayipU3u8PxhPcZe7QqX0gySz7gKukPhw0FWFKvhoPNFJWdSNaACDiFnX24UKvFq9iAkoSqrfrGWgpKxsX/bsfZ5/OgPjsJ9T8m+2WkINIJzrTapzrosLikfmeJXx1u+lpGmRaHmXjxTd1kCglosq0H7Wse1G+qJzXHHyyxKDBONAaJ1xlXka9Qsge/QxGMnzqfdpeIktr99PypMYd+fZu+QPonb6Z9rjg0L8Df1uZ9QVjeNy5fR97xzK0m/UqE+KacDZuLNVxpj2qQgPyWDxc8GEhtJXDaUwaev0fYKFP188nIFuLbMYzaSm9fDz2bB++v4c1eYkaqFBuAkBUt0KR7rTq4qnfpsOWv4exMKkDaVxuLZ+dONM1+Po2n8YTjiYkdKEYBaAKrdCC3xEiRaGVS6f1lEo7oCDNLWUlf2VrPFDxrlnZ6MeYXR7A7JCO9mtF3VU5hdnKZ6+oJsdmEZB6a9b3cJnCOTEL6pERjkRUhumg0KN2J+kRB7Yk8zmMtW6+bNQ0juk3TFc3L85mS7LlKxTHjrSPrxyJArgPXML/zi/Ebp2hjEf9zq+F7ng4zrnjvxIJci5UAJdhJBI98RtUXXe8z/3H+AN6J8fy+0iRSIjsy6KAmM8UkARvaMH5tuNPxJqCu9oxXh2NdnuAlLWyrMEzJAWETGfuBJWHivcyDLSB0GYdH4i8dAaPB8bUG9gwRSrg0QbmJNNwoOqWfFiNbHJ52AB6Vuz0jphbz+igI1ober6uXgTyn9s9JnZdytjZPIQCC37+wPxIeQFqw3L6GeF+5ajaGkjE9oMCRuYU8IIjFNC5J4js6KWc99tT4P4Jffdufxw8hzs208tfnLv65Q+cSlwJCk634jL7sE1Yvcyy8vw9tb/ySJwNh2tM1+o3KkufoQyyvXn97kfcdR3nF/7+sNQ= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 31:4iaw7LajmE02njLW34be+xHGcZQ7S3YiLb1JGcrd4+Iro2q7y6xP4SmowZG+KGYH0f9pM5QArf2Tid+mBGlKGQtN+qh9id04kmexKMX+sPToEnE8ilFgilDMezcJHLjlmSnKta0POADw9Tjt46hgia7wBIgJoVvRnmBIUEeqh/rWuqIgUrfEbkGdOCjtGTTsfsof2gLPbAp2R7sIfbw8lLtoz3GA+6c0UNRoTJHLkvj9qRnLtvJZ8ijh2NH+rS1m7woTQQGmzxOIiWgwCUklBs68QLFLyQFQrg9Bh1AdAnf+cbQGfsUXmOt7EQn1ri6IckfbdC1RqoJVTjrDq0u99FemJu8ESKM3KPfh241bZvpa2mfia6I42NPC4onlHpKJ4F7z+mTaESNNGFicEL5w7wxXEQhMTJfzu2XLuuoDXJA2TZP/6DHeATdHPYgi1FSYZngLAu8aJ+lrw2ATKBIauqSb8mBoKo4JniMzmlciktceWT1lH6gMEL9AxhU9IXhFq75M7+F34lDc4M1evnFDy8YouQN0HwhrQb7pstYIyJDFGt523bBiAHSAObkF0AL1+rhs6fsxM6jEuV597yEkgj+69IWA4vC4tor6KlmyjxPFDJ5N2rWuWEpjIwGP4t2rMJEAiD8txYn2C95hD0wle/ZQLZYunvtJ+RMJt48VdGA= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 20:Py/uFq5GiFxsgIEXBNnUw+DNXHzWjsys9XPJYui+fFUNsjVlJXKaqfrHdCCeL5k7aBZRThIhMTCBZ++WQN8jHK88MQJfoXFZrEbHZfOtmJZT3S/8+aaM04t0GvZZWsWhrU6hhPD/I5Nuz26GgjGFyIh8iJpyRiqowp/tzw83DmjsqQJrykS9KNvRMtFniTXrJpihPXvb4RYPY43/TJ1BFncRxNO52fw+ven0CfAj7tDjJjxNX9F4OOcyd6ihm0iALrrDbvtVvervGYwPbPNjqTLwQU26eSNgXHA7PRXgbwLkjwZEuHNDJEb1S9NUa0njiNz7oXv2FealUs9zWvijZaVZAkYTJA2RHiKYtoYkGX7uIgjONUFoi1qWREsVLRtouUELBb4MZWGLqUhT3+1g5opk0AILRDyQoJWYOANrxz40TNk9WKq3SH/WHWEQcNWxu/nVVOjZw/FnkR/HdtYjbcM3TEcUaHtcD3LiXALNfk5dlP7vFWPWsgB2nHodl0XiNL0Hhh+DBklu6+DpbbhToCnR+GqV6qQkO+AwXCZegLVdwidD303AI1sGcgXp9gyfez0Veynt0QUlgdcLYNb4T8zDpgfzyThoGgiOtMwjwQ8= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(167848164394848)(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)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123560025)(20161123555025)(20161123564025)(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:WdjwNesKfFi7mpIkPG/XbCUOQp2xh9X6lPUZ5G2E?= =?us-ascii?Q?DeRrhSSokj1xq7Jm0CvgQLHsfKwppI3mlsfczVB3ui1NVcGDCe1NrmVNUAUU?= =?us-ascii?Q?74Pe3Fr73lRZNSjD8kheum4ASrOOJT+Ay9oyHMaF2mNsC/wS2lZpI1GDcGmy?= =?us-ascii?Q?nbBZdk5MJP8SCYC/r+QdunWiH5KsplCX//XXDvkOmJ25c1IQZhKPX7Kwucbo?= =?us-ascii?Q?aGqM5V5+kSrxN0bQJk2tRMQh65LjqHe0CZHC9e17a0iKB2f4yb+A3urVBwxB?= =?us-ascii?Q?0D+uippDSnKAuhIqgKRCVDt8fRx4Lc6BM8aS3jVcjy5ZcdFbWkhO9fmwHtIL?= =?us-ascii?Q?5xZY4sdG9kbtVqqD3u3/Pz2RVEX68aGRD00dfOkGKS2UFwaJqGg3GPMSxzCE?= =?us-ascii?Q?Tzbn7ol+nlDPMbpOLMT7YucBSugdD42Qi1z76STO3qEqzKQcgZSmNZ3xEbp5?= =?us-ascii?Q?CqQZA2eNQQjA9Lk1tanJKwP95NEtSv2YyFgoT5G7pw8lrvGU90T3jHIHOIQ7?= =?us-ascii?Q?nozKP4PDzg8pptA0oVMzPfh5erPkDuIJg8aTRuOxMNfw47ZvHJG43lnKmHQ+?= =?us-ascii?Q?eOGkqmkNo4DfsY6ONrU+lmUnR9UoBkOYX4gGWbwHF4vIO2ifTOonQ38eF33O?= =?us-ascii?Q?4M8RnJ2nDjyB32fFb/8w5dTL3ejweml2X2UA4NkElD+JkXVPGSGEyfh2bS0k?= =?us-ascii?Q?E01KZxg9SIwcLo86W/8zmW4dzJWY2HPaiTymdhPddAwse8Rtf6wfoPEG9BC0?= =?us-ascii?Q?q04kwY2ITjXVj5wQ6bhkSf1EAczEY/M+nmrApZ6R6lLI75GO/+HX7RmaWt36?= =?us-ascii?Q?eDOTyV8ylXyrPXvAtJY7oCOo6OAZvGFcUoEKkHnwBh8LP6pnaoLkMleeB59+?= =?us-ascii?Q?RY1RMWGkb3tXXAbvYNXYE4gsERPlXcKIke+8sZkOHjGNeD8O6/A6oVSpqlO0?= =?us-ascii?Q?OsRVsFxOKL0n7jNc6v02eB4exI2Ose04o18MVUK1FKnu7Be3mmoHIsCJ2rJ8?= =?us-ascii?Q?lgHEFAoBmLbEu7ZD8ZAPSjZK/S5kZKssaNgaCJSE5GFS1hmh5SSzi+jGRzBO?= =?us-ascii?Q?fHqPlFwBX2VpyryCa/ldaGbOLEetOAL2ZibE3G30zJChlyLH4OKbIR44QVnt?= =?us-ascii?Q?K5Ekwr6neCyxKofIXlqnyAbJKCqN1Zuo9ySWZxOjoes1DbAqjuVkqEcUHu8a?= =?us-ascii?Q?wI2XSFxJASwMfFInYU5O9G0ixQgdlP/fOCikLAhXAPfNRhrC8lMX/lP/p8ih?= =?us-ascii?Q?WO6WxElOjzu8yoPYA2k=3D?= X-Forefront-PRVS: 035748864E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39850400002)(39840400002)(39400400002)(39410400002)(39450400003)(7736002)(478600001)(53416004)(72206003)(38730400002)(110136004)(107886003)(42186005)(8656002)(50986999)(76176999)(36756003)(6512007)(53936002)(4326008)(25786009)(5003940100001)(6916009)(42882006)(2950100002)(66066001)(5009440100003)(6666003)(2351001)(2361001)(6486002)(6116002)(189998001)(305945005)(33646002)(5660300001)(81166006)(8676002)(3846002)(47776003)(1076002)(2906002)(50466002)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1716; H:jerin.domain.name; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 23:3k3rlUAzD5I3FYj6MKgVP5v+W2ZmWhljbrbjeqV?= =?us-ascii?Q?QN5c1MvaEQBVczqLb4pQlClidTvxKbXeGlyAPQYCFUd46+IkkxtBl08tmXqp?= =?us-ascii?Q?J6Rrg3fyCs3WS0qWXsww8/mth24MP62IobtEhBuDLY5UOGKKs2xFwC0ynPkH?= =?us-ascii?Q?U4w8Rl4kRFDyHC+PJqims3lw4WVfxNlzG5Yc8BNVCuumxVDnprgtfWbWV7U7?= =?us-ascii?Q?pDNEsMCPfoCuceEpbSy/lSqXytErbCiz6WuZVbAiasgFQZY9JMsFyh5yG4JU?= =?us-ascii?Q?j1tzGkL/IMeDDrWmhCsiE3HDAGzxtll4M177PudPtSqSJ1z7G1+NFOXj3638?= =?us-ascii?Q?F2ffc++mD72d+vEV6A0IaYqD1XEobZP85e5q2JoVOARrovEalZsXSKpqxSA+?= =?us-ascii?Q?M8EF9k4pl3W2SrlkTPnHS8mfn7guwBIuEB9Mw/L+PaNz6Mfymj1u3j+7HrOB?= =?us-ascii?Q?L1RURVF3n3LEZxpBxvo4Y2tyD9QDhmLCow67tSiD2PsEDJdcd/g5+3cpgoEE?= =?us-ascii?Q?VjlaeTWcz+fyiFR45EWMCUmJQBoFsKRMDzoACx1iGhrehskWaaKclP8JsHXg?= =?us-ascii?Q?ZJOKOIRWaUH+Fh93V+VwtTJTyU7TmwbTeBw/oAqSxLrmFUkaRgmLNsepqVI+?= =?us-ascii?Q?4fokBoaLCGNZrtMv42hnQmoSVD8WZo4KLt31Y9L911ZLVgtStVcbEQ115tqA?= =?us-ascii?Q?oiVkJaOvr0OSJK5qkNBG5FSOANfKYuJK8W+VRnl4rRGHf4218I3eSQmBTvCk?= =?us-ascii?Q?Z5S8t4w2nmd50Pgk+3SyUR4HkFB0tODhkPhY8GBLS05pqdM865FDMw358mRw?= =?us-ascii?Q?14MKOh2RNSANGe3hHnL/wjFzzlFRtcEELNrQpFSrT0nk8wc1mz7ibHOKcfmF?= =?us-ascii?Q?52sGQT7DudZaZ1aASqB88O5W8fLkPHW68G8Jk0xQeFlsc6qlwDbCW0wPjjFv?= =?us-ascii?Q?McGPW9WsdWBK3Wy58k4l/LrMT0S1XhL6TeH1JCTaP451hJYeS61VD6EBAQqN?= =?us-ascii?Q?MMN45t0uKlflgk1/PvzbU4uEztyVBXUABSfRFp18/UuigiA7HYj2QylkeXea?= =?us-ascii?Q?wYG5ZLFsweTP8vguScs+Jm/fx5EWvqgh0Ql2sioTgBkyjam+vwda9fsCk1f8?= =?us-ascii?Q?h5Jl7yR7MF93eOoWzlBu5ArVJ/HwpRrwUIaGTkh8RWZzMBFPr6Ee7Dw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 6:kV2YdotV2GeIjfOHSseHecxcQbfsihWQoan2dpsB?= =?us-ascii?Q?tdxGt6Pd7i6k5851C2bln1ouAb/xYbWdnIj4rlsJQ2tjnSP0+9HJ+ZRoGTpx?= =?us-ascii?Q?Ywd6Mjs9zbUqR5jPTYBudGzMhF2MWCNbtnAysHbUkBJwqbWVUBKP5gMh9KNs?= =?us-ascii?Q?uV0OaMf3Jpyi/2x2+QEJHw5UGahuEE6ZAOHuOH6InBwJip32l9NRRNjVGJzh?= =?us-ascii?Q?S5Pk6/daWwIu4hNzEbOjCVjnac2SHBoT3S6hRkmiEct8O8U/ARzTcl3XK3ky?= =?us-ascii?Q?0McKYWTevKJKfJZepoJ0eHfpoM+HANW3wCIwOYmev/Dy4On2Jjt3vdFJsYSc?= =?us-ascii?Q?qw1sOMT7vGmEDa9dIZCcrMi9YVJ1xZF4yzgVGwVI8T0CJvw+U2+FzgXFL+xT?= =?us-ascii?Q?Z8YEfS6JCbXX3dHnCoXdeyqo8zmwsUZpret7kOJb3A2rtZEzftUzdtqkdbgJ?= =?us-ascii?Q?ZdqhShf8d/qYYFnMWaudRkU3W+i1prxYpAP99/DxHd3zfZVprVFwqYMfdR4p?= =?us-ascii?Q?IybQuF9NqVj5kg8+Ja6A1ReD4EhElpB0ccJADixNogM1fKp9QDd0luzLGTGX?= =?us-ascii?Q?8s0WnaBm0f4MDYWFPo00dqrPNtaEqPfAG/Of/eafQrTFr/udGMC1f98/5eH4?= =?us-ascii?Q?dZOT8xdQjumsG1SDnG0kQRQELp+fQf2FnCoMt1OGJjfdrCZcj+smrH85fnwD?= =?us-ascii?Q?J8olCLCJ2QN5NbE+MCNZCxG7Zv+29Bv9Lx4lJuxK+zFlDeh1DFF/0Rd8vwlv?= =?us-ascii?Q?j2AOKF3osodt2DJnOsI2kkb0Ug4NFsTVjYY5qMkEEoVQQ/kvWgGNP2uTwGrH?= =?us-ascii?Q?j8/PyMbA/XuA994jNn1qujq8O1KjnHdUzz9+iEJAIP75oeG12y2Jz784Pbmm?= =?us-ascii?Q?/vvwqKuU2jGJzrTEXFjTu/CVe1HukhAALjASxeBIWMh5HYvDxKwdrujaRxhQ?= =?us-ascii?Q?DkXGED/2iVUpvDAWRasqLl3M6vJdjWY4WXdYlUoq+gBYYJ52l0L/wjk5/r4X?= =?us-ascii?Q?lU4=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 5:U1MWxxFTm0s1yLIJJLs2E3uLHRnE+u/is7VCpEzb1qz0WMn20J7IrQUTnFncrN/Qtp8yIRYOEZ+r5SibFSpQ/f0tyBlRm19HanYwWrCbpJgl/tGNqHRoe7TZHjb2PRHqWsyDNkkmzLxsuPeneDKKGB4yXJuvye1I3rS2sz3PMd7SLCjAzu/LC0+A2IG8v33lJz/4IoIUGvebwiaAE+4FfixK3f4BBdZPm0Wh5zYMrPTd5Dp0+Yto0EFI3TBBRIgSrJlfZVNYB3/EUfsqByopORKwPdUx2NMvCz0dHOMXQb2AbJlEIL113NDP+v9ZHCJOuxJxzzevF4ytIxVgyl7NYt1cVPsSnu+bYBJCYgvbXAV820FTRIHBSMv6IO5ZKxE/XzkmWgj1Xam4Tktpadi3/PLa1j5UyzMHNX+ZtxJXrnhX09JPRrevsG9gMAJFo/rR60BFfl537HncAv3QLfC4EFQdUYj/lGmibFNL3q2EVvMTdC7Km6Usz8QFERTPuQOK; 24:y5bFkYz534U3ALVxnITW4K72cUYnXNTbmwdd7kJI+Tjh+xlsI+epeQsDncjXKABISP7V/wbbjmd6Vkoja62z4i9fDc0GivhWzKZWTDbPEE4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 7:oeQUJRQ2zYAgrS8vqXs/DIYicI+F/lxUQyW+iXpAl1G5eKEAopF6kYw7c8qOMHAI8FHy5ruFGDt8KO9s+zJiK0t6OQXLTaPw7WLROhu/pYYYvlioLgMvm5+/5E8j2uS2Y+gyTjw8Up/Pkub1ohJz/6tZYnwOTEvS8NyUXmoIYjkTqu+sb4czE/2XRrBTwhx/L/SSOnMnCJKEuC6IAPQAF664JM7uzC83bU90TIwgJB4Bho+gxvb6yL8eGQ0iPFD1z71Cva6AFlSC8bKJaQds9yjZrYrguA7N9VLZI6Xhar7Z2nC/yYZwGVlW2TTqrOpIL6JzwFe7jWntF7/s7bnBatpOdR8lSYG0GtVPZgBMykU062ZaAKXgqSNCnUVg9xNs1JxM5PqN4b272SK+MxV1tGWe7qO0atZdcgv0wSK8BHF8/L62qSqGgL9RYktoqhbdoSMh3csPrTBuR6BsXrODplu3tLiktNEmNbF2j8heqgMWSAs1fhjZEpvKrpTGvO0PCP+B6BeKYWGd0aKY0ZKjgWXPcdWCgVCPgfvE/ZRWzKsSePSVc+l2641ipHl07R0Td3WCkDZqkqx4n8W9wdrze3odo902GHBjBPIs5PimNOG37bdWe9M0JPGTdZFnQFdGyOKxUszPouTyoW4jQwo3pgJ9IWJ91y6BFDpfEiACT/E4x/bySfMuJJyb3NRsmyUSDFxmufwiSJedS05Rt12MT91i6fHzypieBsUaBCHRkdCHy7b+6qINXExntKCMSpIwwSSO/kGKgr5kvtMFCZH6dc77APK0GoyPtuagdmSusmk= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2017 19:15:10.8868 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716 Subject: [dpdk-dev] [PATCH v2 09/34] app/testeventdev: update options through the command line 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, 03 Jul 2017 19:15:16 -0000 From: Guduri Prathyusha Add an infrastructure for updating the options through application specific command line arguments. Signed-off-by: Guduri Prathyusha Signed-off-by: Jerin Jacob Acked-by: Harry van Haaren --- app/test-eventdev/evt_options.c | 260 ++++++++++++++++++++++++++++++++++++++++ app/test-eventdev/evt_options.h | 18 +++ 2 files changed, 278 insertions(+) diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c index 200e594e9..209abc225 100644 --- a/app/test-eventdev/evt_options.c +++ b/app/test-eventdev/evt_options.c @@ -57,6 +57,266 @@ evt_options_default(struct evt_options *opt) opt->nb_pkts = (1ULL << 26); /* do ~64M packets */ } +typedef int (*option_parser_t)(struct evt_options *opt, + const char *arg); + +struct long_opt_parser { + const char *lgopt_name; + option_parser_t parser_fn; +}; + +static int +evt_parse_nb_flows(struct evt_options *opt, const char *arg) +{ + int ret; + + ret = parser_read_uint32(&(opt->nb_flows), arg); + + return ret; +} + +static int +evt_parse_dev_id(struct evt_options *opt, const char *arg) +{ + int ret; + + ret = parser_read_uint8(&(opt->dev_id), arg); + + return ret; +} + +static int +evt_parse_verbose(struct evt_options *opt, const char *arg __rte_unused) +{ + opt->verbose_level = atoi(arg); + return 0; +} + +static int +evt_parse_fwd_latency(struct evt_options *opt, const char *arg __rte_unused) +{ + opt->fwd_latency = 1; + return 0; +} + +static int +evt_parse_queue_priority(struct evt_options *opt, const char *arg __rte_unused) +{ + opt->q_priority = 1; + return 0; +} + +static int +evt_parse_test_name(struct evt_options *opt, const char *arg) +{ + strcpy(opt->test_name, arg); + return 0; +} + +static int +evt_parse_slcore(struct evt_options *opt, const char *arg) +{ + opt->slcore = atoi(arg); + return 0; +} + +static int +evt_parse_socket_id(struct evt_options *opt, const char *arg) +{ + opt->socket_id = atoi(arg); + return 0; +} + +static int +evt_parse_wkr_deq_dep(struct evt_options *opt, const char *arg) +{ + int ret; + + ret = parser_read_uint16(&(opt->wkr_deq_dep), arg); + return ret; +} + +static int +evt_parse_nb_pkts(struct evt_options *opt, const char *arg) +{ + int ret; + + ret = parser_read_uint64(&(opt->nb_pkts), arg); + + return ret; +} + +static int +evt_parse_pool_sz(struct evt_options *opt, const char *arg) +{ + opt->pool_sz = atoi(arg); + + return 0; +} + +static int +evt_parse_plcores(struct evt_options *opt, const char *corelist) +{ + int ret; + + ret = parse_lcores_list(opt->plcores, corelist); + if (ret == -E2BIG) + evt_err("duplicate lcores in plcores"); + + return ret; +} + +static int +evt_parse_work_lcores(struct evt_options *opt, const char *corelist) +{ + int ret; + + ret = parse_lcores_list(opt->wlcores, corelist); + if (ret == -E2BIG) + evt_err("duplicate lcores in wlcores"); + + return ret; +} + +static void +usage(char *program) +{ + printf("usage : %s [EAL options] -- [application options]\n", program); + printf("application options:\n"); + printf("\t--verbose : verbose level\n" + "\t--dev : device id of the event device\n" + "\t--test : name of the test application to run\n" + "\t--socket_id : socket_id of application resources\n" + "\t--pool_sz : pool size of the mempool\n" + "\t--slcore : lcore id of the scheduler\n" + "\t--plcores : list of lcore ids for producers\n" + "\t--wlcores : list of lcore ids for workers\n" + "\t--stlist : list of scheduled types of the stages\n" + "\t--nb_flows : number of flows to produce\n" + "\t--nb_pkts : number of packets to produce\n" + "\t--worker_deq_depth : dequeue depth of the worker\n" + "\t--fwd_latency : perform fwd_latency measurement\n" + "\t--queue_priority : enable queue priority\n" + ); + printf("available tests:\n"); + evt_test_dump_names(); +} + +static int +evt_parse_sched_type_list(struct evt_options *opt, const char *arg) +{ + char c; + int i = 0, j = -1; + + for (i = 0; i < EVT_MAX_STAGES; i++) + opt->sched_type_list[i] = (uint8_t)-1; + + i = 0; + + do { + c = arg[++j]; + + switch (c) { + case 'o': + case 'O': + opt->sched_type_list[i++] = RTE_SCHED_TYPE_ORDERED; + break; + case 'a': + case 'A': + opt->sched_type_list[i++] = RTE_SCHED_TYPE_ATOMIC; + break; + case 'p': + case 'P': + opt->sched_type_list[i++] = RTE_SCHED_TYPE_PARALLEL; + break; + case ',': + break; + default: + if (c != '\0') { + evt_err("invalid sched_type %c", c); + return -EINVAL; + } + } + } while (c != '\0'); + + opt->nb_stages = i; + return 0; +} + +static struct option lgopts[] = { + { EVT_NB_FLOWS, 1, 0, 0 }, + { EVT_DEVICE, 1, 0, 0 }, + { EVT_VERBOSE, 1, 0, 0 }, + { EVT_TEST, 1, 0, 0 }, + { EVT_PROD_LCORES, 1, 0, 0 }, + { EVT_WORK_LCORES, 1, 0, 0 }, + { EVT_SOCKET_ID, 1, 0, 0 }, + { EVT_POOL_SZ, 1, 0, 0 }, + { EVT_NB_PKTS, 1, 0, 0 }, + { EVT_WKR_DEQ_DEP, 1, 0, 0 }, + { EVT_SCHED_LCORE, 1, 0, 0 }, + { EVT_SCHED_TYPE_LIST, 1, 0, 0 }, + { EVT_FWD_LATENCY, 0, 0, 0 }, + { EVT_QUEUE_PRIORITY, 0, 0, 0 }, + { EVT_HELP, 0, 0, 0 }, + { NULL, 0, 0, 0 } +}; + +static int +evt_opts_parse_long(int opt_idx, struct evt_options *opt) +{ + unsigned int i; + + struct long_opt_parser parsermap[] = { + { EVT_NB_FLOWS, evt_parse_nb_flows}, + { EVT_DEVICE, evt_parse_dev_id}, + { EVT_VERBOSE, evt_parse_verbose}, + { EVT_TEST, evt_parse_test_name}, + { EVT_PROD_LCORES, evt_parse_plcores}, + { EVT_WORK_LCORES, evt_parse_work_lcores}, + { EVT_SOCKET_ID, evt_parse_socket_id}, + { EVT_POOL_SZ, evt_parse_pool_sz}, + { EVT_NB_PKTS, evt_parse_nb_pkts}, + { EVT_WKR_DEQ_DEP, evt_parse_wkr_deq_dep}, + { EVT_SCHED_LCORE, evt_parse_slcore}, + { EVT_SCHED_TYPE_LIST, evt_parse_sched_type_list}, + { EVT_FWD_LATENCY, evt_parse_fwd_latency}, + { EVT_QUEUE_PRIORITY, evt_parse_queue_priority}, + }; + + for (i = 0; i < RTE_DIM(parsermap); i++) { + if (strncmp(lgopts[opt_idx].name, parsermap[i].lgopt_name, + strlen(parsermap[i].lgopt_name)) == 0) + return parsermap[i].parser_fn(opt, optarg); + } + + return -EINVAL; +} + +int +evt_options_parse(struct evt_options *opt, int argc, char **argv) +{ + int opts, retval, opt_idx; + + while ((opts = getopt_long(argc, argv, "", lgopts, &opt_idx)) != EOF) { + switch (opts) { + case 0: /* long options */ + if (!strcmp(lgopts[opt_idx].name, "help")) { + usage(argv[0]); + exit(EXIT_SUCCESS); + } + + retval = evt_opts_parse_long(opt_idx, opt); + if (retval != 0) + return retval; + break; + default: + return -EINVAL; + } + } + return 0; +} + void evt_options_dump(struct evt_options *opt) { diff --git a/app/test-eventdev/evt_options.h b/app/test-eventdev/evt_options.h index 75f129ebe..ce279dda2 100644 --- a/app/test-eventdev/evt_options.h +++ b/app/test-eventdev/evt_options.h @@ -44,6 +44,23 @@ #define EVT_BOOL_FMT(x) ((x) ? "true" : "false") +#define EVT_VERBOSE ("verbose") +#define EVT_DEVICE ("dev") +#define EVT_TEST ("test") +#define EVT_SCHED_LCORE ("slcore") +#define EVT_PROD_LCORES ("plcores") +#define EVT_WORK_LCORES ("wlcores") +#define EVT_NB_FLOWS ("nb_flows") +#define EVT_SOCKET_ID ("socket_id") +#define EVT_POOL_SZ ("pool_sz") +#define EVT_WKR_DEQ_DEP ("worker_deq_depth") +#define EVT_NB_PKTS ("nb_pkts") +#define EVT_NB_STAGES ("nb_stages") +#define EVT_SCHED_TYPE_LIST ("stlist") +#define EVT_FWD_LATENCY ("fwd_latency") +#define EVT_QUEUE_PRIORITY ("queue_priority") +#define EVT_HELP ("help") + struct evt_options { #define EVT_TEST_NAME_MAX_LEN 32 char test_name[EVT_TEST_NAME_MAX_LEN]; @@ -64,6 +81,7 @@ struct evt_options { }; void evt_options_default(struct evt_options *opt); +int evt_options_parse(struct evt_options *opt, int argc, char **argv); void evt_options_dump(struct evt_options *opt); /* options check helpers */ -- 2.13.2