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.90_1 #2 (Red Hat Linux)) id 1f6Tgg-0003iG-Fq for ath10k@lists.infradead.org; Thu, 12 Apr 2018 04:18:20 +0000 MIME-Version: 1.0 Date: Thu, 12 Apr 2018 12:18:06 +0800 From: Wen Gong Subject: Re: [PATCH] ath10k: Convert wow pattern from 802.3 to 802.11 In-Reply-To: <20180411231304.GA121875@rodete-desktop-imager.corp.google.com> References: <1522379899-31969-1-git-send-email-wgong@codeaurora.org> <20180411231304.GA121875@rodete-desktop-imager.corp.google.com> Message-ID: <063daa7db1040609ee9f0b3f7e38b02d@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: Brian Norris Cc: linux-wireless@vger.kernel.org, ath10k@lists.infradead.org SGksCgpJIHdpbGwgbW92ZSB0aGUgY29udmVydCBncmFwaCBmcm9tIGNvbW1lbnRzIHRvIGNvZGUg YW5kIHNlbmQgUGF0Y2ggVjIuCkFuZCBuZXcgZ3JhcGggbGlrZSB0aGlzOgovKioKKyAqIENvbnZl cnQgYSA4MDIuMyBmb3JtYXQgdG8gYSA4MDIuMTEgZm9ybWF0LgorICogwqDCoMKgwqDCoMKgwqDC oCstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSsKKyAq IDgwMi4zOiDCoHxkZXN0IG1hYyg2Qil8c3JjIG1hYyg2Qil8dHlwZSgyQil8IMKgwqDCoMKgYm9k eS4uLiDCoMKgwqB8CisgKiDCoMKgwqDCoMKgwqDCoMKgKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tKworICogwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfF9fIMKgwqDCoMKgwqDCoMKgwqB8X19fX19fXyDCoMKgwqB8X19fX19fX19fX19fIMKg fF9fX19fX19fCisgKiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHwgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg fCDCoMKgwqDCoMKgwqDCoMKgwqB8CisgKiAKwqDCoMKgwqDCoMKgwqDCoCstLSstLS0tLS0tLS0t LS0rLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rCisgKiA4MDIu MTE6IHw0QnxkZXN0IG1hYyg2Qil8IDZCIHxzcmMgbWFjKDZCKXwgwqA4QiDCoHx0eXBlKDJCKXwg wqBib2R5Li4uIArCoHwKKyAqIArCoMKgwqDCoMKgwqDCoMKgKy0tKy0tLS0tLS0tLS0tLSstLS0t Ky0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSsKKyAqLworc3RhdGljIHZv aWQgYXRoMTBrX3dvd19jb252ZXJ0XzgwMjNfdG9fODAyMTEKKyDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoChzdHJ1Y3QgY2ZnODAyMTFfcGt0X3BhdHRlcm4gKm5ldywKKyDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBjZmc4MDIx MV9wa3RfcGF0dGVybiAqb2xkKQoKCkFuZCB0aGUgNDQ0IGJ5dGVzIG9uIHN0YWNrIHdpbGwgcmVt YWluIHNpbmNlIHRoZSBjb21tZW50cyBpczogIndlIGNhbiBnbyAKd2l0aCB0aGlzIHVudGlsIHNv bWVib2R5IHJ1bnMgaW50byBhIHJlYWwgcHJvYmxlbSIKCk9uIDIwMTgtMDQtMTIgMDc6MTMsIEJy aWFuIE5vcnJpcyB3cm90ZToKPiBIaSwKPiAKPiBPbiBGcmksIE1hciAzMCwgMjAxOCBhdCAxMTox ODoxOUFNICswODAwLCBXZW4gR29uZyB3cm90ZToKPj4gV2hlbiB0cnlpbmcgdG8gc2V0IHdvdyB3 YWtldXAgcGF0dGVybnMgaXQgZmFpbHMgd2l0aCB0aGlzIGNvbW1hbmQ6Cj4+IAo+PiBpdyBwaHl4 eCB3b3dsYW4gZW5hYmxlIHBhdHRlcm5zIG9mZnNldCB4eCsgSVAgYWRkcmVzcyB4eC54eC54eC54 eAo+PiAKPj4gVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSB3b3cgcGF0dGVybiBmcm9tIHVwcGVyIGxh eWVyIGlzIGluIDgwMi4zIGZvcm1hdAo+PiBmb3IgdGhpcyBjYXNlLCBpdCBuZWVkIHRvIGNvbnZl cnQgaXQgdG8gODAyLjExIGZvcm1hdC4gVGhlIGlucHV0Cj4+IG9mZnNldCBwYXJhbWV0ZXIgaXMg dXNlZCBmb3IgODAyLjMsIGJ1dCB0aGUgYWN0dWFsIG9mZnNldCBmaXJtd2FyZQo+PiBuZWVkIGRl cGVuZHMgb24gcnhfZGVjYXBfbW9kZSwgc28gdGhhdCBpdCBuZWVkcyB0byBiZSByZWNhbGN1bGF0 ZWQuCj4+IFBhdHRlcm4gb2YgODAyLjMgcGFja2V0IGlzIG5vdCBzYW1lIHdpdGggODAyLjExIHBh Y2tldC4gSWYgdGhlCj4+IHJ4X2RlY2FwX21vZGUgaXMgQVRIMTBLX0hXX1RYUlhfTkFUSVZFX1dJ RkksIHRoZW4gZmlybXdhcmUgd2lsbAo+PiByZWNlaXZlIGRhdGEgcGFja2V0IHdpdGggODAyLjEx IGZvcm1hdCBmcm9tIGhhcmR3YXJlLgo+PiAKPj4gQ29udmVydCBncmFwaDoKPj4gLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPj4gODAyLjMgIHxkZXN0IG1hYyg2Qil8c3JjIG1hYyg2Qil8dHlwZSgyQil8ICAgICBi b2R5Li4uICAgIHwKPj4gICAgICAgICAgICAgIHxfXyAgICAgICAgIHxfX19fX19fICAgIHxfX19f X19fX19fX19fICB8X19fX19fX19fX18KPj4gICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg ICAgfCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8Cj4+IDgwMi4xMSB8NEJ8ZGVzdCBt YWMoNkIpfCA2QiB8c3JjIG1hYyg2Qil8ICA4QiAgfHR5cGUoMkIpfCAgYm9keS4uLiAgfAo+PiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+IAo+IEl0IGZlZWxzIGxpa2UgdGhpcyBjb3VsZCBnbyBpbnRvIHRoZSBj b2RlIGNvbW1lbnRzPyBPciBhdCBsZWFzdCBzb21lCj4gc2hvcnQgdmVyc2lvbiBvZiBpdC4gKEJ1 dCBoZXksIHRleHQgaXMgY2hlYXAsIGFuZCB3aG8gZG9lc24ndCBsb3ZlIAo+IEFTQ0lJCj4gYXJ0 PykKPiAKPj4gCj4+IFRlc3RlZCB3aXRoIFFDQTYxNzQgaHczLjAgd2l0aCBmaXJtd2FyZQo+PiBX TEFOLlJNLjQuNC4xLTAwMDk5LVFDQVJNU1dQWi0xLCBidXQgdGhpcyB3aWxsIGFsc28gYWZmZWN0 IFFDQTkzNzcuCj4+IFRoaXMgaGFzIGFsd2F5cyBmYWlsZWQsIHNvIGl0J3Mgbm90IGEgcmVncmVz c2lvbiB3aXRoIG5ldyBmaXJtd2FyZQo+PiByZWxlYXNlcy4KPj4gCj4+IFNpZ25lZC1vZmYtYnk6 IFdlbiBHb25nIDx3Z29uZ0Bjb2RlYXVyb3JhLm9yZz4KPj4gLS0tCj4+ICBkcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL3dtaS5oIHwgICA0ICsrCj4+ICBkcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTBrL3dvdy5jIHwgMTI4IAo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tCj4+ICAyIGZpbGVzIGNoYW5nZWQsIDEyNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQo+PiAKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsv d21pLmggCj4+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway93bWkuaAo+PiBpbmRl eCBjN2IzMGVkLi4zODlmOWM3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoMTBrL3dtaS5oCj4+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsv d21pLmgKPj4gQEAgLTY3MjQsNiArNjcyNCwxMCBAQCBzdHJ1Y3Qgd21pX3dvd19ldl9hcmcgewo+ PiAgI2RlZmluZSBXT1dfTUlOX1BBVFRFUk5fU0laRQkxCj4+ICAjZGVmaW5lIFdPV19NQVhfUEFU VEVSTl9TSVpFCTE0OAo+PiAgI2RlZmluZSBXT1dfTUFYX1BLVF9PRkZTRVQJMTI4Cj4+ICsjZGVm aW5lIFdPV19IRFJfTEVOCShzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIpICsgXAo+ PiArCXNpemVvZihzdHJ1Y3QgcmZjMTA0Ml9oZHIpKQo+PiArI2RlZmluZSBXT1dfTUFYX1JFRFVD RQkoV09XX0hEUl9MRU4gLSBzaXplb2Yoc3RydWN0IGV0aGhkcikgLSBcCj4+ICsJb2Zmc2V0b2Yo c3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIsIGFkZHIxKSkKPj4gCj4+ICBlbnVtIHdtaV90ZGxz X3N0YXRlIHsKPj4gIAlXTUlfVERMU19ESVNBQkxFLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDEway93b3cuYyAKPj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoMTBrL3dvdy5jCj4+IGluZGV4IGM0Y2JjY2IuLjliNTZhNDEgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvd293LmMKPj4gKysrIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDEway93b3cuYwo+PiBAQCAtMSw1ICsxLDYgQEAKPj4gIC8qCj4+ ICAgKiBDb3B5cmlnaHQgKGMpIDIwMTUtMjAxNyBRdWFsY29tbSBBdGhlcm9zLCBJbmMuCj4+ICsg KiBDb3B5cmlnaHQgKGMpIDIwMTgsIFRoZSBMaW51eCBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLgo+PiAgICoKPj4gICAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFu ZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgCj4+IGZvciBhbnkKPj4gICAqIHB1cnBvc2Ug d2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUg Cj4+IGFib3ZlCj4+IEBAIC03Niw2ICs3Nyw5OCBAQCBzdGF0aWMgaW50IGF0aDEwa193b3dfY2xl YW51cChzdHJ1Y3QgYXRoMTBrICphcikKPj4gIAlyZXR1cm4gMDsKPj4gIH0KPj4gCj4+ICtzdGF0 aWMgdm9pZCBhdGgxMGtfd293X2NvbnZlcnRfODAyM190b184MDIxMQo+PiArCQkJCQkoc3RydWN0 IGNmZzgwMjExX3BrdF9wYXR0ZXJuICpuZXcsCj4+ICsJCQkJCWNvbnN0IHN0cnVjdCBjZmc4MDIx MV9wa3RfcGF0dGVybiAqb2xkKQo+PiArewo+PiArCXU4IGhkcl84MDIzX3BhdHRlcm5bRVRIX0hM RU5dID0ge307Cj4+ICsJdTggaGRyXzgwMjNfYml0X21hc2tbRVRIX0hMRU5dID0ge307Cj4+ICsJ dTggaGRyXzgwMjExX3BhdHRlcm5bV09XX0hEUl9MRU5dID0ge307Cj4+ICsJdTggaGRyXzgwMjEx X2JpdF9tYXNrW1dPV19IRFJfTEVOXSA9IHt9Owo+PiArCj4+ICsJaW50IHRvdGFsX2xlbiA9IG9s ZC0+cGt0X29mZnNldCArIG9sZC0+cGF0dGVybl9sZW47Cj4+ICsJaW50IGhkcl84MDIxMV9lbmRf b2Zmc2V0Owo+PiArCj4+ICsJc3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKm5ld19oZHJfcGF0 dGVybiA9Cj4+ICsJCShzdHJ1Y3QgaWVlZTgwMjExX2hkcl8zYWRkciAqKWhkcl84MDIxMV9wYXR0 ZXJuOwo+PiArCXN0cnVjdCBpZWVlODAyMTFfaGRyXzNhZGRyICpuZXdfaGRyX21hc2sgPQo+PiAr CQkoc3RydWN0IGllZWU4MDIxMV9oZHJfM2FkZHIgKiloZHJfODAyMTFfYml0X21hc2s7Cj4+ICsJ c3RydWN0IGV0aGhkciAqb2xkX2hkcl9wYXR0ZXJuID0gKHN0cnVjdCBldGhoZHIgKiloZHJfODAy M19wYXR0ZXJuOwo+PiArCXN0cnVjdCBldGhoZHIgKm9sZF9oZHJfbWFzayA9IChzdHJ1Y3QgZXRo aGRyICopaGRyXzgwMjNfYml0X21hc2s7Cj4+ICsJaW50IGhkcl9sZW4gPSBzaXplb2YoKm5ld19o ZHJfcGF0dGVybik7Cj4+ICsKPj4gKwlzdHJ1Y3QgcmZjMTA0Ml9oZHIgKm5ld19yZmNfcGF0dGVy biA9Cj4+ICsJCShzdHJ1Y3QgcmZjMTA0Ml9oZHIgKikoaGRyXzgwMjExX3BhdHRlcm4gKyBoZHJf bGVuKTsKPj4gKwlzdHJ1Y3QgcmZjMTA0Ml9oZHIgKm5ld19yZmNfbWFzayA9Cj4+ICsJCShzdHJ1 Y3QgcmZjMTA0Ml9oZHIgKikoaGRyXzgwMjExX2JpdF9tYXNrICsgaGRyX2xlbik7Cj4+ICsJaW50 IHJmY19sZW4gPSBzaXplb2YoKm5ld19yZmNfcGF0dGVybik7Cj4+ICsKPj4gKwltZW1jcHkoaGRy XzgwMjNfcGF0dGVybiArIG9sZC0+cGt0X29mZnNldCwKPj4gKwkgICAgICAgb2xkLT5wYXR0ZXJu LCBFVEhfSExFTiAtIG9sZC0+cGt0X29mZnNldCk7Cj4+ICsJbWVtY3B5KGhkcl84MDIzX2JpdF9t YXNrICsgb2xkLT5wa3Rfb2Zmc2V0LAo+PiArCSAgICAgICBvbGQtPm1hc2ssIEVUSF9ITEVOIC0g b2xkLT5wa3Rfb2Zmc2V0KTsKPj4gKwo+PiArCS8qIENvcHkgZGVzdGluYXRpb24gYWRkcmVzcyAq Lwo+PiArCW1lbWNweShuZXdfaGRyX3BhdHRlcm4tPmFkZHIxLCBvbGRfaGRyX3BhdHRlcm4tPmhf ZGVzdCwgRVRIX0FMRU4pOwo+PiArCW1lbWNweShuZXdfaGRyX21hc2stPmFkZHIxLCBvbGRfaGRy X21hc2stPmhfZGVzdCwgRVRIX0FMRU4pOwo+PiArCj4+ICsJLyogQ29weSBzb3VyY2UgYWRkcmVz cyAqLwo+PiArCW1lbWNweShuZXdfaGRyX3BhdHRlcm4tPmFkZHIzLCBvbGRfaGRyX3BhdHRlcm4t Pmhfc291cmNlLCBFVEhfQUxFTik7Cj4+ICsJbWVtY3B5KG5ld19oZHJfbWFzay0+YWRkcjMsIG9s ZF9oZHJfbWFzay0+aF9zb3VyY2UsIEVUSF9BTEVOKTsKPj4gKwo+PiArCS8qIENvcHkgbG9naWMg bGluayB0eXBlICovCj4+ICsJbWVtY3B5KCZuZXdfcmZjX3BhdHRlcm4tPnNuYXBfdHlwZSwKPj4g KwkgICAgICAgJm9sZF9oZHJfcGF0dGVybi0+aF9wcm90bywKPj4gKwkgICAgICAgc2l6ZW9mKG9s ZF9oZHJfcGF0dGVybi0+aF9wcm90bykpOwo+PiArCW1lbWNweSgmbmV3X3JmY19tYXNrLT5zbmFw X3R5cGUsCj4+ICsJICAgICAgICZvbGRfaGRyX21hc2stPmhfcHJvdG8sCj4+ICsJICAgICAgIHNp emVvZihvbGRfaGRyX21hc2stPmhfcHJvdG8pKTsKPj4gKwo+PiArCS8qIENhY3VsYXRlIG5ldyBw a3Rfb2Zmc2V0ICovCj4+ICsJaWYgKG9sZC0+cGt0X29mZnNldCA8IEVUSF9BTEVOKQo+PiArCQlu ZXctPnBrdF9vZmZzZXQgPSBvbGQtPnBrdF9vZmZzZXQgKwo+PiArCQkJb2Zmc2V0b2Yoc3RydWN0 IGllZWU4MDIxMV9oZHJfM2FkZHIsIGFkZHIxKTsKPj4gKwllbHNlIGlmIChvbGQtPnBrdF9vZmZz ZXQgPCBvZmZzZXRvZihzdHJ1Y3QgZXRoaGRyLCBoX3Byb3RvKSkKPj4gKwkJbmV3LT5wa3Rfb2Zm c2V0ID0gb2xkLT5wa3Rfb2Zmc2V0ICsKPj4gKwkJCW9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFf aGRyXzNhZGRyLCBhZGRyMykgLQo+PiArCQkJb2Zmc2V0b2Yoc3RydWN0IGV0aGhkciwgaF9zb3Vy Y2UpOwo+PiArCWVsc2UKPj4gKwkJbmV3LT5wa3Rfb2Zmc2V0ID0gb2xkLT5wa3Rfb2Zmc2V0ICsg aGRyX2xlbiArIHJmY19sZW4gLSBFVEhfSExFTjsKPj4gKwo+PiArCS8qIENhY3VsYXRlIG5ldyBo ZHIgZW5kIG9mZnNldCAqLwo+PiArCWlmICh0b3RhbF9sZW4gPiBFVEhfSExFTikKPj4gKwkJaGRy XzgwMjExX2VuZF9vZmZzZXQgPSBoZHJfbGVuICsgcmZjX2xlbjsKPj4gKwllbHNlIGlmICh0b3Rh bF9sZW4gPiBvZmZzZXRvZihzdHJ1Y3QgZXRoaGRyLCBoX3Byb3RvKSkKPj4gKwkJaGRyXzgwMjEx X2VuZF9vZmZzZXQgPSBoZHJfbGVuICsgcmZjX2xlbiArIHRvdGFsX2xlbiAtIEVUSF9ITEVOOwo+ PiArCWVsc2UgaWYgKHRvdGFsX2xlbiA+IEVUSF9BTEVOKQo+PiArCQloZHJfODAyMTFfZW5kX29m ZnNldCA9IHRvdGFsX2xlbiAtIEVUSF9BTEVOICsKPj4gKwkJCW9mZnNldG9mKHN0cnVjdCBpZWVl ODAyMTFfaGRyXzNhZGRyLCBhZGRyMyk7Cj4+ICsJZWxzZQo+PiArCQloZHJfODAyMTFfZW5kX29m ZnNldCA9IHRvdGFsX2xlbiArCj4+ICsJCQlvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkcl8z YWRkciwgYWRkcjEpOwo+PiArCj4+ICsJbmV3LT5wYXR0ZXJuX2xlbiA9IGhkcl84MDIxMV9lbmRf b2Zmc2V0IC0gbmV3LT5wa3Rfb2Zmc2V0Owo+PiArCj4+ICsJbWVtY3B5KCh1OCAqKW5ldy0+cGF0 dGVybiwKPj4gKwkgICAgICAgaGRyXzgwMjExX3BhdHRlcm4gKyBuZXctPnBrdF9vZmZzZXQsCj4+ ICsJICAgICAgIG5ldy0+cGF0dGVybl9sZW4pOwo+PiArCW1lbWNweSgodTggKiluZXctPm1hc2ss Cj4+ICsJICAgICAgIGhkcl84MDIxMV9iaXRfbWFzayArIG5ldy0+cGt0X29mZnNldCwKPj4gKwkg ICAgICAgbmV3LT5wYXR0ZXJuX2xlbik7Cj4+ICsKPj4gKwlpZiAodG90YWxfbGVuID4gRVRIX0hM RU4pIHsKPj4gKwkJLyogQ29weSBmcmFtZSBib2R5ICovCj4+ICsJCW1lbWNweSgodTggKiluZXct PnBhdHRlcm4gKyBuZXctPnBhdHRlcm5fbGVuLAo+PiArCQkgICAgICAgKHZvaWQgKilvbGQtPnBh dHRlcm4gKyBFVEhfSExFTiAtIG9sZC0+cGt0X29mZnNldCwKPj4gKwkJICAgICAgIHRvdGFsX2xl biAtIEVUSF9ITEVOKTsKPj4gKwkJbWVtY3B5KCh1OCAqKW5ldy0+bWFzayArIG5ldy0+cGF0dGVy bl9sZW4sCj4+ICsJCSAgICAgICAodm9pZCAqKW9sZC0+bWFzayArIEVUSF9ITEVOIC0gb2xkLT5w a3Rfb2Zmc2V0LAo+PiArCQkgICAgICAgdG90YWxfbGVuIC0gRVRIX0hMRU4pOwo+PiArCj4+ICsJ CW5ldy0+cGF0dGVybl9sZW4gKz0gdG90YWxfbGVuIC0gRVRIX0hMRU47Cj4+ICsJfQo+PiArfQo+ PiArCj4+ICBzdGF0aWMgaW50IGF0aDEwa192aWZfd293X3NldF93YWtldXBzKHN0cnVjdCBhdGgx MGtfdmlmICphcnZpZiwKPj4gIAkJCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfd293bGFuICp3b3ds YW4pCj4+ICB7Cj4+IEBAIC0xMTYsMjIgKzIwOSwzOSBAQCBzdGF0aWMgaW50IGF0aDEwa192aWZf d293X3NldF93YWtldXBzKHN0cnVjdCAKPj4gYXRoMTBrX3ZpZiAqYXJ2aWYsCj4+IAo+PiAgCWZv ciAoaSA9IDA7IGkgPCB3b3dsYW4tPm5fcGF0dGVybnM7IGkrKykgewo+PiAgCQl1OCBiaXRtYXNr W1dPV19NQVhfUEFUVEVSTl9TSVpFXSA9IHt9Owo+PiArCQl1OCBhdGhfcGF0dGVybltXT1dfTUFY X1BBVFRFUk5fU0laRV0gPSB7fTsKPj4gKwkJdTggYXRoX2JpdG1hc2tbV09XX01BWF9QQVRURVJO X1NJWkVdID0ge307Cj4gCj4gU28gbm93IHdlJ3ZlIGdvdCAzICogMTQ4ID0gNDQ0IGJ5dGVzIG9u IHRoZSBzdGFjayBqdXN0IGZvciB0aGlzPyBTZWVtcwo+IGxpa2UgaXQncyBnZXR0aW5nIGEgbGl0 dGxlIGxhcmdlIGZvciBrZXJuZWwgY29kZSwgYnV0IG1heWJlIG5vdCB0b28gCj4gYmFkLgo+IEkg Z3Vlc3Mgd2UgY2FuIGdvIHdpdGggdGhpcyB1bnRpbCBzb21lYm9keSBydW5zIGludG8gYSByZWFs IHByb2JsZW0uLi4KPiAKPiBPdGhlcndpc2UsIHNlZW1zIHRvIHdvcmsgZm9yIG1lOgo+IAo+IFRl c3RlZC1ieTogQnJpYW4gTm9ycmlzIDxicmlhbm5vcnJpc0BjaHJvbWl1bS5vcmc+Cj4gUmV2aWV3 ZWQtYnk6IEJyaWFuIE5vcnJpcyA8YnJpYW5ub3JyaXNAY2hyb21pdW0ub3JnPgo+IAo+PiArCQlz dHJ1Y3QgY2ZnODAyMTFfcGt0X3BhdHRlcm4gbmV3X3BhdHRlcm4gPSB7fTsKPj4gKwkJc3RydWN0 IGNmZzgwMjExX3BrdF9wYXR0ZXJuIG9sZF9wYXR0ZXJuID0gcGF0dGVybnNbaV07Cj4+ICAJCWlu dCBqOwo+PiAtCj4+ICsJCW5ld19wYXR0ZXJuLnBhdHRlcm4gPSBhdGhfcGF0dGVybjsKPj4gKwkJ bmV3X3BhdHRlcm4ubWFzayA9IGF0aF9iaXRtYXNrOwo+PiAgCQlpZiAocGF0dGVybnNbaV0ucGF0 dGVybl9sZW4gPiBXT1dfTUFYX1BBVFRFUk5fU0laRSkKPj4gIAkJCWNvbnRpbnVlOwo+PiAtCj4+ ICAJCS8qIGNvbnZlcnQgYnl0ZW1hc2sgdG8gYml0bWFzayAqLwo+PiAgCQlmb3IgKGogPSAwOyBq IDwgcGF0dGVybnNbaV0ucGF0dGVybl9sZW47IGorKykKPj4gIAkJCWlmIChwYXR0ZXJuc1tpXS5t YXNrW2ogLyA4XSAmIEJJVChqICUgOCkpCj4+ICAJCQkJYml0bWFza1tqXSA9IDB4ZmY7Cj4+ICsJ CW9sZF9wYXR0ZXJuLm1hc2sgPSBiaXRtYXNrOwo+PiArCQluZXdfcGF0dGVybiA9IG9sZF9wYXR0 ZXJuOwo+PiArCj4+ICsJCWlmIChhci0+d21pLnJ4X2RlY2FwX21vZGUgPT0gQVRIMTBLX0hXX1RY UlhfTkFUSVZFX1dJRkkpIHsKPj4gKwkJCWlmIChwYXR0ZXJuc1tpXS5wa3Rfb2Zmc2V0IDwgRVRI X0hMRU4pCj4+ICsJCQkJYXRoMTBrX3dvd19jb252ZXJ0XzgwMjNfdG9fODAyMTEoJm5ld19wYXR0 ZXJuLAo+PiArCQkJCQkJCQkgJm9sZF9wYXR0ZXJuKTsKPj4gKwkJCWVsc2UKPj4gKwkJCQluZXdf cGF0dGVybi5wa3Rfb2Zmc2V0ICs9IFdPV19IRFJfTEVOIC0gRVRIX0hMRU47Cj4+ICsJCX0KPj4g Kwo+PiArCQlpZiAoV0FSTl9PTihuZXdfcGF0dGVybi5wYXR0ZXJuX2xlbiA+IFdPV19NQVhfUEFU VEVSTl9TSVpFKSkKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiAKPj4gIAkJcmV0ID0gYXRoMTBr X3dtaV93b3dfYWRkX3BhdHRlcm4oYXIsIGFydmlmLT52ZGV2X2lkLAo+PiAgCQkJCQkJIHBhdHRl cm5faWQsCj4+IC0JCQkJCQkgcGF0dGVybnNbaV0ucGF0dGVybiwKPj4gLQkJCQkJCSBiaXRtYXNr LAo+PiAtCQkJCQkJIHBhdHRlcm5zW2ldLnBhdHRlcm5fbGVuLAo+PiAtCQkJCQkJIHBhdHRlcm5z W2ldLnBrdF9vZmZzZXQpOwo+PiArCQkJCQkJIG5ld19wYXR0ZXJuLnBhdHRlcm4sCj4+ICsJCQkJ CQkgbmV3X3BhdHRlcm4ubWFzaywKPj4gKwkJCQkJCSBuZXdfcGF0dGVybi5wYXR0ZXJuX2xlbiwK Pj4gKwkJCQkJCSBuZXdfcGF0dGVybi5wa3Rfb2Zmc2V0KTsKPj4gIAkJaWYgKHJldCkgewo+PiAg CQkJYXRoMTBrX3dhcm4oYXIsICJmYWlsZWQgdG8gYWRkIHBhdHRlcm4gJWkgdG8gdmRldiAlaTog JWRcbiIsCj4+ICAJCQkJICAgIHBhdHRlcm5faWQsCj4+IEBAIC0zNDUsNiArNDU1LDEyIEBAIGlu dCBhdGgxMGtfd293X2luaXQoc3RydWN0IGF0aDEwayAqYXIpCj4+ICAJCXJldHVybiAtRUlOVkFM Owo+PiAKPj4gIAlhci0+d293Lndvd2xhbl9zdXBwb3J0ID0gYXRoMTBrX3dvd2xhbl9zdXBwb3J0 Owo+PiArCj4+ICsJaWYgKGFyLT53bWkucnhfZGVjYXBfbW9kZSA9PSBBVEgxMEtfSFdfVFhSWF9O QVRJVkVfV0lGSSkgewo+PiArCQlhci0+d293Lndvd2xhbl9zdXBwb3J0LnBhdHRlcm5fbWF4X2xl biAtPSBXT1dfTUFYX1JFRFVDRTsKPj4gKwkJYXItPndvdy53b3dsYW5fc3VwcG9ydC5tYXhfcGt0 X29mZnNldCAtPSBXT1dfTUFYX1JFRFVDRTsKPj4gKwl9Cj4+ICsKPj4gIAlhci0+d293Lndvd2xh bl9zdXBwb3J0Lm5fcGF0dGVybnMgPSBhci0+d293Lm1heF9udW1fcGF0dGVybnM7Cj4+ICAJYXIt Pmh3LT53aXBoeS0+d293bGFuID0gJmFyLT53b3cud293bGFuX3N1cHBvcnQ7Cj4+IAo+PiAtLQo+ PiAyLjcuNAo+PiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmF0aDEwayBtYWlsaW5nIGxpc3QKYXRoMTBrQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9hdGgxMGsK