From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0086.outbound.protection.outlook.com [104.47.40.86]) by dpdk.org (Postfix) with ESMTP id 433497CAF for ; Tue, 4 Jul 2017 06:54:39 +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=F7WO8dnV6VrT04KURrzOmWIWIuEn3vJW+wSDkow5WuyxFD+q6AbMnOI/AiNM9+eVCZBIkgl0aAvB5NmYxlj1BmvQCfAyg4J+qGv5Tx9whPT9ZNzf5/FsNvguQFeDigp/9SuEvxb4ufvea5nbuBYzOVlvESqGokCCwrn9cu4GPJM= 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 (106.200.206.49) by BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Tue, 4 Jul 2017 04:54:33 +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 10:23:04 +0530 Message-Id: <20170704045329.24711-10-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170704045329.24711-1-jerin.jacob@caviumnetworks.com> References: <20170703191402.3638-1-jerin.jacob@caviumnetworks.com> <20170704045329.24711-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [106.200.206.49] X-ClientProxiedBy: BM1PR01CA0106.INDPRD01.PROD.OUTLOOK.COM (10.174.208.22) To BLUPR0701MB1714.namprd07.prod.outlook.com (10.163.85.140) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ad77b261-3f75-495a-195f-08d4c298c5a0 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:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 3:JX3xJgraJv5P2zk9+WlpHYRZtpLXR8OLY4cY5I5eT+VKqutrwrl1KcLjBIpMnYXQ72Z1VcybvotLA8gLjijaTd06TD2e/6CM4ooQtj2lVqsXc+DH2Q/8M51sV3WpJ+kShMksm6zlMM4RGEK5zNJPOrUkrOoch7FL6zryFh4JWQiF7cy9zhU/htDzoNisz1OWP1+2l7Qr0ROszqohOamjv9/CNoc6jUAjvXwThocJbIVGWGoGFyXvDAtwepDR2dDPYQ4PLse63Q0YdbDmRjerSwDE72fiulK6fLrZn14Zvji+10Jj0cQ71tPieZbSEMnWyqxVF9j3sRlwcMup4Fgu0rcygs+FgViY53ZyYGeeR2MYCFc9P05cBxi2D8brgEqENSwc7Ge9aZ0b/C+bGPDybD9ycD8k8rX/nico0pG2zm8QXl6QsskJCgiqL/4EvMdxfJ2ggvp9UuVTlFOUyksSLViZDizVhMqOw/Dw1070jEPfDbzZrlJjG6M1+UxdJDLA12QIdg+s80ekYaq7BHpBOcm0Ib/3Qp/Fq1eKKMt5O3R9tktUxmHwYkt4TtE4GAXrNa/OanISAsPzMjzvcwYhm59h+jTXHim6kridzX67kuGhyRZGhDOzN7S/5kfRZ3XeeMXnOnoqEtLMIzjpc4vg3wrelef91OD2QRRI7PDf2DCU7zIKjsSe6rrwhYdNSn/FeIWJRK2Hv2wgz/FlYZepJ7tIGHFNq9SFdHQtlOeUa9/XymMf8YFi6uB6+7bPrY5g X-MS-TrafficTypeDiagnostic: BLUPR0701MB1714: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 25:k/XHNYMoVk0RCWCv+p9HXqY70bACKuO7fRwXlNts1BUsL8q3RCr/8HXqnxYH7WZsAnGCr8OnHJOZkNNJPc9r+73rw/gppBSXoYQhQcyGzayn1N3WFnCkEhyOc7E3bL6XsBWq23EFZ5IlJlad5rGW9ZpgbGFMk3mvoZbXJLxiMQjBI+Aof6dUjwl/wYpXPX70YzDxsUx12ukKZGOD6hA6TFiZdVsMQw/e/iJO4dllSsyKEYKlHndMuBlaE/1J4XaI1/d1IFTEj43+LUnuIdFJELmRhfMf51CeFwUZup7WjSPB2y73f7qxtEz9mdgmq9Lu+TbrWNn3sW2eljKDVPXy+236UhTRRDYrzQiRRVNW+yaL6y88ordN2WuK2ZHdEyvGHk0xvtr5ax4r+28fI5hBNWlgX7VA1+TT7Ztv8UwhwnnJLd3Ajv7okNACv4AhQ3UDrY3QEFhNlvrJIwUl9JoemXuOUQGebYPFz29VLndreifHYdzpx/pxy9rdlIYok1ITLTYJPoLfxTcSr4NEP4tiaMLPzA9ukh+3Y8V1uvm4HKtfEFwsRrzUtQqouOVAJ7+JX3ew4eEliz439f8OPixGBovpddnkPSVFQjYtdKMC5dbAvAXvdJUSn1QXpQRVbV3JhFjLZeCKIXPnrgQAmo9xVJtoC1en3GynLN35+juw6YUXDPdCGibIbBQEScZlg6XyhnxokGSNQUQtJfjKzZZtJh1EOzaLOJdZmV3EZmp1sRpMxXmOopfbYQE8jr8+Eh8L8x4ke9fN47BHRLJP8GDIiiOaYt44NXC8DZpJrxU1CR1zkgWFzpxT3w49+c/JyTSKJgHI+JuaN8x8amhvPb2WWShdPYa2udqZhQKMDssQaZsEXlZEvgXfaMTi/SnPoUq8arJj0cG305yYtnGc7c9/BpSJN8LS01g/xfipvU7qgKo= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 31:QrGUFt5XGWhyf5W1lhVnbwzFc3JBTF+QrLevOr78QzyufdGwLDwJn4U3UdCCPWo58Fn7UUN7gy6XUcdNLyp5pVXvYtiLC9r9EJK8FQyPQCn4dCKByRUJU6XKpY2Q+JbUyuCOoKhz0Oj1YCY1IYAd6GBPyPRd4A7xzSybvx7h+ed9V9vgKhoabqrkxZODXuftdojeoNu5DHyHaY570lxOKoQab7VrobHKedOVch6ujH30xmWnqkju6qvL1q3u6HBAKmEihxud7U5EuYoTO9YJkfG10zQjUZIaEpfAxmftewYbt/8gVPZJvMYlPjsNw05q/RRAdgTOcSuyjJL9xrmPI3cXuiRN7UqEQcQn9xsNJB+b2uh3gtNoKsAQc1j/DtWoL+GqCGTMpzuqsllx5Bph9h/ga6WJK5YVV2xap9v0586RIvZ4G4tOr63bjNjhU+/VDm8OI6T89ePr34NFrFOYPl9VNlAJB9bAneasnzmcIp+imfF+8+Iq5Dc7oVWM3Mm5zV4leZCYhQ4SN64lrzw3HIRRKKq2r0DAjt5SvtwcfBlyV9mqVtJKf/dOQw5Cl3i+nW7nm956mn5kmJ/oNHIK6rAKdiyoFomSi59fNTQbGyteuPvyGCC2LxtLkhX8ynD4d3gn5YP7AL4/H2zVgmSSagHvIlorNOzepS1TiUJ6UpM= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 20:tjTUpTxGVHZYVOSBlCEhmW1O9dRsrO3vz86iBzscvlDIfYVEcoTZMfyf3p0qTwHHQpPcR8AjHvuqJXR6mfKjini3l7QDVjU8IxhUYes2BW/0eyuZGZCegnXR3I3ie6L3rNuY3Bdsp+6LXigaJkB0BLs0BvU3spJ9viDakwQLNP5Ohd4yf12IDAE3qEMUZAT8qpvZaHzV8t/5YIxmzR3zEBMhRHdSPD9ldIFcHSLIRuaHrKjre2+RowYHF3nv13XF5dQslykO7RlpJoc2n92unlK9b61aEGLIzGeWroOBWGHmrVN6A5mBDaPtiB34hGLctsJAYPV7UmNGH1F/7PitZxEepvf0dEpbrLUQ1s0brfKiUSo0hCcUXHRWVQL+ynuQLkp+Kw8aZN/7YLcJ7gHK06z16m0bzkptPt5VHs8wmkfDGJ2KHK1OSFEdLi4pGsAV3hsGA5MDcYxxVyfp7ElaBSD9//leXom/FnVAySNUNbOsh9nvuWfVg5Y9U3OtrFBxxBKcJYOSBMll32ubR5a0tFdqPmOejmVV2x42Fo/WsWxtOOi7wbmfJMR+KMyDfVXF6aTnuZQMho3DhhdnvHyCSeM6/go+/djBJ8G2iB7G0F4= 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)(100000703101)(100105400095)(93006095)(10201501046)(3002001)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1714; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1714; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 4:gHyDA31Q2jQ/UbevBYTswKerNlU0Vr7JIFgyG0gY?= =?us-ascii?Q?hwbYDVF6TUq8vCjEZsVAZvxwsu3f8gR/rDsPY9bTsLmvmQkXbd4adZ5fHwJW?= =?us-ascii?Q?CqnEcNkLdBG6zB91UGjydJ/lEgfwGom1Ew/wXV8Hzr2IfyfZ7s9xA79TsMs3?= =?us-ascii?Q?2QWFEMZc4sL2/bJ7BvCEYfU8Uj4VXRk5iCTdpg4jvWwA6E7dgUfeM68CdfGQ?= =?us-ascii?Q?fiFOLTJAQeoPczXjwkXhZcF5aEnzXGXZmT42MVnRYmSobqOJEsbIRaVc1OUe?= =?us-ascii?Q?mR70RkncxPB8bvsLogwtKznmtjrTaLUrw2TbwNZ3BJp6A9mXoGE5dhFhqlHG?= =?us-ascii?Q?/GLGb+yLdYAPAhHKuQ3DmfPIjysuu5Qu37ZzzPY6hEHBHkUzIARs6hbSj7QT?= =?us-ascii?Q?PlH8biN4za1BGWxkbafnIT+lRnmQGjVhbAQRtEWbzoPkBBcciy8iaS4JG4XJ?= =?us-ascii?Q?HB3pLjb1fXVWiDqPbBkveE7lYuXMOtvoo1RxVD4TTaL1IKDhZr3hN/C4Hzom?= =?us-ascii?Q?FET+wcO8ORIecL8qyhD671vI7Ll6C5B359ihVNlLLIOfza3pRk/wTPGZ3YG7?= =?us-ascii?Q?eLi06mrk5iN2kZRgt5Fr8UmRKaDJ/PFVIui7AE/NFFFySKtj2MhuAKVEkG/u?= =?us-ascii?Q?tL70vygTAX1NXuTIcxD5IhfQPxaW+3/e5nUsRAXUhb2KEupkeufg/tu6chWV?= =?us-ascii?Q?21/A4YxlZAt6ZgQyx4IRPjzJh6L6+10T3pfythd4OpeXGTmkMoIdcOL9CyWk?= =?us-ascii?Q?Kqb2iQsaPISKpt8i77ZF3RH9fNvEOk7Y0euyWmD+Rq4aNNlLSMEL9FwCPmu2?= =?us-ascii?Q?coIdqZ0SFIoCRgZa9vwgpxB7fUe5tkJFMUhUzUSI5Ag6+B88mTtAKpU2dvWl?= =?us-ascii?Q?wKaqMWm/5Mj7hvsbeP7ib/1dXcgLIgfQQbs+AK8MOIWZ959fiTuwEhQEH604?= =?us-ascii?Q?cbzOt/Dw7pXCiq3B5QE5WpOZ7szDeuNkaBaZVmIm1o51SUjTzNq1eGiUYrsX?= =?us-ascii?Q?YImtNatftKeMjy1eFD9gTPKv1obyBAINTSajQxBtieYD+g0yNWgwdWzsTtjT?= =?us-ascii?Q?orDSYo0uvKEzbP6C5aG7sKphXG/jGWg4yYpU9yVQg9Gr37rQB+mRSpr6aFbx?= =?us-ascii?Q?EYr83O0MPUIYW/odt8+lTcstMzeSaatw2wGJv8DqlwcvdXgOeCspGsPQWFOc?= =?us-ascii?Q?OP//IQyKYaSPzlSQOHCZap6X78V8WcayG7DjFjAH7ZTSzNiQN0lj3Rt/vxhf?= =?us-ascii?Q?VXVdVD7BA4Ec7g+sHSk=3D?= X-Forefront-PRVS: 0358535363 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39850400002)(39400400002)(39840400002)(39410400002)(39450400003)(4326008)(107886003)(38730400002)(6512007)(42186005)(6486002)(8656002)(6506006)(33646002)(53936002)(25786009)(6116002)(6916009)(1076002)(5003940100001)(3846002)(42882006)(47776003)(2950100002)(478600001)(2906002)(6666003)(66066001)(8676002)(50226002)(48376002)(81166006)(7736002)(110136004)(2361001)(2351001)(5009440100003)(189998001)(5660300001)(305945005)(72206003)(53416004)(50986999)(76176999)(50466002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1714; H:jerin.domain.name; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 23:80pjl2SQ1ylIC0wHREVjMW7IBugTRGRWe2AZVPJ?= =?us-ascii?Q?c//EtMHN/cZHNUkuOIwWrou9IBgO+b2lk9QQtIpPNJ5goOPgx5lp5sSNju50?= =?us-ascii?Q?2QgEwwY3W/RI21PAZN+cZq+drSJzqkilrmtIJuv2PJy3K/NsOzuTDBAw0f6a?= =?us-ascii?Q?cYixaKozRuQRWxAYDA9oQluwzru38997wuCbG2Hrm+XVliO5TqEl+2xc6qG4?= =?us-ascii?Q?ZufRvNnyFqLMi24p31HH0rK6Vr8wHWdbDtEy7pBdnQqewlSAdC2KfRbflZH6?= =?us-ascii?Q?twHJ6ror25ED4sNFVogrjmIV6Bh8xZD4lZLVh1OkHsKk1y3G6wGiLq3sPt4b?= =?us-ascii?Q?YFgfB3m5gx9IneB4+1RYo3k09Vd30g+gh+naXdVq1BAHDtYg4FOp3dpBONym?= =?us-ascii?Q?uYTjSiQyItzQIMM6NdT8LBFJwQhH2Qt9RbvcyqdObdedzqbxscG8nNnHG2IM?= =?us-ascii?Q?leUlFMXlK3noJHFOay8IdDRKlG4PdCaJax/CRm9xJbHXuUNOduqAZm1XHEmG?= =?us-ascii?Q?BW01fuNLUBIy5cpglX1IjbnLQfTrC4tnS85yxKhtqFcNZWPmjABoPuyGv9yh?= =?us-ascii?Q?cZz1IRQGz7/RR1nqEcjVrM9j2wqY7fT+P8FdBcRwg1wmSriCVCgnksWBQpUz?= =?us-ascii?Q?fTtRWsNwytU7cV2cnjmfn1pgR0kQsmlC02zqRvatafn9b26qZIVkZ980tkOR?= =?us-ascii?Q?HIgS93XUPPhrW9/I4jxLeX2ftvykcTbeSBHN2GFcE2ZtClQqf3Q/ni7/FbQQ?= =?us-ascii?Q?ycf7WNKEmoCjDWqb6I+QGoe2JS6zsuGaprZsA+cSNJUAA62eljywdeJAmQ09?= =?us-ascii?Q?KQjU4potK5R4Dtk5byvG5YeOJkQc8b1MnPqsUn2cL0rrnDMSBqrQMx82WFyr?= =?us-ascii?Q?Sz9veZJXw1bhHPU2qzXjUu2IWUrVZd0p5NM25Nby5d3YaTZzI0Gf8bJ+75oC?= =?us-ascii?Q?gYa1ylMF7YD9by4h/Buz7MwakgpIUAigg/1TlrPmcmQmGqFDLA/U2yvfyUUN?= =?us-ascii?Q?gBO6WX+Oo8X+NEZUKnmvBHLQlmQnr21qDQqFp/j/7vqzdiIQe1k+eXe25J38?= =?us-ascii?Q?jyy3SJGFT38dibf4gbOGrwFRwn07eK18gxjuOdMYQo+CjrMd+JdQeEe7yxtk?= =?us-ascii?Q?Bnfw9O0RTqTaMi335WLhh1hoGcQtBeWNeT+haOqmGjzpJOx6QgaoUKB/uw4w?= =?us-ascii?Q?8gah+xkZ6j5LqpcGYKsaxrycRAcqqtJBDIUOw?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 6:f6bW38EdAAfdEgAqPDHz8C8FdcgyTl5DU3ArY6Xy?= =?us-ascii?Q?Aq3tWJIjJH9AuppNzXdIimDqanRxs8NrY8yo60h4Rf5McbpKRp8ph3U6e3rZ?= =?us-ascii?Q?0ToPmPBZ+bOCqkp4A/5pezLS8UGybdv1bUlpsgUeh3MFLAhrA8aWOgJvEErn?= =?us-ascii?Q?ryKzBt6ki8UN5Lz28tzNi5cSD4/Z34sZwTWLtlSKA38XXnkDuW7AikLDEwJb?= =?us-ascii?Q?eYXdrva9uE+M2xOAPS86Vzu5MGcMb5ODIg/60KYc75rH1uaYhcLjSxpC8NGL?= =?us-ascii?Q?xsgXR/JSXaQZSRdOc3iB06Hw6xd9ynkkNm6l9lyVTTuFi7rf60vxksjNN0W/?= =?us-ascii?Q?uG4md9PM/eUuJHqDzp5PVH92enwGMm/b2DOXNbaMassSIUAjoOQT9ySUZq9E?= =?us-ascii?Q?AYhrGAKLbf0dZs5gBX+kWzu+ZNYpgUABf0Awyb68oPaHeksKImb/hPzS3Iob?= =?us-ascii?Q?Cuzl/L2LQpmq4d38ABwBJ4WfJzUVknr7c8BPoZhc/8wvAkaUtlYZGp9CBphv?= =?us-ascii?Q?wtIBvalwzJNu9dciAmtmeTtsosMacBf71REcDzZYls2FEUocBgtHCQu2BY/3?= =?us-ascii?Q?O/I7WgeZIs4Ve3Zpr6vbFyCMa2Is5NSwnRLD66+fR0Iw2HBPFLLjk/Kuqa53?= =?us-ascii?Q?g+3VjnYCnzozSMf+l7tWAa9WCbxduZy8aO8Kap5t0flCwR3MnqgmW9MaaA+o?= =?us-ascii?Q?mnvIFbrb3Z3U714j4C+yBHiIbW39PANOhMDJ13ioju3Z2k6vPe0ECkAicumD?= =?us-ascii?Q?gim1jBZg34kMDwUMLlTD3CUvkXolawJtf2W6SGC7efwqNYYyl8D7oGf46lIu?= =?us-ascii?Q?qV8J/uGPK82+ANC0uQmou6yyhf0OAMS7pGQhybxlU1NZ4K42oyDM5bApAcK9?= =?us-ascii?Q?p3whbJsToq+4pW6HdRMWNSkNXTr60alPTwLc5fDrXjW02iCMQ8r/XINqrkwg?= =?us-ascii?Q?2tSpjnxki3cHySGdFwFEULAU2ea9GjrvzNmptfCNjJJW34xFnLqhAVyjRJYO?= =?us-ascii?Q?Qcc=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 5:skhwEo0pkC7SeNyU+NjO7pYlYAz9sXNNeRdRLLwW+weB2ZTCC6q5/qpqcd6LNMTi9zoOS4Lp4juLBCNTsAIozAs7GJqr+gAIRs16OUe6QAyxx9HE/F4dgSCVwEJIpDjmROcuMgO9FyV3WfTC+DF+iiJVjNl20nz7inKT84mzHv4zIVYAFsShSqrWdLwyJJFPdZ/wiexLZVkku8CfPBzcBlZ9MQ7tsHaDzQhpRkmPNQk3Tu4PhjWBNGlnB28FG5PDq8D/CzKr+JKiq1ZMLK1pOT1UsRQT+t5uJTjKiqVgvw2ULmqEsgELlsQorfQlJvr+my3pkIdmfbd2cSVBNc/DGznwK385ffNwfBR+HeHM8HiPrsFbNFt0kVzNlHmq15pUUfcQ8nHA5Btn0yRF6AxVsuVLiXZpwd+xd4Z1CVlYGxzhK4bPVmpUwpLzOghT8ccMYTUNpHcwlcoSiat+M7Cjgg9hQNh36qgG7j9tMog5cdBhOXMif1vBqYhd52fXrnIY; 24:/wCBXcjmBc7PH1Q0IPIsA08cFrjOtmUG7JPZxLTL3jQMxvkVBnfqBpRtcQQrkeQBu7vMvSi3/FVZ89lWshHU248DMWpob0qFlvdEYO7bUzk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 7:OJlG7B6gUKX/0vtG6+EBXhDdR2jyt8cj7Gj0MyNVqhJDeSB3bhVIkJc6THWL0zefETirr3NTnbEvJchTDExOxQINs4OMpbWeYKPb0iDcc6aGxRYKS9SMQPSZXi3GuRHsJAjP/LvuWdbcHWyxTM8WRfcMIepDv+E91wvLxFQuKW3hSO7xijr++DJraVAptQ61fwDasxxTDVNwmQQN177qNdVoJdRMQ/mh9f6RgRaqZCsq9zilYj2hyaMQUr3pReR51Fmw3WCWc1irEHywH1o2f9rsIsBBDAWl0ud2FaytXyBa36R7iXhPyjQI47yqsvap0eUhJlsoVPuZHhLKXZL02c7U1PXijBFqiZMXh75ondWF/T30op9U0pNTxQxEBLUKdSew5KwLvYKDFjEMHjvBgvggmGkHhVcIWF4CcXxkhqlUfG3U8DOdZo7M4prX+PwEK1aHMUuFZYqEK4w2Cz3b0cQ4BUP2+F5qOrfSX7QMc8bPf+Gt7OuUnl7V3Evrf7IUhau6TFTvD8aCQnnUckWayNqt8fk5/I9GZo2oQkx0HotzILo8rUF6H3khElN4eQOdZviA120rxApVV7MWCjTr5FYCy0dw0HSDoPvBs9BI1wi7MW4nYHaFJZGqHLYOnxBlbsi3oyZs0KPVcFWrph5BJzDHj38enyirWHyMJ9vlrH1ebQGfhrlmW0rSHbFkxapjC5cdi6CvrOVZIwqzThgTSuWvqlyNMkuyioP7XdmgYF5B+yG+z0zRBobCmU+Q10YVaRSdh52GjtLP6BhVUZTpgZGzlVEZGpmtSXw+Qqmyf+k= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 04:54:33.9143 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1714 Subject: [dpdk-dev] [PATCH v3 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: Tue, 04 Jul 2017 04:54:40 -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