From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <nipun.gupta@nxp.com>
Received: from NAM01-SN1-obe.outbound.protection.outlook.com
 (mail-sn1nam01on0045.outbound.protection.outlook.com [104.47.32.45])
 by dpdk.org (Postfix) with ESMTP id 7D5055689
 for <dev@dpdk.org>; Fri, 30 Jun 2017 10:55:48 +0200 (CEST)
Received: from DM5PR03CA0043.namprd03.prod.outlook.com (10.174.189.160) by
 BY2PR0301MB0599.namprd03.prod.outlook.com (10.160.125.21) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1220.11; Fri, 30 Jun 2017 08:55:46 +0000
Received: from BY2FFO11FD037.protection.gbl (2a01:111:f400:7c0c::103) by
 DM5PR03CA0043.outlook.office365.com (2603:10b6:4:3b::32) with Microsoft SMTP
 Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id
 15.1.1178.14 via Frontend Transport; Fri, 30 Jun 2017 08:55:46 +0000
Authentication-Results: spf=fail (sender IP is 192.88.168.50)
 smtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)
 header.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;
Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not
 designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; 
 client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;
Received: from tx30smr01.am.freescale.net (192.88.168.50) by
 BY2FFO11FD037.mail.protection.outlook.com (10.1.14.222) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9
 via Frontend Transport; Fri, 30 Jun 2017 08:55:46 +0000
Received: from b27504-OptiPlex-790.ap.freescale.net
 (b27504-OptiPlex-790.ap.freescale.net [10.232.132.60])
 by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v5U8sfKD032271;
 Fri, 30 Jun 2017 01:55:42 -0700
From: Nipun Gupta <nipun.gupta@nxp.com>
To: <dev@dpdk.org>
CC: <hemant.agrawal@nxp.com>, <jerin.jacob@caviumnetworks.com>,
 <harry.van.haaren@intel.com>, <bruce.richardson@intel.com>,
 <gage.eads@intel.com>, <shreyansh.jain@nxp.com>, Nipun Gupta
 <nipun.gupta@nxp.com>
Date: Fri, 30 Jun 2017 14:24:33 +0530
Message-ID: <1498812875-6945-20-git-send-email-nipun.gupta@nxp.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1498812875-6945-1-git-send-email-nipun.gupta@nxp.com>
References: <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com>
 <1498812875-6945-1-git-send-email-nipun.gupta@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131432865463811923;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(6009001)(336005)(39860400002)(39380400002)(39400400002)(39450400003)(39840400002)(39850400002)(39410400002)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(9170700003)(498600001)(6666003)(54906002)(81166006)(356003)(86362001)(104016004)(76176999)(50986999)(8656002)(110136004)(105606002)(53936002)(551934003)(8676002)(47776003)(48376002)(50466002)(2351001)(50226002)(106466001)(38730400002)(36756003)(5003940100001)(189998001)(77096006)(33646002)(85426001)(305945005)(4326008)(2906002)(5660300001)(6916009)(8936002)(2950100002);
 DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0301MB0599; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; 
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2FFO11FD037;
 1:WNZJ2X13o5e67FYiB/1l0tQoxJbv/4P8BTL3Lzghgq?=
 =?us-ascii?Q?WgMx68Biq6vJKrtyGF6FeczwbzeFM2eeuG5y4RQU+EUAGj2DcVT5IKaIXBqj?=
 =?us-ascii?Q?tMZZUgF8MZQbDVu89SJEiC6rzlGB0Q7akOh9cKFzfbe0WQbJDAU7YWfhCrV/?=
 =?us-ascii?Q?Nu4B6Rd0MgiCukiRjHlt8GljwgRXMQ1by1VtXYgvUP8rFOE6eNPYp0IbKQV8?=
 =?us-ascii?Q?uFfAEse5jlMklvusq7FQfQYwPBDS7GCb8gjDgVZw+bN6YD+mfFcgAj9AJWbe?=
 =?us-ascii?Q?/waxxTL3U0IMOTG6V7puOdDhhmsyD0AatGyPkkBgbqH2Qfis/jGySY5qrYl3?=
 =?us-ascii?Q?nY/GD95QpdH3EPSxjHX53lYefURxdwr837TKFzsAt0MjCHPJaXp9KRUzT3I1?=
 =?us-ascii?Q?89iKs95pydtwIyo+JkhNwelYDrGflMI1u49CxBGzbMyK8aBigEFCL2pIAh7O?=
 =?us-ascii?Q?90gBUc174CmGirRTeM8zLfCI5jx/BAD494QsDp65lJvvKUL/lgSi66PKXf6y?=
 =?us-ascii?Q?YdNm2C9R5H/u5hz2uiHtLqzBQlbRL1vpnkYXgrkPFN9SU/ceNj6YHLDiEAZ6?=
 =?us-ascii?Q?QuP9KG+qBxwHDDUGaRv/yhBx8aDDFvr/51vRwOR37O2uYzPN4S6Te5Pb1o6m?=
 =?us-ascii?Q?tCYJtRojJ27DfXO4D5pXSjpXEN1rpJB4Q5UhjvpSuuqBi9/ZluaT01xw/MiB?=
 =?us-ascii?Q?QUskDaiPS0IceFXdXotjN45ev3bq6180eTulHXG6stZ3bj047730y6HctowL?=
 =?us-ascii?Q?Ip62SlkB/dXJlGXt5GywpDpGvsS/LYU5XD8EDRpbtWaokdBaKBQMyZwiWG/J?=
 =?us-ascii?Q?syF0Ml1P3kwIR+Vo33+h4wz1Ps8dkbi2mXKiXsLhjeuJkYlXTUbq5BAYczGE?=
 =?us-ascii?Q?EofEbE6x54RZCLxn6u8Y1wzCjb17OjvUu0sP/Sj+1vgiT0SWIajp6IMMMXgK?=
 =?us-ascii?Q?V962BQbpCLk4URwtzjCEAcZyKEE/xtypGkEPwaksrjdGRt/iuNYTZ/cap/ct?=
 =?us-ascii?Q?GrIhGO/GZjLZ8zUuKxvSa/j6shlogSbfRTi6fs/jS5VAAO1ECNXaWr2NIkoM?=
 =?us-ascii?Q?IShMgRsFimKDwbhfhya9yc5mHBstIujsdTyXQ0xotMhV1u9w=3D=3D?=
