From patchwork Tue Jul 4 09:53:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 106928 Delivered-To: patch@linaro.org Received: by 10.182.135.102 with SMTP id pr6csp829612obb; Tue, 4 Jul 2017 03:00:48 -0700 (PDT) X-Received: by 10.200.37.98 with SMTP id 31mr50048760qtn.92.1499162448846; Tue, 04 Jul 2017 03:00:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1499162448; cv=none; d=google.com; s=arc-20160816; b=dW7hlQUBlu+Pej9gOL2loEB5Z/LqfEQUp9y35tJhmZOOPKdzEhwoKkgSq2RymdsRCg VZ0cWoHk818sWJkqR22RfGvbQW6WxNOrfgE9ysAsML7BX9evJ/VPsBYtQG+asl4woVgN fokP2D3d8S2vs34xNrTnEjK9HVnUCbAUdhBlVSXR0WyLsYqtrD6LK28+FIWRM62wSw2m OcY0N0Sqy+QxWgJM1clxW6rp0TSrVcH97TNBRGj8FNfe4iTf0kGmqLfIMGJIoR265Qmf M89M2Q1p2TpUEPsv70dmlUdB+3PGBJ00Y90jqtd5Nt0u2pgFlk3TeziEd1Px9+z0dUGN REOw== 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=BGnDaLSiKVxniLzJR7sbaec+jNwEV+Y5gktuJVSRS/8=; b=h+V3gGlMNHA53mJMKwt/dW3ZlFkOSzTWiqw5skpViUGO9JQss00I/bUHUp1HKmCWN5 8FPk4FM8FoXh08ZiE2d+0LIE1h7kzcmbSYoYAHMAI6JhHLtYMtt+nQyia5baGl9bSRHF eCY3FE+kqTwbs/KEdEsn67ja9lj6pnTCnqekbINv6vAG/AFZQwU64aGHJkZ/NiBAq45o ytCR/Ztcn/sfLDooMtj1p8UIaZhM1ynziT1vQNyOuTwgL7Lpp9YDee4MaM2AQifRz/zK nyN3dhwG6VNu9m9CxKVP27pBKF/W2W9fQAhdMuyiSWQnnZ784YdIx+z6CqKsXN8nV6jX FIJg== 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 11si17145970qko.121.2017.07.04.03.00.48; Tue, 04 Jul 2017 03:00:48 -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 6D39E60AEF; Tue, 4 Jul 2017 10:00:48 +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 5FA7160C2A; Tue, 4 Jul 2017 09:56:13 +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 9E87F60C10; Tue, 4 Jul 2017 09:55:46 +0000 (UTC) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0108.outbound.protection.outlook.com [104.47.1.108]) by lists.linaro.org (Postfix) with ESMTPS id 6117360977 for ; Tue, 4 Jul 2017 09:54:45 +0000 (UTC) Received: from DB6PR07CA0086.eurprd07.prod.outlook.com (2603:10a6:6:2b::24) by VI1PR0701MB2205.eurprd07.prod.outlook.com (2603:10a6:800:30::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6; Tue, 4 Jul 2017 09:54:43 +0000 Received: from AM5EUR03FT010.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::201) by DB6PR07CA0086.outlook.office365.com (2603:10a6:6:2b::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1240.6 via Frontend Transport; Tue, 4 Jul 2017 09:54:43 +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 AM5EUR03FT010.mail.protection.outlook.com (10.152.16.134) 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; Tue, 4 Jul 2017 09:54:42 +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 v649rjKA022549 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 4 Jul 2017 12:53:45 +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 v649rhtj022443 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Tue, 4 Jul 2017 12:53:44 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Tue, 4 Jul 2017 12:53:42 +0300 Message-ID: <20170704095343.4266-6-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170704095343.4266-1-petri.savolainen@linaro.org> References: <20170704095343.4266-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)(39840400002)(39860400002)(39850400002)(39410400002)(39400400002)(39450400003)(2980300002)(189002)(199003)(9170700003)(50986999)(105596002)(76176999)(86362001)(498600001)(47776003)(22756006)(106466001)(189998001)(81166006)(8676002)(8936002)(626005)(1076002)(356003)(50226002)(2906002)(5660300001)(36756003)(305945005)(2950100002)(77096006)(6916009)(53936002)(38730400002)(50466002)(110136004)(2351001)(5003940100001)(33646002)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0701MB2205; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM5EUR03FT010; 1:nXj/mz4YwtK+JSKuCZJYFk5fpMXFseBR+rLXpb/K8HeV3xwhkDO4b7xJ2xo1m9lZxUt0Q4bfhLfh/CoxFXMHbOOHdX6RTzIfD43v9hJP9YrzIYF/W3c/6FYxT/j43s2Y+TuDspq7+eT2cRPsdyyrvIaYY+LdHl9Qzl9nJXoVsP22/CoULhUCwWEf12f9HHf7KESBx5xZBH6OLjwMFbqfnHXtBs4TblIwIBhVfgS5+VnonpXPY9pp55gUdGKDSPfCYb9cCbeo/KaetnSeYza53eaYtb5BEn+c/fmvkt/BkyqA08fGK0EFXYsf3UcWQO5EZbyNdpMDaxfJYSiPFP0Ov3UUwf8ehgI54s1wCbmYDJy8wcrWi1f9ci8y5rBfk+1PHZoomfIaYjIBGg/S/vOZUlojBT4rxN6z++Inud3Cj+rTuLQDilQpXfrioSUbNUAafA3+4HeGwEkLWliKCNkeq4o1sekqZNvr8+6mFg7INPqH7x5IQSUr3jT0VFhDJQ0ZkBsKGAujPblcihkj1bV036xlNe3V4FYiEtmP1IfWYhnYPUw6Lf6VmKVGfCyGj93plWeoKmeRmezEVDgUmS3udIlsuFGd65ogYyIUJ+T826SHkQJNB5HNSNagaIDZ8BiLzXoC1+acysq5rvAe305bYbh1K26Ng3j7fwzVgi2xtyx6d4THdh8ZjufEJa3FEn4FV9QEIpqJallAO68DmeE+wqy4aFjYPqpENqPXM8JOkLED9tJMvX4adqJlGIKLshPftgPcsrle0/P9RMWPF5WpEBSTZXCoMghI1ct55UyMPJI/iSWOAWPsVZitYUau9ypnF0AB1Q8sJFuG6ilIfeGljBqSu5KsCkNrv2tyRH8M18b4FTLKuBBmJ+PnUrh8VjTx MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a00d42fa-6028-4230-8225-08d4c2c2b1c3 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:VI1PR0701MB2205; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 3:0pQkVuhJdTPgRUCg+gdnNq6va1A0/ZIumXKXr/nqAexJKOHpgToyEG6bkOIMnq3VKiAZIKr/FFL7dqKcuFwYbeU6pOO09UBHtAwvsiBzw7EewHd5DsO8hzpAM4mUyjxZPfyz0qIW9sG1EdHl3SR4vDVC/2egQ6xsWQwHpve15qnvaV5xK/GITEkr0mksGqKEUlEWo4sbJHjr5DlYUr59BVHSsppFkIqTw22wKZLd6e6ALEEiNNOaQsvcy8+OEESOnR7vJjIHPk8cL9bG1gEMOJZg6WB6oK7Qn3qjkL5OHytTJF5FS24B3V3xfA/GT1yNUdSDBNdod5SKF83Butl/3iWHUneNDGk0WxynO4BUJmNFK/y4RZ4suTtEezty8FvrMplm72431vdgNLxvB3sndP5F3GCM7nEfKVbfEzTsiBH/sxLWL3pVwv+QXEYjVOVP7gIvdVRSbIQVYXyTliVh3JNF8xIKGc1W5CvULXP3DEC+chEJRVzHKcMdD0ahcS6F/4EnuwgF6o+aYFNkxdkM+BTjlRSVDqS1k1bZWIaBvIYuDtV+ZeEeDZxjv/P2JNsfNnKKzyS5Xxymj8DhU5OKLkxf5jx+2z4GO5NoKYlWes4NGmM9MdkFXpL8tvhOpNa1aJW7GJhGdPkr6fTo5iGB8nRtLh+b7HNAFkWapU43KiYXiPkyxtyKReT4W0J62XQeulHFPK1j/+ip2kk4eyGcwmHOSyUSliDeZ7RviP4LZ8vwiepz9OLF72ELZ9MVWacljwNxUM0aoPq0rGRNjwz9oQ1DIGrcK+siusVjmB3ArvdhLvWh21NBU4vUyEcY77SVzcUNxy4KAlcnp66gyraw1yTL9AuR+1/2TfVD+vfFO7Wyw29fUkQ/3QsB5UCHKezfC1pQOd0wFUJJZzzF7jKIyQ== X-MS-TrafficTypeDiagnostic: VI1PR0701MB2205: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 25:uelTpH3Nm3Po4U7ufUrP9lIliMBf8GRl7cnXfbhltPgmMbczFbFioneHDYjtC6pjaENbzqjvWnDhKkdX2vY34sJ4geqUwlDIQaHoDRv0mDou1pBqiqRK062CYp4B1njzVW1AwWsEue8ibRd+qplmiGZ6g3Sus5o4SPqD1s/+GRTToYjfzYPIwsgay0n9PoRVTkESawmp4d4ilP9P0i22ZHpoUw5Z81ks60JuQzwGJpLqiozHNq6fx8lwIYKtDePz2pnrjzCZCa0mzV7uPMU3LW436O2eBxJ8GYOwJenk+16oxTTU1xEqVCFXm4UBjaVMyi4TdJQ+2CXJeoxlXhrpNc16cq1YiJvNCoX8Kfaky17FEstpCGOAe60baxw3RON7OmlS9MpwP9+lkM0FVJeO1JjijGcW1vcFz30mS218ub3hColQlagfkmyvsapk3OryPBU4iFtS1u6jeUYcfeg6elc2VLJa8C59nPEhe77lYntgnaKwGJpmyr2vDfV5F8rSEixFMoiesiRTWWYas9pId6J3vEx7DG25aCrww31mRe5AtevFvtcrgDOT4lLrm0WQMIM3/UyrTvS8cVAj+9+Qd8V7TmA+VH3CkN9887CCFcDNIpZTkgaqWURIVooULYCUiToNxxAdko4uk0ISJ2u4M8tlQkhYNqroN9AGpnIoj5o4gksXbqMIhEQv77Rq+zsDfjN3ZgLh4R9nqLVRUyyo55OGJC68z2gFe2Rq6wRDrOTejvxsRL2TK1WItb4RCqK5Fl0fFc5tsM0Y+wE/zasPixWMO4Y/bumUm+Iz9qMzHVOqwonJm+oQXdfVsD/ugNH5t6zhKW2pVK239JYhciHVSpGy8urVpBo41N7OL6cZ618mFSH/SjNAAFWjekGZwSq/aUPU1IaMgu70O2PP5R6LSHYFYakRe+GWlvOXzzZvWkc= X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 31:n8LMemP+I8woFTf8LbZt1K8rA2p9QQLsEijCD0YZGh3/JCpXG2TDlgFyYskpxYQUsoQIqECwGoCIwX+ywPazuNVJvZL5BxSLKL7yBMSqNrC3myo2YsxN1PJDtYyb62dfPFSZRVxBpfX1D9auHXKREmrkqi2H8t4DI1djxwW4WoZwVn6uB646Dv9Wl2lNImaJS+vC83xYlG7cGSRlpneIF7U+jGnGS+0ku829hhTBdfrnd2pPHJNTB5q9EHFmQ27a1VBUnq72tuVRgfc9eOcssS8MsYW85xw6+ZCQJ7/fSZhC4Hw16+7NuxTT/sgrsC7KShU66dG5MyLy60+QE42dvJuU3a8RLV294T+ysnOEjHmDY977SBvhGag3VxldgeYyTBD7lDhmbomWMRHIIQxfDKzfN/gL85ITDiq/mg46jKNye9v+7JzZ4YCseK1xy19AZ8Cl+x/qCg5IUrCyTWWGhiLetIKmEF6xli071zfz+aEp/uPSLlq1NkcGQvsSVpP9ho40M5ut9G8T87A12YR3t2XmRKX8K5lzuF/npbZu55qehZq18D9j38p53bWEheDCWg1YKi9gE11COKyj5mCrOtw8aVsnYl3s9Z7BYxzgDYef0LhAgL8/oEaohliGTwMRIUfE5b6Y6WYkS8+tTHYeZBa23NCqL8KjATMNMqh/pxL2pjVVTn5mXynRkh3a80vg X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 20:FhhN3slTdYeULZ9lem+gSxlOp0yhZCpEanQfVn5TKBhR/U0F3ovxhktGkCspLB83jOrY494pk7DJ4DcKiGFfqV3T543FjP9nKJt7AlkODga1WDHZG77E1Y2/eWwP4Pt66UBAsMEm/uzHoTnqbmSq3eR9hpnycxjviHfeA+Kx507vdEULUFIsoDkPQB3DWQfv0FmE2wGTCnt/eMYaWP9flEcVHGnOOvn/hmltdpEZR6VNTCQ2SInVjdjhFozoFEyvc1P+hzi7meHUz5bpwi8JeLh1VCuIR0RVyxS8SEt67Xdi2OQRFTJVbiMzCzP47ViQpmFxjGXXFeSLLZslyH65HeyTqCjK72f1yL6JrCVupqzJDvjoXCHjuS0eSsgKQwuJ+v4smZEssDt+SEZRWr8znZFR/Q3Nz9h+c86EjY7kcFrqHvQybgc2l7cInRNXKGE9LnHb4RbwE1n3Mt4g1jrJKvY3JiPJS8iyqu/Z6Q+ZDPrJ6n9Xk2CmbRlMbK02xgCX5BrJojSZVlyHYxDCsIX4mPnlP7GtfP77rrdRtR8785c3lG2em7kIi27Zj5L7/2PXRYnFQgIQg8R/6ofkVEYZtVNZyWAukQgwbfFmM++p8ug= 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)(5005006)(13013025)(13021025)(100000703101)(100105400095)(3002001)(10201501046)(93006095)(93003095)(6055026)(6041248)(20161123562025)(20161123558100)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:VI1PR0701MB2205; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:VI1PR0701MB2205; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2205; 4:wTmXEpCpOzJIPySkR2Jo7/MyTo9lU9baB4iFt5G8?= TUIFsg7fmwOtLb+KJouNqzyAWIMPxijXDgETcmky+7g2WEUUZoIs7OOwdza3zGrBY4A6jxUQ96wH2FNbl7Z/3ZvahkQewCyq5rqeVWPtZHch/iVU8qcjjZ83XXfRS0ETgsNb+UgD+UTOFk0+6VKv1TG5udQ2XAB1WzPa8UTeIdX1DsYAqe3aRagP5iIH4PKLfe7k6EmwW+fWoMbHi3z7SXa9Z9lf1XDecVz1vT2LF7sOhxr1IwEOp8/wmPSURdhUgDdKiFx+40VLnBAalgEuQAV60bPE+iKZsaK0fnEMjkiVeS82asO5gAjWtFkaZX9gFa7SOHeCYolAM2hfpJoF/QaXEYdladBHWlpBNLBxSohlN0tDLGupgaDtn6cx5GDC5kT2D25Sf6wnA23XhujH9a5ryV7G5DGEsY87Ihocs/+zwi58vO+GAcsjLKUr3jEnNnqhnx8AfhcHZsG6dayxQT6mgd/OlMB7VFQl8UZhX2Sjph8rcCdoPXYy18VANJ6NkPVtnGM8NgJfcwK8lcCnerRdnWP25fqQ4vxrCv0dSOrQIWauPhbmwA+klaW9l1pM5SerQAKy2i7XK+cerEU70SS+IJlpZ53yXGHRetb24F2GPZaLPfuOnypLalSjgkQG1z1UNYeywfbTtkELgZ7ONcRSO2rjESulmZS8DXWtuBsQeYiYHKPGPy0GmWfy5tYjTrHr6N0mMTJJgQ3Kn0zrjd4kUJ0yS/wrdrKymnkIiHvfnv4Ipc9CH9e7aHiUIpxVcX8DN1SGhgXpoxZeHsOe92pqHbbqXbatagYXvrcm9xDs9SI0q04D5uNpprSWk7DTeuza7y4YO90d3l+CV979pabR/3M8Y7c9eLp9AWHIt6+nafBSy0KAfcwHQy72LkM+3UewdF05Jr9F4bRvxdXlvhg+btWWQVRzQlONINjZIc1wqH9lCf1Dh1bXFXYluzWsa0CQLxEfZt1RkHYOeArLB6J4e3JgkI9I2+/W1QhAamsY/uXRwmjtjSZF+yMFukZbcCecIH0uuYiPMZ8i1toUsjXp06BPQcBGOXZUzTDauNSpg8gYtsRSR0844EnETbvLaLS/Pljk1O0ntS6WnCdNBJMR0415AEZgAhd3CiA3dmLde3fSEpaVhMu7eyREK/zQrrTxrJ43yQyEH21vxLSeLZLD X-Forefront-PRVS: 0358535363 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2205; 23:Ly6LT6TWdbu26GCbCP1aTiupQvOcf7zWNXYNlpo?= Gwy25Lu13SURaVOGiK0s3JVPfOOAguh+P0BeF3mEgadgETVcq9DORNmwiKFxZDqsEGrGq4HR3UGCuan7GwpkuorFZBA1Ou2u93ahTjWrbVJ6nwfAJKn5dJRWoPaSeaC1JZiV7io+VvcOlXjaZt5JxrB2ugLH3Cey2aJ21SeKpPG/kJ3W0qRrs9peaX65x00LMIpuLjFUDycvFDTPSNR+3Mxiev5TcUiCyCXK3wXogenoxcPNr0S7PVFb2qvRT/yZw1rBI48HyC9RCcZFkubSmtzBybIshCa8tELylqUMtzUex2Lggbp5Au3mMgGbY3jJ64X2vi7jWH29LMgcskIEZZVSr87mn2sCkHWVTQ7C+WlTvpLt5lXeifW3N3vbxK/4Ahu1xaojFeh8WE80H/zbi4hF7t7LJ/mqf+OxDJ617vT04nXXJgGT6X5Wbhltl9RS2J84+3OCmetPewcaXV8mEXD68iYANe2ey0uvR0Yatc19Zzc0sQRnvfJow5r1U4ng5oE3KdeYBXTJMl+Yyr85t3tG6MlY7XgKXSg74JJYbuim9CyD6gebgyxWdqjQmkI+Z/uAOxLzm+kw3zCTCTTntEOsczuasihdxnSI54mPbyZcL8Fu2K7XbB8Hktgbi6n7gbJX6lzQAx+Z7MLG0akicDo2bmKQHq8SHTnzcxgJN33UOF32/ITw3yYB4uCKSlczzHmqC3Q5oQtxVrpr2QfI/wBgOjBzTKQLVAd/6DwcDv4rf1Rs6WmQ6bcI0t+PM5yv8gtU/uLbrSTMFTrTkVkLs9urbY/02sbpaVP/DatEMATvtHw0d06DWe9smxYOE8YBeGca0otvY53oQdEppPOOMdmicoQ6uqTgY1lLHdTxiUvPAuR88nwIXWZl3cjJaPAdWEUJ2I+Z32KekjgC5aBZ90o8/n7YUuoesVMLbLzSU/kOWzct9XL47IjFRngjjeFOG+62G73fYbKLGfJnLK6KpPlF5mbz3WmckeUqImfaljrGHUfnGAbtf/VxyLvQMFJQPEZR0J76x+ZkkpGtlQ5F3TIGc X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2205; 6:t5WpWe3x1KHN5QQYqFdNkBrlP4M81dy0fqtxdPoY?= 9HT4a519RkVMrp7UB3c8Kn02D3kM/Rb3mcfbvAIiTfNkeYzzF5fXLyLXN44rbrcuTLSm+TGi3lflFBWxgGxy/zKMbC/nBZnQp42xw0CFlTzJdpe/YGXv6cevR/iCEABq5VOR4cbZ1t7hcK0mUgjeTrvFAl6ylvUAa0KnE7OqndAF+8vzOTE+kt/tf1ngngBoMpOu+loyDfSXWYDHWmY6fL8elJ21crRsI4OuqJHbObp7k+zVh+fpEZNWum60LJbZCpPZguTjoDlNbtUb8XQxiDudwpWatg1jIa++KAowJ88+1aZ+Oq6lmiqrh2dyX1Pq7KPw2imsvXemImpXphpBfc8QVKsOE0Pjp2yXgJOHfUoGmnZ4nCO7qvklU9VYtFOJcz47W6jGg9e+7/bHXMKaaHmUr62ObMlZ6k2dmrqOXi9oHJFuu9A0EEctK0j+Ql8Zn5RjslwAXua+PqmKyVc4Yetey9Kpgq33k4s9UKORXSX9DjkqPA4cXVuI9N56FnHI0VmMQEkPylzdeTipZX9l/4svN2SUpZ/1upHnRs0EnCi0Gpj/j61pjl/VIKh4tMxuWc2Adh0KvebsHHIP6xlOuDaTs2LEJbs0IAlYf0VYf7ByFJ+irTOWd3zR0f9g/7CIG7gg7/smPQt/Rl9tHAw1BdHATNiE5Sz5HYyQm2RLJ/3b7UhTa4tC+8DESLUCb9/gVLTwZ4gWBiJiiaXfGG2nx7Cf9vbL2JsiKExd8jbdqqSgNqXJ+JIgPnrDduD65uVLU9Rdrz4ijpLHFsu2svVPhM5/I4o8A/U4+HCKq5/qEbOPXR+HBtlkLFeqSO/ab+aw9gaVgTWloh8VpCwIjjatjnekb/mJUH8CZoLMgZAdXyesp3aKgS5s8+KUa/yHwY5igmSa+bkoyBuHNCuFdpnkx2SENfSvCDyMKu7T7lRkiZFwQZxW50ap5BWUtpW4DkD7ctE0vD5S6LuEyUeXe7JVfjn3m9o0NAcVGsyFoe+BfzifbQ== X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 5:GUbesqsjxqnevFAnE2JavbUFF+tkzKB+UI4uA2gbfVR9iKuZTmyZ0EeKfR0Rh5K/VzlDO8XQ1gFS9kodhr14erFjDbqy8nFTTJpoo044Jp8osd0JpbgFtv/79qUCgPl91PN8keY4/fnkZt1aZhsJWn8eJf0cCFjKIfijPnx1zShNAEUZVb70lEYIpa88ctUzyA56V1Ga7JG/NwaTF30KzZ7ALPhrxkgf/48YcyDF0D+F2JbvwtyDA/mmXfKfJqzI3XXhcmSMKtnRJ24QL+dmf2oUDor81UGPiPnWEOmGXAF1+7JlqGrpit46AH6TmD142aPHB94cQWZzU5qbycM6RjVdzRCyG6H3ihUIT2BEyc58V2Z7gMECrXjSIllUSOtiB4T4XXNAlLMffygifBtHNMFzSTKsF9THkHJ3KyWLpTeSk39a5etomCiX9PjCM3cv7tsiRZpiL3mDMM924yn2PrkRi3QomePX6ToW2Dql8x3o79o4P9j2TLUmQPG1+kYu; 24:yxLiJvOaTQZ+5Wjk3yUC7F/qoT3YL1Cl99Kw2YIqn1uerKv3HZfizYIDmRXwggFPY59lgYzIF45NIWKkOg+71goVQPhaTdj1qxZnfe56/d0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2205; 7:TWH5PgVOcdIb1/lmCuqHj0Apt0Ub6ddnriJyd3MPbiEMRIBTpU/mrnNDzWvrxF9qKNoc9kxQfnHmx9l5ol2DN0L0DCfsvf2lPdaTmM/ujLFspYoGCokYOOlyORjH+eHWSjEpkCtYPaAiLyRnDnIBnSj37ATDDJwAPP8tiSNQ4c1bl4I2oNZMhRVoCyBs26YC76jdIv7XpWuwcbBC2AmbpHMwlltVvmDJntqPiUfp1vKIZnkQ7B5r19LxCVhdruNNnQ3EbXFlirJ7eSkiwK0BhC+lOmksoJUwFhX2/o6/+yhJubL7GSC2/TD8RhTGKU6l7BrbI641VEUtmLdH4YAnlmP8RCdzPZE2YaMw+/dO4t+FBIH+fU+DxYDtnHCnF6y70VfGgrDoovRWqCLO3fwry4oa4S1ci31NP/9eMzNC99UixGZT6sfG8z6Sl5yYogHVpgRl/8vv447iPsB9hXevAXWAE4icPGiWBvQD+bDTVReH96QzMwJ2h3teAGb/Iq8ruOUCJej0zZCASZ4Ge9uMrbTXHM+G/uoWv136BxfOOME6adU8yN4HTyEaSDRLKUCZ1GMqoaiR8eO29y8J1A8ErV/W/TpSSLDLoRGDw55rxqhOlFQNNr9Dk4bTP8gbsfnYTMT07ShD7wk50jtTFSPaRpikGkO1Mjg3sVkaWXyPtHV+I29h8ZRCNEhTfW9k/x4AvK+JE8GeDw1CiffLjtpknBA7kAimbWY/AzGBNR9cyU6p7tS2yLykIou8uwrVH94RdKOpLK51BuXStDcrA5HnFeqrE8NYGoA3mU0YObpMAYY= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 09:54:42.2906 (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: VI1PR0701MB2205 Subject: [lng-odp] [API-NEXT PATCH v2 5/6] linux-gen: queue: combine queue interface set functions 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" Decrease queue interface size by combining four queue operation set functions into a single function. Signed-off-by: Petri Savolainen --- platform/linux-generic/include/odp_queue_if.h | 16 +++++------ platform/linux-generic/odp_packet_io.c | 38 +++++++++++++-------------- platform/linux-generic/odp_queue.c | 34 +++++++++++------------- platform/linux-generic/odp_queue_scalable.c | 32 ++++++++++------------ platform/linux-generic/odp_traffic_mngr.c | 6 ++--- 5 files changed, 58 insertions(+), 68 deletions(-) -- 2.13.0 diff --git a/platform/linux-generic/include/odp_queue_if.h b/platform/linux-generic/include/odp_queue_if.h index b5cbd515..7ba5c3c5 100644 --- a/platform/linux-generic/include/odp_queue_if.h +++ b/platform/linux-generic/include/odp_queue_if.h @@ -66,12 +66,11 @@ typedef void (*queue_set_pktout_fn_t)(queue_t q_int, odp_pktio_t pktio, typedef odp_pktin_queue_t (*queue_get_pktin_fn_t)(queue_t q_int); typedef void (*queue_set_pktin_fn_t)(queue_t q_int, odp_pktio_t pktio, int index); -typedef void (*queue_set_enq_fn_t)(queue_t q_int, queue_enq_fn_t func); -typedef void (*queue_set_enq_multi_fn_t)(queue_t q_int, - queue_enq_multi_fn_t func); -typedef void (*queue_set_deq_fn_t)(queue_t q_int, queue_deq_fn_t func); -typedef void (*queue_set_deq_multi_fn_t)(queue_t q_int, - queue_deq_multi_fn_t func); +typedef void (*queue_set_enq_deq_fn_t)(queue_t q_int, + queue_enq_fn_t enq, + queue_enq_multi_fn_t enq_multi, + queue_deq_fn_t deq, + queue_deq_multi_fn_t deq_multi); typedef void (*queue_set_type_fn_t)(queue_t q_int, odp_queue_type_t type); /* Queue functions towards other internal components */ @@ -90,10 +89,7 @@ typedef struct { queue_set_pktout_fn_t set_pktout; queue_get_pktin_fn_t get_pktin; queue_set_pktin_fn_t set_pktin; - queue_set_enq_fn_t set_enq_fn; - queue_set_enq_multi_fn_t set_enq_multi_fn; - queue_set_deq_fn_t set_deq_fn; - queue_set_deq_multi_fn_t set_deq_multi_fn; + queue_set_enq_deq_fn_t set_enq_deq_fn; queue_set_type_fn_t set_type; } queue_fn_t; diff --git a/platform/linux-generic/odp_packet_io.c b/platform/linux-generic/odp_packet_io.c index 0d825f91..6a181f53 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -1154,30 +1154,30 @@ int odp_pktio_stats_reset(odp_pktio_t pktio) return ret; } -static int pktin_enqueue(queue_t q_int ODP_UNUSED, - odp_buffer_hdr_t *buf_hdr ODP_UNUSED) +static int abort_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; } -static int pktin_enq_multi(queue_t q_int ODP_UNUSED, - odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED, - int num ODP_UNUSED) +static int abort_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; } -static odp_buffer_hdr_t *pktout_dequeue(queue_t q_int ODP_UNUSED) +static odp_buffer_hdr_t *abort_pktout_dequeue(queue_t q_int ODP_UNUSED) { ODP_ABORT("attempted dequeue from a pktout queue"); return NULL; } -static int pktout_deq_multi(queue_t q_int ODP_UNUSED, - odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED, - int num ODP_UNUSED) +static int abort_pktout_deq_multi(queue_t q_int ODP_UNUSED, + odp_buffer_hdr_t *buf_hdr[] ODP_UNUSED, + int num ODP_UNUSED) { ODP_ABORT("attempted dequeue from a pktout queue"); return 0; @@ -1272,12 +1272,11 @@ int odp_pktin_queue_config(odp_pktio_t pktio, 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(q_int, - pktin_deq_multi); + queue_fn->set_enq_deq_fn(q_int, + abort_pktin_enqueue, + abort_pktin_enq_multi, + pktin_dequeue, + pktin_deq_multi); } entry->s.in_queue[i].queue = queue; @@ -1401,10 +1400,11 @@ int odp_pktout_queue_config(odp_pktio_t pktio, queue_fn->set_pktout(q_int, pktio, i); /* Override default enqueue / dequeue functions */ - 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); + queue_fn->set_enq_deq_fn(q_int, + pktout_enqueue, + pktout_enq_multi, + abort_pktout_dequeue, + abort_pktout_deq_multi); entry->s.out_queue[i].queue = queue; } diff --git a/platform/linux-generic/odp_queue.c b/platform/linux-generic/odp_queue.c index 60f88f09..ec225d00 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -748,24 +748,25 @@ static void queue_set_pktin(queue_t q_int, odp_pktio_t pktio, int index) qentry->s.pktin.index = index; } -static void queue_set_enq_func(queue_t q_int, queue_enq_fn_t func) +static void queue_set_enq_deq_func(queue_t q_int, + queue_enq_fn_t enq, + queue_enq_multi_fn_t enq_multi, + queue_deq_fn_t deq, + queue_deq_multi_fn_t deq_multi) { - qentry_from_int(q_int)->s.enqueue = func; -} + queue_entry_t *qentry = qentry_from_int(q_int); -static void queue_set_enq_multi_func(queue_t q_int, queue_enq_multi_fn_t func) -{ - qentry_from_int(q_int)->s.enqueue_multi = func; -} + if (enq) + qentry->s.enqueue = enq; -static void queue_set_deq_func(queue_t q_int, queue_deq_fn_t func) -{ - qentry_from_int(q_int)->s.dequeue = func; -} + if (enq_multi) + qentry->s.enqueue_multi = enq_multi; -static void queue_set_deq_multi_func(queue_t q_int, queue_deq_multi_fn_t func) -{ - qentry_from_int(q_int)->s.dequeue_multi = func; + if (deq) + qentry->s.dequeue = deq; + + if (deq_multi) + qentry->s.dequeue_multi = deq_multi; } static void queue_set_type(queue_t q_int, odp_queue_type_t type) @@ -821,9 +822,6 @@ queue_fn_t queue_default_fn = { .set_pktout = queue_set_pktout, .get_pktin = queue_get_pktin, .set_pktin = queue_set_pktin, - .set_enq_fn = queue_set_enq_func, - .set_enq_multi_fn = queue_set_enq_multi_func, - .set_deq_fn = queue_set_deq_func, - .set_deq_multi_fn = queue_set_deq_multi_func, + .set_enq_deq_fn = queue_set_enq_deq_func, .set_type = queue_set_type }; diff --git a/platform/linux-generic/odp_queue_scalable.c b/platform/linux-generic/odp_queue_scalable.c index 7441a2a9..14fa1833 100644 --- a/platform/linux-generic/odp_queue_scalable.c +++ b/platform/linux-generic/odp_queue_scalable.c @@ -937,24 +937,23 @@ static void queue_set_pktin(queue_t handle, odp_pktio_t pktio, int index) qentry_from_int(handle)->s.pktin.index = index; } -static void queue_set_enq_func(queue_t handle, queue_enq_fn_t func) +static void queue_set_enq_deq_func(queue_t handle, + queue_enq_fn_t enq, + queue_enq_multi_fn_t enq_multi, + queue_deq_fn_t deq, + queue_deq_multi_fn_t deq_multi) { - qentry_from_int(handle)->s.enqueue = func; -} + if (enq) + qentry_from_int(handle)->s.enqueue = enq; -static void queue_set_enq_multi_func(queue_t handle, queue_enq_multi_fn_t func) -{ - qentry_from_int(handle)->s.enqueue_multi = func; -} + if (enq_multi) + qentry_from_int(handle)->s.enqueue_multi = enq_multi; -static void queue_set_deq_func(queue_t handle, queue_deq_fn_t func) -{ - qentry_from_int(handle)->s.dequeue = func; -} + if (deq) + qentry_from_int(handle)->s.dequeue = deq; -static void queue_set_deq_multi_func(queue_t handle, queue_deq_multi_fn_t func) -{ - qentry_from_int(handle)->s.dequeue_multi = func; + if (deq_multi) + qentry_from_int(handle)->s.dequeue_multi = deq_multi; } static void queue_set_type(queue_t handle, odp_queue_type_t type) @@ -1013,9 +1012,6 @@ queue_fn_t queue_scalable_fn = { .set_pktout = queue_set_pktout, .get_pktin = queue_get_pktin, .set_pktin = queue_set_pktin, - .set_enq_fn = queue_set_enq_func, - .set_enq_multi_fn = queue_set_enq_multi_func, - .set_deq_fn = queue_set_deq_func, - .set_deq_multi_fn = queue_set_deq_multi_func, + .set_enq_deq_fn = queue_set_enq_deq_func, .set_type = queue_set_type }; diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c index 8b5f3187..1f254d75 100644 --- a/platform/linux-generic/odp_traffic_mngr.c +++ b/platform/linux-generic/odp_traffic_mngr.c @@ -3927,9 +3927,9 @@ odp_tm_queue_t odp_tm_queue_create(odp_tm_t odp_tm, } tm_queue_obj->tm_qentry = queue_fn->from_ext(queue); queue_fn->set_type(tm_queue_obj->tm_qentry, QUEUE_TYPE_TM); - queue_fn->set_enq_fn(tm_queue_obj->tm_qentry, queue_tm_reenq); - queue_fn->set_enq_multi_fn(tm_queue_obj->tm_qentry, - queue_tm_reenq_multi); + queue_fn->set_enq_deq_fn(tm_queue_obj->tm_qentry, + queue_tm_reenq, queue_tm_reenq_multi, + NULL, NULL); tm_system->queue_num_tbl[tm_queue_obj->queue_num - 1] = tm_queue_obj; odp_ticketlock_lock(&tm_system->tm_system_lock);