From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-pz0-f171.google.com ([209.85.222.171]:38178 "EHLO mail-pz0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753266AbZFGVuw (ORCPT ); Sun, 7 Jun 2009 17:50:52 -0400 Received: by pzk1 with SMTP id 1so1832059pzk.33 for ; Sun, 07 Jun 2009 14:50:54 -0700 (PDT) MIME-Version: 1.0 Date: Sun, 7 Jun 2009 21:50:54 +0000 Message-ID: <83a869cd0906071450h24ed4119s44d00db0d97d59e2@mail.gmail.com> Subject: [PATCH] b43 add harware tkip From: gregor kowski To: linux-wireless@vger.kernel.org Content-Type: multipart/mixed; boundary=000e0cd3130eb7c32e046bc91e97 Sender: linux-wireless-owner@vger.kernel.org List-ID: --000e0cd3130eb7c32e046bc91e97 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit --000e0cd3130eb7c32e046bc91e97 Content-Type: text/x-diff; charset=US-ASCII; name="tkip.diff" Content-Disposition: attachment; filename="tkip.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fvoaetzw0 VGhpcyBhZGQgaGFyZHdhcmUgdGtpcCBmb3IgYjQzLgoKSXQgdW5jb3ZlcmVkIGEgYnVnIGluIGI0 M193cml0ZV9wcm9iZV9yZXNwX3RlbXBsYXRlIDogaXQgaXMgd3JpdGluZyBhdCB0aGUKd3Jvbmcg c2htIG9mZnNldCwgaXQgaXMgaW4gdGhlIEI0M19TSE1fU0hfVEtJUFRTQ1RUQUsgem9uZS4gVGhp cyBwYXRjaApjb21tZW50cyB0aGVzZSB3cml0ZXMuClRoZXJlIGlzIGFub3RoZXIgcHJvYmxlbSB3 aXRoIGI0M19uZXdfa2lkeF9hcGksIHRoYXQgYWxsb3cgNTQgcGFpcndpc2Uga2V5CihtYXgga2V5 IGlzIDU4KSwgYnV0IHRoZXJlIGlzIG9ubHkgNTAgZW50cnkgaW4gVEtJUFRTQ1RUQUsgKGFuZCBt YXkgYmUgUkNNVEEpLgoKRmluYWxseSB0aGVyZSBpcyBhbiBpc3N1ZSBpbiB0aGUgbWFjODAyMTEg dGtpcCBjb2RlIHRoYXQgd29uJ3QgYWx3YXlzCmNhbGwgdXBkYXRlX3RraXBfa2V5LgpBIHBhdGNo IHRvIHdvcmthcm91bmQgdGhhdCBpcyBhbHNvIHByb3ZpZGVkLgoKU2lnbmVkLW9mZi1ieTogR3Jl Z29yIEtvd3NraSA8Z3JlZ29yLmtvd3NraUBnbWFpbC5jb20+CkluZGV4OiBsaW51eC0yLjYvZHJp dmVycy9uZXQvd2lyZWxlc3MvYjQzL2RtYS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxpbnV4LTIuNi5vcmln L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuYwkyMDA5LTA2LTA3IDIxOjMzOjQyLjAwMDAw MDAwMCArMDAwMAorKysgbGludXgtMi42L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9kbWEuYwky MDA5LTA2LTA3IDIxOjQxOjU4LjAwMDAwMDAwMCArMDAwMApAQCAtMTE4OCw3ICsxMTg4LDcgQEAK IAloZWFkZXIgPSAmKHJpbmctPnR4aGRyX2NhY2hlWyhzbG90IC8gVFhfU0xPVFNfUEVSX0ZSQU1F KSAqIGhkcnNpemVdKTsKIAljb29raWUgPSBnZW5lcmF0ZV9jb29raWUocmluZywgc2xvdCk7CiAJ ZXJyID0gYjQzX2dlbmVyYXRlX3R4aGRyKHJpbmctPmRldiwgaGVhZGVyLAotCQkJCSBza2ItPmRh dGEsIHNrYi0+bGVuLCBpbmZvLCBjb29raWUpOworCQkJCSBza2IsIGluZm8sIGNvb2tpZSk7CiAJ aWYgKHVubGlrZWx5KGVycikpIHsKIAkJcmluZy0+Y3VycmVudF9zbG90ID0gb2xkX3RvcF9zbG90 OwogCQlyaW5nLT51c2VkX3Nsb3RzID0gb2xkX3VzZWRfc2xvdHM7CkluZGV4OiBsaW51eC0yLjYv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL21haW4uYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsaW51eC0yLjYu b3JpZy9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jCTIwMDktMDYtMDcgMjE6MzM6NDIu MDAwMDAwMDAwICswMDAwCisrKyBsaW51eC0yLjYvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL21h aW4uYwkyMDA5LTA2LTA3IDIxOjQxOjU4LjAwMDAwMDAwMCArMDAwMApAQCAtODYwLDYgKzg2MCw2 NiBAQAogCX0KIH0KIAorLyogVGhlIHVjb2RlIHdpbGwgdXNlIHRoaXMgd2l0aCBrZXkgdG8gZGVj cnlwdCByeCBwYWNrZXRzLgorICogSXQgd2lsbCBmaXJzdCBjaGVjayBpZiB0aGUgaXYzMiBtYXRj aCwKKyAqIC0gaWYgdGhleSBkb24ndCBpdCByZXR1cm5zIHRoZSBwYWNrZXQgd2l0aG91dCBkZWNy eXB0aW9uIChhbmQgc29mdHdhcmUKKyAqICAgZGVjcnlwdGlvbiBjYW4gYmUgZG9uZSkuIFRoYXQn cyB3aGF0IGhhcHBlbiB3aGVuIGl2MTYgd3JhcC4KKyAqIC0gaWYgdGhleSBkbywgdGhlIHJjNCBr ZXkgaXMgY29tcHV0ZWQgd2l0aCB0a2lwIHBoYXNlMiwgYW5kCisgKiAgIHRoZSB3ZXAgZGVjcnlw dGlvbiBpcyB0cmllZCBvbiB0aGUgcGFja2V0LiBFaXRoZXIgaXQgd2lsbAorICogICBzdWNjZXNz IGFuZCBCNDNfUlhfTUFDX0RFQyBpcyByZXR1cm5lZCwgZWl0aGVyIGl0IGZhaWxzCisgKiAgIGFu ZCBCNDNfUlhfTUFDX0RFQ3xCNDNfUlhfTUFDX0RFQ0VSUiBpcyByZXR1cm5lZCBhbmQgdGhlIHBh Y2tldAorICogICBpcyBub3QgdXNhYmxlICh3cm9uZyBrZXkgdXNlZCBvbiBpdCkuCisgKiBTbyBp biBvcmRlciB0byBuZXZlciBoYXZlIEI0M19SWF9NQUNfREVDRVJSLCB3ZSBzaG91bGQgcHJvdmlk ZQorICogYSBpdjMyIGFuZCBwaGFzZTFrZXkgdGhhdCBtYXRjaC4gQmVjYXVzZSB3ZSBkcm9wIHBh Y2tldHMgaW4gY2FzZSBvZgorICogQjQzX1JYX01BQ19ERUNFUlIsIGlmIHdlIGhhdmUgYSBjb3Jy ZWN0IGl2MzIgYnV0IGEgd3JvbmcgcGhhc2Uxa2V5LCBhbGwKKyAqIHBhY2tldHMgd2lsbCBiZSBs b3N0IHdpdGhvdXQgaGlnaGVyIGxheWVyIGtub3dpbmcgKGllIG5vIHJlc3luYyBwb3NzaWJsZQor ICogdW50aWwgbmV4dCB3cmFwKS4KKyAqCisgKiBOT1RFIDogdGhpcyBzaG91bGQgc3VwcG9ydCA1 MCBrZXkgbGlrZSBSQ01UQSBiZWNhdXNlCisgKiAoQjQzX1NITV9TSF9LRVlJRFhCTE9DSyAtIEI0 M19TSE1fU0hfVEtJUFRTQ1RUQUspLzE0ID0gNTAKKyAqLworc3RhdGljIHZvaWQgcnhfdGtpcF9w aGFzZTFfd3JpdGUoc3RydWN0IGI0M193bGRldiAqZGV2LCB1OCBpbmRleCwgdTMyIGl2MzIsCisJ CXUxNiAqcGhhc2Uxa2V5KQoreworCXVuc2lnbmVkIGludCBpOworCXUzMiBvZmZzZXQ7CisJdTgg cGVyX3N0YV9rZXlzX3N0YXJ0ID0gODsKKworCWlmIChiNDNfbmV3X2tpZHhfYXBpKGRldikpCisJ CXBlcl9zdGFfa2V5c19zdGFydCA9IDQ7CisKKwlCNDNfV0FSTl9PTihpbmRleCA8IHBlcl9zdGFf a2V5c19zdGFydCk7CisJLyogV2UgaGF2ZSB0d28gZGVmYXVsdCBUWCBrZXlzIGFuZCBwb3NzaWJs eSB0d28gZGVmYXVsdCBSWCBrZXlzLgorCSAqIFBoeXNpY2FsIG1hYyAwIGlzIG1hcHBlZCB0byBw aHlzaWNhbCBrZXkgNCBvciA4LCBkZXBlbmRpbmcKKwkgKiBvbiB0aGUgZmlybXdhcmUgdmVyc2lv bi4KKwkgKiBTbyB3ZSBtdXN0IGFkanVzdCB0aGUgaW5kZXggaGVyZS4KKwkgKi8KKwlpbmRleCAt PSBwZXJfc3RhX2tleXNfc3RhcnQ7CisKKwliNDNkYmcoZGV2LT53bCwgInJ4X3RraXBfcGhhc2Ux X3dyaXRlIDogaWR4IDB4JXgsIGl2MzIgMHgleFxuIiwKKwkJCWluZGV4LCBpdjMyKTsKKwkvKiBX cml0ZSB0aGUga2V5IHRvIHRoZSAgUlggdGtpcCBzaGFyZWQgbWVtICovCisJb2Zmc2V0ID0gQjQz X1NITV9TSF9US0lQVFNDVFRBSyArIGluZGV4ICogKDEwICsgNCk7CisJZm9yIChpID0gMDsgaSA8 IDEwOyBpICs9IDIpIHsKKwkJYjQzX3NobV93cml0ZTE2KGRldiwgQjQzX1NITV9TSEFSRUQsIG9m ZnNldCArIGksIHBoYXNlMWtleVtpLzJdKTsKKwl9CisJYjQzX3NobV93cml0ZTE2KGRldiwgQjQz X1NITV9TSEFSRUQsIG9mZnNldCArIGksIGl2MzIpOworCWI0M19zaG1fd3JpdGUxNihkZXYsIEI0 M19TSE1fU0hBUkVELCBvZmZzZXQgKyBpICsgMiwgaXYzMj4+MTYpOworfQorCitzdGF0aWMgdm9p ZCBiNDNfbWFjX3VwZGF0ZV90a2lwX2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKKwkJCXN0 cnVjdCBpZWVlODAyMTFfa2V5X2NvbmYgKmtleWNvbmYsIGNvbnN0IHU4ICphZGRyLAorCQkJdTMy IGl2MzIsIHUxNiAqcGhhc2Uxa2V5KQoreworCXN0cnVjdCBiNDNfd2wgKndsID0gaHdfdG9fYjQz X3dsKGh3KTsKKwlzdHJ1Y3QgYjQzX3dsZGV2ICpkZXYgPSB3bC0+Y3VycmVudF9kZXY7CisJaW50 IGluZGV4ID0ga2V5Y29uZi0+aHdfa2V5X2lkeDsKKwlrZXltYWNfd3JpdGUoZGV2LCBpbmRleCwg TlVMTCk7CS8qIEZpcnN0IHplcm8gb3V0IG1hYyB0byBhdm9pZCByYWNlICovCisKKwlyeF90a2lw X3BoYXNlMV93cml0ZShkZXYsIGluZGV4LCBpdjMyLCBwaGFzZTFrZXkpOworCWtleW1hY193cml0 ZShkZXYsIGluZGV4LCBhZGRyKTsKK30KKwogc3RhdGljIHZvaWQgZG9fa2V5X3dyaXRlKHN0cnVj dCBiNDNfd2xkZXYgKmRldiwKIAkJCSB1OCBpbmRleCwgdTggYWxnb3JpdGhtLAogCQkJIGNvbnN0 IHU4ICprZXksIHNpemVfdCBrZXlfbGVuLCBjb25zdCB1OCAqbWFjX2FkZHIpCkBAIC04NzgsNiAr OTM4LDE5IEBACiAJaWYgKGtleSkKIAkJbWVtY3B5KGJ1Ziwga2V5LCBrZXlfbGVuKTsKIAlrZXlf d3JpdGUoZGV2LCBpbmRleCwgYWxnb3JpdGhtLCBidWYpOworCWlmIChhbGdvcml0aG0gPT0gQjQz X1NFQ19BTEdPX1RLSVApIHsKKwkJLyoKKwkJICogV2Ugc2hvdWxkIHByb3ZpZGUgYW4gaW5pdGlh bCBpdjMyLCBwaGFzZTFrZXkgcGFpci4KKwkJICogV2UgY291bGQgc3RhcnQgd2l0aCBpdjMyPTAg YW5kIGNvbXB1dGUgdGhlIGNvcnJlc3BvbmRpbmcKKwkJICogcGhhc2Uxa2V5LCBidXQgdGhpcyBt ZWFuIGNhbGxpbmcgaWVlZTgwMjExX2dldF90a2lwX2tleQorCQkgKiB3aXRoIGEgZmFrZSBza2Ig KG9yIGV4cG9ydCBvdGhlciB0a2lwIGZ1bmN0aW9uKS4KKwkJICogQmVjYXVzZSB3ZSBhcmUgbGF6 eSB3ZSBob3BlIGl2MzIgd29uJ3Qgc3RhcnQgd2l0aAorCQkgKiAweGZmZmYgYW5kIGxldCdzIGI0 M19tYWNfdXBkYXRlX3RraXBfa2V5IHByb3ZpZGUgYQorCQkgKiBjb3JyZWN0IHBhaXIuCisJCSAq LworCQlyeF90a2lwX3BoYXNlMV93cml0ZShkZXYsIGluZGV4LCAweGZmZmYsICh1MTYqKWJ1Zik7 CisJfSBlbHNlIC8qIGNsZWFyIGl0ICovCisJCXJ4X3RraXBfcGhhc2UxX3dyaXRlKGRldiwgaW5k ZXgsIDAsICh1MTYqKWJ1Zik7CiAJaWYgKGluZGV4ID49IHBlcl9zdGFfa2V5c19zdGFydCkKIAkJ a2V5bWFjX3dyaXRlKGRldiwgaW5kZXgsIG1hY19hZGRyKTsKIApAQCAtODkzLDYgKzk2NiwxMSBA QAogCWludCBpOwogCWludCBzdGFfa2V5c19zdGFydDsKIAorCWlmIChhbGdvcml0aG0gPT0gQjQz X1NFQ19BTEdPX1RLSVAgJiYga2V5X2xlbiA9PSAzMikgeworCQlrZXljb25mLT5mbGFncyB8PSBJ RUVFODAyMTFfS0VZX0ZMQUdfR0VORVJBVEVfSVY7CisJCWtleWNvbmYtPmZsYWdzIHw9IElFRUU4 MDIxMV9LRVlfRkxBR19HRU5FUkFURV9NTUlDOworCQlrZXlfbGVuID0gMTY7CisJfQogCWlmIChr ZXlfbGVuID4gQjQzX1NFQ19LRVlTSVpFKQogCQlyZXR1cm4gLUVJTlZBTDsKIAlmb3IgKGkgPSAw OyBpIDwgZGV2LT5tYXhfbnJfa2V5czsgaSsrKSB7CkBAIC05NTQsNiArMTAzMiw3IEBACiAJCWI0 M19rZXlfY2xlYXIoZGV2LCBpKTsKIH0KIAorLyogWFhYIGFkZCB0a2lwIGR1bXAgKi8KIHN0YXRp YyB2b2lkIGI0M19kdW1wX2tleW1lbW9yeShzdHJ1Y3QgYjQzX3dsZGV2ICpkZXYpCiB7CiAJdW5z aWduZWQgaW50IGksIGluZGV4LCBvZmZzZXQ7CkBAIC0xNTQ1LDEwICsxNjI0LDEzIEBACiAJLyog TG9va3MgbGlrZSBQTENQIGhlYWRlcnMgcGx1cyBwYWNrZXQgdGltaW5ncyBhcmUgc3RvcmVkIGZv cgogCSAqIGFsbCBwb3NzaWJsZSBiYXNpYyByYXRlcwogCSAqLworCS8qIEZJWE1FIHRoaXMgaXMg dGhlIHdyb25nIG9mZnNldCA6IGl0IGdvZXMgaW4gdGtpcCByeCBwaGFzZTEgc2htICovCisjaWYg MAogCWI0M193cml0ZV9wcm9iZV9yZXNwX3BsY3AoZGV2LCAweDMxQSwgc2l6ZSwgJmI0M19iX3Jh dGV0YWJsZVswXSk7CiAJYjQzX3dyaXRlX3Byb2JlX3Jlc3BfcGxjcChkZXYsIDB4MzJDLCBzaXpl LCAmYjQzX2JfcmF0ZXRhYmxlWzFdKTsKIAliNDNfd3JpdGVfcHJvYmVfcmVzcF9wbGNwKGRldiwg MHgzM0UsIHNpemUsICZiNDNfYl9yYXRldGFibGVbMl0pOwogCWI0M193cml0ZV9wcm9iZV9yZXNw X3BsY3AoZGV2LCAweDM1MCwgc2l6ZSwgJmI0M19iX3JhdGV0YWJsZVszXSk7CisjZW5kaWYKIAog CXNpemUgPSBtaW4oKHNpemVfdCkgc2l6ZSwgMHgyMDAgLSBzaXplb2Yoc3RydWN0IGI0M19wbGNw X2hkcjYpKTsKIAliNDNfd3JpdGVfdGVtcGxhdGVfY29tbW9uKGRldiwgcHJvYmVfcmVzcF9kYXRh LApAQCAtMjk2Niw2ICszMDQ4LDkgQEAKIAogc3RhdGljIHZvaWQgYjQzX3NlY3VyaXR5X2luaXQo c3RydWN0IGI0M193bGRldiAqZGV2KQogeworCS8qIEZJWE1FIDogZm9yIGI0M19uZXdfa2lkeF9h cGksIHRoZXJlIGNhbiBiZSA1NCBrZXkKKwkgKiBpbnN0ZWFkIG9mIDUwIGluIFJDTVRBIGFuZCBU S0lQVFNDVFRBSy4KKwkgKi8KIAlkZXYtPm1heF9ucl9rZXlzID0gKGRldi0+ZGV2LT5pZC5yZXZp c2lvbiA+PSA1KSA/IDU4IDogMjA7CiAJQjQzX1dBUk5fT04oZGV2LT5tYXhfbnJfa2V5cyA+IEFS UkFZX1NJWkUoZGV2LT5rZXkpKTsKIAlkZXYtPmt0cCA9IGI0M19zaG1fcmVhZDE2KGRldiwgQjQz X1NITV9TSEFSRUQsIEI0M19TSE1fU0hfS1RQKTsKQEAgLTM2NTEsOCArMzczNiwxMCBAQAogCiAJ c3dpdGNoIChjbWQpIHsKIAljYXNlIFNFVF9LRVk6Ci0JCWlmIChhbGdvcml0aG0gPT0gQjQzX1NF Q19BTEdPX1RLSVApIHsKLQkJCS8qIEZJWE1FOiBObyBUS0lQIGhhcmR3YXJlIGVuY3J5cHRpb24g Zm9yIG5vdy4gKi8KKwkJaWYgKGFsZ29yaXRobSA9PSBCNDNfU0VDX0FMR09fVEtJUCAmJgorCQkJ CSghKGtleS0+ZmxhZ3MgJiBJRUVFODAyMTFfS0VZX0ZMQUdfUEFJUldJU0UpIHx8CisJCQkJICAg a2V5LT5mbGFncyAmIElFRUU4MDIxMV9LRVlfRkxBR19XTU1fU1RBICkpIHsKKwkJCS8qIFdlIHN1 cHBvcnQgb25seSBvbmUgcnggcXVldWUgKG5vIFFPUykgYW5kIHBhaXJ3aXNlIGtleSAqLwogCQkJ ZXJyID0gLUVPUE5PVFNVUFA7CiAJCQlnb3RvIG91dF91bmxvY2s7CiAJCX0KQEAgLTQ0NTIsNiAr NDUzOSw3IEBACiAJLmNvbmZpZ19pbnRlcmZhY2UJPSBiNDNfb3BfY29uZmlnX2ludGVyZmFjZSwK IAkuY29uZmlndXJlX2ZpbHRlcgk9IGI0M19vcF9jb25maWd1cmVfZmlsdGVyLAogCS5zZXRfa2V5 CQk9IGI0M19vcF9zZXRfa2V5LAorCS51cGRhdGVfdGtpcF9rZXkJPSBiNDNfbWFjX3VwZGF0ZV90 a2lwX2tleSwKIAkuZ2V0X3N0YXRzCQk9IGI0M19vcF9nZXRfc3RhdHMsCiAJLmdldF90eF9zdGF0 cwkJPSBiNDNfb3BfZ2V0X3R4X3N0YXRzLAogCS5nZXRfdHNmCQk9IGI0M19vcF9nZXRfdHNmLApJ bmRleDogbGludXgtMi42L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waW8uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBsaW51eC0yLjYub3JpZy9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGlvLmMJMjAwOS0w Ni0wNyAyMTozMzo0Mi4wMDAwMDAwMDAgKzAwMDAKKysrIGxpbnV4LTIuNi9kcml2ZXJzL25ldC93 aXJlbGVzcy9iNDMvcGlvLmMJMjAwOS0wNi0wNyAyMTo0MTo1OC4wMDAwMDAwMDAgKzAwMDAKQEAg LTQ2MSw4ICs0NjEsOCBAQAogCiAJY29va2llID0gZ2VuZXJhdGVfY29va2llKHEsIHBhY2spOwog CWhkcmxlbiA9IGI0M190eGhkcl9zaXplKHEtPmRldik7Ci0JZXJyID0gYjQzX2dlbmVyYXRlX3R4 aGRyKHEtPmRldiwgKHU4ICopJnR4aGRyLCBza2ItPmRhdGEsCi0JCQkJIHNrYi0+bGVuLCBpbmZv LCBjb29raWUpOworCWVyciA9IGI0M19nZW5lcmF0ZV90eGhkcihxLT5kZXYsICh1OCAqKSZ0eGhk ciwgc2tiLAorCQkJCSBpbmZvLCBjb29raWUpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAK SW5kZXg6IGxpbnV4LTIuNi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMveG1pdC5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIGxpbnV4LTIuNi5vcmlnL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My94bWl0LmMJMjAw OS0wNi0wNyAyMTozMzo0Mi4wMDAwMDAwMDAgKzAwMDAKKysrIGxpbnV4LTIuNi9kcml2ZXJzL25l dC93aXJlbGVzcy9iNDMveG1pdC5jCTIwMDktMDYtMDcgMjE6NDI6MzguMDAwMDAwMDAwICswMDAw CkBAIC0xODEsMTEgKzE4MSwxMiBAQAogLyogR2VuZXJhdGUgYSBUWCBkYXRhIGhlYWRlci4gKi8K IGludCBiNDNfZ2VuZXJhdGVfdHhoZHIoc3RydWN0IGI0M193bGRldiAqZGV2LAogCQkgICAgICAg dTggKl90eGhkciwKLQkJICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyYWdtZW50X2RhdGEs Ci0JCSAgICAgICB1bnNpZ25lZCBpbnQgZnJhZ21lbnRfbGVuLAorCQkgICAgICAgc3RydWN0IHNr X2J1ZmYgKnNrYl9mcmFnLAogCQkgICAgICAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZv LAogCQkgICAgICAgdTE2IGNvb2tpZSkKIHsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpmcmFnbWVu dF9kYXRhID0gc2tiX2ZyYWctPmRhdGE7CisJdW5zaWduZWQgaW50IGZyYWdtZW50X2xlbiA9IHNr Yl9mcmFnLT5sZW47CiAJc3RydWN0IGI0M190eGhkciAqdHhoZHIgPSAoc3RydWN0IGI0M190eGhk ciAqKV90eGhkcjsKIAljb25zdCBzdHJ1Y3QgYjQzX3BoeSAqcGh5ID0gJmRldi0+cGh5OwogCWNv bnN0IHN0cnVjdCBpZWVlODAyMTFfaGRyICp3bGhkciA9CkBAIC0yNTksOSArMjYwLDI1IEBACiAJ CW1hY19jdGwgfD0gKGtleS0+YWxnb3JpdGhtIDw8IEI0M19UWEhfTUFDX0tFWUFMR19TSElGVCkg JgogCQkJICAgQjQzX1RYSF9NQUNfS0VZQUxHOwogCQl3bGhkcl9sZW4gPSBpZWVlODAyMTFfaGRy bGVuKGZjdGwpOwotCQlpdl9sZW4gPSBtaW4oKHNpemVfdCkgaW5mby0+Y29udHJvbC5od19rZXkt Pml2X2xlbiwKLQkJCSAgICAgQVJSQVlfU0laRSh0eGhkci0+aXYpKTsKLQkJbWVtY3B5KHR4aGRy LT5pdiwgKCh1OCAqKSB3bGhkcikgKyB3bGhkcl9sZW4sIGl2X2xlbik7CisJCWlmIChrZXktPmFs Z29yaXRobSA9PSBCNDNfU0VDX0FMR09fVEtJUCkgeworCQkJdTE2IHBoYXNlMWtleVs1XTsKKwkJ CWludCBpOworCQkJLyogd2UgZ2l2ZSB0aGUgcGhhc2Uxa2V5IGFuZCBpdjE2IGhlcmUsIHRoZSBr ZXkgaXMgc3RvcmVkIGluCisJCQkgKiBzaG0uIFdpdGggdGhhdCB0aGUgaGFyZHdhcmUgY2FuIGRv IHBoYXNlIDIgYW5kIGVuY3J5cHRpb24uCisJCQkgKi8KKwkJCWllZWU4MDIxMV9nZXRfdGtpcF9r ZXkoaW5mby0+Y29udHJvbC5od19rZXksIHNrYl9mcmFnLCBJRUVFODAyMTFfVEtJUF9QMV9LRVks ICh1OCopcGhhc2Uxa2V5KTsKKwkJCS8qIHBoYXNlMWtleSBpcyBpbiBob3N0IGVuZGlhbiAqLwor CQkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykKKwkJCQlwaGFzZTFrZXlbaV0gPSBjcHVfdG9fbGUx NihwaGFzZTFrZXlbaV0pOworCisJCQltZW1jcHkodHhoZHItPml2LCBwaGFzZTFrZXksIDEwKTsK KwkJCS8qIGl2MTYgKi8KKwkJCW1lbWNweSh0eGhkci0+aXYrMTAsICgodTggKikgd2xoZHIpICsg d2xoZHJfbGVuLCAzKTsKKwkJfSBlbHNlIHsKKwkJCWl2X2xlbiA9IG1pbigoc2l6ZV90KSBpbmZv LT5jb250cm9sLmh3X2tleS0+aXZfbGVuLAorCQkJCSAgICAgQVJSQVlfU0laRSh0eGhkci0+aXYp KTsKKwkJCW1lbWNweSh0eGhkci0+aXYsICgodTggKikgd2xoZHIpICsgd2xoZHJfbGVuLCBpdl9s ZW4pOworCQl9CiAJfQogCWlmIChiNDNfaXNfb2xkX3R4aGRyX2Zvcm1hdChkZXYpKSB7CiAJCWI0 M19nZW5lcmF0ZV9wbGNwX2hkcigoc3RydWN0IGI0M19wbGNwX2hkcjQgKikoJnR4aGRyLT5vbGRf Zm9ybWF0LnBsY3ApLApJbmRleDogbGludXgtMi42L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My94 bWl0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gbGludXgtMi42Lm9yaWcvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YjQzL3htaXQuaAkyMDA5LTA2LTA3IDIxOjMzOjQyLjAwMDAwMDAwMCArMDAwMAorKysgbGludXgt Mi42L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My94bWl0LmgJMjAwOS0wNi0wNyAyMTo0MTo1OC4w MDAwMDAwMDAgKzAwMDAKQEAgLTE3Niw4ICsxNzYsNyBAQAogCiBpbnQgYjQzX2dlbmVyYXRlX3R4 aGRyKHN0cnVjdCBiNDNfd2xkZXYgKmRldiwKIAkJICAgICAgIHU4ICogdHhoZHIsCi0JCSAgICAg ICBjb25zdCB1bnNpZ25lZCBjaGFyICpmcmFnbWVudF9kYXRhLAotCQkgICAgICAgdW5zaWduZWQg aW50IGZyYWdtZW50X2xlbiwKKwkJICAgICAgIHN0cnVjdCBza19idWZmICpza2JfZnJhZywKIAkJ ICAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhjdGwsIHUxNiBjb29raWUpOwogCiAv KiBUcmFuc21pdCBTdGF0dXMgKi8K --000e0cd3130eb7c32e046bc91e97--