MIME-Version: 1.0
Content-Type: text/plain
X-MS-PublicTrafficType: Email
X-MS-Office365-Filtering-Correlation-Id: 46e2863c-6bcf-44fd-d2e1-08d4bf95cc29
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0;
 RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(300000502095)(300135100095)(22001)(300000503095)(300135400095)(2017052603031)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);
 SRVR:BY2PR0301MB0599; 
X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0599;
 3:/bYNRotRmuoVrx5YQPfbhL25eknxgsoEDpy6IwocRngTE7HhQ+pyN3BLmxk1gdvQwQHZYZEd1b9uckbVvyNpAAF359spLOX1PUvRB4d/3QgVV6QCr/JkcV2Z+M/yrb4FdcuMvCzC5jq/umno4G6RzVCKbqhrFHBvDD4DZFEYvhsoFCKvDSmah8ueL1D9BqoHt3QmpIVrDkwgOFMHJj+2e1orZ6QfVgxTYepnoWVwND/c0sSthj7wllswWkIpTHxAS0ryBP1FmG5H9LlJLv9jiHgG2AJFjh67Kwt0rZCXwMbiubGzl5H7bx+gjLp1G9Gj1nECT0Vtu+3smMOflvgt0eXVzNE+HCZZkoAqVrubRoeYtUJhAVrvoW68kq/y0vqk79Z354gzCk3zwjWQ5pvp6dncO7X8ddviV7JokxYwSdxH73rTAEu6P0fZbahdodncCijwTzQFiBVbNv0aBUXqx0oA9YDhTjp+PYHafps61EETwDTBL1ppNVA8cRr5HQP3ym5XIPpjR3Cb+EUpMkua1hO9DFo0bdqBo7hRE1NasQ/HJV7UYq2LJ0vPnAHG8Vi9PGr5/7fuqKW3CQSaUQmq2Pjst/wlMpNr8ED7TmOgc1aDI2fZaDjFoEc94YBnGxAy+dn9MssKj1dEOpgK45l1OwQLS3M8rylrUb3z9NnQRz3+R0mMjdrGplPZ2Cgu2aR64XDBkfjs/lzkA/6fDKGNkG232F/qNdBI1DgdTaigwY/LS0VwcOKZw8PZxNyyY9TjXsI0NlnF4yLNV+1YyFpNz/HhwXYZolqDv/4UZFhRsm1lXymwiWyAbTpM+m4wYozSwBOtM+U+nZgHV27XPcckjv0ZhaFZhkTVbJ+Y2B1y8Z4ly3NjTsqdI0pwrpmIRgsN
X-MS-TrafficTypeDiagnostic: BY2PR0301MB0599:
X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0599;
 25:eTzrp7s5tG14azyTiTL1SzXCM4zsQ8Ayo8yviTGJC0PdX8n1NChbtCVk4EqZrBJceVJ/WRNm8zLX/75XgRh7U2vBworPLm18AwoFVuTUJXVogJG6VRiUBwifARXnaL1j0KNxo3WnOEeRebHN0cWGGrawIxJanonIkeB28Ln9wh1k8XDuJeQOYJ6WMcKThRanXvwuW0ZOGbBHDDupTIF5yvZ+3bJMWlZM8MvpRcNGw2hWBip/OXKK+XBahftcysXNYUBi9NACVOpXcJ5AXpVXQrZHgqh4E1hN9Y3cqX2JFfTbFkA9ePP8cgNveeguHDBzntAsv2ep2j1dRAPm5JpQTqTIDndmhHugyM04Rl5v+LcUV+aTerhuckfxhIAJxO/y5oJ/TxpC5NdyAdUmlfxMqgOIpJUD5hchR+9kfmh2s1yK7pcE0MB63SkMDDRx10BRKmeGVFVcjmahsubCmv8jW4/34bnvqcxkMCxSLkZzZs1dyCEa+KchAOCks35DdNhjs4cPe0N6Y9tDtmqpEACyzRqDNQvYBNvs7KYJD8NBpnP9vrVFVNrYPwXbNQXcxR4ViNhiLTQg1xXswmqHN6WZHuBXYW0isp2QxTVenvRS16i6I/zqIf1M8jw4Kn3o0pPpo5W0MEHrD8CuLGa2yVJyZ3sp2K5UcYMifd5MaDc8Ch5NVByKrCCP9yvnUkkVQvs0rwSv8l+j0PQBsm4etdcb9TGtl4INHrIMJ122bqmqLzBfnHbFlC/Qqh+yya7q4JvDtkWOyb4MAGjQrjVoxBytneuIwhInDLLvtLbJsZV8UZDhJk3gcdII+vgCC4hHSAJNca3qRD9FsrJsV6r0eKeb0fgH69QEY7sC7abq0uW7RvHtXCWR5UMhuxNROKcsWi/zCndxqmju5hfZoweVNGktwceHLFKmzgMPH/rEcP6FHWI=
