From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0060.outbound.protection.outlook.com [104.47.40.60]) by dpdk.org (Postfix) with ESMTP id 067CB7D0B for ; Tue, 4 Jul 2017 06:55:11 +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=JURHihFfQtRf6iIcr8Z4kvV0uqOedDxgOr6BP4il5hw=; b=ABSynw9VSsRsOCYwxyWOteEaC+XLlTQe5T1Jh8CS76q4rSA8U9Mmo9FwrhrJg+muKvvJ+IZSNT1tj+aI0cB/AHdJEIj7I9Ph9kNaT6mKtDCR+FC4AsiunShvHSeuPUUk060NlsDjrGnjWa8q5PXXkc0R6H6rShmive1z11PlLzk= 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:55:06 +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:13 +0530 Message-Id: <20170704045329.24711-19-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: 1c79cf83-bbc8-484a-1421-08d4c298d8fc 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:dgpNBKuZK2uZin3NbGrCggmkc8bigQzF/nUunZgu3q+6afdB7rvFn+Qv3yBhJvfRZ9X+mgN33t8Om1qzp3AMtKeqBe+oFiBo3kOGMGhHkPt1Mon0oKe4WG+Tq8URrMaUMpbx3sCOWMgQwNMGlhD1SmXIZbQOflBu2qfnhjGp0mT8z1cHpQ7fQX/bFOEfKzDnfn7aYbIuNdmRqlzT3pakr2Isl1WV/wT2GsBicybAFZ/5xIfjEMwU97Rd3ztAuSv4mYmhtEbMkNdyPK8qQVPlxB61+c1GvECGj5vznm/0Tv1k9vvUfJXb7DzzPy3jgJ5wau2cNqClhwDTq22acU7DuQXO7VLugZKrDx0aDhUIxZ1I7Rwj811DT59reCLef+3YZS5R/7J67zKAQk54LzPAYI5fa6UGP29BLk1/a6BBb4uE1MOc6YeB6Y4huCiAwfngx/dgz8EVR58h5omfSFEBv1A5UP3RCGM9i6EWoAabwwPWIaeiM4olWgl/CwajWGTAqD0CuBIAFQTa6KX8jwcMfvIhZLqLtRRxqxzJVDNbq/qRg8MAdUu0VkLZmPnxl5QrOsTWA4zuCyQa0y5xPSt0j4MzP2LyxvtIvV8RL7HiEasllxkctCP/TypySFRlNz3oda3ZXROUqE7uEpOXPEoHjPf5RwAMdgMwd2w0V1hJn780lQEEcRLczrYf6kfRL2EEHxT0r6h6tuWbRKhRdrG2xgdWqhRHikQJ9PXDc7dgUu+V78EXg3JyQLiyqvVC/cLe X-MS-TrafficTypeDiagnostic: BLUPR0701MB1714: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 25:tu4wzrQYbuzM3jIIltivCS37t+1KYh9fcNJPXxs0HbvN6WCAm+cvxlJfqm1E6Edmq5ZWmy2LdwlQ370meqCdv7qsa8XHKsIHXrV+o4pdOqEdjhUIBZEZPkETbYXiFu1cW079RaMEn9cG/QrKvNjtMboMvirjgJevcLyNoDYjzoj3t6+/3vbtJNj2AHVZY4geRFRYcRcz6t8M2Bxu+NyG3AqHCV+Waro/A+adsoUyfhZoG+BLWfVhHzBa1tT5n9lNV88157OKk3fmtq5wIpoAbtOI3651W4Bj/v0NQmXl8A3DYIIlo3UPpVV5egtjlZkmLGlQxJJCYhaIMtumzwZs6QA8Bq1gKTh1q4YIep4B27C+SVZWsNXImWSSDPJOMTw2Dgzpzi/QJxybDmupu27nf/1hiKH6yaeIybW2YR1AoxbtpExmC0T7/qbsy+CQ010riaZtBKlRX10deuExagI4yUjaJ4J9XWGyCcgrqz9TKOk6s9e3lJMJFzYrYt8LWWh1Pyfqf9ofCfUyLqr+1H4y78Q30gQRcKwS4JJDbGTwVd3cf6u0C7xV/008drffd1XEQnjdWAoSPJbTtGZYdOCpbH9nUfZ1X9G18YprsIQiQpcyHY7xNJOk2io0kuXyhDeVPDuRP7PwbnF8toWjK9wEh/D43JGhvMlPhzz1qN9FwKeuZDanzYkUKLgk4Bh6epMO9/F+hKu+/QlKubcW8RLCcA2PQFxpYB/RML6mlYaN8oy83SWa6fP9qbbg0O0RZSQJJo0VU8ySrDiq96tGHn+NbLJBQLT3O+vRN2EZFIpFfaMnYMlx5VAiyTHClpqjljb8FQyNAB4rNg6pGKQT6yFvuP4KFnaqueAqWUPaU+Sz49Yh54P6OhJ2PYSqy13dX4T0/xZms6+vEIbnZ5Xvr8yAPXsAGmKIybMA7oFRArj2Q6Q= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 31:/Im+pqit0pqApCLv+tqAZOOK8nADKx9r+j46YS8qja/XQhGVg7g8l8ckR1aGvsd9erRHepuiWQU9zvSO1OFh2+mNfLjlwM7wIKhYEC7xqp8ReKN6Nb5hSZ3mA8xpDQr1FyvWns4MPruO0N8kixke6pYuRHhGDPJLAxXvaadI+dcHnF2Uy/KYwcYbkjZweRrlIkJqELbUuaOemWG4jwDw1dgsLa1ZOl+wdLGD2OmfI3dqdNMqYk7irhDltInyyyssDX5pyQCqvGALJzRbClX/agqvOkLfSwuc3nCaARSmsweL5iIjQfaNLNHF9XNSgv1TNaLWgK4FblMCD0ppdSJ70Z2kEk7s0Ph7E2zL/xLkhV6bOpXq4j6p9o78+JxINLsf7nFnPjJ6IH0cSniTQ6j8+BVOTCO4Q8wHcIReR3sXBd81OzEswY3APxJ1hb6enmqNrzc7yOeuaZLANMKlYMdQ9SiN5QhFzmGPL+LzvuiURMtma4WwH4+VlkKB5rVnvOYmw7CRDiKvFK41PLD3CuT1fv06LpdeKUmTvwvpHMPHpDoLrDvlVfYUKcVjHEU0vG9n/xps/JJQ6AevqYgDMf2xOBYUd3IMWIg+XaH4IFhvVJJPFSDjZOaNmHh+eMUmgH8UWGdDrHFRPl7qw0ZUmSJuulXlxGQMR0N9QtUmBKUMsy0= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 20:eAhmzFaBXLemJHUQkgUq+oaPTqaeePncfC2Zx/wdnwQ4e/oZj6dHe0ZvjUVa8vCKtqdBeY2jXw/5EqW6JaaQ19Hr3VG4y2v0mg6h4dsKCpyB1OAuUVgBNbgxRSv1Pm3N+A8axDB02rWQDASUNyFnNYCP6KghlTn2Dc24N/BCrWqPoQcgznvmRVkwPnABSjYgadSU1AnHKJtLy1mn9ArtfZOALl0+Pr/i2GK984IhLltn6MV239m8iNpoIOn80djVcXeeee7jlQ5yUK6IE5Q+9u74BE+EILsqnKhrPt77j3Bko7VUhf21HVDr0WCNoB7HjKJVMFI3hL2UUeYjOYXiptcJIAVGVPkMVun+PpxCH0xep35ZIEFAzqkAe7YKkC7/3s3yOh8o4uWaH1FR4o+/uauHM7e7EwNqIe1xewN6Q+SvO5vIwnI6iKTITRLi5bRc0C0i2C0Iz7Z40AElK5tNqsdkiIP0b0wvDfGa/HRCT7/ptQ7+5Yi7VwQMPQs1pVjuUe2/fm+8p1oTGY5YsUZqvGSrmkjeLbqfpsZ+oRdYCDoNtS50+f/tF2oJO4BOX41pFHVM8xDgSkhO2nPefdw4B3Jsz0wJ2ay4rY126MgYBgI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750)(158140799945019)(228905959029699)(247924648384137); 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:+W8FgGSffElzgf7Tfep+zvwy4jGOD5/lkVSwEJ2h?= =?us-ascii?Q?6DKZIQEEEv8+rx3NjOot1OpOMQLuu4tO+wm0s1e3r3OWrkEf3h2owgL8YZfY?= =?us-ascii?Q?ZQ0HE9aRt+tL2J2mAWz0f5PikE72WQqNP7bWzjV4vV4gPiAvjwuuAKtLz2Rx?= =?us-ascii?Q?XmkpvVdfuFvEaSl0inBnVhdYFGnatTrz+WsvTn94y4aJ0uFlUQFxRYg5EGGZ?= =?us-ascii?Q?HEmN7YGL803HqZ/V3S8Rrv0gNuLupGZ3gz+dn1vHIxC6uHpQiWmV6I62rqeH?= =?us-ascii?Q?EW/HQ5sUuPQDOyvIqbgRG6Kb97KYZM67d2Gx6gcH7tBOfNc69YLq75ruQa/m?= =?us-ascii?Q?qsMMFmEwaNpheNJ1cjoe0Iey1aw04fQ+o0c/iAZ+d9Ql/Dx93zB80UgN8RKz?= =?us-ascii?Q?OKMPX4XN8/bxSiOQC7kPYd+TzVTB1GB8qSG3R0vaTLS1fDT0NHp34Rtk1ldq?= =?us-ascii?Q?3voiSI9WxHwaNJi3otmZd9SHIJxIDfcAkrheS3ag2Hw3+Dy6c3S89LYPlAFo?= =?us-ascii?Q?M0jFLub5LALfK0quo95yfgBCLTTuwcxl75m7JkNmosyT5Z4sGXz226D6EFqG?= =?us-ascii?Q?7WaRNAYvPzN6ENYdjjFOex4kzPH5Twi0kClMJwsONSQi10vlpnTlpTHfjkEu?= =?us-ascii?Q?4bqXdyMc6amy2hMsk8OeIu4HltXYZBkf4Ta+Vlqt0wVd6xvzmhBGuJLLOW6/?= =?us-ascii?Q?agpdhwCpAeVFYVmWMenRqc5AdkLCdL+pMFg3iejiLFm+jnam3aXyCZm4lC3p?= =?us-ascii?Q?zU8BX6igxqruW2WNzfdz/QZ8ZqYLgzxpDpQIAsjgy6Fr1f4wT96om3ktNUh6?= =?us-ascii?Q?aJeHRIva25mMrf6xJtnw8V6HI4G/caTiNHNQtZ9Q0KDmQzCGSaYbpXswJ3Wd?= =?us-ascii?Q?Awvpb8GtiuooJHmThkwndMWZjcm6ptqAjJM/FVt8//aA9Ujk4XfbfGcGJdvl?= =?us-ascii?Q?+O98VD08fN4pZ8ibUR0+nhpwuPjD0Nl172i16R80ZGodrMpt8adkaGxPNqfa?= =?us-ascii?Q?VQzfOSExqtJV1WxKYFR18zkZ/VV0d1T8sjRsiRND31f66Rbcl/jsaLWTrIU5?= =?us-ascii?Q?oRtRZ4uRerSCZdzcerKpPkc8fMPZZv78WYsmLB/Cg8SgEnwGxjYIh4qz62ce?= =?us-ascii?Q?pUARarTlscMkhir3dK6l30MS7GZtMd1NGT2BmWOIQcd+/oxcLqTObpsEYGOI?= =?us-ascii?Q?TH6ACGpwamlQ6c84yzj145JbG16o7kAbJ4hrN9qutRNlV83Qe/K0HKnpV/kF?= =?us-ascii?Q?mjgHamx4PBKi1+YX9wdcOarqOqjpasJuNf0ixQIrQflNVO3v53gE0vTkKPhf?= =?us-ascii?Q?7ksQuldJ3mB+L7WbGj0I1jI=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)(6306002)(6486002)(8656002)(6506006)(33646002)(966005)(53936002)(25786009)(6116002)(6916009)(1076002)(5003940100001)(3846002)(42882006)(47776003)(2950100002)(478600001)(2906002)(6666003)(19273905006)(66066001)(8676002)(50226002)(48376002)(81166006)(7736002)(53376002)(110136004)(2361001)(2351001)(5009440100003)(189998001)(5660300001)(305945005)(72206003)(53416004)(50986999)(76176999)(50466002)(36756003)(562404015)(563064011); 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:9dfB7UMHTf5JnoK2B/Mnu8e/oAr3Rofsjhnou0X?= =?us-ascii?Q?V3HcsQxv9eMvPvQI51buSZxKmVavNPauST6jnNnCzJw76EoVAK2coLbuEbOf?= =?us-ascii?Q?aB3mBra0Z/dBCC2I4403QkE/+BqWVVMAYpUB3eekP4eu32bASYPuMTElF5br?= =?us-ascii?Q?j9pRygMhkHfjDtGAQjJBYDNNjhhI4U4LeD1IGZt9XNUIHCvWGlS6bpOoI10S?= =?us-ascii?Q?jRT+rGGKpt21SUdFtSC4bPIleIwM0owvk2AGxptBTKar6OJfF7N8Qw5Eomid?= =?us-ascii?Q?IqzdGiblG5mez21ySgFkTSZ+Vw7X+5PZT2iL3BTfH6UV/GfZRqL9nYd24sql?= =?us-ascii?Q?PiW+CLDAIMgE6KWL+GdHl8kxkppUmzVkIubBaLbT8bOpFOESqH1nZHZx3UbJ?= =?us-ascii?Q?3BDZWqqp3neGBrStA3GGevtyeDewKDzmm4iPmB60ovjoQAX8yCuXt306B5YD?= =?us-ascii?Q?P9BfL3VXEcDQTsaWg7warJ/QDVug36s7NgtlDANWLlvvAQ9RKwRu/sjHBrxv?= =?us-ascii?Q?42kdaG7vOXWNX6+VxAIGr6jTkjiLuPUHU0JSr4pLZKijZQCoNUQv+HqHBkMa?= =?us-ascii?Q?wPKKqYrENeb86wfyhwZYE6W+vmhGK8nYE2r4yjSupeSAFYbIlHMZqjZsXi/+?= =?us-ascii?Q?Gwjuos96HNn+R7luOFZHdPB29HGc2ZlYp6H7Vdz19UzhF/brQCeB5eIX5/kF?= =?us-ascii?Q?X3t8mHuxuxpxbVnABUiClcdUYBF7TEIQQhGHxbFVlYmitARdA+vjlrtPUZOE?= =?us-ascii?Q?099CICVQsUKczyJNayo6v9lttaktFhYd/c/YhiQVnlpRALsMarzE2a/p7pVZ?= =?us-ascii?Q?EAEASwvucYV27yenii8HrBsU2J7z+qHsEt/VU+LpSAtyrWrTzTE4zUvFZ9cy?= =?us-ascii?Q?GUFFoQrJPkx8Ui8ePErU51nGXbKAnwCgQz2f/cIGpptXvX7C7sLSBA2qV2/M?= =?us-ascii?Q?9HeehmfCCrKNpqdIssLsb37FD7UaaXJPtjnEzBvwLEDRkuKyrH/5RoIEZHvo?= =?us-ascii?Q?Ly/sDQo/CUvARktsaoKkpOvf8QwKRASqPfVwk07+Kt7Hy6NxqQXrK5yAT8PJ?= =?us-ascii?Q?M6C8drC8IH7rtUih4pYR3YGkATHDoeOoSer3nM/2v5CHjfiV0SWRLbCr9kyG?= =?us-ascii?Q?W80LwyHOoTeQOZju+Nqrc37wlRVPNZBNv4dRiSMTQn1gQ1XBddk2S91JMnJu?= =?us-ascii?Q?ZToZ4xlz6Gz7IzskEgHVzJURuJU1UPc8V5eurqI20ORH7XzMFaZjWlwkRrmh?= =?us-ascii?Q?4TEEeBf5u8prZszOM83CRj8eCA+/bjPkH64Qdtq38WhR1DkeP28aspPDCEvP?= =?us-ascii?Q?9TcwGoNFmZrO9R2LiFWL2h/Lx7XHaXxa9DKyHhq/RHggG?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1714; 6:5qP+hvJTRxfLcG3ZZKhp5/l48j7RDPdrtq1DnqwG?= =?us-ascii?Q?9hgoaCKTbWN/7jM0QTCJImJ0jeFgGS6liUDvX/cOHEBPbdEIhOEf29+GssLf?= =?us-ascii?Q?zhqyWAFJ2c6zf/OVDtKwScZPHag0LwxdadBmqBCs/+Ri6vr1p/C0JlJlQERR?= =?us-ascii?Q?0u+fioXTtXJYYZO1u+tT03q8VMbLVzHER60m+ACB4yP/MOangPjh34WGjJ+7?= =?us-ascii?Q?WeeTNCjI6IJqfTZTTFTj1FALzHUZvOhLkLW5/ZSIah/+hjLL4K2zlz1S+lBp?= =?us-ascii?Q?p7KVJNhR7vNggvNANx4R8eF9WcFV3//LVdBOavlK6UhVS/DYp3Lu4qUn4vBy?= =?us-ascii?Q?f/q9Y7A95Cc3AUfLRF6gN4qiYv2mtR84p0r8/YPyhxpZkVnENbL6GAMVFCeE?= =?us-ascii?Q?PQAcbrhMkV906qE9JsG3dDCUw90uGLqIWB5bFk6pG5bz2ziHUI9+PBHyi9rA?= =?us-ascii?Q?IDNTMOp22/8y1GMVdlVEugkUzNIRBAGlTmGbDyeyZM/iHVVnjKwH3G/D2/xE?= =?us-ascii?Q?1UCDcT7+NpIiCaHmefnj/w9hKYp19GR0BzpkjJWpr2kasrRzifmeSY2xYviu?= =?us-ascii?Q?aWLd2GonTR54ZW2nRYNVvcIloRYfyZEJF9UNhyvePdEqtIVHYj04Yj/yXBq8?= =?us-ascii?Q?H0SCsPSmaDggniBDamhy4mU4nwfvEnbgyd16UM2Cx+9HcF9BJ9CjnYBUo0/5?= =?us-ascii?Q?q/+iExBAI2apHp988gWWahAGShNmDxmjsYJNPe5p9OpKeQhiMtTx5/tLtLQt?= =?us-ascii?Q?gPaje3BoTmyTIlzXOWiFHaUzYku06bRSYCMvq76I7H/TZXXBpZXjjme4HOVy?= =?us-ascii?Q?+2OXaKdLGfwIw7X0e5zG+hgqcBmoft8nrEYRTL48u+ykcLeCKPjvbEbrNdTb?= =?us-ascii?Q?bSJZfABAB0s8sM8SShcDeeAvHUQnpFkS21JK5smo8hA3Ep5YTUXvzU1XdvMs?= =?us-ascii?Q?f6CmvOLHvmtxJywj3Mpojy3tczzEGRlwnzbYcBgQdOS44fxNZ3dKD7xSuKiH?= =?us-ascii?Q?xM0=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 5:8S/kYsi4u5Xo4xU0IrWl5GCo9bwPtuFddY28/81kjk4ayLBtGt+nC4VTdIImbdvX/DRWKQ9RDaGKpVDPbLyg/almSA9AsrKG/JuHEfFqzVvNO2eFq0lOKITNRT4Sn1wW4PNbrYD6Ga2RybtoyVxoYkKprf8nxQv+BW1WXrAJRR9IFllFUla1eQ1vp+8mR1m3AP7WNUABBCn3r99E1VnvC1up6LLDgmYauqV2bP4gUY04xzguq97ok/N9Fz19Wf+Bs38i0g16PHeJZQN5abXRI97nyBBySoFxK8UFSmaiGC0o7pAvlzVbZMkJmOfYdY/Gbs7Hj/yKPtu8z2F7mAA//Kk6to4uudOSrTPlGMRKmRhkMksrz5o773S0amUTF7BRIkfiLAsdDTCBSavZjzmJna5MThljNGAj7WQLSt3PC5UzZL9oa8tqFsPqmKj/qp7BCMlycs/mqQwoT3zw8ZVgK+q/P6BXSSZk8800zhQKuK9DzqgZOPaGKj40Zra7Kx7H; 24:UPIfoPZ2eIHzlBVIjX4Nsin0p1MoDGOsUhV5qJAcXUiaZTM0TMA/j0oTiRmvCXE5add5NQbZHlOMVQWqStO+lE04QXPK2KaOK74wu8Bbt2M= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1714; 7:GQXFY8fAHendv/iWeTbAz/6QNN7KxH1yveGlvvVyqcK5guESuYdBgW4EI/n/yF3AcMmylCDULavanBoKTAhZGsrPFh4hO/qCqXiC9oaA05mVZloVPwslgmPBn2nzpaST18Q0UYgPD++OVEAwpYV+nEvCm3S/sSwB8upLjrF9Zy+IBE65/aN2mkzf7BsYDxPsKGiRkE1MhYzpR3KdrQ9iP4+lnl9YSe0E7tGLWp4Dhmm1OkpmqKVNMkK3efXQUBps84UR571dFgt08zTE0igovEUP3yxRlV0HHoL6LG0sMaSPX0pZ4WdFVSY/wP/tVF7lyLwwRg2KT35sIedhujOs06QYyCsg5hXi0ZgNryIVdSee+4t3ULbhxAnQSz9cYeqMmT+ruIiWmGtKNRydHWZgGe0ODHgjinEfqoJTAN1SCrVEfosXiUBbnfEWGWN4vSdqpBLbLBPi4mNwtTn2SDtX8DsJ8Pb1zryJTTjCzjjAvkKwy/iPmBfd0aJRTASExVvoxLUebNe74Y6X2m0dO8UVxPtMWx7T4jXhwTIo0k+kDGCq33n3bxPI9QjvtSG4d2rO6HLB+qcnYt95ITYCPQphZb2gfwAt2WzoOldvL1hxudbsiN0v49fVnXjYdEgQlkVAI9pjVFCjhk0UQPNXuPLNiV+5C3u3QTlOq1vjjVE171om/rrBnCDWPC2n49QezTIg3+DIM5KPTrlrbzIp9yFe37sXDdA0PTKGGSkUmZwUUpLwh0qSJ5kCvHEP1QIO9GkNKaHRP7v13ZgBa+xW4MLMPc+mtPYzzkV5QNZN325WQyk= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 04:55:06.5790 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1714 Subject: [dpdk-dev] [PATCH v3 18/34] app/testeventdev: add order "all types queue" test 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:55:12 -0000 This test verifies the same aspects of order_queue test, The difference is the number of queues used, this test operates on a single "all types queue"(atq) instead of two different queues for ordered and atomic. Example command to run order all types queue test: sudo build/app/dpdk-test-eventdev --vdev=event_octeontx --\ --test=order_atq --plcores 1 --wlcores 2,3 Signed-off-by: Jerin Jacob Acked-by: Harry van Haaren --- app/test-eventdev/Makefile | 1 + app/test-eventdev/test_order_atq.c | 232 +++++++++++++++++++++++++++++++++++++ 2 files changed, 233 insertions(+) create mode 100644 app/test-eventdev/test_order_atq.c diff --git a/app/test-eventdev/Makefile b/app/test-eventdev/Makefile index 37c04c294..93c36e510 100644 --- a/app/test-eventdev/Makefile +++ b/app/test-eventdev/Makefile @@ -45,5 +45,6 @@ SRCS-y += parser.c SRCS-y += test_order_common.c SRCS-y += test_order_queue.c +SRCS-y += test_order_atq.c include $(RTE_SDK)/mk/rte.app.mk diff --git a/app/test-eventdev/test_order_atq.c b/app/test-eventdev/test_order_atq.c new file mode 100644 index 000000000..cbe1f8240 --- /dev/null +++ b/app/test-eventdev/test_order_atq.c @@ -0,0 +1,232 @@ +/* + * BSD LICENSE + * + * Copyright (C) Cavium 2017. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Cavium nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#include "test_order_common.h" + +/* See http://dpdk.org/doc/guides/tools/testeventdev.html for test details */ + +static inline __attribute__((always_inline)) void +order_atq_process_stage_0(struct rte_event *const ev) +{ + ev->sub_event_type = 1; /* move to stage 1 (atomic) on the same queue */ + ev->op = RTE_EVENT_OP_FORWARD; + ev->sched_type = RTE_SCHED_TYPE_ATOMIC; + ev->event_type = RTE_EVENT_TYPE_CPU; +} + +static int +order_atq_worker(void *arg) +{ + ORDER_WORKER_INIT; + struct rte_event ev; + + while (t->err == false) { + uint16_t event = rte_event_dequeue_burst(dev_id, port, + &ev, 1, 0); + if (!event) { + if (rte_atomic64_read(outstand_pkts) <= 0) + break; + rte_pause(); + continue; + } + + if (ev.sub_event_type == 0) { /* stage 0 from producer */ + order_atq_process_stage_0(&ev); + while (rte_event_enqueue_burst(dev_id, port, &ev, 1) + != 1) + rte_pause(); + } else if (ev.sub_event_type == 1) { /* stage 1 */ + order_process_stage_1(t, &ev, nb_flows, + expected_flow_seq, outstand_pkts); + } else { + order_process_stage_invalid(t, &ev); + } + } + return 0; +} + +static int +order_atq_worker_burst(void *arg) +{ + ORDER_WORKER_INIT; + struct rte_event ev[BURST_SIZE]; + uint16_t i; + + while (t->err == false) { + uint16_t const nb_rx = rte_event_dequeue_burst(dev_id, port, ev, + BURST_SIZE, 0); + + if (nb_rx == 0) { + if (rte_atomic64_read(outstand_pkts) <= 0) + break; + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + if (ev[i].sub_event_type == 0) { /*stage 0 */ + order_atq_process_stage_0(&ev[i]); + } else if (ev[i].sub_event_type == 1) { /* stage 1 */ + order_process_stage_1(t, &ev[i], nb_flows, + expected_flow_seq, outstand_pkts); + ev[i].op = RTE_EVENT_OP_RELEASE; + } else { + order_process_stage_invalid(t, &ev[i]); + } + } + + uint16_t enq; + + enq = rte_event_enqueue_burst(dev_id, port, ev, nb_rx); + while (enq < nb_rx) { + enq += rte_event_enqueue_burst(dev_id, port, + ev + enq, nb_rx - enq); + } + } + return 0; +} + +static int +worker_wrapper(void *arg) +{ + struct worker_data *w = arg; + const bool burst = evt_has_burst_mode(w->dev_id); + + if (burst) + return order_atq_worker_burst(arg); + else + return order_atq_worker(arg); +} + +static int +order_atq_launch_lcores(struct evt_test *test, struct evt_options *opt) +{ + return order_launch_lcores(test, opt, worker_wrapper); +} + +#define NB_QUEUES 1 +static int +order_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt) +{ + int ret; + + const uint8_t nb_workers = evt_nr_active_lcores(opt->wlcores); + /* number of active worker cores + 1 producer */ + const uint8_t nb_ports = nb_workers + 1; + + const struct rte_event_dev_config config = { + .nb_event_queues = NB_QUEUES,/* one all types queue */ + .nb_event_ports = nb_ports, + .nb_events_limit = 4096, + .nb_event_queue_flows = opt->nb_flows, + .nb_event_port_dequeue_depth = 128, + .nb_event_port_enqueue_depth = 128, + }; + + ret = rte_event_dev_configure(opt->dev_id, &config); + if (ret) { + evt_err("failed to configure eventdev %d", opt->dev_id); + return ret; + } + + /* q0 all types queue configuration */ + struct rte_event_queue_conf q0_conf = { + .priority = RTE_EVENT_DEV_PRIORITY_NORMAL, + .event_queue_cfg = RTE_EVENT_QUEUE_CFG_ALL_TYPES, + .nb_atomic_flows = opt->nb_flows, + .nb_atomic_order_sequences = opt->nb_flows, + }; + ret = rte_event_queue_setup(opt->dev_id, 0, &q0_conf); + if (ret) { + evt_err("failed to setup queue0 eventdev %d", opt->dev_id); + return ret; + } + + /* setup one port per worker, linking to all queues */ + ret = order_event_dev_port_setup(test, opt, nb_workers, NB_QUEUES); + if (ret) + return ret; + + ret = rte_event_dev_start(opt->dev_id); + if (ret) { + evt_err("failed to start eventdev %d", opt->dev_id); + return ret; + } + + return 0; +} + +static void +order_atq_opt_dump(struct evt_options *opt) +{ + order_opt_dump(opt); + evt_dump("nb_evdev_queues", "%d", NB_QUEUES); +} + +static bool +order_atq_capability_check(struct evt_options *opt) +{ + struct rte_event_dev_info dev_info; + + rte_event_dev_info_get(opt->dev_id, &dev_info); + if (dev_info.max_event_queues < NB_QUEUES || dev_info.max_event_ports < + order_nb_event_ports(opt)) { + evt_err("not enough eventdev queues=%d/%d or ports=%d/%d", + NB_QUEUES, dev_info.max_event_queues, + order_nb_event_ports(opt), dev_info.max_event_ports); + return false; + } + + if (!evt_has_all_types_queue(opt->dev_id)) + return false; + + return true; +} + +static const struct evt_test_ops order_atq = { + .cap_check = order_atq_capability_check, + .opt_check = order_opt_check, + .opt_dump = order_atq_opt_dump, + .test_setup = order_test_setup, + .mempool_setup = order_mempool_setup, + .eventdev_setup = order_atq_eventdev_setup, + .launch_lcores = order_atq_launch_lcores, + .eventdev_destroy = order_eventdev_destroy, + .mempool_destroy = order_mempool_destroy, + .test_result = order_test_result, + .test_destroy = order_test_destroy, +}; + +EVT_TEST_REGISTER(order_atq); -- 2.13.2