From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4909CC3A5A6 for ; Thu, 19 Sep 2019 10:55:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id F3E3E21924 for ; Thu, 19 Sep 2019 10:55:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="OdBdQkDo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389432AbfISKwr (ORCPT ); Thu, 19 Sep 2019 06:52:47 -0400 Received: from mail-eopbgr700049.outbound.protection.outlook.com ([40.107.70.49]:8577 "EHLO NAM04-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387772AbfISKwp (ORCPT ); Thu, 19 Sep 2019 06:52:45 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZtJSvddMNGXwTM4dfLqkZRPZllz4tg3A4RXGYyH5lVk+i+iAKZBoiTXt5N/16UQtQLUsi1Vd72AanJmXCx8JgWfcJcoHM1AkkswmaQVg3ABhnu1xeWTTczYcR7HLgVyhLzdG1723Q/3y066VYq6IIhA8Td56fMAO6R9D2/Bdu5hU5LMQOYmx6NkrzkFZrA3kRra0EhvE/uhO6CfMhTiNTtgqqfb4XCsTDscRm9/VQ0cgSzU4TD89tNDaKo2T18pVjb8upCie4kOlyX/5IImIuJs8ry06ODMVrnesDxkUeWtJc5C4/pdwPUEOZaO9bj4gdptwKDxX8HSZgc9AepnVSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tCXM7/LEc0PxNazY0erjutIZQv0dxV/PXgn4zyXDVis=; b=lcEdTjmX0JsThNiKSFiro5YuOcoSJgsNOkVzaT4Da1T42/hsqBsF78xLmF7VM7/OYiZkcLuDDY6cnPY0KItizx9kGjtsYlaTFdfUHr3Qky8TZWY8hAUiOZE+un18pk29juQlY5LAx2a2WWcEtSe0TMv831Wi2iWnQgBa8PMfIbfIJvnra0U53FevmH3C9jYMYXs9pbVX0sz3FkRYwYHh/eS6IFokkZ6oIHb6X1c7oTKFc/IABraCfJ62PUA9R2JvGEtqFQzZ6s2/UfE6ut63c1WUDnZxsVQR1DWs9Fk9+nX2B7T3J5cjkDTjJkj1sb0Bh04BkpYNPXPijeXLLQkDZQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tCXM7/LEc0PxNazY0erjutIZQv0dxV/PXgn4zyXDVis=; b=OdBdQkDotNdbwyPyoOM6yRRFk8pH63yB7wxXDwR0BIT6B6702gnKSOp6qI2YQteV3BSMpBBqFAyf2TWDU3MuxjdJAyWMek/z8QvnWLcoAOE2rDItspZX6A+9T3T2fde+URhOLYYSrbRjwPpqRxxGe+JAO48ZEWwWQGvb3E0b9WE= Received: from MN2PR11MB4063.namprd11.prod.outlook.com (20.179.149.217) by MN2PR11MB3775.namprd11.prod.outlook.com (20.178.253.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2263.17; Thu, 19 Sep 2019 10:52:36 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::45dc:e073:4446:4bf8%3]) with mapi id 15.20.2263.023; Thu, 19 Sep 2019 10:52:36 +0000 From: Jerome Pouiller To: "devel@driverdev.osuosl.org" , "linux-wireless@vger.kernel.org" CC: "netdev@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , David Le Goff , Jerome Pouiller Subject: [PATCH 03/20] staging: wfx: add I/O API Thread-Topic: [PATCH 03/20] staging: wfx: add I/O API Thread-Index: AQHVbthYJEqUUjZP90O1xgnWLa0FrA== Date: Thu, 19 Sep 2019 10:52:35 +0000 Message-ID: <20190919105153.15285-4-Jerome.Pouiller@silabs.com> References: <20190919105153.15285-1-Jerome.Pouiller@silabs.com> In-Reply-To: <20190919105153.15285-1-Jerome.Pouiller@silabs.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Jerome.Pouiller@silabs.com; x-originating-ip: [37.71.187.125] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c210eabe-e4ed-4688-f270-08d73cef7b6e x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(5600167)(711020)(4605104)(1401327)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7193020);SRVR:MN2PR11MB3775; x-ms-traffictypediagnostic: MN2PR11MB3775: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:422; x-forefront-prvs: 016572D96D x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(376002)(346002)(39850400004)(136003)(396003)(199004)(189003)(86362001)(256004)(14444005)(8936002)(4326008)(66066001)(36756003)(14454004)(305945005)(64756008)(5660300002)(66476007)(66556008)(66446008)(316002)(476003)(446003)(11346002)(110136005)(2616005)(66946007)(478600001)(91956017)(25786009)(76116006)(7736002)(71190400001)(81166006)(1076003)(30864003)(2501003)(6506007)(186003)(6436002)(486006)(81156014)(3846002)(6116002)(8676002)(102836004)(107886003)(54906003)(76176011)(2906002)(26005)(66574012)(99286004)(6486002)(71200400001)(6512007);DIR:OUT;SFP:1101;SCL:1;SRVR:MN2PR11MB3775;H:MN2PR11MB4063.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: silabs.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ZAt2En/3SBeOguFvNFXt0CQw+mkjvY6Jc97Y/P85asZuQdCipVEdBVUfPiZK8UeszhGvTXE4ej6onWJqFzRD7k/d/e5mX1qL3Uk5DhnwO84sNDsruA2cjA6gneRIjzcjpbn2Jx3G4zMPLO2dsmR23ljJXgE2WlgPHXYOAAo03vu5dE2GNwDtnqjSspBzGupmq44GZY3ZGPL937pzX4xm3fIGe7D3z5lnbfy9UvD/cc38meKxgPs6KpWX1rC+uW/ynhWL2LTZdFQGR+tu6bltPhomQ/bj6q0yV+QY/braLKSW2yPrBtYhzRKGm5HFfAFvpjo1r7PtnSmSRtBV43aSM2e9BG985jIN0h/Ek08wvOHjx6SGewyESotLFdCEPYmbFY58eGD8KdVddFsxTF26s5Vg50UZFIhXn0GjleZTdVE= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: c210eabe-e4ed-4688-f270-08d73cef7b6e X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Sep 2019 10:52:35.5307 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9DEoQ8lIbc9RQGQYWumkhcjELsdDJUM5gfTUUiUEC+ZEDvDUuLMwEmbnA4SfQwi0j0rJvQoPfnvStFsuBweY+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB3775 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPg0KDQpo d2lvLmMgcHJvdmlkZXMgYW4gYWJzdHJhY3Rpb24gdG8gYWNjZXNzIGRpZmZlcmVudCB0eXBlcyBv ZiByZWdpc3RlciBvZg0KdGhlIGNoaXAuDQoNCk5vdGUgdGhhdCBvbmx5IGRhdGEgcmVnaXN0ZXIg KGFrYSBGUkFNRV9PVVQpIGFuZCBjb250cm9sIHJlZ2lzdGVyIGFyZQ0KdXNlZCBub3JtYWwgY29t bXVuaWNhdGlvbi4gT3RoZXIgcmVnaXN0ZXJzIGFyZSBvbmx5IHVzZWQgZHVyaW5nIGNoaXANCnN0 YXJ0IHVwLg0KDQpTaWduZWQtb2ZmLWJ5OiBKw6lyw7RtZSBQb3VpbGxlciA8amVyb21lLnBvdWls bGVyQHNpbGFicy5jb20+DQotLS0NCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L01ha2VmaWxlIHwgICAx ICsNCiBkcml2ZXJzL3N0YWdpbmcvd2Z4L2h3aW8uYyAgIHwgMzI3ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrDQogZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmggICB8ICAyNyAr KysNCiAzIGZpbGVzIGNoYW5nZWQsIDM1NSBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvc3RhZ2luZy93ZngvaHdpby5jDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0 YWdpbmcvd2Z4L01ha2VmaWxlIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9NYWtlZmlsZQ0KaW5kZXgg NzQ5MzlhNWEwYTFjLi5lODYwODQ1MTg2Y2YgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcv d2Z4L01ha2VmaWxlDQorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2Z4L01ha2VmaWxlDQpAQCAtMSw2 ICsxLDcgQEANCiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQogDQogd2Z4LXkg Oj0gXA0KKwlod2lvLm8gXA0KIAltYWluLm8NCiB3ZngtJChDT05GSUdfU1BJKSArPSBidXNfc3Bp Lm8NCiB3ZngtJChzdWJzdCBtLHksJChDT05GSUdfTU1DKSkgKz0gYnVzX3NkaW8ubw0KZGlmZiAt LWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZngvaHdpby5jIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9o d2lvLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLmZhNjI2YTQ5 ZGQ4YQ0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmMNCkBA IC0wLDAgKzEsMzI3IEBADQorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25s eQ0KKy8qDQorICogTG93LWxldmVsIEkvTyBmdW5jdGlvbnMuDQorICoNCisgKiBDb3B5cmlnaHQg KGMpIDIwMTctMjAxOSwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4NCisgKiBDb3B5cmlnaHQg KGMpIDIwMTAsIFNULUVyaWNzc29uDQorICovDQorI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPg0K KyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQorDQor I2luY2x1ZGUgImh3aW8uaCINCisjaW5jbHVkZSAid2Z4LmgiDQorI2luY2x1ZGUgImJ1cy5oIg0K Kw0KKy8qDQorICogSW50ZXJuYWwgaGVscGVycy4NCisgKg0KKyAqIEFib3V0IENPTkZJR19WTUFQ X1NUQUNLOg0KKyAqIFdoZW4gQ09ORklHX1ZNQVBfU1RBQ0sgaXMgZW5hYmxlZCwgaXQgaXMgbm90 IHBvc3NpYmxlIHRvIHJ1biBETUEgb24gc3RhY2sNCisgKiBhbGxvY2F0ZWQgZGF0YS4gRnVuY3Rp b25zIGJlbG93IHRoYXQgd29yayB3aXRoIHJlZ2lzdGVycyAoYWthIGZ1bmN0aW9ucw0KKyAqIGVu ZGluZyB3aXRoICIzMiIpIGF1dG9tYXRpY2FsbHkgcmVhbGxvY2F0ZSBidWZmZXJzIHdpdGgga21h bGxvYy4gSG93ZXZlciwNCisgKiBmdW5jdGlvbnMgdGhhdCB3b3JrIHdpdGggYXJiaXRyYXJ5IGxl bmd0aCBidWZmZXJzIGxldCdzIGNhbGxlciB0byBoYW5kbGUNCisgKiBtZW1vcnkgbG9jYXRpb24u IEluIGRvdWJ0LCBlbmFibGUgQ09ORklHX0RFQlVHX1NHIHRvIGRldGVjdCBiYWRseSBsb2NhdGVk DQorICogYnVmZmVyLg0KKyAqLw0KKw0KK3N0YXRpYyBpbnQgcmVhZDMyKHN0cnVjdCB3ZnhfZGV2 ICp3ZGV2LCBpbnQgcmVnLCB1MzIgKnZhbCkNCit7DQorCWludCByZXQ7DQorCV9fbGUzMiAqdG1w ID0ga21hbGxvYyhzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7DQorDQorCSp2YWwgPSB+MDsgLy8g TmV2ZXIgcmV0dXJuIHVuZGVmaW5lZCB2YWx1ZQ0KKwlpZiAoIXRtcCkNCisJCXJldHVybiAtRU5P TUVNOw0KKwlyZXQgPSB3ZGV2LT5od2J1c19vcHMtPmNvcHlfZnJvbV9pbyh3ZGV2LT5od2J1c19w cml2LCByZWcsIHRtcCwgc2l6ZW9mKHUzMikpOw0KKwlpZiAocmV0ID49IDApDQorCQkqdmFsID0g bGUzMl90b19jcHUoKnRtcCk7DQorCWtmcmVlKHRtcCk7DQorCWlmIChyZXQpDQorCQlkZXZfZXJy KHdkZXYtPmRldiwgIiVzOiBidXMgY29tbXVuaWNhdGlvbiBlcnJvcjogJWRcbiIsIF9fZnVuY19f LCByZXQpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IHdyaXRlMzIoc3RydWN0 IHdmeF9kZXYgKndkZXYsIGludCByZWcsIHUzMiB2YWwpDQorew0KKwlpbnQgcmV0Ow0KKwlfX2xl MzIgKnRtcCA9IGttYWxsb2Moc2l6ZW9mKHUzMiksIEdGUF9LRVJORUwpOw0KKw0KKwlpZiAoIXRt cCkNCisJCXJldHVybiAtRU5PTUVNOw0KKwkqdG1wID0gY3B1X3RvX2xlMzIodmFsKTsNCisJcmV0 ID0gd2Rldi0+aHdidXNfb3BzLT5jb3B5X3RvX2lvKHdkZXYtPmh3YnVzX3ByaXYsIHJlZywgdG1w LCBzaXplb2YodTMyKSk7DQorCWtmcmVlKHRtcCk7DQorCWlmIChyZXQpDQorCQlkZXZfZXJyKHdk ZXYtPmRldiwgIiVzOiBidXMgY29tbXVuaWNhdGlvbiBlcnJvcjogJWRcbiIsIF9fZnVuY19fLCBy ZXQpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IHJlYWQzMl9sb2NrZWQoc3Ry dWN0IHdmeF9kZXYgKndkZXYsIGludCByZWcsIHUzMiAqdmFsKQ0KK3sNCisJaW50IHJldDsNCisN CisJd2Rldi0+aHdidXNfb3BzLT5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlyZXQgPSByZWFk MzIod2RldiwgcmVnLCB2YWwpOw0KKwl3ZGV2LT5od2J1c19vcHMtPnVubG9jayh3ZGV2LT5od2J1 c19wcml2KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCB3cml0ZTMyX2xvY2tl ZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHJlZywgdTMyIHZhbCkNCit7DQorCWludCByZXQ7 DQorDQorCXdkZXYtPmh3YnVzX29wcy0+bG9jayh3ZGV2LT5od2J1c19wcml2KTsNCisJcmV0ID0g d3JpdGUzMih3ZGV2LCByZWcsIHZhbCk7DQorCXdkZXYtPmh3YnVzX29wcy0+dW5sb2NrKHdkZXYt Pmh3YnVzX3ByaXYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IHdyaXRlMzJf Yml0c19sb2NrZWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCByZWcsIHUzMiBtYXNrLCB1MzIg dmFsKQ0KK3sNCisJaW50IHJldDsNCisJdTMyIHZhbF9yLCB2YWxfdzsNCisNCisJV0FSTl9PTih+ bWFzayAmIHZhbCk7DQorCXZhbCAmPSBtYXNrOw0KKwl3ZGV2LT5od2J1c19vcHMtPmxvY2sod2Rl di0+aHdidXNfcHJpdik7DQorCXJldCA9IHJlYWQzMih3ZGV2LCByZWcsICZ2YWxfcik7DQorCWlm IChyZXQgPCAwKQ0KKwkJZ290byBlcnI7DQorCXZhbF93ID0gKHZhbF9yICYgfm1hc2spIHwgdmFs Ow0KKwlpZiAodmFsX3cgIT0gdmFsX3IpIHsNCisJCXJldCA9IHdyaXRlMzIod2RldiwgcmVnLCB2 YWxfdyk7DQorCX0NCitlcnI6DQorCXdkZXYtPmh3YnVzX29wcy0+dW5sb2NrKHdkZXYtPmh3YnVz X3ByaXYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IGluZGlyZWN0X3JlYWQo c3RydWN0IHdmeF9kZXYgKndkZXYsIGludCByZWcsIHUzMiBhZGRyLCB2b2lkICpidWYsIHNpemVf dCBsZW4pDQorew0KKwlpbnQgcmV0Ow0KKwlpbnQgaTsNCisJdTMyIGNmZzsNCisJdTMyIHByZWZl dGNoOw0KKw0KKwlXQVJOX09OKGxlbiA+PSAweDIwMDApOw0KKwlXQVJOX09OKHJlZyAhPSBXRlhf UkVHX0FIQl9EUE9SVCAmJiByZWcgIT0gV0ZYX1JFR19TUkFNX0RQT1JUKTsNCisNCisJaWYgKHJl ZyA9PSBXRlhfUkVHX0FIQl9EUE9SVCkNCisJCXByZWZldGNoID0gQ0ZHX1BSRUZFVENIX0FIQjsN CisJZWxzZSBpZiAocmVnID09IFdGWF9SRUdfU1JBTV9EUE9SVCkNCisJCXByZWZldGNoID0gQ0ZH X1BSRUZFVENIX1NSQU07DQorCWVsc2UNCisJCXJldHVybiAtRU5PREVWOw0KKw0KKwlyZXQgPSB3 cml0ZTMyKHdkZXYsIFdGWF9SRUdfQkFTRV9BRERSLCBhZGRyKTsNCisJaWYgKHJldCA8IDApDQor CQlnb3RvIGVycjsNCisNCisJcmV0ID0gcmVhZDMyKHdkZXYsIFdGWF9SRUdfQ09ORklHLCAmY2Zn KTsNCisJaWYgKHJldCA8IDApDQorCQlnb3RvIGVycjsNCisNCisJcmV0ID0gd3JpdGUzMih3ZGV2 LCBXRlhfUkVHX0NPTkZJRywgY2ZnIHwgcHJlZmV0Y2gpOw0KKwlpZiAocmV0IDwgMCkNCisJCWdv dG8gZXJyOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgMjA7IGkrKykgew0KKwkJcmV0ID0gcmVhZDMy KHdkZXYsIFdGWF9SRUdfQ09ORklHLCAmY2ZnKTsNCisJCWlmIChyZXQgPCAwKQ0KKwkJCWdvdG8g ZXJyOw0KKwkJaWYgKCEoY2ZnICYgcHJlZmV0Y2gpKQ0KKwkJCWJyZWFrOw0KKwkJdWRlbGF5KDIw MCk7DQorCX0NCisJaWYgKGkgPT0gMjApIHsNCisJCXJldCA9IC1FVElNRURPVVQ7DQorCQlnb3Rv IGVycjsNCisJfQ0KKw0KKwlyZXQgPSB3ZGV2LT5od2J1c19vcHMtPmNvcHlfZnJvbV9pbyh3ZGV2 LT5od2J1c19wcml2LCByZWcsIGJ1ZiwgbGVuKTsNCisNCitlcnI6DQorCWlmIChyZXQgPCAwKQ0K KwkJbWVtc2V0KGJ1ZiwgMHhGRiwgbGVuKTsgLy8gTmV2ZXIgcmV0dXJuIHVuZGVmaW5lZCB2YWx1 ZQ0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0aWMgaW50IGluZGlyZWN0X3dyaXRlKHN0cnVj dCB3ZnhfZGV2ICp3ZGV2LCBpbnQgcmVnLCB1MzIgYWRkciwgY29uc3Qgdm9pZCAqYnVmLCBzaXpl X3QgbGVuKQ0KK3sNCisJaW50IHJldDsNCisNCisJV0FSTl9PTihsZW4gPj0gMHgyMDAwKTsNCisJ V0FSTl9PTihyZWcgIT0gV0ZYX1JFR19BSEJfRFBPUlQgJiYgcmVnICE9IFdGWF9SRUdfU1JBTV9E UE9SVCk7DQorCXJldCA9IHdyaXRlMzIod2RldiwgV0ZYX1JFR19CQVNFX0FERFIsIGFkZHIpOw0K KwlpZiAocmV0IDwgMCkNCisJCXJldHVybiByZXQ7DQorDQorCXJldHVybiB3ZGV2LT5od2J1c19v cHMtPmNvcHlfdG9faW8od2Rldi0+aHdidXNfcHJpdiwgcmVnLCBidWYsIGxlbik7DQorfQ0KKw0K K3N0YXRpYyBpbnQgaW5kaXJlY3RfcmVhZF9sb2NrZWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIGlu dCByZWcsIHUzMiBhZGRyLCB2b2lkICpidWYsIHNpemVfdCBsZW4pDQorew0KKwlpbnQgcmV0Ow0K Kw0KKwl3ZGV2LT5od2J1c19vcHMtPmxvY2sod2Rldi0+aHdidXNfcHJpdik7DQorCXJldCA9IGlu ZGlyZWN0X3JlYWQod2RldiwgcmVnLCBhZGRyLCBidWYsIGxlbik7DQorCXdkZXYtPmh3YnVzX29w cy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitzdGF0 aWMgaW50IGluZGlyZWN0X3dyaXRlX2xvY2tlZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IHJl ZywgdTMyIGFkZHIsIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikNCit7DQorCWludCByZXQ7 DQorDQorCXdkZXYtPmh3YnVzX29wcy0+bG9jayh3ZGV2LT5od2J1c19wcml2KTsNCisJcmV0ID0g aW5kaXJlY3Rfd3JpdGUod2RldiwgcmVnLCBhZGRyLCBidWYsIGxlbik7DQorCXdkZXYtPmh3YnVz X29wcy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitz dGF0aWMgaW50IGluZGlyZWN0X3JlYWQzMl9sb2NrZWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIGlu dCByZWcsIHUzMiBhZGRyLCB1MzIgKnZhbCkNCit7DQorCWludCByZXQ7DQorCV9fbGUzMiAqdG1w ID0ga21hbGxvYyhzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7DQorDQorCWlmICghdG1wKQ0KKwkJ cmV0dXJuIC1FTk9NRU07DQorCXdkZXYtPmh3YnVzX29wcy0+bG9jayh3ZGV2LT5od2J1c19wcml2 KTsNCisJcmV0ID0gaW5kaXJlY3RfcmVhZCh3ZGV2LCByZWcsIGFkZHIsIHRtcCwgc2l6ZW9mKHUz MikpOw0KKwkqdmFsID0gY3B1X3RvX2xlMzIoKnRtcCk7DQorCXdkZXYtPmh3YnVzX29wcy0+dW5s b2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlrZnJlZSh0bXApOw0KKwlyZXR1cm4gcmV0Ow0KK30N CisNCitzdGF0aWMgaW50IGluZGlyZWN0X3dyaXRlMzJfbG9ja2VkKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LCBpbnQgcmVnLCB1MzIgYWRkciwgdTMyIHZhbCkNCit7DQorCWludCByZXQ7DQorCV9fbGUz MiAqdG1wID0ga21hbGxvYyhzaXplb2YodTMyKSwgR0ZQX0tFUk5FTCk7DQorDQorCWlmICghdG1w KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorCSp0bXAgPSBjcHVfdG9fbGUzMih2YWwpOw0KKwl3ZGV2 LT5od2J1c19vcHMtPmxvY2sod2Rldi0+aHdidXNfcHJpdik7DQorCXJldCA9IGluZGlyZWN0X3dy aXRlKHdkZXYsIHJlZywgYWRkciwgdG1wLCBzaXplb2YodTMyKSk7DQorCXdkZXYtPmh3YnVzX29w cy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlrZnJlZSh0bXApOw0KKwlyZXR1cm4gcmV0 Ow0KK30NCisNCitpbnQgd2Z4X2RhdGFfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rldiwgdm9pZCAq YnVmLCBzaXplX3QgbGVuKQ0KK3sNCisJaW50IHJldDsNCisNCisJV0FSTigobG9uZykgYnVmICYg MywgIiVzOiB1bmFsaWduZWQgYnVmZmVyIiwgX19mdW5jX18pOw0KKwl3ZGV2LT5od2J1c19vcHMt PmxvY2sod2Rldi0+aHdidXNfcHJpdik7DQorCXJldCA9IHdkZXYtPmh3YnVzX29wcy0+Y29weV9m cm9tX2lvKHdkZXYtPmh3YnVzX3ByaXYsIFdGWF9SRUdfSU5fT1VUX1FVRVVFLCBidWYsIGxlbik7 DQorCXdkZXYtPmh3YnVzX29wcy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlpZiAocmV0 KQ0KKwkJZGV2X2Vycih3ZGV2LT5kZXYsICIlczogYnVzIGNvbW11bmljYXRpb24gZXJyb3I6ICVk XG4iLCBfX2Z1bmNfXywgcmV0KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IHdmeF9kYXRh X3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4p DQorew0KKwlpbnQgcmV0Ow0KKw0KKwlXQVJOKChsb25nKSBidWYgJiAzLCAiJXM6IHVuYWxpZ25l ZCBidWZmZXIiLCBfX2Z1bmNfXyk7DQorCXdkZXYtPmh3YnVzX29wcy0+bG9jayh3ZGV2LT5od2J1 c19wcml2KTsNCisJcmV0ID0gd2Rldi0+aHdidXNfb3BzLT5jb3B5X3RvX2lvKHdkZXYtPmh3YnVz X3ByaXYsIFdGWF9SRUdfSU5fT1VUX1FVRVVFLCBidWYsIGxlbik7DQorCXdkZXYtPmh3YnVzX29w cy0+dW5sb2NrKHdkZXYtPmh3YnVzX3ByaXYpOw0KKwlpZiAocmV0KQ0KKwkJZGV2X2Vycih3ZGV2 LT5kZXYsICIlczogYnVzIGNvbW11bmljYXRpb24gZXJyb3I6ICVkXG4iLCBfX2Z1bmNfXywgcmV0 KTsNCisJcmV0dXJuIHJldDsNCit9DQorDQoraW50IHNyYW1fYnVmX3JlYWQoc3RydWN0IHdmeF9k ZXYgKndkZXYsIHUzMiBhZGRyLCB2b2lkICpidWYsIHNpemVfdCBsZW4pDQorew0KKwlyZXR1cm4g aW5kaXJlY3RfcmVhZF9sb2NrZWQod2RldiwgV0ZYX1JFR19TUkFNX0RQT1JULCBhZGRyLCBidWYs IGxlbik7DQorfQ0KKw0KK2ludCBhaGJfYnVmX3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUz MiBhZGRyLCB2b2lkICpidWYsIHNpemVfdCBsZW4pDQorew0KKwlyZXR1cm4gaW5kaXJlY3RfcmVh ZF9sb2NrZWQod2RldiwgV0ZYX1JFR19BSEJfRFBPUlQsIGFkZHIsIGJ1ZiwgbGVuKTsNCit9DQor DQoraW50IHNyYW1fYnVmX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgY29u c3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKQ0KK3sNCisJcmV0dXJuIGluZGlyZWN0X3dyaXRlX2xv Y2tlZCh3ZGV2LCBXRlhfUkVHX1NSQU1fRFBPUlQsIGFkZHIsIGJ1ZiwgbGVuKTsNCit9DQorDQor aW50IGFoYl9idWZfd3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCBjb25zdCB2 b2lkICpidWYsIHNpemVfdCBsZW4pDQorew0KKwlyZXR1cm4gaW5kaXJlY3Rfd3JpdGVfbG9ja2Vk KHdkZXYsIFdGWF9SRUdfQUhCX0RQT1JULCBhZGRyLCBidWYsIGxlbik7DQorfQ0KKw0KK2ludCBz cmFtX3JlZ19yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdTMyICp2YWwpDQor ew0KKwlyZXR1cm4gaW5kaXJlY3RfcmVhZDMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX1NSQU1fRFBP UlQsIGFkZHIsIHZhbCk7DQorfQ0KKw0KK2ludCBhaGJfcmVnX3JlYWQoc3RydWN0IHdmeF9kZXYg KndkZXYsIHUzMiBhZGRyLCB1MzIgKnZhbCkNCit7DQorCXJldHVybiBpbmRpcmVjdF9yZWFkMzJf bG9ja2VkKHdkZXYsIFdGWF9SRUdfQUhCX0RQT1JULCBhZGRyLCB2YWwpOw0KK30NCisNCitpbnQg c3JhbV9yZWdfd3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKQ0K K3sNCisJcmV0dXJuIGluZGlyZWN0X3dyaXRlMzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfU1JBTV9E UE9SVCwgYWRkciwgdmFsKTsNCit9DQorDQoraW50IGFoYl9yZWdfd3JpdGUoc3RydWN0IHdmeF9k ZXYgKndkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKQ0KK3sNCisJcmV0dXJuIGluZGlyZWN0X3dyaXRl MzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfQUhCX0RQT1JULCBhZGRyLCB2YWwpOw0KK30NCisNCitp bnQgY29uZmlnX3JlZ19yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgKnZhbCkNCit7DQor CXJldHVybiByZWFkMzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfQ09ORklHLCB2YWwpOw0KK30NCisN CitpbnQgY29uZmlnX3JlZ193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIHZhbCkNCit7 DQorCXJldHVybiB3cml0ZTMyX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX0NPTkZJRywgdmFsKTsNCit9 DQorDQoraW50IGNvbmZpZ19yZWdfd3JpdGVfYml0cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMy IG1hc2ssIHUzMiB2YWwpDQorew0KKwlyZXR1cm4gd3JpdGUzMl9iaXRzX2xvY2tlZCh3ZGV2LCBX RlhfUkVHX0NPTkZJRywgbWFzaywgdmFsKTsNCit9DQorDQoraW50IGNvbnRyb2xfcmVnX3JlYWQo c3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiAqdmFsKQ0KK3sNCisJcmV0dXJuIHJlYWQzMl9sb2Nr ZWQod2RldiwgV0ZYX1JFR19DT05UUk9MLCB2YWwpOw0KK30NCisNCitpbnQgY29udHJvbF9yZWdf d3JpdGUoc3RydWN0IHdmeF9kZXYgKndkZXYsIHUzMiB2YWwpDQorew0KKwlyZXR1cm4gd3JpdGUz Ml9sb2NrZWQod2RldiwgV0ZYX1JFR19DT05UUk9MLCB2YWwpOw0KK30NCisNCitpbnQgY29udHJv bF9yZWdfd3JpdGVfYml0cyhzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIG1hc2ssIHUzMiB2YWwp DQorew0KKwlyZXR1cm4gd3JpdGUzMl9iaXRzX2xvY2tlZCh3ZGV2LCBXRlhfUkVHX0NPTlRST0ws IG1hc2ssIHZhbCk7DQorfQ0KKw0KK2ludCBpZ3ByX3JlZ19yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LCBpbnQgaW5kZXgsIHUzMiAqdmFsKQ0KK3sNCisJaW50IHJldDsNCisNCisJKnZhbCA9IH4w OyAvLyBOZXZlciByZXR1cm4gdW5kZWZpbmVkIHZhbHVlDQorCXJldCA9IHdyaXRlMzJfbG9ja2Vk KHdkZXYsIFdGWF9SRUdfU0VUX0dFTl9SX1csIElHUFJfUlcgfCBpbmRleCA8PCAyNCk7DQorCWlm IChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKwlyZXQgPSByZWFkMzJfbG9ja2VkKHdkZXYsIFdGWF9S RUdfU0VUX0dFTl9SX1csIHZhbCk7DQorCWlmIChyZXQpDQorCQlyZXR1cm4gcmV0Ow0KKwkqdmFs ICY9IElHUFJfVkFMVUU7DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK2ludCBpZ3ByX3JlZ193cml0 ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IGluZGV4LCB1MzIgdmFsKQ0KK3sNCisJcmV0dXJu IHdyaXRlMzJfbG9ja2VkKHdkZXYsIFdGWF9SRUdfU0VUX0dFTl9SX1csIGluZGV4IDw8IDI0IHwg dmFsKTsNCit9DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dmeC9od2lvLmggYi9kcml2 ZXJzL3N0YWdpbmcvd2Z4L2h3aW8uaA0KaW5kZXggYzQ5MDAxNGMxZGY4Li45MDY1MjRmNzFmZDEg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2Z4L2h3aW8uaA0KKysrIGIvZHJpdmVycy9z dGFnaW5nL3dmeC9od2lvLmgNCkBAIC04LDYgKzgsMjUgQEANCiAjaWZuZGVmIFdGWF9IV0lPX0gN CiAjZGVmaW5lIFdGWF9IV0lPX0gNCiANCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCisNCitz dHJ1Y3Qgd2Z4X2RldjsNCisNCitpbnQgd2Z4X2RhdGFfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2Rl diwgdm9pZCAqYnVmLCBzaXplX3QgYnVmX2xlbik7DQoraW50IHdmeF9kYXRhX3dyaXRlKHN0cnVj dCB3ZnhfZGV2ICp3ZGV2LCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBidWZfbGVuKTsNCisNCitp bnQgc3JhbV9idWZfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsIHZvaWQgKmJ1 Ziwgc2l6ZV90IGxlbik7DQoraW50IHNyYW1fYnVmX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCB1MzIgYWRkciwgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuKTsNCisNCitpbnQgYWhiX2J1 Zl9yZWFkKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdm9pZCAqYnVmLCBzaXplX3Qg bGVuKTsNCitpbnQgYWhiX2J1Zl93cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIs IGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbik7DQorDQoraW50IHNyYW1fcmVnX3JlYWQoc3Ry dWN0IHdmeF9kZXYgKndkZXYsIHUzMiBhZGRyLCB1MzIgKnZhbCk7DQoraW50IHNyYW1fcmVnX3dy aXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbCk7DQorDQoraW50IGFo Yl9yZWdfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsIHUzMiAqdmFsKTsNCitp bnQgYWhiX3JlZ193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIGFkZHIsIHUzMiB2YWwp Ow0KKw0KICNkZWZpbmUgQ0ZHX0VSUl9TUElfRlJBTUUgICAgICAgICAgMHgwMDAwMDAwMSAvLyBv bmx5IHdpdGggU1BJDQogI2RlZmluZSBDRkdfRVJSX1NESU9fQlVGX01JU01BVENIICAweDAwMDAw MDAxIC8vIG9ubHkgd2l0aCBTRElPDQogI2RlZmluZSBDRkdfRVJSX0JVRl9VTkRFUlJVTiAgICAg ICAweDAwMDAwMDAyDQpAQCAtMzYsMTMgKzU1LDIxIEBADQogI2RlZmluZSBDRkdfREVWSUNFX0lE X01BSk9SICAgICAgICAweDA3MDAwMDAwDQogI2RlZmluZSBDRkdfREVWSUNFX0lEX1JFU0VSVkVE ICAgICAweDc4MDAwMDAwDQogI2RlZmluZSBDRkdfREVWSUNFX0lEX1RZUEUgICAgICAgICAweDgw MDAwMDAwDQoraW50IGNvbmZpZ19yZWdfcmVhZChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyICp2 YWwpOw0KK2ludCBjb25maWdfcmVnX3dyaXRlKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgdmFs KTsNCitpbnQgY29uZmlnX3JlZ193cml0ZV9iaXRzKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIg bWFzaywgdTMyIHZhbCk7DQogDQogI2RlZmluZSBDVFJMX05FWFRfTEVOX01BU0sgICAweDAwMDAw RkZGDQogI2RlZmluZSBDVFJMX1dMQU5fV0FLRVVQICAgICAweDAwMDAxMDAwDQogI2RlZmluZSBD VFJMX1dMQU5fUkVBRFkgICAgICAweDAwMDAyMDAwDQoraW50IGNvbnRyb2xfcmVnX3JlYWQoc3Ry dWN0IHdmeF9kZXYgKndkZXYsIHUzMiAqdmFsKTsNCitpbnQgY29udHJvbF9yZWdfd3JpdGUoc3Ry dWN0IHdmeF9kZXYgKndkZXYsIHUzMiB2YWwpOw0KK2ludCBjb250cm9sX3JlZ193cml0ZV9iaXRz KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCB1MzIgbWFzaywgdTMyIHZhbCk7DQogDQogI2RlZmluZSBJ R1BSX1JXICAgICAgICAgIDB4ODAwMDAwMDANCiAjZGVmaW5lIElHUFJfSU5ERVggICAgICAgMHg3 RjAwMDAwMA0KICNkZWZpbmUgSUdQUl9WQUxVRSAgICAgICAweDAwRkZGRkZGDQoraW50IGlncHJf cmVnX3JlYWQoc3RydWN0IHdmeF9kZXYgKndkZXYsIGludCBpbmRleCwgdTMyICp2YWwpOw0KK2lu dCBpZ3ByX3JlZ193cml0ZShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgaW50IGluZGV4LCB1MzIgdmFs KTsNCiANCiAjZW5kaWYgLyogV0ZYX0hXSU9fSCAqLw0KLS0gDQoyLjIwLjENCg==