X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0599;
 31:671S3GyKDCwv5Xa5RK5ZMTVmDcKRbjipIB5XrbtaldnAhyaF/ZgwVUbgDAapw7slSkMq+WXoAGuVxej/93Jkf9FNOgsl+SYK+Q6SE5PKFUrXXjXIQtBzkXCxyKuCtqFYXsJGcuU8umPEN3d1ojF/jJHSQNCyU7fL9C9QUAUonaZSwPmI/OF6nZAw5YB4Dz6tv2qE0FjBNMyTgF38GM1au9uxTMRABe5dD1AEeSFeTNBB36fqP6PFavodrcbVN7Q9AAhONzTd4M7Xj8lHvFAQwfNvae+BF1LedUrlH4/mM6eQxaHiNJgaHvQtSjuDp/CNrJMMZLC6Nv3RHA+KsTibMAaRrPskDsyVu9mE4TZevT0WaiCgdjV38/Mc5QyPszRdvF5/WNHT0IkAHRRV5QQN3ew4fQmYn48j1nHeJkOsFq8ulRZeis0HDvxwnUhTuJvzuAjF9Xyzh9IZFwfMq3Ziqc1brey+Hq4Lj553WC+ktbVYcI/JXA6RTwfItuVsfSHS8Iymx0HkGpAc5xl5LdJGsLOEiF6E/k8TRhspSOZFVLemTvYVoucXiFKUvjAh5iJ4S+Uei1zm+/Qb7ywN0yIlpqFDIKeuifaqMPM4sX3aAfS4Dnn2dt5pW4dsY8nFtF15PaRc6ZkiI1izXmVKjXgjl0q7dEDLSSiBSL3wed64MKmm6BAPCZAN6nJ0CgUFUrnybL9kEFNxLDK1JNXS6n85ag==
X-Microsoft-Antispam-PRVS: <BY2PR0301MB0599CCA2667789F5653EEE83E6D30@BY2PR0301MB0599.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(185117386973197)(275809806118684); 
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13016025)(5005006)(13018025)(8121501046)(100000703101)(100105400095)(93006095)(93001095)(10201501046)(3002001)(6055026)(6096035)(20161123563025)(20161123556025)(20161123561025)(20161123559100)(201703131430075)(201703131433075)(201703131448075)(201703161259150)(201703151042153)(20161123565025)(100000704101)(100105200095)(100000705101)(100105500095);
 SRVR:BY2PR0301MB0599; BCL:0; PCL:0;
 RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095);
 SRVR:BY2PR0301MB0599; 
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0599;
 4:1f9K3KIolmoL7bDbHGyGA8uusmgYYZ68KEPVVoHE?=
 =?us-ascii?Q?qG4gyEzZ5rXc4lobGIiXC4ms4I52Vy40FRCide5gZ+T7pnc+ibup9nApDnxi?=
 =?us-ascii?Q?/HMlCyR1hNeCVJZeZ3AnvN/Gd87E8b7ScuX3xerACWgyM6IJbskvOApglF4g?=
 =?us-ascii?Q?w3uY28WFTyZmMDzvh5czsBVkQDB57AdpSCaBO0EbWTgMFvCW5wyJ0lRk7cJx?=
 =?us-ascii?Q?OAJPRPktU/aoS6D6MLv5twpXw5m1dCWJyE2+JZV4/v4+bSNoPJ1tgfGPgRca?=
 =?us-ascii?Q?2l5ZvfbxNjtp4PusmuLx3IzMm5aGyQgWh6xFewckEru13KjfuNu9OjuolSqA?=
 =?us-ascii?Q?oHy9QaUcgy6Oy96rR+FZQKEf2xbZSRtMFtR51astyHyfwJwqkAcRPSx93YsM?=
 =?us-ascii?Q?b0N8+qUNVyl5iXowUKmi2SarTl6NkJW7631cskkbXjMwuGn+qSFJXQq6Bam1?=
 =?us-ascii?Q?mgUoJQlHjvEtTtWUwKuxxWCccTFA/cRQeHtsyYsg9q8mpI6e20ufNfcnEnxb?=
 =?us-ascii?Q?aojxCABXPxVEPW2JfMwHzpKeKo2q1kmCE0TbkepnoUWjnoAQkhyWx38II+Jd?=
 =?us-ascii?Q?/HlVAEODtrnu2W2PkSz7qmRxxQrnhlWmHO98uFKTXXLwklkDoYGD3ZdRGa9v?=
 =?us-ascii?Q?7Ol1DDTOTkvTrAP0OU0H9+cwJ0liyOkgNGTudVhgFx6Hlnt8AglztbGr+T0V?=
 =?us-ascii?Q?NCPD0E14Q0IYDZIgJbmP9rveSJFPVqSKp3nit1b/56vYqXgcNcfuY1PRW9eh?=
 =?us-ascii?Q?Y1hLgR2k97HF0hSNb9DfnlKxiImeOb69E858MJeSTZUOfCznGNByRGDySaPf?=
 =?us-ascii?Q?Na8twBy4rFgn0iilLHFpvFRtHCK0AYbktwN48wnUVvfz3q/eg+73hVipUSsk?=
 =?us-ascii?Q?3r9gNT250nfpw39nqGFTGfufoia3aa3qKrxcjNG8gLe0vxJ2A6SOIsmCZkxg?=
 =?us-ascii?Q?0ussUtEacsNz4lJny7Gdk/ZhGX20XfFM+1Mv/DeL6bxB/WMWW8SWFo3lIiOP?=
 =?us-ascii?Q?Nksjo9m+r5sulURki0K0x1qd+kdpJqUldGfaoIXOVlWVldB+q5twEshbvu8e?=
 =?us-ascii?Q?L4O5eXe8QiuYuj9jiWRw8IMFIKqoPe3BAoXUu+WYwJ2WatAioGsZcWmwNuTx?=
 =?us-ascii?Q?i6Q0QmEOuQfmP3jz7wJgiSluRtHqaNRfZRdI/dxcZ1/fC54nH3BAwwmTNK7t?=
 =?us-ascii?Q?T+j4Pqj2RIRjn16br/VCUkKpLV9lF3qsNDvshIc9RZiCJHVwmydP+MyU8cXe?=
 =?us-ascii?Q?EFZySooVaspPPqMh6xsUX/KewffQWirZY2iM/1fTTVLO6vphEXkqV41epnXM?=
 =?us-ascii?Q?UlQpEZ+HMm8SOHhC5a8dCnH+/MRHDVmoHjeW+GZV2QIo?=
