From patchwork Tue Jun 27 13:22: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: 106436 Delivered-To: patch@linaro.org Received: by 10.140.101.48 with SMTP id t45csp1212872qge; Tue, 27 Jun 2017 06:36:59 -0700 (PDT) X-Received: by 10.200.38.70 with SMTP id v6mr6641750qtv.157.1498570619159; Tue, 27 Jun 2017 06:36:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1498570619; cv=none; d=google.com; s=arc-20160816; b=e1t3dMy3MYGUdTl3oEdFBaBSNvbUP0Ui5PsA/PcZxxHRNcge/mw5wvcg5Bu0pRLPWC go6CeqIb8UgX5AHYlBW0XF19fluF7ujzOSM6v/jZKyb3OinlVop5LkvffOJWpBa2yCYY 04ECrwrQSaPzNn2qAsGb7rVnMt9SUMETs6G5TkTfijTtzOE6MIVRVVsuKYzAYmMDN/Rb cYk/FkS8SLutxH+jVZtCnDHqL8TVKQ23oz7I+YDa8CLVDcChD9wTo3ucZ4ixjQq4sb5P 8xCYyl6Lrlm9Qa0moApCPrvEpApiYw4JU7pTV/5W3m1zq+gRXTo155K2aBQ/P0WSF5Bp navw== 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=j8eChC6ALovJtc9q7Y1GmSRhrJgBT0TGoNJvpk0NCs8=; b=AYMJY4Cn+z4lYVa97Ir5dhoNo19fcGqA45iEwiPYFuoIQi4HchkfNJDYiSkpb3k0b0 cCXnuzdH20i+lX2trXxKEYOUNhcPemKrCQhPilrK5hFmqtoiyIBx8WMLVxOdoJMIJUkd pizdQlpasn90JtCVrq3CBBcfYuwDBFKHXOe+TtSXX0uIAFqCmFvfdMQuEAm7w68hSVTd h2DX3A3iuVvfZPXp95iGAkZwbVaU/ESgLkYOZn/vKrzRO0lWkTkB9r8UhqtZKnzJKTgO bT6pQqF5fSLxRwgft81RSPUaI4yAHRiBum2PtaScfwn9OX+9rlvoCuU6ISXJVp0rMzMb GOcQ== 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 c77si2615597qkb.328.2017.06.27.06.36.58; Tue, 27 Jun 2017 06:36:59 -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 D5AE46071C; Tue, 27 Jun 2017 13:36:58 +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 4A2526092B; Tue, 27 Jun 2017 13:25:21 +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 52C7960725; Tue, 27 Jun 2017 13:25:09 +0000 (UTC) Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-eopbgr10102.outbound.protection.outlook.com [40.107.1.102]) by lists.linaro.org (Postfix) with ESMTPS id 2BCB760D75 for ; Tue, 27 Jun 2017 13:23:10 +0000 (UTC) Received: from HE1PR0701CA0027.eurprd07.prod.outlook.com (2603:10a6:3:5::37) by HE1PR0701MB2201.eurprd07.prod.outlook.com (2603:10a6:3:2b::26) 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:08 +0000 Received: from AM5EUR03FT021.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e08::205) by HE1PR0701CA0027.outlook.office365.com (2603:10a6:3:5::37) 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:08 +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:07 +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 v5RDMi6W014773 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 27 Jun 2017 16:22:44 +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 v5RDMhet014758 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Tue, 27 Jun 2017 16:22:44 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Tue, 27 Jun 2017 16:22:42 +0300 Message-ID: <20170627132243.17298-5-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)(39410400002)(39400400002)(39850400002)(39840400002)(39450400003)(39860400002)(2980300002)(189002)(199003)(9170700003)(110136004)(6916009)(53936002)(38730400002)(189998001)(356003)(8676002)(50226002)(47776003)(77096006)(8936002)(50466002)(48376002)(305945005)(5660300001)(2950100002)(81166006)(2351001)(86362001)(105596002)(33646002)(1076002)(36756003)(22756006)(5003940100001)(50986999)(2906002)(498600001)(76176999)(106466001)(217873001); DIR:OUT; SFP:1102; SCL:1; SRVR:HE1PR0701MB2201; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; AM5EUR03FT021; 1:BXdlyXwu+l+bCwCvP7loKLWK50cEdHHwzbq8/jJw2xbg55kHP+LRISe65fqdVTS9ZbNFDLfI0Iw75WiHtLZpzfnVSaG4xX4xqgjnaFOrLbmyao6pSnS0CWVyVwQ2e7ldMKXqI/UtiKraIW2al8fIHjYmKKUIsOrOjncqSA9GVIJUuGtuf2rkwKkyrqyWWZ8lu+Cc6iuKfWlvhjzlDkC3bK5ZPR428nOTCZaJNGzpsdUNUf9PrXOfw6szeKBpbgWH06UGc5PPvUUUKJr/F/HxMnwt5ca5xf1El17kIL+S4BlAAk8K89R30H1pnqEwAa6CKQHR33b85DkDH7JJyvf382/Tt6xk0OiuVeaGjBq9gl0v52O3Mqm4F1kYu0fbovpFVhTQTRF5sOxg6Zkuxa/w6oHxAMqExfCia+bGe+f59YQUun0CLc9s0Fl1OaqMmVcxBFhYLXUplvkTNTNwCJXSPEgLiixqAN07HCPCUdZt56v3XI0JhW9qpjALFPsB6Eo2jQh2qZcrbsf/wKSPeYky7AnhAne4Cvg6/Sw35kqlp2R9UpLSrum3+bFlCxn3FV6Cm+dheWtAmvDOrUeeFlWh6jIj0H58Vzt81kB4RgLMtY+XPN+0NpnUhCWvWtsJGGZgmQECiaf8lmJlhcVGL/Bl2CsxY/cUtDr+KUwqoBH63jRDXSo2okbYDRXuHqby0HwBGb+Q6F7WSkXEzimPzeJlWyskTSBl7s8oAqblMmdjxNDksPyaIAJ9AIf8nhzbGJ5fdKzY6rR5/nOylvA/4FgcqPo2haAO5Csv6+NLGI7T8rsKHOtAp3+mYYiLhen0gfb1yft8cN6RRnxo/WjhJhPVZ06r3jiXXcgs6r+HuGmv1H0k94gG1XC/prmHwUuZoqgU MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 88876542-0b52-4b0b-c604-08d4bd5fa693 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:HE1PR0701MB2201; X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2201; 3:zTl1NGGeUay3IKXNeDiYcRDuGChhvzNIyMGgg1RSEb9CD+2RNBi5Bmk0EXeaDXJIqggU9uxMBOU4KF0BlS33LqJoq5G13zMt1OpWQtj/rI5d1WeTxxpCHHpTj3XB1weGDORVeSM7Qi8mzJ5spLZDX6+QhAivbfEBgIyGcS0LAGcfHIlN9U18IXwQoESJ29VisQYzMjmt0uDgmkcuh9p6J6cDYkYkJRFdc+yVUAov1xFedBkOb38YNfDWmhmqxyctwfVgec1x0zE8etWXNlQKElHCjrYNoPAME2ddlDGyK5he70b2H3muv7hj6mEShNL2rJull580MeveiWgpNPMVx55ql0lAe51n5wZs2m1xpFUX40nNGseOZ35TgxCtBrJid8MuSVN84Ilmd3M+5aX4c20bqrikdAQzJZ8Gx1QFInjEoapklFkTXGKucEe1sTMlBGrQzscEt3EvorxKY3glPP3HXyN0WKNuBoCuY5YL1VdCmHLr7IM4v3XM0ofSYRjJQBmjNioZEgUsacUFPcKI4lYCSJ/abtNwj9IMYNB593uOFiJKPy+uY7dvwWLeiaHy613Lbh/yxqCH+z1CHzvguNVfDDyhHcJjnFaqVIcRRY+LXIAx67Qz58LfALoTqpeu0/hsORlGa7tK4oTzN/J3o7UMWetMdwlj7dDwbn1Udm8I8ScRwvZeDm5JPe/KmyA2SBEPhhhYZp1BKi4DI5Zq3QBZoK+oyz3XTHjVpNhSTe7jw/9v4sTRWA8xSAGMTKmY79Hai4HvZqo2VgGs1qb+ztGRAx8fDb8pUHLfX1h43297xIw7l1oMxdGneDAxZQpcOov2wAbwLYlvuZnDff1ETjbkg+Y6/VK4RDUVv+1xic6lb+Cn7VjsCbTNrr38WlOh X-MS-TrafficTypeDiagnostic: HE1PR0701MB2201: X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2201; 25:jN6XLhokWw3192aZRPXiVC9mno5iwtGA2p8X/NL4WRDEhGLqsTOh4JgQqqa5PgK0bcRa5pUkQvarYhS2Wp38CpzFFxq8Uyl0PPvTYZ4fRsJ57EziP45Ld+RYqChJF4jKW0R9seDXE262H7i8DLaADGKLEgGO3KohiAaTQn4Yh9tdcFVJQ5FMMS3j2kHLsSj5j+KVOBGdpICBt46hnzQphfFQP0fYE/6ai+WzMGdlvgOSi6N1LQzZhwSbOP+3PZe6woAR0DCv6ulfurGsSAJI/0aZDD2WJBl5NcPT61UFHp7E4kKnYMryOaMVs7vM0hoRyp6H6Mckvyy9lcFGrdB+fAeA7awageK1+D5tbn4JHT9xtUvXcFPoB3pC/44SWviU1505QSRuUqV1x4SnPY1m1LYbZ0B6LPiGPMfcnNwdAok7tTpbK15hK/JJDaXawrnSrJuuikR1JCkp5acGqltcAQGapMd6hzjya6CHbjSjVoIdL5qohvqm/MQxVmVy/PBp6upNUyEXrfgwghATdyA4fJ3uFKtcdS6+vQeYxgeOdno3VRg9g2UKKodch5MJNFAGBN9cs9ArCcTBxykvaMsdM5UJ+J+hNRCxIpOJiKd/e7EDbws5zFNLUp2qnmUTFfggghQzVOh5UBB7kL36fxSJ+r0kglZx6dPdkEBdAR/XAzowfbII/8xKmD0NWM7XiTqBZ0H4h3cT1mfuUNGMbtYBWqLIHDhm5+v51YkASk0Lq8Ex3hgJ+SNKSkzUBDX3lxGpFMKoUJmaCIxYZOBLCajnW5WfAynsc5UPCY4ZNkVXMJ7Q9R/y/F9tuzwU0QckTH0BGamDjKygkmYeOFGy8gfiCwZGmahe8xJcl5yELThqHBJM2yIGYpN4r3pVSmuqkCLKFB+4cjP31z6UuLlCRe3t3VWu/BVTxACPaHzRi2qiQBs= X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2201; 31:09tJij9x8fK8KFlU3pw4elhyOwh8OSgUoX/J/M68t3FtifR0iI2PJAGhi8ap5uavb3ouNGIKW7zuL9i8m9IOzqfyLM2qVWkcuhozW1joDUAlw5+cSUEsXJZmQNGoL0DNXQbkW+0OMaYArzBmLSF0mvNRdQ5PkKbTYjKDyAu/xOGIie79BJKMVoJGMOyCwVOL0Qet+fRTpzCR6clco0K6HCWkk4f+9FoPiBnE6SuAcCqFxYdv+wV1G0DsMjJVIPLOzt4fo5G+5zeGer5MflSnMhlXez4w+IoJpkF0LLx+AR+lJC+v+/yk60K8wMUZr5GKlgSg1nTAdJ4ySHq0ACMQTw4sw7siJWOzut3rjnF2YdxEIljuwjEKkOCpjyRNbtIxx0qBQtrRmT8n5DnDNjhqwIq7apSm0wmKM+SRueYpHJM9U4yqBIlYYf6DFrXxP0I9gRTZIWdZ7OciVFtm2IuJDCLgPAR+nK8QEuittodYAs57FW8VRtjIrE68XS8zw6C58T3gk6rOTEDZpnM1fyitMMGQ9jD7o9rPkaPP5MbwuoGurn4okBhcFfgA3ZmSyRjqyU0yJiSkNStkhfYCJHSVlPAoTk63sNvYoVSFGsj4LPIiJOD2knWxlVj0IGqqahRC4jF4H68O/RxKLeYEgoeU+iwrs0WnxQoh2Wy4Kr9IGwkcWiwRktn6DIhcamSTB/zMwZ2YxpXkTDOiLPgpKL+MSg== X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2201; 20:QVvugU6ZO7OzT0+hPY31pr7dOJ75bcPGiXElVkDarg8QGG2IKhEuqkH+1rsOcij4mIZ0bt6BXK5C73eq25dsGZtSTYRDmB6IZV+19CvRCk29FnpgjnHTKu/QwOCI9GtckIw2QAkrJIqHB3AkJ14lgRB+akafRXwmevqumstOJMHVLVfQHBG0Up5bSGrNcXhJjOQqzAX1Pl89IrPO8+8XvBr907Jg1m/oaeTQgzJkyFB8FXjYkRoDW9es9IKBM7wdyq0JOBZpBB0fvf0Pq3koboeU+bB8LkvZE9qc0UNJKObmhipyXUbuIZPY8KvcSsJvmVRpY+BGsgwCw0gu1ls3d105ePAvMyjuZFca9qms1ff46kQ5xwb/iUyoYi1Bbk0axgk80Wsvswoy0EgN8G70eW5gf3kpccRal7dupjoNx6CwumaoskbtSZ50keM1fx69s51RasMxjxGvR7eTdGCpIjBjBMiZJifiam4nMHDQiIgaBXngkYfcMbw7JPlkJFYBFOMXcCbRkxo+V70xIdaSRd9Dggv+2RjZiPHlo/0g8uXIoV2vQs5DowAIkNVeobKLzR07pFeso4OFZo4Y0vVdsn5jvM06b51JxyKgvQTDOGM= 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)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(93003095)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123558100)(20161123564025)(20161123562025)(20161123560025)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:HE1PR0701MB2201; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:HE1PR0701MB2201; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0701MB2201; 4:QHk47MAiYpPBQfF9QoLqS+/R57fEhv0/CX5b8bZQ?= ZJ+yb4g5Ri8d2s9fiaxt67I1r+Uq1MaaRtQWq9B9tVw3BSwCTQRx4sLKD033EpbE4VwSXRzUn0kZ1d3E6bzLzU//nP2DmBpjdKDFe6WV9Ct8vRPiRnNFif543iaQ/DsCjXeT7ccEzOongRg9ZAgFqE1kF60XC+oWDAJ51yWhq/l53G7RJAcZkaZ0X+TWXCAI01GuNnkqXzVNB4AMiEoD5nDeOA0F2tTL8uVWxKP8tnqZTwLsevRXMO9QSC6h28JAvXmX/5mzyczYtnvSW6Q9+3yzT+VLdTe4O8PnDkygafi4E/tU6BBrTURII9fJVHALPGZ88esPFvhiV/y3+59YhrAKAMLkYvlHJcQFVjL/fhBHLZnYqG3J5OKlVcLhEt4HcmU94hjrVFdPUhe9BPCd80stPh0wBw66xJxuguDKJvEmQgxiTGOPAyC7aBz1XjghbMl54NZd91Oj0Awn8y22zgLktDKhOOx0YB9N0XeBPW2/oTXo6txJjZQjUvsNVVmB36MthCUp5egFu5yojoA1sUGd+EC24hJ87sXFKM5nQ9+KiUgQ+bgfb9I1kxLOlW0UB3gK7Rj6RCrsifujBZvMFKOeAP7OAOgvlJ+5kskXOGowF/7ayrAMYVtTYRN5cgrvIdEe93U8ff4/3/UH+zyaC0QmCa6yL8u1k7zA/gVSj2YJ4Q+hfr/lRLpmywX7y1c7wCwSWX0MGO4J6qbGYT71hxL0uUUbrFYFzvyAbvUnXBRwnwMnlLiv/SBbE5b//2f2eutEU+yiRZqWY8EalL3BjXrm7W68h7lbruAf3xTsNlrNOMcEA3NVgRT9/F7BzKngmoXBfbyPwQn4ReQsZXCPDeX5Qid90nBD9u1m2n8uvShk6/g0XTffuuhTv6yl1GanBojNRb3thr0qOBtQk9KzQ9EL73RWhY3yqhp3eaa/X2L5EDDHoG7BNjxQcxOJzfVVqWWeCgL+NMDxBDQtUQNR5dTySsJpp1PGeRCFA+hE+ucNhpTmLLuoFMmTSYYEPHF2cZVmSpd5axxnbSY+e+OWZUMVH3NSbd6sfTRBB+Lzj5a8mn+fqrJ9UXBRlUc0Uf3o/Imamq8YVliKwBJ7uvN/FRieC7iBhkBARrAgzGFFD1dulswSSrEbYwyyCn2w+Tlb3g1eYlZYEBC8fAKCDmNUhCp1 X-Forefront-PRVS: 0351D213B3 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0701MB2201; 23:4eKcKaqwWqRyYvyLc+TzM0eoyZiOxdOWz7/Xrdj?= gvp7ocfDSM/84zxq0ZeGaakFMSvLAoGCbmFY3moGMPVdGLEWw/89p2x9BMD8pezcpzitQipuSRRGx2sv1W0gpjbf7W0cwRpd4TfOzKWWFhjp8zDGVLXSoAuRd2GUzebvxttNR24NQrJjh7bUytvCARFzZSwFZwVpdUj4hv7eOm11qhPGTpXpUXFgGU2abjpPoutZn0ymQLGNggxgaixViH2Nkel68U8eLGqcPGo3DJHLWR1ew8D00y1tdHOe/+zeCU0DVZVUKx7R3+8EL640j1gShM1wMvZW3OvDhKufOf5Xh0X0i6PbgPYdkyCPlE0B3ce7cI8TVRBZmAtZZHkIBJioMO7yh1xjv1ACF6RTFCobSmISsaAXvibUbqlhMBAzO3qpPTYN7kpu7wXT90Shp5u+itONuJHi+fSpli6MD6RWe+8MazVEQlM21+/PCXcAA92RyiJ3WB+lEnZxqGAvUpwT5iXfIA18RF12rgF4MhDrlAFt2qryjZE09EzSjqtK/ahyVzLRV9ak47KL47D0JBfANQtvFBXTMWVrGSEc5JrG4DF5MYbkjgcB7iacWTogkZDDMjDWOqowbdkfZvWBuYjYjRWiARwKT+i3cJjNJw2f4DW7OKTQZRsJqkhTn7GG8QuWAqAcrxpqO+3LAWwMAWhDIBMZq7zFfBEY9DkHHtabbT7NtIjjhFdunujqOQCz6LvsX7/HeFmhLd0rAnCyHDwN9Q3hkbIbb+qrgWDfwk2pyGUFMqa/q21gGYRyN2Ac7Q93GU04YUyg1Si5WSidTGU2KJC4Tmo1fzXGai22P9ghO4TxAPVdmD+mI/azlTHH5UpaIUVKkXPc5yXdi6ugVaZwFhBfwFAWhMi4vb8b6vQFu+kAXP8nowTApOIZvRahH+49tfmOmbudtpZ66RnTdiXwFxHNVVUaci9W2e2Qm7pw08HSpROVZHrb2U8zwEZ4Z+m6ICCgPfMQJSrnmuGQvJWwtgLbgsK/aWTlsJGEQjI0hq6xog26PY732nSu6v8mZXe2bqSiH3LfLYqSyn87e2BEG X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; HE1PR0701MB2201; 6:QfZM4W6hxpCjE/tHD9s0ZDFPYSYXCeJLuGLm74MJ?= 8jcmVBW1DFGtlwqmZHAlgvUkae48pGzRSYdF4iFGIlYZzQ0ZDxZTL3Am6H58eD8hJTyruBCkXDm12pxGuiLZzl+DWGR2TEFpGlGdkiwvjq8dDsHrlQOoOOIZd7ixwCxSE2J3zSgJfnUcuvyGLRFeAujql4Flo9tWJpfxWhvs2aNOjz7KavHYC/UBQSyAP5gJRlOBGYQaH2+t2yvIRGID3vHtUZLykJPDW6Hl4xQ/fnqKbjG8yFTsaNo47uySmVm2Slg0WFdCXnY5vM8CPbUAoDY3yQUgqG0b+rZ5krsTbCfCcIlutYDsgmeAGIMimoEcyu9d6L76V/yb1g1iH8hzRhYEuJS7jFHEE6hJ2amZUy/S+hEIAw9+Belmrumr6jy6aU5veAyIYl5EmbX1J0dRMpCfC4nO4BB7EWfkp281cg9tKyNQavroKwmc+fFxi/QzznvrXMaRQyC4stCChB/ZEIocdK15jJm9GAtEsNQrVbj1ut6ac4I/OIYNAdd5bVNE8iG7SbdiNeMB6OCFnWg+PBBgWoNtvA3AP5h5i9slh47WSCwVr3+/mM0pTvVAKXP7L83cF45IWlLGPviNbGI9uIaK39HQWdEHdkyZ1ODAR769M5a+/4LjicZuvRZtC9nf6dB1WWdHAsdsotU57dc34c00rzJC4xjpldsoa78kjiJgLJ7hpZw8bugwSTLoIN7zG7JnUSceBg78m6RUKy+QhBgYyhgLmHGydgSbj03gsHd8nSX5+NdYE0OwqjFAIbyt6zYEBp/pHvxjHr91XglNhadSHtiR58PSBTlGth++AUdEQQ11d6/POl3xzwkbcRZzdXRTlJDQqoMdQLS1NwKE0MwQK8G5cg49EMQhYFh52Kts3lcESzoEA0Pgbv24grJAezRFM9agWPG4kUKQaaFCgSu6if/e7LH/HMlgv3Dii+mSWDfKUBoHwTLZOkyH1VGa2wqs1Z6lyeqc27S5Q/nW162v X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2201; 5:GUZf4AVLGDlK3TaXihKbQbDGuOPBRYJUbv003SUgL21chsjBZNIh4T5bHgc9WncOd/LTMnLM+ONHq2Ljzm5DAdQuMk+o79W8LX4GzxrJ55yN42b02mRIn62N57eCpyEXssuFKdOdTqkPc1gADY1daf/MlneO/yBPI31yl5xrMrkp08Q/qi8Z7IF6/6HbefLoeQw/iGZOKnbFxujNvYOTprHvVfxgA6zaZ//IsO51Yv8rB/HB2iTJLDbuOeFlxSfiGDmM3l8Y3NOBVBe2GqtzjWBPFql9pzUytX+u2ckT23Y+zb5a6gmblburi/aALMMzJ2ESZ01zhw5hahaTftRkx6wmDtKCoY54EVfci5wpNISIAgGPE3ZT1NDw/Y37tVS7oQjH/mdP4p/CnwfF3Bx9XUkOOm4ESoxiqtNsCV+mGYLsKa/SSDw7mhyra6MWJhblIf+YTXDR27/96roltCLFE4Y9hz7t/nCEwuBk+Ut6fb4u/OLSVMU90XhrO0W3XIZU; 24:vKQ15HkflSsMhwW5CALHX1EvbX2R+dKvnzq2FkfcLXGCUVD9npKGe7FNk1Kikl9kA3BL8Gg8TZ6X11Dc3cQGQEbV51u+X2oV/6uVSoOxBeg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; HE1PR0701MB2201; 7:VgtlEssBdyTJaQVdfvfwK6JA03lJ+3g5TT/ILWBgLlDyoxEylrIVjL3HorfBzH7GtQuUkUjyXTwXfCDFgf0vt/fc/eDQ4L45rzYuiBf26BEfS6H3G9C7C7Qsqd1OUm0yqWHDgn7EQL/VM9hQ3G74dgdXRtfnPVC5VbCdlCDvv0SRKrfIwu4S4+FXNnX9Pbm0vLpjPm41Uu/qbt3ALlbL6xu0dRdsthMbMY0SjTCKJW61ni4Yvw9aHSwQaCC32qLM3HhBBFiYfADrVYeYvoyo3mHO/3CADTUjkVCjvi4lvLmcUlXr1bOLuUlqbgvAUbgQVqHEQrNH70X9TiC8A6MPrXamGrkKBKx6WzpF+/I1kYyuA3ry4defFrrHPWotpHEHfCwcPGCd7MnnQwwOiHNQTw+TNbGvE7/up0DBdpQK5a4vumuxdMif6ME8U1kzoK/f7F9ig0nqhZjBI6dX/aURonz4f4qWBB/fgVpLCFyoqJcrrKACPHKgRdYCGooTgOaplxI4ZMbb+JxjY1pfWtE2xURgzlEmNAGIwkrMH/GuNfuMM+QjeaYb0r80eei2gXCcJUqKg0zHOU72RlW5EeYPjTY9rFy+IlU7r6MMSRzIlKwmjAV5He/W7WrgJvOfXglxPDfOU5hwLL0WReRP7lmm1O8qWIOUXmI8wyEDNm9lR3Nk5yeQvKO3pn48QrY+MjuV3mUZ4j/fo5sgwv88al/adkm4tvZSChtiAeVfVwNidwYm6w4v4n3qB/Iw4nEThptaCAYNa4TltH2NkuMCxZ0vVpgaYw1I2zfOLXmYm4eQ1rg= X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Jun 2017 13:23:07.8608 (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: HE1PR0701MB2201 Subject: [lng-odp] [API-NEXT PATCH 4/5] linux-gen: queue: combine queue interface 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" Combine enqueue and dequeue function pointer set functions into pktin/pktout calls so that queue interface size gets smaller and code more readable. Also provide single call for TM. Signed-off-by: Petri Savolainen --- platform/linux-generic/include/odp_queue_if.h | 30 +++++++++-------- platform/linux-generic/odp_packet_io.c | 44 ++++++++++++------------- platform/linux-generic/odp_queue.c | 46 +++++++++++++-------------- platform/linux-generic/odp_traffic_mngr.c | 6 ++-- 4 files changed, 61 insertions(+), 65 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..ad807d75 100644 --- a/platform/linux-generic/include/odp_queue_if.h +++ b/platform/linux-generic/include/odp_queue_if.h @@ -61,17 +61,22 @@ typedef int (*queue_enq_multi_fn_t)(queue_t q_int, odp_buffer_hdr_t **, int); typedef odp_buffer_hdr_t *(*queue_deq_fn_t)(queue_t q_int); typedef int (*queue_deq_multi_fn_t)(queue_t q_int, odp_buffer_hdr_t **, int); typedef odp_pktout_queue_t (*queue_get_pktout_fn_t)(queue_t q_int); -typedef void (*queue_set_pktout_fn_t)(queue_t q_int, odp_pktio_t pktio, - int index); 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_pktin_fn_t)(odp_queue_t handle, odp_pktio_t pktio, + int idx, + 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_pktout_fn_t)(odp_queue_t handle, odp_pktio_t pktio, + int idx, + 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_enq_fn_t)(queue_t q_int, + queue_enq_fn_t enq, + queue_enq_multi_fn_t enq_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 +95,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_fn_t set_enq; 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 f230db01..a48bbafb 100644 --- a/platform/linux-generic/odp_packet_io.c +++ b/platform/linux-generic/odp_packet_io.c @@ -1156,30 +1156,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; @@ -1273,13 +1273,12 @@ int odp_pktin_queue_config(odp_pktio_t pktio, q_int = queue_fn->from_ext(queue); 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); + /* Override default en-/dequeue functions */ + queue_fn->set_pktin(queue, pktio, i, + abort_pktin_enqueue, + abort_pktin_enq_multi, + pktin_dequeue, + pktin_deq_multi); } entry->s.in_queue[i].queue = queue; @@ -1379,7 +1378,6 @@ 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 q_int; char name[ODP_QUEUE_NAME_LEN]; int pktio_id = pktio_to_id(pktio); @@ -1399,14 +1397,12 @@ int odp_pktout_queue_config(odp_pktio_t pktio, return -1; } - 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(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_pktout(queue, pktio, i, + 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 9d74f092..6cbf1040 100644 --- a/platform/linux-generic/odp_queue.c +++ b/platform/linux-generic/odp_queue.c @@ -781,12 +781,18 @@ static odp_pktout_queue_t queue_get_pktout(queue_t q_int) return qentry_from_int(q_int)->s.pktout; } -static void queue_set_pktout(queue_t q_int, odp_pktio_t pktio, int index) +static void queue_set_pktout(odp_queue_t handle, odp_pktio_t pktio, int index, + queue_enq_fn_t enq, queue_enq_multi_fn_t enq_multi, + queue_deq_fn_t deq, queue_deq_multi_fn_t deq_multi) { - queue_entry_t *qentry = qentry_from_int(q_int); + queue_entry_t *qentry = handle_to_qentry(handle); qentry->s.pktout.pktio = pktio; qentry->s.pktout.index = index; + qentry->s.enqueue = enq; + qentry->s.enqueue_multi = enq_multi; + qentry->s.dequeue = deq; + qentry->s.dequeue_multi = deq_multi; } static odp_pktin_queue_t queue_get_pktin(queue_t q_int) @@ -794,32 +800,27 @@ static odp_pktin_queue_t queue_get_pktin(queue_t q_int) return qentry_from_int(q_int)->s.pktin; } -static void queue_set_pktin(queue_t q_int, odp_pktio_t pktio, int index) +static void queue_set_pktin(odp_queue_t handle, odp_pktio_t pktio, int index, + queue_enq_fn_t enq, queue_enq_multi_fn_t enq_multi, + queue_deq_fn_t deq, queue_deq_multi_fn_t deq_multi) { - queue_entry_t *qentry = qentry_from_int(q_int); + queue_entry_t *qentry = handle_to_qentry(handle); qentry->s.pktin.pktio = pktio; qentry->s.pktin.index = index; + qentry->s.enqueue = enq; + qentry->s.enqueue_multi = enq_multi; + qentry->s.dequeue = deq; + qentry->s.dequeue_multi = deq_multi; } -static void queue_set_enq_func(queue_t q_int, queue_enq_fn_t func) -{ - qentry_from_int(q_int)->s.enqueue = func; -} - -static void queue_set_enq_multi_func(queue_t q_int, queue_enq_multi_fn_t func) +static void queue_set_enq(queue_t q_int, + queue_enq_fn_t enq, queue_enq_multi_fn_t enq_multi) { - qentry_from_int(q_int)->s.enqueue_multi = func; -} - -static void queue_set_deq_func(queue_t q_int, queue_deq_fn_t func) -{ - qentry_from_int(q_int)->s.dequeue = func; -} + queue_entry_t *qentry = qentry_from_int(q_int); -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; + qentry->s.enqueue = enq; + qentry->s.enqueue_multi = enq_multi; } static void queue_set_type(queue_t q_int, odp_queue_type_t type) @@ -875,9 +876,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 = queue_set_enq, .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..04239884 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(tm_queue_obj->tm_qentry, + queue_tm_reenq, + queue_tm_reenq_multi); tm_system->queue_num_tbl[tm_queue_obj->queue_num - 1] = tm_queue_obj; odp_ticketlock_lock(&tm_system->tm_system_lock);