Return-path: Received: from mail-ob0-f175.google.com ([209.85.214.175]:56370 "EHLO mail-ob0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750949Ab3A2RiQ (ORCPT ); Tue, 29 Jan 2013 12:38:16 -0500 Received: by mail-ob0-f175.google.com with SMTP id uz6so686510obc.6 for ; Tue, 29 Jan 2013 09:38:15 -0800 (PST) Message-ID: <51080904.5000103@lwfinger.net> (sfid-20130129_183822_296613_9724C3A0) Date: Tue, 29 Jan 2013 11:38:12 -0600 From: Larry Finger MIME-Version: 1.0 To: Dylan CC: linux-wireless@vger.kernel.org Subject: Re: rtl8723ae Weak Signal Problems References: <51072B15.2030805@gmail.com> <51072B95.10101@gmail.com> In-Reply-To: <51072B95.10101@gmail.com> Content-Type: multipart/mixed; boundary="------------080707080405030703030606" Sender: linux-wireless-owner@vger.kernel.org List-ID: This is a multi-part message in MIME format. --------------080707080405030703030606 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit On 01/28/2013 07:53 PM, Dylan wrote: > Quick summary if you don't want to read my rambling: > > * Using the compat-drivers-3.8-rc5-1-u package > * Using the rtl8723ae chipset and driver > * Experiencing extremely weak signal > * No clue what information I need to submit - I'm not having any clear > crashes or anything, just a way-weaker-than-appropriate signal with > a driver change being the only issue > * Seems to have problems with Cisco access points (can't connect at > all) but I'm not 100% certain Strange that you see weaker signals with the kernel driver than with the vendor version. I get -56 dBm for the kernel, and -62 dBm for the vendor driver. I am using the code in the current wireless-testing git repo with some modifications that are currently under testing. Those changes will bring the kernel drivers up to the level of the 20130109 vendor driver. If you want to compile the vendor driver under kernels 3.7 or 3.8, the necessary patches for rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013 are attached. The one named fix_build_3.9 is needed to handle the changes now in wireless-testing that will appear in mainline kernel 3.9; however, once the official version becomes 3.9, this file will need to be updated as the kernel version tests will then be wrong. As to problems in connecting to the Cisco routers, I have no clue. I do not have access to a Cisco router with 802.11n capability. It might be helpful if you gave us the models for the routers that are involved. Perhaps some one else in the list will have had experience. Debugging this issue will probably come down to capturing the traffic in the air using wireshark, but we will forgo that step for now. In the meantime, please post the part of the dmesg output that shows the authentication/association sequence. Larry --------------080707080405030703030606 Content-Type: text/plain; charset=UTF-8; name="fix_build_3.7" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="fix_build_3.7" SW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8w MDEwLjAxMDkuMjAxMy9iYXNlLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnRsXzkyY2VfOTJzZV85 MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzLm9yaWcvYmFz ZS5jCisrKyBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFf MDAxMC4wMTA5LjIwMTMvYmFzZS5jCkBAIC0xNDM4LDkgKzE0MzgsMTcgQEAgaW50IHJ0bF9z ZW5kX3NtcHNfYWN0aW9uKHN0cnVjdCBpZWVlODAyMQogCQkvKiBydGxwcml2LT5jZmctPm9w cy0+dXBkYXRlX3JhdGVfdGJsKGh3LCBzdGEsIDApOyAqLwogCiAJCWluZm8tPmNvbnRyb2wu cmF0ZXNbMF0uaWR4ID0gMDsKLQkJaW5mby0+Y29udHJvbC5zdGEgPSBzdGE7CiAJCWluZm8t PmJhbmQgPSBody0+Y29uZi5jaGFubmVsLT5iYW5kOworLyo8ZGVsZXRlIGluIGtlcm5lbCBz dGFydD4qLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcs MCkpCisgCQlpbmZvLT5jb250cm9sLnN0YSA9IHN0YTsKIAkJcnRscHJpdi0+aW50Zl9vcHMt PmFkYXB0ZXJfdHgoaHcsIHNrYiwgJnRjYl9kZXNjKTsKKyNlbHNlCisvKjxkZWxldGUgaW4g a2VybmVsIGVuZD4qLworCQlydGxwcml2LT5pbnRmX29wcy0+YWRhcHRlcl90eChodywgc3Rh LCBza2IsICZ0Y2JfZGVzYyk7CisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjZW5k aWYKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCiAJfQogCXJldHVybiAxOwogCkluZGV4 OiBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4w MTA5LjIwMTMvY29yZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ0bF85MmNlXzkyc2VfOTJkZV84 NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy5vcmlnL2NvcmUuYwor KysgcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAu MDEwOS4yMDEzL2NvcmUuYwpAQCAtMzMsNiArMzMsMTAgQEAKICNpbmNsdWRlICJiYXNlLmgi CiAjaW5jbHVkZSAicHMuaCIKIAorI2lmbmRlZiBJRUVFODAyMTFfS0VZX0ZMQUdfU1dfTUdN VAorI2RlZmluZSBJRUVFODAyMTFfS0VZX0ZMQUdfU1dfTUdNVCBJRUVFODAyMTFfS0VZX0ZM QUdfU1dfTUdNVF9UWAorI2VuZGlmCisKIC8qbXV0ZXggZm9yIHN0YXJ0ICYgc3RvcCBpcyBt dXN0IGhlcmUuICovCiBzdGF0aWMgaW50IHJ0bF9vcF9zdGFydChzdHJ1Y3QgaWVlZTgwMjEx X2h3ICpodykKIHsKQEAgLTExMiw4ICsxMTYsMTYgQEAgZXJyX2ZyZWU6CiAJcmV0dXJuIE5F VERFVl9UWF9PSzsKIH0KICNlbHNlCi0vKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLworI2lm IChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcsMCkpCiBzdGF0aWMg dm9pZCBydGxfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBza19idWZm ICpza2IpCisjZWxzZQorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KK3N0YXRpYyB2b2lk IHJ0bF9vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKKwkJICAgICAgc3RydWN0IGll ZWU4MDIxMV90eF9jb250cm9sICpjb250cm9sLAorCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQorLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2VuZGlmCisvKjxkZWxldGUg aW4ga2VybmVsIGVuZD4qLwogewogCXN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9w cml2KGh3KTsKIAlzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJpdiho dykpOwpAQCAtMTI3LDkgKzEzOSwxNyBAQCBzdGF0aWMgdm9pZCBydGxfb3BfdHgoc3RydWN0 IGllZWU4MDIxMV9oCiAJaWYgKCF0ZXN0X2JpdChSVExfU1RBVFVTX0lOVEVSRkFDRV9TVEFS VCwgJnJ0bHByaXYtPnN0YXR1cykpCiAJCWdvdG8gZXJyX2ZyZWU7CiAKKy8qPGRlbGV0ZSBp biBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZF UlNJT04oMyw3LDApKQogCWlmICghcnRscHJpdi0+aW50Zl9vcHMtPndhaXRxX2luc2VydCho dywgc2tiKSkKIAkJcnRscHJpdi0+aW50Zl9vcHMtPmFkYXB0ZXJfdHgoaHcsIHNrYiwgJnRj Yl9kZXNjKTsKLQorI2Vsc2UKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCisJaWYgKCFy dGxwcml2LT5pbnRmX29wcy0+d2FpdHFfaW5zZXJ0KGh3LCBjb250cm9sLT5zdGEsIHNrYikp CisJICAgICAgICBydGxwcml2LT5pbnRmX29wcy0+YWRhcHRlcl90eChodywgY29udHJvbC0+ c3RhLCBza2IsICZ0Y2JfZGVzYyk7CisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisj ZW5kaWYKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCiAJcmV0dXJuOwogCiBlcnJfZnJl ZToKSW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIx MV8wMDEwLjAxMDkuMjAxMy9wY2kuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBydGxfOTJjZV85MnNl XzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMub3JpZy9w Y2kuYworKysgcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjEx XzAwMTAuMDEwOS4yMDEzL3BjaS5jCkBAIC02MDEsNyArNjAxLDE0IEBAIHN0YXRpYyB2b2lk IF9ydGxfcGNpX3R4X2Noa193YWl0cShzdHJ1Y3QKIAkJCWlmIChpbmZvLT5mbGFncyAmIElF RUU4MDIxMV9UWF9DVExfQU1QRFUpCiAJCQkJX3J0bF9wY2lfdXBkYXRlX2Vhcmx5bW9kZV9p bmZvKGh3LCBza2IsICZ0Y2JfZGVzYywgdGlkKTsKIAorLyo8ZGVsZXRlIGluIGtlcm5lbCBz dGFydD4qLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcs MCkpCiAJCQlydGxwcml2LT5pbnRmX29wcy0+YWRhcHRlcl90eChodywgc2tiLCAmdGNiX2Rl c2MpOworI2Vsc2UKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCisJCQlydGxwcml2LT5p bnRmX29wcy0+YWRhcHRlcl90eChodywgTlVMTCwgc2tiLCAmdGNiX2Rlc2MpOworI2VuZGlm CisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLwogCQl9CiAJfQogfQpAQCAtMTA2NCw4ICsx MDcxLDE3IEBAIHN0YXRpYyB2b2lkIF9ydGxfcGNpX3ByZXBhcmVfYmNuX3Rhc2tsZXQKIAlo ZHIgPSBydGxfZ2V0X2hkcihwc2tiKTsKIAlpbmZvID0gSUVFRTgwMjExX1NLQl9DQihwc2ti KTsKIAlwZGVzYyA9ICZyaW5nLT5kZXNjWzBdOworLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFy dD4qLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcsMCkp CiAJcnRscHJpdi0+Y2ZnLT5vcHMtPmZpbGxfdHhfZGVzYyhodywgaGRyLCAodTggKikgcGRl c2MsCiAJCWluZm8sIHBza2IsIEJFQUNPTl9RVUVVRSwgJnRjYl9kZXNjKTsKKyNlbHNlCisv KjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLworCXJ0bHByaXYtPmNmZy0+b3BzLT5maWxsX3R4 X2Rlc2MoaHcsIGhkciwgKHU4ICopIHBkZXNjLAorCQlpbmZvLCBOVUxMLCBwc2tiLCBCRUFD T05fUVVFVUUsICZ0Y2JfZGVzYyk7CisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisj ZW5kaWYKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCiAKIAlfX3NrYl9xdWV1ZV90YWls KCZyaW5nLT5xdWV1ZSwgcHNrYik7CiAKQEAgLTEzNzMsMTEgKzEzODksMjUgQEAgaW50IHJ0 bF9wY2lfcmVzZXRfdHJ4X3Jpbmcoc3RydWN0IGllZWU4MAogCXJldHVybiAwOwogfQogCisv KjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8 IEtFUk5FTF9WRVJTSU9OKDMsNywwKSkKIHN0YXRpYyBib29sIHJ0bF9wY2lfdHhfY2hrX3dh aXRxX2luc2VydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNr YikKLXsKKyNlbHNlCisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLworc3RhdGljIGJvb2wg cnRsX3BjaV90eF9jaGtfd2FpdHFfaW5zZXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAor CQkJCQlzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLAorCQkJCQlzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQoreworLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2VuZGlmCisvKjxkZWxl dGUgaW4ga2VybmVsIGVuZD4qLwogCXN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9IHJ0bF9w cml2KGh3KTsKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVS U0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogCXN0cnVjdCBpZWVlODAyMTFf dHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsKIAlzdHJ1Y3QgaWVlZTgw MjExX3N0YSAqc3RhID0gaW5mby0+Y29udHJvbC5zdGE7CisjZW5kaWYKKy8qPGRlbGV0ZSBp biBrZXJuZWwgZW5kPiovCiAJc3RydWN0IHJ0bF9zdGFfaW5mbyAqc3RhX2VudHJ5ID0gTlVM TDsKIAl1OCB0aWQgPSBydGxfZ2V0X3RpZChza2IpOwogCXUxNiBmYyA9IHJ0bF9nZXRfZmMo c2tiKTsKQEAgLTE0MTQsMTMgKzE0NDQsMjggQEAgc3RhdGljIGJvb2wgcnRsX3BjaV90eF9j aGtfd2FpdHFfaW5zZXJ0KAogCXJldHVybiB0cnVlOwogfQogCisvKjxkZWxldGUgaW4ga2Vy bmVsIHN0YXJ0PiovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9O KDMsNywwKSkKIGludCBydGxfcGNpX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLAogCQlzdHJ1Y3QgcnRsX3RjYl9kZXNjICpwdGNiX2Rlc2MpCisj ZWxzZQorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KK3N0YXRpYyBpbnQgcnRsX3BjaV90 eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKKwkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0 YSAqc3RhLAorCQkgICAgIHN0cnVjdCBza19idWZmICpza2IsCisJCSAgICAgc3RydWN0IHJ0 bF90Y2JfZGVzYyAqcHRjYl9kZXNjKQorLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLwor I2VuZGlmCisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLwogewogCXN0cnVjdCBydGxfcHJp diAqcnRscHJpdiA9IHJ0bF9wcml2KGh3KTsKIAlzdHJ1Y3QgcnRsX3N0YV9pbmZvICpzdGFf ZW50cnkgPSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4 MDIxMV9TS0JfQ0Ioc2tiKTsKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAo TElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogCXN0cnVjdCBp ZWVlODAyMTFfc3RhICpzdGEgPSBpbmZvLT5jb250cm9sLnN0YTsKKyNlbmRpZgorLyo8ZGVs ZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIAlzdHJ1Y3QgcnRsODE5Ml90eF9yaW5nICpyaW5nOwog CXN0cnVjdCBydGxfdHhfZGVzYyAqcGRlc2M7CiAJdTggaWR4OwpAQCAtMTQ5Miw4ICsxNTM3 LDE3IEBAIGludCBydGxfcGNpX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCWlmIChp ZWVlODAyMTFfaXNfZGF0YShmYykpCiAJCXJ0bHByaXYtPmNmZy0+b3BzLT5sZWRfY29udHJv bChodywgTEVEX0NUTF9UWCk7CiAKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNp ZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogCXJ0bHBy aXYtPmNmZy0+b3BzLT5maWxsX3R4X2Rlc2MoaHcsIGhkciwgKHU4ICopIHBkZXNjLAogCQkJ aW5mbywgc2tiLCBod19xdWV1ZSwgcHRjYl9kZXNjKTsKKyNlbHNlCisvKjxkZWxldGUgaW4g a2VybmVsIGVuZD4qLworCXJ0bHByaXYtPmNmZy0+b3BzLT5maWxsX3R4X2Rlc2MoaHcsIGhk ciwgKHU4ICopIHBkZXNjLAorCQkJaW5mbywgc3RhLCBza2IsIGh3X3F1ZXVlLCBwdGNiX2Rl c2MpOworLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2VuZGlmCisvKjxkZWxldGUg aW4ga2VybmVsIGVuZD4qLwogCiAJX19za2JfcXVldWVfdGFpbCgmcmluZy0+cXVldWUsIHNr Yik7CiAKSW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4 MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4MTkyY2UvdHJ4LmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g cnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEw OS4yMDEzLm9yaWcvcnRsODE5MmNlL3RyeC5jCisrKyBydGxfOTJjZV85MnNlXzkyZGVfODcy M2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMvcnRsODE5MmNlL3RyeC5j CkBAIC01MTEsMTcgKzUxMSwzNSBAQCBib29sIHJ0bDkyY2VfcnhfcXVlcnlfZGVzYyhzdHJ1 Y3QgaWVlZTgwCiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3Rh cnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDAp KQogdm9pZCBydGw5MmNlX3R4X2ZpbGxfZGVzYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywK IAkJCSAgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciwgdTggKnBkZXNjX3R4LAogCQkJICBz dHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sIHN0cnVjdCBza19idWZmICpza2IsCiAJ CQkgIHU4IGh3X3F1ZXVlLCBzdHJ1Y3QgcnRsX3RjYl9kZXNjICpwdGNiX2Rlc2MpCiB7Cisj ZWxzZQorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KK3ZvaWQgcnRsOTJjZV90eF9maWxs X2Rlc2Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCisJCQkgIHN0cnVjdCBpZWVlODAyMTFf aGRyICpoZHIsIHU4ICpwZGVzY190eCwKKwkJCSAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZv ICppbmZvLAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLAorCQkJICBzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAorCQkJICB1OCBod19xdWV1ZSwgc3RydWN0IHJ0bF90Y2JfZGVzYyAq cHRjYl9kZXNjKQorLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2VuZGlmCisvKjxk ZWxldGUgaW4ga2VybmVsIGVuZD4qLworewogCXN0cnVjdCBydGxfcHJpdiAqcnRscHJpdiA9 IHJ0bF9wcml2KGh3KTsKIAlzdHJ1Y3QgcnRsX21hYyAqbWFjID0gcnRsX21hYyhydGxfcHJp dihodykpOwogCXN0cnVjdCBydGxfcGNpICpydGxwY2kgPSBydGxfcGNpZGV2KHJ0bF9wY2lw cml2KGh3KSk7CiAJc3RydWN0IHJ0bF9wc19jdGwgKnBwc2MgPSBydGxfcHNjKHJ0bF9wcml2 KGh3KSk7CiAJYm9vbCBiX2RlZmF1bHRhZGFwdGVyID0gdHJ1ZTsKKy8qPGRlbGV0ZSBpbiBr ZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJ T04oMyw3LDApKQogCXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEgPSBpbmZvLT5jb250cm9s LnN0YTsKKyNlbmRpZgorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIAl1OCAqcGRlc2Mg PSAodTggKikgcGRlc2NfdHg7CiAJdTE2IHNlcV9udW1iZXI7CiAJdTE2IGZjID0gbGUxNl90 b19jcHUoaGRyLT5mcmFtZV9jb250cm9sKTsKSW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84 NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4MTkyY2UvdHJ4 LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xp bnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzLm9yaWcvcnRsODE5MmNlL3RyeC5oCisrKyBy dGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5 LjIwMTMvcnRsODE5MmNlL3RyeC5oCkBAIC03MDAsNiArNzAwLDEzIEBAIHN0cnVjdCByeF9k ZXNjXzkyYyB7CiB2b2lkIHJ0bDkyY2VfdHhfZmlsbF9kZXNjKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LAogCQkJICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAogCQkJICB1OCAqIHBk ZXNjLCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sCisvKjxkZWxldGUgaW4ga2Vy bmVsIHN0YXJ0PiovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxfVkVSU0lP TigzLDcsMCkpCisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLworCQkJICBzdHJ1Y3QgaWVl ZTgwMjExX3N0YSAqc3RhLAorLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2VuZGlm CisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLwogCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LCB1OCBod19xdWV1ZSwKIAkJCSAgc3RydWN0IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKTsK IGJvb2wgcnRsOTJjZV9yeF9xdWVyeV9kZXNjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LApJ bmRleDogcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAw MTAuMDEwOS4yMDEzL3J0bDgxOTJkZS90cnguYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBydGxfOTJj ZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMu b3JpZy9ydGw4MTkyZGUvdHJ4LmMKKysrIHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhl ZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4MTkyZGUvdHJ4LmMKQEAgLTQ2 NywxNyArNDY3LDM1IEBAIHN0YXRpYyB2b2lkIF9ydGw5MmRlX2luc2VydF9lbWNvbnRlbnQo c3QKIAlTRVRfRUFSTFlNT0RFX0xFTjQodmlydHVhbGFkZHJlc3MsIHB0Y2JfZGVzYy0+ZW1w a3RfbGVuWzRdKTsKIH0KIAorLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2lmIChM SU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcsMCkpCit2b2lkIHJ0bDky ZGVfdHhfZmlsbF9kZXNjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAorCQkJICBzdHJ1Y3Qg aWVlZTgwMjExX2hkciAqaGRyLAorCQkJICB1OCAqIHBkZXNjLCBzdHJ1Y3QgaWVlZTgwMjEx X3R4X2luZm8gKmluZm8sCisJCQkgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGh3X3F1ZXVl LAorCQkJICBzdHJ1Y3QgcnRsX3RjYl9kZXNjICpwdGNiX2Rlc2MpCisjZWxzZQorLyo8ZGVs ZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIHZvaWQgcnRsOTJkZV90eF9maWxsX2Rlc2Moc3RydWN0 IGllZWU4MDIxMV9odyAqaHcsCiAJCQkgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsIHU4 ICpwZGVzY190eCwKLQkJCSAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLCBzdHJ1 Y3Qgc2tfYnVmZiAqc2tiLAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8s CisJCQkgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsCisJCQkgIHN0cnVjdCBza19idWZm ICpza2IsCiAJCQkgIHU4IGh3X3F1ZXVlLCBzdHJ1Y3QgcnRsX3RjYl9kZXNjICpwdGNiX2Rl c2MpCisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjZW5kaWYKKy8qPGRlbGV0ZSBp biBrZXJuZWwgZW5kPiovCiB7CiAJc3RydWN0IHJ0bF9wcml2ICpydGxwcml2ID0gcnRsX3By aXYoaHcpOwogCXN0cnVjdCBydGxfbWFjICptYWMgPSBydGxfbWFjKHJ0bF9wcml2KGh3KSk7 CiAJc3RydWN0IHJ0bF9wY2kgKnJ0bHBjaSA9IHJ0bF9wY2lkZXYocnRsX3BjaXByaXYoaHcp KTsKIAlzdHJ1Y3QgcnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxwcml2KTsKIAlzdHJ1 Y3QgcnRsX3BzX2N0bCAqcHBzYyA9IHJ0bF9wc2MocnRsX3ByaXYoaHcpKTsKKy8qPGRlbGV0 ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVM X1ZFUlNJT04oMyw3LDApKQogCXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEgPSBpbmZvLT5j b250cm9sLnN0YTsKKyNlbmRpZgorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIAl1OCAq cGRlc2MgPSAodTggKikgcGRlc2NfdHg7CiAJdTE2IHNlcV9udW1iZXI7CiAJdTE2IGZjID0g bGUxNl90b19jcHUoaGRyLT5mcmFtZV9jb250cm9sKTsKSW5kZXg6IHJ0bF85MmNlXzkyc2Vf OTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4MTky ZGUvdHJ4LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84 OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzLm9yaWcvcnRsODE5MmRlL3RyeC5o CisrKyBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAx MC4wMTA5LjIwMTMvcnRsODE5MmRlL3RyeC5oCkBAIC03MTEsMTEgKzcxMSwyNCBAQCBzdHJ1 Y3QgcnhfZGVzY185MmQgewogCiB9IF9fcGFja2VkOwogCisvKjxkZWxldGUgaW4ga2VybmVs IHN0YXJ0PiovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMs NywwKSkKIHZvaWQgcnRsOTJkZV90eF9maWxsX2Rlc2Moc3RydWN0IGllZWU4MDIxMV9odyAq aHcsCiAJCQkgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsCiAJCQkgIHU4ICogcGRlc2Ms IHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbywKIAkJCSAgc3RydWN0IHNrX2J1ZmYg KnNrYiwgdTggaHdfcXVldWUsCiAJCQkgIHN0cnVjdCBydGxfdGNiX2Rlc2MgKnB0Y2JfZGVz Yyk7CisjZWxzZQorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KK3ZvaWQgcnRsOTJkZV90 eF9maWxsX2Rlc2Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCisJCQkgIHN0cnVjdCBpZWVl ODAyMTFfaGRyICpoZHIsIHU4ICpwZGVzY190eCwKKwkJCSAgc3RydWN0IGllZWU4MDIxMV90 eF9pbmZvICppbmZvLAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLAorCQkJICBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLAorCQkJICB1OCBod19xdWV1ZSwgc3RydWN0IHJ0bF90Y2Jf ZGVzYyAqcHRjYl9kZXNjKTsKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNlbmRp ZgorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIGJvb2wgcnRsOTJkZV9yeF9xdWVyeV9k ZXNjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQkJICAgc3RydWN0IHJ0bF9zdGF0cyAq c3RhdHVzLAogCQkJICAgc3RydWN0IGllZWU4MDIxMV9yeF9zdGF0dXMgKnJ4X3N0YXR1cywK SW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8w MDEwLjAxMDkuMjAxMy9ydGw4MTkyc2UvdHJ4LmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnRsXzky Y2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEz Lm9yaWcvcnRsODE5MnNlL3RyeC5jCisrKyBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4 ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMvcnRsODE5MnNlL3RyeC5jCkBAIC00 NzgsMTYgKzQ3OCwzMCBAQCBib29sIHJ0bDkyc2VfcnhfcXVlcnlfZGVzYyhzdHJ1Y3QgaWVl ZTgwCiAJcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgcnRsOTJzZV90eF9maWxsX2Rlc2Moc3Ry dWN0IGllZWU4MDIxMV9odyAqaHcsCi0JCXN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsIHU4 ICpwZGVzY190eCwKLQkJc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLCBzdHJ1Y3Qg c2tfYnVmZiAqc2tiLAotCQl1OCBod19xdWV1ZSwgc3RydWN0IHJ0bF90Y2JfZGVzYyAqcHRj Yl9kZXNjKQorLyo8ZGVsZXRlIGluIGtlcm5lbCBzdGFydD4qLworI2lmIChMSU5VWF9WRVJT SU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcsMCkpCit2b2lkIHJ0bDkyc2VfdHhfZmls bF9kZXNjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgaWVlZTgwMjExX2hkciAq aGRyLAorCXU4ICpwZGVzY190eCwgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLCBz dHJ1Y3Qgc2tfYnVmZiogc2tiLAorCXU4IGh3X3F1ZXVlLCBzdHJ1Y3QgcnRsX3RjYl9kZXNj ICpwdGNiX2Rlc2MpCisjZWxzZQordm9pZCBydGw5MnNlX3R4X2ZpbGxfZGVzYyhzdHJ1Y3Qg aWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciwKKwkJCSAgdTgg KnBkZXNjX3R4LCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8sCisJCQkgIHN0cnVj dCBpZWVlODAyMTFfc3RhICpzdGEsCisJCQkgIHN0cnVjdCBza19idWZmICpza2IsIHU4IGh3 X3F1ZXVlLAorCQkJICBzdHJ1Y3QgcnRsX3RjYl9kZXNjICpwdGNiX2Rlc2MpCisvKjxkZWxl dGUgaW4ga2VybmVsIHN0YXJ0PiovCisjZW5kaWYKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5k PiovCiB7CiAJc3RydWN0IHJ0bF9wcml2ICpydGxwcml2ID0gcnRsX3ByaXYoaHcpOwogCXN0 cnVjdCBydGxfbWFjICptYWMgPSBydGxfbWFjKHJ0bF9wcml2KGh3KSk7CiAJc3RydWN0IHJ0 bF9wY2kgKnJ0bHBjaSA9IHJ0bF9wY2lkZXYocnRsX3BjaXByaXYoaHcpKTsKIAlzdHJ1Y3Qg cnRsX2hhbCAqcnRsaGFsID0gcnRsX2hhbChydGxfcHJpdihodykpOworLyo8ZGVsZXRlIGlu IGtlcm5lbCBzdGFydD4qLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVS U0lPTigzLDcsMCkpCiAJc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSA9IGluZm8tPmNvbnRy b2wuc3RhOworI2VuZGlmCisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLwogCXU4ICpwZGVz YyA9ICh1OCAqKSBwZGVzY190eDsKIAl1MTYgc2VxX251bWJlcjsKIAl1MTYgZmMgPSBsZTE2 X3RvX2NwdShoZHItPmZyYW1lX2NvbnRyb2wpOwpJbmRleDogcnRsXzkyY2VfOTJzZV85MmRl Xzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzL3J0bDgxOTJzZS90 cnguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLSBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVf bGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMub3JpZy9ydGw4MTkyc2UvdHJ4LmgKKysr IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAx MDkuMjAxMy9ydGw4MTkyc2UvdHJ4LmgKQEAgLTI3LDkgKzI3LDIwIEBACiAjaWZuZGVmIF9f UkVBTFRFS19QQ0k5MlNFX1RSWF9IX18NCiAjZGVmaW5lIF9fUkVBTFRFS19QQ0k5MlNFX1RS WF9IX18NCiANCisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovDQorI2lmIChMSU5VWF9W RVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcsMCkpDQogdm9pZCBydGw5MnNlX3R4 X2ZpbGxfZGVzYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9o ZHIgKmhkciwNCiAJdTggKnBkZXNjLCBzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm8s IHN0cnVjdCBza19idWZmKiBza2IsDQogCXU4IGh3X3F1ZXVlLCBzdHJ1Y3QgcnRsX3RjYl9k ZXNjICpwdGNiX2Rlc2MpOw0KKyNlbHNlDQordm9pZCBydGw5MnNlX3R4X2ZpbGxfZGVzYyhz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV9oZHIgKmhkciwNCisJ CQkgIHU4ICpwZGVzYywgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLA0KKwkJCSAg c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwNCisJCQkgIHN0cnVjdCBza19idWZmICpza2Is IHU4IGh3X3F1ZXVlLA0KKwkJCSAgc3RydWN0IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKTsN CisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovDQorI2VuZGlmDQorLyo8ZGVsZXRlIGlu IGtlcm5lbCBlbmQ+Ki8NCiB2b2lkIHJ0bDkyc2VfdHhfZmlsbF9jbWRkZXNjKHN0cnVjdCBp ZWVlODAyMTFfaHcgKmh3LCB1OCAqcGRlc2MsIGJvb2wgYl9maXJzdHNlZywNCiAJYm9vbCBi X2xhc3RzZWcsIHN0cnVjdCBza19idWZmICpza2IpOw0KIGJvb2wgcnRsOTJzZV9yeF9xdWVy eV9kZXNjKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBzdHJ1Y3QgcnRsX3N0YXRzICpzdGF0 dXMsDQpJbmRleDogcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgw MjExXzAwMTAuMDEwOS4yMDEzL3dpZmkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBydGxfOTJjZV85 MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMub3Jp Zy93aWZpLmgKKysrIHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4 MDIxMV8wMDEwLjAxMDkuMjAxMy93aWZpLmgKQEAgLTEwNiw2ICsxMDYsOSBAQAogI2RlZmlu ZQlNQVhfQ0hOTF9HUk9VUF8yNEcJCTYgCiAjZGVmaW5lCU1BWF9DSE5MX0dST1VQXzVHCQkx NCAKIAorI2lmbmRlZiBSWF9GTEFHX01BQ1RJTUVfTVBEVQorI2RlZmluZSBSWF9GTEFHX01B Q1RJTUVfTVBEVSBSWF9GTEFHX01BQ1RJTUVfU1RBUlQKKyNlbmRpZgogCiBzdHJ1Y3QgdHhw b3dlcl9pbmZvXzJnIHsKIAl1OCBpbmRleF9jY2tfYmFzZVtNQVhfUkZfUEFUSF1bTUFYX0NI TkxfR1JPVVBfMjRHXTsKQEAgLTE1ODYsNiArMTU4OSwxMyBAQCBzdHJ1Y3QgcnRsX2hhbF9v cHMgewogCXZvaWQgKCpmaWxsX3R4X2Rlc2MpIChzdHJ1Y3QgaWVlZTgwMjExX2h3ICogaHcs CiAJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqIGhkciwgdTggKiBwZGVzY190eCwK IAkJCSAgICAgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqIGluZm8sCisvKjxkZWxldGUg aW4ga2VybmVsIHN0YXJ0PiovCisjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA+PSBLRVJORUxf VkVSU0lPTigzLDcsMCkpCisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLworCQkJICAgICAg c3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+ Ki8KKyNlbmRpZgorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIAkJCSAgICAgIHN0cnVj dCBza19idWZmICogc2tiLCB1OCBod19xdWV1ZSwKIAkJCSAgICAgIHN0cnVjdCBydGxfdGNi X2Rlc2MgKnB0Y2JfZGVzYyk7CiAJdm9pZCAoKmZpbGxfdHhfY21kZGVzYykgKHN0cnVjdCBp ZWVlODAyMTFfaHcgKiBodywgdTggKiBwZGVzYywKQEAgLTE2MzcsMTEgKzE2NDcsMzIgQEAg c3RydWN0IHJ0bF9pbnRmX29wcyB7CiAJYm9vbCAoKmNoZWNrX2J1ZGR5X3ByaXYpKHN0cnVj dCBpZWVlODAyMTFfaHcgKmh3LAogCQkJc3RydWN0IHJ0bF9wcml2ICoqYnVkZHlfcHJpdik7 CiAKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogCWludCAoKmFkYXB0ZXJfdHgpIChzdHJ1 Y3QgaWVlZTgwMjExX2h3ICogaHcsIHN0cnVjdCBza19idWZmICogc2tiLAogCQkJc3RydWN0 IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKTsKKyNlbHNlCisvKjxkZWxldGUgaW4ga2VybmVs IGVuZD4qLworCWludCAoKmFkYXB0ZXJfdHgpIChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywK KwkJCSAgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsCisJCQkgICBzdHJ1Y3Qgc2tfYnVm ZiAqc2tiLAorCQkJICAgc3RydWN0IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKTsKKy8qPGRl bGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNlbmRpZgorLyo8ZGVsZXRlIGluIGtlcm5lbCBl bmQ+Ki8KIAl2b2lkICgqZmx1c2gpKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBib29sIGRy b3ApOwogCWludCAoKnJlc2V0X3RyeF9yaW5nKSAoc3RydWN0IGllZWU4MDIxMV9odyAqIGh3 KTsKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9D T0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogCWJvb2wgKCp3YWl0cV9pbnNlcnQpIChz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IHNrX2J1ZmYgKnNrYik7CisjZWxzZQor Lyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KKwlib29sICgqd2FpdHFfaW5zZXJ0KSAoc3Ry dWN0IGllZWU4MDIxMV9odyAqaHcsCisJCQkgICAgICBzdHJ1Y3QgaWVlZTgwMjExX3N0YSAq c3RhLAorCQkJICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYik7CisvKjxkZWxldGUgaW4ga2Vy bmVsIHN0YXJ0PiovCisjZW5kaWYKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCiAKIAkv KnBjaSAqLwogCXZvaWQgKCpkaXNhYmxlX2FzcG0pIChzdHJ1Y3QgaWVlZTgwMjExX2h3ICog aHcpOwpJbmRleDogcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgw MjExXzAwMTAuMDEwOS4yMDEzL3J0bDgxODhlZS9mdy5jCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ0 bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDku MjAxMy5vcmlnL3J0bDgxODhlZS9mdy5jCisrKyBydGxfOTJjZV85MnNlXzkyZGVfODcyM2Fl Xzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMvcnRsODE4OGVlL2Z3LmMKQEAg LTIyOCw3ICsyMjgsNyBAQCBpbnQgcnRsODhlX2Rvd25sb2FkX2Z3KHN0cnVjdCBpZWVlODAy MTFfCiAJCVJUX1RSQUNFKENPTVBfRlcsIERCR19ETUVTRywKIAkJCSAoIkZpcm13YXJlIFZl cnNpb24oJWQpLCBTaWduYXR1cmUoJSN4KSxTaXplKCVkKVxuIiwKIAkJCSAgcGZ3aGVhZGVy LT52ZXJzaW9uLCBwZndoZWFkZXItPnNpZ25hdHVyZSwKLQkJCSAgc2l6ZW9mKHN0cnVjdCBy dGw5MmNfZmlybXdhcmVfaGVhZGVyKSkpOworCQkJICAoaW50KXNpemVvZihzdHJ1Y3QgcnRs OTJjX2Zpcm13YXJlX2hlYWRlcikpKTsKIAogCQlwZndkYXRhID0gcGZ3ZGF0YSArIHNpemVv ZihzdHJ1Y3QgcnRsOTJjX2Zpcm13YXJlX2hlYWRlcik7CiAJCWZ3c2l6ZSA9IGZ3c2l6ZSAt IHNpemVvZihzdHJ1Y3QgcnRsOTJjX2Zpcm13YXJlX2hlYWRlcik7CkluZGV4OiBydGxfOTJj ZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMv cnRsODE4OGVlL3RyeC5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJ0bF85MmNlXzkyc2VfOTJkZV84 NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy5vcmlnL3J0bDgxODhl ZS90cnguYworKysgcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgw MjExXzAwMTAuMDEwOS4yMDEzL3J0bDgxODhlZS90cnguYwpAQCAtNjI4LDE2ICs2MjgsMzMg QEAgYm9vbCBydGw4OGVlX3J4X3F1ZXJ5X2Rlc2Moc3RydWN0IGllZWU4MAogCXJldHVybiB0 cnVlOwogfQogCisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjaWYgKExJTlVYX1ZF UlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDMsNywwKSkKIHZvaWQgcnRsODhlZV90eF9m aWxsX2Rlc2Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkgIHN0cnVjdCBpZWVlODAy MTFfaGRyICpoZHIsIHU4ICpwZGVzY190eCwKIAkJCSAgc3RydWN0IGllZWU4MDIxMV90eF9p bmZvICppbmZvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICB1OCBod19xdWV1ZSwgc3Ry dWN0IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKQorI2Vsc2UKKy8qPGRlbGV0ZSBpbiBrZXJu ZWwgZW5kPiovCit2b2lkIHJ0bDg4ZWVfdHhfZmlsbF9kZXNjKHN0cnVjdCBpZWVlODAyMTFf aHcgKmh3LAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLCB1OCAqcGRlc2NfdHgs CisJCQkgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbywKKwkJCSAgc3RydWN0IGll ZWU4MDIxMV9zdGEgKnN0YSwKKwkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYiwKKwkJCSAgdTgg aHdfcXVldWUsIHN0cnVjdCBydGxfdGNiX2Rlc2MgKnB0Y2JfZGVzYykKKy8qPGRlbGV0ZSBp biBrZXJuZWwgc3RhcnQ+Ki8KKyNlbmRpZgorLyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8K IHsKIAlzdHJ1Y3QgcnRsX3ByaXYgKnJ0bHByaXYgPSBydGxfcHJpdihodyk7CiAJc3RydWN0 IHJ0bF9tYWMgKm1hYyA9IHJ0bF9tYWMocnRsX3ByaXYoaHcpKTsKIAlzdHJ1Y3QgcnRsX3Bj aSAqcnRscGNpID0gcnRsX3BjaWRldihydGxfcGNpcHJpdihodykpOwogCXN0cnVjdCBydGxf aGFsICpydGxoYWwgPSBydGxfaGFsKHJ0bHByaXYpOworLyo8ZGVsZXRlIGluIGtlcm5lbCBz dGFydD4qLworI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTigzLDcs MCkpCiAJc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSA9IGluZm8tPmNvbnRyb2wuc3RhOwor I2VuZGlmCisvKjxkZWxldGUgaW4ga2VybmVsIGVuZD4qLwogCXU4ICpwZGVzYyA9ICh1OCAq KSBwZGVzY190eDsKIAl1MTYgc2VxX251bWJlcjsKIAl1MTYgZmMgPSBsZTE2X3RvX2NwdSho ZHItPmZyYW1lX2NvbnRyb2wpOwpJbmRleDogcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84 OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzL3J0bDgxODhlZS90cnguaAo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFj ODAyMTFfMDAxMC4wMTA5LjIwMTMub3JpZy9ydGw4MTg4ZWUvdHJ4LmgKKysrIHJ0bF85MmNl Xzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9y dGw4MTg4ZWUvdHJ4LmgKQEAgLTc3OSwxMSArNzc5LDIzIEBAIHN0cnVjdCByeF9kZXNjXzg4 ZSB7CiAKIH0gX19wYWNrZWQ7CiAKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNp ZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogdm9pZCBy dGw4OGVlX3R4X2ZpbGxfZGVzYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKLQkJCSAgc3Ry dWN0IGllZWU4MDIxMV9oZHIgKmhkciwKLQkJCSAgdTggKiBwZGVzYywgc3RydWN0IGllZWU4 MDIxMV90eF9pbmZvICppbmZvLAotCQkJICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1OCBod19x dWV1ZSwKLQkJCSAgc3RydWN0IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKTsKKwkJCSAgc3Ry dWN0IGllZWU4MDIxMV9oZHIgKmhkciwgdTggKnBkZXNjX3R4LAorCQkJICBzdHJ1Y3QgaWVl ZTgwMjExX3R4X2luZm8gKmluZm8sIHN0cnVjdCBza19idWZmICpza2IsCisJCQkgIHU4IGh3 X3F1ZXVlLCBzdHJ1Y3QgcnRsX3RjYl9kZXNjICpwdGNiX2Rlc2MpOworI2Vsc2UKKy8qPGRl bGV0ZSBpbiBrZXJuZWwgZW5kPiovCit2b2lkIHJ0bDg4ZWVfdHhfZmlsbF9kZXNjKHN0cnVj dCBpZWVlODAyMTFfaHcgKmh3LAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLCB1 OCAqcGRlc2NfdHgsCisJCQkgIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbywKKwkJ CSAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKKwkJCSAgc3RydWN0IHNrX2J1ZmYgKnNr YiwKKwkJCSAgdTggaHdfcXVldWUsIHN0cnVjdCBydGxfdGNiX2Rlc2MgKnB0Y2JfZGVzYyk7 CisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjZW5kaWYKKy8qPGRlbGV0ZSBpbiBr ZXJuZWwgZW5kPiovCiBib29sIHJ0bDg4ZWVfcnhfcXVlcnlfZGVzYyhzdHJ1Y3QgaWVlZTgw MjExX2h3ICpodywKIAkJCSAgIHN0cnVjdCBydGxfc3RhdHMgKnN0YXR1cywKIAkJCSAgIHN0 cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeF9zdGF0dXMsCkluZGV4OiBydGxfOTJjZV85 MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMvcnRs ODE5MmNlL2Z3LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNh ZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzLm9yaWcvcnRsODE5MmNlL2Z3 LmMKKysrIHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51eF9tYWM4MDIxMV8w MDEwLjAxMDkuMjAxMy9ydGw4MTkyY2UvZncuYwpAQCAtMjM5LDcgKzIzOSw3IEBAIGludCBy dGw5MmNfZG93bmxvYWRfZncoc3RydWN0IGllZWU4MDIxMV8KIAkJUlRfVFJBQ0UoQ09NUF9G VywgREJHX0RNRVNHLAogCQkJICgiRmlybXdhcmUgVmVyc2lvbiglZCksIFNpZ25hdHVyZSgl I3gpLFNpemUoJWQpXG4iLAogCQkJICBwZndoZWFkZXItPnZlcnNpb24sIHBmd2hlYWRlci0+ c2lnbmF0dXJlLAotCQkJICBzaXplb2Yoc3RydWN0IHJ0bDkyY19maXJtd2FyZV9oZWFkZXIp KSk7CisJCQkgIChpbnQpc2l6ZW9mKHN0cnVjdCBydGw5MmNfZmlybXdhcmVfaGVhZGVyKSkp OwogCiAJCXBmd2RhdGEgPSBwZndkYXRhICsgc2l6ZW9mKHN0cnVjdCBydGw5MmNfZmlybXdh cmVfaGVhZGVyKTsKIAkJZndzaXplID0gZndzaXplIC0gc2l6ZW9mKHN0cnVjdCBydGw5MmNf ZmlybXdhcmVfaGVhZGVyKTsKSW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhl ZV9saW51eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4MTkyZGUvcGh5LmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgw MjExXzAwMTAuMDEwOS4yMDEzLm9yaWcvcnRsODE5MmRlL3BoeS5jCisrKyBydGxfOTJjZV85 MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAxMC4wMTA5LjIwMTMvcnRs ODE5MmRlL3BoeS5jCkBAIC0zMDAxLDggKzMwMDEsOCBAQCB2b2lkIHJ0bDkyZF9waHlfcmVz ZXRfaXFrX3Jlc3VsdChzdHJ1Y3QKIAogCVJUX1RSQUNFKENPTVBfSU5JVCwgREJHX0xPVUQs CiAJCQkoInNldHRpbmdzIHJlZ3MgJWQgZGVmYXVsdCByZWdzICVkXG4iLAotCQkJc2l6ZW9m KHJ0bHBoeS0+aXFrX21hdHJpeF9yZWdzZXR0aW5nKSAvCi0JCQlzaXplb2Yoc3RydWN0IGlx a19tYXRyaXhfcmVncyksCisJCQkoaW50KShzaXplb2YocnRscGh5LT5pcWtfbWF0cml4X3Jl Z3NldHRpbmcpIC8KKwkJCXNpemVvZihzdHJ1Y3QgaXFrX21hdHJpeF9yZWdzKSksCiAJCQlJ UUtfTUFUUklYX1JFR19OVU0pKTsKIAkvKiAweGU5NCwgMHhlOWMsIDB4ZWE0LCAweGVhYywg MHhlYjQsIDB4ZWJjLCAweGVjNCwgMHhlY2MgKi8KIAlmb3IgKGkgPSAwOyBpIDwgSVFLX01B VFJJWF9TRVRUSU5HU19OVU07IGkrKykgewpJbmRleDogcnRsXzkyY2VfOTJzZV85MmRlXzg3 MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzL3J0bDg3MjNlL2Z3LmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gcnRsXzkyY2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4 X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzLm9yaWcvcnRsODcyM2UvZncuYworKysgcnRsXzky Y2VfOTJzZV85MmRlXzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEz L3J0bDg3MjNlL2Z3LmMKQEAgLTIwNCw3ICsyMDQsNyBAQCBpbnQgcnRsODcyM2VfZG93bmxv YWRfZncoc3RydWN0IGllZWU4MDIxCiAJCVJUX1RSQUNFKENPTVBfRlcsIERCR19ETUVTRywK IAkJCSAoIkZpcm13YXJlIFZlcnNpb24oJWQpLCBTaWduYXR1cmUoJSN4KSxTaXplKCVkKVxu IiwKIAkJCSAgcGZ3aGVhZGVyLT52ZXJzaW9uLCBwZndoZWFkZXItPnNpZ25hdHVyZSwKLQkJ CSAgc2l6ZW9mKHN0cnVjdCBydGw4NzIzZV9maXJtd2FyZV9oZWFkZXIpKSk7CisJCQkgIChp bnQpc2l6ZW9mKHN0cnVjdCBydGw4NzIzZV9maXJtd2FyZV9oZWFkZXIpKSk7CiAKIAkJcGZ3 ZGF0YSA9IHBmd2RhdGEgKyBzaXplb2Yoc3RydWN0IHJ0bDg3MjNlX2Zpcm13YXJlX2hlYWRl cik7CiAJCWZ3c2l6ZSA9IGZ3c2l6ZSAtIHNpemVvZihzdHJ1Y3QgcnRsODcyM2VfZmlybXdh cmVfaGVhZGVyKTsKSW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51 eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4NzIzZS90cnguYwo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAx MC4wMTA5LjIwMTMub3JpZy9ydGw4NzIzZS90cnguYworKysgcnRsXzkyY2VfOTJzZV85MmRl Xzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzL3J0bDg3MjNlL3Ry eC5jCkBAIC01MTAsMTAgKzUxMCwyMyBAQCBib29sIHJ0bDg3MjNlX3J4X3F1ZXJ5X2Rlc2Mo c3RydWN0IGllZWU4CiAJcmV0dXJuIHRydWU7CiB9CiAKKy8qPGRlbGV0ZSBpbiBrZXJuZWwg c3RhcnQ+Ki8KKyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3 LDApKQogdm9pZCBydGw4NzIzZV90eF9maWxsX2Rlc2Moc3RydWN0IGllZWU4MDIxMV9odyAq aHcsCiAJCQkgIHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIsIHU4ICpwZGVzY190eCwKIAkJ CSAgc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvLCBzdHJ1Y3Qgc2tfYnVmZiAqc2ti LAogCQkJICB1OCBod19xdWV1ZSwgc3RydWN0IHJ0bF90Y2JfZGVzYyAqcHRjYl9kZXNjKQor I2Vsc2UKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCit2b2lkIHJ0bDg3MjNlX3R4X2Zp bGxfZGVzYyhzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKKwkJCSAgc3RydWN0IGllZWU4MDIx MV9oZHIgKmhkciwgdTggKnBkZXNjX3R4LAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2lu Zm8gKmluZm8sCisJCQkgIHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsCisJCQkgIHN0cnVj dCBza19idWZmICpza2IsCisJCQkgIHU4IGh3X3F1ZXVlLCBzdHJ1Y3QgcnRsX3RjYl9kZXNj ICpwdGNiX2Rlc2MpCisvKjxkZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjZW5kaWYKKy8q PGRlbGV0ZSBpbiBrZXJuZWwgZW5kPiovCiB7CiAJc3RydWN0IHJ0bF9wcml2ICpydGxwcml2 ID0gcnRsX3ByaXYoaHcpOwogCXN0cnVjdCBydGxfbWFjICptYWMgPSBydGxfbWFjKHJ0bF9w cml2KGh3KSk7CkBAIC01MjEsNyArNTM0LDExIEBAIHZvaWQgcnRsODcyM2VfdHhfZmlsbF9k ZXNjKHN0cnVjdCBpZWVlODAKIAlzdHJ1Y3QgcnRsX3BzX2N0bCAqcHBzYyA9IHJ0bF9wc2Mo cnRsX3ByaXYoaHcpKTsKIAlib29sIGJfZGVmYXVsdGFkYXB0ZXIgPSB0cnVlOwogLy8JYm9v bCBiX3RyaWdnZXJfYWMgPSBmYWxzZTsKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8K KyNpZiAoTElOVVhfVkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogCXN0 cnVjdCBpZWVlODAyMTFfc3RhICpzdGEgPSBpbmZvLT5jb250cm9sLnN0YTsKKyNlbmRpZgor Lyo8ZGVsZXRlIGluIGtlcm5lbCBlbmQ+Ki8KIAl1OCAqcGRlc2MgPSAodTggKikgcGRlc2Nf dHg7CiAJdTE2IHNlcV9udW1iZXI7CiAJdTE2IGZjID0gbGUxNl90b19jcHUoaGRyLT5mcmFt ZV9jb250cm9sKTsKSW5kZXg6IHJ0bF85MmNlXzkyc2VfOTJkZV84NzIzYWVfODhlZV9saW51 eF9tYWM4MDIxMV8wMDEwLjAxMDkuMjAxMy9ydGw4NzIzZS90cnguaAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBydGxfOTJjZV85MnNlXzkyZGVfODcyM2FlXzg4ZWVfbGludXhfbWFjODAyMTFfMDAx MC4wMTA5LjIwMTMub3JpZy9ydGw4NzIzZS90cnguaAorKysgcnRsXzkyY2VfOTJzZV85MmRl Xzg3MjNhZV84OGVlX2xpbnV4X21hYzgwMjExXzAwMTAuMDEwOS4yMDEzL3J0bDg3MjNlL3Ry eC5oCkBAIC03MDUsMTEgKzcwNSwyNCBAQCBzdHJ1Y3QgcnhfZGVzY184NzIzZSB7CiAKIH0g X19wYWNrZWQ7CiAKKy8qPGRlbGV0ZSBpbiBrZXJuZWwgc3RhcnQ+Ki8KKyNpZiAoTElOVVhf VkVSU0lPTl9DT0RFIDwgS0VSTkVMX1ZFUlNJT04oMyw3LDApKQogdm9pZCBydGw4NzIzZV90 eF9maWxsX2Rlc2Moc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkgIHN0cnVjdCBpZWVl ODAyMTFfaGRyICpoZHIsCiAJCQkgIHU4ICogcGRlc2MsIHN0cnVjdCBpZWVlODAyMTFfdHhf aW5mbyAqaW5mbywKIAkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTggaHdfcXVldWUsCiAJ CQkgIHN0cnVjdCBydGxfdGNiX2Rlc2MgKnB0Y2JfZGVzYyk7CisjZWxzZQorLyo8ZGVsZXRl IGluIGtlcm5lbCBlbmQ+Ki8KK3ZvaWQgcnRsODcyM2VfdHhfZmlsbF9kZXNjKHN0cnVjdCBp ZWVlODAyMTFfaHcgKmh3LAorCQkJICBzdHJ1Y3QgaWVlZTgwMjExX2hkciAqaGRyLAorCQkJ ICB1OCAqcGRlc2MsIHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbywKKwkJCSAgc3Ry dWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKKwkJCSAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTgg aHdfcXVldWUsCisJCQkgIHN0cnVjdCBydGxfdGNiX2Rlc2MgKnB0Y2JfZGVzYyk7CisvKjxk ZWxldGUgaW4ga2VybmVsIHN0YXJ0PiovCisjZW5kaWYKKy8qPGRlbGV0ZSBpbiBrZXJuZWwg ZW5kPiovCiBib29sIHJ0bDg3MjNlX3J4X3F1ZXJ5X2Rlc2Moc3RydWN0IGllZWU4MDIxMV9o dyAqaHcsCiAJCQkgICBzdHJ1Y3QgcnRsX3N0YXRzICpzdGF0dXMsCiAJCQkgICBzdHJ1Y3Qg aWVlZTgwMjExX3J4X3N0YXR1cyAqcnhfc3RhdHVzLAo= --------------080707080405030703030606 Content-Type: text/plain; charset=UTF-8; name="fix_build_3.8" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="fix_build_3.8" Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/trx.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/trx.c @@ -554,6 +554,11 @@ void rtl8723e_tx_fill_desc(struct ieee80 PCI_DMA_TODEVICE); u8 bw_40 = 0; + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } if (mac->opmode == NL80211_IFTYPE_STATION) { bw_40 = mac->bw_40; } else if (mac->opmode == NL80211_IFTYPE_AP || @@ -733,6 +738,11 @@ void rtl8723e_tx_fill_cmddesc(struct iee struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); u16 fc = le16_to_cpu(hdr->frame_control); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); if (b_firstseg) Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192se/trx.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/trx.c @@ -514,6 +514,11 @@ void rtl92se_tx_fill_desc(struct ieee802 PCI_DMA_TODEVICE); u8 bw_40 = 0; + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } if (mac->opmode == NL80211_IFTYPE_STATION) { bw_40 = mac->bw_40; } else if (mac->opmode == NL80211_IFTYPE_AP || @@ -690,6 +695,7 @@ void rtl92se_tx_fill_desc(struct ieee802 void rtl92se_tx_fill_cmddesc(struct ieee80211_hw *hw, u8 *pdesc, bool b_firstseg, bool b_lastseg, struct sk_buff *skb) { + struct rtl_priv *rtlpriv = rtl_priv(hw); struct rtl_pci *rtlpci = rtl_pcidev(rtl_pcipriv(hw)); struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw)); struct rtl_tcb_desc *tcb_desc = (struct rtl_tcb_desc *)(skb->cb); @@ -697,7 +703,12 @@ void rtl92se_tx_fill_cmddesc(struct ieee dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); - /* Clear all status */ + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } + /* Clear all status */ CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_CMDDESC_SIZE_RTL8192S); /* This bit indicate this packet is used for FW download. */ Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/trx.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/trx.c @@ -526,6 +526,11 @@ void rtl92de_tx_fill_desc(struct ieee802 buf_len = skb->len; mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_92d)); if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { b_firstseg = true; @@ -699,6 +704,11 @@ void rtl92de_tx_fill_cmddesc(struct ieee struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); u16 fc = le16_to_cpu(hdr->frame_control); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); if (b_firstseg) SET_TX_DESC_OFFSET(pdesc, USB_HWDESC_HEADER_LEN); Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/trx.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/trx.c @@ -553,8 +553,14 @@ void rtl92ce_tx_fill_desc(struct ieee802 dma_addr_t mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); + u8 bw_40 = 0; + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } if (mac->opmode == NL80211_IFTYPE_STATION) { bw_40 = mac->bw_40; } else if (mac->opmode == NL80211_IFTYPE_AP || @@ -733,6 +739,11 @@ void rtl92ce_tx_fill_cmddesc(struct ieee struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); u16 fc = le16_to_cpu(hdr->frame_control); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); if (b_firstseg) Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c @@ -742,6 +742,8 @@ static int _rtl_pci_init_one_rxdesc(stru skb_tail_pointer(skb), rtlpci->rxbuffersize, PCI_DMA_FROMDEVICE); bufferaddress = cpu_to_le32(*((dma_addr_t *) skb->cb)); + if (pci_dma_mapping_error(rtlpci->pdev, bufferaddress)) + return 0; rtlpriv->cfg->ops->set_desc((u8 *) entry, false, HW_DESC_RXBUFF_ADDR, (u8 *) & bufferaddress); Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/trx.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/trx.c @@ -686,6 +686,11 @@ void rtl88ee_tx_fill_desc(struct ieee802 buf_len = skb->len; mapping = pci_map_single(rtlpci->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } CLEAR_PCI_TX_DESC_CONTENT(pdesc, sizeof(struct tx_desc_88e)); if (ieee80211_is_nullfunc(fc) || ieee80211_is_ctl(fc)) { b_firstseg = true; @@ -858,6 +863,11 @@ void rtl88ee_tx_fill_cmddesc(struct ieee struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)(skb->data); u16 fc = le16_to_cpu(hdr->frame_control); + if (pci_dma_mapping_error(rtlpci->pdev, mapping)) { + RT_TRACE(COMP_SEND, DBG_TRACE, + ("DMA mapping error")); + return; + } CLEAR_PCI_TX_DESC_CONTENT(pdesc, TX_DESC_SIZE); if (b_firstseg) --------------080707080405030703030606 Content-Type: text/plain; charset=UTF-8; name="fix_build_3.9" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="fix_build_3.9" Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/core.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/core.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/core.c @@ -1004,7 +1004,13 @@ static int rtl_op_ampdu_action(struct ie ("IEEE80211_AMPDU_TX_START: TID:%d\n", tid)); return rtl_tx_agg_start(hw, vif, sta, tid, ssn); break; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) case IEEE80211_AMPDU_TX_STOP: +#else + case IEEE80211_AMPDU_TX_STOP_CONT: + case IEEE80211_AMPDU_TX_STOP_FLUSH: + case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT: +#endif RT_TRACE(COMP_MAC80211, DBG_TRACE, ("IEEE80211_AMPDU_TX_STOP: TID:%d\n", tid)); return rtl_tx_agg_stop(hw, vif, sta, tid); Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/regd.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/regd.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/regd.c @@ -158,8 +158,6 @@ static void _rtl_reg_apply_beaconing_fla const struct ieee80211_reg_rule *reg_rule; struct ieee80211_channel *ch; unsigned int i; - u32 bandwidth = 0; - int r; for (band = 0; band < IEEE80211_NUM_BANDS; band++) { @@ -174,9 +172,20 @@ static void _rtl_reg_apply_beaconing_fla (ch->flags & IEEE80211_CHAN_RADAR)) continue; if (initiator == NL80211_REGDOM_SET_BY_COUNTRY_IE) { +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) + int r; + u32 bandwidth = 0; r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); if (r) +#else +/**/ + reg_rule = freq_reg_info(wiphy, ch->center_freq); + if (IS_ERR(reg_rule)) +/**/ +#endif +/**/ continue; /* @@ -210,8 +219,12 @@ static void _rtl_reg_apply_active_scan_f struct ieee80211_supported_band *sband; struct ieee80211_channel *ch; const struct ieee80211_reg_rule *reg_rule; +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) u32 bandwidth = 0; int r; +#endif +/**/ if (!wiphy->bands[IEEE80211_BAND_2GHZ]) return; @@ -239,16 +252,34 @@ static void _rtl_reg_apply_active_scan_f */ ch = &sband->channels[11]; /* CH 12 */ +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); if (!r) { +#else +/**/ + reg_rule = freq_reg_info(wiphy, ch->center_freq); + if (!IS_ERR(reg_rule)) { +/**/ +#endif +/**/ if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; } ch = &sband->channels[12]; /* CH 13 */ +/**/ +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)) r = freq_reg_info(wiphy, ch->center_freq, bandwidth, ®_rule); if (!r) { +#else +/**/ + reg_rule = freq_reg_info(wiphy, ch->center_freq); + if (!IS_ERR(reg_rule)) { +/**/ +#endif +/**/ if (!(reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) if (ch->flags & IEEE80211_CHAN_PASSIVE_SCAN) ch->flags &= ~IEEE80211_CHAN_PASSIVE_SCAN; Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.c @@ -1896,8 +1896,8 @@ static bool _rtl_pci_find_adapter(struct * hw pointer in rtl_pci_get_hw_pointer */ struct ieee80211_hw *hw_export = NULL; -int __devinit rtl_pci_probe(struct pci_dev *pdev, - const struct pci_device_id *id) +int rtl_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id) { struct ieee80211_hw *hw = NULL; Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.h =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/pci.h +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/pci.h @@ -244,8 +244,8 @@ int rtl_pci_reset_trx_ring(struct ieee80 extern struct rtl_intf_ops rtl_pci_ops; -int __devinit rtl_pci_probe(struct pci_dev *pdev, - const struct pci_device_id *id); +int rtl_pci_probe(struct pci_dev *pdev, + const struct pci_device_id *id); void rtl_pci_disconnect(struct pci_dev *pdev); int rtl_pci_suspend(struct device *dev); int rtl_pci_resume(struct device *dev); Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/sw.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8188ee/sw.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8188ee/sw.c @@ -369,7 +369,7 @@ struct rtl_hal_cfg rtl88ee_hal_cfg = { .maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15, }; -static struct pci_device_id rtl88ee_pci_ids[] __devinitdata = { +static struct pci_device_id rtl88ee_pci_ids[] = { {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8179, rtl88ee_hal_cfg)}, {}, }; Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/sw.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192ce/sw.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192ce/sw.c @@ -336,7 +336,7 @@ struct rtl_hal_cfg rtl92ce_hal_cfg = { .maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15, }; -static struct pci_device_id rtl92ce_pci_ids[] __devinitdata = { +static struct pci_device_id rtl92ce_pci_ids[] = { {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8191, rtl92ce_hal_cfg)}, {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8178, rtl92ce_hal_cfg)}, {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8177, rtl92ce_hal_cfg)}, Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/sw.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192de/sw.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192de/sw.c @@ -188,7 +188,7 @@ int rtl92d_init_sw_vars(struct ieee80211 release_firmware(firmware); /* for early mode */ - rtlpriv->rtlhal.b_earlymode_eanble = true; + rtlpriv->rtlhal.b_earlymode_eanble = false; rtlpriv->rtlhal.max_earlymode_num = 5; for (tid = 0; tid < 8; tid++) skb_queue_head_init(&rtlpriv->mac80211.skb_waitq[tid]); @@ -356,7 +356,7 @@ struct rtl_hal_cfg rtl92de_hal_cfg = { .maps[RTL_RC_HT_RATEMCS15] = DESC92D_RATEMCS15, }; -struct pci_device_id rtl92de_pci_ids[] __devinitdata = { +struct pci_device_id rtl92de_pci_ids[] = { {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8193, rtl92de_hal_cfg)}, {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x002B, rtl92de_hal_cfg)}, {}, @@ -412,13 +412,13 @@ static int __init rtl92de_module_init(vo { int ret = 0; + spin_lock_init(&globalmutex_for_poweron_and_poweroff); + spin_lock_init(&globalmutex_for_fwdownload); + spin_lock_init(&globalmutex_for_power_and_efuse); ret = pci_register_driver(&rtl92de_driver); if (ret) RT_ASSERT(false, (": No device found\n")); - spin_lock_init(&globalmutex_for_poweron_and_poweroff); - spin_lock_init(&globalmutex_for_fwdownload); - spin_lock_init(&globalmutex_for_power_and_efuse); return ret; } Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/sw.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8192se/sw.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8192se/sw.c @@ -363,7 +363,7 @@ struct rtl_hal_cfg rtl92se_hal_cfg = { .maps[RTL_RC_HT_RATEMCS15] = DESC92S_RATEMCS15, }; -struct pci_device_id rtl92se_pci_ids[] __devinitdata = { +struct pci_device_id rtl92se_pci_ids[] = { {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8192, rtl92se_hal_cfg)}, {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8171, rtl92se_hal_cfg)}, {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8172, rtl92se_hal_cfg)}, Index: rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/sw.c =================================================================== --- rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013.orig/rtl8723e/sw.c +++ rtl_92ce_92se_92de_8723ae_88ee_linux_mac80211_0010.0109.2013/rtl8723e/sw.c @@ -356,7 +356,7 @@ struct rtl_hal_cfg rtl8723e_hal_cfg = { .maps[RTL_RC_HT_RATEMCS15] = DESC92C_RATEMCS15, }; -static struct pci_device_id rtl8723e_pci_ids[] __devinitdata = { +static struct pci_device_id rtl8723e_pci_ids[] = { {RTL_PCI_DEVICE(PCI_VENDOR_ID_REALTEK, 0x8723, rtl8723e_hal_cfg)}, {}, }; --------------080707080405030703030606--