X-Forefront-PRVS: 0354B4BED2
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0599;
 23:9/FZ16dl/GXUreDcYDrp+q5B5rN05mXgd+x9Caw?=
 =?us-ascii?Q?WydCHHRDM2I3EJagTNiNiCPfhsFSQx4HzyJqz7Mi6p8HnKwP7YmavbZdOmkh?=
 =?us-ascii?Q?AHIVqOgAggr1AHhYcelXOUiwO+x7bvod5I4k3humuAy2e5VeRZa9N/lqAwny?=
 =?us-ascii?Q?mttzv8RjnUijNQj6G4fc5gZj5FBsWj7Hm/nGsjjFbKbX7amgJdo/W8weSoWg?=
 =?us-ascii?Q?XJwaUZuXxtM3PWIUC5AyEVhOg6aeGAn82jZG+RwpTvimZZS0XrczNY1+O8wH?=
 =?us-ascii?Q?JyqzGILy1KbfZ9y00egiAUof+viWUvwpUowfBO5TXinYFNMmI31LkMFEo6kG?=
 =?us-ascii?Q?S2Lt4xlu/aUMPaCUdgPbnwa0Vi2xXDCAW8Q/RF2M8JEBHZ5hQuFaUi8E6eay?=
 =?us-ascii?Q?n2E3dzlRQeZ+lmHBSAEJKC/rT7AZi1tPQ/OvMdh1BFLp0hx3jB+zGRbPvmnL?=
 =?us-ascii?Q?gQdUDxXN42gFipXVsqhJvQRySBNM05geuRaJtJoXc01ukuKRCVX9zjtrQz5o?=
 =?us-ascii?Q?Pm2t0ePW6JL8F99M2pZfeLRD0BTSjgcMoa/DdcqNxBGrbIbu76j1xAoRvvxv?=
 =?us-ascii?Q?621ad8TyerZof3/Px7iYU8cXcjDHuEcHrgQlEk+E5jWeWeP4PjamOw7DJWRp?=
 =?us-ascii?Q?qLZ/ebmvancDpCC+oKiuFHaKGcRAq2B2bJIPEq/9u5AoqMdj0EC8bKAoxTla?=
 =?us-ascii?Q?rCENzN9E/Nb5eHGhaBAwyheDHe42uuiYe62Z84MAJS9wRExF8OibcD+M2soH?=
 =?us-ascii?Q?tFO958fM1mIhs49iy3wUuHZwQtU3g7XibI+zQHpdHR+TkNrd9/HoL6h0e+mG?=
 =?us-ascii?Q?sS+/W86IHgSiPegeWNxvsuvnUhTATdZtpJgk5uGPtu5thjh/0y2eahWo+56r?=
 =?us-ascii?Q?6bmF+VLfFpLb/FnqW241OSWvBtJ7vKz+WhfIeyQKruG+zeEgf1NyYLNT469Z?=
 =?us-ascii?Q?eQEhscZCrzx6mVFxcIj7jsAOKf4yIFcx/E+Sag+mHsYeabQn1Mu0PgHXPqvA?=
 =?us-ascii?Q?iqgMrplgveZPvdvCLKvRUqN+G7SpBTHbbkaOzD1Y8yPDzvq3MafLtJ7ZRuqc?=
 =?us-ascii?Q?NvAaYB6lQqIbrVK+HkbWN+0X9ipfOGfZHUvR2rAUBnOg+ygYgXqcjnrj6/pE?=
 =?us-ascii?Q?WCD9U2YUp1qWwiA2TSjOaxhFB7HouD/2ocO3DWdGQpude6i03qP5yzSy/RHZ?=
 =?us-ascii?Q?WEX8fy0SwJNnHZJ4W++1dilOrM5xktmIYPOxHPDqRIL+ZLQkSy/vAkJCVSex?=
 =?us-ascii?Q?6T7tbqvh0RC7pU/2etjJ6XyEJBvVZc+9jAAbWgfQj?=
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0301MB0599;
 6:4BQ39bqR5nnhNBHbIwDFmXmUyBYTR4j3ekqaPsVf?=
 =?us-ascii?Q?NTnJJWe9WViJttQSGSFFNH1vm4lr7bh8kvK+2a2cUhgz5ewf0x9qDqu5aqBm?=
 =?us-ascii?Q?H4g8EJSaZCql/LjP+GcRO2qNFqa194MRlvY8PTeNf0c4zNucZ9JZCh9aeLQY?=
 =?us-ascii?Q?2Bus9d3UMn/kA6vJffrcW6NPgHjaR27Z7XnY/lF53Zqjz6vnpB9g2SnlroAz?=
 =?us-ascii?Q?p0lMZWDOlbnHL8cXwc9sOfvWzBOssu8Hu0FZgXmqfttxdoBcds/FD50Frs6O?=
 =?us-ascii?Q?Pumgc66EzdF4RirecBOVFQq+UA85dM/a7zBZbs4WlAXqWcyke7XagWi/Yzyp?=
 =?us-ascii?Q?dx8cRCSu0f4jCMO9n3TW4rZmUVt9Fkot/wvSmyjLi4QgdbUwnZB/YnMz8L8D?=
 =?us-ascii?Q?IlhEEWRHyrhLFZfL1v/QIehM1kF+ekVJzw8mvnaECoOOXXNNXAaFeRA+1prT?=
 =?us-ascii?Q?DyAtC2Le3BrQ3PmbV1A3R+BvEAKzQQwMqKExODXjoXi/NLSppB4wIN0Ek1FL?=
 =?us-ascii?Q?AF9xihPBtN0bqFkXByYURaEb2DZR2UgXyLA2glzRFN2wL53haXRXhj4hsV6w?=
 =?us-ascii?Q?6IMA6IxILc0U0mHsmeZi6lyQjuo0vcfijGzKrhDW+2lERauKe/ZQwoDE1rxk?=
 =?us-ascii?Q?obST3Hg+uV5SLmWPxP/oXT3Onr1r+6SGSlU+TYGQJOD38Tux/2lZ1BvD3HP1?=
 =?us-ascii?Q?ZJcfGGwAKZRb5N61FqWoWWZfhHmUNTAwdmM3CxngrpKI+ZJwPNSRGBCQdqAB?=
 =?us-ascii?Q?S2bSsEb8uGE3Fx9Jag2EZOkbo0kxxXRo4DggC02arSxfmYp5DTlzErJMjGRv?=
 =?us-ascii?Q?J0UU962AunHNxc3k/qb1FQFRPv6W52p37kI0zF6tW8xAPJOhGm7bb8jLGOjc?=
 =?us-ascii?Q?HcAaxiC6ZX43/3UoPCnMRXcJD9UEFd4yj2NQqo/BELu2TVdUmb6Teq/PCIOj?=
 =?us-ascii?Q?I8Nt+j6spSXtlmP3xPsaL1VBWBRp2cI6vw4/HxKDLA=3D=3D?=
