From patchwork Thu Jul 13 12:58:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 107678 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp2184389qge; Thu, 13 Jul 2017 06:00:29 -0700 (PDT) X-Received: by 10.237.57.199 with SMTP id m65mr4839337qte.243.1499950829553; Thu, 13 Jul 2017 06:00:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499950829; cv=none; d=google.com; s=arc-20160816; b=Q8XTC7EtIDEc6mXelXSzwMKjnux9Wvf8bR9aAi8ZqsuZvXQAmWGoOjVc7ybhnSxjSq pazt/z3GF65bdU/wpkRkE9n8TOZoiKy3ntW6HmfJsVE9VI4pZSR2qcd2MpQY43hJGdDp 6PChZDVPkSS6VH6X5apLRls28gcuSlCFHzGrDUGk5ibcMInvQHSvXOeLoCg+2jQq4xhP 0GoNQUKASabyeo0VlPjZ/vl+HJoeO7i2TPFbm65m7LDqr2picm71EiqxtVsX1B8L9Hrv dMWkh+4NbKbfQaHTTezvEYXdZZOlpVvBwJlXEm9u1+HQmRiw7P+WDxJ8aAKEqoibRwXZ zFvg== 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=dNzBmcLBy8ZDzE+RApVPg5zi0SyoxH/RCOQmJ2F3uYw=; b=eglsA/251dwRGTOlXcOfiGjR9f5iwjdPZExPRLxAwKXiuuleGwJ/XLDVk/2CNZgfMO EgbSfKnu1dNsIYslQ56zJlif9wghbqzcD0pELw3PJVOsx+q9YeFw1qGdWLWFXNvlMpAL b9JEU7zRqXBtRRrUQillIurcjaEgSquBjaCng9IeCkB6esTtmDKqZp5E6t04uxYSs3JN gWP/uQhJrT9CabdLHOTe+B8OEtEa3OTfFc5uZXyBXnKqs9FTfbAYNo/Z44TYXzwDo+3/ 97U/TZ9G1cq2dZgqH8MgsHU/lZKAkgupL0ewRYMOBOVU3J+2h/fUJuxLIH1sdDdB/Gcf yXRA== 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 t13si5068324qtc.217.2017.07.13.06.00.29; Thu, 13 Jul 2017 06:00:29 -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 27D5D60833; Thu, 13 Jul 2017 13:00:29 +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=-4.7 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,URIBL_BLOCKED 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 47579644DC; Thu, 13 Jul 2017 12:59:27 +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 BC04F60D1A; Thu, 13 Jul 2017 12:59:12 +0000 (UTC) Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-db5eur01on0104.outbound.protection.outlook.com [104.47.2.104]) by lists.linaro.org (Postfix) with ESMTPS id 937F560C35 for ; Thu, 13 Jul 2017 12:59:00 +0000 (UTC) Received: from VI1PR07CA0167.eurprd07.prod.outlook.com (2603:10a6:802:3e::15) by HE1PR07MB1050.eurprd07.prod.outlook.com (2a01:111:e400:581d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.4; Thu, 13 Jul 2017 12:58:58 +0000 Received: from DB5EUR03FT064.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::208) by VI1PR07CA0167.outlook.office365.com (2603:10a6:802:3e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.4 via Frontend Transport; Thu, 13 Jul 2017 12:58:57 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.241 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.241) by DB5EUR03FT064.mail.protection.outlook.com (10.152.21.199) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1240.9 via Frontend Transport; Thu, 13 Jul 2017 12:58:57 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v6DCwSch029201 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 13 Jul 2017 15:58:28 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v6DCwSPe029185 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Thu, 13 Jul 2017 15:58:28 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Thu, 13 Jul 2017 15:58:28 +0300 Message-ID: <20170713125828.28230-3-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170713125828.28230-1-petri.savolainen@linaro.org> References: <20170713125828.28230-1-petri.savolainen@linaro.org> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39850400002)(39410400002)(39400400002)(39450400003)(39860400002)(39840400002)(2980300002)(189002)(199003)(9170700003)(53936002)(110136004)(5003940100001)(33646002)(356003)(38730400002)(36756003)(50226002)(305945005)(77096006)(2906002)(626005)(50986999)(189998001)(2351001)(76176999)(48376002)(2950100002)(6916009)(498600001)(50466002)(8676002)(8936002)(22756006)(105596002)(1076002)(106466001)(47776003)(575784001)(86362001)(81166006)(5660300001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR07MB1050; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB5EUR03FT064; 1:FCtbBBuxfrVIV+rR5ZKvg/j7IRVsq9OUFLOkz+klnuWeLROMBS1szC/8kuaht9/N0b2lqdJNsxL45QeuUV5TMMZ1Zd9Acef2F4XAEqqswxyQQa0t0VrqAO7Hwlz6ocO6DGYANt9/ctGaXsbSaJwZirkEb6VCVimsWaFq/zs5FAKIui9pVSad+ejKgTVuLdt3TVdMYUDc/eTGYrDBpShesr37wWQc/zy/DLswrYU0AvNXfBpJ5h5fMMPCUeNYrtwO/F22sf4DFl5sh0/B1C5I6eocWr2Zeg4CjnpOiaXgBxKSqfEPuGfyGVzd5sabyEa7lGeQM3BBaT2ojDVvq4AMxUSo0cmrOcFNtzZE9zNXMHGGauV77RMaNtwDQjL8tCIybxFuoaBpIUoMD6UDfV99JRIPXsezCOQk+lxJrJXlsZxAGJoiSv/o5sAmcwgXly7n8AcvrUQaTK46wRZI1PZPrZtuLVyhxPvMrEpAPCTqDU8k/v1vsdCwpPO8JxPCsLCk5nDa3CtVSJ5mAFWBpM+Yy+U1KWcI6yN1pe8gW2XkRalsSPxN+Ogm7URSyy3Vy4BkRSnCHrGeLC5sLkVet9U2GRBXvYFemDgYVF0ZYSWA649H0TYtT9XiTsiGZKPmWkzbe/hpSwFx3SbsL7QIfvxLAVAvtuCvaWYjaFla+4lA2vdAMRp49n0ODP1SJcbHbgWzX7sp4pJlmmD8MUmjz/f9s5oM1ndvd1htrH+eG7rM84jXjJsbK1C528z/oUg9JxaIY0w/gByRtnF0Cp4dVNEcqW1SPHyrHFm9+zQQ4R659irXOZFOfuKnfeU4AUJE2lHcgI1tPVZZVu6ya5fLNybh0nktxrPy+rctCRr0NBMOVPk= MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1f0e6fc9-b701-46ac-7d02-08d4c9eeec94 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:HE1PR07MB1050; X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1050; 3:u0oR0iq/UdlVDtejbtiI4WE7CLLb44nHt+EhJ8w12cs4mtfZiwjqmWFpAVjNS7tbTaa2WwHddAkNEsKPAptqzQPHc8ds58XyCyzK7DanE9bRuFWA9VaR2xDeswzX3pfb36T0t+Xh2334b77XLFQBSI0tmMwvlmDxaCAt0NUg4tQM7bC36ytzB37DhcQtZcaxfMBx5dJC94f9twzFpfqdXN/5fDtPhHSPN3j9D3jR64DNTBR9gcSMBa9jKBujmDQ46VU2+eYpy6iHDZvG7PKiZSVo85SWGEIzNNNQRMuR8ib7oG+9belVDCeERUr+2t7dO1KuH2N+N+APn4WZGG9MZZIX068YbpH8E5UTUq8GFsddJxzIXjad7iNwrcrggb3sj0b4hG2nJ5n9c/pFCWe3Fvj36L37hTvCgYbWUbxKKJfoQn97wL5ODG2gKx7VJC/cTUNIbqpGOcdIA9XOi64b1QFx7ags7uBcrEaIYAjFtq9+FwrCi1ta5/FP5FcK1vUeSo560iAXJi+vzisku9gWUHif3yLtvk0oC9WchOu1ys0mVp3B787Yl9AljScdQ3GmeMcikz1umRlYTS1Ccjo9P22gWGeUrBbHJe1/lgIh4ut+2tKFFjbijpEJ8bWoefIiCyGV2opuHE/T66ItEq0puabnJGgYQ1GL1u7ikqbPAEWPtR3PPzsuk/kcBw7gZXutoTDy735hot6cmYhbKkyN2GBW+38qkFhoyei4ox5MkfCxO5SyrWnD5Sek7byYljIJ+kgaoAGlKYnP7EX4jYQd3YZ3wYR+QQeRzQI5GO0JjqEQzGC30zC4QvdBS7JwegoMT64LGkqvFJKTv7xDicYOr1kPTC3OHN1TGgKtte23b9xTviQ9SCcYs+fnrnZ0YxED4wLADGWq7HXhmM0m1PiJgw== X-MS-TrafficTypeDiagnostic: HE1PR07MB1050: X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1050; 25:8Y9ii5goejmElgoQWZm6sPZD3TnQwhm9z194aZDpD3/UK27Q9/gHdkbrde7oFrlWqDPpxfjCRlTtstfGYzzOrX4jMgSJfrT4D2Ly/+0eivX5rcXVJ8KvBur5l0b/OiIxh6hIir6tBhieBhPq9A7DdMUWr2Ur2o/456ukJJ2haKXBfijyANYeezu4auvm8wxgcUuWYXBas6CF9zajlgH9iAheq9mflc+rTbU/x/A0oJZOZb3mgHC5waA/biRbARsq3JQHQt8U0sXFJhP/pyVYXMTKQ/RD7qxCYk0eTjmIukCph8eq+jnFOqLuAFV/2Gbe0vL3lsnrPhOFlHe3jukMFXdgLML0ID2JK7HDdHUS8+rqk8Po6vL9bPJyEkX+E9rJfaw7JOClViKywDE8wE80QRDU+/s5Di1P1I0UxRv6/WbAYqZ+7NWtJLCD6wlupX4s2Z3KMH/DVlAyGUctLlDolhLzZM9XRGxNvh4CE/rrxQ5rRo8fZ9jiTsIaqXKy6NjVX0twJwl4LuUCZ+/HsyCjgrwi4yqQm2D7yrt96Zxu+GtzWoemBdvVaJFwINxl+oV8Ev37yBvtUkOtQk6qXQSiLZvuQo2dklHziWbSOm2neZtC2YMDxIiakSsuFmFI5oEROHIH/LEuofDkUDB5W8hBSIWaj0UureBpXpArCrS3An+Offe7SVwajjFxN56GJmFVbqACF5Gv84+G4bEY/Abq7VK3ocMqJxGX6yDETkIttjq8OJcSEJxk6MQL/4cKIbH60f7ndR/HDhsTMiBAl/WfjaDEEAPTvwuM2USMdXTfLCO5JgH2GvDXVnBXgfl/tvJwsJZrgFFod8mQZUM+l+RpLeX7A5buIMngyziiBWkbPP4/CArljw9spNFLhowTcZb3Ws6qIjNC4Lyq1wU/BX2hxOsQ/O9pjLeEhsQw+wOjG/0= X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1050; 31:bAGltQniNrnxdO7Oug8CNXmjDutVP6c+1Qlj+ktNTlyXtLkbLrV+HEnHb4evRZ/FRmOkG8EK3ij2RfZSRjigBGgMH9z8sq8ZJ/1H0ZtL/MK6GKir+w7HPBcf6Y3CXAVrlPMq/ugqmnj+uUWCxUNEXB0dfD8JpFuUVhRU5vZmH0LuaKf3KGSNZsM3k9tsFr41vZ66eD9Sj3jkSSz9SKLZ8tyMuvQYKyO316omwsRZ+6SQpNNmWwVBXy8sEWzPi7Q8TV66IfNKS9d60qw/DF5YFWvz15TucAKJmVH+J8wl7XFnHNtTz5rZ/z46eNnC1JH/5ZSqzrsa98o7Sdxps2UmCzt+hWvF6m4Y7yYoyjF3oDY6xfxfwslI9nF0NZGuInaK2z5yfCZjcqnRhAysAhrsmVzm/NM4epomFQTIrGcux5EzRkcAYnJS/Dug2GQvyVTIAmRanCEVYB+YXoy25AiVkLY2xLWavn8uPC1fhUQh5QyeFa+2m1fKEaDJgOLEDM+b4r90oSftyoE/7RpIpxFBSEbjYJWvj5/KtVRRJ9IdJMkQiu6YRw2AZxXPQpeGu+mhC166yiQEVjotcaaxI1QLyLBWRTJb1ybrBLOUDJPFxH4WB5+j4OR5NpngIzonkot1Y9fh8Bt+LGnTWqGItbdF4IDP0FZ23UNbRpgl7DkX30LPRBlH1RLtHcrN7pTE4QA92x2nqo/SzJqjlnqTSFiZzw== X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1050; 20:k7mepHlSHpkqD4FvzrP8RklARMZiXYCPP3dCbBAB6NtBna3Hm4JsPLyzH220g1bNPkbMeTUJJWz2u5BzUGC49WspPPA2oRe8T1RSU04ezDHQhRfHpppTYi5FmkglA1Lr9vqVoc6VZekhhMuK4p9mTgJTVnNP38QJpoVroaO+9DwN3Cyg8IK1CQMSXwq3uQH6Dnq+YChec0I8ut0KeBDKXhf0MoKVMgMXBKtRWUZ4wD90dOoZWH54rAo5EQ5kSCT4E4xEJcLZaUluVFc2JEcxgBPQeWp/1LcQ3O52xosalyaX52iypplvR/pYzIzQdQxDLaQRjt2mCsrf7m0mZZtKnuKjtge8Y9x5Rpi0B1MYI+yVyct1WcktrI4mcmwK2jq5Ry/38B6ObBcoOf/smi4FXp8FPryeMHYnhEVpqBUuO7Jp2OiYPMEnfq0vEi9Z0OTxwbuVms9T3iCZcwZJyOj8ZWCbIALymS+MaMJfuxRZdK6IIi2HEAo4j78Gt9YXZyDiFqm1TmtGwubDRCcV9uSBuV6rY8NaO3+1XRLINvQABwwENVCS/VHGyYSE/SXvTjME3oNLEt4cEyE0Vi1NijOpfNuyPme+kmwERaTSWjLBtJg= X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(13013025)(2017060910075)(13021025)(8121501046)(10201501046)(93006095)(93003095)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123560025)(20161123558100)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR07MB1050; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR07MB1050; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB1050; 4:7/4D8zn8m++ZWGya/u/QT2GXMHnjD8HvaX3JIRa5gr?= g+F6mM0JZCRiP9RrHqPkGHjjqiHgDSyfJl/bj6ghv40EntBd2frARQubtYUXn2zml73ZUNgARpyJLY2sQIM6u4U95PKG9H2z5C/P3jrKkUtB5TrBmAOrfvNkf21HFjQaMRr7BX+OkJBuhhCBpOJ4w5rvaeAZ97mOMp51FLxOez/Ew62Rvd1MJQTniJYv4p4+w+WhkMm89l0DF66EBNc2aJ6VOkGVkV3Qg3hFQoocrtfWMdnfPlyq1la96rDDs9nup3hxZP3D/TmthpvpTHVz36wdgi2D1ibTH4w7Jp0/fV7uzrbvy0oVP+3i5kqpC+lDACLZjkTWsFLga20Biik4I+ti4xTMjDs7XPOq+4YMLmsDTJOl1aw2DBxLXpB99L48pH7JiQb2h+k5TIUz+DkIQVEeqv/TIM+KF6RmlnajoeRmrTCaVs0CWWHuGC4pA/m6WK31Rr3XQPv0jKNPFQoxIs3PHn0Z//qpfCCl0WMdkl/Wq6+kLbMrX9qbT5LxFuW3iU1CqLZkWfp4oermdKIk/B1oXvMr6dullgyDd+2C4ETdcNPVgQq+1K1B6JDsDYLGDJu4qlAPdAPPS8oxviKFlNEfGfyA3Al7a2jY8qst/HaSHbqeDIyEoQgNm2aVSC7nX7b8A9FiH8CrTbFu6wMxqrjSsYXPwEnhTGwOQaRhIAa/2Tnx7/kM4pIF9/oo2uBzoF7+aFJSOC5yUrR1sA2hG1wnd325M1momiI4F1XWLng3uTfdo0wtnSPzK4/BnrY/E3k9aHF7Yw14ihTsG4qBjq6JD2idNfi9DdatbfQpIzJoYxXROocq6trDf8aiC9mzGIwurvNmGWXmPzu75GaHzUoRjWJCqX3uIu1G4HjeczAMnW5qyfO05ENHtP9m4XcS89ES7Si+crcXnrIz8nTNMzXnDa8GLqhWdZBAO8q0P6/u9AuZzxZMQsLDaUMgVCIYdxG+rE4qWNZ9ykDcGu6kuEJIV+xoYWfG21eQoreFMRLiIiqscSwykemjjHYUOeeJgzyr8up3rLAOtZHT49JmlVyEXWHHUFkAc5Hce0X0fWwb39yqmqjNSu8MoEuBRm9Vp3gnIcQLHaVTZKSN+FYr+UmPwCjJGqfrZ4EQMNFRgclgoDmEZ02opBi1kXDnZSDVwXIC9/EGRVSiDX1ukqE9o06PjNv5pVrdurNb1T8EYMt/xo5dRpqwQ9f5NdfrWQzghypvH4k53Z0Wyq/nljScjGtYjD7olYZ0FLMQ/LlSW/R7AvP7BUYjFg9d1f3aWjH3A= X-Forefront-PRVS: 0367A50BB1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB1050; 23:4788Gb81qmYnTbfLfGjsCeOTUuyEZHHVChu9MDWiJ?= ScOk6x0yFmjbjT92+BoCrumJR+ybp25Qdxb59Rbpx6seJ5KMDkhbVA+DfFZp5siGbeC55qTrWl0PF7hbs0beC14+WxMMlzkqmslGf85SXUnA0kXtHaRreG9k9Aoj4p83YXPUqlkUj9UVjRXaRmxWtzyHJfQI2a6NQfuIfqAFj0ClliceECUdROKjPs3XzSYsl/dUmOwxtNl4fq0OlegR/ZU2y1wgl6rUN0wYUPHmJno/XRGexYjfaPllKeitR4TTltcNQJX+xilvpbc2GOdk1T6N1PVswg4p1YoiuJhBxvcIMmgaBHpsOzYJIwzV57XblR/PGXDufIDKwGnldQFfsF24Ul2pJvsh39n7eX48OBcnDkFSGLY9YCCMnY31zAhE1kyQqs6UsXNDq/2cMDe0mmpcy0V4b4+/TyVzulTwrKiWR+LtYcw1lTrYyYwLC7a4K9Ffhe7AXu8mhSW9pUkF7CvFlEetOXS4j3M6sU++UhBKAa4K67rpTdwyowlNbp8ejtxx5qQBmox1jN+RO9VEYJ5DX1kV5L/2TQMptY6Yy3hytU+4Aef8+9XmpNFeqJD3hsN4cDhgoMaxsa0S3nDGWAdTrVNPTiQvjqgm7nBnZx8kMbThA6ypGDnJKo9cqTslXwPBA5plkl2AmgrD95X2jvQNNX9qzw5M0BvJDu1nC2rAPd3bFsGbDDPz+2IGlr4x98irNGBPA3B5VgUr6/j1XemlLl07s57h8MCOSpjsTyEyjbaHLeyzMABGAMyrqcHC6s074gocPstCwpKLQXsFRs0wfO02a06GOpFZfIxWnDGOx9lXqW96gOUNnRcYa70wzAs3mhl9ISvm4YnnOKdmZpo2eVP6eMH+r2eEo+CQcj+GFT7REwI2KCUYDa4CguY5PJqmV8gVjwwSAofWxUzC+/AKzIDnr4I085/ZR1GH7j7dFnFWKR/bGt2NOAQpTaohuhNA52qb8nwUQZAbSAwUnF/8vI0KP3RVOvDW4xTLxQMCCd1ea2XljlUF5QomrH5ef2xVaG9zaJHrtLTDVO1pMWKJCzORZ2g+NeFmUoAzxmq3A== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR07MB1050; 6:BTzxMrc+jX3b1YU7crwXeysqf+M8oxYiMw3UFrf5Qo?= ArXNaaNsmROurNe3UV3h+MnhdVngsta7lkJUmglkDAeFkgh9hKkm3mfnL4rXRc25ZKpm/LM0kUMiZ/UOr7AqYPkHXRe5bcnFeXh9Wq+GZBlMgQqo/3HK5bEBbx16tQIwELamZFHVXRsmoB0gdkU3cJYyOxvmhoeIhmoo4tKuAXLcnIy8GeKTqNJWi0UykbrF6FurOKKYJ0n7mhzJ7fITKdtYsNJsxZsiMlL9JXW38M9hZTjf8zUSMjXVtUivivTKSGg+VkELgqHDnFliEy+shVVgsk0YrIbkd6KP+chhe+CDeLn3i63xVUYreSCm8N/StsmDcxp5N5URHu6dNPVRFS/UHaUsV3JVoh7M24+41rTuX+JHD4wyCT5MfvzIB0PK2ixkOjbHpjtt2DCNhFCzTTdDQUJ92OM7RLPgDwkYp5WGtsbMI7LjCxETdV+gtJh7FVvUh6TSWCGMQVmcLGY5UNfJWntRH8xkDlB8uKFaLPJGEpe8WFuD4EenMObrKYuwOm/w/fanYcfShqInzbdoeIWYVnWBkfodYjF2bPAs/6tmcjyZ6sXvIz4EW5I5IGOoyPLxWN8eqFkjV7sFSC/pGyBGgfdngWojT0x33o2cNuAaMwODJBCFcV1p7jr1XzeNJjZm4BX5NPcGPBPFlH7jrOKHIMsY2cWKk3oKqaacI0h3obHsnMjoiCU5QvJHxv7CBb9RRVY28jM/r/MH9DU08vL0lD3phoGz6wztXNIQFuFrkwPixUXU1xNCV2ugaJo+m33uPJbrNVOOQgcfNA4+/zPklkM+Nnfr/uUgQ+BookGERb7H7H8vkJWmyxIJgDxGWkzE82dcgBnY8vGBwGdBTDIA3qrMQyeCf4C0Y7kiwUITwjuP0AVeJ88jQybKISEePcIAb+3bj8fCUWZU2vI28VnUY6659QH65q2y9FuLdFE94qvkD1s2THTgF0bF29ikKzZqCoAqaRkupBTIqI3wiB X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1050; 5:6lm+ZsDuZxrokPs1Vyyl/Un35SvSpEdqfYsBWeWiESREGaZFD4scgj3UoEautPEsqZxAteWGGRExHXeJdiZ8UWtBEP9GpTH5Pyxf8V1Bk9hx0p1l5UO8XrHqWzBEunUW6hF8Da8eOKM0Z8FZTvj0Qu27k9f76dVBvm3xUVe0o7KIibRtt11TXnDF6awGoXc7ACVKaqEUnRg4kRbgDk5M+/HI4Wf/T70CyUZNPSaFnD81nClJgeXoHU4lgnowJtJTAZlrA4sM1m4DKJ6EqfOWumLqyd2CgBZzOvdppTWPjFt1amyb15m3yTNxj21DZlZmV1mDl3/zJsiPRBBeerpP1nNt3zA4vmOsdU651jD1z0uVIUu8oJ83Ct6DsSmhSOycdvTN61W/l5LZOwEcK8iEisHxuHy7LTKbCSzNJ1CQkOw30kdmpr/v2pgYDBbeKdYY5u6FIHTMdg01tbHMPPCQdWkXHKRCyCAVnw2fDmHMdTw/xLwK8M5l0/GhgbxsN+pG; 24:qxidZdfNxN4zIe2aaAhKf+eT7OeterqA6RDYaS0ZEWBrwAOlmcgEEEYT4zq9QI28PMTDyNopFQHpBkbkvKG+y50F/qMtluWGaNDfa9lQ+ZA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR07MB1050; 7:+Rl9/GAHKkgBDpzMXv4CY5pF/4AJhtfy6tRqaBkhsASA+GmGl+nMaOy5nYfmkSIm4JizH62vXORS7H9pcUz33H85mWrAai4GxvTJqKg7D7OMXE9JIoBSfBdg54BF/z2iYY8KxrKZJgsQc03K5uoq61f91WNyEs7PDh9khumIFRpULG4Co6yL/yO4YfYuCDoWCyJVKS+ZqeDHsJFFh+MHO7o33VWDSpL6yle2ogFEfWgUjocuIwhnskGUbUXxpj8o14KgwRpry/nxnGcd01pVcK5ayopw96nifleCToS8YOzD44jwKCbCLS7AGLbClcS85n13FNKwjBf51CngVtEvFDCi2y3SKidKQgaQtNDzqjCyqdpEbfebKZmXFQaSornFUtU+sGNjflnN0kaCgQjmbZ6E4bTFvG/s8qqtyrJdxNA6lbIzXR3FjtWy16q0rxkhia2I3MVhxyyKGLsoC6T/MMQlQiVbeBX4tcOY5oK0uUT9+Ywuk2gr/tCkJsfEv2ENx9Jt80GdEcFdz+esQ3Ar99LofBWOQhvraaRGkuG7ZqRhM4dZcsCKKQovcbk22nepy1me18/HXXiSod2crvSoThgny3MRIl+XWjuL+7L5pBv1MGFuir7l4eD21k0w8VDbYS8LMcBg2bPFqEI/pkbTgZc0YL6D/uU+DeiKOhk5CpEjSm1pumeATD9cWe6kEGs7hC57T8Ci5rs6PC6YDSP+2YJjPbDFZJszjNNebxvm9lNYCV8reMZe2KxyEjAM2AAo6Do4BmKGqvaHVXiqEI4voLqdGXUb6eaXD+kA0ZpK+Rs= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jul 2017 12:58:57.2758 (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.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR07MB1050 Subject: [lng-odp] [PATCH v2 3/3] linux-gen: pool: avoid extra conversions 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" Avoid conversions between buffer/packet handles and buffer/packet header pointers. Signed-off-by: Petri Savolainen --- platform/linux-generic/include/odp_pool_internal.h | 5 +-- platform/linux-generic/odp_packet.c | 49 +++++++++++----------- platform/linux-generic/odp_pool.c | 49 +++++++--------------- 3 files changed, 42 insertions(+), 61 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_pool_internal.h b/platform/linux-generic/include/odp_pool_internal.h index 1fb55d7d..a4c0e532 100644 --- a/platform/linux-generic/include/odp_pool_internal.h +++ b/platform/linux-generic/include/odp_pool_internal.h @@ -96,9 +96,8 @@ static inline odp_buffer_hdr_t *buf_hdl_to_hdr(odp_buffer_t buf) return (odp_buffer_hdr_t *)(uintptr_t)buf; } -int buffer_alloc_multi(pool_t *pool, odp_buffer_t buf[], - odp_buffer_hdr_t *buf_hdr[], int num); -void buffer_free_multi(const odp_buffer_t buf[], int num_free); +int buffer_alloc_multi(pool_t *pool, odp_buffer_hdr_t *buf_hdr[], int num); +void buffer_free_multi(odp_buffer_hdr_t *buf_hdr[], int num_free); #ifdef __cplusplus } diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c index e6de2558..3cde2086 100644 --- a/platform/linux-generic/odp_packet.c +++ b/platform/linux-generic/odp_packet.c @@ -361,14 +361,14 @@ static inline void copy_num_segs(odp_packet_hdr_t *to, odp_packet_hdr_t *from, static inline odp_packet_hdr_t *alloc_segments(pool_t *pool, int num) { - odp_buffer_t buf[num]; odp_packet_hdr_t *pkt_hdr[num]; int ret; - ret = buffer_alloc_multi(pool, buf, (odp_buffer_hdr_t **)pkt_hdr, num); + ret = buffer_alloc_multi(pool, (odp_buffer_hdr_t **)pkt_hdr, num); + if (odp_unlikely(ret != num)) { if (ret > 0) - buffer_free_multi(buf, ret); + buffer_free_multi((odp_buffer_hdr_t **)pkt_hdr, ret); return NULL; } @@ -427,12 +427,12 @@ static inline odp_packet_hdr_t *add_segments(odp_packet_hdr_t *pkt_hdr, static inline void free_bufs(odp_packet_hdr_t *pkt_hdr, int first, int num) { int i; - odp_buffer_t buf[num]; + odp_buffer_hdr_t *buf_hdr[num]; for (i = 0; i < num; i++) - buf[i] = buffer_handle(pkt_hdr->buf_hdr.seg[first + i].hdr); + buf_hdr[i] = pkt_hdr->buf_hdr.seg[first + i].hdr; - buffer_free_multi(buf, num); + buffer_free_multi(buf_hdr, num); } static inline odp_packet_hdr_t *free_segments(odp_packet_hdr_t *pkt_hdr, @@ -444,10 +444,10 @@ static inline odp_packet_hdr_t *free_segments(odp_packet_hdr_t *pkt_hdr, if (head) { odp_packet_hdr_t *new_hdr; int i; - odp_buffer_t buf[num]; + odp_buffer_hdr_t *buf_hdr[num]; for (i = 0; i < num; i++) - buf[i] = buffer_handle(pkt_hdr->buf_hdr.seg[i].hdr); + buf_hdr[i] = pkt_hdr->buf_hdr.seg[i].hdr; /* First remaining segment is the new packet descriptor */ new_hdr = pkt_hdr->buf_hdr.seg[num].hdr; @@ -464,7 +464,7 @@ static inline odp_packet_hdr_t *free_segments(odp_packet_hdr_t *pkt_hdr, pkt_hdr = new_hdr; - buffer_free_multi(buf, num); + buffer_free_multi(buf_hdr, num); } else { /* Free last 'num' bufs */ free_bufs(pkt_hdr, num_remain, num); @@ -487,10 +487,9 @@ static inline int packet_alloc(pool_t *pool, uint32_t len, int max_pkt, int num_buf, i; int num = max_pkt; int max_buf = max_pkt * num_seg; - odp_buffer_t buf[max_buf]; odp_packet_hdr_t *pkt_hdr[max_buf]; - num_buf = buffer_alloc_multi(pool, buf, (odp_buffer_hdr_t **)pkt_hdr, + num_buf = buffer_alloc_multi(pool, (odp_buffer_hdr_t **)pkt_hdr, max_buf); /* Failed to allocate all segments */ @@ -500,8 +499,12 @@ static inline int packet_alloc(pool_t *pool, uint32_t len, int max_pkt, num = num_buf / num_seg; num_free = num_buf - (num * num_seg); - if (num_free > 0) - buffer_free_multi(&buf[num_buf - num_free], num_free); + if (num_free > 0) { + odp_buffer_hdr_t **p; + + p = (odp_buffer_hdr_t **)&pkt_hdr[num_buf - num_free]; + buffer_free_multi(p, num_free); + } if (num == 0) return 0; @@ -584,43 +587,39 @@ void odp_packet_free(odp_packet_t pkt) int num_seg = pkt_hdr->buf_hdr.segcount; if (odp_likely(CONFIG_PACKET_MAX_SEGS == 1 || num_seg == 1)) - buffer_free_multi(&hdl, 1); + buffer_free_multi((odp_buffer_hdr_t **)&hdl, 1); else free_bufs(pkt_hdr, 0, num_seg); } void odp_packet_free_multi(const odp_packet_t pkt[], int num) { - odp_buffer_t buf[num * CONFIG_PACKET_MAX_SEGS]; - int i; - if (CONFIG_PACKET_MAX_SEGS == 1) { - for (i = 0; i < num; i++) - buf[i] = buffer_handle(packet_hdr(pkt[i])); - - buffer_free_multi(buf, num); + buffer_free_multi((odp_buffer_hdr_t **)(uintptr_t)pkt, num); } else { + odp_buffer_hdr_t *buf_hdr[num * CONFIG_PACKET_MAX_SEGS]; + int i; int j; int bufs = 0; for (i = 0; i < num; i++) { odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt[i]); int num_seg = pkt_hdr->buf_hdr.segcount; - odp_buffer_hdr_t *buf_hdr = &pkt_hdr->buf_hdr; + odp_buffer_hdr_t *hdr = &pkt_hdr->buf_hdr; - buf[bufs] = buffer_handle(pkt_hdr); + buf_hdr[bufs] = hdr; bufs++; if (odp_likely(num_seg == 1)) continue; for (j = 1; j < num_seg; j++) { - buf[bufs] = buffer_handle(buf_hdr->seg[j].hdr); + buf_hdr[bufs] = hdr->seg[j].hdr; bufs++; } } - buffer_free_multi(buf, bufs); + buffer_free_multi(buf_hdr, bufs); } } diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c index 7e0c7606..e08c8985 100644 --- a/platform/linux-generic/odp_pool.c +++ b/platform/linux-generic/odp_pool.c @@ -73,13 +73,6 @@ static inline odp_buffer_hdr_t *buf_hdr_from_index(pool_t *pool, return buf_hdr; } -static inline uint32_t buf_index_from_hdl(odp_buffer_t buf) -{ - odp_buffer_hdr_t *buf_hdr = buf_hdl_to_hdr(buf); - - return buf_hdr->index; -} - int odp_pool_init_global(void) { uint32_t i; @@ -604,8 +597,7 @@ int odp_pool_info(odp_pool_t pool_hdl, odp_pool_info_t *info) return 0; } -int buffer_alloc_multi(pool_t *pool, odp_buffer_t buf[], - odp_buffer_hdr_t *buf_hdr_out[], int max_num) +int buffer_alloc_multi(pool_t *pool, odp_buffer_hdr_t *buf_hdr[], int max_num) { ring_t *ring; uint32_t mask, i; @@ -633,11 +625,7 @@ int buffer_alloc_multi(pool_t *pool, odp_buffer_t buf[], for (i = 0; i < num_ch; i++) { uint32_t j = cache_num - num_ch + i; - hdr = buf_hdr_from_index(pool, cache->buf_index[j]); - buf[i] = buf_from_buf_hdr(hdr); - - if (odp_likely(buf_hdr_out != NULL)) - buf_hdr_out[i] = hdr; + buf_hdr[i] = buf_hdr_from_index(pool, cache->buf_index[j]); } /* If needed, get more from the global pool */ @@ -661,11 +649,7 @@ int buffer_alloc_multi(pool_t *pool, odp_buffer_t buf[], hdr = buf_hdr_from_index(pool, data[i]); odp_prefetch(hdr); - - buf[idx] = buf_from_buf_hdr(hdr); - - if (odp_likely(buf_hdr_out != NULL)) - buf_hdr_out[idx] = hdr; + buf_hdr[idx] = hdr; } /* Cache extra buffers. Cache is currently empty. */ @@ -681,7 +665,7 @@ int buffer_alloc_multi(pool_t *pool, odp_buffer_t buf[], } static inline void buffer_free_to_pool(pool_t *pool, - const odp_buffer_t buf[], int num) + odp_buffer_hdr_t *buf_hdr[], int num) { int i; ring_t *ring; @@ -699,7 +683,7 @@ static inline void buffer_free_to_pool(pool_t *pool, ring = &pool->ring->hdr; mask = pool->ring_mask; for (i = 0; i < num; i++) - buf_index[i] = buf_index_from_hdl(buf[i]); + buf_index[i] = buf_hdr[i]->index; ring_enq_multi(ring, mask, buf_index, num); @@ -737,12 +721,12 @@ static inline void buffer_free_to_pool(pool_t *pool, } for (i = 0; i < num; i++) - cache->buf_index[cache_num + i] = buf_index_from_hdl(buf[i]); + cache->buf_index[cache_num + i] = buf_hdr[i]->index; cache->num = cache_num + num; } -void buffer_free_multi(const odp_buffer_t buf[], int num_total) +void buffer_free_multi(odp_buffer_hdr_t *buf_hdr[], int num_total) { pool_t *pool; int num; @@ -750,21 +734,20 @@ void buffer_free_multi(const odp_buffer_t buf[], int num_total) int first = 0; while (1) { - num = 1; - i = 1; - - pool = pool_from_buf(buf[first]); + num = 1; + i = 1; + pool = buf_hdr[first]->pool_ptr; /* 'num' buffers are from the same pool */ if (num_total > 1) { for (i = first; i < num_total; i++) - if (pool != pool_from_buf(buf[i])) + if (pool != buf_hdr[i]->pool_ptr) break; num = i - first; } - buffer_free_to_pool(pool, &buf[first], num); + buffer_free_to_pool(pool, &buf_hdr[first], num); if (i == num_total) return; @@ -782,7 +765,7 @@ odp_buffer_t odp_buffer_alloc(odp_pool_t pool_hdl) ODP_ASSERT(ODP_POOL_INVALID != pool_hdl); pool = pool_entry_from_hdl(pool_hdl); - ret = buffer_alloc_multi(pool, &buf, NULL, 1); + ret = buffer_alloc_multi(pool, (odp_buffer_hdr_t **)&buf, 1); if (odp_likely(ret == 1)) return buf; @@ -798,17 +781,17 @@ int odp_buffer_alloc_multi(odp_pool_t pool_hdl, odp_buffer_t buf[], int num) pool = pool_entry_from_hdl(pool_hdl); - return buffer_alloc_multi(pool, buf, NULL, num); + return buffer_alloc_multi(pool, (odp_buffer_hdr_t **)buf, num); } void odp_buffer_free(odp_buffer_t buf) { - buffer_free_multi(&buf, 1); + buffer_free_multi((odp_buffer_hdr_t **)&buf, 1); } void odp_buffer_free_multi(const odp_buffer_t buf[], int num) { - buffer_free_multi(buf, num); + buffer_free_multi((odp_buffer_hdr_t **)(uintptr_t)buf, num); } int odp_pool_capability(odp_pool_capability_t *capa)