From patchwork Tue Jun 27 13:22:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 106435 Delivered-To: patch@linaro.org Received: by 10.140.101.48 with SMTP id t45csp1211792qge; Tue, 27 Jun 2017 06:35:55 -0700 (PDT) X-Received: by 10.200.39.24 with SMTP id g24mr6141773qtg.163.1498570555279; Tue, 27 Jun 2017 06:35:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498570555; cv=none; d=google.com; s=arc-20160816; b=Ha9LxhaYiMAvnMWeJpI83i2y8ee0xHeP/aodTKwtvRGy+/nRPH1ZggXyBmB94LOQgt JVO7u4lbRoXqYbsCbGmF7/wcjlN30MvfCCI4R6qJLkSW21oDtl6OM1yc6aH5DCS852lU kcT4tMfcXmQGqB5beiY7SFURPW6DA5aDQ3otopfbJu4bWcY/Ri1rpwNCmJgVOUJxAWI2 yq6MFMABmw2icokro8ScKRhwN18juDC88v3VESzIwhklTxxl5L35mr01Wm9II/uCSlb/ 5m6NABgGWd098MdM5tR0+9MS4DEMTNtlRT+dInAdDRigDo3jr5UdaTgLKT/JgI9xorSc pv1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject:spamdiagnosticmetadata :spamdiagnosticoutput:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to:arc-authentication-results; bh=iEuySg1IQpO71Kiin4UVTJTjOGObRqctUpAUM/QETrc=; b=hFhBQY0rt/BJd7+/cfrVwS9jmaK6vHF5t588moxpADQuIpvwd9FylEW45bHUCxhWF1 y/H/9aobaORDPrZlBuDJUIie3HfvnrbQR6PLH3378hhJsrMUmN72RTVagI7OZwMZq6Ud lHdGcQ5Q2CMw6uGnYwt4C0MdNCNAnYdLvjJtSTvS3c/UziN3vqOVVmfZ5lW26sK9dCnk lEI2KXYyBF4O+8LuF+jmM7NIJu6z4OGIW/hj8kHWiQK08EYG4YQoV7Bn4D5hgi38kjuC sDEjabTSMOEEZp/izCW/w5cI4QFeOjr8VWZAQU6eUzi1hnaRbi+Sl6kvBbSDHPFLSkOA NA3g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id k8si2759658qtb.392.2017.06.27.06.35.55; Tue, 27 Jun 2017 06:35:55 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id E35EA60665; Tue, 27 Jun 2017 13:35:54 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.9 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id DD46960656; Tue, 27 Jun 2017 13:25:14 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id B75C960D69; Tue, 27 Jun 2017 13:25:03 +0000 (UTC) Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00092.outbound.protection.outlook.com [40.107.0.92]) by lists.linaro.org (Postfix) with ESMTPS id C3F5960D6F for ; Tue, 27 Jun 2017 13:23:09 +0000 (UTC) Received: from HE1PR0701CA0001.eurprd07.prod.outlook.com (2603:10a6:3:5::11) by VI1PR07MB1054.eurprd07.prod.outlook.com (2a01:111:e400:5096::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.5; Tue, 27 Jun 2017 13:23:07 +0000 Received: from AM5EUR03FT021.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::207) by HE1PR0701CA0001.outlook.office365.com (2603:10a6:3:5::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.5 via Frontend Transport; Tue, 27 Jun 2017 13:23:06 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.240 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.240) by AM5EUR03FT021.mail.protection.outlook.com (10.152.16.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1199.9 via Frontend Transport; Tue, 27 Jun 2017 13:23:06 +0000 Received: from fihe3nok0734.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0734.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5RDMhmX014767 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 27 Jun 2017 16:22:43 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0734.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v5RDMher014758 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Tue, 27 Jun 2017 16:22:43 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Tue, 27 Jun 2017 16:22:40 +0300 Message-ID: <20170627132243.17298-3-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170627132243.17298-1-petri.savolainen@linaro.org> References: <20170627132243.17298-1-petri.savolainen@linaro.org> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.240; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39450400003)(39840400002)(39400400002)(39850400002)(39860400002)(39410400002)(2980300002)(199003)(189002)(9170700003)(356003)(2351001)(498600001)(106466001)(2906002)(105596002)(36756003)(47776003)(8936002)(110136004)(38730400002)(8676002)(50226002)(1076002)(50466002)(50986999)(76176999)(81166006)(33646002)(48376002)(5003940100001)(5660300001)(2950100002)(305945005)(22756006)(86362001)(6916009)(77096006)(189998001)(53936002)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR07MB1054; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM5EUR03FT021; 1:MrZZUktqApkQjRTHufdW6tMNWW+aTQYs+Oq6oeVSLLF7IUUII0fJytL7waPLRphUQZ1UEAyZfz2ALfb3oZ34u60EiIpGcmswSgi7jvC7c7+Q0fO2fxTrd4O2nNvzwM2uVtI+igq9feXxzhu+0MPjxgAY7iWMhHqmh5qSjpK6KfrLE9gBpZcCnCYLD78zRQEBCMQvmNW6Tr9NxGeZ97G8NDnPWlXmsv0VuWWshaEKghHzuW8n2onMPlOIL+VoDGQdr/p18ANu8EaDk6VuPbP8Qz3JJq/I6e5je2Cn51sNe00SRARElpxQ6Lxtg71GZT+T5/5vmj26bHXAuwh809EpEFQZgPGPzrZEPJlNVIaVW6fKhZ/Mgw2xDYVNzzOMZkaGktFLmuWJvVQNp5pXPgxv1rr1gfxMHB2IlTi6VHd1MOJ1+f/3MHBa42/GPFlcELUaG2/yvl/C+EVNsCHddTllju6Ym1CLjcBeIX16ASqdfq9du7WJy0uU+MoVB9Xf6gPCbC2zmUIM2Vcl3lUq9PXMCiGhtTfXhr/qSzBd+jBvqrAkS3dWwndPOkxxThzY5RUuIa9xS2+6MBuALc6t6BU9R7cpM5IFbZFp/9Fg1ud8FzplqfI+VIxNojMjM/FVQDQpr6i1BadFoeRgdlVAgR0IM9/AZpbghldblm3EILO0Kk2i+pTxFAYXqceKcYno7TG+16AtsX9zjw8O47Io3jIBauIRq4Rsq1z67YlsZR4aW59gXrSVmtiHD65eB/3gEZZjVOkNWBVeQoHf3+OS20kjhEWO9yAPk0mKG8XybJxEbV8Ukcfc4EEbtBBA+JwaH7m5mYF46d/HkuZFDC1NtqC9sdEnkUHaBSpkpLmaRhkjH841VXw3h8yJlDq8pLMnOwRj MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 04448909-1b34-4e14-9558-08d4bd5fa5a0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506067)(300135500095); SRVR:VI1PR07MB1054; X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1054; 3:MjErmErM4iWYMUkjbLbNQxNKE0OkVWCsV1VCUU2VZga74YUIoXZh2J/hgXmug+yQAWwvFSw++R0tMGNq8jGlJCr1+k8+P0dCNsC4aFDuxkuiJ//9o/2qkOiY8vtX3O6Wi9DaZqLaM7SiFuk5OUaFuzDxJLPEm/vUFNXVsW8Dw6Rwp5814Ulhp5IMRfvjNfjyrQnjr/V+nLpbWS/pXQP0xTPhT+oCvXzm5LEtZuhNp86JRl72itAO1qFYYfX2KBTXvAtOFvDfpZ7z8gZWqisCSHcI9J5TQXddZI506aZUeS9bKSLVZyFclcMHHssgXYmohdnKrEpIHeke2ZILjJY4JsxmLijwu1Ca+7tuKozYMeTg7p7r+3QI4efOLQmjWVxPdvVZthIGy6W+joRXLyBe8lfwHvwIroLgMmEOJF1wG4Wz8jTBfsxpGLOalNoC7tyrv+mazMEr6yWs7PezlwfgG1/ChrpQC0KXvCC3WjuKUf2AtyUAO7iNpZmpdvFRLpRJKJ6elGCsgNRPWMMHKjiIPFLH+B4PwEXngXi38fmBSgVEBWc/B8BLOitrlVbchTcPnWPkoge+p65Ww19NiuvM4WJ6ig00PAMegsNDoxN7l2L9WyJibwiCYLM6KlgsLBY7acVutHWU23uHTb8rwvyShTZLUBjkF+b41IhDZEkqGwO2p3saREKDh1570JbV6RT8hiF/+c6qdRxBWvjfE4ix3LALyhNV0nk533jTIoJzajwVNH6reptnVsEXUVyAxCGwXpXfn+qUFulJYfVFXN4NqE5g19jjbTXyXUSbZ8rWLy4NvPK5Ul6h57YJObq7ipGrpsiQ7clBe11cIahb2ySGkkUTLvl8oXISBY8ZRSpVOfofZSzKi16KzCzMgeSkid5I X-MS-TrafficTypeDiagnostic: VI1PR07MB1054: X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1054; 25:Szh4A619umAsP1F4h0MH5lOFp6PIARWFiXJvp9nqGOC7/PQv1GdoP72PmGRzvQnKsjUa7Te6QetWHG3aGwjYGiy0XGRChuWV/vzS2+SXPENnwYgmGBh6nanmVhD05envfWKUhk2vhWjQ8fHGo0B3vDuw3NkA06p9lDwrWFLiXngMLjKU4ow2yOyth950qcLnZ7YUtJKh6lwnquDGy6Ukqi4Sqk5EB/ET5acCodA/ROiLcyLvYWtjy6riu60Yvm1HqE2Vn1Naq/9tYpwiCXqE1QlAQsRnqQuNVrKp1MD9NaQr/6XO2z9S+v9RamnYrehszSqFx3BPQmKrflWTtD0MJlfpt7uAnc7zYyvevp8azYhb7T/hwWxJLY+48Dg/9lOXytXuHLSuRdCxM8FUSMMFUWSth4WVyNRvVeFh9GGKLgZl6qPVXKsMMo1Cb1T65Gsu6M/izDYWrpHr8pPgHFDzjhAZ9AOuQS+i7rzGa77IVM0uh6ngKOi3AfqGt7fYhcLd2TqEKkCIT637YJQ81DHzQQdSTdeVYeI9u0Z1di9piMzEjVyP6B7xi+hYJws1LCj6EYRtqKEo3Gu1+1PkHvnvw1DsG/lbPaMmJvNIiWBNjXEMgk68aaeevh8Weue12DWGoAjJiZPC1P8qvZ/CvUqYW3kJnwN9SMmqQeH8rskbEYIalv6CzDGaU/Gvr8JSOZuLw4djGdrWMQhEP1/0glrf/iA0vohvA48owUVSiAN1ylZGnKzj1Ss3cdi1Ubg/dY50BG83JsN1UX5uyK4X6EnjDuecn/gqp5D9cHyOPa3TQZmBKk3fUhRohISjl0TqZsgXzasxBr2SzCjI7T9ktK6qEf8tKoFT7OaBD/a/IbPwZ9M1Xm2IXtKUSsdUlA+mO3mUsAhI9MiqwOpYvEU2JN2RkLZZJrQPcYs7X8+zqMxHU/w= X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1054; 31:pQS76jqtzqFHQUBRK6jXIbNW22zhLSqkDfjiumlFLwDVDk+TTWFACoBhqjyEtizCM4urtvanAf2TrkFx84G5iR9JmtQxnH1J0zkrS1szOceje+BqycHP7IBWUuq7JaBATKT76xhPpsF6b+NVxtxc7s4d87Bhp6rct/SDDYq7Q95jvbnsBDr7jPYp2H9ogxsw92NhOZ0VqEHbGxvJbmVo/jfRhPc1oSpZtMlkKQPNaOY7lsUDKs2es0vowlvsygWLapzjbgWwDRxzzPgilLy2gstoJQBI1opA3uZGGu/pfIPLwDp5efolW6XisrmjOAXfYR+mUJM8z79pFWfCBAIcwHUT9W4uCLsBKCN2gUI3hjqSneEM2WgmNrQHVoHy0E4jQUSHYCBG6XxSu/XCYK9eF6Y37UqyDZASSl302QfJZ9kFxEiGUvvq4FuGPVteLNiDC6COrIWpvcQNhH/Ai5MBHMIbEZjOt8r4tp0Sxl5gz8C7exUbRFC9JiYNk4lQxJIbbIQye7XkMexaqKWRr0W8V7XiJjuDqA7R5Co12yKcqh1NWoU86rwnFdARQTtPVkrczI72eeiMNRVTAF46b+LnGEb1RgZmsUCOYy+akIgm/6BQaHUiZmS5SQXWQktjvo8EOwmuxtGMmpDocrZzOVUA+/bxmeiTTIjUlRUN4BLCbifHPXngBZQbQmFBDS6Y6xxw X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1054; 20:G4RIS40OZ54luClTvxUjZQ3G3uRpt2gN/5JJBR7sYI7J+JWSWi0R7xn2dA+vyYivVmeQNfQxA5slm6wpfY+nKUpqgjcyCfGGSbGaRCjPgzqpvZvtayo655uRHA8rx3sHS95BdRJdWnBYELg9/2iqnn0FKZNgA73SNpTguHTY+hKJ++7A1Xv77aSIuwzHYlVsiMCk/e+gXVCLbRGd+mo2EQci69TjD9heU48W8v9PIxlVTb9PRsXahdm31mrzMEEQr9a3XOvRVTlczNDkDQLfSF9fsQW1l6DXSG2/kfy5SWvs9KPz6+xTZLAjDFcAvViovuGxJKuJB4gQ35EAmBJ+KSgEYFtkzdEHFhopVdx8I3Ak2ZjW0RP2JYC19WAwKeXbnk9M9S7rvEbIvcZXn9/aJ+hb1mwEt3bbGlwMcK5iUuiAffsYPWnuEl+iIyhNdEgQW0AYsQ4/iXAPvUrzjntqv5UcF5PyJkeot2EyOHvPUBBHtgjzpBG6HY69Q1KpT88VpkIzsMVRoH6xsYWHkTskSCB9afw6YzbvmyplYHiEK3yewB9jrZybE/h0u0LbILhOuLBXeb+oeb/q3hgxwLM43i3W++fHw9Vo3ZDBtNiL1Ok= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(13021025)(5005006)(13013025)(93006095)(93003095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123564025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR07MB1054; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR07MB1054; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR07MB1054; 4:zasSi3Ja8R9q2owvgSCl7gfrstyULeu5FgrMURrQc3?= r2aol/q+gksE/TPihjtbRVRxc+8qRjdfUC43U+p9GTR5Xl1x7J23Lw5h7plLHnpgG9EWYQcCN5BXoNWO+ryXq4mtSkWk8G9fAGygOKas2R1c8kJ4aSe00lZk3ErG2f0427pSeTgv02jRr9yUHwgUJRRfPbk6a0Ejxi+EHxy9JOM2PcGXCBrNWjLVXQ8BDHufMDweSo6Jmu2Uw4QJFwapPffis1xfWd9ZmQQEoSk8qE3wzFBQcmXvo3RIfiTQsUe7u/vwy8gTIZvuKwYwYUKlXgUTE74KxrSdxWt3yzbtGqeo1NE1w1ZD5UUx8E2d8epAlAKA1nAeDRAf41B3pbZ3cqOunZM2cYrMpykG65tm3CTK/ClRlvTqUWRKhoFGDisRPSyRM38N11z7KNISYiEZ5WBelTwIuwtha6qzXVAwu6IuHOL3WfTgoOT8XaHf6OXhJEI6q2Cdngu9isMaKQbSQJYh/1PAI3vkrwKaXMrAGkEOi7PacAdo/XnPlW1/VdVkLBP1Zd4Ie/scmlOncQTNpWvQrlUa6ZOeI0VTvYiKhe8vbOrm+bsuE+JlQNu/y3ZES5unOoUNZOYwWXl41/zjdGtzjlMr9oBTVy5lQQ4LscQGuzSF65adINHAOaWpCW15CDwEwT1LoR1NNFxikmwj5ZZ6CdocZfKzvi+WVtn9E4A3IjKq13BhZ48G754rhcBFdFiYNHX3SYjqzQFwza/wAnRa0uZ+h7gSBSLB8Z5k8S/7xSR2E+e7oaj1p49NRCEJRinxyCIAvOOywBrV0IopR/sAGK3jG7MHR5aqgl/LNOohCwq+jMAyRbIV7KaX6zH12wwxPN3JO1xyNbF/4zoGT9UHmpHV6fIEQ67/d6O/oS7ukkGp6rSLWDcPcCNtbcU/u41fmTUzSEr9ppyGLyT1jvI7Ouw2n6ysXwD0m6+ty69E432qxx9UmzFdFocT3c9hSMQnhVBxs4g9N7RPB+gh/ogJLdwq8yUrlA0d3AB/z094o/AehM50p9gAJiW9gHaMxxmZz8AbFynTXT5wQXSCH2SCSFbALkkUWooqJEZlZQJojfo0Kt6pbO3gI/+idEImvzXS4/4YPvsLQ8bmGssFOMC8+w9QwW8KEC67H2efAJRSVmCWOAE0yzbUUp9iFgA3FXbiPhnCB00fHVGxySXFaK X-Forefront-PRVS: 0351D213B3 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR07MB1054; 23:re9igfbtha/jPk99VwvYtDEHgCkqNW94HqwtATZmm?= 9PrvF1R4Le9pU3ffzZLrxhRBAlDnGYEGEGTSecJt6fyiCnySBktSRwH3E/FcJfGkhaj2IUDmq3HvUJyA0iZSYwMouK83GADkT/HgOjwHY00BDYDDv1Ssf59cP5LiV5/+PKx81ZA22UL6n0IETY1O34zSqSQXu7PkZ0lOprZTRnfLKSqcJtXGg2sdEnU8mDeqdqhLR+yCxHln/NZdVr9ZUjsDhB663DgyZL/f8nBWKZF/jSXtVAx8sel+0mYQzbe+pQbHFErQFSGtvawzCUQtBnimofXONlHYUD1ToIcsDLuy08iPwQzOgNpM72flIFWWCxNU+7I9URohCn0UbMmeCoNL2IkwNvAAvm5xHh7z4LauKSVna0GMVH6UTkixCAC5gFLuPuhiZ//TAYz9RSr0ifNtkntt7Uc1or1RRdbl9lPGMkr4V+QFO2kNmDPJUC/cOPyTokgg65h17THG3DMib397RsYNP4Kwl59vM+s5ogw1B74cFmLwfRa0aclqvy7b5tkLKXOnxiWHuMnu7lbQOa6+GzsWZ7DCDtOPBPstGzlf8nCRXkRAdhKcsk0G+T21+ZclPqItynh0Jy3DO8J8VURSW+WhwTF25+lCLFjoogHP1o4S32dMzZStt6R9ltE4JEkrzAXHmx8zg7GlOStabpIkZxHYHm5MaL/wK6mOp/BCObW5OiMsL+RC+PljJKJGW8TWngYV6o1+RfD+TBAUVdWoMrnG0uh0KwqqqnUATObNPMKMJzpoUBQ1ZPy+wF7RfBjgWKuVfUvxB9GWQTSiQsLDgvOlQXvNNrWhOvq2rrdb/XJurRMX85KPD/PSQv7KkRIuNUJpkXy8mfEHrPt2NKKkCi0iH9lZ6/ZwnGVUZZsbJqTb6vWhbGK8P5SHpEc7H2B3NymMGqn516YfXbL0YNZgILvrFz9OP+QuWzeT8YjEazIqhCX9IKol21NuozqLxD40E8LbBPjHdZ9DUB8KcwT87nB6/RGHAgUUmyrOc5l2Q+Qm47KFDdVLkNjN7KNvopMz6HobWvUGI/OBwFRNzgX X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR07MB1054; 6:G5r1qmKIix2VRjuuU3lVU6tXUdpObFmA9N1qZXzxfH?= GgIP5er6Xg27i1xOd0jP91fFbGVLgonYvgMLk51cEhmVaILTldvKeROmQtOgPuzKBjGDaz0w4mnFscVxSUb4DVHjXrS/iMimbzGI0LJJ6G9L1uo935gVo4JAAwxAW8+KhJ4nO6PzECuy770eIeMy+7RI+KA2YXYInAvlElThgpqrLBBxiGMNhvTcGHmV5yV7UO8d0oI2fAbsd3PMF/fYQ3CNNpRw4X8R5u9412mMhPJCqEvW8vCId4+8QXnMSGf0IfEPVUHUM4QvRlSp/qKxHJxDLWg+bZD81vKytuWM1lbcgdQR1VUUBFL1fCXkyHsb7UO9b6rcQ7C/slryYUHXJdqU6dO9ZRmQyFYdOdw3M1/a20zj4axCkpJNuOgbws88L75C/nXO1bD5WEyXw4XTH0hDHIPV53C2300atpJa7olM8V10XQVuqs6tveInLKu4bGx9DAvd2AQHXO68svjCytP8fWAnKnNRNSc+bO5IjhLNltcBCkBTcsCn5FOaHnr6ytoNHbaP1UCKfY/WNCCB8oajzOFrFM+S8oxhddKQB2Vu3GeCR8iuNsKnNwDzXhsgYI64Bw/Qpk6eC36r8VnUTc8pXJ7t1k+IciqAFWV7X8jM0IX60riKx0gFHU+XnblYevnisJXaNjotBwTrD/mFMVG3ty4GWELs6fH/No6DnfmWAJur1qyEg068T5Nb4goaj5WWN+qqOsY4OZLPekCiCtdX4ZB2+6gYKfbkJZv5Mv4LYniFiGV7VkuxbwwGP/CskRklbZCKDP0a+OIIjnhzsiCNppVJYQUSx34iZE2aHpw+1q/9GAjWN35Z/3WKXV1AXDaGgugm1VCYw+C39Qk02XbFw+NIokjfJhLdk2cVY3Y5H04wfyDKSmevIjjnScNaWdnw5IMvJFR2+uM7A/tzzqiQMslm3meGnEkjbC4hgif4zcJDA4Qsm28O272zy0lp0+y1h/46WOdewBKmPH8bMy X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1054; 5:hazM3raze5FxoHxbeXQZJHy+8+zTEZ0qVygmW4FpiN7lFOBdak8RCBQJh720R+gBNyXEqtifRbOneBSNE1aaS8xMD+JoWP0KahDDS05xLNUZ7F6ox8ROWWhhHdUaG2ubKCVhDpFI3gr3gauWuOG/3zEatP9G+xyhWmhAmtq5USvhRpOk1YMPZ1ixIM0Ho89252hgzGpTLg/Tgnqr9fYWkfjdhQG4DlB4/KcFrOcrDDMmHn1rswV0Zzx4oDToTuUyOmyfbKcyuMaDC04355K+et9MEN3Q0BI8DcG1BTjRGLc/yjgz3vMxhifaSwQuIsjCcBN31FyVk+7UPj6TQkMwWP8IZQo45iyeIhTShjHIfZwsa4w/2U/+pLbMDbEaMToufacdkuYVQrx9ZqhjNh2KoX0vKFav/k/7BKxSLQFybaeud8+bLVBWlknOXLrlBHH3Ppli0ei+Axgoq5rVaMtnBhnuUD7fi+M1FbdtInf2Wki16Q/rMZufkdf1qc0C4vhB; 24:rLS2q25Q257m4Ply8/3xsvveZ74LEiwfGLF+VnjzaGSK1iB3Yqba81Dn8hR/bGdpDUHYV0CR3Kca++l2aw4oLsGxyexQP/cPs/zqq5yvZgU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR07MB1054; 7:1aBwXh9zYqYTzHmqyNHggFYImuwgrQWzTAayRcJnsXIswY9dUFA1ThFdstiQX3xBwwDYRzhvSOWHd/jHSzdV63dV8yOg8eR3WQr7jVdTyz5is/4e+shdRYAfvQOMqhtbRpuqyCX8s/8U8UeD6Yz2YfYeSSfbymSec5zXXSEMyvHJk/UP4nVlIp8qkV9KPFtGLNsUPnoEwJuO/yNdiZ6vcMIaHVNddiSKIfcaiyJ+FMO747/BrmeVVkCNDqkDudxZCAHc8D9QHoR0XwCyHab5gpw2SQva7Q/egaQm8J4YCQNqyQAHma7i2WEGqMRXR3IbhiWSDyYofT1sqyWXERrYM3o5dfwHinegwGnY2jWyI6ndqvQrCd3GVsiFJPFt29dhwc2gnAupnU0OYNiV5cBApnTZ8exEQSE+yXg/0HlEWX2CzQFvy7gUlaQO9rHCQZJA2mwu64jdRWMC1OK4O6hUBKTDHWa5b8OrIwwFzuy5AqDGpaLJomtA0U19oUTkVHvQ0UjKwrvx0ImsA+sIvfJxp5+kdc7p91gJNo4Qz/q/So37WvQ7wAfpBG6qofccHf1iZvF+M0og3aUR0FPwP1m2nFQ1IW4TgKHn0fajJ5HuBKQdKp8tz1ullxDCt/EyXeie1zY0uSJ0E73R+EiCvvMPHb+orXEkGl/246kPrkWmG3Vhh5FuM8pSGYiXvmlXS1lB+iuJiy8zw/UDVxH/T1mf5teoEqf6MHwAphmIfxopFqHvVec4VIlUHGj6eqdgL2bMaWZam1dFTFzAoYf2FFtlwv6PvYI6bYROnPFt8yuXf9o= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2017 13:23:06.2827 (UTC) X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.240]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR07MB1054 Subject: [lng-odp] [API-NEXT PATCH 2/5] linux-gen: pktio: clean up and avoid conversion X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Remove references to qentry as it's not visible in this file anymore. Avoid API handle to internal queue conversion on fast path (sched_cb_pktin_poll()). Signed-off-by: Petri Savolainen --- .../linux-generic/include/odp_packet_io_internal.h | 3 + platform/linux-generic/odp_packet_io.c | 81 ++++++++++++---------- 2 files changed, 46 insertions(+), 38 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_packet_io_internal.h b/platform/linux-generic/include/odp_packet_io_internal.h index 89bb6f3a..17239444 100644 --- a/platform/linux-generic/include/odp_packet_io_internal.h +++ b/platform/linux-generic/include/odp_packet_io_internal.h @@ -24,6 +24,7 @@ extern "C" { #include #include #include +#include #include #include @@ -165,11 +166,13 @@ struct pktio_entry { struct { odp_queue_t queue; + queue_t queue_int; odp_pktin_queue_t pktin; } in_queue[PKTIO_MAX_QUEUES]; struct { odp_queue_t queue; + queue_t queue_int; odp_pktout_queue_t pktout; } out_queue[PKTIO_MAX_QUEUES]; }; diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 6ff35046..aa03495f 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -128,6 +128,7 @@ static void init_in_queues(pktio_entry_t *entry) for (i = 0; i < PKTIO_MAX_QUEUES; i++) { entry->s.in_queue[i].queue = ODP_QUEUE_INVALID; + entry->s.in_queue[i].queue_int = QUEUE_NULL; entry->s.in_queue[i].pktin = PKTIN_INVALID; } } @@ -138,6 +139,7 @@ static void init_out_queues(pktio_entry_t *entry) for (i = 0; i < PKTIO_MAX_QUEUES; i++) { entry->s.out_queue[i].queue = ODP_QUEUE_INVALID; + entry->s.out_queue[i].queue_int = QUEUE_NULL; entry->s.out_queue[i].pktout = PKTOUT_INVALID; } } @@ -305,6 +307,7 @@ static void destroy_in_queues(pktio_entry_t *entry, int num) if (entry->s.in_queue[i].queue != ODP_QUEUE_INVALID) { odp_queue_destroy(entry->s.in_queue[i].queue); entry->s.in_queue[i].queue = ODP_QUEUE_INVALID; + entry->s.in_queue[i].queue_int = QUEUE_NULL; } } } @@ -318,6 +321,7 @@ static void destroy_out_queues(pktio_entry_t *entry, int num) rc = odp_queue_destroy(entry->s.out_queue[i].queue); ODP_ASSERT(rc == 0); entry->s.out_queue[i].queue = ODP_QUEUE_INVALID; + entry->s.out_queue[i].queue_int = QUEUE_NULL; } } } @@ -578,42 +582,42 @@ static inline int pktin_recv_buf(odp_pktin_queue_t queue, return num_rx; } -int pktout_enqueue(queue_t qentry, odp_buffer_hdr_t *buf_hdr) +int pktout_enqueue(queue_t q_int, odp_buffer_hdr_t *buf_hdr) { odp_packet_t pkt = packet_from_buf_hdr(buf_hdr); int len = 1; int nbr; - if (sched_fn->ord_enq_multi(qentry, (void **)buf_hdr, len, &nbr)) + if (sched_fn->ord_enq_multi(q_int, (void **)buf_hdr, len, &nbr)) return (nbr == len ? 0 : -1); - nbr = odp_pktout_send(queue_fn->get_pktout(qentry), &pkt, len); + nbr = odp_pktout_send(queue_fn->get_pktout(q_int), &pkt, len); return (nbr == len ? 0 : -1); } -odp_buffer_hdr_t *pktout_dequeue(queue_t qentry ODP_UNUSED) +odp_buffer_hdr_t *pktout_dequeue(queue_t q_int ODP_UNUSED) { ODP_ABORT("attempted dequeue from a pktout queue"); return NULL; } -int pktout_enq_multi(queue_t qentry, odp_buffer_hdr_t *buf_hdr[], int num) +int pktout_enq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], int num) { odp_packet_t pkt_tbl[QUEUE_MULTI_MAX]; int nbr; int i; - if (sched_fn->ord_enq_multi(qentry, (void **)buf_hdr, num, &nbr)) + if (sched_fn->ord_enq_multi(q_int, (void **)buf_hdr, num, &nbr)) return nbr; for (i = 0; i < num; ++i) pkt_tbl[i] = packet_from_buf_hdr(buf_hdr[i]); - nbr = odp_pktout_send(queue_fn->get_pktout(qentry), pkt_tbl, num); + nbr = odp_pktout_send(queue_fn->get_pktout(q_int), pkt_tbl, num); return nbr; } -int pktout_deq_multi(queue_t qentry ODP_UNUSED, +int pktout_deq_multi(queue_t q_int ODP_UNUSED, odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED, int num ODP_UNUSED) { @@ -621,49 +625,49 @@ int pktout_deq_multi(queue_t qentry ODP_UNUSED, return 0; } -int pktin_enqueue(queue_t qentry ODP_UNUSED, +int pktin_enqueue(queue_t q_int ODP_UNUSED, odp_buffer_hdr_t *buf_hdr ODP_UNUSED) { ODP_ABORT("attempted enqueue to a pktin queue"); return -1; } -odp_buffer_hdr_t *pktin_dequeue(queue_t qentry) +odp_buffer_hdr_t *pktin_dequeue(queue_t q_int) { odp_buffer_hdr_t *buf_hdr; odp_buffer_hdr_t *hdr_tbl[QUEUE_MULTI_MAX]; int pkts; - buf_hdr = queue_fn->deq(qentry); + buf_hdr = queue_fn->deq(q_int); if (buf_hdr != NULL) return buf_hdr; - pkts = pktin_recv_buf(queue_fn->get_pktin(qentry), + pkts = pktin_recv_buf(queue_fn->get_pktin(q_int), hdr_tbl, QUEUE_MULTI_MAX); if (pkts <= 0) return NULL; if (pkts > 1) - queue_fn->enq_multi(qentry, &hdr_tbl[1], pkts - 1); + queue_fn->enq_multi(q_int, &hdr_tbl[1], pkts - 1); buf_hdr = hdr_tbl[0]; return buf_hdr; } -int pktin_enq_multi(queue_t qentry ODP_UNUSED, +int pktin_enq_multi(queue_t q_int ODP_UNUSED, odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED, int num ODP_UNUSED) { ODP_ABORT("attempted enqueue to a pktin queue"); return 0; } -int pktin_deq_multi(queue_t qentry, odp_buffer_hdr_t *buf_hdr[], int num) +int pktin_deq_multi(queue_t q_int, odp_buffer_hdr_t *buf_hdr[], int num) { int nbr; odp_buffer_hdr_t *hdr_tbl[QUEUE_MULTI_MAX]; int pkts, i, j; - nbr = queue_fn->deq_multi(qentry, buf_hdr, num); + nbr = queue_fn->deq_multi(q_int, buf_hdr, num); if (odp_unlikely(nbr > num)) ODP_ABORT("queue_deq_multi req: %d, returned %d\n", num, nbr); @@ -673,7 +677,7 @@ int pktin_deq_multi(queue_t qentry, odp_buffer_hdr_t *buf_hdr[], int num) if (nbr == num) return nbr; - pkts = pktin_recv_buf(queue_fn->get_pktin(qentry), + pkts = pktin_recv_buf(queue_fn->get_pktin(q_int), hdr_tbl, QUEUE_MULTI_MAX); if (pkts <= 0) return nbr; @@ -686,7 +690,7 @@ int pktin_deq_multi(queue_t qentry, odp_buffer_hdr_t *buf_hdr[], int num) hdr_tbl[j] = hdr_tbl[i]; if (j) - queue_fn->enq_multi(qentry, hdr_tbl, j); + queue_fn->enq_multi(q_int, hdr_tbl, j); return nbr; } @@ -708,8 +712,7 @@ int sched_cb_pktin_poll(int pktio_index, int num_queue, int index[]) } for (idx = 0; idx < num_queue; idx++) { - queue_t qentry; - odp_queue_t queue; + queue_t q_int; odp_pktin_queue_t pktin = entry->s.in_queue[index[idx]].pktin; num = pktin_recv_buf(pktin, hdr_tbl, QUEUE_MULTI_MAX); @@ -722,9 +725,8 @@ int sched_cb_pktin_poll(int pktio_index, int num_queue, int index[]) return -1; } - queue = entry->s.in_queue[index[idx]].queue; - qentry = queue_fn->from_ext(queue); - queue_fn->enq_multi(qentry, hdr_tbl, num); + q_int = entry->s.in_queue[index[idx]].queue_int; + queue_fn->enq_multi(q_int, hdr_tbl, num); } return 0; @@ -1193,6 +1195,7 @@ int odp_pktin_queue_config(odp_pktio_t pktio, unsigned i; int rc; odp_queue_t queue; + queue_t q_int; odp_pktin_queue_param_t default_param; if (param == NULL) { @@ -1267,22 +1270,24 @@ int odp_pktin_queue_config(odp_pktio_t pktio, return -1; } - if (mode == ODP_PKTIN_MODE_QUEUE) { - queue_t qentry; + q_int = queue_fn->from_ext(queue); - qentry = queue_fn->from_ext(queue); - queue_fn->set_pktin(qentry, pktio, i); - queue_fn->set_enq_fn(qentry, pktin_enqueue); - queue_fn->set_deq_fn(qentry, pktin_dequeue); - queue_fn->set_enq_multi_fn(qentry, + if (mode == ODP_PKTIN_MODE_QUEUE) { + queue_fn->set_pktin(q_int, pktio, i); + queue_fn->set_enq_fn(q_int, pktin_enqueue); + queue_fn->set_deq_fn(q_int, pktin_dequeue); + queue_fn->set_enq_multi_fn(q_int, pktin_enq_multi); - queue_fn->set_deq_multi_fn(qentry, + queue_fn->set_deq_multi_fn(q_int, pktin_deq_multi); } entry->s.in_queue[i].queue = queue; + entry->s.in_queue[i].queue_int = q_int; + } else { entry->s.in_queue[i].queue = ODP_QUEUE_INVALID; + entry->s.in_queue[i].queue_int = QUEUE_NULL; } entry->s.in_queue[i].pktin.index = i; @@ -1374,7 +1379,7 @@ int odp_pktout_queue_config(odp_pktio_t pktio, for (i = 0; i < num_queues; i++) { odp_queue_t queue; odp_queue_param_t queue_param; - queue_t qentry; + queue_t q_int; char name[ODP_QUEUE_NAME_LEN]; int pktio_id = pktio_to_id(pktio); @@ -1394,14 +1399,14 @@ int odp_pktout_queue_config(odp_pktio_t pktio, return -1; } - qentry = queue_fn->from_ext(queue); - queue_fn->set_pktout(qentry, pktio, i); + q_int = queue_fn->from_ext(queue); + queue_fn->set_pktout(q_int, pktio, i); /* Override default enqueue / dequeue functions */ - queue_fn->set_enq_fn(qentry, pktout_enqueue); - queue_fn->set_deq_fn(qentry, pktout_dequeue); - queue_fn->set_enq_multi_fn(qentry, pktout_enq_multi); - queue_fn->set_deq_multi_fn(qentry, pktout_deq_multi); + queue_fn->set_enq_fn(q_int, pktout_enqueue); + queue_fn->set_deq_fn(q_int, pktout_dequeue); + queue_fn->set_enq_multi_fn(q_int, pktout_enq_multi); + queue_fn->set_deq_multi_fn(q_int, pktout_deq_multi); entry->s.out_queue[i].queue = queue; }