X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0599;
 5:1UTQK4qdmm1bTS/2F14qBC/4guuMrLiP+pvf5SaggXYUKvk5pUd450P1HrXLojs11jEwtDJPZ187QMzVd/QC0MqjMDuMhTH5jzlp7i1Xut9pv69zBpZrZYakGr0LnhpjMR4A4M2cIxWRKwtRS+Dt/7o16kskKwBj5IWdmFzPgwV6+sDnQ3I4BRedU/kUgF6tYSAcWI6nuDIHJF+lo7aQmEaY3eOngQbJtKNDBomMhKeaXJysaJfFidxg6YW4g0jDWP5+XkrUkyr9AStj5lLX2BrLHeH4mKb+DTZRS7+uuix7WkB9iLohkJroY5hLDLkCZoLepbeFXZ5HEivNJhY6achuQg6FvQSBNn5hNBZPXeyllGzEjDOmy88/KPmaew8FxgrNDsD452h5Ae5zipaQxMR8PUTgUbe7hSAj4x4fiCgU5D9grMtQI3DtROQUksvtaIMI9ww4+zanlliiKn+PF1r3rqrbwAI3z180QOox1cl280rN5vBTe6EdnmFsBQzw+Lnx/MKpzcu7jfgHcxEFiQ==;
 24:sOYJj7Iy22/0xtNBmtWLMFFNbujwpNNJ0SP4Ivvx9zAuMpXvKiiyLxYu4Hdh53C97o8W3772giCxqfbXvobfkE8TnFFu4oaUvTpNUrB8rGQ=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; BY2PR0301MB0599;
 7:l0nRyjg8Xktp2ouXeoj7fhjxffA0Klqcnev84+9NZU7KjpDEUmURa/WRmqGRI+5+1thaBLtUJ9sV89IHsTB7GPm54K2xdWxorukrBd1gmYZDWVKUG14p4Gik/sTtCyUUQ31obhn3N1dy3/EMWRC/cgZynQKBbunW61lHtIwdiukzE1yZ917sJ4mMvnCi60gKlUWXHJ7wrYOWtzfLXN9boxROR6gEJx0W93KMmgeJEVXmuVxe/cMilTeBLAo+EYSdGSBgLwB154pakte9ZB81wo4YBFff60s6AeuWS8WPHKnIrkYYtchvT+u8GzsnZxAYHGrX2nK65duMfYK2yt0NyTQQ8I9/KaWSUa0azfuNTxmxaxykPb9WZ9Q/jdOQl0wWBUXwkTonZttRshnQJyKgy43OSLcfuqpSu9+xnp+xgE1xAPJWrF6nbFmYg5ivoiV9xZ87KtsLGJLAr/vRmJ6q7VpiXAD0/YmvLWJFD8vPykMFLBg2wb2uR/qpjpvIRC4VlRZgYe+H6U3LWz9Gi0n93cG+I4V16vFll5tF4ROnDkLAyr9snnvz5KuBW09gvqL0WOHYWg6mZVpqZ17nR4V9kiOd6x6bcM3fdxsfQNGEyVDSRJ0B6NbTJ0vx8qpkwGcmZhbbDcC4jrYRCk2XbGgaAqLIPMv51bh0zhJ7YzaWA0vAqRF+YpkUZhB11/AkC7jmtiJ6Lf572Q4tNszELEXv4e6+Bn3EJRQaZQ5ZMvn2XX4WO1fyGb7xFxHeFxGD0ynbF4oJMoBgVkhnaYbftzhx2nLl6CUpvXsvgOeA9P6j8Ck=
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jun 2017 08:55:46.0067 (UTC)
X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50];
 Helo=[tx30smr01.am.freescale.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR0301MB0599
Subject: [dpdk-dev] [PATCH 19/21 v5] bus/fslmc: enable portal interrupt
	handling
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 30 Jun 2017 08:55:49 -0000

Eventdev requires portal interrupts to handle timeout in the
event dequeue. This patch provides mechanism to enable the
portal interrupts.

Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
 drivers/bus/fslmc/portal/dpaa2_hw_dpio.c           | 108 ++++++++++++++++++++-
 drivers/bus/fslmc/portal/dpaa2_hw_pvt.h            |   3 +-
 drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h |  30 ++++++
 drivers/bus/fslmc/qbman/qbman_portal.c             |  22 +++++
 drivers/bus/fslmc/rte_bus_fslmc_version.map        |   1 +
 5 files changed, 158 insertions(+), 6 deletions(-)

diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
index 63378f0..5d53342 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c
@@ -46,6 +46,8 @@
 #include <sys/stat.h>
 #include <sys/mman.h>
 #include <sys/syscall.h>
+#include <sys/epoll.h>
+#include<sys/eventfd.h>
 
 #include <rte_mbuf.h>
 #include <rte_ethdev.h>
@@ -106,6 +108,95 @@
 	return dpaa2_core_cluster_base + x;
 }
 
