From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120] helo=us-smtp-1.mimecast.com) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAtos-0000WA-8k for ath10k@lists.infradead.org; Thu, 19 Sep 2019 10:37:52 +0000 Received: by mail-ed1-f72.google.com with SMTP id s15so506786edj.1 for ; Thu, 19 Sep 2019 03:37:42 -0700 (PDT) From: Toke =?utf-8?Q?H=C3=B8iland-J=C3=B8rgensen?= Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <8cdece5c030fd95817fb099021c38613@codeaurora.org> References: <1568639388-27291-1-git-send-email-yiboz@codeaurora.org> <1568639388-27291-2-git-send-email-yiboz@codeaurora.org> <87pnjyiq7o.fsf@toke.dk> <87sgothmpy.fsf@toke.dk> <8cdece5c030fd95817fb099021c38613@codeaurora.org> Date: Thu, 19 Sep 2019 12:37:38 +0200 Message-ID: <87tv98fu6l.fsf@toke.dk> MIME-Version: 1.0 List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: Yibo Zhao Cc: linux-wireless-owner@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org WWlibyBaaGFvIDx5aWJvekBjb2RlYXVyb3JhLm9yZz4gd3JpdGVzOgoKPiBPbiAyMDE5LTA5LTE4 IDE5OjIzLCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6Cj4+IFlpYm8gWmhhbyA8eWli b3pAY29kZWF1cm9yYS5vcmc+IHdyaXRlczoKPj4gCj4+PiBPbiAyMDE5LTA5LTE4IDA1OjEwLCBU b2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gd3JvdGU6Cj4+Pj4gWWlibyBaaGFvIDx5aWJvekBjb2Rl YXVyb3JhLm9yZz4gd3JpdGVzOgo+Pj4+IAo+Pj4+PiBJbiBhIGxvb3AgdHhxcyBkZXF1ZXVlIHNj ZW5hcmlvLCBpZiB0aGUgZmlyc3QgdHhxIGluIHRoZSByYnRyZWUgZ2V0cwo+Pj4+PiByZW1vdmVk IGZyb20gcmJ0cmVlIGltbWVkaWF0ZWx5IGluIHRoZSBpZWVlODAyMTFfcmV0dXJuX3R4cSgpLCB0 aGUKPj4+Pj4gbG9vcCB3aWxsIGJyZWFrIHNvb24gaW4gdGhlIGllZWU4MDIxMV9uZXh0X3R4cSgp IGR1ZSB0byBzY2hlZHVsZV9wb3MKPj4+Pj4gbm90IGxlYWRpbmcgdG8gdGhlIHNlY29uZCB0eHEg aW4gdGhlIHJidHJlZS4gVGh1cywgZGVmZXJpbmcgdGhlCj4+Pj4+IHJlbW92YWwgcmlnaHQgYmVm b3JlIHRoZSBlbmQgb2YgdGhpcyBzY2hlZHVsZSByb3VuZC4KPj4+Pj4gCj4+Pj4+IENvLWRldmVs b3BlZC1ieTogWWlibyBaaGFvIDx5aWJvekBjb2RlYXVyb3JhLm9yZz4KPj4+Pj4gU2lnbmVkLW9m Zi1ieTogWWlibyBaaGFvIDx5aWJvekBjb2RlYXVyb3JhLm9yZz4KPj4+Pj4gU2lnbmVkLW9mZi1i eTogVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHRva2UuZGs+Cj4+Pj4gCj4+Pj4gSSBk aWRuJ3Qgd3JpdGUgdGhpcyBwYXRjaCwgc28gcGxlYXNlIGRvbid0IHVzZSBteSBzaWduLW9mZi4g SSdsbCBhZGQKPj4+PiBhY2sgb3IgcmV2aWV3IHRhZ3MgYXMgYXBwcm9wcmlhdGUgaW4gcmVwbHk7 IGJ1dCBhIGZldyBjb21tZW50cyBmaXJzdDoKPj4+PiAKPj4+Pj4gLS0tCj4+Pj4+ICBpbmNsdWRl L25ldC9tYWM4MDIxMS5oICAgICB8IDE2ICsrKysrKysrKystLQo+Pj4+PiAgbmV0L21hYzgwMjEx L2llZWU4MDIxMV9pLmggfCAgMyArKysKPj4+Pj4gIG5ldC9tYWM4MDIxMS9tYWluLmMgICAgICAg IHwgIDYgKysrKysKPj4+Pj4gIG5ldC9tYWM4MDIxMS90eC5jICAgICAgICAgIHwgNjMKPj4+Pj4g KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+Pj4+PiAgNCBm aWxlcyBjaGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Pj4+PiAKPj4+ Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4 MDIxMS5oCj4+Pj4+IGluZGV4IGFjMmVkOGUuLmJhNWEzNDUgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2lu Y2x1ZGUvbmV0L21hYzgwMjExLmgKPj4+Pj4gKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+ Pj4+PiBAQCAtOTI1LDYgKzkyNSw4IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSB7Cj4+Pj4+ IAo+Pj4+PiAgI2RlZmluZSBJRUVFODAyMTFfTUFYX1RYX1JFVFJZCQkzMQo+Pj4+PiAKPj4+Pj4g KyNkZWZpbmUgSUVFRTgwMjExX0FJUlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TIDEwMAo+Pj4+ PiArCj4+Pj4+ICBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3JhdGVfc2V0X3ZodChzdHJ1 Y3QgaWVlZTgwMjExX3R4X3JhdGUKPj4+Pj4gKnJhdGUsCj4+Pj4+ICAJCQkJCSAgdTggbWNzLCB1 OCBuc3MpCj4+Pj4+ICB7Cj4+Pj4+IEBAIC02MjMyLDcgKzYyMzQsOCBAQCBzdHJ1Y3Qgc2tfYnVm ZiAqaWVlZTgwMjExX3R4X2RlcXVldWUoc3RydWN0Cj4+Pj4+IGllZWU4MDIxMV9odyAqaHcsCj4+ Pj4+ICAgKiBAYWM6IEFDIG51bWJlciB0byByZXR1cm4gcGFja2V0cyBmcm9tLgo+Pj4+PiAgICoK Pj4+Pj4gICAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCBiZXR3ZWVuIGNhbGxzIHRvCj4+Pj4+IGll ZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoKQo+Pj4+PiAtICogYW5kIGllZWU4MDIxMV90eHFf c2NoZWR1bGVfZW5kKCkuCj4+Pj4+ICsgKiBhbmQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQo KS4gSWYgdGhlIHR4cSBpcyBlbXB0eSwgaXQgd2lsbCAKPj4+Pj4gYmUKPj4+Pj4gYWRkZWQKPj4+ Pj4gKyAqIHRvIGEgcmVtb3ZlIGxpc3QgYW5kIGdldCByZW1vdmVkIGxhdGVyLgo+Pj4+PiAgICog UmV0dXJucyB0aGUgbmV4dCB0eHEgaWYgc3VjY2Vzc2Z1bCwgJU5VTEwgaWYgbm8gcXVldWUgaXMg Cj4+Pj4+IGVsaWdpYmxlLgo+Pj4+PiBJZiBhIHR4cQo+Pj4+PiAgICogaXMgcmV0dXJuZWQsIGl0 IHNob3VsZCBiZSByZXR1cm5lZCB3aXRoIGllZWU4MDIxMV9yZXR1cm5fdHhxKCkKPj4+Pj4gYWZ0 ZXIgdGhlCj4+Pj4+ICAgKiBkcml2ZXIgaGFzIGZpbmlzaGVkIHNjaGVkdWxpbmcgaXQuCj4+Pj4+ IEBAIC02MjY4LDcgKzYyNzEsOCBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQo c3RydWN0Cj4+Pj4+IGllZWU4MDIxMV9odyAqaHcsIHU4IGFjKQo+Pj4+PiAgICogQGh3OiBwb2lu dGVyIGFzIG9idGFpbmVkIGZyb20gaWVlZTgwMjExX2FsbG9jX2h3KCkKPj4+Pj4gICAqIEBhYzog QUMgbnVtYmVyIHRvIGFjcXVpcmUgbG9ja3MgZm9yCj4+Pj4+ICAgKgo+Pj4+PiAtICogUmVsZWFz ZSBsb2NrcyBwcmV2aW91c2x5IGFjcXVpcmVkIGJ5IAo+Pj4+PiBpZWVlODAyMTFfdHhxX3NjaGVk dWxlX2VuZCgpLgo+Pj4+PiArICogUmVsZWFzZSBsb2NrcyBwcmV2aW91c2x5IGFjcXVpcmVkIGJ5 IAo+Pj4+PiBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZCgpLgo+Pj4+PiBDaGVjawo+Pj4+PiAr ICogYW5kIHJlbW92ZSB0aGUgZW1wdHkgdHhxIGZyb20gcmItdHJlZS4KPj4+Pj4gICAqLwo+Pj4+ PiAgdm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywgdTggYWMpCj4+Pj4+ICAJX19yZWxlYXNlcyh0eHFfbG9jayk7Cj4+Pj4+IEBAIC02Mjg3LDYg KzYyOTEsMTQgQEAgdm9pZCBpZWVlODAyMTFfc2NoZWR1bGVfdHhxKHN0cnVjdCAKPj4+Pj4gaWVl ZTgwMjExX2h3Cj4+Pj4+ICpodywgc3RydWN0IGllZWU4MDIxMV90eHEgKnR4cSkKPj4+Pj4gIAlf X2FjcXVpcmVzKHR4cV9sb2NrKSBfX3JlbGVhc2VzKHR4cV9sb2NrKTsKPj4+Pj4gCj4+Pj4+ICAv KioKPj4+Pj4gKyAqIGllZWU4MDIxMV90eHFzX2NoZWNrIC0gQ2hlY2sgdHhxcyB3YWl0aW5nIGZv ciByZW1vdmFsCj4+Pj4+ICsgKgo+Pj4+PiArICogQHRtcjogcG9pbnRlciBhcyBvYnRhaW5lZCBm cm9tIGxvY2FsCj4+Pj4+ICsgKgo+Pj4+PiArICovCj4+Pj4+ICt2b2lkIGllZWU4MDIxMV90eHFz X2NoZWNrKHN0cnVjdCB0aW1lcl9saXN0ICp0bXIpOwo+Pj4+PiArCj4+Pj4+ICsvKioKPj4+Pj4g ICAqIGllZWU4MDIxMV90eHFfbWF5X3RyYW5zbWl0IC0gY2hlY2sgd2hldGhlciBUWFEgaXMgYWxs b3dlZCB0bwo+Pj4+PiB0cmFuc21pdAo+Pj4+PiAgICoKPj4+Pj4gICAqIFRoaXMgZnVuY3Rpb24g aXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIGdpdmVuIHR4cSBpcyBhbGxvd2VkIHRvCj4+Pj4+IHRy YW5zbWl0IGJ5Cj4+Pj4+IGRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBi L25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCj4+Pj4+IGluZGV4IGE0NTU2ZjkuLjQ5YWExNDNl IDEwMDY0NAo+Pj4+PiAtLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaAo+Pj4+PiArKysg Yi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaAo+Pj4+PiBAQCAtODQ3LDYgKzg0Nyw3IEBAIHN0 cnVjdCB0eHFfaW5mbyB7Cj4+Pj4+ICAJc3RydWN0IGNvZGVsX3N0YXRzIGNzdGF0czsKPj4+Pj4g IAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGZyYWdzOwo+Pj4+PiAgCXN0cnVjdCByYl9ub2RlIHNjaGVk dWxlX29yZGVyOwo+Pj4+PiArCXN0cnVjdCBsaXN0X2hlYWQgY2FuZGlkYXRlOwo+Pj4+PiAgCXVu c2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4+IAo+Pj4+PiAgCS8qIGtlZXAgbGFzdCEgKi8KPj4+Pj4g QEAgLTExNDUsNiArMTE0Niw4IEBAIHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgewo+Pj4+PiAgCXU2 NCBhaXJ0aW1lX3ZfdFtJRUVFODAyMTFfTlVNX0FDU107Cj4+Pj4+ICAJdTY0IGFpcnRpbWVfd2Vp Z2h0X3N1bVtJRUVFODAyMTFfTlVNX0FDU107Cj4+Pj4+IAo+Pj4+PiArCXN0cnVjdCBsaXN0X2hl YWQgcmVtb3ZlX2xpc3RbSUVFRTgwMjExX05VTV9BQ1NdOwo+Pj4+PiArCXN0cnVjdCB0aW1lcl9s aXN0IHJlbW92ZV90aW1lcjsKPj4+Pj4gIAl1MTYgYWlydGltZV9mbGFnczsKPj4+Pj4gCj4+Pj4+ ICAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgKm9wczsKPj4+Pj4gZGlmZiAtLWdpdCBhL25l dC9tYWM4MDIxMS9tYWluLmMgYi9uZXQvbWFjODAyMTEvbWFpbi5jCj4+Pj4+IGluZGV4IGU5ZmZh OGUuLjc4ZmUyNGEgMTAwNjQ0Cj4+Pj4+IC0tLSBhL25ldC9tYWM4MDIxMS9tYWluLmMKPj4+Pj4g KysrIGIvbmV0L21hYzgwMjExL21haW4uYwo+Pj4+PiBAQCAtNjY3LDEwICs2NjcsMTUgQEAgc3Ry dWN0IGllZWU4MDIxMV9odwo+Pj4+PiAqaWVlZTgwMjExX2FsbG9jX2h3X25tKHNpemVfdCBwcml2 X2RhdGFfbGVuLAo+Pj4+PiAKPj4+Pj4gIAlmb3IgKGkgPSAwOyBpIDwgSUVFRTgwMjExX05VTV9B Q1M7IGkrKykgewo+Pj4+PiAgCQlsb2NhbC0+YWN0aXZlX3R4cXNbaV0gPSBSQl9ST09UX0NBQ0hF RDsKPj4+Pj4gKwkJSU5JVF9MSVNUX0hFQUQoJmxvY2FsLT5yZW1vdmVfbGlzdFtpXSk7Cj4+Pj4+ ICAJCXNwaW5fbG9ja19pbml0KCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2ldKTsKPj4+Pj4gIAl9 Cj4+Pj4+ICAJbG9jYWwtPmFpcnRpbWVfZmxhZ3MgPSBBSVJUSU1FX1VTRV9UWCB8IEFJUlRJTUVf VVNFX1JYOwo+Pj4+PiAKPj4+Pj4gKwl0aW1lcl9zZXR1cCgmbG9jYWwtPnJlbW92ZV90aW1lciwg aWVlZTgwMjExX3R4cXNfY2hlY2ssIDApOwo+Pj4+PiArCW1vZF90aW1lcigmbG9jYWwtPnJlbW92 ZV90aW1lciwKPj4+Pj4gKwkJICBqaWZmaWVzICsKPj4+Pj4gbXNlY3NfdG9famlmZmllcyhJRUVF ODAyMTFfQUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMpKTsKPj4+Pj4gKwo+Pj4+PiAgCUlO SVRfTElTVF9IRUFEKCZsb2NhbC0+Y2hhbmN0eF9saXN0KTsKPj4+Pj4gIAltdXRleF9pbml0KCZs b2NhbC0+Y2hhbmN0eF9tdHgpOwo+Pj4+PiAKPj4+Pj4gQEAgLTEzMDUsNiArMTMxMCw3IEBAIHZv aWQgaWVlZTgwMjExX3VucmVnaXN0ZXJfaHcoc3RydWN0IAo+Pj4+PiBpZWVlODAyMTFfaHcKPj4+ Pj4gKmh3KQo+Pj4+PiAgCXRhc2tsZXRfa2lsbCgmbG9jYWwtPnR4X3BlbmRpbmdfdGFza2xldCk7 Cj4+Pj4+ICAJdGFza2xldF9raWxsKCZsb2NhbC0+dGFza2xldCk7Cj4+Pj4+IAo+Pj4+PiArCWRl bF90aW1lcl9zeW5jKCZsb2NhbC0+cmVtb3ZlX3RpbWVyKTsKPj4+Pj4gICNpZmRlZiBDT05GSUdf SU5FVAo+Pj4+PiAgCXVucmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoJmxvY2FsLT5pZmFfbm90 aWZpZXIpOwo+Pj4+PiAgI2VuZGlmCj4+Pj4+IGRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHgu YyBiL25ldC9tYWM4MDIxMS90eC5jCj4+Pj4+IGluZGV4IGQwMGJhYWEuLjQyY2EwMTAgMTAwNjQ0 Cj4+Pj4+IC0tLSBhL25ldC9tYWM4MDIxMS90eC5jCj4+Pj4+ICsrKyBiL25ldC9tYWM4MDIxMS90 eC5jCj4+Pj4+IEBAIC0xNDUwLDYgKzE0NTAsNyBAQCB2b2lkIGllZWU4MDIxMV90eHFfaW5pdChz dHJ1Y3QKPj4+Pj4gaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKPj4+Pj4gIAljb2RlbF9z dGF0c19pbml0KCZ0eHFpLT5jc3RhdHMpOwo+Pj4+PiAgCV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgm dHhxaS0+ZnJhZ3MpOwo+Pj4+PiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVy KTsKPj4+Pj4gKwlJTklUX0xJU1RfSEVBRCgmdHhxaS0+Y2FuZGlkYXRlKTsKPj4+Pj4gCj4+Pj4+ ICAJdHhxaS0+dHhxLnZpZiA9ICZzZGF0YS0+dmlmOwo+Pj4+PiAKPj4+Pj4gQEAgLTM3MjQsNiAr MzcyNSw5IEBAIHZvaWQgaWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgCj4+Pj4+IGllZWU4 MDIxMV9odwo+Pj4+PiAqaHcsCj4+Pj4+IAo+Pj4+PiAgCXNwaW5fbG9ja19iaCgmbG9jYWwtPmFj dGl2ZV90eHFfbG9ja1thY10pOwo+Pj4+PiAKPj4+Pj4gKwlpZiAoIWxpc3RfZW1wdHkoJnR4cWkt PmNhbmRpZGF0ZSkpCj4+Pj4+ICsJCWxpc3RfZGVsX2luaXQoJnR4cWktPmNhbmRpZGF0ZSk7Cj4+ Pj4+ICsKPj4+Pj4gIAlpZiAoIVJCX0VNUFRZX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKSkK Pj4+Pj4gIAkJZ290byBvdXQ7Cj4+Pj4+IAo+Pj4+PiBAQCAtMzc4Myw2ICszNzg3LDIwIEBAIHN0 YXRpYyB2b2lkIF9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKHN0cnVjdAo+Pj4+PiBpZWVlODAy MTFfaHcgKmh3LAo+Pj4+PiAgCVJCX0NMRUFSX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKTsK Pj4+Pj4gIH0KPj4+Pj4gCj4+Pj4+ICt2b2lkIGllZWU4MDIxMV9yZW1vdmVfdHhxKHN0cnVjdCBp ZWVlODAyMTFfaHcgKmh3LAo+Pj4+PiArCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQo+ Pj4+PiArewo+Pj4+PiArCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gaHdfdG9fbG9j YWwoaHcpOwo+Pj4+PiArCXN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IHRvX3R4cV9pbmZvKHR4cSk7 Cj4+Pj4+ICsKPj4+Pj4gKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NhbC0+YWN0aXZlX3R4cV9s b2NrW3R4cS0+YWNdKTsKPj4+Pj4gKwo+Pj4+PiArCWlmICghUkJfRU1QVFlfTk9ERSgmdHhxaS0+ c2NoZWR1bGVfb3JkZXIpKSB7Cj4+Pj4+ICsJCV9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKGh3 LCB0eHEpOwo+Pj4+PiArCQlsaXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOwo+Pj4+PiAr CX0KPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAgdm9pZCBpZWVlODAyMTFfdW5zY2hlZHVsZV90eHEo c3RydWN0IGllZWU4MDIxMV9odyAqaHcsCj4+Pj4+ICAJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjEx X3R4cSAqdHhxKQo+Pj4+PiAgCV9fYWNxdWlyZXModHhxX2xvY2spIF9fcmVsZWFzZXModHhxX2xv Y2spCj4+Pj4+IEBAIC0zNzkwLDcgKzM4MDgsNyBAQCB2b2lkIGllZWU4MDIxMV91bnNjaGVkdWxl X3R4cShzdHJ1Y3QKPj4+Pj4gaWVlZTgwMjExX2h3ICpodywKPj4+Pj4gIAlzdHJ1Y3QgaWVlZTgw MjExX2xvY2FsICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKPj4+Pj4gCj4+Pj4+ICAJc3Bpbl9s b2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW3R4cS0+YWNdKTsKPj4+Pj4gLQlfX2llZWU4 MDIxMV91bnNjaGVkdWxlX3R4cShodywgdHhxKTsKPj4+Pj4gKwlpZWVlODAyMTFfcmVtb3ZlX3R4 cShodywgdHhxKTsKPj4+Pj4gIAlzcGluX3VubG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9j a1t0eHEtPmFjXSk7Cj4+Pj4+ICB9Cj4+Pj4+IAo+Pj4+PiBAQCAtMzgwMywxMSArMzgyMSw0OCBA QCB2b2lkIGllZWU4MDIxMV9yZXR1cm5fdHhxKHN0cnVjdCAKPj4+Pj4gaWVlZTgwMjExX2h3Cj4+ Pj4+ICpodywKPj4+Pj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZsb2NhbC0+YWN0aXZlX3R4cV9s b2NrW3R4cS0+YWNdKTsKPj4+Pj4gCj4+Pj4+ICAJaWYgKCFSQl9FTVBUWV9OT0RFKCZ0eHFpLT5z Y2hlZHVsZV9vcmRlcikgJiYKPj4+Pj4gLQkgICAgKHNrYl9xdWV1ZV9lbXB0eSgmdHhxaS0+ZnJh Z3MpICYmICF0eHFpLT50aW4uYmFja2xvZ19wYWNrZXRzKSkKPj4+Pj4gLQkJX19pZWVlODAyMTFf dW5zY2hlZHVsZV90eHEoaHcsIHR4cSk7Cj4+Pj4+ICsJCSF0eHFfaGFzX3F1ZXVlKCZ0eHFpLT50 eHEpICYmCj4+Pj4+ICsJCWxpc3RfZW1wdHkoJnR4cWktPmNhbmRpZGF0ZSkpCj4+Pj4+ICsJCWxp c3RfYWRkX3RhaWwoJnR4cWktPmNhbmRpZGF0ZSwgJmxvY2FsLT5yZW1vdmVfbGlzdFt0eHEtPmFj XSk7Cj4+Pj4+ICsKPj4+Pj4gIH0KPj4+Pj4gIEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3JldHVy bl90eHEpOwo+Pj4+PiAKPj4+Pj4gK3ZvaWQgX19pZWVlODAyMTFfY2hlY2tfdHhxcyhzdHJ1Y3Qg aWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IGFjKQo+Pj4+PiArewo+Pj4+PiArCXN0cnVjdCB0 eHFfaW5mbyAqaXRlciwgKnRtcDsKPj4+Pj4gKwlzdHJ1Y3Qgc3RhX2luZm8gKnN0YTsKPj4+Pj4g Kwo+Pj4+PiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbYWNd KTsKPj4+Pj4gKwo+Pj4+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShpdGVyLCB0bXAsICZs b2NhbC0+cmVtb3ZlX2xpc3RbYWNdLAo+Pj4+PiArCQkJCSBjYW5kaWRhdGUpIHsKPj4+Pj4gKwkJ c3RhID0gY29udGFpbmVyX29mKGl0ZXItPnR4cS5zdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTsK Pj4+Pj4gKwo+Pj4+PiArCQlpZiAodHhxX2hhc19xdWV1ZSgmaXRlci0+dHhxKSkKPj4+Pj4gKwkJ CWxpc3RfZGVsX2luaXQoJml0ZXItPmNhbmRpZGF0ZSk7Cj4+Pj4+ICsJCWVsc2UKPj4+Pj4gKwkJ CWllZWU4MDIxMV9yZW1vdmVfdHhxKCZsb2NhbC0+aHcsICZpdGVyLT50eHEpOwo+Pj4+PiArCX0K Pj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiArdm9pZCBpZWVlODAyMTFfdHhxc19jaGVjayhzdHJ1Y3Qg dGltZXJfbGlzdCAqdCkKPj4+Pj4gK3sKPj4+Pj4gKwlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICps b2NhbCA9IGZyb21fdGltZXIobG9jYWwsIHQsIAo+Pj4+PiByZW1vdmVfdGltZXIpOwo+Pj4+PiAr CXN0cnVjdCB0eHFfaW5mbyAqaXRlciwgKnRtcDsKPj4+Pj4gKwlzdHJ1Y3Qgc3RhX2luZm8gKnN0 YTsKPj4+Pj4gKwlpbnQgYWM7Cj4+Pj4+ICsKPj4+Pj4gKwlmb3IgKGFjID0gMDsgYWMgPCBJRUVF ODAyMTFfTlVNX0FDUzsgYWMrKykgewo+Pj4+PiArCQlzcGluX2xvY2tfYmgoJmxvY2FsLT5hY3Rp dmVfdHhxX2xvY2tbYWNdKTsKPj4+Pj4gKwkJX19pZWVlODAyMTFfY2hlY2tfdHhxcyhsb2NhbCwg YWMpOwo+Pj4+PiArCQlzcGluX3VubG9ja19iaCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1thY10p Owo+Pj4+PiArCX0KPj4+Pj4gKwo+Pj4+PiArCW1vZF90aW1lcigmbG9jYWwtPnJlbW92ZV90aW1l ciwKPj4+Pj4gKwkJICBqaWZmaWVzICsKPj4+Pj4gbXNlY3NfdG9famlmZmllcyhJRUVFODAyMTFf QUlSVElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMpKTsKPj4+Pj4gK30KPj4+PiAKPj4+PiBJJ2xs IGFzayB0aGUgc2FtZSBhcyBJIGRpZCBsYXN0IHRpbWUgKHdoZXJlIHlvdSB0b2xkIG1lIHRvIGhv bGQgb2ZmCj4+Pj4gdW50aWwgdGhpcyByb3VuZCk6Cj4+Pj4gCj4+Pj4gV2h5IGRvIHlvdSBuZWVk IHRoZSB0aW1lciBhbmQgdGhlIHBlcmlvZGljIGNoZWNrPyBJZiBUWFFzIGFyZSBhZGRlZCAKPj4+ PiB0bwo+Pj4+IHRoZSByZW1vdmUgbGlzdCBkdXJpbmcgdGhlIHNjaGVkdWxpbmcgcnVuLCBhbmQg Cj4+Pj4gX19pZWVlODAyMTFfY2hlY2tfdHhxcygpCj4+Pj4gaXMgcnVuIGZyb20gc2NoZWR1bGVf ZW5kKCksIGlzbid0IHRoYXQgc3VmZmljaWVudCB0byBjbGVhciB0aGUgbGlzdD8KPj4+IElzIGl0 IHBvc3NpYmxlIHRoYXQgYSB0eHEgaXMgbm90IGFkZGVkIHRvIHRoZSByZW1vdmUgbGlzdCBidXQg dGhlbgo+Pj4gcGFja2V0cyBpbiBpdCBhcmUgZHJvcHBlZCBieSBmcV9jb2RlbCBhbGdvPyBMaWtl IHRoZSBzdGF0aW9uIAo+Pj4gZGlzY29ubmVjdHMKPj4+IHdpdGhvdXQgYW55IG5vdGlmaWNhdGlv bi4KPj4gCj4+IFdlbGwgYXMgbG9uZyBhcyBhbGwgdGhlIG90aGVyIGNsZWFudXAgcGF0aHMgY2Fs bCBkaXJlY3RseSBpbnRvCj4+IF9fdW5zY2hlZHVsZV90eHEoKSwgdGhhdCBzaG91bGQgcmVtb3Zl IHN0YXRpb25zIGZyb20gdGhlIHNjaGVkdWxlciB3aGVuCj4+IHRoZXkgZGlzY29ubmVjdCBldGMu Cj4gWWVzLCB0aGUgZGlzY29ubmVjdCBzY2VuYXJpbyBpcyBhIGJhZCBleGFtcGxlLiBNeSBjb25j ZXJuIGlzLCBzYXksIHdlIAo+IGhhdmUgMTAgc3RhdGlvbnMgYW5kIG9ubHkgb25lIG9mIHRoZW0g aXMgYXNzaWduZWQgYSB2ZXJ5IHNtYWxsIHdlaWdodCAKPiBjb21wYXJlZCB3aXRoIHRoYXQgb2Yg b3RoZXJzLiBTdXBwb3NlLCBhZnRlciBpdHMgY2hhbmNlIG9mIFR4LCBpdCBpcyAKPiBtb3N0IGxp a2VseSB0byBiZSBwbGFjZWQgaW4gdGhlIHJpZ2h0bW9zdChzdGlsbCBoYXMgc29tZSBwYWNrZXRz IGluIHRoZSAKPiB0eHEpIGFuZCBubyBtb3JlIGluY29taW5nIGRhdGEgZm9yIGl0LiBUaGUgcmVt YWluaW5nIHBhY2tldHMgaW4gdHhxIHdpbGwgCj4gYmUgZHJvcHBlZCBkdWUgdG8gdGltZW91dCBh bGdvIGluIGNvZGVsKGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZykgYnV0IAo+IHRoaXMgZW1wdHkg dHhxIHdpbGwgc3RheSBvbiB0aGUgcmJ0cmVlIHVudGlsIG90aGVyIHR4cXMgZ2V0IGRyYWluZWQg b3IgCj4gZ2xvYmFsIHZ0IGNhdGNoIHVwIHdpdGggaXRzIHZ0LiBUaGUgc3RheWluZyB0aW1lIGNv dWxkIGJlIGxvbmcgaWYgd2VpZ2h0IAo+IGlzIGV4dHJlbWVseSBzbWFsbC4gVGhlbiBkbyB3ZSBu ZWVkIHRpbWVyIHRvIGNoZWNrIG9yIGFueSBvdGhlciBiZXR0ZXIgCj4gc29sdXRpb24/CgpBaCwg SSBzZWUgd2hhdCB5b3UgbWVhbi4gTm8sIEkgZG9uJ3QgdGhpbmsgdGhpcyB3aWxsIGJlIGEgcHJv YmxlbTsgdGhlCnNjZW5hcmlvIHlvdSdyZSBkZXNjcmliaW5nIHdvdWxkIHBsYXkgb3V0IGxpa2Ug dGhpczoKCjEuIFN0YXRpb24gZW5kcyB0cmFuc21pdHRpbmcsIHN0aWxsIGhhcyBhIHNpbmdsZSBw YWNrZXQgcXVldWVkLCBnZXRzCiAgIG1vdmVkIHRvIHRoZSBlbmQgb2YgdGhlIHJidHJlZSAoYW5k IHN0YXlzIHRoZXJlIGZvciBhIHdoaWxlKS4KCjIuIFdoZW4gd2UgZmluYWxseSBnZXQgdG8gdGhl IHBvaW50IHdoZXJlIHRoaXMgc3RhdGlvbiBnZXRzIGFub3RoZXIKICAgY2hhbmNlIHRvIHRyYW5z bWl0LCB0aGUgQ29EZWwgZHJvcCB0aW1lciB0cmlnZ2VycyBhbmQgdGhlIGxhc3QgcGFja2V0CiAg IGlzIGRyb3BwZWRbMF0uIFRoaXMgbWVhbnMgdGhhdCB0aGUgcXVldWUgd2lsbCBqdXN0IGJlIGVt cHR5CiAgIChhbmQgaWVlZTgwMjExX3R4X2RlcXVldWUoKSB3aWxsIHJldHVybiBOVUxMKS4KCjMu IEJlY2F1c2UgdGhlIHF1ZXVlIGlzIGVtcHR5LCBpZWVlODAyMTFfcmV0dXJuX3R4cSgpIHdpbGwg bm90IHB1dCBpdAogICBiYWNrIG9uIHRoZSByYnRyZWUuCgpDcnVjaWFsbHksIGluIDIuIHRoZSBD b0RlbCBhbGdvcml0aG0gZG9lc24ndCBraWNrIGluIHVudGlsIHRoZSBwb2ludCBvZgpwYWNrZXQg ZGVxdWV1ZS4gQnV0IGV2ZW4gaWYgYW4gZW1wdHkgcXVldWUgc3RheXMgb24gdGhlIHJidHJlZSBm b3IgYQp3aGlsZSwgdGhlcmUgaXMgbm8gaGFybSBpbiB0aGF0OiBldmVudHVhbGx5IGl0IHdpbGwg Z2V0IGl0cyB0dXJuLCBpdAp3aWxsIHR1cm4gb3V0IHRvIGJlIGVtcHR5LCBhbmQganVzdCBiZSBz a2lwcGVkIG92ZXIuCgpUaGUgaXNzdWUgd2UgbmVlZCB0byBiZSBjb25jZXJuZWQgYWJvdXQgaXMg dGhlIG9wcG9zaXRlOiBJZiB3ZSBoYXZlIGEKcXVldWUgdGhhdCAqZG9lcyogaGF2ZSBwYWNrZXRz IHF1ZXVlZCwgYnV0IHdoaWNoIGlzICpub3QqIHNjaGVkdWxlZCBmb3IKdHJhbnNtaXNzaW9uLCB0 aGF0IHdpbGwgc3RhbGwgVFguCgpbMF0gQ29EZWwgaW4gbW9zdCBjYXNlcyBvbmx5IGRyb3BzIGEg c2luZ2xlIHBhY2tldCBhdCBhIHRpbWUsIHNvIGl0IHdpbGwKbm90IGNsZWFyIG91dCBhbiBlbnRp cmUgcXVldWUgd2l0aCBtdWx0aXBsZSBwYWNrZXRzIGluIG9uZSBnby4gQnV0IHlvdQphcmUgcmln aHQgdGhhdCBpdCBjb3VsZCBjb25jZWl2YWJseSBkcm9wIHRoZSBsYXN0IHBhY2tldCBpbiBhIHF1 ZXVlLgoKPj4gV2Ugb25seSBuZWVkIHRvIGRlZmVyIHJlbW92YWwgaW5zaWRlIGEgc2luZ2xlICJz Y2hlZHVsaW5nIHJvdW5kIiAoaS5lLiwKPj4gYmV0d2VlbiBhIHBhaXIgb2YgaWVlZTgwMjExX3R4 cV9zY2hlZHVsZV9zdGFydC9lbmQuIFNvIGlmIHdlIGp1c3Qgd2Fsawo+PiB0aGUgcmVtb3ZlIGxp c3QgaW4gc2NoZWR1bGVfZW5kKCkgd2Ugc2hvdWxkIGJlIGVub3VnaCwgbm8/Cj4+IAo+PiBIbW0s IG9yIG1heWJlIGEgc2ltcGxlciB3YXkgdG8gZml4IHRoZSBvcmlnaW5hbCBpc3N1ZSBpcyBqdXN0 IHRvIGhhdmUKPj4gdW5zY2hlZHVsZV90eHEoKSB1cGRhdGUgdGhlIHNjaGVkdWxlX3BvcygpIHBv aW50ZXI/Cj4+IAo+PiBJLmUuLCB1bnNjaGVkdWxlX3R4cSBjaGVja3MgaWYgdGhlIHR4cSBiZWlu ZyByZW1vdmVkIGlzIGN1cnJlbnRseSBiZWluZwo+PiBwb2ludGVkIHRvIGJ5IHNjaGVkdWxlX3Bv c1thY10sIGFuZCBpZiBpdCBpcywgaXQgdXBkYXRlcyBzY2hlZHVsZV9wb3MgCj4+IHRvCj4+IGJl IHRoZSByYl9uZXh0IG9mIHRoZSBjdXJyZW50IHZhbHVlPwo+IEFjdHVhbGx5LCBpZiBzY2hlZHVs ZV9wb3MgaXMgdXBkYXRlZCB0byByYl9uZXh0IG9mIHRoZSBjdXJyZW50IHZhbHVlLCAKPiB0aGVu IGluIHRoZSBuZXh0X3R4cSgpIHdoZXJlIHdlIGFyZSBnb2luZyB0byB1c2UgcmJfbmV4dCBhZ2Fp biBhbmQgCj4gZmluYWxseSBwaWNrIHRoZSBuZXh0IG5vZGUgb2YgdGhlIG5vZGUgd2UgcmVhbGx5 IHdhbnQuIElzIGl0IGZpbmUgdG8gCj4gdXBkYXRlIHNjaGVkdWxlX3BvcyB0byBOVUxMPwoKSG1t LCB5ZWFoLCBnb29kIHBvaW50LgoKSWYgd2UgZG8gZW5kIHVwIHNldHRpbmcgc2NoZWR1bGVfcG9z IHRvIE5VTEwgaW4gdGhlIG1pZGRsZSBvZiBhCnNjaGVkdWxpbmcgcm91bmQsIHRoYXQgd2lsbCBt YWtlIG5leHRfdHhxKCkgInN0YXJ0IG92ZXIiLCBhbmQgZG8gYW5vdGhlcgpsb29wIHRocm91Z2gg dGhlIHdob2xlIHRoaW5nLiBJIGd1ZXNzIHdlIG1heSBiZSBhYmxlIGhpdCBhIGNhc2Ugd2hlcmUK dGhpbmdzIGNhbiBvc2NpbGxhdGUgYmFjayBhbmQgZm9ydGggYmV0d2VlbiBhZGRpdGlvbiBhbmQg cmVtb3ZhbApyZXN1bHRpbmcgaW4gYW4gaW5maW5pdGUgbG9vcD8gTm90IHN1cmUsIGJ1dCBhdCBs ZWFzdCBJIGNhbid0IHNlZW0gdG8KY29udmluY2UgbXlzZWxmIHRoYXQgdGhpcyBjYW4ndCBoYXBw ZW4uCgpCdXQgaW4gdGhhdCBjYXNlLCB3ZSBjb3VsZCBmaXggaXQgYnkganVzdCBjb25kaXRpb25h bGx5IGFzc2lnbmluZyBlaXRoZXIKcmJfbmV4dCBvciByYl9wcmV2IHRvIHRoZSBzY2hlZHVsZV9w b3MgaW4gdW5zY2hlZHVsZV90eHEoKT8gSS5lLiwKc29tZXRoaW5nIGxpa2U6Cgpsb2NhbC0+c2No ZWR1bGVfcG9zW2FjXSA9IHJiX25leHQobm9kZSkgPzogcmJfcHJldihub2RlKTsKCi1Ub2tlCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYXRoMTBrIG1h aWxpbmcgbGlzdAphdGgxMGtAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5mcmFk ZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2F0aDEwawo=