From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0079.outbound.protection.outlook.com [104.47.37.79]) by dpdk.org (Postfix) with ESMTP id 7F0FF7CE2 for ; Wed, 28 Jun 2017 17:18:23 +0200 (CEST) Received: from BN3PR03CA0107.namprd03.prod.outlook.com (10.174.66.25) by CY4PR03MB3272.namprd03.prod.outlook.com (10.171.246.141) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Wed, 28 Jun 2017 15:18:16 +0000 Received: from BY2FFO11FD033.protection.gbl (2a01:111:f400:7c0c::180) by BN3PR03CA0107.outlook.office365.com (2603:10b6:400:4::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11 via Frontend Transport; Wed, 28 Jun 2017 15:18:15 +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 BY2FFO11FD033.mail.protection.outlook.com (10.1.14.218) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1199.9 via Frontend Transport; Wed, 28 Jun 2017 15:18:15 +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 v5SFGaQ3032734; Wed, 28 Jun 2017 08:18:10 -0700 From: Nipun Gupta To: CC: , , , , , , Nipun Gupta Date: Wed, 28 Jun 2017 20:46:02 +0530 Message-ID: <1498662964-11251-20-git-send-email-nipun.gupta@nxp.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com> References: <1495735361-4840-1-git-send-email-nipun.gupta@nxp.com> <1498662964-11251-1-git-send-email-nipun.gupta@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131431366955307330; (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)(39850400002)(39860400002)(39840400002)(39380400002)(39400400002)(39410400002)(39450400003)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(8676002)(81166006)(81156014)(33646002)(38730400002)(53936002)(104016004)(50226002)(105606002)(2351001)(356003)(2906002)(106466001)(498600001)(77096006)(8936002)(4326008)(5660300001)(85426001)(551934003)(6666003)(86362001)(2950100002)(50986999)(6916009)(76176999)(189998001)(47776003)(50466002)(8656002)(110136004)(36756003)(305945005)(5003940100001)(54906002)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR03MB3272; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2FFO11FD033; 1:toQ5fGQdr7XfYb7mQhTqBmReGqFk9X3x/Sf/cjDb5s?= =?us-ascii?Q?q8pKwnQ+2AMyUMGxf1mlF9rnTUcXQ/POWxiKc6yGnYnbHNoEqPk5cbB4UAvN?= =?us-ascii?Q?QAgegnEsEVJndfPXgP3rmJhaIWZ/S2AO1O5FoKsZjzpJvTRSk4bfmPrtxDjm?= =?us-ascii?Q?LDUlHY0RHwSyO6G50XAjNw9Zm/D1pg6s3IY4C0IbcjTAWd0bKGbuYVZY/tcM?= =?us-ascii?Q?dMSI9A87IgIZRcOO+LDcZkBopJxFwLQ6poSCwmcTzAuXdNRgTYvoCtlz5IOz?= =?us-ascii?Q?cMjfyfmSFOjSLQpNnHMCCn2e+7Kyecw+Y4xaHzW5Vc1z+x/9QrZwviDGktQS?= =?us-ascii?Q?VhDyG6zZLqLBDq3fmNynrSEsEPvbzmVodUZ6TsMUDhC7ooJ/8KoEGiZk870w?= =?us-ascii?Q?5XBNe9WVqF6khjZjH3SCqZPAFQL3UC3WwI4a6SjXzWsFcz10Gh7F7yyZ+/K/?= =?us-ascii?Q?5qWMXl1YYQ2Bo42JgiuUdEzq9JSbZHLjH8iMqbJtxiK/tkVsJL1hze+rdq0i?= =?us-ascii?Q?8gNSd73kdeBYPbfMxjFZ8TFeVcQ/dlLt2LCRKBa3pT1uUDBAxC2wtV90gLT5?= =?us-ascii?Q?aion8M7OSmV7jgVxa1zN2txfqoUq4Unsjnn4yjP5Ddw0sSBcrRpgVlyDgYOL?= =?us-ascii?Q?6AGdJbTnu33tTWS3DvEpcxSjeXKJzqGAHJ6S06VMUuGjxoHGNpnYh9Wh07/f?= =?us-ascii?Q?on9cqQhTVrXC6b+EmxOmC05l4pNb+DBHLzvGx+2HIG5ZEmzH9L8eaEprbkR5?= =?us-ascii?Q?461MSYIXKN1ymvXSX9IbcbiW26t1B7PINqmuuW+Jbng7eZVEKRX9QxyL8i+T?= =?us-ascii?Q?aSVTtB183rfqnqwA0roL12rZiHVaeaopa7nICoi+C/vKdCsmg7z7cyel2qXN?= =?us-ascii?Q?gpsW97eqsLzfly8718E88ZRIu31DQ51ROqo3toDKA0GmirH5mQ2TrSlBNXJu?= =?us-ascii?Q?cxc5COeJsZDlZNy7GJYgsBW+cv+5svqgMU5SdfXH8rli6iJsYycMbbwrQVSr?= =?us-ascii?Q?E5jRoETl8lfcC7FFihRvk+bF6Ic2jOQLu8oYu7Ex/W6NnMJWXphxdR4VHykU?= =?us-ascii?Q?bzy9gLzWs99Bx++zxJq/wGSiL9FueJ6Kqn3nePtm3aHzgMbw=3D=3D?= MIME-Version: 1.0 Content-Type: text/plain X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c2dd12f3-acb7-4d6c-a4d9-08d4be38e618 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131430075)(201703131517081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY4PR03MB3272; X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3272; 3:9x8fCMVamiApPxJOqgOypKRMTDWXBreSg4S2UUGldCRbbDN2nY49HtVyVzmchgLmDvxaJPaYQlcnzOmnHmxrDCQNyRdkN8hfxktmHMBAfgAaF0WgRTBlqzisncVu3yFDn/dZocnB8DEXMs9f3Kt44KkfCxwPUfV/XieSNFM/25DKMs0qAyEtozsDRo7oKY5FcnxPiLyoGNGwIuNtI1TvMxNrbTbCZi4mIZ5kh1GaMqg4tq6g4d+XPMEzL51Qrk7HWBH/qbJstBGlZyuLtvkAnEu76UxX7kKr06Dqt1LGUgCjG75rMMf+jl1APWVv9jEXuE7WBBl1BoA27Q+w4l1W/TSBickWFQWTnntbIQkiuGdRtLy8ELDtf+u04EGcHevy70YviOT5UuZ6PnqACM3JMSUuRiaLpUX1dISJ5LWkfBvZAu3mCkLvvNhaxH5TM0yZg4OrNtIqrc00mLTNAbYSwcPS++yb9Xcl98w3FqlS4r2fugKymSUnuTpbEjhVxjn2PEn/rMhstk1z/e4fqOOM2AhjS02Ecy9T2zJ3ZKNMiDydRqW3kOEYwISI1Lw0g/jEt2HaOEd5uAWX36NOp1rHYI+3hA15njt1Eagx/eZMX4vDbxqsKDBSZ6/qbdlYnnKuoQrUsA47RfPW2MMSqLHCRQs5GrrGGBEoN+6bI6P9Xl40r2Qoq5q8sXE0RUgr1vg2HOL53gWnRlV4ni0bJar0PKoR+nEDytZ4xSzz8S4Yx/fFa8J/WszohI10l9Yo1d08jTjHPfauwEfhIv+4qXTlKpn8D/i+VkRr0NhEd887eCAAfUF0CW/zgYIiXh8epLq+UUFjImMiX/9NlUvb72CzGQ== X-MS-TrafficTypeDiagnostic: CY4PR03MB3272: X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3272; 25:vXwXaHou/S/QE7tJ1nL8aaou7yaCbpU21IWkRudgq5BozOtMvhlKQhOnkj/cVhSEwdtC07E7W3hztkLoIVBB/qxWaILh8UqSFhX7gZmYRMM7kenl67YRfsNNLqX0rn4p1wRIHQDueV7lfuZVRKnxMvbzLnaGZjEnt9wVVEA0VuGXM6Qtw4eeRgqtPrFvFJXmL0Ie0u0vTFKbOfGiW3IDOZspOIqMSxKiYdyg8QbeHozuF+vMV//RUv7ZiYEWS4JZHVJHXOhdfi0L+dsX8TNrrdM3FT/RQ5syDtL03YODRQJVztmIpAOluTZImfOuVVKcaCETNTaa/yGfzoxNc6ldR/BVA+fU8Kw9y5n7oM/ctfk3r+8YaIl/QDwqM/FvDg2o9LF3eSV2GHkBoPXiWy6dAUhDAor2I7kMgT8MQXpSG1tzwYdhVYZLDDe8G7L4TFQp76avV7hIQnTTCF0r2joI1QnF9NhUVbmo5PIu0zi8yqlPgdnh33ekZLT7B7JzKr2VExO4y4NBYqB+Q5mzXtxyfDinVfGU78Crfx8yUYnz5b7CI1fZPWKBmOZA8rSLVm+tcE37gheM05ueCfZrk6EK4uokHPFLDj3FzSPLBB4jROo9Upo2mLPF/rQMa/vo1ndbwq7S2l38nz3eHLTt3bAvtOVCvovs9lYbe8Up7C/Qt1LobHj5PpZSRpLLeHu3+Zazk36e7notXOT5rNiD2sOti5eQYM4BxK51ge3iDghUPRgZWV9Hx8fUEwfaw2K+3qe+b5wrcRjfW/FTjh7OX1iw+AxJimOryrwbVcm4XJVPBqsv4GojbR5Wq776dDOTPjqhA1IZLioJUYq64xD3UFwOdof+inMdyrHSe6S1AoqICW4v+xS9bUBnzfFd0xZ75k0stMhqRSwpbX53DlNf3tH1z6Ef9Nl5xOlZ4uktEyf+LDk= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3272; 31:awtwaU8IiURkcsgqic/dfe+l5oRj7k3oXsS52MblwD96/Qn09uu9nPfmnwSGh9EeydeZ4DcwP/Lyv2C3SVUM2y7PBm5BGPsdovVy1ayiFU/7HRH3ecSzQB1MN+bOeffD1jNUia135C3rIqjj27mf49OZZdkOJF4JTgPEGb1i9jlXNU7cEQymP6fPdwz1e5n0Q0O40m2ZYdwkLRIN23SsUmaxcALv+mUEs96TfzJh3rW6nZVmIrE1aPekjIQ8UPOAYBktOmWvAFRzxByc1ooJMCgKV0/PLBH+q5HveLIpSNgTQMCvzlYdiEMTXqTeLQ95UMdnppIUrdDuFBXnXNuP6aGUOkFGXJpR6WOqhrym9eBjLmPf25JTIWEVh/qYww3WGIZRtWLSKJ5r7cdnNFpBu2GjDlC0LYjIgTktc9z76Bi2wF5vV8aUiokWp5/pmN2tdtFOEuXzC6/gU0hCtLRcXdbbRR+/FmLVTOifsu/jXuYk2qL69NtrE5TKaojtXB57P58yXdUSeZmSG/X3XkcamwiOMES0CUI5ggnostz7evPj8iFYIFYB8DgwjcitMxtw56NhHzBz3WPOeSEuSQiHG8v2+AP3eRABOHuQdTIP0wUqnim7EBNJ1fk+bqLnFKpul/4VMwMQRgDKcVxFEhT49NfkGpwLL2VwHUDTkD8jumBCllcb83eSa/LlJxr7I3MT/fZxgB+5OWjG8oL5NGGx+A== X-Microsoft-Antispam-PRVS: 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)(13018025)(8121501046)(5005006)(13016025)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6055026)(6096035)(20161123563025)(20161123559100)(20161123561025)(20161123556025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123565025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY4PR03MB3272; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY4PR03MB3272; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB3272; 4:giCDugTNtmJkK1h+r/V+Olo5RQtyUdpptktuLDuXWG?= =?us-ascii?Q?If+YwfPPqyRLzY1UU9slAeXfziVEqvXT83gyKQFH1TFh/6o63YzQ8gj6hG8u?= =?us-ascii?Q?Djhe6oMx6DyIHEbWTCIv8Zzk8efeTf/Vca5o0NbWSZECB4pPH/mQezEbtbM+?= =?us-ascii?Q?xRrDIGIVVd+7ClgbiXJL/nJLsZsSVe2pKijySIxW5lgD/zprEuXnLNfzpJj/?= =?us-ascii?Q?C6Zu2HJY9QO8pQ4gD/nN2q8FYQsUa4GluhzGbzQHVszxeW8v8asCnW6qN5MI?= =?us-ascii?Q?U+JgEUwbltbA94gcgR+M4t4jeTCjxof4tzkaqs8/t8JnomasLomQ7s8H14t8?= =?us-ascii?Q?bt1ZA4nLXZwYTTd2FPq4NgrCh2LwdQWT5geiDnnYa4Tu27/7qAcBR5Za9B+A?= =?us-ascii?Q?Zn2yk+DWjuxgt5BiLJvUMVjn7hiEsdg1cLQc2f0MT/e6d52ub0uPJ5+hqSZJ?= =?us-ascii?Q?MjryGxH/YNEuC1Av79zGPoVEqNZ7YG9FRFx+LeW6i77/euvwVBZHs8UcBBri?= =?us-ascii?Q?eQ2EcaMTMwEtH4kLHqu4F3lY9bq++qMSHwi/bdotA++juY+beQjSh6LX3/Qx?= =?us-ascii?Q?NpwN2sbs9i3B3rToUL8RJT0fqtasu/GezllDQeVRgNfr1PUgCleFpubB+t5V?= =?us-ascii?Q?mWr7bQ8ad3iq3jkVQl0sL8vgWGw0rfCSQxJznqbuKe891llzwhCSyTJ/blFB?= =?us-ascii?Q?CqXwyo+8vgtlDI1hA8PB+1YsSkBu0gs69DmIfre2nxFO6Q6AH57x1pM3UvFV?= =?us-ascii?Q?VyHXy8BXC6lBGwnxcnJcAKdW6DHTEaJ2pRDhKIDBWlzYE19+oMGa0KP7ngBC?= =?us-ascii?Q?LBPYdi/0Et8Z8UDLWN5BUse7Moz9AOzXmpSk9DcvIYhLhbUjDHZR7B5cBW8V?= =?us-ascii?Q?GiEOIcjI9rtvmYoO0iRuKl1CBdtr5GBvKaQJ2U/rm0Tj0oJBSkkRQ8GlC81/?= =?us-ascii?Q?Yv3KbrjhGE4jx74vSMni886X3q0kny+sf54NuUQh6qNoF8dJyglo0Q0bQeza?= =?us-ascii?Q?5hubgmpaJzfgkPWak7faYPDipnlHiSmq4hgabVPHSjY9jEPwjkOMFqqR5aur?= =?us-ascii?Q?enAamES4jIVgcIjO57/L84F/CRGzNoCpVUIyi+bdtkyYcob34jdsrAm1miw0?= =?us-ascii?Q?8pL3Ee0wB5WNRMfWb4RfM/3L5JbuMo1mdF/mF2zbHA1RIIInlQMXYwdRmS64?= =?us-ascii?Q?D1NDufEIW9zK5K+OOTA6suIDrwK0z/Suwpv/R066rTV7WzTEHZlKDZgjBMHR?= =?us-ascii?Q?PMVEi8toY4eu3rNxnyLbf3D7yelAmRKYlleQ2fN3KzlhpSgJpR01JFickj+D?= =?us-ascii?Q?nK+8MMydQZ81ag7JWdwz20GlsiUtjFBDNN8DeMFWsW?= X-Forefront-PRVS: 03524FBD26 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB3272; 23:91YWntW7WS6eDJAStsAw5k1qfZkVEQ3pbL3udhshN?= =?us-ascii?Q?AIuBae1fckIc2ub9NYPyawgSR3nAn4RFptg1PFXBV/F3rCfZ0PK/ohYUx+yD?= =?us-ascii?Q?5ytscJhu54182eGneXuQBIwZuPfRbn4/6a0xz6wVdzF2ju2bfTJpyYq0xTlB?= =?us-ascii?Q?v0oWGug2PugPQnnK1cC6TCIdZ2L3dbJBR7oVTjRxEQigBC7a6MSh4TRJZ8a/?= =?us-ascii?Q?LterggvNBO0TGPKwZoOSmR8c9BspoWnLJ5wC5DzvdHljAXpu83ggmkC53z8M?= =?us-ascii?Q?hpQJYyFV1mYpNYNTh/7Kqk1Vyu9HrBreQorVH9+OELCgkRUK0RxCVTINlcJV?= =?us-ascii?Q?GqPaJLcENfo/5XtTjizao/RUv5qcrgFwFh+ZTwwmyaJylpJ3T+jth27RrboT?= =?us-ascii?Q?qpsJByKrTAI1JGCkA+tXVmvhc5s/8Dz0TYGzyyfA4w4QimlAkoZsroOdz/CG?= =?us-ascii?Q?LggBEMEbMJWZSdgBH0CPHbUiVpYjRer8DoFjWVx/NaEGgxCki4srm+wx0aep?= =?us-ascii?Q?ZlNjs90e7NCDmApvqwv6Y8aCdf6Np8hGJNnml9ykOXHqGCQ9jhn/UjfLvFSG?= =?us-ascii?Q?g5zXv1jJi0yyJ5tQFIXuKC/7K3Ip9lBEqHSwiZFOvUeB23UwLZPjwGTJ3HY4?= =?us-ascii?Q?PaxRsPNsgVI1wVPvXgEWh/0edAkJLfaHBdsOJz9LxpB6bahtUjlliLdbGRDZ?= =?us-ascii?Q?P1fMvhZ1dXawBnvLi6oY6Uqup2o04bSuNo5aOqKMABVR2v8/FtfigGxd4giz?= =?us-ascii?Q?AtQHtr5m0kJ4/xcpAyD4MOdsKWZJDnS8mx1FzA8A4joiagnFBy0eCJfRCxKE?= =?us-ascii?Q?n2IHGLIV7ajUtnk+S4OdY07DMD0dsvef+Wa7nu8PqUmYB1Hd0NQhZjbYoBL3?= =?us-ascii?Q?TF8HKuWICq7eFSWEOWKApAQ7f7xOxT5RTAds8o4Rv6T6jfXzqoZUU/JsB9LT?= =?us-ascii?Q?wf2lkTYSdO1AV5+t7i4K06RAxn5qZtAlZJNEvxubMXhb5L6Nudyk44G7vzzj?= =?us-ascii?Q?0JuIUQLqEHIBzGHGYFWSOV8Em+Wr132YPI1vN/GTKMRQnIE+XbU3smmD9Q1m?= =?us-ascii?Q?Ger+Wd09w2qJ3yzUP4jf5Fv68PQD31C20f+4BTnYQ0WuVrdV8M03lQpi5W5x?= =?us-ascii?Q?UQ0BC+1f0ggra1SQmcVh4yCeeTT/3LjIoxQSmHMm6136GJVNh5HlC52nyo3+?= =?us-ascii?Q?7CXhgAHZT3M/YZFbw7z3Ub/bDk6UnEVnP5XcpJXxRduCTl/l8+TjBFd1fv/p?= =?us-ascii?Q?+CyPjg2xapjfooFAR3TQhFtFqqww/qb52GDLwLIuYFHKPIu+Zm4NZUimPFQ3?= =?us-ascii?B?dz09?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR03MB3272; 6:pOoTRFpN1/wu8tqQCinKnKqQjJQncTwZ24ot1IWVOQ?= =?us-ascii?Q?dnMZDgh4ovU4QL7r8nnSAzx/Z8JhlYekP2ZgJJF1l5XdSGh+bZDL1LhOBqFl?= =?us-ascii?Q?2ofO2IsoIPGe3ZhTHPMe9JNf3+2NhU1oNQE/wXUWKc05PtiSFENHUf9U8yEz?= =?us-ascii?Q?q7Ooz7DNlg2JTDJ9+q+Nc+1xhNx8oKBXvJ6514Xdg5SuG/AXaDe5JGW72suF?= =?us-ascii?Q?0gRA9qZGM7Zq595eiSWHjxql3cNdQ58Y3uHm2wzFD+qct4EKotv/hJD2r0yQ?= =?us-ascii?Q?EZ/v7RoHfr0+Mw0y98s+301KhKPkiG/UZ0KW33cs1qSacudcHxBHfh2U18dF?= =?us-ascii?Q?ZFh7TZ49D3aMvi//fOvBH2VKTPSKLhcLhGJ+nJ93e08wb+o9LaybJnhQzrH1?= =?us-ascii?Q?tJqz5XyHzJIGjBMMrxIkDNwKR3KYFuXNoiAg7259yEeIfNOdyXvRl2zRivkU?= =?us-ascii?Q?haqiEnmsQUjcv+wMUsHz7l98qwe0i63fZ097HxY3QuUk2L8wk/jEfnfq73yX?= =?us-ascii?Q?czt+Jz6b3/PYrhjRY3SPaqJPa2u1s6KF8RuV+bFAmXIbWdGFpL+F7ugpZBbv?= =?us-ascii?Q?33PdEQeuXwClJU/6yuuysJsfx9pCieTSj/n/AFB8KGnUHkqtNLTvgZQImUIA?= =?us-ascii?Q?P1Dj8mdbAG+cKG6igZ0VXQyrHcy/HaxAzDiYk3bxnSb1zG/k45SZAwq5qIIu?= =?us-ascii?Q?24URoAw+E5jZqRu77RwQyc8uAK0gCsXSvi2EnJx1/ccnxgSfwK9X6gb77ZiM?= =?us-ascii?Q?PNXZoPxdVCnMoV9iuLCKMXOQP9V3OIU/qEeOaLOxjAE/t8T+en24gmy9a78d?= =?us-ascii?Q?Bld/jjQYAIbP9bED2YCN7on1ERT3Xj8pMFEtM1KrMWEgwjSqA27OfRmZj6IX?= =?us-ascii?Q?X+05UTh+6xHb3Q5YkwkM+e2aFaraD57E4jJFLNWI/YgQDx/5TEQbBXVcWg5/?= =?us-ascii?Q?ea4pLE/A+KgfbjsYqtRTEk4sRAsQYvGcfdF3bU4A=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3272; 5:QkqajpAF2iBy76jxZEXd2NDhjfkatFOUa6jEjrGDzMmXmU2/yP1UQlBdyUKhx+bDOD4LdoguVI8CXw3GoSFzHm1LL68YilYWN4OlFGBtqH6tV2NkPKZ6cCoQYcnOHOBtb6xw4bLG7QRdpo/NV3PCgw/u0+Bs44340aAl4qRA1sIMy7z1T4l7Btaw76OnRyCh/SXEzPIy3I/NpBkKQgDoJB1CeGMUGw9/3M6gKvOfSrG1M0Ui+XjBksW8fKV2zrFYjwMoinyx/fw62Q1eib1VRM4XC6cZb4Md2Ymub6LRrG0CxxVpPoIEOUSCZ/OI6jYDJQEYmarSgsC+cUtLDmuC3CWl5vcmaNn1CTHlVIMCuQF7OQ4guL5q4iYGXlklrbQvWlsHrOpD7R0egHhTlyRgtxDn8UOvH5YdpJCsoFNxrJbn35vxcpNAL+FmKrdEdxjsfW8HX2dAPAvGn3CmloMONnEWl5c4nBaRqd0/5so1p8crjaexNQ36zNvmbvos8oHseC+YmJAhNAAoPVGygp6JyQ==; 24:hw8w2lvW+1Senj5EEMAi+7hfPqrBazqC6uwZCjXP3wlI5jclsGp8Epp5xwdp1FWVXp7tjNWeoZ3dhDrpVNxLYjbvaDBiKhfT2lzRPUhI8xI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR03MB3272; 7:45fxwZ+Wx7BG6kns8ibYGBz8cwk88tYOf8FfDsOF9Xw4nQs5A/cFxe7u3Ww1t0EUVMxWHbvVhe6f0r8AbfG5cOUcmoTD8M6bveGgMRB1+u/4Gl9iD878bUvROMDBJt+vQoAj3R0eVVdjdZz5N4d+UheJsMSFeobL4khep4SBF4P3CjoZEdud80mOkjTHnykDXgMaHEzTWSwgoPs/FXYnJ/xA0ldhFkv72VAsa68hjfzk2/I5kCf9H7pQmHGG9gC/k3n9xNAyQ0BvId/Ln9+V2uxjTgpGnF972ivlJ3UM/MPIjPi4feyZCqJ1tRYeaET5ZnBco1gSKQJae9eQ/f2T/g5EGN8SuY65V80OJU6jyxO0J2oZ6jYNfVskkPBmdgWyjF7hnAd3hRZgJaRNakfvrLwKBLrcCd61izcpZBnEzV2i4f9W1TL21rwh0X+MrsM71KMqzRS7st2mzdapDq4sJz2t8LUBF/2fHCQA8Nvfy/qh553iztEHXl6piCLey0PjPPYP3XNl3dhH6WXX/q3cMjn8ve7zOsumx9eD3cW1dK5cKBUNG+UgpBuBfqm0w8c7KreEzK4dMw8M2fyLbuSkMXJ/JzXvp1EGlVYlRTrxKOt+0T3s350Xv8MsmEXejDkq12zzojW1ATIDevpFPY5g3BnBjywrNXnOqSqDlO7lK+AdkVYzGqyrSG2TdQ3v2WrmRvnIO1Prrh1B0PMRL6fE8QKo8Qg9D/KnJ/l/x+nE+7XzCFwHjUsmZgNVSllIMuuPZxqizr3f7imUo8sKaksp4WJDv+KlkIMCc0YhM00vMfg= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2017 15:18:15.2031 (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: CY4PR03MB3272 Subject: [dpdk-dev] [PATCH 19/21 v3] 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Jun 2017 15:18:24 -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 --- 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 #include #include +#include +#include #include #include @@ -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, ®_info)) { + vfio_dev_fd = dpio_dev->intr_handle.vfio_dev_fd; + if (ioctl(vfio_dev_fd, VFIO_DEVICE_GET_REGION_INFO, ®_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, ®_info)) { + if (ioctl(vfio_dev_fd, VFIO_DEVICE_GET_REGION_INFO, ®_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