+static void dpaa2_affine_dpio_intr_to_respective_core(int32_t dpio_id)
+{
+#define STRING_LEN	28
+#define COMMAND_LEN	50
+	uint32_t cpu_mask = 1;
+	int ret;
+	size_t len = 0;
+	char *temp = NULL, *token = NULL;
+	char string[STRING_LEN], command[COMMAND_LEN];
+	FILE *file;
+
+	snprintf(string, STRING_LEN, "dpio.%d", dpio_id);
+	file = fopen("/proc/interrupts", "r");
+	if (!file) {
+		PMD_DRV_LOG(WARN, "Failed to open /proc/interrupts file\n");
+		return;
+	}
+	while (getline(&temp, &len, file) != -1) {
+		if ((strstr(temp, string)) != NULL) {
+			token = strtok(temp, ":");
+			break;
+		}
+	}
+
+	if (!token) {
+		PMD_DRV_LOG(WARN, "Failed to get interrupt id for dpio.%d\n",
+			    dpio_id);
+		if (temp)
+			free(temp);
+		fclose(file);
+		return;
+	}
+
+	cpu_mask = cpu_mask << rte_lcore_id();
+	snprintf(command, COMMAND_LEN, "echo %X > /proc/irq/%s/smp_affinity",
+		 cpu_mask, token);
+	ret = system(command);
+	if (ret < 0)
+		PMD_DRV_LOG(WARN,
+			"Failed to affine interrupts on respective core\n");
+	else
+		PMD_DRV_LOG(WARN, " %s command is executed\n", command);
+
+	free(temp);
+	fclose(file);
+}
+
+static int dpaa2_dpio_intr_init(struct dpaa2_dpio_dev *dpio_dev)
+{
+	struct epoll_event epoll_ev;
+	int eventfd, dpio_epoll_fd, ret;
+	int threshold = 0x3, timeout = 0xFF;
+
+	dpio_epoll_fd = epoll_create(1);
+	ret = rte_dpaa2_intr_enable(&dpio_dev->intr_handle, 0);
+	if (ret) {
+		PMD_DRV_LOG(ERR, "Interrupt registeration failed\n");
+		return -1;
+	}
+
+	if (getenv("DPAA2_PORTAL_INTR_THRESHOLD"))
+		threshold = atoi(getenv("DPAA2_PORTAL_INTR_THRESHOLD"));
+
+	if (getenv("DPAA2_PORTAL_INTR_TIMEOUT"))
+		sscanf(getenv("DPAA2_PORTAL_INTR_TIMEOUT"), "%x", &timeout);
+
+	qbman_swp_interrupt_set_trigger(dpio_dev->sw_portal,
+					QBMAN_SWP_INTERRUPT_DQRI);
+	qbman_swp_interrupt_clear_status(dpio_dev->sw_portal, 0xffffffff);
+	qbman_swp_interrupt_set_inhibit(dpio_dev->sw_portal, 0);
+	qbman_swp_dqrr_thrshld_write(dpio_dev->sw_portal, threshold);
+	qbman_swp_intr_timeout_write(dpio_dev->sw_portal, timeout);
+
+	eventfd = dpio_dev->intr_handle.fd;
+	epoll_ev.events = EPOLLIN | EPOLLPRI | EPOLLET;
+	epoll_ev.data.fd = eventfd;
+
+	ret = epoll_ctl(dpio_epoll_fd, EPOLL_CTL_ADD, eventfd, &epoll_ev);
+	if (ret < 0) {
+		PMD_DRV_LOG(ERR, "epoll_ctl failed\n");
+		return -1;
+	}
+	dpio_dev->epoll_fd = dpio_epoll_fd;
+
+	dpaa2_affine_dpio_intr_to_respective_core(dpio_dev->hw_id);
+
+	return 0;
+}
+
 static int
 configure_dpio_qbman_swp(struct dpaa2_dpio_dev *dpio_dev)
 {
@@ -215,6 +306,11 @@
 		return -1;
 	}
 
