Received: by 2002:a05:6358:53a8:b0:117:f937:c515 with SMTP id z40csp113284rwe; Tue, 18 Apr 2023 18:40:27 -0700 (PDT) X-Google-Smtp-Source: AKy350Z5ZIY0HMD87msgzHP/3PowV+Bk2XQN4sTwUS/MVNCnfOOMFflszpZosxkVmB9HueDImSSi X-Received: by 2002:a17:902:f68d:b0:1a6:48e6:ea7c with SMTP id l13-20020a170902f68d00b001a648e6ea7cmr4941578plg.6.1681868426912; Tue, 18 Apr 2023 18:40:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681868426; cv=none; d=google.com; s=arc-20160816; b=0L6nQSsGbr/wfyznsa09nQuSFSxwiROQxB2veGWiiAuzVzil+i8cEAlaRfnOmSzgoF TUdUD9W6LYMW0nvWhHNO8/W74QP5+ewcE+iSkqozDvACyjnbEGxLGXtWL4btlSdofkCx fhFwWUikpvRBcdawPjj3yudk7QToto7SKm1HcG5EpjADk05RqWQEE5UcKHuoWL55CX2+ tZLfErbSWk25uBqraRSholjizhcIO274RIF6A4yfwf7jmqUEg2F4S3sGUFCikj/9kAoC mpnlkWLSrczznZZQx9ckNxzOV09q95AXb+wPyZJvCskw9RfRWg/9Wc1X2RFK6lwvfhI7 z6Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:authenticated-by; bh=aR0BCMefLkEzDoD8jmO7y6JiR0lKu0IXIpUdZc9iL9U=; b=M3c2tquvSagBtOrfHC6M29+DDR90/5DNl95650sAkZMr5cQfaD/TPXDZr+15NNgTsB P0Ydx6c3oWPqKxMqcUGb5HY7NhIH1Qnytz6uA0+SmhtbV5Ko9KjUjFvJOYJwYbiVMCcK lPGpAGQVn1n1b1XsSk4hyrQaJpmxevRWjxNU+ACBPDpWOdnPKFrNfbK0e1EPNcxlgc0y 8pruwTWjhsy/qg+PmumJaAQSWDvWw5Rbe1KpV8Oap8E8MkXAimvIHfnkItIVjow6F8qx rePRJLJQMzReGE4O0PKo100RD/mI5CqkhqRmb/drQc5C/TcHO8uecvMD+0Yi5eCyhdIq uRlw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id a3-20020a1709027d8300b0019ea8e6213esi14637850plm.102.2023.04.18.18.40.14; Tue, 18 Apr 2023 18:40:26 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230521AbjDSBUo (ORCPT + 64 others); Tue, 18 Apr 2023 21:20:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60766 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229598AbjDSBUn (ORCPT ); Tue, 18 Apr 2023 21:20:43 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7E4C2109 for ; Tue, 18 Apr 2023 18:20:38 -0700 (PDT) Authenticated-By: X-SpamFilter-By: ArmorX SpamTrap 5.77 with qID 33J1KYwrC029789, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.81/5.90) with ESMTPS id 33J1KYwrC029789 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Wed, 19 Apr 2023 09:20:34 +0800 Received: from RTEXDAG01.realtek.com.tw (172.21.6.100) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Wed, 19 Apr 2023 09:20:33 +0800 Received: from RTEXMBS04.realtek.com.tw (172.21.6.97) by RTEXDAG01.realtek.com.tw (172.21.6.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Wed, 19 Apr 2023 09:20:33 +0800 Received: from RTEXMBS04.realtek.com.tw ([fe80::e138:e7f1:4709:ff4d]) by RTEXMBS04.realtek.com.tw ([fe80::e138:e7f1:4709:ff4d%5]) with mapi id 15.01.2375.007; Wed, 19 Apr 2023 09:20:33 +0800 From: Ping-Ke Shih To: Bitterblue Smith , "linux-wireless@vger.kernel.org" CC: Jes Sorensen Subject: RE: [PATCH] wifi: rtl8xxxu: Support USB RX aggregation for the newer chips Thread-Topic: [PATCH] wifi: rtl8xxxu: Support USB RX aggregation for the newer chips Thread-Index: AQHZcfZU4Eepfo+Uykmrrt/nZPQqia8xzbLg Date: Wed, 19 Apr 2023 01:20:33 +0000 Message-ID: <898154829e2d493c89c73026eb232a29@realtek.com> References: In-Reply-To: Accept-Language: en-US, zh-TW Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.21.69.188] x-kse-serverinfo: RTEXDAG01.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,SPF_PASS, T_SCC_BODY_TEXT_LINE,T_SPF_HELO_TEMPERROR autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQml0dGVyYmx1ZSBTbWl0 aCA8cnRsODgyMWNlcmZlMkBnbWFpbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDE4LCAy MDIzIDk6MDUgUE0NCj4gVG86IGxpbnV4LXdpcmVsZXNzQHZnZXIua2VybmVsLm9yZw0KPiBDYzog SmVzIFNvcmVuc2VuIDxKZXMuU29yZW5zZW5AZ21haWwuY29tPjsgUGluZy1LZSBTaGloIDxwa3No aWhAcmVhbHRlay5jb20+DQo+IFN1YmplY3Q6IFtQQVRDSF0gd2lmaTogcnRsOHh4eHU6IFN1cHBv cnQgVVNCIFJYIGFnZ3JlZ2F0aW9uIGZvciB0aGUgbmV3ZXIgY2hpcHMNCj4gDQo+IFRoZSBkcml2 ZXIgY2FuIHJlY2VpdmUgc2V2ZXJhbCBmcmFtZXMgaW4gdGhlIHNhbWUgVVNCIHRyYW5zZmVyLg0K PiBBZGQgdGhlIGNvZGUgdG8gaGFuZGxlIHRoaXMgaW4gcnRsOHh4eHVfcGFyc2VfcnhkZXNjMjQo KSwgZXZlbiB0aG91Z2gNCj4gY3VycmVudGx5IGFsbCB0aGUgcmVsZXZhbnQgY2hpcHMgc2VuZCBv bmx5IG9uZSBmcmFtZSBwZXIgVVNCIHRyYW5zZmVyDQo+IChSVEw4NzIzQlUsIFJUTDgxOTJFVSwg UlRMODE4OEZVLCBSVEw4NzEwQlUpLg0KPiANCj4gcnRsOHh4eHVfcGFyc2VfcnhkZXNjMTYoKSB1 c2VkIGJ5IFJUTDg3MjNBVSwgUlRMODE5MkNVLCBhbmQgUlRMODE4OEVVDQo+IGFscmVhZHkgaGFu ZGxlcyBSWCBhZ2dyZWdhdGlvbi4NCj4gDQo+IFRoaXMgd2FzIHRlc3RlZCB3aXRoIFJUTDgxODhG VSwgUlRMODE5MkVVLCBSVEw4NzEwQlUsIGFuZCBSVEw4MTkyRlUuDQo+IA0KPiBTaWduZWQtb2Zm LWJ5OiBCaXR0ZXJibHVlIFNtaXRoIDxydGw4ODIxY2VyZmUyQGdtYWlsLmNvbT4NCj4gLS0tDQo+ ICAuLi4vd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4dV9jb3JlLmMgfCAxMTcgKysr KysrKysrKysrLS0tLS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNDEg ZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVh bHRlay9ydGw4eHh4dS9ydGw4eHh4dV9jb3JlLmMNCj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9y ZWFsdGVrL3J0bDh4eHh1L3J0bDh4eHh1X2NvcmUuYw0KPiBpbmRleCBmZDhjOGM2ZDUzZDYuLjVm Y2NkODk4ZDYwNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9y dGw4eHh4dS9ydGw4eHh4dV9jb3JlLmMNCj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVh bHRlay9ydGw4eHh4dS9ydGw4eHh4dV9jb3JlLmMNCj4gQEAgLTYxOTcsNjEgKzYxOTcsOTYgQEAg aW50IHJ0bDh4eHh1X3BhcnNlX3J4ZGVzYzE2KHN0cnVjdCBydGw4eHh4dV9wcml2ICpwcml2LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPiAgaW50IHJ0bDh4eHh1X3BhcnNlX3J4ZGVzYzI0KHN0cnVj dCBydGw4eHh4dV9wcml2ICpwcml2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KPiAgew0KPiAgICAg ICAgIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3ID0gcHJpdi0+aHc7DQo+IC0gICAgICAgc3RydWN0 IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2Ip Ow0KPiAtICAgICAgIHN0cnVjdCBydGw4eHh4dV9yeGRlc2MyNCAqcnhfZGVzYyA9DQo+IC0gICAg ICAgICAgICAgICAoc3RydWN0IHJ0bDh4eHh1X3J4ZGVzYzI0ICopc2tiLT5kYXRhOw0KPiArICAg ICAgIHN0cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXM7DQo+ICsgICAgICAgc3Ry dWN0IHJ0bDh4eHh1X3J4ZGVzYzI0ICpyeF9kZXNjOw0KPiAgICAgICAgIHN0cnVjdCBydGw4NzIz YXVfcGh5X3N0YXRzICpwaHlfc3RhdHM7DQo+IC0gICAgICAgX19sZTMyICpfcnhfZGVzY19sZSA9 IChfX2xlMzIgKilza2ItPmRhdGE7DQo+IC0gICAgICAgdTMyICpfcnhfZGVzYyA9ICh1MzIgKilz a2ItPmRhdGE7DQo+ICsgICAgICAgc3RydWN0IHNrX2J1ZmYgKm5leHRfc2tiID0gTlVMTDsNCj4g KyAgICAgICBfX2xlMzIgKl9yeF9kZXNjX2xlOw0KPiArICAgICAgIHUzMiAqX3J4X2Rlc2M7DQo+ ICAgICAgICAgaW50IGRydmluZm9fc3osIGRlc2Nfc2hpZnQ7DQo+IC0gICAgICAgaW50IGk7DQo+ ICsgICAgICAgaW50IGksIHBrdF9sZW4sIHVyYl9sZW4sIHBrdF9vZmZzZXQ7DQo+IA0KPiAtICAg ICAgIGZvciAoaSA9IDA7IGkgPCAoc2l6ZW9mKHN0cnVjdCBydGw4eHh4dV9yeGRlc2MyNCkgLyBz aXplb2YodTMyKSk7IGkrKykNCj4gLSAgICAgICAgICAgICAgIF9yeF9kZXNjW2ldID0gbGUzMl90 b19jcHUoX3J4X2Rlc2NfbGVbaV0pOw0KPiArICAgICAgIHVyYl9sZW4gPSBza2ItPmxlbjsNCj4g DQo+IC0gICAgICAgbWVtc2V0KHJ4X3N0YXR1cywgMCwgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFf cnhfc3RhdHVzKSk7DQo+ICsgICAgICAgaWYgKHVyYl9sZW4gPCBzaXplb2Yoc3RydWN0IHJ0bDh4 eHh1X3J4ZGVzYzI0KSkgew0KPiArICAgICAgICAgICAgICAga2ZyZWVfc2tiKHNrYik7DQo+ICsg ICAgICAgICAgICAgICByZXR1cm4gUlhfVFlQRV9FUlJPUjsNCj4gKyAgICAgICB9DQo+IA0KPiAt ICAgICAgIHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBydGw4eHh4dV9yeGRlc2MyNCkpOw0K PiArICAgICAgIGRvIHsNCj4gKyAgICAgICAgICAgICAgIHJ4X2Rlc2MgPSAoc3RydWN0IHJ0bDh4 eHh1X3J4ZGVzYzI0ICopc2tiLT5kYXRhOw0KPiArICAgICAgICAgICAgICAgX3J4X2Rlc2NfbGUg PSAoX19sZTMyICopc2tiLT5kYXRhOw0KPiArICAgICAgICAgICAgICAgX3J4X2Rlc2MgPSAodTMy ICopc2tiLT5kYXRhOw0KPiANCj4gLSAgICAgICBwaHlfc3RhdHMgPSAoc3RydWN0IHJ0bDg3MjNh dV9waHlfc3RhdHMgKilza2ItPmRhdGE7DQo+ICsgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBp IDwgKHNpemVvZihzdHJ1Y3QgcnRsOHh4eHVfcnhkZXNjMjQpIC8gc2l6ZW9mKHUzMikpOyBpKysp DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9yeF9kZXNjW2ldID0gbGUzMl90b19jcHUoX3J4 X2Rlc2NfbGVbaV0pOw0KPiANCj4gLSAgICAgICBkcnZpbmZvX3N6ID0gcnhfZGVzYy0+ZHJ2aW5m b19zeiAqIDg7DQo+IC0gICAgICAgZGVzY19zaGlmdCA9IHJ4X2Rlc2MtPnNoaWZ0Ow0KPiAtICAg ICAgIHNrYl9wdWxsKHNrYiwgZHJ2aW5mb19zeiArIGRlc2Nfc2hpZnQpOw0KPiArICAgICAgICAg ICAgICAgcGt0X2xlbiA9IHJ4X2Rlc2MtPnBrdGxlbjsNCj4gDQo+IC0gICAgICAgaWYgKHJ4X2Rl c2MtPnJwdF9zZWwpIHsNCj4gLSAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZw cml2LT51ZGV2LT5kZXY7DQo+IC0gICAgICAgICAgICAgICBkZXZfZGJnKGRldiwgIiVzOiBDMkgg cGFja2V0XG4iLCBfX2Z1bmNfXyk7DQo+IC0gICAgICAgICAgICAgICBydGw4NzIzYnVfaGFuZGxl X2MyaChwcml2LCBza2IpOw0KPiAtICAgICAgICAgICAgICAgcmV0dXJuIFJYX1RZUEVfQzJIOw0K PiAtICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIGRydmluZm9fc3ogPSByeF9kZXNjLT5kcnZp bmZvX3N6ICogODsNCj4gKyAgICAgICAgICAgICAgIGRlc2Nfc2hpZnQgPSByeF9kZXNjLT5zaGlm dDsNCj4gKyAgICAgICAgICAgICAgIHBrdF9vZmZzZXQgPSByb3VuZHVwKHBrdF9sZW4gKyBkcnZp bmZvX3N6ICsgZGVzY19zaGlmdCArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaXplb2Yoc3RydWN0IHJ0bDh4eHh1X3J4ZGVzYzI0KSwgOCk7DQo+IA0KPiAtICAgICAg IGlmIChyeF9kZXNjLT5waHlfc3RhdHMpDQo+IC0gICAgICAgICAgICAgICBwcml2LT5mb3BzLT5w YXJzZV9waHlzdGF0cyhwcml2LCByeF9zdGF0dXMsIHBoeV9zdGF0cywNCj4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X2Rlc2MtPnJ4bWNzLCAoc3RydWN0IGll ZWU4MDIxMV9oZHIgKilza2ItPmRhdGEsDQo+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByeF9kZXNjLT5jcmMzMiB8fCByeF9kZXNjLT5pY3ZlcnIpOw0KPiArICAg ICAgICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAqIE9ubHkgY2xvbmUgdGhlIHNrYiBp ZiB0aGVyZSdzIGVub3VnaCBkYXRhIGF0IHRoZSBlbmQgdG8NCj4gKyAgICAgICAgICAgICAgICAq IGF0IGxlYXN0IGNvdmVyIHRoZSByeCBkZXNjcmlwdG9yDQo+ICsgICAgICAgICAgICAgICAgKi8N Cj4gKyAgICAgICAgICAgICAgIGlmICh1cmJfbGVuID49IChwa3Rfb2Zmc2V0ICsgc2l6ZW9mKHN0 cnVjdCBydGw4eHh4dV9yeGRlc2MyNCkpKQ0KDQpUaGF0IG1lYW5zIHlvdSB1c2UgJ3NpemVvZihz dHJ1Y3QgcnRsOHh4eHVfcnhkZXNjMjQpJyBhcyBjbHVlIHRvIGtub3cgaWYgdGhpcw0KaXMgdGhl IGxhc3QgcGFja2V0IG9yIG5vdCwgcmlnaHQ/DQoNCkRvIHlvdSB0aGluayBpZiBpdCBpcyBuZWVk ZWQgdG8gaGFuZGxlIG1hbGZvcm1lZCBwYWNrZXQgZm9yIHRoZSBsYXN0IHNrYiBpZg0KaXRzIGxl bmd0aCBpcyBzaG9ydGVyIHRoYW4gcGt0X29mZnNldCBvciBwa3RfbGVuPw0KDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIG5leHRfc2tiID0gc2tiX2Nsb25lKHNrYiwgR0ZQX0FUT01JQyk7DQo+ IA0KPiAtICAgICAgIHJ4X3N0YXR1cy0+bWFjdGltZSA9IHJ4X2Rlc2MtPnRzZmw7DQo+IC0gICAg ICAgcnhfc3RhdHVzLT5mbGFnIHw9IFJYX0ZMQUdfTUFDVElNRV9TVEFSVDsNCj4gKyAgICAgICAg ICAgICAgIHJ4X3N0YXR1cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpOw0KPiArICAgICAgICAg ICAgICAgbWVtc2V0KHJ4X3N0YXR1cywgMCwgc2l6ZW9mKHN0cnVjdCBpZWVlODAyMTFfcnhfc3Rh dHVzKSk7DQo+IA0KPiAtICAgICAgIGlmICghcnhfZGVzYy0+c3dkZWMpDQo+IC0gICAgICAgICAg ICAgICByeF9zdGF0dXMtPmZsYWcgfD0gUlhfRkxBR19ERUNSWVBURUQ7DQo+IC0gICAgICAgaWYg KHJ4X2Rlc2MtPmNyYzMyKQ0KPiAtICAgICAgICAgICAgICAgcnhfc3RhdHVzLT5mbGFnIHw9IFJY X0ZMQUdfRkFJTEVEX0ZDU19DUkM7DQo+IC0gICAgICAgaWYgKHJ4X2Rlc2MtPmJ3KQ0KPiAtICAg ICAgICAgICAgICAgcnhfc3RhdHVzLT5idyA9IFJBVEVfSU5GT19CV180MDsNCj4gKyAgICAgICAg ICAgICAgIHNrYl9wdWxsKHNrYiwgc2l6ZW9mKHN0cnVjdCBydGw4eHh4dV9yeGRlc2MyNCkpOw0K PiANCj4gLSAgICAgICBpZiAocnhfZGVzYy0+cnhtY3MgPj0gREVTQ19SQVRFX01DUzApIHsNCj4g LSAgICAgICAgICAgICAgIHJ4X3N0YXR1cy0+ZW5jb2RpbmcgPSBSWF9FTkNfSFQ7DQo+IC0gICAg ICAgICAgICAgICByeF9zdGF0dXMtPnJhdGVfaWR4ID0gcnhfZGVzYy0+cnhtY3MgLSBERVNDX1JB VEVfTUNTMDsNCj4gLSAgICAgICB9IGVsc2Ugew0KPiAtICAgICAgICAgICAgICAgcnhfc3RhdHVz LT5yYXRlX2lkeCA9IHJ4X2Rlc2MtPnJ4bWNzOw0KPiAtICAgICAgIH0NCj4gKyAgICAgICAgICAg ICAgIHBoeV9zdGF0cyA9IChzdHJ1Y3QgcnRsODcyM2F1X3BoeV9zdGF0cyAqKXNrYi0+ZGF0YTsN Cj4gKw0KPiArICAgICAgICAgICAgICAgc2tiX3B1bGwoc2tiLCBkcnZpbmZvX3N6ICsgZGVzY19z aGlmdCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIHNrYl90cmltKHNrYiwgcGt0X2xlbik7DQo+ ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChyeF9kZXNjLT5ycHRfc2VsKSB7DQo+ICsgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwcml2LT51ZGV2LT5kZXY7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9kYmcoZGV2LCAiJXM6IEMySCBwYWNrZXRcbiIs IF9fZnVuY19fKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcnRsODcyM2J1X2hhbmRsZV9j MmgocHJpdiwgc2tiKTsNCj4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGlmIChyeF9kZXNjLT5waHlfc3RhdHMpDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJpdi0+Zm9wcy0+cGFyc2VfcGh5c3RhdHMocHJpdiwgcnhfc3RhdHVz LCBwaHlfc3RhdHMsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcnhfZGVzYy0+cnhtY3MsIChzdHJ1Y3QgaWVlZTgwMjExX2hkcg0K PiAqKXNrYi0+ZGF0YSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByeF9kZXNjLT5jcmMzMiB8fCByeF9kZXNjLT5pY3ZlcnIpOw0K DQpUaGlzIHN0YXRlbWVudCBpcyB0b28gbG9uZy4gQWRkIGEgaGVscGVyICdzdHJ1Y3QgaWVlZTgw MjExX2hkciAqaGRyJywgbGlrZQ0KDQppZiAocnhfZGVzYy0+cGh5X3N0YXRzKSB7DQogICAgICAg IHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilza2It PmRhdGE7DQoNCiAgICAgICAgcHJpdi0+Zm9wcy0+cGFyc2VfcGh5c3RhdHMocHJpdiwgcnhfc3Rh dHVzLCBwaHlfc3RhdHMsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X2Rl c2MtPnJ4bWNzLCBoZHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X2Rl c2MtPmNyYzMyIHx8IHJ4X2Rlc2MtPmljdmVycik7DQp9DQoNCg0KPiArDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIHJ4X3N0YXR1cy0+bWFjdGltZSA9IHJ4X2Rlc2MtPnRzZmw7DQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJ4X3N0YXR1cy0+ZmxhZyB8PSBSWF9GTEFHX01BQ1RJTUVfU1RB UlQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyeF9kZXNjLT5zd2RlYykN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeF9zdGF0dXMtPmZsYWcgfD0gUlhf RkxBR19ERUNSWVBURUQ7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyeF9kZXNjLT5j cmMzMikNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByeF9zdGF0dXMtPmZsYWcg fD0gUlhfRkxBR19GQUlMRURfRkNTX0NSQzsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYg KHJ4X2Rlc2MtPmJ3KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X3N0YXR1 cy0+YncgPSBSQVRFX0lORk9fQldfNDA7DQo+IA0KPiAtICAgICAgIHJ4X3N0YXR1cy0+ZnJlcSA9 IGh3LT5jb25mLmNoYW5kZWYuY2hhbi0+Y2VudGVyX2ZyZXE7DQo+IC0gICAgICAgcnhfc3RhdHVz LT5iYW5kID0gaHctPmNvbmYuY2hhbmRlZi5jaGFuLT5iYW5kOw0KPiArICAgICAgICAgICAgICAg ICAgICAgICBpZiAocnhfZGVzYy0+cnhtY3MgPj0gREVTQ19SQVRFX01DUzApIHsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICByeF9zdGF0dXMtPmVuY29kaW5nID0gUlhfRU5DX0hU Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X3N0YXR1cy0+cmF0ZV9pZHgg PSByeF9kZXNjLT5yeG1jcyAtIERFU0NfUkFURV9NQ1MwOw0KPiArICAgICAgICAgICAgICAgICAg ICAgICB9IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4X3N0YXR1 cy0+cmF0ZV9pZHggPSByeF9kZXNjLT5yeG1jczsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg fQ0KPiArDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJ4X3N0YXR1cy0+ZnJlcSA9IGh3LT5j b25mLmNoYW5kZWYuY2hhbi0+Y2VudGVyX2ZyZXE7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg IHJ4X3N0YXR1cy0+YmFuZCA9IGh3LT5jb25mLmNoYW5kZWYuY2hhbi0+YmFuZDsNCj4gKw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICBpZWVlODAyMTFfcnhfaXJxc2FmZShodywgc2tiKTsNCj4g KyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgICAgc2tiID0gbmV4dF9za2I7 DQo+ICsgICAgICAgICAgICAgICBpZiAoc2tiKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICBz a2JfcHVsbChuZXh0X3NrYiwgcGt0X29mZnNldCk7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIHVy Yl9sZW4gLT0gcGt0X29mZnNldDsNCj4gKyAgICAgICAgICAgICAgIG5leHRfc2tiID0gTlVMTDsN Cj4gKyAgICAgICB9IHdoaWxlIChza2IgJiYgdXJiX2xlbiA+PSBzaXplb2Yoc3RydWN0IHJ0bDh4 eHh1X3J4ZGVzYzI0KSk7DQo+IA0KPiAtICAgICAgIGllZWU4MDIxMV9yeF9pcnFzYWZlKGh3LCBz a2IpOw0KPiAgICAgICAgIHJldHVybiBSWF9UWVBFX0RBVEFfUEtUOw0KPiAgfQ0KPiANCj4gLS0N Cj4gMi4zOS4yDQo+IA0KPiAtLS0tLS1QbGVhc2UgY29uc2lkZXIgdGhlIGVudmlyb25tZW50IGJl Zm9yZSBwcmludGluZyB0aGlzIGUtbWFpbC4NCg==