From patchwork Fri Jul 7 13:32:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 107197 Delivered-To: patch@linaro.org Received: by 10.182.72.42 with SMTP id a10csp92541obv; Fri, 7 Jul 2017 06:34:24 -0700 (PDT) X-Received: by 10.237.54.73 with SMTP id e67mr1058016qtb.230.1499434464523; Fri, 07 Jul 2017 06:34:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499434464; cv=none; d=google.com; s=arc-20160816; b=HzJhL2SbxrGz+27vq3VXbs1nmprR9UQyKFU+j7YrIvVITd0/Da8LjBeOdT2l65FT2L YdiY9ITJia685yzeaO1nsTrXl+l6LklBxUS4kO7Gpwrf4XgMSLO3YyOcOMQF8ncxV37U iPTEBqeLBcu3CCgluqXL19IJxo17mMHVxXIeNiRj673AbKawev8/fiH23HFfqQjrcBZF Mkk36RsO085SFbq4RqS2guRkn0rHOeI4UiV/yilD57uPaBugr0uZ+XZFsKTXrekuHsLt nwQYPhSOkQY9NAYaBmLsigs22WXTaA2IagD5b5xOQ5Ud0Qc3BH8CYMTXMiXHSuyP2t6s ZIMA== 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=fa8NudxdhJy+HAZkh3vY3mlBpN36BXLV02u6jh+d8qo9t8QQsN6dXUkS+OLWuLHdLk EOZaVAwd4Z/cao2evE+YO4rxgGRyLKXSz5tVCc3vDeZFaJqe5LtpZevKOgwzjgZrgZNT cKTEyG2MFQXkLupidcJ45it3h5bbs11TFOBsGHarVjyVLfUTudOsUexMxwGurw2ojcrg +2KPfaL7RKvIv1qdxPDVZG02kGLGrdJNrJhgWhz7jaR8wck6DO4atFWo3hz0sZnq/LAr +FihQrAHcCdQhf3VR/2FEcsvvKShpLoszFAaW+4ry1ZyXmy4nXW/5ne+kyzHXtvlPD6c bdsw== 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 19si3338301qkt.22.2017.07.07.06.34.24; Fri, 07 Jul 2017 06:34:24 -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 1852B60C88; Fri, 7 Jul 2017 13:34:24 +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=-1.9 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, 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 D1B3860D1A; Fri, 7 Jul 2017 13:33:35 +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 779B660BFF; Fri, 7 Jul 2017 13:33:27 +0000 (UTC) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30121.outbound.protection.outlook.com [40.107.3.121]) by lists.linaro.org (Postfix) with ESMTPS id 7AA7A60A59 for ; Fri, 7 Jul 2017 13:32:56 +0000 (UTC) Received: from DB6PR07CA0115.eurprd07.prod.outlook.com (2603:10a6:6:2c::29) by VI1PR0701MB2208.eurprd07.prod.outlook.com (2603:10a6:800:31::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.4; Fri, 7 Jul 2017 13:32:55 +0000 Received: from VE1EUR03FT028.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e09::207) by DB6PR07CA0115.outlook.office365.com (2603:10a6:6:2c::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.4 via Frontend Transport; Fri, 7 Jul 2017 13:32:54 +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 VE1EUR03FT028.mail.protection.outlook.com (10.152.18.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1220.9 via Frontend Transport; Fri, 7 Jul 2017 13:32:54 +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 v67DWKRI007687 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 7 Jul 2017 16:32:20 +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 v67DWKBX007667 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Fri, 7 Jul 2017 16:32:20 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Fri, 7 Jul 2017 16:32:19 +0300 Message-ID: <20170707133219.1611-4-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170707133219.1611-1-petri.savolainen@linaro.org> References: <20170707133219.1611-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)(39850400002)(39840400002)(39400400002)(39450400003)(39860400002)(39410400002)(2980300002)(199003)(189002)(9170700003)(48376002)(2351001)(86362001)(33646002)(575784001)(8936002)(5003940100001)(50226002)(81166006)(22756006)(1076002)(356003)(8676002)(77096006)(2906002)(189998001)(53936002)(47776003)(38730400002)(2950100002)(6916009)(110136004)(36756003)(5660300001)(106466001)(626005)(76176999)(105596002)(50986999)(498600001)(50466002)(305945005); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0701MB2208; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; VE1EUR03FT028; 1:zdbs53Y8153cryUsEjLfNT+oyHV3yRMP5ZcBkC0kezGbH9RpUwdkL9Y5E92/pA6Z/0YcuIsObmrEuDKah3NxGv0IGTQBHKyM81g4LIFSU1gFS+YGgqpzMZW+q7V/TJq9sCU1LVJCTq1G4id1MyeWbA6OKOssY6ZzDD5p3Zg0PF+is0Zfr6th9bjBkNvcLi9EycQ2LlkTRNMZonnF+SaprLqnDvzmjcRo6RQcr7UarA0BIfUEzGtS483fB3cQtgKEUCNyBYwoQU70pjiwbcJRaknePNxJDtu0PgPWQWmavWj4gg1cYCsTNhNN1IuTN12ncIOyGNI58j2mTf0CO2Ylgz/9iB2Fmn3Bf6PRN0VSG3hP5lulexTHNrZ4HrkpdeWSd9DHDmu/fRqu7DGhjywEpgprtDTWhdpXw3LRVcSqjzC61aKJwHilC773mudTIfBr6sp9q5B9CDfrnrKGVNMegdNHXG/zLP97z7/WlIOAvCOzHYvaCLiGMYs5FYwjNoUSYDi64lmqCd7qfglsvP9wtlnOzMrjp11qsXzBkzbbItFTVFWt1pgLajV5x715eNd4Fj9dkLUu6CO/vpuvZNrD3016NLEOQv7wsPLodruUBTTdBQOd2C/SZHVU1s/eHlUBtrVXOvGpo+4tjUQrOlKcvRpD43ZZxeFOXG5aO4J4XHHKBSySfdzphPNcbGSfLiVMcCrBG8R8sp2l0wnEdEse6fWziGx+JcvvqZDSPxL6bGzChMSFR8UYslO9xq9yb93COMPehhqbsSF9tCBnhwIzjsvcKEXs7g9iMvOBReHT5JahyvXVIC+qE8q6wpnMbGRvS5+PFITCpThUitkxveHeVQ== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 99165e60-7e09-4e97-24c4-08d4c53cac2d 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:VI1PR0701MB2208; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2208; 3:0vsqWLkOKj9YAUtJLOOE6u+ckh5MdqAnRYFNCR1ufnk5IEgtFlHOoyR34qcuRPVDljnZ/X1mapAP80+KSj9sqh7HWeibhV0JeCNEq9yeDxw+CipsDP1lsrOxukfQ3kHZggLn+d6MBZl+PT8rqRxgDOh3VbcORZJj0Yx0abdbLPBGfhL3BqQsVxJWBRLUSxVGqFjNvQ/GnjnoaDh2R/Gv5+kNvaPwaj0pkCaH4RoUgPbJlpLCY2hgnxpxR27WMKj96xp+HhTT1jn/wbKmPSlJzgGpttCq/fnZDvVAjnjxyUugF71tnRy8nwy6NKqV7f2wWrnrwySFNqHigTxK+gAKIiuUNpzOwclnA9TysGvueLuya30F56T83IQNZHK7yTqJGmWxBRwNf3syFs3hD7MqOvd2fxbCdk95cQ7jEXmQRWGh5ViXDL271qS9UOZE/zeHfKwcNUedUv2x+9aGeibUGT59Onu238vgdsOCXoEcf7DLiYoJKDAznvl2wTGkeefRsGhn7P6gwNYeBRnd0TFRYQvW8C6mxFdSoEFeisujbVKOGyYmxGA4syMAsxEGWZEO22qmn6xN+i3UkUvc1TUSL6iKThfitQImvUtiiNuLItVFj5E6QEPjVdBZPKN1fvUPgAUZ/6LOHTh4UVqgh+FAUraZJ9bfr4MmtxCn55WViGl7u7WJj4ErL/nnqLnVzhGy2m+lPQT2mGHrIV+Pew2V17mrten73vGyhxiqbu42WLgIoC0bwaD3DTInXiw13NDmAp4zOkcqPLfRLyhBMFSwwFyqeCKC2KTuyLhyMiU42al7ArggV/DRlHVQ73OiOkSylwZKs5ODpGOlXHsIz5MNOiXr04pxF1e5p1HiuI9m8K7p4GOdIsZeD40WkXj5mpo2vYze/wy9WE6VdqPOGiCKlg== X-MS-TrafficTypeDiagnostic: VI1PR0701MB2208: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2208; 25:y/3gNr1piCzAysmTAhf8g+0nNYfqDHlJgciGmhb7eGtPNrSB8HK8TtLijgZe9UekBIXz1LOoS+SWn8Sk58vmzKVT4oAN9PPW9bEXic0nGY545rk6nzE2cOR/ZDbZc5d9Yl29CdHg5xTTsCcInumMPLTZ/YsMH126L2KqjOsdI6MyodF8E2CbuA4oKtprGlaRouRK3IzTCIDKLR7mH2YhwE3TA/OZFXmhWMLuCwE1sNG8qRn1WRby2miV8hWgtb7oLhPCyiJZS+WtRON+ZfA+EwDzkGj61IYSykJ0P8N9bdZRp/bwdXNwok9wm9HcFeKxUZu3A0L4CIzO0r6C7dNE/jaUNM15ma4jQchLL2WCOPxDrJrTZW3Q3TEVOhfMNa9s6no1gyohgsKzSrCgbGIVg/9YamK1XqBn7DJ+iVRPVZ+GLm4eOlzrc+dSU8b8UEcg0mevb7z1qL8yI2Yv7c0/SdIz+IF5vq0m/uICK6HeKyH8aJyCdgP4FAdHndAHPaSs2mnLWJsJPFGRaF+b+XI3LMUtajtPwoH+jh78KpJQ19nSAgzxDl4n8aT9MfOBL/1rPQJqCZvmekz4pJLb/VMLWAxCAmKdDa+EasQYvpj0xnt6JK6BMEEdf/gVTLwZqjJXqxiVIyklslJcwUOSv96HmjYOACTnYqjiI1vQnVA5HVBeb1wt3WSsej7f5f3zGHa58sWuM3siX8TDOhI94YEEyqBpyH441VOVHuVEdxaLyTR6WdLTfG3mDcznpnwCIo+ZVaQgLladGjfHmdZGbGOXfLx/WBOpu5w2PZS363vWZDVqq/11Ljt1Fgf1VQ9IYt0AMh4sadG+j/KVq8Qb/8XYMFo7rBIIqTjG6YpzAELKzom1kB1gxZ/roo7rcHiPq5aQChsKYEZ9H5BJ0e5gmVzloApqqsZKweB970SelL7TbtE= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2208; 31:Ih0qzb5saFpNLqQgRjSQwthkSMAQt4ce/msxeV8MSKuXZyGhnixTxcS0A4hl5RLd9s0tv0oK30GBgbjkeilGfjJKEEYPF/ETW1TS7/B+LC6GG6kkciGeDH6ssvg3ncjaubTLAtva/vXXsZfs4djN8BjgsVjuPzHPXbwKO1rmU1u+G9AyJ3A7PG/lPq+6159f9dc0qbNm9ZuZMNpe72ZN+uPI5v3D0hC6gmnMLo8KJUja91BiN+ZkMWAj5WjBVIsNHcPApia8fhJnAk01C4wFxqDW1Y4onZJ2SL4GkUeuob8JmJX8Wo2ZRzT7i/yo4HBBb5b8E1ozq8UzxVbm3l0NBk1AgYyEUBSJ/cDgJ3E2aFT3OxAOI7A+K4dAhgU0Iz+rqMEnhebhavLUPrquagLEMKoJEaX5Q9hTG64MIJDlpJ/OySF9D10Jw/iGQdsJ3H+jMKRHF3f+KxKLXQnOv64EFTqEIyp/hf65jiPYUYMLXU9Nj8bw/TbSqZBB8JwIvOWfjrqoTypPOSaTDsmYKqvsdoajL4SCAzFUEaA/ErYvAuFZ/aQ2f3k0FYje4R6VoF6B8A7qZimGDDdjIO7ejUFW52xKu8j1g/fcaLYgJWoAAjvl3q2p9tXdKw4QFdjAvYq3wCD6+mXNnJF+jtFcgIyscASiXrbWjQf99bgTIOpo1A7JiAkDIdNp+6485eE20R52j9tb6AjXEhMp/iZbT/eaaw== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2208; 20:Plp9h9BKM6vyn6+C/hgwvEi3NBw1tWHw7p9sG+j5wP6vcAi5WLAZGcMWnPIEd8zUJ/HuJR+T+HENgl3z5Oiu+brb3JgJ6gBNbiuQGL+f1yYeYXbTAsuKtNV0+vGNrQFKfe+sTMkLw97i+nkIsbcy/oSPVjBaiI/M7hIH8qsS9HcMut1WIAQKCSQDQVG8slbTsnyEX+znzf1yctcXLuTM2XoYvP865ezFUuT11B0K2ccK0ADJE+oB/bZvuFrXMeRV/AplZGzz887/JxxS5PmMYOL7nwF3LQTB13Aw5naO1aJpV1o5yNlynrb39PtE7ZRp0xTc3+CKX7a7pYZpzRCmMDo23OKlT5//nI1QUqs9lykS5sjqxuhIsutdmmFuWlaEfKoeErwuEH2C02HOfE71bOy3nEOAPgAYSGmjbf2ozEGo8ten56ulrZvTBh3FK2/hwvm8Rmj5YzWAGagT1TC6Fnqok3aHal00u5YnWQX8fh6+aQkoqMpyNzk2qqEBpq43xwcD2YRe5WhxmlabU2ksP/j0HZhTbhhREXjiXJiftVIf7Nnl10k612CxVn1IMHjw4niiUZk0kd2TC9B7OPMkEEzLuMF7tsxLscTZaGZX+G4= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(148574349560750); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13013025)(5005006)(8121501046)(2017060910064)(13021025)(93006095)(93003095)(100000703101)(100105400095)(10201501046)(3002001)(6055026)(6041248)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123560025)(20161123555025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0701MB2208; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0701MB2208; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2208; 4:eNfrUGpyqcnVexjcS4eqLF8eYZOrD9r6L8wlkSk5?= S6/SR8sQg0LEUscjONFeSKRy8zmBymZl1rzf30f61JEvIOWffFeQdadKRg/FjVrOJU24GrSlB0EpveSnCaKy0GvdBzcB1XbVgFq/MXIa36GxHMp6Fob7s2nu92R5WDoqdhh4GqtViSEg0FPnAYojZYst9mErmggjzI03Mx7aSmYZVhqy2eFuf8282Z4kmt+9dTIgI/V1tTIxBUjcHblfrvzkHHpD5jqpbovWcnTmsAYnYg7oHmih4VfNNOQZPbue+D3wY6s90nQTbUlLgju/faGW7OSHIqQaN8Ceb9x/NmN9KzmqCuj0Z/sEi6j5YSf9Kx4MCQknmuqf3VeBXZvylpz1V0g93EnNFSEv9eStJchhdPKuxtNNwx1yDHZmLBfaua39tjOr2Bw6pgSAU1BntZcY/0Kc74kKq87BeX2K8y1SGJfdrJGAnr6p5vzYVMhSA0Cp/kfAD7P99Filqj2AgeJ3nHJ/9HqG7ZAnQM/xC3pdLMPzEUf2b3XWSz4dakuMKg6wM1+7+Hg/vIiSIvwPFYekhCY1kvYeHD0gJwZ+3YJKtDzT6cMDVTNFuETtz+pQkwvDJxqCJkhzr4TP8KZaPogwIGOeIMbF+xcqdiZBbyvEws9c7TQkj9fWdporWWSErr0XSXNQIQ5woQDk70/3QNwCiiYknoXfo7pbxfaVUEjG+DIcdHe56gb4bNvzNB/iJphkmNqLD4J30jugOCvM4hiw3A+ed2AHIRdhFgANR47SUsjmY8GHaKhTv/kVXlfY0oa1JVlROjzUO/c7LidpB1XFsz8QHROVxRdGXOw9gc4lR0fiTHqy6QHPjDeTgMkkhaCtg7G6YSN4UpTAhVgjnll0XTsFtEdnwV8XbREiIxQizKaou8Y2CgOylAWgFzTiS3yH6vjLEINVPJEucAk9J+wuTUmCroncpdXIeBtpjpRvKM34FxsSxypMpEhnUKczGGV5/TvGLg1CBk7oZd+r3sQuEpx1xRc3QRoiDfzoOGvruo7okZUod1hWglpw0vNEhoBHypMeMXt2lou5tJTSxTaZTylMqsxcryoOAAVmHyRw2ZPhYfNkxfFAEMz0Oo2gxupAS+jHkV5JaODbTt/KpOwy28Nx6XM/hqdOnQ8+dDt8XhWCDLxnteelq+IvE3M650OgBsskbMKTwxvjJErky7vp1ZJ7IORioiaRkLuKfhYwwdWoJIZtMqifyR11r3UpXej1qf4Xf18SUCv9Gt3LQ1ymIGTdhkfBkxjuxuxTS9eSasnHQhg6kVV2Y25LjyCcgns= X-Forefront-PRVS: 0361212EA8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2208; 23:b/mnlFMfEUy2Iqaeu6thYb1+2Bsk76fEuau3cpw?= ZeiQ7xHkLt98PdIFaZ9Xc6hThTE95oTifRbEN26gave4VC8Q4o2iZq5gR8Dkzn78L9jJLxSR4i/4JWdaz18sf9hfcSMWxQw57qedhdhp3QabEyqN4hLlHRKkW/nFAMWrB7yu18A5DjpFUiISxZWApZzjONTnuuAhHpYZxcNKInMJ69uGirLQ78++c2lfX1I/UiZP4D+wwxq/fYwvV6TXrqEc/dXTkhj8obWt1r7hwpu/SdSxbMA6nt5DZpu/pSG7wQ2sPl6N1kEDdXvkJbx7snvAbt9+OpJIqV7EMI/unsu5cBMY8weh7c7zfjjelOPGtQCYtvUckBh1yzRbWo51gHHV1tusdiyKs5VTkfPAW0O160wI1HIdyIfR/V+LuqYmDvvOujLXx/GR53ouVO8irKZSZvSUsI4e3ZwEhdUq/kD024UcoLiKCOlKesbxRW6QiSnwBenT0E1tfYK1G2Ib2Ydw/IBDwFW6Syn+MIEpwrQLA+fjVU9BxhgLKRGyrRl3/0grzut4ksdyp18QwfDSgO7D4AhcWAkP4QWl2bdB7mswD4uvGymk70P6Vn34GCii89EbcvlmW7sPb6aOZ+bLEkmXqvEvMsJqrqJau0M5a2XRO9jj4ijAWKlJ8DXsUM1nqiuAVxvuZxOqcAgGWV8BtJmjcfvwKhCHSCb8iF/BiPxOCVgcX2Z8Z23/P5hFLShkRDFJy/ozWy9ghb+reLapOWy3HfgpzY61hvbHFDis6u1K7xDM+vS1DGLqyG3B2C0gJ4Cyew4gs9EhY2aLIEXeCc7DH4XoKjXBVSYnMaeDjm2AzgQnWrLpodDorcY0PQ8VtwvwESOdim36QTQGsbTbh7DU6wGKFhpFaVGg8VmbDDdWNLHgBIE/4iEMNHyNVCRde8pSXCfSdXmugRqOs7teUS3GFTkrxANVkukNpmcaTG7UbLb+orlpDpGXm+oGnd3l5Xfm+U/XASalnI0bHyUMghr/cFe8GyhxfZT7mrzqmqqX9wW60WwVQqdy7BT/QQZWKQ6WXndl20Ce3ic9annVbGeuzQv35YMgPlq19DxqpSP0vwQ== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2208; 6:YAYUudwG0mOz9+zMPvtg/+1N2JF8VfXK573uthJY?= tdEUG4W/d31qgGTb5u72S8mOS4mmjQmKY8ZfwPsV9GUVhNnL3VwMf0yb0ZKjlVYDWv1W3q+dDgXjW685+Aq9QHfbJBttK/cVparxN37YnvyauCb0lYDY55gE34jxeQS/EQISihvhnX0RPrqLO2vcGq9lHj8jznDRlylV74U7GQSu6EmpsiE5+M9jx4iu6/4inIUtq4jgkdKFmiyWXfWGGU+DqKL8213vy2o8GFNGwHGpIwmQvCpyx/LCNguukAtN52Y4PIcrCJWhp2twrRjXSFWdWyejZxT31Dmkl5qxjCcgsZJ+wJNUjqupHhfpcJ3xk8vYqWQU0QrFfipKioVBSuhIR5tulwK+BtAK7WnlnL0m//AiEYwoKZmYikXklyuR7RpiMTw1leML+b/0aQD9qbhiO0zZtXZltTQAWiaMEjDuZKFg+HUS4viskSa0gFmC6QOANMoT/cohGvYt0+nIPJcIzH7VuADw2bJKpd1PFtTm1pxCIKZqMb58Y/gC12vtdSOWv9FdyTx5Py416dLQ+8eaey7OAlqAyYuOOcmgTmjFPByzONpVcOlOkAXuEJnjXGdYUL8RdMHdwOzWSSs6X3JpbRFvuM0jZTha7hCJH2hs5mkCcJL9XC3+rQONcbMzkKvCFsyShdHyEwy+xYAixjKt8CRD9oe9Wt/CjOgt97iD4jeLDSS209UWQjatbBtb+bAXQx+I1P+v77w65tA4NPmOF8PnZtSNnaN0ugbyTmayQRMy4TJoz/utGGBB91jXS8NhPf6plzdYzGEoVFl2iDzWmPnDQWcQDKGlAXatpDT03uSrDwUvTjb6aho4OflMg1YLT5xCEw0Ii96M1BBemoS+csJQBwmaxwmX9yVoXSE9EWnq9Ra7qOXaP8cYZXG07JW3Rm2Gy85cuOtegQxsvh0zEoV6E8eLhmcsbpz4r+T8BIJ/UnQiYclTjmwhhUrQXN1lLKPppJil7GCThhpjrwJ3 X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2208; 5:+WAJ5rfqOVuiMx6P1hLsYDM70FFMNsKGSzu2YFMjFTDU9b9SiOBf/DE9K8qSsTG3HMzm4zDmhs7eEjv5kBrzrMuF/F7izF59HpP9xX01we23C/RvNDepCR9fefpCMi1yr3UDNLMjO7dAUFb/H7neh/h500VMXvA9WZC6A5QgxIls4wKRVbPyok97qMs2x41uNV+IQaeOlbw5gjv+U4uQ6X5vdpq4GPtZOpqh1Ir0Ql80CXMZbA8GXL1OjMVT/oYFkIE5EMbAcUH3VKt+Zjp10LxSfCIeVUEOat26NTdO5zbXGRJvWiMcUgeKOnDSsI3vb/ph5D+abCYR7pSyAepx3Iu5YflzZiluTC9bX519c0l5VzH8IvABdhriW93MY+M3VKE32oDc1Thm5Omg3r9P+5OigsKVI0i1ya4yxf+aPwsNCDfKwQrpC0grBIGrtgBniCu5fFfN8N3qfeygd3FL+Ibi2+CqCtf+sJQMNBCJUikwVIGNhy/ubLNdCQsQJ8Sp; 24:U2286Oh3oof9Jlu7vfan41iPVVDOw4Hv4y/aB1F288UxNC26Txtk2NhYwYyWh+nnzH/mKHiWfH0xN1hzgwIx3MFaGH5TVU72LjnbWn8BAP0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2208; 7:h4UdIu9N43sAFbfoGA3kEN95WRGhWWuMEoW7TQQ2PIb0BNbL4cUBU56xmEhJmxABez8K24j9z53CGZ90I4pCxUWSBfupxkMaaG68cfJVAY5NDWvBM/pCIbXmBSY49U8I1daMD+2kplL8djXZouC9X5dIPERg+87gJoFad/pKaWBU/O8nyQi/FfXKRizqBbAWLz9oDWHT8GGMMIhNwyKuASDlxcccDzADGrn0AU+SEfAMufMHTDiHhGLEtQmn8Ly2xO6gYzm6DgW1OQoGRaR6dYFjzVTjYXwwxqbV20l9to5DggVPQxGJJdKwS8rB1CyFB2DqEXt0D/ErwrE01xjmZNVcR/rn+kWALLatplQT6cQHEsvv7jc4I8xyQkc2vcpizQbxaSVovkZXqnx8ugsG9NqF/ncZUHzH+HohOXXOFXMAbR0ensPO7PPzGYsFvqWmASjWQfdXafpg+rOJpLzhY8nSdkD4bXc8k3ZVBsztPm/4ZFt++rKza7sx+uOgpvh7+yhntFwtxISSgXAnxZooYfGDc9Rdk8HYKMhr2rWmI2o69g8hd4YaWH8V+KjamIvSyFEmqPxDyTXvtfHInrUlbAOcneK437iF4o+WTr6KFi2G3U+HdtMugxKn9mGgypCuqz5bG3M+3d6UtgPyOWTm7bZfoA9TToeCnE3BkikPMTMY/z7UtN5PNBr7GtveqXXE7uFX4twDAL4zfIeffUTqDa1hWzAa99hZU71empL3j0PZZzeEX4sL7nXHQSn8TC3k1Ek1pBqBA7/1M89oK22/vSISH8vzc68iPzFwoAyoR4U= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2017 13:32:54.1713 (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: VI1PR0701MB2208 Subject: [lng-odp] [PATCH 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)