Return-Path: MIME-Version: 1.0 In-Reply-To: <1288009280-5149-4-git-send-email-ville.tervo@nokia.com> References: <1288009280-5149-1-git-send-email-ville.tervo@nokia.com> <1288009280-5149-4-git-send-email-ville.tervo@nokia.com> Date: Wed, 10 Nov 2010 14:53:02 -0200 Message-ID: Subject: Re: [PATCH 3/6] Bluetooth: Use LE buffers for LE traffic From: Claudio Takahasi To: Ville Tervo Cc: linux-bluetooth@vger.kernel.org Content-Type: text/plain; charset=UTF-8 Sender: linux-bluetooth-owner@vger.kernel.org List-ID: SGkgVmlsbGUsCgpPbiBNb24sIE9jdCAyNSwgMjAxMCBhdCAxMDoyMSBBTSwgVmlsbGUgVGVydm8g PHZpbGxlLnRlcnZvQG5va2lhLmNvbT4gd3JvdGU6Cj4gQkx1ZXRvb3RoIGNoaXBzIG1heSBoYXZl IHNlcGFyYXRlIGJ1ZmZlcnMgZm9yCj4gTEUgdHJhZmZpYy4gVGhpcyBwYXRjaCBhZGQgc3VwcG9y dCB0byB1c2UgTEUKPiBidWZmZXJzIHByb3ZpZGVkIGJ5IHRoZSBjaGlwLgo+Cj4gU2lnbmVkLW9m Zi1ieTogVmlsbGUgVGVydm8gPHZpbGxlLnRlcnZvQG5va2lhLmNvbT4KPiAtLS0KPiDCoGluY2x1 ZGUvbmV0L2JsdWV0b290aC9oY2kuaCDCoCDCoCDCoHwgwqAgwqAxICsKPiDCoGluY2x1ZGUvbmV0 L2JsdWV0b290aC9oY2lfY29yZS5oIHwgwqAgwqA1ICsrKwo+IMKgbmV0L2JsdWV0b290aC9oY2lf Y29ubi5jIMKgIMKgIMKgIMKgIHwgwqAgwqA1ICsrKwo+IMKgbmV0L2JsdWV0b290aC9oY2lfY29y ZS5jIMKgIMKgIMKgIMKgIHwgwqAgNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystLQo+IMKgbmV0L2JsdWV0b290aC9oY2lfZXZlbnQuYyDCoCDCoCDCoCDCoHwgwqAgNDAgKysr KysrKysrKysrKysrKysrKy0KPiDCoDUgZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyks IDYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hj aS5oIGIvaW5jbHVkZS9uZXQvYmx1ZXRvb3RoL2hjaS5oCj4gaW5kZXggMDIwNTViOS4uMjEwMzcz MSAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpLmgKPiArKysgYi9pbmNs dWRlL25ldC9ibHVldG9vdGgvaGNpLmgKPiBAQCAtMTg5LDYgKzE4OSw3IEBAIGVudW0gewo+Cj4g wqAjZGVmaW5lIExNUF9FVjQgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDAxCj4gwqAjZGVmaW5l IExNUF9FVjUgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAweDAyCj4gKyNkZWZpbmUgTE1QX0xFIMKg IMKgIMKgIMKgIDB4NDAKPgo+IMKgI2RlZmluZSBMTVBfU05JRkZfU1VCUiAweDAyCj4gwqAjZGVm aW5lIExNUF9FRFJfRVNDT18yTSDCoCDCoCDCoCDCoDB4MjAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmggYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpX2Nv cmUuaAo+IGluZGV4IDJiN2Y5NGEuLmUyZDg1N2EgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9uZXQv Ymx1ZXRvb3RoL2hjaV9jb3JlLmgKPiArKysgYi9pbmNsdWRlL25ldC9ibHVldG9vdGgvaGNpX2Nv cmUuaAo+IEBAIC0xMDMsMTUgKzEwMywxOSBAQCBzdHJ1Y3QgaGNpX2RldiB7Cj4gwqAgwqAgwqAg wqBhdG9taWNfdCDCoCDCoCDCoCDCoGNtZF9jbnQ7Cj4gwqAgwqAgwqAgwqB1bnNpZ25lZCBpbnQg wqAgwqBhY2xfY250Owo+IMKgIMKgIMKgIMKgdW5zaWduZWQgaW50IMKgIMKgc2NvX2NudDsKPiAr IMKgIMKgIMKgIHVuc2lnbmVkIGludCDCoCDCoGxlX2NudDsKPgo+IMKgIMKgIMKgIMKgdW5zaWdu ZWQgaW50IMKgIMKgYWNsX210dTsKPiDCoCDCoCDCoCDCoHVuc2lnbmVkIGludCDCoCDCoHNjb19t dHU7Cj4gKyDCoCDCoCDCoCB1bnNpZ25lZCBpbnQgwqAgwqBsZV9tdHU7Cj4gwqAgwqAgwqAgwqB1 bnNpZ25lZCBpbnQgwqAgwqBhY2xfcGt0czsKPiDCoCDCoCDCoCDCoHVuc2lnbmVkIGludCDCoCDC oHNjb19wa3RzOwo+ICsgwqAgwqAgwqAgdW5zaWduZWQgaW50IMKgIMKgbGVfcGt0czsKPgo+IMKg IMKgIMKgIMKgdW5zaWduZWQgbG9uZyDCoCBjbWRfbGFzdF90eDsKPiDCoCDCoCDCoCDCoHVuc2ln bmVkIGxvbmcgwqAgYWNsX2xhc3RfdHg7Cj4gwqAgwqAgwqAgwqB1bnNpZ25lZCBsb25nIMKgIHNj b19sYXN0X3R4Owo+ICsgwqAgwqAgwqAgdW5zaWduZWQgbG9uZyDCoCBsZV9sYXN0X3R4Owo+Cj4g wqAgwqAgwqAgwqBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqd29ya3F1ZXVlOwo+Cj4gQEAgLTQ3 Myw2ICs0NzcsNyBAQCB2b2lkIGhjaV9jb25uX2RlbF9zeXNmcyhzdHJ1Y3QgaGNpX2Nvbm4gKmNv bm4pOwo+IMKgI2RlZmluZSBsbXBfc25pZmZzdWJyX2NhcGFibGUoZGV2KSAoKGRldiktPmZlYXR1 cmVzWzVdICYgTE1QX1NOSUZGX1NVQlIpCj4gwqAjZGVmaW5lIGxtcF9lc2NvX2NhcGFibGUoZGV2 KSDCoCDCoCDCoCgoZGV2KS0+ZmVhdHVyZXNbM10gJiBMTVBfRVNDTykKPiDCoCNkZWZpbmUgbG1w X3NzcF9jYXBhYmxlKGRldikgwqAgwqAgwqAgKChkZXYpLT5mZWF0dXJlc1s2XSAmIExNUF9TSU1Q TEVfUEFJUikKPiArI2RlZmluZSBsbXBfbGVfY2FwYWJsZShkZXYpIMKgIMKgIMKgIMKgKChkZXYp LT5mZWF0dXJlc1s0XSAmIExNUF9MRSkKPgo+IMKgLyogLS0tLS0gSENJIHByb3RvY29scyAtLS0t LSAqLwo+IMKgc3RydWN0IGhjaV9wcm90byB7Cj4gZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgv aGNpX2Nvbm4uYyBiL25ldC9ibHVldG9vdGgvaGNpX2Nvbm4uYwo+IGluZGV4IDA5NDRjMGMuLmRk YzJlNWUgMTAwNjQ0Cj4gLS0tIGEvbmV0L2JsdWV0b290aC9oY2lfY29ubi5jCj4gKysrIGIvbmV0 L2JsdWV0b290aC9oY2lfY29ubi5jCj4gQEAgLTMyNCw2ICszMjQsMTEgQEAgaW50IGhjaV9jb25u X2RlbChzdHJ1Y3QgaGNpX2Nvbm4gKmNvbm4pCj4KPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoC8q IFVuYWNrZWQgZnJhbWVzICovCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBoZGV2LT5hY2xfY250 ICs9IGNvbm4tPnNlbnQ7Cj4gKyDCoCDCoCDCoCB9IGVsc2UgaWYgKGNvbm4tPnR5cGUgPT0gTEVf TElOSykgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKGhkZXYtPmxlX3BrdHMpCj4gKyDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZGV2LT5sZV9jbnQgKz0gY29ubi0+c2Vu dDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVsc2UKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIGhkZXYtPmFjbF9jbnQgKz0gY29ubi0+c2VudDsKPiDCoCDCoCDCoCDCoH0g ZWxzZSB7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBzdHJ1Y3QgaGNpX2Nvbm4gKmFjbCA9IGNv bm4tPmxpbms7Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoYWNsKSB7Cj4gZGlmZiAtLWdp dCBhL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYyBiL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYwo+ IGluZGV4IGJjMmEwNTIuLjQ1Yzc4YzIgMTAwNjQ0Cj4gLS0tIGEvbmV0L2JsdWV0b290aC9oY2lf Y29yZS5jCj4gKysrIGIvbmV0L2JsdWV0b290aC9oY2lfY29yZS5jCj4gQEAgLTI1NCw2ICsyNTQs MTQgQEAgc3RhdGljIHZvaWQgaGNpX2luaXRfcmVxKHN0cnVjdCBoY2lfZGV2ICpoZGV2LCB1bnNp Z25lZCBsb25nIG9wdCkKPiDCoCDCoCDCoCDCoGhjaV9zZW5kX2NtZChoZGV2LCBIQ0lfT1BfV1JJ VEVfQ0FfVElNRU9VVCwgMiwgJnBhcmFtKTsKPiDCoH0KPgo+ICtzdGF0aWMgdm9pZCBoY2lfbGVf aW5pdF9yZXEoc3RydWN0IGhjaV9kZXYgKmhkZXYsIHVuc2lnbmVkIGxvbmcgb3B0KQo+ICt7Cj4g KyDCoCDCoCDCoCBCVF9EQkcoIiVzIiwgaGRldi0+bmFtZSk7Cj4gKwo+ICsgwqAgwqAgwqAgLyog UmVhZCBMRSBidWZmZXIgc2l6ZSAqLwo+ICsgwqAgwqAgwqAgaGNpX3NlbmRfY21kKGhkZXYsIEhD SV9PUF9MRV9SRUFEX0JVRkZFUl9TSVpFLCAwLCBOVUxMKTsKPiArfQo+ICsKPiDCoHN0YXRpYyB2 b2lkIGhjaV9zY2FuX3JlcShzdHJ1Y3QgaGNpX2RldiAqaGRldiwgdW5zaWduZWQgbG9uZyBvcHQp Cj4gwqB7Cj4gwqAgwqAgwqAgwqBfX3U4IHNjYW4gPSBvcHQ7Cj4gQEAgLTUwOSw2ICs1MTcsMTAg QEAgaW50IGhjaV9kZXZfb3BlbihfX3UxNiBkZXYpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBy ZXQgPSBfX2hjaV9yZXF1ZXN0KGhkZXYsIGhjaV9pbml0X3JlcSwgMCwKPiDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoG1zZWNzX3RvX2pp ZmZpZXMoSENJX0lOSVRfVElNRU9VVCkpOwo+Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAo bG1wX2xlX2NhcGFibGUoaGRldikpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCByZXQgPSBfX2hjaV9yZXF1ZXN0KGhkZXYsIGhjaV9sZV9pbml0X3JlcSwgMCwKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIG1zZWNz X3RvX2ppZmZpZXMoSENJX0lOSVRfVElNRU9VVCkpOwo+ICsKPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoGNsZWFyX2JpdChIQ0lfSU5JVCwgJmhkZXYtPmZsYWdzKTsKPiDCoCDCoCDCoCDCoH0KPgo+ IEBAIC02NDUsNyArNjU3LDcgQEAgaW50IGhjaV9kZXZfcmVzZXQoX191MTYgZGV2KQo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgaGRldi0+Zmx1c2goaGRldik7Cj4KPiDCoCDCoCDCoCDCoGF0b21p Y19zZXQoJmhkZXYtPmNtZF9jbnQsIDEpOwo+IC0gwqAgwqAgwqAgaGRldi0+YWNsX2NudCA9IDA7 IGhkZXYtPnNjb19jbnQgPSAwOwo+ICsgwqAgwqAgwqAgaGRldi0+YWNsX2NudCA9IDA7IGhkZXYt PnNjb19jbnQgPSAwOyBoZGV2LT5sZV9jbnQgPSAwOwo+Cj4gwqAgwqAgwqAgwqBpZiAoIXRlc3Rf Yml0KEhDSV9SQVcsICZoZGV2LT5mbGFncykpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqByZXQg PSBfX2hjaV9yZXF1ZXN0KGhkZXYsIGhjaV9yZXNldF9yZXEsIDAsCj4gQEAgLTE0NTYsOCArMTQ2 OCwyNSBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBoY2lfY29ubiAqaGNpX2xvd19zZW50KHN0cnVj dCBoY2lfZGV2ICpoZGV2LCBfX3U4IHR5cGUsIGludAo+IMKgIMKgIMKgIMKgfQo+Cj4gwqAgwqAg wqAgwqBpZiAoY29ubikgewo+IC0gwqAgwqAgwqAgwqAgwqAgwqAgwqAgaW50IGNudCA9ICh0eXBl ID09IEFDTF9MSU5LID8gaGRldi0+YWNsX2NudCA6IGhkZXYtPnNjb19jbnQpOwo+IC0gwqAgwqAg wqAgwqAgwqAgwqAgwqAgaW50IHEgPSBjbnQgLyBudW07Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDC oCBpbnQgY250LCBxOwo+ICsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHN3aXRjaCAoY29ubi0+ dHlwZSkgewo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY2FzZSBBQ0xfTElOSzoKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNudCA9IGhkZXYtPmFjbF9jbnQ7Cj4gKyDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKgIMKgIMKgIMKgIMKg IMKgIGNhc2UgU0NPX0xJTks6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjYXNlIEVTQ09fTElO SzoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGNudCA9IGhkZXYtPnNjb19j bnQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGNhc2UgTEVfTElOSzoKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIGNudCA9IGhkZXYtPmxlX210dSA/IGhkZXYtPmxlX2NudCA6IGhkZXYtPmFjbF9j bnQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVhazsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGRlZmF1bHQ6Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBjbnQgPSAwOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgQlRfRVJS KCJVbmtub3duIGxpbmsgdHlwZSIpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgfQo+ICsKPiAr IMKgIMKgIMKgIMKgIMKgIMKgIMKgIHEgPSBjbnQgLyBudW07Cj4gwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAqcXVvdGUgPSBxID8gcSA6IDE7Cj4gwqAgwqAgwqAgwqB9IGVsc2UKPiDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCpxdW90ZSA9IDA7Cj4gQEAgLTE1NTYsNiArMTU4NSw0MCBAQCBzdGF0aWMg aW5saW5lIHZvaWQgaGNpX3NjaGVkX2VzY28oc3RydWN0IGhjaV9kZXYgKmhkZXYpCj4gwqAgwqAg wqAgwqB9Cj4gwqB9Cj4KPiArc3RhdGljIGlubGluZSB2b2lkIGhjaV9zY2hlZF9sZShzdHJ1Y3Qg aGNpX2RldiAqaGRldikKPiArewo+ICsgwqAgwqAgwqAgc3RydWN0IGhjaV9jb25uICpjb25uOwo+ ICsgwqAgwqAgwqAgc3RydWN0IHNrX2J1ZmYgKnNrYjsKPiArIMKgIMKgIMKgIGludCBxdW90ZSwg Y250Owo+ICsKPiArIMKgIMKgIMKgIEJUX0RCRygiJXMiLCBoZGV2LT5uYW1lKTsKPiArCj4gKyDC oCDCoCDCoCBpZiAoIXRlc3RfYml0KEhDSV9SQVcsICZoZGV2LT5mbGFncykpIHsKPiArIMKgIMKg IMKgIMKgIMKgIMKgIMKgIC8qIEFDTCB0eCB0aW1lb3V0IG11c3QgYmUgbG9uZ2VyIHRoYW4gbWF4 aW11bQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIGxpbmsgc3VwZXJ2aXNpb24gdGltZW91 dCAoNDAuOSBzZWNvbmRzKSAqLwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKCFoZGV2LT5s ZV9jbnQgJiYKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHRpbWVfYWZ0ZXIoamlmZmll cywgaGRldi0+bGVfbGFzdF90eCArIEhaICogNDUpKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgaGNpX2FjbF90eF90byhoZGV2KTsKPiArIMKgIMKgIMKgIH0KCkl0IHNlZW1z IHRoYXQgdGhlIEFDTCB0eCB0aW1lb3V0IGlzIGNhdXNpbmcgc29tZSBwcm9ibGVtczogQlIvRURS IGFuZApMRSBjb25uZWN0aW9ucyBhcmUgbm90IHdvcmtpbmcgcHJvcGVybHkgb24gbWFjYm9va3Mh IERvbid0IGFzayBtZSB3aHkKb24gbWFjYm9va3Mgb25seSEgQnV0IEkgZG91YmxlIGNoZWNrZWQu IEkgdGVzdGVkIHlvdXIgYnJhbmNoIGFuZCBhbHNvCmJsdWV0b290aC1uZXh0ICsgTEUgcGF0Y2hl cyBhbmQgYm90aCBhcmUgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWQuIEkKZGlkbid0IGhhdmUgdGlt ZSB0byBpbnZlc3RpZ2F0ZSBpdCwgZG8geW91IGhhdmUgYW55IGNsdWU/CgpGb3IgQlIvRURSIEkg YW0gcmVjZWl2aW5nICJraWxsaW5nIHN0YWxsZWQgQUNMIGNvbm5lY3Rpb24iIG1lc3NhZ2VzCmZv ciBhbGwgY29ubmVjdGlvbnMuCgoKUmVnYXJkcywKQ2xhdWRpbwoKCj4gKwo+ICsgwqAgwqAgwqAg Y250ID0gaGRldi0+bGVfcGt0cyA/IGhkZXYtPmxlX2NudCA6IGhkZXYtPmFjbF9jbnQ7Cj4gKyDC oCDCoCDCoCB3aGlsZSAoY250ICYmIChjb25uID0gaGNpX2xvd19zZW50KGhkZXYsIExFX0xJTkss ICZxdW90ZSkpKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB3aGlsZSAocXVvdGUtLSAmJiAo c2tiID0gc2tiX2RlcXVldWUoJmNvbm4tPmRhdGFfcSkpKSB7Cj4gKyDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCBCVF9EQkcoInNrYiAlcCBsZW4gJWQiLCBza2IsIHNrYi0+bGVuKTsK PiArCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoY2lfc2VuZF9mcmFtZShz a2IpOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaGRldi0+bGVfbGFzdF90 eCA9IGppZmZpZXM7Cj4gKwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgY250 LS07Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBjb25uLT5zZW50Kys7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCB9Cj4gKyDCoCDCoCDCoCBpZiAo aGRldi0+bGVfcGt0cykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhkZXYtPmxlX2NudCA9IGNu dDsKPiArIMKgIMKgIMKgIGVsc2UKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhkZXYtPmFjbF9j bnQgPSBjbnQ7Cj4gK30KPiArCj4gwqBzdGF0aWMgdm9pZCBoY2lfdHhfdGFzayh1bnNpZ25lZCBs b25nIGFyZykKPiDCoHsKPiDCoCDCoCDCoCDCoHN0cnVjdCBoY2lfZGV2ICpoZGV2ID0gKHN0cnVj dCBoY2lfZGV2ICopIGFyZzsKPiBAQCAtMTU2Myw3ICsxNjI2LDggQEAgc3RhdGljIHZvaWQgaGNp X3R4X3Rhc2sodW5zaWduZWQgbG9uZyBhcmcpCj4KPiDCoCDCoCDCoCDCoHJlYWRfbG9jaygmaGNp X3Rhc2tfbG9jayk7Cj4KPiAtIMKgIMKgIMKgIEJUX0RCRygiJXMgYWNsICVkIHNjbyAlZCIsIGhk ZXYtPm5hbWUsIGhkZXYtPmFjbF9jbnQsIGhkZXYtPnNjb19jbnQpOwo+ICsgwqAgwqAgwqAgQlRf REJHKCIlcyBhY2wgJWQgc2NvICVkIGxlICVkIiwgaGRldi0+bmFtZSwgaGRldi0+YWNsX2NudCwK PiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhkZXYtPnNjb19jbnQsIGhkZXYtPmxlX2NudCk7Cj4K PiDCoCDCoCDCoCDCoC8qIFNjaGVkdWxlIHF1ZXVlcyBhbmQgc2VuZCBzdHVmZiB0byBIQ0kgZHJp dmVyICovCj4KPiBAQCAtMTU3Myw2ICsxNjM3LDggQEAgc3RhdGljIHZvaWQgaGNpX3R4X3Rhc2so dW5zaWduZWQgbG9uZyBhcmcpCj4KPiDCoCDCoCDCoCDCoGhjaV9zY2hlZF9lc2NvKGhkZXYpOwo+ Cj4gKyDCoCDCoCDCoCBoY2lfc2NoZWRfbGUoaGRldik7Cj4gKwo+IMKgIMKgIMKgIMKgLyogU2Vu ZCBuZXh0IHF1ZXVlZCByYXcgKHVua25vd24gdHlwZSkgcGFja2V0ICovCj4gwqAgwqAgwqAgwqB3 aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZoZGV2LT5yYXdfcSkpKQo+IMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgaGNpX3NlbmRfZnJhbWUoc2tiKTsKPiBkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290 aC9oY2lfZXZlbnQuYyBiL25ldC9ibHVldG9vdGgvaGNpX2V2ZW50LmMKPiBpbmRleCA5MmM4NjIx Li5kYTIzNTAyIDEwMDY0NAo+IC0tLSBhL25ldC9ibHVldG9vdGgvaGNpX2V2ZW50LmMKPiArKysg Yi9uZXQvYmx1ZXRvb3RoL2hjaV9ldmVudC5jCj4gQEAgLTUzOSw2ICs1MzksMjYgQEAgc3RhdGlj IHZvaWQgaGNpX2NjX3JlYWRfYmRfYWRkcihzdHJ1Y3QgaGNpX2RldiAqaGRldiwgc3RydWN0IHNr X2J1ZmYgKnNrYikKPiDCoCDCoCDCoCDCoGhjaV9yZXFfY29tcGxldGUoaGRldiwgcnAtPnN0YXR1 cyk7Cj4gwqB9Cj4KPiArc3RhdGljIHZvaWQgaGNpX2NjX2xlX3JlYWRfYnVmZmVyX3NpemUoc3Ry dWN0IGhjaV9kZXYgKmhkZXYsCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoHN0cnVjdCBza19idWZmICpza2IpCj4gK3sKPiArIMKgIMKg IMKgIHN0cnVjdCBoY2lfcnBfbGVfcmVhZF9idWZmZXJfc2l6ZSAqcnAgPSAodm9pZCAqKSBza2It PmRhdGE7Cj4gKwo+ICsgwqAgwqAgwqAgQlRfREJHKCIlcyBzdGF0dXMgMHgleCIsIGhkZXYtPm5h bWUsIHJwLT5zdGF0dXMpOwo+ICsKPiArIMKgIMKgIMKgIGlmIChycC0+c3RhdHVzKQo+ICsgwqAg wqAgwqAgwqAgwqAgwqAgwqAgcmV0dXJuOwo+ICsKPiArIMKgIMKgIMKgIGhkZXYtPmxlX210dSA9 IF9fbGUxNl90b19jcHUocnAtPmxlX210dSk7Cj4gKyDCoCDCoCDCoCBoZGV2LT5sZV9wa3RzID0g cnAtPmxlX21heF9wa3Q7Cj4gKwo+ICsgwqAgwqAgwqAgaGRldi0+bGVfY250ID0gaGRldi0+bGVf cGt0czsKPiArCj4gKyDCoCDCoCDCoCBCVF9EQkcoIiVzIGxlIG10dSAlZDolZCIsIGhkZXYtPm5h bWUsIGhkZXYtPmxlX210dSwgaGRldi0+bGVfcGt0cyk7Cj4gKwo+ICsgwqAgwqAgwqAgaGNpX3Jl cV9jb21wbGV0ZShoZGV2LCBycC0+c3RhdHVzKTsKPiArfQo+ICsKPiDCoHN0YXRpYyBpbmxpbmUg dm9pZCBoY2lfY3NfaW5xdWlyeShzdHJ1Y3QgaGNpX2RldiAqaGRldiwgX191OCBzdGF0dXMpCj4g wqB7Cj4gwqAgwqAgwqAgwqBCVF9EQkcoIiVzIHN0YXR1cyAweCV4IiwgaGRldi0+bmFtZSwgc3Rh dHVzKTsKPiBAQCAtMTM1Myw2ICsxMzczLDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBoY2lfY21k X2NvbXBsZXRlX2V2dChzdHJ1Y3QgaGNpX2RldiAqaGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrCj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBoY2lfY2NfcmVhZF9iZF9hZGRyKGhkZXYsIHNrYik7Cj4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqBicmVhazsKPgo+ICsgwqAgwqAgwqAgY2FzZSBIQ0lfT1Bf TEVfUkVBRF9CVUZGRVJfU0laRToKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhjaV9jY19sZV9y ZWFkX2J1ZmZlcl9zaXplKGhkZXYsIHNrYik7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCBicmVh azsKPiArCj4gwqAgwqAgwqAgwqBkZWZhdWx0Ogo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgQlRf REJHKCIlcyBvcGNvZGUgMHgleCIsIGhkZXYtPm5hbWUsIG9wY29kZSk7Cj4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqBicmVhazsKPiBAQCAtMTQ5MCwxMCArMTUxNCwyMiBAQCBzdGF0aWMgaW5saW5l IHZvaWQgaGNpX251bV9jb21wX3BrdHNfZXZ0KHN0cnVjdCBoY2lfZGV2ICpoZGV2LCBzdHJ1Y3Qg c2tfYnVmZiAqcwo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgY29ubi0+c2Vu dCAtPSBjb3VudDsKPgo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGNv bm4tPnR5cGUgPT0gQUNMX0xJTkspIHsKPiAtIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIGlmICgoaGRldi0+YWNsX2NudCArPSBjb3VudCkgPiBoZGV2LT5hY2xf cGt0cykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhk ZXYtPmFjbF9jbnQgKz0gY291bnQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCBpZiAoaGRldi0+YWNsX2NudCA+IGhkZXYtPmFjbF9wa3RzKQo+IMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgaGRl di0+YWNsX2NudCA9IGhkZXYtPmFjbF9wa3RzOwo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgfSBlbHNlIGlmIChjb25uLT50eXBlID09IExFX0xJTkspIHsKPiArIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChoZGV2LT5sZV9wa3RzKSB7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCBoZGV2LT5sZV9jbnQgKz0gY291bnQ7Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBpZiAoaGRldi0+bGVfY250ID4gaGRldi0+ bGVfcGt0cykKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGhkZXYtPmxlX2NudCA9IGhkZXYtPmxlX3BrdHM7Cj4g KyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9IGVsc2Ugewo+ ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgaGRldi0+YWNsX2NudCArPSBjb3VudDsKPiArIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChoZGV2LT5hY2xfY250ID4gaGRldi0+ YWNsX3BrdHMpCj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBoZGV2LT5hY2xfY250ID0gaGRldi0+YWNsX3BrdHM7 Cj4gKyDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCB9Cj4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9IGVsc2Ugewo+IC0gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgaWYgKChoZGV2LT5zY29fY250ICs9IGNv dW50KSA+IGhkZXYtPnNjb19wa3RzKQo+ICsgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgaGRldi0+c2NvX2NudCArPSBjb3VudDsKPiArIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGlmIChoZGV2LT5zY29fY250ID4gaGRldi0+ c2NvX3BrdHMpCj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqBoZGV2LT5zY29fY250ID0gaGRldi0+c2NvX3BrdHM7Cj4gwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB9Cj4g LS0KPiAxLjcuMQo+Cg==