+	if (dpaa2_dpio_intr_init(dpio_dev)) {
+		PMD_DRV_LOG(ERR, "Interrupt registration failed for dpio\n");
+		return -1;
+	}
+
 	return 0;
 }
 
@@ -339,6 +435,7 @@ struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id)
 {
 	struct dpaa2_dpio_dev *dpio_dev;
 	struct vfio_region_info reg_info = { .argsz = sizeof(reg_info)};
+	int vfio_dev_fd;
 
 	if (obj_info->num_regions < NUM_DPIO_REGIONS) {
 		PMD_INIT_LOG(ERR, "ERROR, Not sufficient number "
@@ -355,13 +452,14 @@ struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id)
 
 	dpio_dev->dpio = NULL;
 	dpio_dev->hw_id = object_id;
-	dpio_dev->vfio_fd = vdev->fd;
+	dpio_dev->intr_handle.vfio_dev_fd = vdev->fd;
 	rte_atomic16_init(&dpio_dev->ref_count);
 	/* Using single portal  for all devices */
 	dpio_dev->mc_portal = rte_mcp_ptr_list[MC_PORTAL_INDEX];
 
 	reg_info.index = 0;
-	if (ioctl(dpio_dev->vfio_fd, VFIO_DEVICE_GET_REGION_INFO, &reg_info)) {
+	vfio_dev_fd = dpio_dev->intr_handle.vfio_dev_fd;
+	if (ioctl(vfio_dev_fd, VFIO_DEVICE_GET_REGION_INFO, &reg_info)) {
 		PMD_INIT_LOG(ERR, "vfio: error getting region info\n");
 		rte_free(dpio_dev);
 		return -1;
@@ -370,7 +468,7 @@ struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id)
 	dpio_dev->ce_size = reg_info.size;
 	dpio_dev->qbman_portal_ce_paddr = (uint64_t)mmap(NULL, reg_info.size,
 				PROT_WRITE | PROT_READ, MAP_SHARED,
-				dpio_dev->vfio_fd, reg_info.offset);
+				vfio_dev_fd, reg_info.offset);
 
 	/* Create Mapping for QBMan Cache Enabled area. This is a fix for
 	 * SMMU fault for DQRR statshing transaction.
@@ -383,7 +481,7 @@ struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id)
 	}
 
 	reg_info.index = 1;
-	if (ioctl(dpio_dev->vfio_fd, VFIO_DEVICE_GET_REGION_INFO, &reg_info)) {
+	if (ioctl(vfio_dev_fd, VFIO_DEVICE_GET_REGION_INFO, &reg_info)) {
 		PMD_INIT_LOG(ERR, "vfio: error getting region info\n");
 		rte_free(dpio_dev);
 		return -1;
@@ -392,7 +490,7 @@ struct dpaa2_dpio_dev *dpaa2_get_qbman_swp(int cpu_id)
 	dpio_dev->ci_size = reg_info.size;
 	dpio_dev->qbman_portal_ci_paddr = (uint64_t)mmap(NULL, reg_info.size,
 				PROT_WRITE | PROT_READ, MAP_SHARED,
-				dpio_dev->vfio_fd, reg_info.offset);
+				vfio_dev_fd, reg_info.offset);
 
 	if (configure_dpio_qbman_swp(dpio_dev)) {
 		PMD_INIT_LOG(ERR,
diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
index 975e431..f5644b9 100644
--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h
@@ -101,7 +101,8 @@ struct dpaa2_dpio_dev {
 	uintptr_t qbman_portal_ci_paddr;
 		/**< Physical address of Cache Inhibit Area */
 	uintptr_t ci_size; /**< Size of the CI region */
-	int32_t	vfio_fd; /**< File descriptor received via VFIO */
+	struct rte_intr_handle intr_handle; /* Interrupt related info */
+	int32_t	epoll_fd; /**< File descriptor created for interrupt polling */
 	int32_t hw_id; /**< An unique ID of this DPIO device instance */
 	uint64_t dqrr_held;
 	uint8_t dqrr_size;
diff --git a/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h b/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
index 06bd063..9e9047e 100644
--- a/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
+++ b/drivers/bus/fslmc/qbman/include/fsl_qbman_portal.h
@@ -124,6 +124,36 @@
 void qbman_swp_interrupt_clear_status(struct qbman_swp *p, uint32_t mask);
 
 /**
+ * qbman_swp_dqrr_thrshld_read_status() - Get the data in software portal
+ * DQRR interrupt threshold register.
+ * @p: the given software portal object.
+ */
+uint32_t qbman_swp_dqrr_thrshld_read_status(struct qbman_swp *p);
+
+/**
+ * qbman_swp_dqrr_thrshld_write() - Set the data in software portal
+ * DQRR interrupt threshold register.
+ * @p: the given software portal object.
+ * @mask: The value to set in SWP_DQRR_ITR register.
+ */
+void qbman_swp_dqrr_thrshld_write(struct qbman_swp *p, uint32_t mask);
+
+/**
+ * qbman_swp_intr_timeout_read_status() - Get the data in software portal
+ * Interrupt Time-Out period register.
+ * @p: the given software portal object.
+ */
+uint32_t qbman_swp_intr_timeout_read_status(struct qbman_swp *p);
+
+/**
+ * qbman_swp_intr_timeout_write() - Set the data in software portal
+ * Interrupt Time-Out period register.
+ * @p: the given software portal object.
+ * @mask: The value to set in SWP_ITPR register.
+ */
+void qbman_swp_intr_timeout_write(struct qbman_swp *p, uint32_t mask);
+
+/**
  * qbman_swp_interrupt_get_trigger() - Get the data in software portal
  * interrupt enable register.
  * @p: the given software portal object.
diff --git a/drivers/bus/fslmc/qbman/qbman_portal.c b/drivers/bus/fslmc/qbman/qbman_portal.c
index 8002690..dd62e9a 100644
--- a/drivers/bus/fslmc/qbman/qbman_portal.c
+++ b/drivers/bus/fslmc/qbman/qbman_portal.c
@@ -44,6 +44,8 @@
 #define QBMAN_CINH_SWP_IER     0xe40
 #define QBMAN_CINH_SWP_ISDR    0xe80
 #define QBMAN_CINH_SWP_IIR     0xec0
+#define QBMAN_CINH_SWP_DQRR_ITR    0xa80
+#define QBMAN_CINH_SWP_ITPR    0xf40
 
 /* CENA register offsets */
 #define QBMAN_CENA_SWP_EQCR(n) (0x000 + ((uint32_t)(n) << 6))
@@ -218,6 +220,26 @@ void qbman_swp_interrupt_clear_status(struct qbman_swp *p, uint32_t mask)
 	qbman_cinh_write(&p->sys, QBMAN_CINH_SWP_ISR, mask);
 }
 
+uint32_t qbman_swp_dqrr_thrshld_read_status(struct qbman_swp *p)
+{
+	return qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_DQRR_ITR);
+}
+
+void qbman_swp_dqrr_thrshld_write(struct qbman_swp *p, uint32_t mask)
+{
+	qbman_cinh_write(&p->sys, QBMAN_CINH_SWP_DQRR_ITR, mask);
+}
+
+uint32_t qbman_swp_intr_timeout_read_status(struct qbman_swp *p)
+{
+	return qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_ITPR);
+}
+
+void qbman_swp_intr_timeout_write(struct qbman_swp *p, uint32_t mask)
+{
+	qbman_cinh_write(&p->sys, QBMAN_CINH_SWP_ITPR, mask);
+}
+
 uint32_t qbman_swp_interrupt_get_trigger(struct qbman_swp *p)
 {
 	return qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_IER);
diff --git a/drivers/bus/fslmc/rte_bus_fslmc_version.map b/drivers/bus/fslmc/rte_bus_fslmc_version.map
index 9950557..3cdf14e 100644
--- a/drivers/bus/fslmc/rte_bus_fslmc_version.map
+++ b/drivers/bus/fslmc/rte_bus_fslmc_version.map
@@ -70,6 +70,7 @@ DPDK_17.08 {
 	qbman_swp_dqrr_consume;
 	qbman_swp_dqrr_next;
 	qbman_swp_enqueue_multiple_eqdesc;
+	qbman_swp_interrupt_clear_status;
 	qbman_swp_push_set;
 	rte_dpaa2_alloc_dpci_dev;
 	rte_fslmc_object_register;
-- 
1.9.1