From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0088.outbound.protection.outlook.com [104.47.41.88]) by dpdk.org (Postfix) with ESMTP id 587BF5592 for ; Mon, 3 Jul 2017 21:16:20 +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=3KlWEyJ9e0E26WPTYsBsEdgbMNzNNeN58wLXQ8lZwFY=; b=gGry0k49pgOBcyNihlga41RTQ2e88+d034C07uZYD9+IZvZNztEb4LbalszcCjfNzlSI78TQIZlpC4SilyNYD3nnHlQ+JPZinToLXirPfoFJzzt8JUY6vinlo1lU8UDEXIW2HH3wPFYD+RZsBqbz0UNSzpmgXOLEiToNJRKLhHo= 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:16:15 +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:53 +0530 Message-Id: <20170703191402.3638-26-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: 4e51450d-4bde-470c-51b6-08d4c247fbf5 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:PIIB6rXk8aVs5K8DPSYzJ2+Xb8yvExfuQl9WYgqq0awt70TBLcPl/+U86X1ocVcrpab78TIlfkhbRkoHtCjKB1BgWEeQdeuyYlhNNZa3orkz3C4/qC4LM34d0ZoK21VoGJVbJwWAPN1kH0s+WhyVpwYswUdjdYLsiMgqZls+WwfWH1O8WTBnBvUjVxOHRDKKyjjFdAZiD+7u8xmWYwxiI86GSxKbQJ8LRz8X7qEoc1uWvQdXCPCZU466AWx8JQBbpjqph/oUjZYdmIz4TPOcMjRc9Oz2m/qLVVEgq+9Nl8yLgbD64ld5b573NpP12gR0KVjyGh+GwqD80dTwhdILNVFlsVK9kJRq9KVCKPSCrcTfPKjVat9V+U1WOBefZxVNFEzjc94nCRajz6WoT2nSAdB1swR32g1j2bRSaEC/HhsnRC2zidNoDQQv7We7NeA1hEXaSaxPSbB4YqULZlLAzUhO0kc+Dt+2/96KTONaVSfEY5wVS6GhxjCiWr7c36D3p71lAJBWBRExhiJ6pwVSReO9Z0rSyByTOV7uTRyHZXF8yDzc34TLvxNo6/xWg+41PGdzq28IqEDjwKMZLFrf8CPU4NVkYH7AT6tMMeJyUAzZiVdBxe85ESSQlDkif2vkvThkX5gkhfmiOCHqdW0LcgDqN3tit4+nGq92JPFFwfVT4u76tXq0uWuWrU1sOQiX6K5Wg8MBOV1KKlxoxcxuw90sybbGFDmMSV3rs5/n8A3kqiysEeTFUh891E01uH8c X-MS-TrafficTypeDiagnostic: BLUPR0701MB1716: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 25:VSyego2v2hj9n4V02jb0yC4zQV3+BuKw4ml5GH8UrJHHeA8YJk/nZxBwSep7mDgeJI4dlmzRl4v++IZVExXb7mT8dBdU7VDsJd8e3ohG9CvqiiwK3stKQzOzyK6z9dtgyX2oC+nhzsY5p1B6P2APjAlf4gPW9C3P1ByX5z9vI7XA4d+F52Nt+SzAI/EqjYSnEDqPS/TINNZQoN3vMvJbaQAD+dfnJEcCKeRIAvCaW5JE5zV77y2YMfkdDypdHygBWzHVUPUg0RhBLCbdwmRTn4IrN8pL99vQhCrPOjMVk5QNs7koCfFz8YenghbF7enwHWdAq3ce4hh2UQzq4uu/jk/wo54Q/m4QNd1Jztt7FZXD/ETWpm0q57Ht0+E12oSWEU3f9ppBRPtgBb/aq1hOVjN325BfLCYkAZmDoCSEn3j4ISiLC3Vjd2xxUEbRLIyCB8dYyox9MPPaI/HrPdmd6hNRMJUP/D++HQQ+DABZysLya2LqtlAPucdWx0OZ4LCXuzrDZa8laprtw9DUmrmi7YWrEiU34f77/x3UO7DdsvMxqPY9rwygK/5q6/MX1WvHwbqJZnRd0wXbN7YvvEXqTL0qgZaM9N9/bmjIST99GNsH1D+SQW+8jgM4URWeTuOfsS06E2pv3ce9fIZlFgclFcfHn8v41d9+MiGMhxwU44Pc2HI4yV/jwNpp7jGzZXmsfGGmUoN8S/PSBn6G1y7vMPjYO8evS8nkSbyzvuUENoMXtWr14+kkRHzZtKGetRzXk2JbNVc9OKrfODTyDBgi9aMcRefq26gn+TBR2u0ceK3RmUU2ZGM/qiXgrwukzrybQq9R7mCPGI9JVUvANFbfRQarNSZO/4oJK52DCs7leqK8iejHiA3jctKnLpsa5OrT0BIdRnoqmwj/WWoOBkriGM9ixxi4gSXDR9RDU18yhQY= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 31:SY/IQvMqViXKxbQueX+kdrPB0s/IfgAmAkwWLGaYrvvZvCBz+YGHyx6ANFnhmE0My1Jm1Cq2x6eaU7ri3XNaO/r/VeCEPerpRTewtn4Ztgj3etEwCgN23lp+eoad98JPuarQRHZBum9ZE9RDoS/0U2uaOVdjLc3DSNq4hLrNMnpM6B++CHnMo1gMRscatPitsruldwwGPo82xnpr4sMzm54+FFhLcdJqa33zDUA8YMZfWUIi5Wz+jqVU76m5lxZvqp4nRYrInqeKj21oWvy2SdwM8Ne6WBYb/azO4n4NKHhittmY4875Q53klU9qse2mYTADdARvTS65Uo5afNOZz8xKz2+bTna0WQUHTAK38urS1xWW4nI6V3J6ZJ7EPb1b4LDub7fKMpJHzZKlGLxYVv9K2GSGdcNrqMu9EyGAH48/nNuoq1YYDgguUgbWdpy//ras1GCFBLtmO7+8uKpsWgeKZbELuUJ3OBFTDQcAmcz/YFetkNdp9lLNSL60lFy6P9WZdD/VzZWSbGYkPvsYDVK6tpjbFP/0d0g+nzP8aPKskSOvr/FEB1zdlFoN0oZSJIf6vXSdUIxAGwpQkuTYMuc1HWMrfDzZR51rExNKgYXkKqE1AXhvlgMx1AdPpu+tR8W5eri7i2DUIhIZbZ7k46EGF3l3P7Xl2T1TNf3y9cA= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 20:s9LtEy8b3lNOoyE2tXv2aLP0vE1YeT9XYHx52rtoR3UtIudpR15mAX3Trp34X9czjXBJUcJZzdPDNgleWP5daaJmEaHvu7/WBq0rYYRI39p5VyYRXDiwnjtlLfAkYmjhfD6hf21R+aB5Dp+zia9UlLqkR7dKIrEXD9VtzzVq0BbAD2TgLkQfGUC/7V/hZz6QFMtOmhYGrtdkoFnh2f4+Lu1oHMigQ5Xmj2U3MwLxCfQzHhttbVPtls6LHscUbK7JAe5Kv045HoWxtfvqf+7jd22eRZiOHGHIKJurLTH7Ftcl9X0CdgkZU753gtu26Gvzvy2fiMhMQrxNdbxy32TL+QwsZXM4jN+tdpHBDM3Apczwi2/579wl3VRYtYJwanzKO4P+ejs12F9lBHH6Py28bKTlAedn5pRQQ4DW1Qunuz7maPQ2HDtAGOgyVHTfvki5g8mGbE2QDncS+mK2nV/Rrzyz6eoudikwyjCp3qGi2QEKyvalEClNWSwz+cYl/0eKovHpJQ+Xt0SlXwKsts5+SK04T0TQY+hkYUOGM9EAi2I+jfUkLHKBaFPBj2vGSBVkOZ4rVSpat2FBEI9Y2zHXEJSW02MPNEOAbrewoXqp7yE= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(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:yQvY3Oc4aufK5V70eMWnIt1NpTZYw4Avr3qu1jnq?= =?us-ascii?Q?tDjp9qItOwbz5gHOhUvJCmihUcQazbL2HHHPED5io/VOmzktLDIbqgjlvCyB?= =?us-ascii?Q?4fHpiBdbIu1A3GvCkpxGjlFIlglR8Tq14v8S6lQQCHSirq5vKe35mJHfaMoo?= =?us-ascii?Q?9Zv6DJQBU+HErayPcWhqr5/DR1XgMYL4H8TB/KyKjaSq1ac6mlZkO5FHgAaW?= =?us-ascii?Q?78+H+adI9G+FTSR5rqacoytcKHpZJnaw7cYfzMnBYAud0qfhrBhrLbl5S+3O?= =?us-ascii?Q?Xth1z8iqHzWJlspajXPQrErB1oH94wN8yHD/UoGH4PfI7fgBp/VMqa+l3xQ2?= =?us-ascii?Q?BjnQTudo4MdsQyWms+lnJo2T3C2Z6lMeJL2IWNztEVeoYtRUxQSFHIvlScyJ?= =?us-ascii?Q?DIoHNxa4ASSdRGASWQPuYPsEmWFo254z6NTbXYIdgWOn4GSCuk59qLieBTdO?= =?us-ascii?Q?NSTyPbt3vP7di+9yUCGI3u6byutCpyfa594VkalgGyiX2o6SYwHd87wCHTag?= =?us-ascii?Q?x7zl5t2jgz96NjKAl+TGB0BS4u5YjQ23fo8lLuOUKkyc19AdCD3hdNqQk9Gt?= =?us-ascii?Q?mebO8eQo8U3//Qrl9n8VqDEuUgj9ISsToiZf7n+zTDkIL7zJhrzSofO13Mks?= =?us-ascii?Q?fkSYdXh8bWb3/yKiH0j+XLHtyGRSiKt7Pu+6IMgcW3Oj6GtGkSnKzewaaFiJ?= =?us-ascii?Q?SA6EY9evjmLcC93Seb+Z8l9K77yNxZuw59FfsBFnP3I/rqx/804A+ogpon7r?= =?us-ascii?Q?KpjqTIcSJmizNxCYUgZaz3cJZr4XTXKPqofvRkiLo7HAqcqq4EIsYLrltOz2?= =?us-ascii?Q?Abw8PcVBKbc7FaW+kcjiBhr0lTGolVtDHsaXZUFFkjA+A8+VTT2c6eT7I2Nw?= =?us-ascii?Q?MTyPHSi4qNRk3voiEgiBSfAhjCI8XISpqgZnrcplWHWYwmKvlZDAY/YPDP/o?= =?us-ascii?Q?4J+p4V24hwTEvWk4w193n+EssUEinFxKB2ijUnkMFrIv17lDwyLh58M/f1lJ?= =?us-ascii?Q?vXwMovxXTuwYwmI0eTpBx348a6ZNZXtAD7Gu27eWPMjSYsuDpBPDfeAIIl7g?= =?us-ascii?Q?HmfebFmIOXWRHzL0TxURNSxVWZH2YDNjw6AFsQOMz5cDmADm/m66oacOYkYq?= =?us-ascii?Q?Cym7lla3Vu/w/NoGkI4qVdz3ehFv8IfLnOhuQ5+U639lB22T3iVEtQ=3D=3D?= X-Forefront-PRVS: 035748864E X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39850400002)(39840400002)(39400400002)(39410400002)(39450400003)(7736002)(478600001)(575784001)(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:5L0BnuVH2pLsZ1ynQ0HswhGkzN67w4HBSV4OzhJ?= =?us-ascii?Q?aMxT4YRJQFVP5vrT4rHzJ3GXUU+/zR7UBHGKNlQMGh8wNYOL2VFTG+Y31PNY?= =?us-ascii?Q?6vU++Rnwhq4XScAVXmh2N19vXtlgVlbQlBbaECe0ULW/JJunl550umEvhuB9?= =?us-ascii?Q?Ke1Ub68JCBG8VzleDCdJZZ12W04F2GKmxA1LLw1vUo3s4tCw09LkND75ndLg?= =?us-ascii?Q?QQKnwNIntw0+PIC7DRbvy10tcDUiT8pnL8z/viNSFL0TgRC+QIa5aqGrQw4f?= =?us-ascii?Q?FwqlWBe4RtIDTKEnYR9IPtPtMfK/6kYiRf0YETjxmO35WuRdKqTsPKg0rqmG?= =?us-ascii?Q?zNnZcp61R5zAHcpGbkugiPhhgqoExeVoZJDUM7xRP35rg1sCYlFOdom+0ksg?= =?us-ascii?Q?YcHTm/176olwer6TjGsckkDScvtPYkZqkkDxQUYbNe3QDcyWh1tllNlLBocN?= =?us-ascii?Q?KDixDitSV3gNk7+YwVfxnLy1+/RClfnYeFDo27126BNq+9vid7sjSYDpzGl2?= =?us-ascii?Q?2yYtI5mvrtQ4OZZaYIVaggX8eOXojKMIetOD8/633btbSfXaaWakbcA9VHHt?= =?us-ascii?Q?Clm5WHvZBoto1WxuwilTrTzRQP+PmCVC8cT7Jt7+YunR79qQeHqN7ZrYHf9y?= =?us-ascii?Q?MygcJmhW8QXCpDegoVP6LsGqLxtm7fCmnguRuHjrjMpblpPRgo0lSl5pwFq2?= =?us-ascii?Q?Wo56ccd9oov4NMeTJ2WJoYTEci61uCjugNMpyVY4K0upc8KBrwwM8vhMDNiu?= =?us-ascii?Q?ikoI4SCFSS98Q3zjczUGIH6S5nURXjuz5rKROt1nqP7oBJt9H7Q1F+L4TYZ2?= =?us-ascii?Q?QnhSXxT/bWKH8vVSzMin3M1NqOMoi0wWZgN7yaXe7sJA4zTFK30v8jdqXHDW?= =?us-ascii?Q?ZXjK9ycMSDuH8XhIfhruI/sEjg8CiVrnxlzRmcdsOHBqCqCdm1LwwqrPyhDf?= =?us-ascii?Q?Xwv8oIEq6XycAA/qrArgw/4Fxy+F5odjqNeubGQwPi9mkqyhffEn7h58WfCD?= =?us-ascii?Q?0jFqgMPpzeZ7cDUKImceS1wRhFF9o32PrsUpvgoWbcsQA99VtBNjHQGBO+1s?= =?us-ascii?Q?YtP46u9IWq4niE8KU2ijzJtq03914dhmV3GoK+EPKN5EkHnwgcfvsSygkoPX?= =?us-ascii?Q?h8fYr2v4PDG9s5uLggF8d8THCKeawx0MlI/x2duOy0ZvIyIHb+MkjEi9ErHk?= =?us-ascii?Q?ERtjkt6PhACZh4kc=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1716; 6:CFtxjXKz+HPjloJeo3hmqkBtwbnyIqFvQfvSoTg1?= =?us-ascii?Q?Mf4eI6m9iRMUiflHfezA5K2ptLl36zH90thQs0yZM875KpzXTTX8VLDl46Ss?= =?us-ascii?Q?YA8R3WqOCsMLlM0bHmNHHXdAnaC456cHpR76Hvbb+UuURawTs4bWxWP0Z/6t?= =?us-ascii?Q?qx3turySKX4bvbDjaFL81bt8w33jzAPh+agfDiUU2vkLzk1cP3X23L3ljWeT?= =?us-ascii?Q?8ONnY1HgIIljTt+NALyxtzSPL7/ts2dLlfw7w554416v6KMJLJJdDiYS++qJ?= =?us-ascii?Q?BRaJb7hnzgV9nQiaMhFk/oD39J7PGtwOVtYGnen28teudycDnm/y4MWjZCe5?= =?us-ascii?Q?0Z9ETT71AEPbfiNne5MpNTshVDPjOtKqyv/pHuzJLwWEagCdhTcx3SCgzHfC?= =?us-ascii?Q?aMK/gh6TFGdoteAvP8Kxfko0FM8dSDsrKLV20eaQufRo4Pqk/HZUVTwIAoPu?= =?us-ascii?Q?WoCvsnqCw+DrTMS6Yn3iFvOKnymJuTFtGocLN7Ff9SjD5CSWKW8C7O+LXl9P?= =?us-ascii?Q?PvPCP+rqpDNTld74zSmi24MYOJQECWcW6z6HEpRNJ0tsKSbhqA9qIZokCvnp?= =?us-ascii?Q?pH0BFlUV3lc1CDwM45nQnt5qDZD4UIc6xb/2/C4SN88hR9WQpJBDr103BDHr?= =?us-ascii?Q?7Iy96SBujsxp+bYRMPd2Vq2p5QuXRjycEVMLBazO16cKUT+LuZhoRiZdUdr3?= =?us-ascii?Q?iAteAdPboDRJfXMdT2vWs8hpkBsTdJtUlnMRa0uK743i2zUIFa4beio4aJNW?= =?us-ascii?Q?V4y9OGB7Y04SIU6t21FkHYjpxhsixoyguh2ypI81FuHw6ax3NhndzHYRCm03?= =?us-ascii?Q?KsJX3wBUDBvaREAjvmu/LCxYem41fEvudKnWe18m7Z7/B/1KZO9BxHCZaWL7?= =?us-ascii?Q?468mvS0+oD5ApWQuO1laePlAFc5ZzzQ3bQo8Azfr72YtpsqIU6JgGvrD1Qpq?= =?us-ascii?Q?gnEI7D77XPzPz3RthIJEySGLMwMNPmAnAgm12PQN55zL1a24x1K7i2cDdDTJ?= =?us-ascii?Q?+cA=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 5:FDVl7KcJbAkCfmZ1t5bSclD02zInG/yi65N6eGmqjzUXdg67ZIYk4Ju7v+mI9BoSx87okrw27OGrXxedOSEwVcnbLYtV5v4ZHLBuEJPDXqO/gkKjMIhEnwvSstxeDJX1dpLE+ZK5HPuDoK1ITw0sB1iVc8Nx08pEldVFRTwFYMUc7u21ZfYJ2cMnWRz5cegVmyi2tmIPrUV4abLjUEfoC9qRhpHJAFV4ACg2QRXA/ve6UUg/C5Mxanh0Ca6G5Nbd8bVCgqR3bDOobLYekPynovy6R50lO0cNVDb/BwhICpp6NCyICIfbfw/PLEIYWel5O8es2cElAhQGMMaacLPPdaoEGJzEYwAsqYrAICN2IagaKWr+Add+UCYtcxB2c+0rVudFFSTFsoksGYgsNtgSNDV29UJE3ocOGSMeQEXt0oxxtcAYUAmWvrA1byXUn0/OAnaOZTLsulJZHbemLdgMQeZ+OHqoC71SyYAwpcdcSGzbUspAckD/4g3NtcKYWmcw; 24:vx7VpEGenjqqS6oVuktYqbibfIgq3YFCCRXkw7Bgl6kB59tr5240liGu6u+pVHi9C9QAH+boCwVsxjR2t3Es506aa5nRd762HZtEZu64CNg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1716; 7:7qqPwkMJE15oTKIrLRZeUaY81aH1P0zwP5p4/jq6kdvLwYMboApPpmWHqN3qtC7y69PTPlmOy9sRojPLhy0vMtKLuCaHsDSq2XQOvaT6dxnXGAs2QuHVWgGldD16pPgPosphqyQDMgGZfXJtWkLegraNBfK82yv4ll3nJMU1IlmMPVSLXfIHMJX9usMcYsVNs/BeO+zhi3IJHSegU3aHvu5L1EGvi48F1/zEtvKNiFh/mSkc5tMTK3Z3aFPcsTQDis1OYF6dMv8CbEL45QnisceldaafsoqkInlKd+ZyLlgG0F4hfVdPoVoRcxRAWgYiXY8NYVMisKnCMbeiGyz91aBvM//xNnYlc7VbQz5kdwxNDcgtdMRtFVwmYNAVC+BRd4mCcGIWJuMOfrQoTDQLOB/t5bdBbooTafL+O5hYFj/osN/WPJARLGj/2wemd1WABjlqJWuJ9Cx+M6WUDpUSPCEqg9DmXG+wiOCE39D4DvbQ9oEJ98g/i6SnFs0ogR9NdgzcpWFWVo9MUdT2WWmhJE4cgAlFjER1c7NlkQM3qHPOy+VAa6Implkwsccv862MUaDvIAw1sTtgO4iWFRw6W8YX3u4+ba8mOGTQk75q7aqMpEfqT69zYPuzMvJ70CC2AvSnffhk6KTx46+phYeFs0IXpGB2nky4eKBYXU9Xl0GDHpnWEC2SmdKQwKxJUhv4wqjT+74eEcMpaUHSy604hGSs6Vuk8VDkAP1RuHumkALtJK3b7CKUkJ24QuKlQahCAXLWs3HGF6WeiXTICwLbQhg94rbmAcxdStPoLtRQ+gs= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Jul 2017 19:16:15.7018 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1716 Subject: [dpdk-dev] [PATCH v2 25/34] app/testeventdev: perf queue: add worker functions 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:16:21 -0000 Signed-off-by: Jerin Jacob Acked-by: Harry van Haaren --- app/test-eventdev/test_perf_common.h | 60 ++++++++++++++++ app/test-eventdev/test_perf_queue.c | 136 +++++++++++++++++++++++++++++++++++ 2 files changed, 196 insertions(+) diff --git a/app/test-eventdev/test_perf_common.h b/app/test-eventdev/test_perf_common.h index f8246953a..9888e5078 100644 --- a/app/test-eventdev/test_perf_common.h +++ b/app/test-eventdev/test_perf_common.h @@ -86,6 +86,66 @@ struct perf_elt { uint64_t timestamp; } __rte_cache_aligned; +#define BURST_SIZE 16 + +#define PERF_WORKER_INIT\ + struct worker_data *w = arg;\ + struct test_perf *t = w->t;\ + struct evt_options *opt = t->opt;\ + const uint8_t dev = w->dev_id;\ + const uint8_t port = w->port_id;\ + uint8_t *const sched_type_list = &t->sched_type_list[0];\ + struct rte_mempool *const pool = t->pool;\ + const uint8_t nb_stages = t->opt->nb_stages;\ + const uint8_t laststage = nb_stages - 1;\ + uint8_t cnt = 0;\ + void *bufs[16] __rte_cache_aligned;\ + int const sz = RTE_DIM(bufs);\ + if (opt->verbose_level > 1)\ + printf("%s(): lcore %d dev_id %d port=%d\n", __func__,\ + rte_lcore_id(), dev, port) + +static inline __attribute__((always_inline)) int +perf_process_last_stage(struct rte_mempool *const pool, + struct rte_event *const ev, struct worker_data *const w, + void *bufs[], int const buf_sz, uint8_t count) +{ + bufs[count++] = ev->event_ptr; + w->processed_pkts++; + rte_smp_wmb(); + + if (unlikely(count == buf_sz)) { + count = 0; + rte_mempool_put_bulk(pool, bufs, buf_sz); + } + return count; +} + +static inline __attribute__((always_inline)) uint8_t +perf_process_last_stage_latency(struct rte_mempool *const pool, + struct rte_event *const ev, struct worker_data *const w, + void *bufs[], int const buf_sz, uint8_t count) +{ + uint64_t latency; + struct perf_elt *const m = ev->event_ptr; + + bufs[count++] = ev->event_ptr; + w->processed_pkts++; + + if (unlikely(count == buf_sz)) { + count = 0; + latency = rte_get_timer_cycles() - m->timestamp; + rte_mempool_put_bulk(pool, bufs, buf_sz); + } else { + latency = rte_get_timer_cycles() - m->timestamp; + } + + w->latency += latency; + rte_smp_wmb(); + return count; +} + + static inline int perf_nb_event_ports(struct evt_options *opt) { diff --git a/app/test-eventdev/test_perf_queue.c b/app/test-eventdev/test_perf_queue.c index 1ac823109..323d15f0e 100644 --- a/app/test-eventdev/test_perf_queue.c +++ b/app/test-eventdev/test_perf_queue.c @@ -41,6 +41,141 @@ perf_queue_nb_event_queues(struct evt_options *opt) return evt_nr_active_lcores(opt->plcores) * opt->nb_stages; } +static inline __attribute__((always_inline)) void +mark_fwd_latency(struct rte_event *const ev, + const uint8_t nb_stages) +{ + if (unlikely((ev->queue_id % nb_stages) == 0)) { + struct perf_elt *const m = ev->event_ptr; + + m->timestamp = rte_get_timer_cycles(); + } +} + +static inline __attribute__((always_inline)) void +fwd_event(struct rte_event *const ev, uint8_t *const sched_type_list, + const uint8_t nb_stages) +{ + ev->queue_id++; + ev->sched_type = sched_type_list[ev->queue_id % nb_stages]; + ev->op = RTE_EVENT_OP_FORWARD; + ev->event_type = RTE_EVENT_TYPE_CPU; +} + +static int +perf_queue_worker(void *arg, const int enable_fwd_latency) +{ + PERF_WORKER_INIT; + struct rte_event ev; + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (!event) { + rte_pause(); + continue; + } + if (enable_fwd_latency) + /* first q in pipeline, mark timestamp to compute fwd latency */ + mark_fwd_latency(&ev, nb_stages); + + /* last stage in pipeline */ + if (unlikely((ev.queue_id % nb_stages) == laststage)) { + if (enable_fwd_latency) + cnt = perf_process_last_stage_latency(pool, + &ev, w, bufs, sz, cnt); + else + cnt = perf_process_last_stage(pool, + &ev, w, bufs, sz, cnt); + } else { + fwd_event(&ev, sched_type_list, nb_stages); + while (rte_event_enqueue_burst(dev, port, &ev, 1) != 1) + rte_pause(); + } + } + return 0; +} + +static int +perf_queue_worker_burst(void *arg, const int enable_fwd_latency) +{ + PERF_WORKER_INIT; + uint16_t i; + /* +1 to avoid prefetch out of array check */ + struct rte_event ev[BURST_SIZE + 1]; + + while (t->done == false) { + uint16_t const nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + if (enable_fwd_latency) { + rte_prefetch0(ev[i+1].event_ptr); + /* first queue in pipeline. + * mark time stamp to compute fwd latency + */ + mark_fwd_latency(&ev[i], nb_stages); + } + /* last stage in pipeline */ + if (unlikely((ev[i].queue_id % nb_stages) == + laststage)) { + if (enable_fwd_latency) + cnt = perf_process_last_stage_latency( + pool, &ev[i], w, bufs, sz, cnt); + else + cnt = perf_process_last_stage(pool, + &ev[i], w, bufs, sz, cnt); + + ev[i].op = RTE_EVENT_OP_RELEASE; + } else { + fwd_event(&ev[i], sched_type_list, nb_stages); + } + } + + uint16_t enq; + + enq = rte_event_enqueue_burst(dev, port, ev, nb_rx); + while (enq < nb_rx) { + enq += rte_event_enqueue_burst(dev, port, + ev + enq, nb_rx - enq); + } + } + return 0; +} + +static int +worker_wrapper(void *arg) +{ + struct worker_data *w = arg; + struct evt_options *opt = w->t->opt; + + const bool burst = evt_has_burst_mode(w->dev_id); + const int fwd_latency = opt->fwd_latency; + + /* allow compiler to optimize */ + if (!burst && !fwd_latency) + return perf_queue_worker(arg, 0); + else if (!burst && fwd_latency) + return perf_queue_worker(arg, 1); + else if (burst && !fwd_latency) + return perf_queue_worker_burst(arg, 0); + else if (burst && fwd_latency) + return perf_queue_worker_burst(arg, 1); + + rte_panic("invalid worker\n"); +} + +static int +perf_queue_launch_lcores(struct evt_test *test, struct evt_options *opt) +{ + return perf_launch_lcores(test, opt, worker_wrapper); +} + static int perf_queue_eventdev_setup(struct evt_test *test, struct evt_options *opt) { @@ -143,6 +278,7 @@ static const struct evt_test_ops perf_queue = { .test_setup = perf_test_setup, .mempool_setup = perf_mempool_setup, .eventdev_setup = perf_queue_eventdev_setup, + .launch_lcores = perf_queue_launch_lcores, .eventdev_destroy = perf_eventdev_destroy, .mempool_destroy = perf_mempool_destroy, .test_result = perf_test_result, -- 2.13.2