From owner-freebsd-wireless@FreeBSD.ORG Wed Jul 24 13:38:45 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 45711B72; Wed, 24 Jul 2013 13:38:45 +0000 (UTC) (envelope-from qinchenchong@gmail.com) Received: from mail-ob0-x229.google.com (mail-ob0-x229.google.com [IPv6:2607:f8b0:4003:c01::229]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id F1F752023; Wed, 24 Jul 2013 13:38:44 +0000 (UTC) Received: by mail-ob0-f169.google.com with SMTP id up14so13222651obb.28 for ; Wed, 24 Jul 2013 06:38:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=PxBOux43aHtvJrnKz8OdFECejFkJRikLYQWa3q8/zaY=; b=sDa4FFcekc+95M739WXCW0dt9UsR471vF6mfNQM4+tXiQugMUWMXDoUjYaZWlK/xLr cBhJtTv2mOr0UBdndPXcTEXIaZh6AkMKs7MTRXX0DlE3TSBRC31iSDLjO0BOwULFcdsM r5QmggMv8wzEERZ6usrkO599zfM99Jr4fTZ3UnTPo0vaz2basuPmE9wc0iJ3YY2YJEd4 lxoukgurDZz/bq+iRimgCMZEvkssqXS5/MJW6JH3tnbdQF9vFtM8FncHO3i1VgF7EX+w Y0A3uFidCGjhmeWoWfKHR9+H29naKAgG4nGo1KNpMeS5bIWUHVIpLWzx3D2lOSA+okRA x3AA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=PxBOux43aHtvJrnKz8OdFECejFkJRikLYQWa3q8/zaY=; b=ANnPwqvmf+NM/XjYHd6HSslXmLN+zS07pP6GIL5XywtwDZR08mdevcu6vvSR/9jxXP c7Fz1tUOoH4v9m5+sEpsIbzh5VJG9xDY6bTrGVzhiHrNQYRbnRPakIFws1eD9OqCG3bA BXs5jYRdXLn/KB6tneMvP0Crs+8p1I/Ebz1QysKWrc8LmE1LSgpUxnHxRkVOKaqUwwue tcH/6X3zvGGdKdUq9+k8nMsZzdmacZE4pJjjXHGWcSOenx31g75EFbeEjRk4RXbnni9s ypeE61/XuBTG1Al3PGQUUGrwn2bgnjZYdQmLxH3obcBSrW26mqRdt3WfgfCbnb2wv5UH sNag== MIME-Version: 1.0 X-Received: by 10.50.117.72 with SMTP id kc8mr417420igb.44.1374673124180; Wed, 24 Jul 2013 06:38:44 -0700 (PDT) Received: by 10.64.228.70 with HTTP; Wed, 24 Jul 2013 06:38:43 -0700 (PDT) In-Reply-To: References: Date: Wed, 24 Jul 2013 21:38:43 +0800 Message-ID: Subject: Re: Chenchong's work on net80211_ratectl From: Chenchong Qin To: Adrian Chadd Content-Type: multipart/mixed; boundary=089e013a08443fd10d04e24207d6 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: freebsd-wireless@freebsd.org X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Jul 2013 13:38:45 -0000 --089e013a08443fd10d04e24207d6 Content-Type: text/plain; charset=ISO-8859-1 My pleasure! It's also against HEAD. Thanks! On Wed, Jul 24, 2013 at 9:15 PM, Adrian Chadd wrote: > cool! > > Would you mind posting an updated diff? > > > > -adrian > > On 24 July 2013 01:39, Chenchong Qin wrote: > > > > Hi! > > > > Thanks for your constructive feedback! > > > > First, I've done some renaming things. IEEE80211_RATECTL_OPT_* became > > IEEE80211_RATECTL_CAP_* and options in ieee80211_ratectl became > > ir_capabilities. > > > > As for max4msframelen , I re-added this field and also ported > > ath_max_4ms_framelen[4][32] to ieee80211_ratectl. > > > > An error is also corrected (about initialization of ir_capabilities). > > > > > > On Tue, Jul 23, 2013 at 10:30 PM, Adrian Chadd > wrote: > >> > >> > >> * Why do you have IEEE80211_RATECTL_OPT_MULTXCHAIN ? > > > > > > IEEE80211_RATECTL_OPT_MULTXCHAIN is used in > ieee80211_ratectl_hascap_stbc() > > to assist the determination of whether we can enable STBC. > > > >> * The reason why I check both the vap/ic and the node bits for HT > >> capabilities is that they're negotiated. The node bits are what the > >> remote peer supports. The vap/ic bits are what the local device/vap > >> supports. So, if the remote node supports STBC and the local node > >> doesn't, we shouldn't try transmitting short-GI. > > > > > > uh... I also do the "double check" stuff. Do the > ieee80211_ratectl_hascap_* > > functions do > > wrong things? And, I'm not very clear about the relation between STBC and > > short-GI now. > > It seems that I need some further reading. :) > > > >> > >> * In ieee80211_ratectl_complete_rcflags(), enabling RTS/CTS but not > >> transmitting an 11n rate isn't "right." The 11n hardware supports > >> per-rate RTS/CTS for non-HT rates. You have to ensure that works. > >> You've added a capability bit for this (IEEE80211_RATECTL_OPT_MRRPROT) > >> so you should use it. > > > > > > Yeah... here my logic messed up. It's corrected. > > > >> > >> * the new rate field "options" should be "ir_options", like how the > >> rest of the fields are prefixed with ir_ > >> * .. and, nitpicking, it should be "ir_capabilities". > >> > > > > It's already done. > > > > > > Thanks! > > > > Chenchong > > > > > --089e013a08443fd10d04e24207d6 Content-Type: application/octet-stream; name="20130724-net80211-ratectl.diff" Content-Disposition: attachment; filename="20130724-net80211-ratectl.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hjikuzy40 SW5kZXg6IG5ldDgwMjExL2llZWU4MDIxMV9yYXRlY3RsLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbmV0ODAy MTEvaWVlZTgwMjExX3JhdGVjdGwuYwkocmV2aXNpb24gMjU0ODI2KQorKysgbmV0ODAyMTEvaWVl ZTgwMjExX3JhdGVjdGwuYwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qLQogICog Q29weXJpZ2h0IChjKSAyMDEwIFJ1aSBQYXVsbyA8cnBhdWxvQEZyZWVCU0Qub3JnPgorICogQ29w eXJpZ2h0IChjKSAyMDEzIENoZW5jaG9uZyBRaW4gPGNjcWluQEZyZWVCU0Qub3JnPgogICogQWxs IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ5LDYgKzUwLDMzIEBACiAK IE1BTExPQ19ERUZJTkUoTV84MDIxMV9SQVRFQ1RMLCAiODAyMTFyYXRlY3RsIiwgIjgwMi4xMSBy YXRlIGNvbnRyb2wiKTsKIAoraW50IG1heF80bXNfZnJhbWVsZW5bNF1bMzJdID0geworCVtNQ1Nf SFQyMF0gPSB7CisJCTMyMTIsICA2NDMyLCAgOTY0OCwgIDEyODY0LCAgMTkzMDAsICAyNTczNiwg IDI4OTUyLCAgMzIxNzIsCisJCTY0MjQsICAxMjg1MiwgMTkyODAsIDI1NzA4LCAgMzg1NjgsICA1 MTQyNCwgIDU3ODUyLCAgNjQyODAsCisJCTk2MjgsICAxOTI2MCwgMjg4OTYsIDM4NTI4LCAgNTc3 OTIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJCTEyODI4LCAyNTY1NiwgMzg0ODgsIDUxMzIw LCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJfSwKKwlbTUNTX0hUMjBfU0dJXSA9 IHsKKwkJMzU3MiwgIDcxNDQsICAxMDcyMCwgIDE0Mjk2LCAgMjE0NDQsICAyODU5NiwgIDMyMTcy LCAgMzU3NDQsCisJCTcxNDAsICAxNDI4NCwgMjE0MjgsICAyODU2OCwgIDQyODU2LCAgNTcxNDQs ICA2NDI4OCwgIDY1NTMyLAorCQkxMDcwMCwgMjE0MDgsIDMyMTEyLCAgNDI4MTYsICA2NDIyOCwg IDY1NTMyLCAgNjU1MzIsICA2NTUzMiwKKwkJMTQyNTYsIDI4NTE2LCA0Mjc4MCwgIDU3MDQwLCAg NjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJfSwKKwlbTUNTX0hUNDBdID0geworCQk2 NjgwLCAgMTMzNjAsICAyMDA0NCwgIDI2NzI0LCAgNDAwOTIsICA1MzQ1NiwgIDYwMTQwLCAgNjU1 MzIsCisJCTEzMzQ4LCAyNjcwMCwgIDQwMDUyLCAgNTM0MDAsICA2NTUzMiwgIDY1NTMyLCAgNjU1 MzIsICA2NTUzMiwKKwkJMjAwMDQsIDQwMDA4LCAgNjAwMTYsICA2NTUzMiwgIDY1NTMyLCAgNjU1 MzIsICA2NTUzMiwgIDY1NTMyLAorCQkyNjY0NCwgNTMyOTIsICA2NTUzMiwgIDY1NTMyLCAgNjU1 MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJfSwKKwlbTUNTX0hUNDBfU0dJXSA9IHsKKwkJ NzQyMCwgIDE0ODQ0LCAgMjIyNzIsICAyOTY5NiwgIDQ0NTQ0LCAgNTkzOTYsICA2NTUzMiwgIDY1 NTMyLAorCQkxNDgzMiwgMjk2NjgsICA0NDUwNCwgIDU5MzQwLCAgNjU1MzIsICA2NTUzMiwgIDY1 NTMyLCAgNjU1MzIsCisJCTIyMjMyLCA0NDQ2NCwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwgIDY1 NTMyLCAgNjU1MzIsICA2NTUzMiwKKwkJMjk2MTYsIDU5MjMyLCAgNjU1MzIsICA2NTUzMiwgIDY1 NTMyLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLAorCX0KK307CisKIHZvaWQKIGllZWU4MDIxMV9y YXRlY3RsX3JlZ2lzdGVyKGludCB0eXBlLCBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JhdGVjdGwg KnJhdGVjdGwpCiB7CkBAIC02NiwxMCArOTQsMTEgQEAKIH0KIAogdm9pZAotaWVlZTgwMjExX3Jh dGVjdGxfaW5pdChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXApCitpZWVlODAyMTFfcmF0ZWN0bF9p bml0KHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgdWludDMyX3QgY2FwYWJpbGl0aWVzKQogewog CWlmICh2YXAtPml2X3JhdGUgPT0gcmF0ZWN0bHNbSUVFRTgwMjExX1JBVEVDVExfTk9ORV0pCiAJ CWllZWU4MDIxMV9yYXRlY3RsX3NldCh2YXAsIElFRUU4MDIxMV9SQVRFQ1RMX0FNUlIpOworCXZh cC0+aXZfcmF0ZS5pcl9jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7CiAJdmFwLT5pdl9yYXRl LT5pcl9pbml0KHZhcCk7CiB9CiAKQEAgLTkwLDMgKzExOSw5NSBAQAogCX0KIAl2YXAtPml2X3Jh dGUgPSByYXRlY3Rsc1t0eXBlXTsKIH0KKwordm9pZAoraWVlZTgwMjExX3JhdGVjdGxfY29tcGxl dGVfcmNmbGFncyhjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLAorCQlzdHJ1Y3QgaWVl ZTgwMjExX3JjX3NlcmllcyAqcmMsIGludCBzaG9ydFByZWFtYmxlKQoreworCWNvbnN0IHN0cnVj dCBpZWVlODAyMTFjb20gKmljID0gbmktPm5pX2ljOworCWNvbnN0IHN0cnVjdCBpZWVlODAyMTF2 YXAgKnZhcCA9IG5pLT5uaV92YXA7CisJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlX3RhYmxl ICogcnQgPSBpYy0+aWNfcnQ7CisJdWludDhfdCByYXRlOworCWludCBpOworCisJLyogTWFrZSBz dXJlIHRoYXQgcmF0ZSBjb250cm9sIGNvZGUgZG9lc24ndCBtZXNzIGl0IHVwLgorCSAqIElmIGVu YWJsZSBydHMvY3RzIGFuZCBpcyBwcmUtODAyLjExbiwgYmxhbmsgdHJpZXMgMSwgMiwgMyAKKwkg Ki8KKworCWlmICghICh2YXAtPml2X3JhdGUtPmlyX2NhcGFiaWxpdGllcyAmIElFRUU4MDIxMV9S QVRFQ1RMX0NBUF9NUlJQUk9UKSkKKwl7CisJCWZvciAoaSA9IDE7IGkgPCBJRUVFODAyMTFfUkFU RUNUTF9OVU07IGkrKykKKwkJeworCQkJaWYgKHJjWzBdLmZsYWdzICYgSUVFRTgwMjExX1JBVEVD VExfUlRTQ1RTX0ZMQUcpCisJCQkJcmNbaV0udHJpZXMgPSAwOworCQkJcmNbaV0uZmxhZ3MgJj0g fklFRUU4MDIxMV9SQVRFQ1RMX1JUU0NUU19GTEFHOyAKKwkJfQorCX0KKworCWZvciAoaSA9IDA7 IGkgPCBJRUVFODAyMTFfUkFURUNUTF9OVU07IGkrKykgeworCQkKKwkJaWYgKHJjW2ldLnRyaWVz ID09IDApCisJCQljb250aW51ZTsKKworCQlyYXRlID0gcnQtPmluZm9bcmNbaV0ucml4XS5yYXRl Q29kZTsKKworCQkvKgorCQkgKiBPbmx5IGVuYWJsZSBzaG9ydCBwcmVhbWJsZSBmb3IgbGVnYWN5 IHJhdGVzCisJCSAqLworCQlpZiAoKCEgSVNfSFRfUkFURShyYXRlKSkgJiYgc2hvcnRQcmVhbWJs ZSkKKwkJCXJhdGUgfD0gcnQtPmluZm9bcmNbaV0ucml4XS5zaG9ydFByZWFtYmxlOworCisJCS8q CisJCSAqIFNhdmUgdGhpcywgdXNlZCBieSB0aGUgVFggYW5kIGNvbXBsZXRpb24gY29kZQorCQkg Ki8KKwkJcmNbaV0ucmF0ZWNvZGUgPSByYXRlOworCisJCS8qIE9ubHkgZW5hYmxlIHNob3J0Z2ks IDIwNDAsIGR1YWwtc3RyZWFtIGlmIEhUIGlzIHNldCAqLworCQlpZiAoSVNfSFRfUkFURShyYXRl KSkgeworCQkJcmNbaV0uZmxhZ3MgfD0gSUVFRTgwMjExX1JBVEVDVExfSFRfRkxBRzsKKworCQkJ LyoKKwkJCSAqIFhYWCBUT0RPOiBMRFBDCisJCQkgKi8KKworCQkJLyoKKwkJCSAqIER1YWwgLyBU cmlwbGUgc3RyZWFtIHJhdGU/CisJCQkgKi8KKwkJCWlmIChIVF9SQ18yX1NUUkVBTVMocmF0ZSkg PT0gMikKKwkJCQlyY1tpXS5mbGFncyB8PSBJRUVFODAyMTFfUkFURUNUTF9EU19GTEFHOworCQkJ ZWxzZSBpZiAoSFRfUkNfMl9TVFJFQU1TKHJhdGUpID09IDMpCisJCQkJcmNbaV0uZmxhZ3MgfD0g SUVFRTgwMjExX1JBVEVDVExfVFNfRkxBRzsKKwkJfQorCisJCS8qCisJCSAqIENhbGN1bGF0ZSB0 aGUgbWF4aW11bSBUWCBwb3dlciBjYXAgZm9yIHRoZSBjdXJyZW50CisJCSAqIG5vZGUuIAorCQkg KiBSYXRlIGNvbnRyb2wgYWxnbyBjYW4ndCBjb250cm9sIFRYIHBvd2VyIGJ5IG5vdy4KKwkJICov CisJCXJjW2ldLnR4X3Bvd2VyX2NhcCA9IGllZWU4MDIxMV9nZXRfbm9kZV90eHBvd2VyKG5pKTsK KwkJCisJCS8qCisJCSAqIENhbGN1bGF0ZSB0aGUgbWF4aW11bSA0bXMgZnJhbWUgbGVuZ3RoIGJh c2VkCisJCSAqIG9uIHRoZSBNQ1MgcmF0ZSwgU0dJIGFuZCBjaGFubmVsIHdpZHRoIGZsYWdzLgor CQkgKi8KKwkJaWYgKChyY1tpXS5mbGFncyAmIElFRUU4MDIxMV9SQVRFQ1RMX0hUX0ZMQUcpICYm CisJCSAgICAoSFRfUkNfMl9NQ1MocmF0ZSkgPCAzMikpIHsKKwkJCWludCBqOworCQkJaWYgKHJj W2ldLmZsYWdzICYgSUVFRTgwMjExX1JBVEVDVExfQ1c0MF9GTEFHKSB7CisJCQkJaWYgKHJjW2ld LmZsYWdzICYgSUVFRTgwMjExX1JBVEVDVExfU0dJX0ZMQUcpCisJCQkJCWogPSBNQ1NfSFQ0MF9T R0k7CisJCQkJZWxzZQorCQkJCQlqID0gTUNTX0hUNDA7CisJCQl9IGVsc2UgeworCQkJCWlmIChy Y1tpXS5mbGFncyAmIElFRUU4MDIxMV9SQVRFQ1RMX1NHSV9GTEFHKQorCQkJCQlqID0gTUNTX0hU MjBfU0dJOworCQkJCWVsc2UKKwkJCQkJaiA9IE1DU19IVDIwOworCQkJfQorCQkJcmNbaV0ubWF4 NG1zZnJhbWVsZW4gPQorCQkJICAgIG1heF80bXNfZnJhbWVsZW5bal1bSFRfUkNfMl9NQ1MocmF0 ZSldOworCQl9IGVsc2UKKwkJCXJjW2ldLm1heDRtc2ZyYW1lbGVuID0gMDsKKwl9Cit9CisKSW5k ZXg6IG5ldDgwMjExL2llZWU4MDIxMV9yYXRlY3RsLmgKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbmV0ODAyMTEv aWVlZTgwMjExX3JhdGVjdGwuaAkocmV2aXNpb24gMjU0ODI2KQorKysgbmV0ODAyMTEvaWVlZTgw MjExX3JhdGVjdGwuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qLQogICogQ29w eXJpZ2h0IChjKSAyMDEwIFJ1aSBQYXVsbyA8cnBhdWxvQEZyZWVCU0Qub3JnPgorICogQ29weXJp Z2h0IChjKSAyMDEzIENoZW5jaG9uZyBRaW4gPGNjcWluQEZyZWVCU0Qub3JnPgogICogQWxsIHJp Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI0LDYgKzI1LDggQEAKICAqCiAg KiAkRnJlZUJTRCQKICAqLworI2lmbmRlZiBfTkVUODAyMTFfSUVFRTgwMjExX1JBVEVDVExfSF8K KyNkZWZpbmUgX05FVDgwMjExX0lFRUU4MDIxMV9SQVRFQ1RMX0hfCiAKIGVudW0gaWVlZTgwMjEx X3JhdGVhbGdzIHsKIAlJRUVFODAyMTFfUkFURUNUTF9BTVJSCQk9IDAsCkBAIC0zNCwxMSArMzcs NTYgQEAKIAlJRUVFODAyMTFfUkFURUNUTF9NQVgKIH07CiAKK2VudW0geworCU1DU19IVDIwLAor CU1DU19IVDIwX1NHSSwKKwlNQ1NfSFQ0MCwKKwlNQ1NfSFQ0MF9TR0ksCit9OworCiAjZGVmaW5l CUlFRUU4MDIxMV9SQVRFQ1RMX1RYX1NVQ0NFU1MJMQogI2RlZmluZQlJRUVFODAyMTFfUkFURUNU TF9UWF9GQUlMVVJFCTAKIAorI2RlZmluZQlJRUVFODAyMTFfUkFURUNUTF9UUlVFCQkxCisjZGVm aW5lCUlFRUU4MDIxMV9SQVRFQ1RMX0ZBTFNFCQkwCisKKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVD VExfTlVNCQk0CisKKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfRFNfRkxBRwkJMHgwMQkvKiBk dWFsLXN0cmVhbSByYXRlICovCisjZGVmaW5lCUlFRUU4MDIxMV9SQVRFQ1RMX0NXNDBfRkxBRwkJ MHgwMgkvKiB1c2UgSFQ0MCAqLworI2RlZmluZQlJRUVFODAyMTFfUkFURUNUTF9TR0lfRkxBRwkJ MHgwNAkvKiB1c2Ugc2hvcnQtR0kgKi8KKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfSFRfRkxB RwkJMHgwOAkvKiB1c2UgSFQgKi8KKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfUlRTQ1RTX0ZM QUcJMHgxMAkvKiBlbmFibGUgUlRTL0NUUyBwcm90ZWN0aW9uICovCisjZGVmaW5lCUlFRUU4MDIx MV9SQVRFQ1RMX1NUQkNfRkxBRwkJMHgyMAkvKiBlbmFibGUgU1RCQyAqLworI2RlZmluZQlJRUVF ODAyMTFfUkFURUNUTF9UU19GTEFHCQkweDQwCS8qIHRyaXBsZS1zdHJlYW0gcmF0ZSAqLworCisv KiBIYXJkd2FyZSBDQVBzIGNoaXAgb2ZmZXJlZCB0byByYXRlIGNvbnRyb2wgY29kZSAqLworI2Rl ZmluZQlJRUVFODAyMTFfUkFURUNUTF9DQVBfTVJSCQkJMHgwMQkvKiBzdXBwb3J0IE1SUiAqLwor I2RlZmluZQlJRUVFODAyMTFfUkFURUNUTF9DQVBfTVJSUFJPVAkJMHgwMgkvKiBzdXBwb3J0IE1S UiArIHByb3RlY3QgKi8KKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfQ0FQX01VTFRYQ0hBSU4J MHgwNAkvKiBoYXMgbW9yZSB0aGFuIDEgdHhjaGFpbiAqLworCisjZGVmaW5lIElTX1ZBUF9IVCh2 YXApCSgodmFwKS0+aXZfaHRjYXBzICYgSUVFRTgwMjExX0hUQ19IVCkKKworI2RlZmluZSBJU19I VF9SQVRFKF9yYXRlKSAgICgoX3JhdGUpICYgMHg4MCkKKyNkZWZpbmUgSFRfUkNfMl9NQ1MoX3Jj KSAgICAoKF9yYykgJiAweDdmKQorI2RlZmluZSBIVF9SQ18yX1NUUkVBTVMoX3JjKSAgICAoKCgo X3JjKSAmIDB4NzgpID4+IDMpICsgMSkKKworCitleHRlcm4gaW50IG1heF80bXNfZnJhbWVsZW5b NF1bMzJdOworCitzdHJ1Y3QgaWVlZTgwMjExX3JjX3NlcmllcyB7CisJdWludDhfdCByaXg7CQkv KiByYXRldGFibGUgaW5kZXgsIG5vdCByYXRlIGNvZGUgKi8KKwl1aW50OF90IHJhdGVjb2RlOwkv KiBoYXJkd2FyZSByYXRlIGNvZGUgKi8KKwl1aW50OF90IHRyaWVzOworCXVpbnQ4X3QgdHhfcG93 ZXJfY2FwOworCXVpbnQxNl90IGZsYWdzOworCXVpbnQxNl90IG1heDRtc2ZyYW1lbGVuOworfTsK Kwogc3RydWN0IGllZWU4MDIxMV9yYXRlY3RsIHsKIAljb25zdCBjaGFyICppcl9uYW1lOworCXVp bnQzMl90IGlyX2NhcGFiaWxpdGllczsJCS8qIGhhcmR3YXJlIGNhcGFiaWxpdGllcyBvZmZlcmVk IHRvIHJjICovCisKIAlpbnQJKCppcl9hdHRhY2gpKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAg Kik7CiAJdm9pZAkoKmlyX2RldGFjaCkoY29uc3Qgc3RydWN0IGllZWU4MDIxMXZhcCAqKTsKIAl2 b2lkCSgqaXJfaW5pdCkoc3RydWN0IGllZWU4MDIxMXZhcCAqKTsKQEAgLTQ2LDYgKzk0LDggQEAK IAl2b2lkCSgqaXJfbm9kZV9pbml0KShzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKik7CiAJdm9pZAko KmlyX25vZGVfZGVpbml0KShzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKik7CiAJaW50CSgqaXJfcmF0 ZSkoc3RydWN0IGllZWU4MDIxMV9ub2RlICosIHZvaWQgKiwgdWludDMyX3QpOworCXZvaWQJKCpp cl9yYXRlcykoc3RydWN0IGllZWU4MDIxMV9ub2RlICosIHN0cnVjdCBpZWVlODAyMTFfcmNfc2Vy aWVzICosIAorCQkJCQkgIGludCwgc2l6ZV90KTsKIAl2b2lkCSgqaXJfdHhfY29tcGxldGUpKGNv bnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKiwKIAkgICAgCQkJICBjb25zdCBzdHJ1Y3QgaWVlZTgw MjExX25vZGUgKiwgaW50LAogCSAgICAJCQkgIHZvaWQgKiwgdm9pZCAqKTsKQEAgLTU3LDggKzEw NywxMCBAQAogCiB2b2lkCWllZWU4MDIxMV9yYXRlY3RsX3JlZ2lzdGVyKGludCwgY29uc3Qgc3Ry dWN0IGllZWU4MDIxMV9yYXRlY3RsICopOwogdm9pZAlpZWVlODAyMTFfcmF0ZWN0bF91bnJlZ2lz dGVyKGludCk7Ci12b2lkCWllZWU4MDIxMV9yYXRlY3RsX2luaXQoc3RydWN0IGllZWU4MDIxMXZh cCAqKTsKK3ZvaWQJaWVlZTgwMjExX3JhdGVjdGxfaW5pdChzdHJ1Y3QgaWVlZTgwMjExdmFwICos IHVpbnQzMl90KTsKIHZvaWQJaWVlZTgwMjExX3JhdGVjdGxfc2V0KHN0cnVjdCBpZWVlODAyMTF2 YXAgKiwgaW50KTsKK3ZvaWQJaWVlZTgwMjExX3JhdGVjdGxfY29tcGxldGVfcmNmbGFncyhjb25z dCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKiwgCisJCXN0cnVjdCBpZWVlODAyMTFfcmNfc2VyaWVz ICosIGludCkKIAogTUFMTE9DX0RFQ0xBUkUoTV84MDIxMV9SQVRFQ1RMKTsKIApAQCAtOTMsNiAr MTQ1LDE3IEBACiB9CiAKIHN0YXRpYyB2b2lkIF9faW5saW5lCitpZWVlODAyMTFfcmF0ZWN0bF9y YXRlcyhzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3QgaWVlZTgwMjExX3JjX3Nlcmll cyAqcmMsCisJCWludCBzaG9ydFByZWFtYmxlLCBzaXplX3QgZnJhbWVMZW4pCit7CisJY29uc3Qg c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gbmktPm5pX3ZhcDsKKworCXZhcC0+aXZfcmF0ZS0+ aXJfcmF0ZXMobmksIHJjLCBzaG9ydFByZWFtYmxlLCBmcmFtZUxlbik7CisJCisJaWVlZTgwMjEx X3JhdGVjdGxfY29tcGxldGVfcmNmbGFncyhuaSwgcmMsIHNob3J0UHJlYW1ibGUpOworfQorCitz dGF0aWMgdm9pZCBfX2lubGluZQogaWVlZTgwMjExX3JhdGVjdGxfdHhfY29tcGxldGUoY29uc3Qg c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAogICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbm9k ZSAqbmksIGludCBzdGF0dXMsIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIpCiB7CkBAIC0xMTUsMyAr MTc4LDQwIEBACiAJCXJldHVybjsKIAl2YXAtPml2X3JhdGUtPmlyX3NldGludGVydmFsKHZhcCwg bXNlY3MpOwogfQorCitzdGF0aWMgaW50IF9faW5saW5lCitpZWVlODAyMTFfcmF0ZWN0bF9oYXNj YXBfY3c0MChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsCisJCWNvbnN0IHN0cnVjdCBp ZWVlODAyMTFfbm9kZSAqbmkpCit7CisJcmV0dXJuIElTX1ZBUF9IVCh2YXApICYmIChuaS0+bmlf Y2h3ID09IDQwKTsKK30KKworc3RhdGljIGludCBfX2lubGluZQoraWVlZTgwMjExX3JhdGVjdGxf aGFzY2FwX3Nob3J0Z2koY29uc3Qgc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAorCQljb25zdCBz dHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQoreworCWlmICghIElTX1ZBUF9IVCh2YXApKQorCQly ZXR1cm4gSUVFRTgwMjExX1JBVEVDVExfRkFMU0U7CisKKwlpZiAobmktPm5pX2NodyA9PSA0MCAm JgorCQkJdmFwLT5pdl9odGNhcHMgJiBJRUVFODAyMTFfSFRDQVBfU0hPUlRHSTQwICYmCisJCQlu aS0+bmlfaHRjYXAgJiBJRUVFODAyMTFfSFRDQVBfU0hPUlRHSTQwKQorCQlyZXR1cm4gSUVFRTgw MjExX1JBVEVDVExfVFJVRTsKKworCWlmIChuaS0+bmlfY2h3ID09IDIwICYmCisJCQl2YXAtPml2 X2h0Y2FwcyAmIElFRUU4MDIxMV9IVENBUF9TSE9SVEdJMjAgJiYKKwkJCW5pLT5uaV9odGNhcCAm IElFRUU4MDIxMV9IVENBUF9TSE9SVEdJMjApCisJCXJldHVybiBJRUVFODAyMTFfUkFURUNUTF9U UlVFOworfQorCisKK3N0YXRpYyBpbnQgX19pbmxpbmUKK2llZWU4MDIxMV9yYXRlY3RsX2hhc2Nh cF9zdGJjKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwKKwkJY29uc3Qgc3RydWN0IGll ZWU4MDIxMV9ub2RlICpuaSkKK3sKKyAgIHJldHVybiBJU19WQVBfSFQodmFwKSAmJiAodmFwLT5p dl9odGNhcHMgJiBJRUVFODAyMTFfSFRDQVBfVFhTVEJDKSAmJgorCQkJICAgIChuaS0+bmlfaHRj YXAgJiBJRUVFODAyMTFfSFRDQVBfUlhTVEJDXzFTVFJFQU0pICYmCisJCQkgICAgKHZhcC0+aXZf cmF0ZS0+aXJfY2FwYWJpbGl0aWVzICYgSUVFRTgwMjExX1JBVEVDVExfQ0FQX01VTFRYQ0hBSU4p OworfQorCisjZW5kaWYK --089e013a08443fd10d04e24207d6--