From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from wolverine01.qualcomm.com ([199.106.114.254]:5488 "EHLO wolverine01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751892AbcLOMBU (ORCPT ); Thu, 15 Dec 2016 07:01:20 -0500 From: "Thiagarajan, Vasanthakumar" To: Johannes Berg CC: "linux-wireless@vger.kernel.org" Subject: Re: [RFC 2/3] mac80211: Implement data xmit for 802.11 encap offload Date: Thu, 15 Dec 2016 12:01:12 +0000 Message-ID: <58528607.7090101@qti.qualcomm.com> (sfid-20161215_130124_548534_5DD88BEE) References: <1481781608-5181-1-git-send-email-vthiagar@qti.qualcomm.com> <1481781608-5181-3-git-send-email-vthiagar@qti.qualcomm.com> <1481794142.31776.5.camel@sipsolutions.net> In-Reply-To: <1481794142.31776.5.camel@sipsolutions.net> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Sender: linux-wireless-owner@vger.kernel.org List-ID: T24gVGh1cnNkYXkgMTUgRGVjZW1iZXIgMjAxNiAwMjo1OSBQTSwgSm9oYW5uZXMgQmVyZyB3cm90 ZToNCj4NCj4+IFRoZXJlIGlzIGEgZmllbGQsIG5vXzgwMjExX2VuY2FwLCBhZGRlZCB0byBpZWVl ODAyMTFfdHhfaW5mbzpjb250cm9sDQo+PiB0byBtYXJrIGlmIHRoZSA4MDIuMTEgZW5jYXBzdWxh dGlvbiBpcyBvZmZsb2FkZWQgdG8gZHJpdmVyLg0KPj4gVGhlcmUgaXMgYWxzbyBhIG5ldyBjYWxs YmFjayBmb3IgdHggY29tcGxldGlvbiBzdGF0dXMgaW5kaWNhdGlvbg0KPj4gdG8gaGFuZGxlIGRh dGEgZnJhbWVzIHVzaW5nIDgwMi4xMSBlbmNhcCBvZmZsb2FkLg0KPg0KPiBJJ20gbm90IHN1cmUg SSBzZWUgdGhlIG5lZWQgZm9yIHRoaXM/IE1heWJlIEknbGwgZmluZCBvdXQgaW4gdGhpcyBwYXRj aA0KPiA6KQ0KPg0KDQpJIHRoaW5rIHdlIG1heSBub3QgbmVlZCB0aGlzIGlmIHdlIG1ha2UgdGhl IGRlc2lnbiBpbiBzdWNoIGEgd2F5IHRoYXQgYWxsDQp0aGUgaW50ZXJmYWNlcyB3aWxsIHVzZSB1 bmlmb3JtIGVuY2FwL2RlY2FwIG1vZGUgZm9yIHRoZSBkYXRhIHBhY2tldC4NCg0KPj4gKwkJCS8q IFhYWDogVGhpcyBmcmFtZSBpcyBub3QgZW5jYXB0dWxhdGVkIHdpdGgNCj4+IDgwMi4xMQ0KPj4g KwkJCSAqIGhlYWRlci4gU2hvdWxkIHRoaXMgYmUgYWRkZWQgdG8NCj4+ICVJRUVFODAyMTFfVFhf Q1RSTF8qDQo+PiArCQkJICogZmxhZ3M/Lg0KPj4gKwkJCSAqLw0KPj4gKwkJCWJvb2wgbm9fODAy MTFfZW5jYXA7DQo+PiArCQkJLyogMyBieXRlcyBmcmVlICovDQo+PiAgIAkJfSBjb250cm9sOw0K Pg0KPiBwcm9iYWJseSAtIGp1c3QgdG8gcHJlc2VydmUgbW9yZSBzcGFjZS4NCg0KQ29ycmVjdC4N Cg0KPg0KPj4gKyAqIEBJRUVFODAyMTFfQ09ORl9DSEFOR0VfODAyMTFfSERSX09GRkw6IE9mZmxv YWQgY29uZmlndXJhdGlvbg0KPj4gKyAqCWltcGxlbWVudGluZyA4MDIuMTEgZW5jYXAvZGVjYXAg Zm9yIGRhdGEgZnJhbWVzIGNoYW5nZWQuDQo+PiAgICAqLw0KPj4gICBlbnVtIGllZWU4MDIxMV9j b25mX2NoYW5nZWQgew0KPj4gICAJSUVFRTgwMjExX0NPTkZfQ0hBTkdFX1NNUFMJCT0gQklUKDEp LA0KPj4gQEAgLTEyNzksNiArMTI4Niw3IEBAIGVudW0gaWVlZTgwMjExX2NvbmZfY2hhbmdlZCB7 DQo+PiAgIAlJRUVFODAyMTFfQ09ORl9DSEFOR0VfQ0hBTk5FTAkJPSBCSVQoNiksDQo+PiAgIAlJ RUVFODAyMTFfQ09ORl9DSEFOR0VfUkVUUllfTElNSVRTCT0gQklUKDcpLA0KPj4gICAJSUVFRTgw MjExX0NPTkZfQ0hBTkdFX0lETEUJCT0gQklUKDgpLA0KPj4gKwlJRUVFODAyMTFfQ09ORl9DSEFO R0VfODAyMTFfSERSX09GRkwJPSBCSVQoOSksDQo+PiAgIH07DQo+DQo+IEdpdmVuIHRoZSByZXF1 aXJlbWVudHMgKFBOIGNoZWNrLCBldGMuKSBJJ20gbm90IHN1cmUgaG93IHRoaXMgY2FuDQo+IGNo YW5nZSBkeW5hbWljYWxseT8NCg0KSSBhZ3JlZS4gRHluYW1pYyBzd2l0Y2ggcGFydCBpcyBidWdn eSwgd2UgY2FuIHN0YXJ0IHdpdGggbm90IGFsbG93aW5nDQppbnRlcmZhY2VzIHJlc3VsdGluZyBp biBkeW5hbWljIHN3aXRjaC4NCg0KPg0KPj4gKyAqIEBlbmNhcF9kZWNhcF84MDIxMV9vZmZsb2Fk ZWQ6IFdoZXRoZXIgODAyLjExIGhlYWRlciBlbmNhcC9kZWNhcA0KPj4gb2ZmbG9hZA0KPj4gKyAq CWlzIGVuYWJsZWQNCj4+ICAgICovDQo+PiAgIHN0cnVjdCBpZWVlODAyMTFfY29uZiB7DQo+PiAg IAl1MzIgZmxhZ3M7DQo+PiBAQCAtMTM0Niw2ICsxMzU3LDcgQEAgc3RydWN0IGllZWU4MDIxMV9j b25mIHsNCj4+ICAgCXN0cnVjdCBjZmc4MDIxMV9jaGFuX2RlZiBjaGFuZGVmOw0KPj4gICAJYm9v bCByYWRhcl9lbmFibGVkOw0KPj4gICAJZW51bSBpZWVlODAyMTFfc21wc19tb2RlIHNtcHNfbW9k ZTsNCj4+ICsJYm9vbCBlbmNhcF9kZWNhcF84MDIxMV9vZmZsb2FkZWQ7DQo+DQo+IFBsZWFzZSBk b24ndCBhZGQgYW55dGhpbmcgaGVyZSB0aGF0J3MgaW50ZXJmYWNlIHNwZWNpZmljLg0KDQpPaywg dGhpcyBpcyBtYWlubHkgaHcgY29uZmlndXJhdGlvbiBvZiBlbmNhcC9kZWNhcCBtb2RlLCBub3QN CnZpZiBzcGVjaWZpYyBwZXIgc2F5LiBBbnkgcG9pbnRlcnMgd2hlcmUgdGhpcyBzaG91bGQgYmVs b25nIHRvPw0KDQo+DQo+PiAtLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmMNCj4+ICsrKyBiL25ldC9t YWM4MDIxMS9jZmcuYw0KPj4gQEAgLTEwNyw2ICsxMDcsMTAgQEAgc3RhdGljIGludCBpZWVlODAy MTFfY2hhbmdlX2lmYWNlKHN0cnVjdCB3aXBoeQ0KPj4gKndpcGh5LA0KPj4gICAJCX0NCj4+ICAg CX0NCj4+DQo+PiArCWllZWU4MDIxMV9pZl9jaGVja184MDIxMV9oZHJfb2ZmbChzZGF0YSwNCj4+ ICsJCQkJCSAgcGFyYW1zID8gcGFyYW1zLT51c2VfNGFkZHINCj4+IDogZmFsc2UsDQo+PiArCQkJ CQkgIHRydWUpOw0KPj4gKw0KPj4gICAJcmV0dXJuIDA7DQo+PiAgIH0NCj4NCj4gV291bGRuJ3Qg aXQgYmUgYmV0dGVyIHRvIHNpbXBseSBwcm9oaWJpdCBjaGFuZ2luZyB0aGlzIHdoaWxlIHRoZQ0K PiBpbnRlcmZhY2UgaXMgdXAsIGFuZCByZS1pbml0IGl0IGxhdGVyIHdoZW4gaXQgZ29lcyB1cD8N Cg0KSSBhZ3JlZS4NCg0KPg0KPj4gKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgNCj4+ IEBAIC0xMzczLDYgKzEzNzMsOCBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHsNCj4+ICAgCS8q IFRETFMgY2hhbm5lbCBzd2l0Y2ggKi8NCj4+ICAgCXN0cnVjdCB3b3JrX3N0cnVjdCB0ZGxzX2No c3dfd29yazsNCj4+ICAgCXN0cnVjdCBza19idWZmX2hlYWQgc2tiX3F1ZXVlX3RkbHNfY2hzdzsN Cj4+ICsNCj4+ICsJYm9vbCBkYXRhXzgwMjExX2hkcl9vZmZsb2FkZWQ7DQo+DQo+IEFnYWluLCBk b24ndCBwdXQgaW50ZXJmYWNlIHNwZWNpZmljIHRoaW5ncyBpbnRvIGRldmljZSBzdHJ1Y3R1cmVz Lg0KDQpPaywgdGhpcyBpcyBhbHNvIGN1cnJlbnQgaHcgY29uZmlndXJhdGlvbiBvZiBlbmNhcC9k ZWNhcCBtb2RlLCBub3QgdmlmDQpzcGVjaWZpYy4NCg0KPg0KPj4gK2ludCBpZWVlODAyMTFfbG9v a3VwX3JhX3N0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwNCj4+ICsJCQkg ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwNCj4+ICsJCQkgICAgc3RydWN0IHN0YV9pbmZvICoqc3Rh X291dCk7DQo+DQo+IFJldHVybiB0aGUgc3RhX2luZm8gcG9pbnRlciwgYW5kIEVSUl9QVFIoKSBp ZiBuZWVkZWQuDQoNCkNvcnJlY3QsIHN0YV9vdXQgaXMgY2hlY2tlZCBmb3IgRVJSX1BUUigpIGFz IHdlbGwgYmVmb3JlIHVzaW5nIGl0Lg0KDQo+DQo+PiArKysgYi9uZXQvbWFjODAyMTEvaWZhY2Uu Yw0KPj4gQEAgLTY5OCw2ICs2OTgsMTEgQEAgaW50IGllZWU4MDIxMV9kb19vcGVuKHN0cnVjdCB3 aXJlbGVzc19kZXYgKndkZXYsDQo+PiBib29sIGNvbWluZ191cCkNCj4+ICAgCQlyY3VfYXNzaWdu X3BvaW50ZXIobG9jYWwtPnAycF9zZGF0YSwgc2RhdGEpOw0KPj4gICAJfQ0KPj4NCj4+ICsJaWYg KGxvY2FsLT5vcGVuX2NvdW50ID09IDAgJiYgbG9jYWwtDQo+Pj4gZGF0YV84MDIxMV9oZHJfb2Zm bG9hZGVkKSB7DQo+PiArCQlsb2NhbC0+aHcuY29uZi5lbmNhcF9kZWNhcF84MDIxMV9vZmZsb2Fk ZWQgPSB0cnVlOw0KPj4gKwkJaHdfcmVjb25mX2ZsYWdzIHw9DQo+PiBJRUVFODAyMTFfQ09ORl9D SEFOR0VfODAyMTFfSERSX09GRkw7DQo+PiArCX0NCj4NCj4gSSBkb24ndCBzZWUgaG93IHRoaXMg aGVscHMgYW55dGhpbmcsIEkgdGhpbmsgeW91IHNob3VsZCByZW1vdmUgaXQuDQoNClllYWgsIEkg dGhpbmsgdGhpcyB3YXMgYWRkZWQgZm9yIGR5bmFtaWMgc3dpdGNoLg0KDQo+DQo+PiArdm9pZCBp ZWVlODAyMTFfaWZfY29uZmlnXzgwMjExX2hkcl9vZmZsKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwN Cj4+ICpsb2NhbCwNCj4+ICsJCQkJCWJvb2wgZW5hYmxlXzgwMjExX2hkcl9vZmZsKQ0KPj4gK3sN Cj4+ICsJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGE7DQo+PiArCXVuc2lnbmVk IGxvbmcgZmxhZ3M7DQo+PiArCWludCBuX2FjcyA9IElFRUU4MDIxMV9OVU1fQUNTOw0KPj4gKwlp bnQgYWM7DQo+PiArDQo+PiArCUFTU0VSVF9SVE5MKCk7DQo+PiArDQo+PiArCWlmICghaWVlZTgw MjExX2h3X2NoZWNrKCZsb2NhbC0+aHcsDQo+PiBTVVBQT1JUU184MDIxMV9FTkNBUF9ERUNBUCkg fHwNCj4+ICsJICAgICEoaWVlZTgwMjExX2h3X2NoZWNrKCZsb2NhbC0+aHcsIEhBU19SQVRFX0NP TlRST0wpKSkNCj4+ICsJCXJldHVybjsNCj4+ICsNCj4+ICsJaWYgKGxvY2FsLT5ody53aXBoeS0+ ZnJhZ190aHJlc2hvbGQgIT0gKHUzMiktMSAmJg0KPj4gKwkgICAgIWxvY2FsLT5vcHMtPnNldF9m cmFnX3RocmVzaG9sZCkNCj4+ICsJCXJldHVybjsNCj4+ICsNCj4+ICsJbXV0ZXhfbG9jaygmbG9j YWwtPmlmbGlzdF9tdHgpOw0KPj4gKw0KPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHNkYXRhLCAm bG9jYWwtPmludGVyZmFjZXMsIGxpc3QpIHsNCj4+ICsJCWlmICghc2RhdGEtPmRldikNCj4+ICsJ CQljb250aW51ZTsNCj4+ICsNCj4+ICsJCW5ldGlmX3R4X3N0b3BfYWxsX3F1ZXVlcyhzZGF0YS0+ ZGV2KTsNCj4+ICsNCj4+ICsJCWlmIChlbmFibGVfODAyMTFfaGRyX29mZmwpDQo+PiArCQkJc2Rh dGEtPmRldi0+bmV0ZGV2X29wcyA9DQo+PiAmaWVlZTgwMjExX2RhdGFpZl84MDIzX29wczsNCj4+ ICsJCWVsc2UNCj4+ICsJCQlzZGF0YS0+ZGV2LT5uZXRkZXZfb3BzID0NCj4+ICZpZWVlODAyMTFf ZGF0YWlmX29wczsNCj4+ICsJfQ0KPj4gKw0KPj4gKwltdXRleF91bmxvY2soJmxvY2FsLT5pZmxp c3RfbXR4KTsNCj4+ICsNCj4+ICsJbG9jYWwtPmRhdGFfODAyMTFfaGRyX29mZmxvYWRlZCA9IGVu YWJsZV84MDIxMV9oZHJfb2ZmbDsNCj4+ICsNCj4+ICsJaWYgKGxvY2FsLT5zdGFydGVkKSB7DQo+ PiArCQlpZiAoZW5hYmxlXzgwMjExX2hkcl9vZmZsKQ0KPj4gKwkJCWxvY2FsLT5ody5jb25mLmVu Y2FwX2RlY2FwXzgwMjExX29mZmxvYWRlZCA9DQo+PiB0cnVlOw0KPj4gKwkJZWxzZQ0KPj4gKwkJ CWxvY2FsLT5ody5jb25mLmVuY2FwX2RlY2FwXzgwMjExX29mZmxvYWRlZCA9DQo+PiBmYWxzZTsN Cj4+ICsJCWllZWU4MDIxMV9od19jb25maWcobG9jYWwsDQo+PiArCQkJCSAgICBJRUVFODAyMTFf Q09ORl9DSEFOR0VfODAyMTFfSERSXw0KPj4gT0ZGTCk7DQo+PiArCX0NCj4+ICsNCj4+ICsJbXV0 ZXhfbG9jaygmbG9jYWwtPmlmbGlzdF9tdHgpOw0KPj4gKw0KPj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHNkYXRhLCAmbG9jYWwtPmludGVyZmFjZXMsIGxpc3QpIHsNCj4+ICsJCWlmICghc2RhdGEt PmRldikNCj4+ICsJCQljb250aW51ZTsNCj4+ICsNCj4+ICsJCWlmIChsb2NhbC0+aHcucXVldWVz IDwgSUVFRTgwMjExX05VTV9BQ1MpDQo+PiArCQkJbl9hY3MgPSAxOw0KPj4gKw0KPj4gKwkJc3Bp bl9sb2NrX2lycXNhdmUoJmxvY2FsLT5xdWV1ZV9zdG9wX3JlYXNvbl9sb2NrLA0KPj4gZmxhZ3Mp Ow0KPj4gKwkJaWYgKHNkYXRhLT52aWYuY2FiX3F1ZXVlID09IElFRUU4MDIxMV9JTlZBTF9IV19R VUVVRQ0KPj4gfHwNCj4+ICsJCSAgICAobG9jYWwtPnF1ZXVlX3N0b3BfcmVhc29uc1tzZGF0YS0+ dmlmLmNhYl9xdWV1ZV0NCj4+ID09IDAgJiYNCj4+ICsJCSAgICAgc2tiX3F1ZXVlX2VtcHR5KCZs b2NhbC0+cGVuZGluZ1tzZGF0YS0NCj4+PiB2aWYuY2FiX3F1ZXVlXSkpKSB7DQo+PiArCQkJZm9y IChhYyA9IDA7IGFjIDwgbl9hY3M7IGFjKyspIHsNCj4+ICsJCQkJaW50IGFjX3F1ZXVlID0gc2Rh dGEtDQo+Pj4gdmlmLmh3X3F1ZXVlW2FjXTsNCj4+ICsNCj4+ICsJCQkJaWYgKGxvY2FsLQ0KPj4+ IHF1ZXVlX3N0b3BfcmVhc29uc1thY19xdWV1ZV0gPT0gMCAmJg0KPj4gKwkJCQkgICAgc2tiX3F1 ZXVlX2VtcHR5KCZsb2NhbC0NCj4+PiBwZW5kaW5nW2FjX3F1ZXVlXSkpDQo+PiArCQkJCQluZXRp Zl9zdGFydF9zdWJxdWV1ZShzZGF0YS0NCj4+PiBkZXYsIGFjKTsNCj4+ICsJCQl9DQo+PiArCQl9 DQo+PiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZsb2NhbC0NCj4+PiBxdWV1ZV9zdG9wX3Jl YXNvbl9sb2NrLCBmbGFncyk7DQo+PiArCX0NCj4+ICsNCj4+ICsJbXV0ZXhfdW5sb2NrKCZsb2Nh bC0+aWZsaXN0X210eCk7DQo+PiArfQ0KPg0KPiBJIHJlYWxseSB3b3VsZCBwcmVmZXIgd2UgY291 bGQgc2ltcGx5IGF2b2lkIGRvaW5nIHRoZXNlIG1hbmlwdWxhdGlvbnMNCj4gd2hpbGUgdGhlIGlu dGVyZmFjZSBpcyBVUCBhbmQgY2FuIGhhdmUgZGF0YSBxdWV1ZWQuDQoNCkFncmVlZC4NCg0KPg0K Pj4gKysrIGIvbmV0L21hYzgwMjExL2tleS5jDQo+PiBAQCAtMjA4LDEzICsyMDgsMjUgQEAgc3Rh dGljIGludCBpZWVlODAyMTFfa2V5X2VuYWJsZV9od19hY2NlbChzdHJ1Y3QNCj4+IGllZWU4MDIx MV9rZXkgKmtleSkNCj4+ICAgCWNhc2UgV0xBTl9DSVBIRVJfU1VJVEVfR0NNUF8yNTY6DQo+PiAg IAkJLyogYWxsIG9mIHRoZXNlIHdlIGNhbiBkbyBpbiBzb2Z0d2FyZSAtIGlmIGRyaXZlcg0KPj4g Y2FuICovDQo+PiAgIAkJaWYgKHJldCA9PSAxKQ0KPj4gLQkJCXJldHVybiAwOw0KPj4gKwkJCWdv dG8gY2hlY2tfODAyM190eHJ4Ow0KPj4gICAJCWlmIChpZWVlODAyMTFfaHdfY2hlY2soJmtleS0+ bG9jYWwtPmh3LA0KPj4gU1dfQ1JZUFRPX0NPTlRST0wpKQ0KPj4gICAJCQlyZXR1cm4gLUVJTlZB TDsNCj4+IC0JCXJldHVybiAwOw0KPj4gKwkJZ290byBjaGVja184MDIzX3R4cng7DQo+PiAgIAlk ZWZhdWx0Og0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4gICAJfQ0KPj4gKw0KPj4gK2NoZWNr XzgwMjNfdHhyeDoNCj4+ICsJLyogV2hlbiBzdyBjcnlwdG8gaXMgZW5hYmxlZCBtYWtlIHN1cmUg ZGF0YSB0eC9yeCBoYXBwZW5zDQo+PiArCSAqIGluIDgwMi4xMSBmb3JtYXQuDQo+PiArCSAqLw0K Pj4gKwlpZiAoa2V5LT5sb2NhbC0+ZGF0YV84MDIxMV9oZHJfb2ZmbG9hZGVkKSB7DQo+PiArCQly dG5sX2xvY2soKTsNCj4+ICsJCWllZWU4MDIxMV9pZl9jb25maWdfODAyMTFfaGRyX29mZmwoa2V5 LT5sb2NhbCwNCj4+IGZhbHNlKTsNCj4+ICsJCXJ0bmxfdW5sb2NrKCk7DQo+PiArCX0NCj4+ICsN Cj4+ICsJcmV0dXJuIDA7DQo+PiAgIH0NCj4NCj4gV2h5IG5vdCBqdXN0IHJlZnVzZSB0aGUga2V5 IGluc3RlYWQ/IEl0IGFsc28gc2VlbXMgd3JvbmcgdG8gZG8gYW55dGhpbmcNCj4gd2l0aCBsb2Nh bC0+IGhlcmUsIGl0IHNob3VsZCBiZSBwZXIgaW50ZXJmYWNlLg0KDQpDb3JyZWN0LiBIZXJlIGFs c28gZW5jYXAvZGVjYXAgdHlwZSBzd2l0Y2ggaGFwcGVucywgdGhpcyBjYW4gYmUgYXZvaWRlZCBq dXN0DQpyZWZ1c2luZyB0aGUga2V5Lg0KDQo+DQo+PiArKysgYi9uZXQvbWFjODAyMTEvc3RhdHVz LmMNCj4+IEBAIC01MDYsMTIgKzUwNiwxNCBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVwb3J0 X3VzZWRfc2tiKHN0cnVjdA0KPj4gaWVlZTgwMjExX2xvY2FsICpsb2NhbCwNCj4+ICAgCQkJCSAg ICAgIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wNCj4+IGRyb3BwZWQpDQo+PiAgIHsNCj4+ICAg CXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsN Cj4+IC0Jc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciA9ICh2b2lkICopc2tiLT5kYXRhOw0KPj4g KwlzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyOw0KPj4gICAJYm9vbCBhY2tlZCA9IGluZm8tPmZs YWdzICYgSUVFRTgwMjExX1RYX1NUQVRfQUNLOw0KPj4NCj4+ICAgCWlmIChkcm9wcGVkKQ0KPj4g ICAJCWFja2VkID0gZmFsc2U7DQo+Pg0KPj4gKwloZHIgPSAodm9pZCAqKXNrYi0+ZGF0YTsNCj4N Cj4gVGhhdCBjaGFuZ2UgbWFrZSBubyBzZW5zZS4NCg0KWWVzLCBJIGZvcmdvdCB0byByZW1vdmUg dGhpcy4NCg0KPg0KPj4gICAJaWYgKGluZm8tPmZsYWdzICYgSUVFRTgwMjExX1RYX0lOVEZMX01M TUVfQ09OTl9UWCkgew0KPj4gICAJCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRh Ow0KPj4NCj4+IEBAIC05NDUsNiArOTQ3LDg1IEBAIHZvaWQgaWVlZTgwMjExX3R4X3N0YXR1cyhz dHJ1Y3QgaWVlZTgwMjExX2h3DQo+PiAqaHcsIHN0cnVjdCBza19idWZmICpza2IpDQo+PiAgIH0N Cj4+ICAgRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfdHhfc3RhdHVzKTsNCj4+DQo+PiArdm9pZCBp ZWVlODAyMTFfdHhfc3RhdHVzXzgwMjMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsDQo+PiArCQkJ ICAgICAgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwNCj4+ICsJCQkgICAgICBzdHJ1Y3Qgc2tf YnVmZiAqc2tiKQ0KPg0KPiBJIHRoaW5rIHRoaXMgY291bGQgc2hhcmUgc29tZSBjb2RlIHdpdGgg dGhlIDgwMi4xMSB2ZXJzaW9uPw0KPg0KPj4gKwkvKiBYWFg6IEFkZCBhIGdlbmVyaWMgaGVscGVy IGZvciB0aGlzICovDQo+PiArCWlmIChzZGF0YS0+dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVf QVAgfHwNCj4+ICsJICAgIHNkYXRhLT52aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUF9WTEFO IHx8DQo+PiArCSAgICBzZGF0YS0+dmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQURIT0MpDQo+ PiArCQlldGhlcl9hZGRyX2NvcHkocmFfYWRkciwgZWhkci0+aF9kZXN0KTsNCj4NCj4gbml0LCBi dXQgdGhlICJBIiBpbiAiUkEiIGFscmVhZHkgbWVhbnMgYWRkcmVzcyAuLi4gOikNCg0KU3VyZSwg dGhhbmtzLg0KDQo+DQo+IFlvdSBhbHNvIGRvbid0IG5lZWQgdG8gY29weSBpdCAtIGp1c3Qga2Vl cGluZyBhIHBvaW50ZXIgc2hvdWxkIGJlIGZpbmU/DQoNClJpZ2h0Lg0KDQo+DQo+PiArCS8qIFRP RE86IEhhbmRsZSBmcmFtZXMgcmVxdWlyaW5nIHdpZmkgdHggc3RhdHVzIHRvIGJlDQo+PiBub3Rp ZmllZCAqLw0KPj4gKwlpZiAoc2tiLT5zayAmJiBza2Jfc2hpbmZvKHNrYiktPnR4X2ZsYWdzICYN Cj4+IFNLQlRYX1dJRklfU1RBVFVTKQ0KPj4gKwkJZ290byBvdXRfZnJlZTsNCj4NCj4gU3VyZWx5 IHlvdSBzaG91bGRuJ3QgZnJlZSB0aGVtLCBldmVuIGlmIHlvdSBkb24ndCBoYW5kbGUgdGhlIHN0 YXR1cz8hDQoNCkNvcnJlY3QsIEkgdGhpbmsgd2UgY2FuIHN0aWxsIHBhc3MgdGhlIGZyYW1lIHRv IGdvIHRocm91Z2ggZXZlbiBpZiB0eCBzdGF0dXMNCmlzIG5vdCBoYW5kbGVkLg0KDQpWYXNhbnRo DQo=