From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]) by bombadil.infradead.org with esmtps (Exim 4.92.2 #3 (Red Hat Linux)) id 1iAtB7-0007Rt-7w for ath10k@lists.infradead.org; Thu, 19 Sep 2019 09:56:47 +0000 MIME-Version: 1.0 Date: Thu, 19 Sep 2019 17:56:42 +0800 From: Yibo Zhao Subject: Re: [PATCH 2/4] mac80211: defer txqs removal from rbtree In-Reply-To: <87sgothmpy.fsf@toke.dk> 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> Message-ID: <8cdece5c030fd95817fb099021c38613@codeaurora.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "ath10k" Errors-To: ath10k-bounces+kvalo=adurom.com@lists.infradead.org To: =?UTF-8?Q?Toke_H=C3=B8iland-J=C3=B8rgensen?= Cc: linux-wireless-owner@vger.kernel.org, linux-wireless@vger.kernel.org, ath10k@lists.infradead.org T24gMjAxOS0wOS0xOCAxOToyMywgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+IFlp Ym8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+IHdyaXRlczoKPiAKPj4gT24gMjAxOS0wOS0x OCAwNToxMCwgVG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2VuIHdyb3RlOgo+Pj4gWWlibyBaaGFvIDx5 aWJvekBjb2RlYXVyb3JhLm9yZz4gd3JpdGVzOgo+Pj4gCj4+Pj4gSW4gYSBsb29wIHR4cXMgZGVx dWV1ZSBzY2VuYXJpbywgaWYgdGhlIGZpcnN0IHR4cSBpbiB0aGUgcmJ0cmVlIGdldHMKPj4+PiBy ZW1vdmVkIGZyb20gcmJ0cmVlIGltbWVkaWF0ZWx5IGluIHRoZSBpZWVlODAyMTFfcmV0dXJuX3R4 cSgpLCB0aGUKPj4+PiBsb29wIHdpbGwgYnJlYWsgc29vbiBpbiB0aGUgaWVlZTgwMjExX25leHRf dHhxKCkgZHVlIHRvIHNjaGVkdWxlX3Bvcwo+Pj4+IG5vdCBsZWFkaW5nIHRvIHRoZSBzZWNvbmQg dHhxIGluIHRoZSByYnRyZWUuIFRodXMsIGRlZmVyaW5nIHRoZQo+Pj4+IHJlbW92YWwgcmlnaHQg YmVmb3JlIHRoZSBlbmQgb2YgdGhpcyBzY2hlZHVsZSByb3VuZC4KPj4+PiAKPj4+PiBDby1kZXZl bG9wZWQtYnk6IFlpYm8gWmhhbyA8eWlib3pAY29kZWF1cm9yYS5vcmc+Cj4+Pj4gU2lnbmVkLW9m Zi1ieTogWWlibyBaaGFvIDx5aWJvekBjb2RlYXVyb3JhLm9yZz4KPj4+PiBTaWduZWQtb2ZmLWJ5 OiBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4gPHRva2VAdG9rZS5kaz4KPj4+IAo+Pj4gSSBkaWRu J3Qgd3JpdGUgdGhpcyBwYXRjaCwgc28gcGxlYXNlIGRvbid0IHVzZSBteSBzaWduLW9mZi4gSSds bCBhZGQKPj4+IGFjayBvciByZXZpZXcgdGFncyBhcyBhcHByb3ByaWF0ZSBpbiByZXBseTsgYnV0 IGEgZmV3IGNvbW1lbnRzIGZpcnN0Ogo+Pj4gCj4+Pj4gLS0tCj4+Pj4gIGluY2x1ZGUvbmV0L21h YzgwMjExLmggICAgIHwgMTYgKysrKysrKysrKy0tCj4+Pj4gIG5ldC9tYWM4MDIxMS9pZWVlODAy MTFfaS5oIHwgIDMgKysrCj4+Pj4gIG5ldC9tYWM4MDIxMS9tYWluLmMgICAgICAgIHwgIDYgKysr KysKPj4+PiAgbmV0L21hYzgwMjExL3R4LmMgICAgICAgICAgfCA2Mwo+Pj4+ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KPj4+PiAgNCBmaWxlcyBjaGFuZ2Vk LCA4MyBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Pj4+IAo+Pj4+IGRpZmYgLS1naXQg YS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAo+Pj4+IGlu ZGV4IGFjMmVkOGUuLmJhNWEzNDUgMTAwNjQ0Cj4+Pj4gLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAy MTEuaAo+Pj4+ICsrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKPj4+PiBAQCAtOTI1LDYgKzky NSw4IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhfcmF0ZSB7Cj4+Pj4gCj4+Pj4gICNkZWZpbmUgSUVF RTgwMjExX01BWF9UWF9SRVRSWQkJMzEKPj4+PiAKPj4+PiArI2RlZmluZSBJRUVFODAyMTFfQUlS VElNRV9UWFFfUk1fQ0hLX0lOVFZfSU5fTVMgMTAwCj4+Pj4gKwo+Pj4+ICBzdGF0aWMgaW5saW5l IHZvaWQgaWVlZTgwMjExX3JhdGVfc2V0X3ZodChzdHJ1Y3QgaWVlZTgwMjExX3R4X3JhdGUKPj4+ PiAqcmF0ZSwKPj4+PiAgCQkJCQkgIHU4IG1jcywgdTggbnNzKQo+Pj4+ICB7Cj4+Pj4gQEAgLTYy MzIsNyArNjIzNCw4IEBAIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfdHhfZGVxdWV1ZShzdHJ1 Y3QKPj4+PiBpZWVlODAyMTFfaHcgKmh3LAo+Pj4+ICAgKiBAYWM6IEFDIG51bWJlciB0byByZXR1 cm4gcGFja2V0cyBmcm9tLgo+Pj4+ICAgKgo+Pj4+ICAgKiBTaG91bGQgb25seSBiZSBjYWxsZWQg YmV0d2VlbiBjYWxscyB0bwo+Pj4+IGllZWU4MDIxMV90eHFfc2NoZWR1bGVfc3RhcnQoKQo+Pj4+ IC0gKiBhbmQgaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoKS4KPj4+PiArICogYW5kIGllZWU4 MDIxMV90eHFfc2NoZWR1bGVfZW5kKCkuIElmIHRoZSB0eHEgaXMgZW1wdHksIGl0IHdpbGwgCj4+ Pj4gYmUKPj4+PiBhZGRlZAo+Pj4+ICsgKiB0byBhIHJlbW92ZSBsaXN0IGFuZCBnZXQgcmVtb3Zl ZCBsYXRlci4KPj4+PiAgICogUmV0dXJucyB0aGUgbmV4dCB0eHEgaWYgc3VjY2Vzc2Z1bCwgJU5V TEwgaWYgbm8gcXVldWUgaXMgCj4+Pj4gZWxpZ2libGUuCj4+Pj4gSWYgYSB0eHEKPj4+PiAgICog aXMgcmV0dXJuZWQsIGl0IHNob3VsZCBiZSByZXR1cm5lZCB3aXRoIGllZWU4MDIxMV9yZXR1cm5f dHhxKCkKPj4+PiBhZnRlciB0aGUKPj4+PiAgICogZHJpdmVyIGhhcyBmaW5pc2hlZCBzY2hlZHVs aW5nIGl0Lgo+Pj4+IEBAIC02MjY4LDcgKzYyNzEsOCBAQCB2b2lkIGllZWU4MDIxMV90eHFfc2No ZWR1bGVfc3RhcnQoc3RydWN0Cj4+Pj4gaWVlZTgwMjExX2h3ICpodywgdTggYWMpCj4+Pj4gICAq IEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpCj4+Pj4g ICAqIEBhYzogQUMgbnVtYmVyIHRvIGFjcXVpcmUgbG9ja3MgZm9yCj4+Pj4gICAqCj4+Pj4gLSAq IFJlbGVhc2UgbG9ja3MgcHJldmlvdXNseSBhY3F1aXJlZCBieSAKPj4+PiBpZWVlODAyMTFfdHhx X3NjaGVkdWxlX2VuZCgpLgo+Pj4+ICsgKiBSZWxlYXNlIGxvY2tzIHByZXZpb3VzbHkgYWNxdWly ZWQgYnkgCj4+Pj4gaWVlZTgwMjExX3R4cV9zY2hlZHVsZV9lbmQoKS4KPj4+PiBDaGVjawo+Pj4+ ICsgKiBhbmQgcmVtb3ZlIHRoZSBlbXB0eSB0eHEgZnJvbSByYi10cmVlLgo+Pj4+ICAgKi8KPj4+ PiAgdm9pZCBpZWVlODAyMTFfdHhxX3NjaGVkdWxlX2VuZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywgdTggYWMpCj4+Pj4gIAlfX3JlbGVhc2VzKHR4cV9sb2NrKTsKPj4+PiBAQCAtNjI4Nyw2ICs2 MjkxLDE0IEBAIHZvaWQgaWVlZTgwMjExX3NjaGVkdWxlX3R4cShzdHJ1Y3QgCj4+Pj4gaWVlZTgw MjExX2h3Cj4+Pj4gKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSAqdHhxKQo+Pj4+ICAJX19hY3F1 aXJlcyh0eHFfbG9jaykgX19yZWxlYXNlcyh0eHFfbG9jayk7Cj4+Pj4gCj4+Pj4gIC8qKgo+Pj4+ ICsgKiBpZWVlODAyMTFfdHhxc19jaGVjayAtIENoZWNrIHR4cXMgd2FpdGluZyBmb3IgcmVtb3Zh bAo+Pj4+ICsgKgo+Pj4+ICsgKiBAdG1yOiBwb2ludGVyIGFzIG9idGFpbmVkIGZyb20gbG9jYWwK Pj4+PiArICoKPj4+PiArICovCj4+Pj4gK3ZvaWQgaWVlZTgwMjExX3R4cXNfY2hlY2soc3RydWN0 IHRpbWVyX2xpc3QgKnRtcik7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiAgICogaWVlZTgwMjExX3R4 cV9tYXlfdHJhbnNtaXQgLSBjaGVjayB3aGV0aGVyIFRYUSBpcyBhbGxvd2VkIHRvCj4+Pj4gdHJh bnNtaXQKPj4+PiAgICoKPj4+PiAgICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHdo ZXRoZXIgZ2l2ZW4gdHhxIGlzIGFsbG93ZWQgdG8KPj4+PiB0cmFuc21pdCBieQo+Pj4+IGRpZmYg LS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAy MTFfaS5oCj4+Pj4gaW5kZXggYTQ1NTZmOS4uNDlhYTE0M2UgMTAwNjQ0Cj4+Pj4gLS0tIGEvbmV0 L21hYzgwMjExL2llZWU4MDIxMV9pLmgKPj4+PiArKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjEx X2kuaAo+Pj4+IEBAIC04NDcsNiArODQ3LDcgQEAgc3RydWN0IHR4cV9pbmZvIHsKPj4+PiAgCXN0 cnVjdCBjb2RlbF9zdGF0cyBjc3RhdHM7Cj4+Pj4gIAlzdHJ1Y3Qgc2tfYnVmZl9oZWFkIGZyYWdz Owo+Pj4+ICAJc3RydWN0IHJiX25vZGUgc2NoZWR1bGVfb3JkZXI7Cj4+Pj4gKwlzdHJ1Y3QgbGlz dF9oZWFkIGNhbmRpZGF0ZTsKPj4+PiAgCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+Pj4gCj4+Pj4g IAkvKiBrZWVwIGxhc3QhICovCj4+Pj4gQEAgLTExNDUsNiArMTE0Niw4IEBAIHN0cnVjdCBpZWVl ODAyMTFfbG9jYWwgewo+Pj4+ICAJdTY0IGFpcnRpbWVfdl90W0lFRUU4MDIxMV9OVU1fQUNTXTsK Pj4+PiAgCXU2NCBhaXJ0aW1lX3dlaWdodF9zdW1bSUVFRTgwMjExX05VTV9BQ1NdOwo+Pj4+IAo+ Pj4+ICsJc3RydWN0IGxpc3RfaGVhZCByZW1vdmVfbGlzdFtJRUVFODAyMTFfTlVNX0FDU107Cj4+ Pj4gKwlzdHJ1Y3QgdGltZXJfbGlzdCByZW1vdmVfdGltZXI7Cj4+Pj4gIAl1MTYgYWlydGltZV9m bGFnczsKPj4+PiAKPj4+PiAgCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfb3BzICpvcHM7Cj4+Pj4g ZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tYWluLmMgYi9uZXQvbWFjODAyMTEvbWFpbi5jCj4+ Pj4gaW5kZXggZTlmZmE4ZS4uNzhmZTI0YSAxMDA2NDQKPj4+PiAtLS0gYS9uZXQvbWFjODAyMTEv bWFpbi5jCj4+Pj4gKysrIGIvbmV0L21hYzgwMjExL21haW4uYwo+Pj4+IEBAIC02NjcsMTAgKzY2 NywxNSBAQCBzdHJ1Y3QgaWVlZTgwMjExX2h3Cj4+Pj4gKmllZWU4MDIxMV9hbGxvY19od19ubShz aXplX3QgcHJpdl9kYXRhX2xlbiwKPj4+PiAKPj4+PiAgCWZvciAoaSA9IDA7IGkgPCBJRUVFODAy MTFfTlVNX0FDUzsgaSsrKSB7Cj4+Pj4gIAkJbG9jYWwtPmFjdGl2ZV90eHFzW2ldID0gUkJfUk9P VF9DQUNIRUQ7Cj4+Pj4gKwkJSU5JVF9MSVNUX0hFQUQoJmxvY2FsLT5yZW1vdmVfbGlzdFtpXSk7 Cj4+Pj4gIAkJc3Bpbl9sb2NrX2luaXQoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbaV0pOwo+Pj4+ ICAJfQo+Pj4+ICAJbG9jYWwtPmFpcnRpbWVfZmxhZ3MgPSBBSVJUSU1FX1VTRV9UWCB8IEFJUlRJ TUVfVVNFX1JYOwo+Pj4+IAo+Pj4+ICsJdGltZXJfc2V0dXAoJmxvY2FsLT5yZW1vdmVfdGltZXIs IGllZWU4MDIxMV90eHFzX2NoZWNrLCAwKTsKPj4+PiArCW1vZF90aW1lcigmbG9jYWwtPnJlbW92 ZV90aW1lciwKPj4+PiArCQkgIGppZmZpZXMgKwo+Pj4+IG1zZWNzX3RvX2ppZmZpZXMoSUVFRTgw MjExX0FJUlRJTUVfVFhRX1JNX0NIS19JTlRWX0lOX01TKSk7Cj4+Pj4gKwo+Pj4+ICAJSU5JVF9M SVNUX0hFQUQoJmxvY2FsLT5jaGFuY3R4X2xpc3QpOwo+Pj4+ICAJbXV0ZXhfaW5pdCgmbG9jYWwt PmNoYW5jdHhfbXR4KTsKPj4+PiAKPj4+PiBAQCAtMTMwNSw2ICsxMzEwLDcgQEAgdm9pZCBpZWVl ODAyMTFfdW5yZWdpc3Rlcl9odyhzdHJ1Y3QgCj4+Pj4gaWVlZTgwMjExX2h3Cj4+Pj4gKmh3KQo+ Pj4+ICAJdGFza2xldF9raWxsKCZsb2NhbC0+dHhfcGVuZGluZ190YXNrbGV0KTsKPj4+PiAgCXRh c2tsZXRfa2lsbCgmbG9jYWwtPnRhc2tsZXQpOwo+Pj4+IAo+Pj4+ICsJZGVsX3RpbWVyX3N5bmMo JmxvY2FsLT5yZW1vdmVfdGltZXIpOwo+Pj4+ICAjaWZkZWYgQ09ORklHX0lORVQKPj4+PiAgCXVu cmVnaXN0ZXJfaW5ldGFkZHJfbm90aWZpZXIoJmxvY2FsLT5pZmFfbm90aWZpZXIpOwo+Pj4+ICAj ZW5kaWYKPj4+PiBkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEv dHguYwo+Pj4+IGluZGV4IGQwMGJhYWEuLjQyY2EwMTAgMTAwNjQ0Cj4+Pj4gLS0tIGEvbmV0L21h YzgwMjExL3R4LmMKPj4+PiArKysgYi9uZXQvbWFjODAyMTEvdHguYwo+Pj4+IEBAIC0xNDUwLDYg KzE0NTAsNyBAQCB2b2lkIGllZWU4MDIxMV90eHFfaW5pdChzdHJ1Y3QKPj4+PiBpZWVlODAyMTFf c3ViX2lmX2RhdGEgKnNkYXRhLAo+Pj4+ICAJY29kZWxfc3RhdHNfaW5pdCgmdHhxaS0+Y3N0YXRz KTsKPj4+PiAgCV9fc2tiX3F1ZXVlX2hlYWRfaW5pdCgmdHhxaS0+ZnJhZ3MpOwo+Pj4+ICAJUkJf Q0xFQVJfTk9ERSgmdHhxaS0+c2NoZWR1bGVfb3JkZXIpOwo+Pj4+ICsJSU5JVF9MSVNUX0hFQUQo JnR4cWktPmNhbmRpZGF0ZSk7Cj4+Pj4gCj4+Pj4gIAl0eHFpLT50eHEudmlmID0gJnNkYXRhLT52 aWY7Cj4+Pj4gCj4+Pj4gQEAgLTM3MjQsNiArMzcyNSw5IEBAIHZvaWQgaWVlZTgwMjExX3NjaGVk dWxlX3R4cShzdHJ1Y3QgCj4+Pj4gaWVlZTgwMjExX2h3Cj4+Pj4gKmh3LAo+Pj4+IAo+Pj4+ICAJ c3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4+Pj4gCj4+Pj4gKwlp ZiAoIWxpc3RfZW1wdHkoJnR4cWktPmNhbmRpZGF0ZSkpCj4+Pj4gKwkJbGlzdF9kZWxfaW5pdCgm dHhxaS0+Y2FuZGlkYXRlKTsKPj4+PiArCj4+Pj4gIAlpZiAoIVJCX0VNUFRZX05PREUoJnR4cWkt PnNjaGVkdWxlX29yZGVyKSkKPj4+PiAgCQlnb3RvIG91dDsKPj4+PiAKPj4+PiBAQCAtMzc4Myw2 ICszNzg3LDIwIEBAIHN0YXRpYyB2b2lkIF9faWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKHN0cnVj dAo+Pj4+IGllZWU4MDIxMV9odyAqaHcsCj4+Pj4gIAlSQl9DTEVBUl9OT0RFKCZ0eHFpLT5zY2hl ZHVsZV9vcmRlcik7Cj4+Pj4gIH0KPj4+PiAKPj4+PiArdm9pZCBpZWVlODAyMTFfcmVtb3ZlX3R4 cShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKPj4+PiArCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3R4 cSAqdHhxKQo+Pj4+ICt7Cj4+Pj4gKwlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IGh3 X3RvX2xvY2FsKGh3KTsKPj4+PiArCXN0cnVjdCB0eHFfaW5mbyAqdHhxaSA9IHRvX3R4cV9pbmZv KHR4cSk7Cj4+Pj4gKwo+Pj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2ZV90 eHFfbG9ja1t0eHEtPmFjXSk7Cj4+Pj4gKwo+Pj4+ICsJaWYgKCFSQl9FTVBUWV9OT0RFKCZ0eHFp LT5zY2hlZHVsZV9vcmRlcikpIHsKPj4+PiArCQlfX2llZWU4MDIxMV91bnNjaGVkdWxlX3R4cSho dywgdHhxKTsKPj4+PiArCQlsaXN0X2RlbF9pbml0KCZ0eHFpLT5jYW5kaWRhdGUpOwo+Pj4+ICsJ fQo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICB2b2lkIGllZWU4MDIxMV91bnNjaGVkdWxlX3R4cShzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpodywKPj4+PiAgCQkJICAgICAgc3RydWN0IGllZWU4MDIxMV90eHEg KnR4cSkKPj4+PiAgCV9fYWNxdWlyZXModHhxX2xvY2spIF9fcmVsZWFzZXModHhxX2xvY2spCj4+ Pj4gQEAgLTM3OTAsNyArMzgwOCw3IEBAIHZvaWQgaWVlZTgwMjExX3Vuc2NoZWR1bGVfdHhxKHN0 cnVjdAo+Pj4+IGllZWU4MDIxMV9odyAqaHcsCj4+Pj4gIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2Fs ICpsb2NhbCA9IGh3X3RvX2xvY2FsKGh3KTsKPj4+PiAKPj4+PiAgCXNwaW5fbG9ja19iaCgmbG9j YWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4+Pj4gLQlfX2llZWU4MDIxMV91bnNjaGVk dWxlX3R4cShodywgdHhxKTsKPj4+PiArCWllZWU4MDIxMV9yZW1vdmVfdHhxKGh3LCB0eHEpOwo+ Pj4+ICAJc3Bpbl91bmxvY2tfYmgoJmxvY2FsLT5hY3RpdmVfdHhxX2xvY2tbdHhxLT5hY10pOwo+ Pj4+ICB9Cj4+Pj4gCj4+Pj4gQEAgLTM4MDMsMTEgKzM4MjEsNDggQEAgdm9pZCBpZWVlODAyMTFf cmV0dXJuX3R4cShzdHJ1Y3QgCj4+Pj4gaWVlZTgwMjExX2h3Cj4+Pj4gKmh3LAo+Pj4+ICAJbG9j a2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwtPmFjdGl2ZV90eHFfbG9ja1t0eHEtPmFjXSk7Cj4+Pj4g Cj4+Pj4gIAlpZiAoIVJCX0VNUFRZX05PREUoJnR4cWktPnNjaGVkdWxlX29yZGVyKSAmJgo+Pj4+ IC0JICAgIChza2JfcXVldWVfZW1wdHkoJnR4cWktPmZyYWdzKSAmJiAhdHhxaS0+dGluLmJhY2ts b2dfcGFja2V0cykpCj4+Pj4gLQkJX19pZWVlODAyMTFfdW5zY2hlZHVsZV90eHEoaHcsIHR4cSk7 Cj4+Pj4gKwkJIXR4cV9oYXNfcXVldWUoJnR4cWktPnR4cSkgJiYKPj4+PiArCQlsaXN0X2VtcHR5 KCZ0eHFpLT5jYW5kaWRhdGUpKQo+Pj4+ICsJCWxpc3RfYWRkX3RhaWwoJnR4cWktPmNhbmRpZGF0 ZSwgJmxvY2FsLT5yZW1vdmVfbGlzdFt0eHEtPmFjXSk7Cj4+Pj4gKwo+Pj4+ICB9Cj4+Pj4gIEVY UE9SVF9TWU1CT0woaWVlZTgwMjExX3JldHVybl90eHEpOwo+Pj4+IAo+Pj4+ICt2b2lkIF9faWVl ZTgwMjExX2NoZWNrX3R4cXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIGludCBhYykK Pj4+PiArewo+Pj4+ICsJc3RydWN0IHR4cV9pbmZvICppdGVyLCAqdG1wOwo+Pj4+ICsJc3RydWN0 IHN0YV9pbmZvICpzdGE7Cj4+Pj4gKwo+Pj4+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmbG9jYWwt PmFjdGl2ZV90eHFfbG9ja1thY10pOwo+Pj4+ICsKPj4+PiArCWxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShpdGVyLCB0bXAsICZsb2NhbC0+cmVtb3ZlX2xpc3RbYWNdLAo+Pj4+ICsJCQkJIGNhbmRp ZGF0ZSkgewo+Pj4+ICsJCXN0YSA9IGNvbnRhaW5lcl9vZihpdGVyLT50eHEuc3RhLCBzdHJ1Y3Qg c3RhX2luZm8sIHN0YSk7Cj4+Pj4gKwo+Pj4+ICsJCWlmICh0eHFfaGFzX3F1ZXVlKCZpdGVyLT50 eHEpKQo+Pj4+ICsJCQlsaXN0X2RlbF9pbml0KCZpdGVyLT5jYW5kaWRhdGUpOwo+Pj4+ICsJCWVs c2UKPj4+PiArCQkJaWVlZTgwMjExX3JlbW92ZV90eHEoJmxvY2FsLT5odywgJml0ZXItPnR4cSk7 Cj4+Pj4gKwl9Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3ZvaWQgaWVlZTgwMjExX3R4cXNfY2hlY2so c3RydWN0IHRpbWVyX2xpc3QgKnQpCj4+Pj4gK3sKPj4+PiArCXN0cnVjdCBpZWVlODAyMTFfbG9j YWwgKmxvY2FsID0gZnJvbV90aW1lcihsb2NhbCwgdCwgCj4+Pj4gcmVtb3ZlX3RpbWVyKTsKPj4+ PiArCXN0cnVjdCB0eHFfaW5mbyAqaXRlciwgKnRtcDsKPj4+PiArCXN0cnVjdCBzdGFfaW5mbyAq c3RhOwo+Pj4+ICsJaW50IGFjOwo+Pj4+ICsKPj4+PiArCWZvciAoYWMgPSAwOyBhYyA8IElFRUU4 MDIxMV9OVU1fQUNTOyBhYysrKSB7Cj4+Pj4gKwkJc3Bpbl9sb2NrX2JoKCZsb2NhbC0+YWN0aXZl X3R4cV9sb2NrW2FjXSk7Cj4+Pj4gKwkJX19pZWVlODAyMTFfY2hlY2tfdHhxcyhsb2NhbCwgYWMp Owo+Pj4+ICsJCXNwaW5fdW5sb2NrX2JoKCZsb2NhbC0+YWN0aXZlX3R4cV9sb2NrW2FjXSk7Cj4+ Pj4gKwl9Cj4+Pj4gKwo+Pj4+ICsJbW9kX3RpbWVyKCZsb2NhbC0+cmVtb3ZlX3RpbWVyLAo+Pj4+ ICsJCSAgamlmZmllcyArCj4+Pj4gbXNlY3NfdG9famlmZmllcyhJRUVFODAyMTFfQUlSVElNRV9U WFFfUk1fQ0hLX0lOVFZfSU5fTVMpKTsKPj4+PiArfQo+Pj4gCj4+PiBJJ2xsIGFzayB0aGUgc2Ft ZSBhcyBJIGRpZCBsYXN0IHRpbWUgKHdoZXJlIHlvdSB0b2xkIG1lIHRvIGhvbGQgb2ZmCj4+PiB1 bnRpbCB0aGlzIHJvdW5kKToKPj4+IAo+Pj4gV2h5IGRvIHlvdSBuZWVkIHRoZSB0aW1lciBhbmQg dGhlIHBlcmlvZGljIGNoZWNrPyBJZiBUWFFzIGFyZSBhZGRlZCAKPj4+IHRvCj4+PiB0aGUgcmVt b3ZlIGxpc3QgZHVyaW5nIHRoZSBzY2hlZHVsaW5nIHJ1biwgYW5kIAo+Pj4gX19pZWVlODAyMTFf Y2hlY2tfdHhxcygpCj4+PiBpcyBydW4gZnJvbSBzY2hlZHVsZV9lbmQoKSwgaXNuJ3QgdGhhdCBz dWZmaWNpZW50IHRvIGNsZWFyIHRoZSBsaXN0Pwo+PiBJcyBpdCBwb3NzaWJsZSB0aGF0IGEgdHhx IGlzIG5vdCBhZGRlZCB0byB0aGUgcmVtb3ZlIGxpc3QgYnV0IHRoZW4KPj4gcGFja2V0cyBpbiBp dCBhcmUgZHJvcHBlZCBieSBmcV9jb2RlbCBhbGdvPyBMaWtlIHRoZSBzdGF0aW9uIAo+PiBkaXNj b25uZWN0cwo+PiB3aXRob3V0IGFueSBub3RpZmljYXRpb24uCj4gCj4gV2VsbCBhcyBsb25nIGFz IGFsbCB0aGUgb3RoZXIgY2xlYW51cCBwYXRocyBjYWxsIGRpcmVjdGx5IGludG8KPiBfX3Vuc2No ZWR1bGVfdHhxKCksIHRoYXQgc2hvdWxkIHJlbW92ZSBzdGF0aW9ucyBmcm9tIHRoZSBzY2hlZHVs ZXIgd2hlbgo+IHRoZXkgZGlzY29ubmVjdCBldGMuClllcywgdGhlIGRpc2Nvbm5lY3Qgc2NlbmFy aW8gaXMgYSBiYWQgZXhhbXBsZS4gTXkgY29uY2VybiBpcywgc2F5LCB3ZSAKaGF2ZSAxMCBzdGF0 aW9ucyBhbmQgb25seSBvbmUgb2YgdGhlbSBpcyBhc3NpZ25lZCBhIHZlcnkgc21hbGwgd2VpZ2h0 IApjb21wYXJlZCB3aXRoIHRoYXQgb2Ygb3RoZXJzLiBTdXBwb3NlLCBhZnRlciBpdHMgY2hhbmNl IG9mIFR4LCBpdCBpcyAKbW9zdCBsaWtlbHkgdG8gYmUgcGxhY2VkIGluIHRoZSByaWdodG1vc3Qo c3RpbGwgaGFzIHNvbWUgcGFja2V0cyBpbiB0aGUgCnR4cSkgYW5kIG5vIG1vcmUgaW5jb21pbmcg ZGF0YSBmb3IgaXQuIFRoZSByZW1haW5pbmcgcGFja2V0cyBpbiB0eHEgd2lsbCAKYmUgZHJvcHBl ZCBkdWUgdG8gdGltZW91dCBhbGdvIGluIGNvZGVsKGNvcnJlY3QgbWUgaWYgSSBhbSB3cm9uZykg YnV0IAp0aGlzIGVtcHR5IHR4cSB3aWxsIHN0YXkgb24gdGhlIHJidHJlZSB1bnRpbCBvdGhlciB0 eHFzIGdldCBkcmFpbmVkIG9yIApnbG9iYWwgdnQgY2F0Y2ggdXAgd2l0aCBpdHMgdnQuIFRoZSBz dGF5aW5nIHRpbWUgY291bGQgYmUgbG9uZyBpZiB3ZWlnaHQgCmlzIGV4dHJlbWVseSBzbWFsbC4g VGhlbiBkbyB3ZSBuZWVkIHRpbWVyIHRvIGNoZWNrIG9yIGFueSBvdGhlciBiZXR0ZXIgCnNvbHV0 aW9uPwoKPiAKPiBXZSBvbmx5IG5lZWQgdG8gZGVmZXIgcmVtb3ZhbCBpbnNpZGUgYSBzaW5nbGUg InNjaGVkdWxpbmcgcm91bmQiIChpLmUuLAo+IGJldHdlZW4gYSBwYWlyIG9mIGllZWU4MDIxMV90 eHFfc2NoZWR1bGVfc3RhcnQvZW5kLiBTbyBpZiB3ZSBqdXN0IHdhbGsKPiB0aGUgcmVtb3ZlIGxp c3QgaW4gc2NoZWR1bGVfZW5kKCkgd2Ugc2hvdWxkIGJlIGVub3VnaCwgbm8/Cj4gCj4gSG1tLCBv ciBtYXliZSBhIHNpbXBsZXIgd2F5IHRvIGZpeCB0aGUgb3JpZ2luYWwgaXNzdWUgaXMganVzdCB0 byBoYXZlCj4gdW5zY2hlZHVsZV90eHEoKSB1cGRhdGUgdGhlIHNjaGVkdWxlX3BvcygpIHBvaW50 ZXI/Cj4gCj4gSS5lLiwgdW5zY2hlZHVsZV90eHEgY2hlY2tzIGlmIHRoZSB0eHEgYmVpbmcgcmVt b3ZlZCBpcyBjdXJyZW50bHkgYmVpbmcKPiBwb2ludGVkIHRvIGJ5IHNjaGVkdWxlX3Bvc1thY10s IGFuZCBpZiBpdCBpcywgaXQgdXBkYXRlcyBzY2hlZHVsZV9wb3MgCj4gdG8KPiBiZSB0aGUgcmJf bmV4dCBvZiB0aGUgY3VycmVudCB2YWx1ZT8KQWN0dWFsbHksIGlmIHNjaGVkdWxlX3BvcyBpcyB1 cGRhdGVkIHRvIHJiX25leHQgb2YgdGhlIGN1cnJlbnQgdmFsdWUsIAp0aGVuIGluIHRoZSBuZXh0 X3R4cSgpIHdoZXJlIHdlIGFyZSBnb2luZyB0byB1c2UgcmJfbmV4dCBhZ2FpbiBhbmQgCmZpbmFs bHkgcGljayB0aGUgbmV4dCBub2RlIG9mIHRoZSBub2RlIHdlIHJlYWxseSB3YW50LiBJcyBpdCBm aW5lIHRvIAp1cGRhdGUgc2NoZWR1bGVfcG9zIHRvIE5VTEw/Cj4gCj4gLVRva2UKCi0tIApZaWJv CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphdGgxMGsg bWFpbGluZyBsaXN0CmF0aDEwa0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vYXRoMTBrCg==