From owner-freebsd-wireless@FreeBSD.ORG Sun Aug 25 05:52:16 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 42C39499 for ; Sun, 25 Aug 2013 05:52:16 +0000 (UTC) (envelope-from cg@cgross.info) Received: from alpha.kreiz-it.fr (alpha.kreiz-it.fr [IPv6:2001:41d0:8:dda6::1]) by mx1.freebsd.org (Postfix) with ESMTP id 03C6229A5 for ; Sun, 25 Aug 2013 05:52:15 +0000 (UTC) Received: from DirTech (lnr56-1-82-246-51-185.fbx.proxad.net [82.246.51.185]) by alpha.kreiz-it.fr (Postfix) with ESMTPSA id DC67480A; Sun, 25 Aug 2013 07:52:13 +0200 (CEST) From: "Cedric GROSS" To: "'Eitan Adler'" References: In-Reply-To: Subject: RE: patch for intel centrino ? Date: Sun, 25 Aug 2013 07:52:11 +0200 Message-ID: <000601cea157$3fbc8830$bf359890$@info> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Ac6g6Ce++n1//Ul+TWCCAIjpeThY3AAblmHw Content-Language: fr 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: Sun, 25 Aug 2013 05:52:16 -0000 > De=A0: owner-freebsd-wireless@freebsd.org [mailto:owner-freebsd- > wireless@freebsd.org] De la part de Eitan Adler > Envoy=E9=A0: samedi 24 ao=FBt 2013 18:36 > =C0=A0: freebsd-wireless@freebsd.org > Objet=A0: patch for intel centrino ? >=20 > Hi, Hello, >=20 > I have a 'intel centrino wireless-N 2200 BGN', I heard there is a = patch > to -HEAD, where is it? Is it ready for testing? Have a look to ML history, you will find it with topic "RE: iwn(4) = changes, net80211(4) changes, things may be odd". Or you can fork my github repo : https://github.com/KreizIT/FreeBSD-IWN = and use the LKGV branch. > Does it apply against 9-STABLE as well? No but you can test it ;) >=20 > -- > Eitan Adler BR. Cedric From owner-freebsd-wireless@FreeBSD.ORG Sun Aug 25 11:41:11 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 59B281D8 for ; Sun, 25 Aug 2013 11:41:11 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qa0-x22f.google.com (mail-qa0-x22f.google.com [IPv6:2607:f8b0:400d:c00::22f]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 1B4FC292E for ; Sun, 25 Aug 2013 11:41:11 +0000 (UTC) Received: by mail-qa0-f47.google.com with SMTP id o19so838476qap.13 for ; Sun, 25 Aug 2013 04:41:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=rTpURe8KJ0AyxIrPviDf8A4KDoq0InM0sggEdq0YOHQ=; b=cMCKwlE62wtEYVPQLSMLQaHs6VCHFzAx3ZOo3xSonVGeEpPdhi2lFK90dR8DFmMUvg ynTEwhqamM3Kgyz9d0eR8wbIYgYPYlNDd3bqWc67ax4ZV5hkxRJJ7YT/rEQtM5BYSTrU ug5/Mdb0J1q8VQZnNFOG1jyTgpD7DSW9JQ59ASXrivd6qzE4yDd2feTAO9WNXUGZF0cs c6R6lhZP7KAhq4rjUpNDMeWz6fw2GmIAwdMTV+z9v7WYpUhZw64q+guL28q0WcUVrLkW y1ppDTNZen3qdTujxm9IhbS4K/LF49zdcWcaJiowryLAcHD4uAVPTlJxEHNoPR8myZ9o eWZg== MIME-Version: 1.0 X-Received: by 10.49.70.164 with SMTP id n4mr385637qeu.82.1377430870090; Sun, 25 Aug 2013 04:41:10 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Sun, 25 Aug 2013 04:41:10 -0700 (PDT) In-Reply-To: <000601cea157$3fbc8830$bf359890$@info> References: <000601cea157$3fbc8830$bf359890$@info> Date: Sun, 25 Aug 2013 04:41:10 -0700 X-Google-Sender-Auth: 5bMgiBLkucf1ld4EZWIJoh3AEBA Message-ID: Subject: Re: patch for intel centrino ? From: Adrian Chadd To: Cedric GROSS Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable 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: Sun, 25 Aug 2013 11:41:11 -0000 Hi! I encourage people to test this out on all iwn(4) hardware, new and old. It needs to work on the older stuff (4965, 5100, etc) before I will merge it into -HEAD. Sorry I've not merged more, I've been busy with work and work travel. -adrian On 24 August 2013 22:52, Cedric GROSS wrote: > > De : owner-freebsd-wireless@freebsd.org [mailto:owner-freebsd- > > wireless@freebsd.org] De la part de Eitan Adler > > Envoy=E9 : samedi 24 ao=FBt 2013 18:36 > > =C0 : freebsd-wireless@freebsd.org > > Objet : patch for intel centrino ? > > > > Hi, > Hello, > > > > > I have a 'intel centrino wireless-N 2200 BGN', I heard there is a patch > > to -HEAD, where is it? Is it ready for testing? > > Have a look to ML history, you will find it with topic "RE: iwn(4) change= s, > net80211(4) changes, things may be odd". > > Or you can fork my github repo : https://github.com/KreizIT/FreeBSD-IWNan= d > use the LKGV branch. > > > Does it apply against 9-STABLE as well? > > No but you can test it ;) > > > > > -- > > Eitan Adler > > BR. > Cedric > > > _______________________________________________ > freebsd-wireless@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-wireless > To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@freebsd.or= g > " > From owner-freebsd-wireless@FreeBSD.ORG Sun Aug 25 14:30:02 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A85D3E1A; Sun, 25 Aug 2013 14:30:02 +0000 (UTC) (envelope-from qinchenchong@gmail.com) Received: from mail-vc0-x22d.google.com (mail-vc0-x22d.google.com [IPv6:2607:f8b0:400c:c03::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 33C3A206B; Sun, 25 Aug 2013 14:30:02 +0000 (UTC) Received: by mail-vc0-f173.google.com with SMTP id id13so1431904vcb.4 for ; Sun, 25 Aug 2013 07:30:01 -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=bu/p5U9sNV3fRwMAEO8I7Q0ESXRS4EdYPwoNePRWcBY=; b=fJCNi7CO/Zk22ynrVHkZUA7XbzOhUAsumpwXD7JLfDTRhI5x/74iY53kvHMxr65qI3 GBK+pzuwJ10uszUwF40qlqVBa7F1LGNqyc7EL4sTNVfNKAnY+uXUN+KMga8W0ns249Rl AnGE+6BK4RKepfj50gfxg4iQf15UBtEJHDQkqWKxsKsmZFEC79BPhZWSGFHzdtUFc8Cs nYv93cUAmv+7Ea5LLZPoU4jdC27e2r8hAELOIlj7/Pdzu8fpIIAcfkC9nI5UgCzk5XXH uKZazl/b3aYuQX2nCx8Nv9fJd4oF7mi959kDEzXxhGwpl5Va806TqBT65/vZyp1r/0Aa tU6w== MIME-Version: 1.0 X-Received: by 10.52.92.73 with SMTP id ck9mr8323707vdb.2.1377441001232; Sun, 25 Aug 2013 07:30:01 -0700 (PDT) Received: by 10.220.182.68 with HTTP; Sun, 25 Aug 2013 07:30:01 -0700 (PDT) In-Reply-To: References: Date: Sun, 25 Aug 2013 22:30:01 +0800 Message-ID: Subject: Re: Chenchong's work on net80211_ratectl From: Chenchong Qin To: Adrian Chadd Content-Type: multipart/mixed; boundary=20cf3071c88693e1e004e4c679b2 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: Sun, 25 Aug 2013 14:30:02 -0000 --20cf3071c88693e1e004e4c679b2 Content-Type: text/plain; charset=ISO-8859-1 Hi! This is the latest update. * add a simple per vap ratectl statistic tracker and api to update it. * port irn_capabilities to irs_capabilities in struct ieee80211_rc_stat. perhaps the capabilities field needs to be within ieee80211_rc_stat as a per vap atrribute. corresponding updates performed. * add ieee80211_ratectl_none.h to record common ratectl state. Thanks! Chenchong On Thu, Aug 15, 2013 at 8:03 PM, Chenchong Qin wrote: > Hi! > > Here is my latest update. In this update: > > * add a new struct, ieee80211_ratectl_node. This is the common state that > all per node rc > state, i.e. ieee80211_[amrr|sample]_node, should contains it as the > first field. It's now used to store > the capabilities. see below. > * rename ir_capabilities to irn_capabilities and move it to > ieee80211_ratectl_node (it contained in > ieee80211_[amrr|sample]_node). ieee80211_ratectl is readonly, so > ir_capabilities can't be set. And, > the capabilities is not a part of rc algo. It seems that it should be > put in the per node rc state. Interface > of ieee80211_ratectl_node_init() and its callers are updated. > References to ir_capabilities are also adapted. > * add ieee80211_ratectl_[node_is11n|get_rateset] to the ratectl api. rc > algoes all need these functions. > * change the naming conversion of IEEE80211_RATECTL_FLAG_*. > * some errors fixed. > > > On Thu, Aug 15, 2013 at 12:58 AM, Adrian Chadd wrote: > >> Hi! >> >> So yes, we do need to have a generic way of returning that completion >> information to the rate control code. >> >> I'm all for you churning the rate control API to return a struct >> ieee80211_rc_info in the complete function and totally just kill arg1/arg2. >> That forces us to extend ieee80211_rc_info to be "right" for all the >> drivers. >> > > Do you mean drop arg1/arg2 and pass pointer of ieee80211_rc_info to the > complete function directly? Or return it > when complete function return? > > >> What wifi devices do you have there? It looks like we're almost at the >> point where we can start converting a few things to use the modified rate >> control API and modules - notably iwn (which won't use the multi-rate retry >> stuff to begin with - it works "differently"..) and ath (which will use the >> multi-rate retry stuff and the sample rate control module.) >> > > Yeah, I have an AR9227 device at hand. > > And, I also get a question here. The ieee80211_ratetable doesn't get a > rateCode field. So, how we get the > ratecode of the non_ht rate? > > Thanks! > > Chenchong > > --20cf3071c88693e1e004e4c679b2 Content-Type: application/octet-stream; name="20130825-net80211-ratectl.diff" Content-Disposition: attachment; filename="20130825-net80211-ratectl.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hkscsnzn1 SW5kZXg6IHN5cy9kZXYvaXduL2lmX2l3bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYvaXduL2lm X2l3bi5jCShyZXZpc2lvbiAyNTQ4MjYpCisrKyBzeXMvZGV2L2l3bi9pZl9pd24uYwkod29ya2lu ZyBjb3B5KQpAQCAtODc2LDcgKzg3Niw4IEBACiAJaXZwLT5pdl9uZXdzdGF0ZSA9IHZhcC0+aXZf bmV3c3RhdGU7CiAJdmFwLT5pdl9uZXdzdGF0ZSA9IGl3bl9uZXdzdGF0ZTsKIAotCWllZWU4MDIx MV9yYXRlY3RsX2luaXQodmFwKTsKKwkvKiBYWFggVE9ETyBmaWxsIHRoZSBjYXAgKi8KKwlpZWVl ODAyMTFfcmF0ZWN0bF9pbml0KHZhcCwgMCk7CiAJLyogQ29tcGxldGUgc2V0dXAuICovCiAJaWVl ZTgwMjExX3ZhcF9hdHRhY2godmFwLCBpd25fbWVkaWFfY2hhbmdlLCBpZWVlODAyMTFfbWVkaWFf c3RhdHVzKTsKIAlpYy0+aWNfb3Btb2RlID0gb3Btb2RlOwpJbmRleDogc3lzL2Rldi9id2kvaWZf YndpLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9id2kvaWZfYndpLmMJKHJldmlzaW9uIDI1NDgy NikKKysrIHN5cy9kZXYvYndpL2lmX2J3aS5jCSh3b3JraW5nIGNvcHkpCkBAIC02MTcsNyArNjE3 LDggQEAKICNpZiAwCiAJdmFwLT5pdl91cGRhdGVfYmVhY29uID0gYndpX2JlYWNvbl91cGRhdGU7 CiAjZW5kaWYKLQlpZWVlODAyMTFfcmF0ZWN0bF9pbml0KHZhcCk7CisJLyogWFhYIFRPRE8gZmls bCB0aGUgY2FwICovCisJaWVlZTgwMjExX3JhdGVjdGxfaW5pdCh2YXAsIDApOwogCiAJLyogY29t cGxldGUgc2V0dXAgKi8KIAlpZWVlODAyMTFfdmFwX2F0dGFjaCh2YXAsIGJ3aV9tZWRpYV9jaGFu Z2UsIGllZWU4MDIxMV9tZWRpYV9zdGF0dXMpOwpJbmRleDogc3lzL2Rldi9id24vaWZfYnduLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gc3lzL2Rldi9id24vaWZfYnduLmMJKHJldmlzaW9uIDI1NDgyNikKKysr IHN5cy9kZXYvYnduL2lmX2J3bi5jCSh3b3JraW5nIGNvcHkpCkBAIC0yOTcwLDcgKzI5NzAsOCBA QAogCS8qIG92ZXJyaWRlIG1heCBhaWQgc28gc3RhJ3MgY2Fubm90IGFzc29jIHdoZW4gd2UncmUg b3V0IG9mIHN0YSBpZCdzICovCiAJdmFwLT5pdl9tYXhfYWlkID0gQldOX1NUQUlEX01BWDsKIAot CWllZWU4MDIxMV9yYXRlY3RsX2luaXQodmFwKTsKKwkvKiBYWFggVE9ETyBmaWxsIHRoZSBjYXAg Ki8KKwlpZWVlODAyMTFfcmF0ZWN0bF9pbml0KHZhcCwgMCk7CiAKIAkvKiBjb21wbGV0ZSBzZXR1 cCAqLwogCWllZWU4MDIxMV92YXBfYXR0YWNoKHZhcCwgaWVlZTgwMjExX21lZGlhX2NoYW5nZSwK SW5kZXg6IHN5cy9kZXYvdXNiL3dsYW4vaWZfdXJhbC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYv dXNiL3dsYW4vaWZfdXJhbC5jCShyZXZpc2lvbiAyNTQ4MjYpCisrKyBzeXMvZGV2L3VzYi93bGFu L2lmX3VyYWwuYwkod29ya2luZyBjb3B5KQpAQCAtNTk4LDcgKzU5OCw4IEBACiAKIAl1c2JfY2Fs bG91dF9pbml0X210eCgmdXZwLT5yYXRlY3RsX2NoLCAmc2MtPnNjX210eCwgMCk7CiAJVEFTS19J TklUKCZ1dnAtPnJhdGVjdGxfdGFzaywgMCwgdXJhbF9yYXRlY3RsX3Rhc2ssIHV2cCk7Ci0JaWVl ZTgwMjExX3JhdGVjdGxfaW5pdCh2YXApOworCS8qIFhYWCBUT0RPIGZpbGwgdGhlIGNhcCAqLwor CWllZWU4MDIxMV9yYXRlY3RsX2luaXQodmFwLCAwKTsKIAlpZWVlODAyMTFfcmF0ZWN0bF9zZXRp bnRlcnZhbCh2YXAsIDEwMDAgLyogMSBzZWMgKi8pOwogCiAJLyogY29tcGxldGUgc2V0dXAgKi8K SW5kZXg6IHN5cy9kZXYvdXNiL3dsYW4vaWZfcnVtLmMKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi91 c2Ivd2xhbi9pZl9ydW0uYwkocmV2aXNpb24gMjU0ODI2KQorKysgc3lzL2Rldi91c2Ivd2xhbi9p Zl9ydW0uYwkod29ya2luZyBjb3B5KQpAQCAtNjEzLDcgKzYxMyw4IEBACiAKIAl1c2JfY2FsbG91 dF9pbml0X210eCgmcnZwLT5yYXRlY3RsX2NoLCAmc2MtPnNjX210eCwgMCk7CiAJVEFTS19JTklU KCZydnAtPnJhdGVjdGxfdGFzaywgMCwgcnVtX3JhdGVjdGxfdGFzaywgcnZwKTsKLQlpZWVlODAy MTFfcmF0ZWN0bF9pbml0KHZhcCk7CisJLyogWFhYIFRPRE8gZmlsbCB0aGUgY2FwICovCisJaWVl ZTgwMjExX3JhdGVjdGxfaW5pdCh2YXAsIDApOwogCWllZWU4MDIxMV9yYXRlY3RsX3NldGludGVy dmFsKHZhcCwgMTAwMCAvKiAxIHNlYyAqLyk7CiAJLyogY29tcGxldGUgc2V0dXAgKi8KIAlpZWVl ODAyMTFfdmFwX2F0dGFjaCh2YXAsIGllZWU4MDIxMV9tZWRpYV9jaGFuZ2UsIGllZWU4MDIxMV9t ZWRpYV9zdGF0dXMpOwpJbmRleDogc3lzL2Rldi91c2Ivd2xhbi9pZl9ydW4uYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBzeXMvZGV2L3VzYi93bGFuL2lmX3J1bi5jCShyZXZpc2lvbiAyNTQ4MjYpCisrKyBzeXMv ZGV2L3VzYi93bGFuL2lmX3J1bi5jCSh3b3JraW5nIGNvcHkpCkBAIC04MjAsNyArODIwLDggQEAK IAlydnAtPm5ld3N0YXRlID0gdmFwLT5pdl9uZXdzdGF0ZTsKIAl2YXAtPml2X25ld3N0YXRlID0g cnVuX25ld3N0YXRlOwogCi0JaWVlZTgwMjExX3JhdGVjdGxfaW5pdCh2YXApOworCS8qIFhYWCBU T0RPIGZpbGwgdGhlIGNhcCAqLworCWllZWU4MDIxMV9yYXRlY3RsX2luaXQodmFwLCAwKTsKIAlp ZWVlODAyMTFfcmF0ZWN0bF9zZXRpbnRlcnZhbCh2YXAsIDEwMDAgLyogMSBzZWMgKi8pOwogCiAJ LyogY29tcGxldGUgc2V0dXAgKi8KSW5kZXg6IHN5cy9kZXYvdXNiL3dsYW4vaWZfenlkLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gc3lzL2Rldi91c2Ivd2xhbi9pZl96eWQuYwkocmV2aXNpb24gMjU0ODI2KQor Kysgc3lzL2Rldi91c2Ivd2xhbi9pZl96eWQuYwkod29ya2luZyBjb3B5KQpAQCAtNDk2LDcgKzQ5 Niw4IEBACiAJenZwLT5uZXdzdGF0ZSA9IHZhcC0+aXZfbmV3c3RhdGU7CiAJdmFwLT5pdl9uZXdz dGF0ZSA9IHp5ZF9uZXdzdGF0ZTsKIAotCWllZWU4MDIxMV9yYXRlY3RsX2luaXQodmFwKTsKKwkv KiBYWFggVE9ETyBmaWxsIHRoZSBjYXAgKi8KKwlpZWVlODAyMTFfcmF0ZWN0bF9pbml0KHZhcCwg MCk7CiAJaWVlZTgwMjExX3JhdGVjdGxfc2V0aW50ZXJ2YWwodmFwLCAxMDAwIC8qIDEgc2VjICov KTsKIAogCS8qIGNvbXBsZXRlIHNldHVwICovCkluZGV4OiBzeXMvZGV2L3dwaS9pZl93cGkuYwo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBzeXMvZGV2L3dwaS9pZl93cGkuYwkocmV2aXNpb24gMjU0ODI2KQorKysg c3lzL2Rldi93cGkvaWZfd3BpLmMJKHdvcmtpbmcgY29weSkKQEAgLTc4Miw3ICs3ODIsOCBAQAog CXd2cC0+bmV3c3RhdGUgPSB2YXAtPml2X25ld3N0YXRlOwogCXZhcC0+aXZfbmV3c3RhdGUgPSB3 cGlfbmV3c3RhdGU7CiAKLQlpZWVlODAyMTFfcmF0ZWN0bF9pbml0KHZhcCk7CisJLyogWFhYIFRP RE8gZmlsbCB0aGUgY2FwICovCisJaWVlZTgwMjExX3JhdGVjdGxfaW5pdCh2YXAsIDApOwogCS8q IGNvbXBsZXRlIHNldHVwICovCiAJaWVlZTgwMjExX3ZhcF9hdHRhY2godmFwLCBpZWVlODAyMTFf bWVkaWFfY2hhbmdlLCBpZWVlODAyMTFfbWVkaWFfc3RhdHVzKTsKIAlpYy0+aWNfb3Btb2RlID0g b3Btb2RlOwpJbmRleDogc3lzL2Rldi9yYWwvcnQyNTYwLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rl di9yYWwvcnQyNTYwLmMJKHJldmlzaW9uIDI1NDgyNikKKysrIHN5cy9kZXYvcmFsL3J0MjU2MC5j CSh3b3JraW5nIGNvcHkpCkBAIC00MjYsNyArNDI2LDggQEAKIAl2YXAtPml2X25ld3N0YXRlID0g cnQyNTYwX25ld3N0YXRlOwogCXZhcC0+aXZfdXBkYXRlX2JlYWNvbiA9IHJ0MjU2MF9iZWFjb25f dXBkYXRlOwogCi0JaWVlZTgwMjExX3JhdGVjdGxfaW5pdCh2YXApOworCS8qIFhYWCBUT0RPIGZp bGwgdGhlIGNhcCAqLworCWllZWU4MDIxMV9yYXRlY3RsX2luaXQodmFwLCAwKTsKIAkvKiBjb21w bGV0ZSBzZXR1cCAqLwogCWllZWU4MDIxMV92YXBfYXR0YWNoKHZhcCwgaWVlZTgwMjExX21lZGlh X2NoYW5nZSwgaWVlZTgwMjExX21lZGlhX3N0YXR1cyk7CiAJaWYgKFRBSUxRX0ZJUlNUKCZpYy0+ aWNfdmFwcykgPT0gdmFwKQpJbmRleDogc3lzL2Rldi9yYWwvcnQyNjYxLmMKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gc3lzL2Rldi9yYWwvcnQyNjYxLmMJKHJldmlzaW9uIDI1NDgyNikKKysrIHN5cy9kZXYvcmFs L3J0MjY2MS5jCSh3b3JraW5nIGNvcHkpCkBAIC00MjMsNyArNDIzLDggQEAKIAl2YXAtPml2X3Vw ZGF0ZV9iZWFjb24gPSBydDI2NjFfYmVhY29uX3VwZGF0ZTsKICNlbmRpZgogCi0JaWVlZTgwMjEx X3JhdGVjdGxfaW5pdCh2YXApOworCS8qIFhYWCBUT0RPIGZpbGwgdGhlIGNhcCAqLworCWllZWU4 MDIxMV9yYXRlY3RsX2luaXQodmFwLCAwKTsKIAkvKiBjb21wbGV0ZSBzZXR1cCAqLwogCWllZWU4 MDIxMV92YXBfYXR0YWNoKHZhcCwgaWVlZTgwMjExX21lZGlhX2NoYW5nZSwgaWVlZTgwMjExX21l ZGlhX3N0YXR1cyk7CiAJaWYgKFRBSUxRX0ZJUlNUKCZpYy0+aWNfdmFwcykgPT0gdmFwKQpJbmRl eDogc3lzL2Rldi9yYWwvcnQyODYwLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9yYWwvcnQyODYw LmMJKHJldmlzaW9uIDI1NDgyNikKKysrIHN5cy9kZXYvcmFsL3J0Mjg2MC5jCSh3b3JraW5nIGNv cHkpCkBAIC00ODQsNyArNDg0LDggQEAKIAkvKiBIVyBzdXBwb3J0cyB1cCB0byAyNTUgU1RBcyAo MC0yNTQpIGluIEhvc3RBUCBhbmQgSUJTUyBtb2RlcyAqLwogCXZhcC0+aXZfbWF4X2FpZCA9IG1p bihJRUVFODAyMTFfQUlEX01BWCwgUlQyODYwX1dDSURfTUFYKTsKIAotCWllZWU4MDIxMV9yYXRl Y3RsX2luaXQodmFwKTsKKwkvKiBYWFggVE9ETyBmaWxsIHRoZSBjYXAgKi8KKwlpZWVlODAyMTFf cmF0ZWN0bF9pbml0KHZhcCwgMCk7CiAJLyogY29tcGxldGUgc2V0dXAgKi8KIAlpZWVlODAyMTFf dmFwX2F0dGFjaCh2YXAsIGllZWU4MDIxMV9tZWRpYV9jaGFuZ2UsIGllZWU4MDIxMV9tZWRpYV9z dGF0dXMpOwogCWlmIChUQUlMUV9GSVJTVCgmaWMtPmljX3ZhcHMpID09IHZhcCkKSW5kZXg6IHN5 cy9uZXQ4MDIxMS9pZWVlODAyMTFfcmF0ZWN0bF9ub25lLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25l dDgwMjExL2llZWU4MDIxMV9yYXRlY3RsX25vbmUuYwkocmV2aXNpb24gMjU0ODI2KQorKysgc3lz L25ldDgwMjExL2llZWU4MDIxMV9yYXRlY3RsX25vbmUuYwkod29ya2luZyBjb3B5KQpAQCAtNDQs MTAgKzQ0LDI2IEBACiAKICNpbmNsdWRlIDxuZXQ4MDIxMS9pZWVlODAyMTFfdmFyLmg+CiAjaW5j bHVkZSA8bmV0ODAyMTEvaWVlZTgwMjExX3JhdGVjdGwuaD4KKyNpbmNsdWRlIDxuZXQ4MDIxMS9p ZWVlODAyMTFfcmF0ZWN0bF9ub25lLmg+CiAKIHN0YXRpYyB2b2lkCi1ub25lX2luaXQoc3RydWN0 IGllZWU4MDIxMXZhcCAqdmFwKQorbm9uZV9pbml0KHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwg dWludDMyX3QgY2FwYWJpbGl0aWVzKQogeworCXN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbm9uZTsK KworCUtBU1NFUlQodmFwLT5pdl9ycyA9PSBOVUxMLCAoIiVzIGNhbGxlZCBtdWx0aXBsZSB0aW1l cyIsIF9fZnVuY19fKSk7CisKKwlub25lID0gdmFwLT5pdl9ycyA9IG1hbGxvYyhzaXplb2Yoc3Ry dWN0IGllZWU4MDIxMV9ub25lKSwKKwkgICAgTV84MDIxMV9SQVRFQ1RMLCBNX05PV0FJVHxNX1pF Uk8pOworCWlmIChub25lID09IE5VTEwpIHsKKwkJaWZfcHJpbnRmKHZhcC0+aXZfaWZwLCAiY291 bGRuJ3QgYWxsb2MgcmF0ZWN0bCBzdHJ1Y3R1cmVcbiIpOworCQlyZXR1cm47CisJfQorCisJc3Ry dWN0IGllZWU4MDIxMV9yY19zdGF0ICogaXJzID0gSUVFRTgwMjExX1JBVEVDVExfU1RBVCh2YXAp OworCWlycy0+aXJzX2NhcGFiaWxpdGllcyA9IGNhcGFiaWxpdGllczsKKworCS8qIC4uLiAqLwog fQogCiBzdGF0aWMgdm9pZApAQCAtNTksNiArNzUsMjUgQEAKIHN0YXRpYyB2b2lkCiBub25lX25v ZGVfaW5pdChzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQogeworCXN0cnVjdCBpZWVlODAyMTF2 YXAgKnZhcCA9IG5pLT5uaV92YXA7CisJc3RydWN0IGllZWU4MDIxMV9ub25lICpub25lID0gdmFw LT5pdl9yczsKKwlzdHJ1Y3QgaWVlZTgwMjExX25vbmVfbm9kZSAqbm9uOworCisJaWYgKG5pLT5u aV9yY3RscyA9PSBOVUxMKSB7CisJCW5pLT5uaV9yY3RscyA9IG5vbiA9IG1hbGxvYyhzaXplb2Yo c3RydWN0IGllZWU4MDIxMV9ub25lX25vZGUpLAorCQkgICAgTV84MDIxMV9SQVRFQ1RMLCBNX05P V0FJVHxNX1pFUk8pOworCQlpZiAobm9uID09IE5VTEwpIHsKKwkJCWlmX3ByaW50Zih2YXAtPml2 X2lmcCwgImNvdWxkbid0IGFsbG9jIHBlci1ub2RlIHJhdGVjdGwgIgorCQkJICAgICJzdHJ1Y3R1 cmVcbiIpOworCQkJcmV0dXJuOworCQl9CisJfSBlbHNlCisJCW5vbiA9IG5pLT5uaV9yY3RsczsK KworCW5vbi0+bm9uX25vbmUgPSBub25lOworCisJLyogLi4uICovCisJCiAJbmktPm5pX3R4cmF0 ZSA9IG5pLT5uaV9yYXRlcy5yc19yYXRlc1swXSAmIElFRUU4MDIxMV9SQVRFX1ZBTDsKIH0KIApJ bmRleDogc3lzL25ldDgwMjExL2llZWU4MDIxMV9yYXRlY3RsLmMKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lz L25ldDgwMjExL2llZWU4MDIxMV9yYXRlY3RsLmMJKHJldmlzaW9uIDI1NDgyNikKKysrIHN5cy9u ZXQ4MDIxMS9pZWVlODAyMTFfcmF0ZWN0bC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBA QAogLyotCiAgKiBDb3B5cmlnaHQgKGMpIDIwMTAgUnVpIFBhdWxvIDxycGF1bG9ARnJlZUJTRC5v cmc+CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgQ2hlbmNob25nIFFpbiA8Y2NxaW5ARnJlZUJTRC5v cmc+CiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNDksNiAr NTAsNDAgQEAKIAogTUFMTE9DX0RFRklORShNXzgwMjExX1JBVEVDVEwsICI4MDIxMXJhdGVjdGwi LCAiODAyLjExIHJhdGUgY29udHJvbCIpOwogCitlbnVtIHsKKwlNQ1NfSFQyMCwKKwlNQ1NfSFQy MF9TR0ksCisJTUNTX0hUNDAsCisJTUNTX0hUNDBfU0dJLAorfTsKKworaW50IG1heF80bXNfZnJh bWVsZW5bNF1bMzJdID0geworCVtNQ1NfSFQyMF0gPSB7CisJCTMyMTIsICA2NDMyLCAgOTY0OCwg IDEyODY0LCAgMTkzMDAsICAyNTczNiwgIDI4OTUyLCAgMzIxNzIsCisJCTY0MjQsICAxMjg1Miwg MTkyODAsIDI1NzA4LCAgMzg1NjgsICA1MTQyNCwgIDU3ODUyLCAgNjQyODAsCisJCTk2MjgsICAx OTI2MCwgMjg4OTYsIDM4NTI4LCAgNTc3OTIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJCTEy ODI4LCAyNTY1NiwgMzg0ODgsIDUxMzIwLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIs CisJfSwKKwlbTUNTX0hUMjBfU0dJXSA9IHsKKwkJMzU3MiwgIDcxNDQsICAxMDcyMCwgIDE0Mjk2 LCAgMjE0NDQsICAyODU5NiwgIDMyMTcyLCAgMzU3NDQsCisJCTcxNDAsICAxNDI4NCwgMjE0Mjgs ICAyODU2OCwgIDQyODU2LCAgNTcxNDQsICA2NDI4OCwgIDY1NTMyLAorCQkxMDcwMCwgMjE0MDgs IDMyMTEyLCAgNDI4MTYsICA2NDIyOCwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwKKwkJMTQyNTYs IDI4NTE2LCA0Mjc4MCwgIDU3MDQwLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJ fSwKKwlbTUNTX0hUNDBdID0geworCQk2NjgwLCAgMTMzNjAsICAyMDA0NCwgIDI2NzI0LCAgNDAw OTIsICA1MzQ1NiwgIDYwMTQwLCAgNjU1MzIsCisJCTEzMzQ4LCAyNjcwMCwgIDQwMDUyLCAgNTM0 MDAsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwKKwkJMjAwMDQsIDQwMDA4LCAgNjAw MTYsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLAorCQkyNjY0NCwgNTMy OTIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJfSwK KwlbTUNTX0hUNDBfU0dJXSA9IHsKKwkJNzQyMCwgIDE0ODQ0LCAgMjIyNzIsICAyOTY5NiwgIDQ0 NTQ0LCAgNTkzOTYsICA2NTUzMiwgIDY1NTMyLAorCQkxNDgzMiwgMjk2NjgsICA0NDUwNCwgIDU5 MzQwLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsCisJCTIyMjMyLCA0NDQ2NCwgIDY1 NTMyLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwKKwkJMjk2MTYsIDU5 MjMyLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLCAgNjU1MzIsICA2NTUzMiwgIDY1NTMyLAorCX0K K307CisKIHZvaWQKIGllZWU4MDIxMV9yYXRlY3RsX3JlZ2lzdGVyKGludCB0eXBlLCBjb25zdCBz dHJ1Y3QgaWVlZTgwMjExX3JhdGVjdGwgKnJhdGVjdGwpCiB7CkBAIC02NiwxMSArMTAxLDExIEBA CiB9CiAKIHZvaWQKLWllZWU4MDIxMV9yYXRlY3RsX2luaXQoc3RydWN0IGllZWU4MDIxMXZhcCAq dmFwKQoraWVlZTgwMjExX3JhdGVjdGxfaW5pdChzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAsIHVp bnQzMl90IGNhcGFiaWxpdGllcykKIHsKIAlpZiAodmFwLT5pdl9yYXRlID09IHJhdGVjdGxzW0lF RUU4MDIxMV9SQVRFQ1RMX05PTkVdKQogCQlpZWVlODAyMTFfcmF0ZWN0bF9zZXQodmFwLCBJRUVF ODAyMTFfUkFURUNUTF9BTVJSKTsKLQl2YXAtPml2X3JhdGUtPmlyX2luaXQodmFwKTsKKwl2YXAt Pml2X3JhdGUtPmlyX2luaXQodmFwLCBjYXBhYmlsaXRpZXMpOwogfQogCiB2b2lkCkBAIC05MCwz ICsxMjUsMTAzIEBACiAJfQogCXZhcC0+aXZfcmF0ZSA9IHJhdGVjdGxzW3R5cGVdOwogfQorCit2 b2lkCitpZWVlODAyMTFfcmF0ZWN0bF9jb21wbGV0ZV9yY2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFf bm9kZSAqbmksCisJCXN0cnVjdCBpZWVlODAyMTFfcmNfaW5mbyAqcmNfaW5mbykKK3sKKwlzdHJ1 Y3QgaWVlZTgwMjExdmFwICp2YXAgPSBuaS0+bmlfdmFwOworCWNvbnN0IHN0cnVjdCBpZWVlODAy MTFfcmF0ZV90YWJsZSAqIHJ0ID0gTlVMTDsKKwlzdHJ1Y3QgaWVlZTgwMjExX3JjX3NlcmllcyAq cmMgPSByY19pbmZvLT5pcmlfcmM7CisJLyogaW50IHNob3J0UHJlYW1ibGUgPSByY19pbmZvLT5y aV9zaG9ydFByZWFtYmxlOyAqLworCXVpbnQ4X3QgcmF0ZTsKKwlpbnQgaTsKKworCXJ0ID0gaWVl ZTgwMjExX2dldF9yYXRldGFibGUobmktPm5pX2ljLT5pY19jdXJjaGFuKTsKKworCS8qIE1ha2Ug c3VyZSB0aGF0IHJhdGUgY29udHJvbCBjb2RlIGRvZXNuJ3QgbWVzcyBpdCB1cC4KKwkgKiBJZiBl bmFibGUgcnRzL2N0cyBhbmQgaXMgcHJlLTgwMi4xMW4sIGJsYW5rIHRyaWVzIDEsIDIsIDMgCisJ ICovCisKKwlpZiAoISBJRUVFODAyMTFfUkFURUNUTF9IQVNDQVBfTVJSUFJPVCh2YXApKQorCXsK KwkJZm9yIChpID0gMTsgaSA8IElFRUU4MDIxMV9SQVRFQ1RMX05VTTsgaSsrKQorCQl7CisJCQlp ZiAocmNbMF0uZmxhZ3MgJiBJRUVFODAyMTFfUkFURUNUTF9GTEFHX1JUU0NUUykKKwkJCQlyY1tp XS50cmllcyA9IDA7CisJCQlyY1tpXS5mbGFncyAmPSB+SUVFRTgwMjExX1JBVEVDVExfRkxBR19S VFNDVFM7IAorCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IElFRUU4MDIxMV9SQVRFQ1RMX05V TTsgaSsrKSB7CisJCQorCQlpZiAocmNbaV0udHJpZXMgPT0gMCkKKwkJCWNvbnRpbnVlOworCisJ CXJhdGUgPSBydC0+aW5mb1tyY1tpXS5yaXhdLmRvdDExUmF0ZTsKKworCQkvKgorCQkgKiBPbmx5 IGVuYWJsZSBzaG9ydCBwcmVhbWJsZSBmb3IgbGVnYWN5IHJhdGVzCisJCSAqLworCisJCS8qIFhY WCBob3cgd2UgZ2V0IHRoZSBub25faHQgcmF0ZWNvZGUgaGVyZT8gKi8KKworCQkjaWYgMAorCQlp ZiAoKCEgSVNfSFRfUkFURShyYXRlKSkgJiYgc2hvcnRQcmVhbWJsZSkKKwkJCXJhdGUgfD0gcnQt PmluZm9bcmNbaV0ucml4XS5zaG9ydFByZWFtYmxlOworCQkjZW5kaWYKKworCQkvKgorCQkgKiBT YXZlIHRoaXMsIHVzZWQgYnkgdGhlIFRYIGFuZCBjb21wbGV0aW9uIGNvZGUKKwkJICovCisJCXJj W2ldLnJhdGVjb2RlID0gcmF0ZTsKKworCQkvKiBPbmx5IGVuYWJsZSBzaG9ydGdpLCAyMDQwLCBk dWFsLXN0cmVhbSBpZiBIVCBpcyBzZXQgKi8KKwkJaWYgKElTX0hUX1JBVEUocmF0ZSkpIHsKKwkJ CXJjW2ldLmZsYWdzIHw9IElFRUU4MDIxMV9SQVRFQ1RMX0ZMQUdfSFQ7CisKKwkJCS8qCisJCQkg KiBYWFggVE9ETzogTERQQworCQkJICovCisKKwkJCS8qCisJCQkgKiBEdWFsIC8gVHJpcGxlIHN0 cmVhbSByYXRlPworCQkJICovCisJCQlpZiAoSFRfUkNfMl9TVFJFQU1TKHJhdGUpID09IDIpCisJ CQkJcmNbaV0uZmxhZ3MgfD0gSUVFRTgwMjExX1JBVEVDVExfRkxBR19EUzsKKwkJCWVsc2UgaWYg KEhUX1JDXzJfU1RSRUFNUyhyYXRlKSA9PSAzKQorCQkJCXJjW2ldLmZsYWdzIHw9IElFRUU4MDIx MV9SQVRFQ1RMX0ZMQUdfVFM7CisJCX0KKworCQkvKgorCQkgKiBDYWxjdWxhdGUgdGhlIG1heGlt dW0gVFggcG93ZXIgY2FwIGZvciB0aGUgY3VycmVudAorCQkgKiBub2RlLiAKKwkJICogUmF0ZSBj b250cm9sIGFsZ28gY2FuJ3QgY29udHJvbCBUWCBwb3dlciBieSBub3cuCisJCSAqLworCQlyY1tp XS50eF9wb3dlcl9jYXAgPSBpZWVlODAyMTFfZ2V0X25vZGVfdHhwb3dlcihuaSk7CisJCQorCQkv KgorCQkgKiBDYWxjdWxhdGUgdGhlIG1heGltdW0gNG1zIGZyYW1lIGxlbmd0aCBiYXNlZAorCQkg KiBvbiB0aGUgTUNTIHJhdGUsIFNHSSBhbmQgY2hhbm5lbCB3aWR0aCBmbGFncy4KKwkJICovCisJ CWlmICgocmNbaV0uZmxhZ3MgJiBJRUVFODAyMTFfUkFURUNUTF9GTEFHX0hUKSAmJgorCQkgICAg KEhUX1JDXzJfTUNTKHJhdGUpIDwgMzIpKSB7CisJCQlpbnQgajsKKwkJCWlmIChyY1tpXS5mbGFn cyAmIElFRUU4MDIxMV9SQVRFQ1RMX0ZMQUdfQ1c0MCkgeworCQkJCWlmIChyY1tpXS5mbGFncyAm IElFRUU4MDIxMV9SQVRFQ1RMX0ZMQUdfU0dJKQorCQkJCQlqID0gTUNTX0hUNDBfU0dJOworCQkJ CWVsc2UKKwkJCQkJaiA9IE1DU19IVDQwOworCQkJfSBlbHNlIHsKKwkJCQlpZiAocmNbaV0uZmxh Z3MgJiBJRUVFODAyMTFfUkFURUNUTF9GTEFHX1NHSSkKKwkJCQkJaiA9IE1DU19IVDIwX1NHSTsK KwkJCQllbHNlCisJCQkJCWogPSBNQ1NfSFQyMDsKKwkJCX0KKwkJCXJjW2ldLm1heDRtc2ZyYW1l bGVuID0KKwkJCSAgICBtYXhfNG1zX2ZyYW1lbGVuW2pdW0hUX1JDXzJfTUNTKHJhdGUpXTsKKwkJ fSBlbHNlCisJCQlyY1tpXS5tYXg0bXNmcmFtZWxlbiA9IDA7CisJfQorfQorCkluZGV4OiBzeXMv bmV0ODAyMTEvaWVlZTgwMjExX2FtcnIuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVl ZTgwMjExX2FtcnIuYwkocmV2aXNpb24gMjU0ODI2KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIx MV9hbXJyLmMJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDggKzQ3LDggQEAKIAogI2luY2x1ZGUgPG5l dDgwMjExL2llZWU4MDIxMV92YXIuaD4KICNpbmNsdWRlIDxuZXQ4MDIxMS9pZWVlODAyMTFfaHQu aD4KKyNpbmNsdWRlIDxuZXQ4MDIxMS9pZWVlODAyMTFfcmF0ZWN0bC5oPgogI2luY2x1ZGUgPG5l dDgwMjExL2llZWU4MDIxMV9hbXJyLmg+Ci0jaW5jbHVkZSA8bmV0ODAyMTEvaWVlZTgwMjExX3Jh dGVjdGwuaD4KIAogI2RlZmluZSBpc19zdWNjZXNzKGFtbikJXAogCSgoYW1uKS0+YW1uX3JldHJ5 Y250IDwgKGFtbiktPmFtbl90eGNudCAvIDEwKQpAQCAtNTgsNyArNTgsNyBAQAogCSgoYW1uKS0+ YW1uX3R4Y250ID4gMTApCiAKIHN0YXRpYyB2b2lkCWFtcnJfc2V0aW50ZXJ2YWwoY29uc3Qgc3Ry dWN0IGllZWU4MDIxMXZhcCAqLCBpbnQpOwotc3RhdGljIHZvaWQJYW1ycl9pbml0KHN0cnVjdCBp ZWVlODAyMTF2YXAgKik7CitzdGF0aWMgdm9pZAlhbXJyX2luaXQoc3RydWN0IGllZWU4MDIxMXZh cCAqLCB1aW50MzJfdCk7CiBzdGF0aWMgdm9pZAlhbXJyX2RlaW5pdChzdHJ1Y3QgaWVlZTgwMjEx dmFwICopOwogc3RhdGljIHZvaWQJYW1ycl9ub2RlX2luaXQoc3RydWN0IGllZWU4MDIxMV9ub2Rl ICopOwogc3RhdGljIHZvaWQJYW1ycl9ub2RlX2RlaW5pdChzdHJ1Y3QgaWVlZTgwMjExX25vZGUg Kik7CkBAIC0xMDUsNyArMTA1LDcgQEAKIH0KIAogc3RhdGljIHZvaWQKLWFtcnJfaW5pdChzdHJ1 Y3QgaWVlZTgwMjExdmFwICp2YXApCithbXJyX2luaXQoc3RydWN0IGllZWU4MDIxMXZhcCAqdmFw LCB1aW50MzJfdCBjYXBhYmlsaXRpZXMpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9hbXJyICphbXJy OwogCkBAIC0xMTcsNiArMTE3LDEwIEBACiAJCWlmX3ByaW50Zih2YXAtPml2X2lmcCwgImNvdWxk bid0IGFsbG9jIHJhdGVjdGwgc3RydWN0dXJlXG4iKTsKIAkJcmV0dXJuOwogCX0KKworCXN0cnVj dCBpZWVlODAyMTFfcmNfc3RhdCAqIGlycyA9IElFRUU4MDIxMV9SQVRFQ1RMX1NUQVQodmFwKTsK KwlpcnMtPmlyc19jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRpZXM7CisKIAlhbXJyLT5hbXJyX21p bl9zdWNjZXNzX3RocmVzaG9sZCA9IElFRUU4MDIxMV9BTVJSX01JTl9TVUNDRVNTX1RIUkVTSE9M RDsKIAlhbXJyLT5hbXJyX21heF9zdWNjZXNzX3RocmVzaG9sZCA9IElFRUU4MDIxMV9BTVJSX01B WF9TVUNDRVNTX1RIUkVTSE9MRDsKIAlhbXJyX3NldGludGVydmFsKHZhcCwgNTAwIC8qIG1zICov KTsKQEAgLTEyOSwxNyArMTMzLDYgQEAKIAlmcmVlKHZhcC0+aXZfcnMsIE1fODAyMTFfUkFURUNU TCk7CiB9CiAKLXN0YXRpYyBpbnQKLWFtcnJfbm9kZV9pc18xMW4oc3RydWN0IGllZWU4MDIxMV9u b2RlICpuaSkKLXsKLQotCWlmIChuaS0+bmlfY2hhbiA9PSBOVUxMKQotCQlyZXR1cm4gKDApOwot CWlmIChuaS0+bmlfY2hhbiA9PSBJRUVFODAyMTFfQ0hBTl9BTllDKQotCQlyZXR1cm4gKDApOwot CXJldHVybiAoSUVFRTgwMjExX0lTX0NIQU5fSFQobmktPm5pX2NoYW4pKTsKLX0KLQogc3RhdGlj IHZvaWQKIGFtcnJfbm9kZV9pbml0KHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmkpCiB7CkBAIC0x NTksNiArMTUyLDcgQEAKIAkJfQogCX0gZWxzZQogCQlhbW4gPSBuaS0+bmlfcmN0bHM7CisKIAlh bW4tPmFtbl9hbXJyID0gYW1ycjsKIAlhbW4tPmFtbl9zdWNjZXNzID0gMDsKIAlhbW4tPmFtbl9y ZWNvdmVyeSA9IDA7CkBAIC0xNjUsMjMgKzE1OSwxMyBAQAogCWFtbi0+YW1uX3R4Y250ID0gYW1u LT5hbW5fcmV0cnljbnQgPSAwOwogCWFtbi0+YW1uX3N1Y2Nlc3NfdGhyZXNob2xkID0gYW1yci0+ YW1ycl9taW5fc3VjY2Vzc190aHJlc2hvbGQ7CiAKLQkvKiAxMW4gb3Igbm90PyBQaWNrIHRoZSBy aWdodCByYXRlc2V0ICovCi0JaWYgKGFtcnJfbm9kZV9pc18xMW4obmkpKSB7Ci0JCS8qIFhYWCBl dyAqLwotCQlJRUVFODAyMTFfTk9URShuaS0+bmlfdmFwLCBJRUVFODAyMTFfTVNHX1JBVEVDVEws IG5pLAotCQkgICAgIiVzOiAxMW4gbm9kZSIsIF9fZnVuY19fKTsKLQkJcnMgPSAoc3RydWN0IGll ZWU4MDIxMV9yYXRlc2V0ICopICZuaS0+bmlfaHRyYXRlczsKLQl9IGVsc2UgewotCQlJRUVFODAy MTFfTk9URShuaS0+bmlfdmFwLCBJRUVFODAyMTFfTVNHX1JBVEVDVEwsIG5pLAotCQkgICAgIiVz OiBub24tMTFuIG5vZGUiLCBfX2Z1bmNfXyk7Ci0JCXJzID0gJm5pLT5uaV9yYXRlczsKLQl9CisJ cnMgPSBpZWVlODAyMTFfcmF0ZWN0bF9nZXRfcmF0ZXNldChuaSk7CiAKIAkvKiBJbml0aWFsIHJh dGUgLSBsb3dlc3QgKi8KIAlyYXRlID0gcnMtPnJzX3JhdGVzWzBdOwogCiAJLyogWFhYIGNsZWFy IHRoZSBiYXNpYyByYXRlIGZsYWcgaWYgaXQncyBub3QgMTFuICovCi0JaWYgKCEgYW1ycl9ub2Rl X2lzXzExbihuaSkpCisJaWYgKCEgaWVlZTgwMjExX3JhdGVjdGxfbm9kZV9pczExbihuaSkpCiAJ CXJhdGUgJj0gSUVFRTgwMjExX1JBVEVfVkFMOwogCiAJLyogcGljayBpbml0aWFsIHJhdGUgZnJv bSB0aGUgcmF0ZXNldCAtIEhUIG9yIG90aGVyd2lzZSAqLwpAQCAtMTg5LDcgKzE3Myw3IEBACiAJ ICAgIGFtbi0+YW1uX3JpeC0tKSB7CiAJCS8qIGxlZ2FjeSAtIGFueXRoaW5nIDwgMzZtYml0LCBz dG9wIHNlYXJjaGluZyAqLwogCQkvKiAxMW4gLSBzdG9wIGF0IE1DUzQgLyBNQ1MxMiAvIE1DUzI4 ICovCi0JCWlmIChhbXJyX25vZGVfaXNfMTFuKG5pKSAmJgorCQlpZiAoaWVlZTgwMjExX3JhdGVj dGxfbm9kZV9pczExbihuaSkgJiYKIAkJICAgIChycy0+cnNfcmF0ZXNbYW1uLT5hbW5fcml4XSAm IDB4NykgPCA0KQogCQkJYnJlYWs7CiAJCWVsc2UgaWYgKChycy0+cnNfcmF0ZXNbYW1uLT5hbW5f cml4XSAmIElFRUU4MDIxMV9SQVRFX1ZBTCkgPD0gNzIpCkBAIC0xOTgsNyArMTgyLDcgQEAKIAl9 CiAKIAkvKiBpZiB0aGUgcmF0ZSBpcyBhbiAxMW4gcmF0ZSwgZW5zdXJlIHRoZSBNQ1MgYml0IGlz IHNldCAqLwotCWlmIChhbXJyX25vZGVfaXNfMTFuKG5pKSkKKwlpZiAoaWVlZTgwMjExX3JhdGVj dGxfbm9kZV9pczExbihuaSkpCiAJCXJhdGUgfD0gSUVFRTgwMjExX1JBVEVfTUNTOwogCiAJLyog QXNzaWduIGluaXRpYWwgcmF0ZSBmcm9tIHRoZSByYXRlc2V0ICovCkBAIC0yMjYsMTQgKzIxMCw5 IEBACiAKIAlLQVNTRVJUKGlzX2Vub3VnaChhbW4pLCAoInR4Y250ICVkIiwgYW1uLT5hbW5fdHhj bnQpKTsKIAotCS8qIDExbiBvciBub3Q/IFBpY2sgdGhlIHJpZ2h0IHJhdGVzZXQgKi8KLQlpZiAo YW1ycl9ub2RlX2lzXzExbihuaSkpIHsKLQkJLyogWFhYIGV3ICovCi0JCXJzID0gKHN0cnVjdCBp ZWVlODAyMTFfcmF0ZXNldCAqKSAmbmktPm5pX2h0cmF0ZXM7Ci0JfSBlbHNlIHsKLQkJcnMgPSAm bmktPm5pX3JhdGVzOwotCX0KKwlycyA9IGllZWU4MDIxMV9yYXRlY3RsX2dldF9yYXRlc2V0KG5p KTsKIAorCiAJSUVFRTgwMjExX05PVEUobmktPm5pX3ZhcCwgSUVFRTgwMjExX01TR19SQVRFQ1RM LCBuaSwKIAkgICAgIkFNUlI6IGN1cnJlbnQgcmF0ZSAlZCwgdHhjbnQ9JWQsIHJldHJ5Y250PSVk IiwKIAkgICAgcnMtPnJzX3JhdGVzW3JpeF0gJiBJRUVFODAyMTFfUkFURV9WQUwsCkBAIC0zMDQs MTMgKzI4Myw3IEBACiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlc2V0ICpycyA9IE5VTEw7 CiAJaW50IHJpeDsKIAotCS8qIDExbiBvciBub3Q/IFBpY2sgdGhlIHJpZ2h0IHJhdGVzZXQgKi8K LQlpZiAoYW1ycl9ub2RlX2lzXzExbihuaSkpIHsKLQkJLyogWFhYIGV3ICovCi0JCXJzID0gKHN0 cnVjdCBpZWVlODAyMTFfcmF0ZXNldCAqKSAmbmktPm5pX2h0cmF0ZXM7Ci0JfSBlbHNlIHsKLQkJ cnMgPSAmbmktPm5pX3JhdGVzOwotCX0KKwlycyA9IGllZWU4MDIxMV9yYXRlY3RsX2dldF9yYXRl c2V0KG5pKTsKIAogCWlmIChpc19lbm91Z2goYW1uKSAmJiAodGlja3MgLSBhbW4tPmFtbl90aWNr cykgPiBhbXJyLT5hbXJyX2ludGVydmFsKSB7CiAJCXJpeCA9IGFtcnJfdXBkYXRlKGFtcnIsIGFt biwgbmkpOwpAQCAtMzE4LDcgKzI5MSw3IEBACiAJCQkvKiB1cGRhdGUgcHVibGljIHJhdGUgKi8K IAkJCW5pLT5uaV90eHJhdGUgPSBycy0+cnNfcmF0ZXNbcml4XTsKIAkJCS8qIFhYWCBzdHJpcCBi YXNpYyByYXRlIGZsYWcgZnJvbSB0eHJhdGUsIGlmIG5vbi0xMW4gKi8KLQkJCWlmIChhbXJyX25v ZGVfaXNfMTFuKG5pKSkKKwkJCWlmIChpZWVlODAyMTFfcmF0ZWN0bF9ub2RlX2lzMTFuKG5pKSkK IAkJCQluaS0+bmlfdHhyYXRlIHw9IElFRUU4MDIxMV9SQVRFX01DUzsKIAkJCWVsc2UKIAkJCQlu aS0+bmlfdHhyYXRlICY9IElFRUU4MDIxMV9SQVRFX1ZBTDsKQEAgLTMzOCwxMSArMzExLDE3IEBA CiBzdGF0aWMgdm9pZAogYW1ycl90eF9jb21wbGV0ZShjb25zdCBzdHJ1Y3QgaWVlZTgwMjExdmFw ICp2YXAsCiAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwgaW50IG9rLAotICAg IHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIgX191bnVzZWQpCisgICAgdm9pZCAqYXJnMSwgdm9pZCAq YXJnMikKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2FtcnJfbm9kZSAqYW1uID0gbmktPm5pX3JjdGxz OwogCWludCByZXRyaWVzID0gKihpbnQgKilhcmcxOwogCisJLyogWFhYIG5lZWQgdG8gY2hhbmdl IGFyZzIgdG8gcG9pbnRlciBvZiBpZWVlODAyMTFfcmNfaW5mbyAqLworCXN0cnVjdCBpZWVlODAy MTFfcmNfaW5mbyAqcmNfaW5mbyA9IChzdHJ1Y3QgaWVlZTgwMjExX3JjX2luZm8qKWFyZzI7CisK KwkvKiB1cGRhdGUgcGVyIHZhcCBzdGF0aXN0aWNzICovCisJaWVlZTgwMjExX3JhdGVjdGxfdXBk YXRlX3N0YXQodmFwLCByY19pbmZvKTsKKwogCWFtbi0+YW1uX3R4Y250Kys7CiAJaWYgKG9rKQog CQlhbW4tPmFtbl9zdWNjZXNzKys7CkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JhdGVj dGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JhdGVjdGwuaAkocmV2 aXNpb24gMjU0ODI2KQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9yYXRlY3RsLmgJKHdvcmtp bmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKi0KICAqIENvcHlyaWdodCAoYykgMjAxMCBSdWkg UGF1bG8gPHJwYXVsb0BGcmVlQlNELm9yZz4KKyAqIENvcHlyaWdodCAoYykgMjAxMyBDaGVuY2hv bmcgUWluIDxjY3FpbkBGcmVlQlNELm9yZz4KICAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0CkBAIC0yNCw2ICsyNSw4IEBACiAgKgogICogJEZyZWVCU0QkCiAgKi8KKyNp Zm5kZWYgX05FVDgwMjExX0lFRUU4MDIxMV9SQVRFQ1RMX0hfCisjZGVmaW5lIF9ORVQ4MDIxMV9J RUVFODAyMTFfUkFURUNUTF9IXwogCiBlbnVtIGllZWU4MDIxMV9yYXRlYWxncyB7CiAJSUVFRTgw MjExX1JBVEVDVExfQU1SUgkJPSAwLApAQCAtMzcsMTUgKzQwLDkxIEBACiAjZGVmaW5lCUlFRUU4 MDIxMV9SQVRFQ1RMX1RYX1NVQ0NFU1MJMQogI2RlZmluZQlJRUVFODAyMTFfUkFURUNUTF9UWF9G QUlMVVJFCTAKIAorI2RlZmluZQlJRUVFODAyMTFfUkFURUNUTF9UUlVFCQkxCisjZGVmaW5lCUlF RUU4MDIxMV9SQVRFQ1RMX0ZBTFNFCQkwCisKKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfTlVN CQk0CisKKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfRkxBR19EUwkJMHgwMQkvKiBkdWFsLXN0 cmVhbSByYXRlICovCisjZGVmaW5lCUlFRUU4MDIxMV9SQVRFQ1RMX0ZMQUdfQ1c0MAkJMHgwMgkv KiB1c2UgSFQ0MCAqLworI2RlZmluZQlJRUVFODAyMTFfUkFURUNUTF9GTEFHX1NHSQkJMHgwNAkv KiB1c2Ugc2hvcnQtR0kgKi8KKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfRkxBR19IVAkJMHgw OAkvKiB1c2UgSFQgKi8KKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfRkxBR19SVFNDVFMJMHgx MAkvKiBlbmFibGUgUlRTL0NUUyBwcm90ZWN0aW9uICovCisjZGVmaW5lCUlFRUU4MDIxMV9SQVRF Q1RMX0ZMQUdfU1RCQwkJMHgyMAkvKiBlbmFibGUgU1RCQyAqLworI2RlZmluZQlJRUVFODAyMTFf UkFURUNUTF9GTEFHX1RTCQkweDQwCS8qIHRyaXBsZS1zdHJlYW0gcmF0ZSAqLworCisvKiBIYXJk d2FyZSBDQVBzIG9mZmVyZWQgdG8gcmF0ZSBjb250cm9sIGFsZ28gKi8KKyNkZWZpbmUJSUVFRTgw MjExX1JBVEVDVExfQ0FQX01SUgkJCTB4MDEJLyogc3VwcG9ydCBNUlIgKi8KKyNkZWZpbmUJSUVF RTgwMjExX1JBVEVDVExfQ0FQX01SUlBST1QJCTB4MDIJLyogc3VwcG9ydCBNUlIgKyBwcm90ZWN0 ICovCisjZGVmaW5lCUlFRUU4MDIxMV9SQVRFQ1RMX0NBUF9NVUxUWENIQUlOCTB4MDQJLyogaGFz IG1vcmUgdGhhbiAxIHR4Y2hhaW4gKi8KKworI2RlZmluZSBJU19WQVBfSFQodmFwKQkoKHZhcCkt Pml2X2h0Y2FwcyAmIElFRUU4MDIxMV9IVENfSFQpCisjZGVmaW5lIElTX0hUX1JBVEUoX3JhdGUp ICAgKChfcmF0ZSkgJiAweDgwKQorI2RlZmluZSBIVF9SQ18yX01DUyhfcmMpICAgICgoX3JjKSAm IDB4N2YpCisjZGVmaW5lIEhUX1JDXzJfU1RSRUFNUyhfcmMpICAgICgoKChfcmMpICYgMHg3OCkg Pj4gMykgKyAxKQorCitleHRlcm4gaW50IG1heF80bXNfZnJhbWVsZW5bNF1bMzJdOworCitzdHJ1 Y3QgaWVlZTgwMjExX3JjX3NlcmllcyB7CisJdWludDhfdCByaXg7CQkvKiByYXRldGFibGUgaW5k ZXgsIG5vdCByYXRlIGNvZGUgKi8KKwl1aW50OF90IHJhdGVjb2RlOwkvKiBoYXJkd2FyZSByYXRl IGNvZGUgKi8KKwl1aW50OF90IHRyaWVzOworCXVpbnQ4X3QgdHhfcG93ZXJfY2FwOworCXVpbnQx Nl90IGZsYWdzOworCXVpbnQxNl90IG1heDRtc2ZyYW1lbGVuOworfTsKKworc3RydWN0IGllZWU4 MDIxMV9yY19pbmZvIHsKKwlzdHJ1Y3QgaWVlZTgwMjExX3JjX3NlcmllcyBpcmlfcmNbSUVFRTgw MjExX1JBVEVDVExfTlVNXTsKKwlpbnQgaXJpX2ZyYW1lbGVuOworCWludCBpcmlfc2hvcnRQcmVh bWJsZTsKKworCS8qIFRYIGluZm8gKi8KKwlpbnQgaXJpX3N1Y2Nlc3M7CS8qIFRYIHN1Y2Nlc3Mg b3Igbm90ICovCisJaW50IGlyaV9va2NudDsJCS8qIFRYIG9rIHdpdGggb3Igd2l0aG91dCByZXRy eSAqLworCWludCBpcmlfZmFpbGNudDsJLyogVFggcmV0cnktZmFpbCBjb3VudCAqLworCWludCBp cmlfdHhjbnQ7CQkvKiBUWCBjb3VudCAqLworCWludCBpcmlfcmV0cnljbnQ7CS8qIFRYIHJldHJ5 IGNvdW50ICovCisJaW50IGlyaV9zaG9ydHJldHJ5OworCWludCBpcmlfbG9uZ3JldHJ5OworCWlu dCBpcmlfZmluYWx0c2k7CisJaW50IGlyaV90eHJhdGU7CQkvKiBodyB0eCByYXRlICovCit9Owor CisvKiBuZXQ4MDIxMSByYXRlY3RsIHN0YXRpc3RpY3MuIAorICogcGVyIHZhcCByYXRlY3RsIHNl ZXRpbmcgbXVzdCBzdGFydCB3aXRoIHRoaXMgY29tbW9uIHN0YXRlCisgKi8KK3N0cnVjdCBpZWVl ODAyMTFfcmNfc3RhdCB7CisJdWludDMyX3QgaXJzX2NhcGFiaWxpdGllczsJCS8qIGhhcmR3YXJl IGNhcGFiaWxpdGllcyBvZmZlcmVkIHRvIHJjICovCisKKwkvKiByYXRlY3RsIHN0YXRpc3RpY3Mg Ki8KKwl1aW50MzJfdCBpcnNfdHhjbnQ7CisJdWludDMyX3QgaXJzX2ZhaWxjbnQ7CisJdWludDMy X3QgaXJzX3JldHJ5Y250OworCXVpbnQzMl90IGlyc19zaG9ydHJldHJ5OworCXVpbnQzMl90IGly c19sb25ncmV0cnk7Cit9OworCisjZGVmaW5lIElFRUU4MDIxMV9SQVRFQ1RMX1NUQVQoX3ZhcCkg XAorCSgoc3RydWN0IGllZWU4MDIxMV9yY19zdGF0ICopKChfdmFwKS0+aXZfcnMpKQorCisjZGVm aW5lCUlFRUU4MDIxMV9SQVRFQ1RMX0hBU0NBUF9NUlIoX3ZhcCkgXAorCShJRUVFODAyMTFfUkFU RUNUTF9TVEFUKF92YXApLT5pcnNfY2FwYWJpbGl0aWVzICYgSUVFRTgwMjExX1JBVEVDVExfQ0FQ X01SUikKKyNkZWZpbmUJSUVFRTgwMjExX1JBVEVDVExfSEFTQ0FQX01SUlBST1QoX3ZhcCkgXAor CShJRUVFODAyMTFfUkFURUNUTF9TVEFUKF92YXApLT5pcnNfY2FwYWJpbGl0aWVzICYgSUVFRTgw MjExX1JBVEVDVExfQ0FQX01SUlBST1QpCisjZGVmaW5lCUlFRUU4MDIxMV9SQVRFQ1RMX0hBU0NB UF9NVUxUWENIQUlOKF92YXApIFwKKwkoSUVFRTgwMjExX1JBVEVDVExfU1RBVChfdmFwKS0+aXJz X2NhcGFiaWxpdGllcyAmIElFRUU4MDIxMV9SQVRFQ1RMX0NBUF9NVUxUWENIQUlOKQorCiBzdHJ1 Y3QgaWVlZTgwMjExX3JhdGVjdGwgewogCWNvbnN0IGNoYXIgKmlyX25hbWU7CiAJaW50CSgqaXJf YXR0YWNoKShjb25zdCBzdHJ1Y3QgaWVlZTgwMjExdmFwICopOwogCXZvaWQJKCppcl9kZXRhY2gp KGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKik7Ci0Jdm9pZAkoKmlyX2luaXQpKHN0cnVjdCBp ZWVlODAyMTF2YXAgKik7CisJdm9pZAkoKmlyX2luaXQpKHN0cnVjdCBpZWVlODAyMTF2YXAgKiwg dWludDMyX3QpOwogCXZvaWQJKCppcl9kZWluaXQpKHN0cnVjdCBpZWVlODAyMTF2YXAgKik7CiAJ dm9pZAkoKmlyX25vZGVfaW5pdCkoc3RydWN0IGllZWU4MDIxMV9ub2RlICopOwogCXZvaWQJKCpp cl9ub2RlX2RlaW5pdCkoc3RydWN0IGllZWU4MDIxMV9ub2RlICopOwogCWludAkoKmlyX3JhdGUp KHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqLCB2b2lkICosIHVpbnQzMl90KTsKKwl2b2lkCSgqaXJf cmF0ZXMpKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqLCBzdHJ1Y3QgaWVlZTgwMjExX3JjX2luZm8g Kik7CiAJdm9pZAkoKmlyX3R4X2NvbXBsZXRlKShjb25zdCBzdHJ1Y3QgaWVlZTgwMjExdmFwICos CiAJICAgIAkJCSAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9ub2RlICosIGludCwKIAkgICAgCQkJ ICB2b2lkICosIHZvaWQgKik7CkBAIC01Nyw4ICsxMzYsMTAgQEAKIAogdm9pZAlpZWVlODAyMTFf cmF0ZWN0bF9yZWdpc3RlcihpbnQsIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZWN0bCAqKTsK IHZvaWQJaWVlZTgwMjExX3JhdGVjdGxfdW5yZWdpc3RlcihpbnQpOwotdm9pZAlpZWVlODAyMTFf cmF0ZWN0bF9pbml0KHN0cnVjdCBpZWVlODAyMTF2YXAgKik7Cit2b2lkCWllZWU4MDIxMV9yYXRl Y3RsX2luaXQoc3RydWN0IGllZWU4MDIxMXZhcCAqLCB1aW50MzJfdCk7CiB2b2lkCWllZWU4MDIx MV9yYXRlY3RsX3NldChzdHJ1Y3QgaWVlZTgwMjExdmFwICosIGludCk7Cit2b2lkCWllZWU4MDIx MV9yYXRlY3RsX2NvbXBsZXRlX3JjZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9ub2RlICosIAorCQkJ CQkJc3RydWN0IGllZWU4MDIxMV9yY19pbmZvKik7CiAKIE1BTExPQ19ERUNMQVJFKE1fODAyMTFf UkFURUNUTCk7CiAKQEAgLTkzLDYgKzE3NCwxNSBAQAogfQogCiBzdGF0aWMgdm9pZCBfX2lubGlu ZQoraWVlZTgwMjExX3JhdGVjdGxfcmF0ZXMoc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSwgc3Ry dWN0IGllZWU4MDIxMV9yY19pbmZvICpyY19pbmZvKQoreworCWNvbnN0IHN0cnVjdCBpZWVlODAy MTF2YXAgKnZhcCA9IG5pLT5uaV92YXA7CisKKwl2YXAtPml2X3JhdGUtPmlyX3JhdGVzKG5pLCBy Y19pbmZvKTsKKwlpZWVlODAyMTFfcmF0ZWN0bF9jb21wbGV0ZV9yY2ZsYWdzKG5pLCByY19pbmZv KTsKK30KKworc3RhdGljIHZvaWQgX19pbmxpbmUKIGllZWU4MDIxMV9yYXRlY3RsX3R4X2NvbXBs ZXRlKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwKICAgICBjb25zdCBzdHJ1Y3QgaWVl ZTgwMjExX25vZGUgKm5pLCBpbnQgc3RhdHVzLCB2b2lkICphcmcxLCB2b2lkICphcmcyKQogewpA QCAtMTE1LDMgKzIwNSw3MSBAQAogCQlyZXR1cm47CiAJdmFwLT5pdl9yYXRlLT5pcl9zZXRpbnRl cnZhbCh2YXAsIG1zZWNzKTsKIH0KKworc3RhdGljIGludCBfX2lubGluZQoraWVlZTgwMjExX3Jh dGVjdGxfaGFzY2FwX2N3NDAoY29uc3Qgc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAorCQljb25z dCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQoreworCXJldHVybiBJU19WQVBfSFQodmFwKSAm JiAobmktPm5pX2NodyA9PSA0MCk7Cit9CisKK3N0YXRpYyBpbnQgX19pbmxpbmUKK2llZWU4MDIx MV9yYXRlY3RsX2hhc2NhcF9zaG9ydGdpKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwK KwkJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSkKK3sKKwlpZiAoSVNfVkFQX0hUKHZh cCkpCisJeworCQlpZiAobmktPm5pX2NodyA9PSA0MCAmJgorCQkJCXZhcC0+aXZfaHRjYXBzICYg SUVFRTgwMjExX0hUQ0FQX1NIT1JUR0k0MCAmJgorCQkJCW5pLT5uaV9odGNhcCAmIElFRUU4MDIx MV9IVENBUF9TSE9SVEdJNDApCisJCQlyZXR1cm4gSUVFRTgwMjExX1JBVEVDVExfVFJVRTsKKwor CQlpZiAobmktPm5pX2NodyA9PSAyMCAmJgorCQkJCXZhcC0+aXZfaHRjYXBzICYgSUVFRTgwMjEx X0hUQ0FQX1NIT1JUR0kyMCAmJgorCQkJCW5pLT5uaV9odGNhcCAmIElFRUU4MDIxMV9IVENBUF9T SE9SVEdJMjApCisJCQlyZXR1cm4gSUVFRTgwMjExX1JBVEVDVExfVFJVRTsKKwl9CisJcmV0dXJu IElFRUU4MDIxMV9SQVRFQ1RMX0ZBTFNFOworfQorCisKK3N0YXRpYyBpbnQgX19pbmxpbmUKK2ll ZWU4MDIxMV9yYXRlY3RsX2hhc2NhcF9zdGJjKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKnZh cCwKKwkJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSkKK3sKKyAgIHJldHVybiBJU19W QVBfSFQodmFwKSAmJiAodmFwLT5pdl9odGNhcHMgJiBJRUVFODAyMTFfSFRDQVBfVFhTVEJDKSAm JgorCQkJICAgIChuaS0+bmlfaHRjYXAgJiBJRUVFODAyMTFfSFRDQVBfUlhTVEJDXzFTVFJFQU0p ICYmCisJCQkgICAgSUVFRTgwMjExX1JBVEVDVExfSEFTQ0FQX01VTFRYQ0hBSU4odmFwKTsKK30K Kworc3RhdGljIGludCBfX2lubGluZQoraWVlZTgwMjExX3JhdGVjdGxfbm9kZV9pczExbihjb25z dCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pKQoreworCWlmIChuaS0+bmlfY2hhbiA9PSBOVUxM KQorCQlyZXR1cm4gKDApOworCWlmIChuaS0+bmlfY2hhbiA9PSBJRUVFODAyMTFfQ0hBTl9BTllD KQorCQlyZXR1cm4gKDApOworCXJldHVybiAoSUVFRTgwMjExX0lTX0NIQU5fSFQobmktPm5pX2No YW4pKTsKK30KKworX19pbmxpbmUgc3RhdGljIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZXNl dCAqCitpZWVlODAyMTFfcmF0ZWN0bF9nZXRfcmF0ZXNldChjb25zdCBzdHJ1Y3QgaWVlZTgwMjEx X25vZGUgKm5pKQoreworCXJldHVybiBpZWVlODAyMTFfcmF0ZWN0bF9ub2RlX2lzMTFuKG5pKSA/ IAorCQkJCShzdHJ1Y3QgaWVlZTgwMjExX3JhdGVzZXQgKikgJm5pLT5uaV9odHJhdGVzIDoKKwkJ CQkmbmktPm5pX3JhdGVzOworfQorCitzdGF0aWMgdm9pZCBfX2lubGluZQoraWVlZTgwMjExX3Jh dGVjdGxfdXBkYXRlX3N0YXQoY29uc3Qgc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAorCQljb25z dCBzdHJ1Y3QgaWVlZTgwMjExX3JjX2luZm8gKnJjX2luZm8pCit7CisJc3RydWN0IGllZWU4MDIx MV9yY19zdGF0ICogaXJzID0gSUVFRTgwMjExX1JBVEVDVExfU1RBVCh2YXApOworCWlycy0+aXJz X3R4Y250ICs9IHJjX2luZm8tPmlyaV90eGNudDsKKwlpcnMtPmlyc19mYWlsY250ICs9IHJjX2lu Zm8tPmlyaV9mYWlsY250OworCWlycy0+aXJzX3JldHJ5Y250ICs9IHJjX2luZm8tPmlyaV9yZXRy eWNudDsKKwlpcnMtPmlyc19zaG9ydHJldHJ5ICs9IHJjX2luZm8tPmlyaV9zaG9ydHJldHJ5Owor CWlycy0+aXJzX2xvbmdyZXRyeSArPSByY19pbmZvLT5pcmlfbG9uZ3JldHJ5OworfQorCisjZW5k aWYKSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfYW1yci5oCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5 cy9uZXQ4MDIxMS9pZWVlODAyMTFfYW1yci5oCShyZXZpc2lvbiAyNTQ4MjYpCisrKyBzeXMvbmV0 ODAyMTEvaWVlZTgwMjExX2FtcnIuaAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQAog I2lmbmRlZiBfTkVUODAyMTFfSUVFRTgwMjExX0FNUlJfSF8KICNkZWZpbmUgX05FVDgwMjExX0lF RUU4MDIxMV9BTVJSX0hfCiAKKyNpbmNsdWRlIDxuZXQ4MDIxMS9pZWVlODAyMTFfcmF0ZWN0bC5o PgogLyotCiAgKiBOYWl2ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQWRhcHRpdmUgTXVsdGkgUmF0 ZSBSZXRyeSBhbGdvcml0aG06CiAgKgpAQCAtMzUsNiArMzYsNyBAQAogc3RydWN0IGllZWU4MDIx MXZhcDsKIAogc3RydWN0IGllZWU4MDIxMV9hbXJyIHsKKwlzdHJ1Y3QgaWVlZTgwMjExX3JjX3N0 YXQgYW1ycl9zdGF0OwogCXVfaW50CWFtcnJfbWluX3N1Y2Nlc3NfdGhyZXNob2xkOwogCXVfaW50 CWFtcnJfbWF4X3N1Y2Nlc3NfdGhyZXNob2xkOwogCWludAlhbXJyX2ludGVydmFsOwkJLyogdXBk YXRlIGludGVydmFsICh0aWNrcykgKi8KSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfcmF0 ZWN0bF9ub25lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL25ldDgwMjExL2llZWU4MDIxMV9yYXRlY3Rs X25vbmUuaAkocmV2aXNpb24gMCkKKysrIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfcmF0ZWN0bF9u b25lLmgJKHJldmlzaW9uIDI1NjQ4OSkKQEAgLTAsMCArMSwzOCBAQAorLyotCisgKiBDb3B5cmln aHQgKGMpIDIwMTMgQ2hlbmNob25nIFFpbiA8Y2NxaW5ARnJlZUJTRC5vcmc+CisgKgorICogUGVy bWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2Fy ZSBmb3IgYW55CisgKiBwdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50 ZWQsIHByb3ZpZGVkIHRoYXQgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgorICoKKyAqIFRIRSBTT0ZU V0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FS UkFOVElFUworICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElN UExJRUQgV0FSUkFOVElFUyBPRgorICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBO TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBTUEVDSUFMLCBE SVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMK KyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklU UywgV0hFVEhFUiBJTiBBTgorICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9U SEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YKKyAqIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuCisgKi8KKworI2lm bmRlZiBfTkVUODAyMTFfSUVFRTgwMjExX1JBVEVDVExfTk9ORV9IXworI2RlZmluZSBfTkVUODAy MTFfSUVFRTgwMjExX1JBVEVDVExfTk9ORV9IXworCisjaW5jbHVkZSA8bmV0ODAyMTEvaWVlZTgw MjExX3JhdGVjdGwuaD4KKworLyoKKyAqIFJhdGUgY29udHJvbCBzZXR0aW5ncy4KKyAqLworCitz dHJ1Y3QgaWVlZTgwMjExX25vbmUgeworCXN0cnVjdCBpZWVlODAyMTFfcmNfc3RhdCBub25lX3N0 YXQ7CisJLyogb3RoZXIgc3R1ZmZzICovCit9OworCisvKgorICogUmF0ZSBjb250cm9sIHN0YXRl IGZvciBhIGdpdmVuIG5vZGUuCisgKi8KK3N0cnVjdCBpZWVlODAyMTFfbm9uZV9ub2RlIHsKKwlz dHJ1Y3QgaWVlZTgwMjExX25vbmUgKm5vbl9ub25lOworfTsKKworI2VuZGlmIC8qIF9ORVQ4MDIx MV9JRUVFODAyMTFfUkFURUNUTF9OT05FX0hfICovCkluZGV4OiBzeXMvbmV0ODAyMTEvaWVlZTgw MjExX3JjX3NhbXBsZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfcmNf c2FtcGxlLmMJKHJldmlzaW9uIDApCisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JjX3NhbXBs ZS5jCShyZXZpc2lvbiAyNTY0NzQpCkBAIC0wLDAgKzEsMTE0MSBAQAorLyogJEZyZWVCU0Q6IGhl YWQvc3lzL2Rldi9hdGgvYXRoX3JhdGUvc2FtcGxlL3NhbXBsZS5jIDI0ODU3MyAyMDEzLTAyLTI3 IDA0OjMzOjA2WiBhZHJpYW4gJCovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA1IEpvaG4g Qmlja2V0CisgKiBDb3B5cmlnaHQgKGMpIDIwMTMgQ2hlbmNob25nIFFpbiA8Y2NxaW5ARnJlZUJT RC5vcmc+CisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93 aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNT IE9SCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCisgKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgorICogSU4gTk8gRVZF TlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAor ICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH RVMgKElOQ0xVRElORywgQlVUCisgKiBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj aW5jbHVkZSA8c3lzL2NkZWZzLmg+CisKKyNpbmNsdWRlICJvcHRfd2xhbi5oIgorCisjaW5jbHVk ZSA8c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1ZGUgPHN5cy9t b2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3N5c2N0bC5o PgorCisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bmV0L2lmX21lZGlhLmg+CisKKyNp ZmRlZiBJTkVUCisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvaWZf ZXRoZXIuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0ODAyMTEvaWVlZTgwMjExX3Zhci5oPgor I2luY2x1ZGUgPG5ldDgwMjExL2llZWU4MDIxMV9odC5oPgorI2luY2x1ZGUgPG5ldDgwMjExL2ll ZWU4MDIxMV9yYXRlY3RsLmg+CisjaW5jbHVkZSA8bmV0ODAyMTEvaWVlZTgwMjExX3JjX3NhbXBs ZS5oPgorI2luY2x1ZGUgPG5ldDgwMjExL2llZWU4MDIxMV9yY19zYW1wbGVfdHhzY2hlZC5oPgor CitzdGF0aWMgdm9pZAlzYW1wbGVfaW5pdChzdHJ1Y3QgaWVlZTgwMjExdmFwICosIHVpbnQzMl90 KTsKK3N0YXRpYyB2b2lkCXNhbXBsZV9kZWluaXQoc3RydWN0IGllZWU4MDIxMXZhcCAqKTsKK3N0 YXRpYyB2b2lkCXNhbXBsZV9ub2RlX2luaXQoc3RydWN0IGllZWU4MDIxMV9ub2RlICopOworc3Rh dGljIHZvaWQJc2FtcGxlX25vZGVfZGVpbml0KHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqKTsKK3N0 YXRpYyBpbnQJc2FtcGxlX3JhdGUoc3RydWN0IGllZWU4MDIxMV9ub2RlICosIHZvaWQgKiwgdWlu dDMyX3QpOworc3RhdGljIHZvaWQJc2FtcGxlX3R4X2NvbXBsZXRlKGNvbnN0IHN0cnVjdCBpZWVl ODAyMTF2YXAgKiwKKyAgICAJCQljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKiwgaW50LCAK KwkJCXZvaWQgKiwgdm9pZCAqKTsKK3N0YXRpYyB2b2lkCXNhbXBsZV90eF91cGRhdGUoY29uc3Qg c3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAorCQkJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9ub2Rl ICosIHZvaWQgKiwgdm9pZCAqLCB2b2lkICopOworc3RhdGljIHZvaWQJc2FtcGxlX3NldGludGVy dmFsKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKiwgaW50KTsKKworLyogbnVtYmVyIG9mIHJl ZmVyZW5jZXMgZnJvbSBuZXQ4MDIxMSBsYXllciAqLworc3RhdGljCWludCBucmVmcyA9IDA7CisK K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JhdGVjdGwgc2FtcGxlID0geworCS5pcl9u YW1lCT0gInNhbXBsZSIsCisJLmlyX2F0dGFjaAk9IE5VTEwsCisJLmlyX2RldGFjaAk9IE5VTEws CisJLmlyX2luaXQJPSBzYW1wbGVfaW5pdCwKKwkuaXJfZGVpbml0CT0gc2FtcGxlX2RlaW5pdCwK KwkuaXJfbm9kZV9pbml0CT0gc2FtcGxlX25vZGVfaW5pdCwKKwkuaXJfbm9kZV9kZWluaXQJPSBz YW1wbGVfbm9kZV9kZWluaXQsCisJLmlyX3JhdGUJPSBzYW1wbGVfcmF0ZSwKKwkuaXJfcmF0ZXMJ PSBzYW1wbGVfcmF0ZXMsCisJLmlyX3R4X2NvbXBsZXRlCT0gc2FtcGxlX3R4X2NvbXBsZXRlLAor CS5pcl90eF91cGRhdGUJPSBzYW1wbGVfdHhfdXBkYXRlLAorCS5pcl9zZXRpbnRlcnZhbAk9IHNh bXBsZV9zZXRpbnRlcnZhbCwKK307CitJRUVFODAyMTFfUkFURUNUTF9NT0RVTEUoc2FtcGxlLCAx KTsKK0lFRUU4MDIxMV9SQVRFQ1RMX0FMRyhzYW1wbGUsIElFRUU4MDIxMV9SQVRFQ1RMX1NBTVBM RSwgc2FtcGxlKTsKKworc3RhdGljIHZvaWQKK3NhbXBsZV9pbml0KHN0cnVjdCBpZWVlODAyMTF2 YXAgKnZhcCwgdWludDMyX3QgY2FwYWJpbGl0aWVzKQoreworCXN0cnVjdCBpZWVlODAyMTFfc2Ft cGxlICpzYW1wbGU7CisKKwlLQVNTRVJUKHZhcC0+aXZfcnMgPT0gTlVMTCwgKCIlcyBjYWxsZWQg bXVsdGlwbGUgdGltZXMiLCBfX2Z1bmNfXykpOworCisJc2FtcGxlID0gdmFwLT5pdl9ycyA9IG1h bGxvYyhzaXplb2Yoc3RydWN0IGllZWU4MDIxMV9zYW1wbGUpLAorCSAgICBNXzgwMjExX1JBVEVD VEwsIE1fTk9XQUlUfE1fWkVSTyk7CisJaWYgKHNhbXBsZSA9PSBOVUxMKSB7CisJCWlmX3ByaW50 Zih2YXAtPml2X2lmcCwgImNvdWxkbid0IGFsbG9jIHJhdGVjdGwgc3RydWN0dXJlXG4iKTsKKwkJ cmV0dXJuOworCX0KKworCXN0cnVjdCBpZWVlODAyMTFfcmNfc3RhdCAqIGlycyA9IElFRUU4MDIx MV9SQVRFQ1RMX1NUQVQodmFwKTsKKwlpcnMtPmlyc19jYXBhYmlsaXRpZXMgPSBjYXBhYmlsaXRp ZXM7CisKKwlzYW1wbGUtPnNhbXBsZV9zbW9vdGhpbmdfcmF0ZSA9IDc1OwkJLyogZXdtYSBwZXJj ZW50YWdlIChbMC4uOTldKSAqLworCXNhbXBsZS0+c2FtcGxlX3Ntb290aGluZ19taW5wYWNrZXRz ID0gMTAwIC8gKDEwMCAtIHNhbXBsZS0+c2FtcGxlX3Ntb290aGluZ19yYXRlKTsKKwlzYW1wbGUt PnNhbXBsZV9yYXRlID0gMTA7CQkJLyogJXRpbWUgdG8gdHJ5IGRpZmYgdHggcmF0ZXMgKi8KKwlz YW1wbGUtPnNhbXBsZV9tYXhfc3VjY2Vzc2l2ZV9mYWlsdXJlcyA9IDM7CS8qIHRocmVzaG9sZCBm b3IgcmF0ZSBzYW1wbGluZyovCisJc2FtcGxlLT5zYW1wbGVfc3RhbGVfZmFpbHVyZV90aW1lb3V0 ID0gMTAgKiBoejsJLyogMTAgc2Vjb25kcyAqLworCXNhbXBsZS0+c2FtcGxlX21pbl9zd2l0Y2gg PSBoejsJCQkvKiAxIHNlY29uZCAqLworCXNhbXBsZV9zZXRpbnRlcnZhbCh2YXAsIDUwMCAvKiBt cyAqLyk7IAkvKiBhY3R1YWxseSBkbyBub3RoaW5nICovCisJc2FtcGxlX3N5c2N0bGF0dGFjaCh2 YXAsIHZhcC0+aXZfc3lzY3RsLCB2YXAtPml2X29pZCk7Cit9CisKK3N0YXRpYyB2b2lkCitzYW1w bGVfZGVpbml0KHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCkKK3sKKwlmcmVlKHZhcC0+aXZfcnMs IE1fODAyMTFfUkFURUNUTCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgdHhzY2hlZHVsZSAq bXJyX3NjaGVkdWxlc1tJRUVFODAyMTFfTU9ERV9NQVgrMl0gPSB7CisJTlVMTCwJCS8qIElFRUU4 MDIxMV9NT0RFX0FVVE8gKi8KKwlzZXJpZXNfMTFhLAkvKiBJRUVFODAyMTFfTU9ERV8xMUEgKi8K KwlzZXJpZXNfMTFnLAkvKiBJRUVFODAyMTFfTU9ERV8xMUIgKi8KKwlzZXJpZXNfMTFnLAkvKiBJ RUVFODAyMTFfTU9ERV8xMUcgKi8KKwlOVUxMLAkJLyogSUVFRTgwMjExX01PREVfRkggKi8KKwlz ZXJpZXNfMTFhLAkvKiBJRUVFODAyMTFfTU9ERV9UVVJCT19BICovCisJc2VyaWVzXzExZywJLyog SUVFRTgwMjExX01PREVfVFVSQk9fRyAqLworCXNlcmllc18xMWEsCS8qIElFRUU4MDIxMV9NT0RF X1NUVVJCT19BICovCisJc2VyaWVzXzExbmEsCS8qIElFRUU4MDIxMV9NT0RFXzExTkEgKi8KKwlz ZXJpZXNfMTFuZywJLyogSUVFRTgwMjExX01PREVfMTFORyAqLworCXNlcmllc19oYWxmLAkvKiBJ RUVFODAyMTFfTU9ERV9IQUxGICovCisJc2VyaWVzX3F1YXJ0ZXIsCS8qIElFRUU4MDIxMV9NT0RF X1FVQVJURVIgKi8KK307CisKK3N0YXRpYyB2b2lkCitzYW1wbGVfbm9kZV9pbml0KHN0cnVjdCBp ZWVlODAyMTFfbm9kZSAqbmkpCit7CisjZGVmaW5lCVJBVEUoX2l4KQkobmktPm5pX3JhdGVzLnJz X3JhdGVzWyhfaXgpXSAmIElFRUU4MDIxMV9SQVRFX1ZBTCkKKyNkZWZpbmUJRE9UMTFSQVRFKF9p eCkJKHJ0LT5pbmZvWyhfaXgpXS5kb3QxMVJhdGUgJiBJRUVFODAyMTFfUkFURV9WQUwpCisjZGVm aW5lCU1DUyhfaXgpCShuaS0+bmlfaHRyYXRlcy5yc19yYXRlc1tfaXhdIHwgSUVFRTgwMjExX1JB VEVfTUNTKQorCXN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9IG5pLT5uaV92YXA7CisJc3RydWN0 IGllZWU4MDIxMV9zYW1wbGUgKnNhbXBsZSA9IHZhcC0+aXZfcnM7CisJc3RydWN0IGllZWU4MDIx MV9zYW1wbGVfbm9kZSAqc2FuID0gTlVMTDsKKwljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JhdGVf dGFibGUgKnJ0ID0gaWVlZTgwMjExX2dldF9yYXRldGFibGUodmFwLT5pdl9pYy0+aWNfY3VyY2hh bik7CisJZW51bSBpZWVlODAyMTFfcGh5bW9kZSBjdXJtb2RlID0gaWVlZTgwMjExX2NoYW4ybW9k ZSh2YXAtPml2X2ljLT5pY19jdXJjaGFuKTsKKwlpbnQgeCwgeSwgcml4OworCisJaWYgKG5pLT5u aV9yY3RscyA9PSBOVUxMKSB7CisJCW5pLT5uaV9yY3RscyA9IHNhbiA9IG1hbGxvYyhzaXplb2Yo c3RydWN0IGllZWU4MDIxMV9zYW1wbGVfbm9kZSksCisJCSAgICBNXzgwMjExX1JBVEVDVEwsIE1f Tk9XQUlUfE1fWkVSTyk7CisJCWlmIChzYW4gPT0gTlVMTCkgeworCQkJaWZfcHJpbnRmKHZhcC0+ aXZfaWZwLCAiY291bGRuJ3QgYWxsb2MgcGVyLW5vZGUgcmF0ZWN0bCAiCisJCQkgICAgInN0cnVj dHVyZVxuIik7CisJCQlyZXR1cm47CisJCX0KKwl9IGVsc2UKKwkJc2FuID0gbmktPm5pX3JjdGxz OworCQorCXNhbi0+c2FuX3NhbXBsZSA9IHNhbXBsZTsKKworCUtBU1NFUlQocnQgIT0gTlVMTCwg KCJubyByYXRlIHRhYmxlLCBtb2RlICV1IiwgY3VybW9kZSkpOworCisJc2FuLT5zY2hlZCA9IG1y cl9zY2hlZHVsZXNbY3VybW9kZV07CisJS0FTU0VSVChzYW4tPnNjaGVkICE9IE5VTEwsICgibm8g bXJyIHNjaGVkdWxlIGZvciBtb2RlICV1IiwgY3VybW9kZSkpOworCisJc2FuLT5zdGF0aWNfcml4 ID0gLTE7CisJc2FtcGxlX3VwZGF0ZV9zdGF0aWNfcml4KG5pKTsKKworCS8qCisJICogQ29uc3Ry dWN0IGEgYml0bWFzayBvZiB1c2FibGUgcmF0ZXMuICBUaGlzIGhhcyBhbGwKKwkgKiBuZWdvdGlh dGVkIHJhdGVzIG1pbnVzIHRob3NlIG1hcmtlZCBieSB0aGUgaGFsIGFzCisJICogdG8gYmUgaWdu b3JlZCBmb3IgZG9pbmcgcmF0ZSBjb250cm9sLgorCSAqLworCXNhbi0+cmF0ZW1hc2sgPSAwOwor CisJLyogTUNTIHJhdGVzICovCisJaWYgKG5pLT5uaV9mbGFncyAmIElFRUU4MDIxMV9OT0RFX0hU KSB7CisJCWZvciAoeCA9IDA7IHggPCBuaS0+bmlfaHRyYXRlcy5yc19ucmF0ZXM7IHgrKykgewor CQkJcml4ID0gcnQtPnJhdGVDb2RlVG9JbmRleFtNQ1MoeCldOworCQkJaWYgKHJpeCA9PSAweGZm KQorCQkJCWNvbnRpbnVlOworCQkJLyogc2tpcCByYXRlcyBtYXJrZWQgYnJva2VuIGJ5IGhhbCAq LworCQkJaWYgKCFydC0+aW5mb1tyaXhdLnZhbGlkKQorCQkJCWNvbnRpbnVlOworCQkJS0FTU0VS VChyaXggPCBTQU1QTEVfTUFYUkFURVMsCisJCQkgICAgKCJtY3MgJXUgaGFzIHJpeCAlZCIsIE1D Uyh4KSwgcml4KSk7CisJCQlzYW4tPnJhdGVtYXNrIHw9ICh1aW50NjRfdCkgMTw8cml4OworCQl9 CisJfQorCisJLyogTGVnYWN5IHJhdGVzICovCisJZm9yICh4ID0gMDsgeCA8IG5pLT5uaV9yYXRl cy5yc19ucmF0ZXM7IHgrKykgeworCQlyaXggPSBydC0+cmF0ZUNvZGVUb0luZGV4W1JBVEUoeCld OworCQlpZiAocml4ID09IDB4ZmYpCisJCQljb250aW51ZTsKKwkJLyogc2tpcCByYXRlcyBtYXJr ZWQgYnJva2VuIGJ5IGhhbCAqLworCQlpZiAoIXJ0LT5pbmZvW3JpeF0udmFsaWQpCisJCQljb250 aW51ZTsKKwkJS0FTU0VSVChyaXggPCBTQU1QTEVfTUFYUkFURVMsCisJCSAgICAoInJhdGUgJXUg aGFzIHJpeCAlZCIsIFJBVEUoeCksIHJpeCkpOworCQlzYW4tPnJhdGVtYXNrIHw9ICh1aW50NjRf dCkgMTw8cml4OworCX0KKworCWZvciAoeSA9IDA7IHkgPCBOVU1fUEFDS0VUX1NJWkVfQklOUzsg eSsrKSB7CisJCWludCBzaXplID0gYmluX3RvX3NpemUoeSk7CisJCXVpbnQ2NF90IG1hc2s7CisK KwkJc2FuLT5wYWNrZXRzX3NlbnRbeV0gPSAwOworCQlzYW4tPmN1cnJlbnRfc2FtcGxlX3JpeFt5 XSA9IC0xOworCQlzYW4tPmxhc3Rfc2FtcGxlX3JpeFt5XSA9IDA7CisJCS8qIFhYWCBzdGFydCB3 aXRoIGZpcnN0IHZhbGlkIHJhdGUgKi8KKwkJc2FuLT5jdXJyZW50X3JpeFt5XSA9IGZmcyhzYW4t PnJhdGVtYXNrKS0xOworCQkKKwkJLyoKKwkJICogSW5pdGlhbGl6ZSB0aGUgc3RhdGlzdGljcyBi dWNrZXRzOyB0aGVzZSBhcmUKKwkJICogaW5kZXhlZCBieSB0aGUgcmF0ZSBjb2RlIGluZGV4Lgor CQkgKi8KKwkJZm9yIChyaXggPSAwLCBtYXNrID0gc2FuLT5yYXRlbWFzazsgbWFzayAhPSAwOyBy aXgrKywgbWFzayA+Pj0gMSkgeworCQkJaWYgKChtYXNrICYgMSkgPT0gMCkJCS8qIG5vdCBhIHZh bGlkIHJhdGUgKi8KKwkJCQljb250aW51ZTsKKwkJCXNhbi0+c3RhdHNbeV1bcml4XS5zdWNjZXNz aXZlX2ZhaWx1cmVzID0gMDsKKwkJCXNhbi0+c3RhdHNbeV1bcml4XS50cmllcyA9IDA7CisJCQlz YW4tPnN0YXRzW3ldW3JpeF0udG90YWxfcGFja2V0cyA9IDA7CisJCQlzYW4tPnN0YXRzW3ldW3Jp eF0ucGFja2V0c19hY2tlZCA9IDA7CisJCQlzYW4tPnN0YXRzW3ldW3JpeF0ubGFzdF90eCA9IDA7 CisJCQlzYW4tPnN0YXRzW3ldW3JpeF0uZXdtYV9wY3QgPSAwOworCQkJCisJCQlzYW4tPnN0YXRz W3ldW3JpeF0ucGVyZmVjdF90eF90aW1lID0KKwkJCSAgICBjYWxjX3VzZWNzX3VuaWNhc3RfcGFj a2V0KHZhcCwgc2l6ZSwgcml4LCAwLCAwLAorCQkJICAgIChuaS0+bmlfY2h3ID09IDQwKSk7CisJ CQlzYW4tPnN0YXRzW3ldW3JpeF0uYXZlcmFnZV90eF90aW1lID0KKwkJCSAgICBzYW4tPnN0YXRz W3ldW3JpeF0ucGVyZmVjdF90eF90aW1lOworCQl9CisJfQorCisJLyogc2V0IHRoZSB2aXNpYmxl IGJpdC1yYXRlICovCisJaWYgKHNhbi0+c3RhdGljX3JpeCAhPSAtMSkKKwkJbmktPm5pX3R4cmF0 ZSA9IERPVDExUkFURShzYW4tPnN0YXRpY19yaXgpOworCWVsc2UKKwkJbmktPm5pX3R4cmF0ZSA9 IFJBVEUoMCk7CisjdW5kZWYgUkFURQorI3VuZGVmIERPVDExUkFURQorI3VuZGVmIE1DUworfQor CitzdGF0aWMgdm9pZAorc2FtcGxlX25vZGVfZGVpbml0KHN0cnVjdCBpZWVlODAyMTFfbm9kZSAq bmkpCit7CisJZnJlZShuaS0+bmlfcmN0bHMsIE1fODAyMTFfUkFURUNUTCk7Cit9CisKK3N0YXRp YyBpbnQKK2RvdDExcmF0ZShjb25zdCBpZWVlODAyMTFfcmF0ZV90YWJsZSAqcnQsIGludCByaXgp Cit7CisJaWYgKHJpeCA8IDApCisJCXJldHVybiAtMTsKKwlyZXR1cm4gcnQtPmluZm9bcml4XS5w aHkgPT0gSUVFRTgwMjExX1RfSFQgPworCSAgICBydC0+aW5mb1tyaXhdLmRvdDExUmF0ZSA6IChy dC0+aW5mb1tyaXhdLmRvdDExUmF0ZSAmIElFRUU4MDIxMV9SQVRFX1ZBTCkgLyAyOworfQorCitz dGF0aWMgY29uc3QgY2hhciAqCitkb3QxMXJhdGVfbGFiZWwoY29uc3QgaWVlZTgwMjExX3JhdGVf dGFibGUgKnJ0LCBpbnQgcml4KQoreworCWlmIChyaXggPCAwKQorCQlyZXR1cm4gIiI7CisJcmV0 dXJuIHJ0LT5pbmZvW3JpeF0ucGh5ID09IElFRUU4MDIxMV9UX0hUID8gIk1DUyIgOiAiTWIgIjsK K30KKworLyoKKyAqIFJldHVybiB0aGUgcml4IHdpdGggdGhlIGxvd2VzdCBhdmVyYWdlX3R4X3Rp bWUsCisgKiBvciAtMSBpZiBhbGwgdGhlIGF2ZXJhZ2VfdHhfdGltZXMgYXJlIDAuCisgKi8KK3N0 YXRpYyBfX2lubGluZSBpbnQKK3BpY2tfYmVzdF9yYXRlKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFf bm9kZSAqbmksIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZV90YWJsZSAqcnQsCisgICAgaW50 IHNpemVfYmluLCBpbnQgcmVxdWlyZV9hY2tlZF9iZWZvcmUpCit7CisJc3RydWN0IGllZWU4MDIx MV9zYW1wbGVfbm9kZSAqc2FuID0gbmktPm5pX3JjdGxzOworICAgIGludCBiZXN0X3JhdGVfcml4 LCBiZXN0X3JhdGVfdHQsIGJlc3RfcmF0ZV9wY3Q7CisJdWludDY0X3QgbWFzazsKKwlpbnQgcml4 LCB0dCwgcGN0OworCisgICAgYmVzdF9yYXRlX3JpeCA9IDA7CisgICAgYmVzdF9yYXRlX3R0ID0g MDsKKwliZXN0X3JhdGVfcGN0ID0gMDsKKworCWZvciAobWFzayA9IHNhbi0+cmF0ZW1hc2ssIHJp eCA9IDA7IG1hc2sgIT0gMDsgbWFzayA+Pj0gMSwgcml4KyspIHsKKwkJaWYgKChtYXNrICYgMSkg PT0gMCkJCS8qIG5vdCBhIHN1cHBvcnRlZCByYXRlICovCisJCQljb250aW51ZTsKKworCQkvKiBE b24ndCBwaWNrIGEgbm9uLUhUIHJhdGUgZm9yIGEgSFQgbm9kZSAqLworCQlpZiAoKG5pLT5uaV9m bGFncyAmIElFRUU4MDIxMV9OT0RFX0hUKSAmJgorCQkgICAgKHJ0LT5pbmZvW3JpeF0ucGh5ICE9 IElFRUU4MDIxMV9UX0hUKSkgeworCQkJY29udGludWU7CisJCX0KKworCQl0dCA9IHNhbi0+c3Rh dHNbc2l6ZV9iaW5dW3JpeF0uYXZlcmFnZV90eF90aW1lOworCQlpZiAodHQgPD0gMCB8fAorCQkg ICAgKHJlcXVpcmVfYWNrZWRfYmVmb3JlICYmCisJCSAgICAgIXNhbi0+c3RhdHNbc2l6ZV9iaW5d W3JpeF0ucGFja2V0c19hY2tlZCkpCisJCQljb250aW51ZTsKKworCQkvKiBDYWxjdWxhdGUgcGVy Y2VudGFnZSBpZiBwb3NzaWJsZSAqLworCQlpZiAoc2FuLT5zdGF0c1tzaXplX2Jpbl1bcml4XS50 b3RhbF9wYWNrZXRzID4gMCkgeworCQkJcGN0ID0gc2FuLT5zdGF0c1tzaXplX2Jpbl1bcml4XS5l d21hX3BjdDsKKwkJfSBlbHNlIHsKKwkJCS8qIFhYWCBmb3Igbm93LCBhc3N1bWUgOTUlIG9rICov CisJCQlwY3QgPSA5NTsKKwkJfQorCisJCS8qIGRvbid0IHVzZSBhIGJpdC1yYXRlIHRoYXQgaGFz IGJlZW4gZmFpbGluZyAqLworCQlpZiAoc2FuLT5zdGF0c1tzaXplX2Jpbl1bcml4XS5zdWNjZXNz aXZlX2ZhaWx1cmVzID4gMykKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIEZvciBIVCwgRG9u J3QgdXNlIGEgYml0IHJhdGUgdGhhdCBpcyBtdWNoIG1vcmUKKwkJICogbG9zc3kgdGhhbiB0aGUg YmVzdC4KKwkJICoKKwkJICogWFhYIHRoaXMgaXNuJ3Qgb3B0aW1hbDsgaXQncyBqdXN0IGRlc2ln bmVkIHRvCisJCSAqIGVsaW1pbmF0ZSByYXRlcyB0aGF0IGFyZSBnb2luZyB0byBiZSBvYnZpb3Vz bHkKKwkJICogd29yc2UuCisJCSAqLworCQlpZiAobmktPm5pX2ZsYWdzICYgSUVFRTgwMjExX05P REVfSFQpIHsKKwkJCWlmIChiZXN0X3JhdGVfcGN0ID4gKHBjdCArIDUwKSkKKwkJCQljb250aW51 ZTsKKwkJfQorCisJCS8qCisJCSAqIEZvciBub24tTUNTIHJhdGVzLCB1c2UgdGhlIGN1cnJlbnQg YXZlcmFnZSB0eHRpbWUgZm9yCisJCSAqIGNvbXBhcmlzb24uCisJCSAqLworCQlpZiAoISAobmkt Pm5pX2ZsYWdzICYgSUVFRTgwMjExX05PREVfSFQpKSB7CisJCQlpZiAoYmVzdF9yYXRlX3R0ID09 IDAgfHwgdHQgPD0gYmVzdF9yYXRlX3R0KSB7CisJCQkJYmVzdF9yYXRlX3R0ID0gdHQ7CisJCQkJ YmVzdF9yYXRlX3JpeCA9IHJpeDsKKwkJCQliZXN0X3JhdGVfcGN0ID0gcGN0OworCQkJfQorCQl9 CisKKwkJLyoKKwkJICogU2luY2UgMiBzdHJlYW0gcmF0ZXMgaGF2ZSBzbGlnaHRseSBoaWdoZXIg VFggdGltZXMsCisJCSAqIGFsbG93IGEgbGl0dGxlIGJpdCBvZiBsZWV3YXkuIFRoaXMgc2hvdWxk IGxhdGVyCisJCSAqIGJlIGFic3RyYWN0ZWQgb3V0IGFuZCBwcm9wZXJseSBoYW5kbGVkLgorCQkg Ki8KKwkJaWYgKG5pLT5uaV9mbGFncyAmIElFRUU4MDIxMV9OT0RFX0hUKSB7CisJCQlpZiAoYmVz dF9yYXRlX3R0ID09IDAgfHwgKHR0ICogOCA8PSBiZXN0X3JhdGVfdHQgKiAxMCkpIHsKKwkJCQli ZXN0X3JhdGVfdHQgPSB0dDsKKwkJCQliZXN0X3JhdGVfcml4ID0gcml4OworCQkJCWJlc3RfcmF0 ZV9wY3QgPSBwY3Q7CisJCQl9CisJCX0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGJlc3Rf cmF0ZV90dCA/IGJlc3RfcmF0ZV9yaXggOiAtMSk7Cit9CisKKy8qCisgKiBQaWNrIGEgZ29vZCAi cmFuZG9tIiBiaXQtcmF0ZSB0byBzYW1wbGUgb3RoZXIgdGhhbiB0aGUgY3VycmVudCBvbmUuCisg Ki8KK3N0YXRpYyBfX2lubGluZSBpbnQKK3BpY2tfc2FtcGxlX3JhdGUoY29uc3Qgc3RydWN0IGll ZWU4MDIxMV9ub2RlICpuaSwgY29uc3QgaWVlZTgwMjExX3JhdGVfdGFibGUgKnJ0LCAKKwlpbnQg c2l6ZV9iaW4pCit7CisjZGVmaW5lCURPVDExUkFURShpeCkJKHJ0LT5pbmZvW2l4XS5kb3QxMVJh dGUgJiBJRUVFODAyMTFfUkFURV9WQUwpCisjZGVmaW5lCU1DUyhpeCkJCShydC0+aW5mb1tpeF0u ZG90MTFSYXRlIHwgSUVFRTgwMjExX1JBVEVfTUNTKQorCXN0cnVjdCBpZWVlODAyMTFfc2FtcGxl X25vZGUgKnNhbiA9IG5pLT5uaV9yY3RsczsKKwlzdHJ1Y3QgaWVlZTgwMjExX3NhbXBsZSAqc2Ft cGxlID0gc2FuLT5zYW5fc2FtcGxlOworCWludCBjdXJyZW50X3JpeCwgcml4OworCXVuc2lnbmVk IGN1cnJlbnRfdHQ7CisJdWludDY0X3QgbWFzazsKKwkKKwljdXJyZW50X3JpeCA9IHNhbi0+Y3Vy cmVudF9yaXhbc2l6ZV9iaW5dOworCWlmIChjdXJyZW50X3JpeCA8IDApIHsKKwkJLyogbm8gc3Vj Y2Vzc2VzIHlldCwgc2VuZCBhdCB0aGUgbG93ZXN0IGJpdC1yYXRlICovCisJCS8qIFhYWCBzaG91 bGQgcmV0dXJuIE1DUzAgaWYgSFQgKi8KKwkJcmV0dXJuIDA7CisJfQorCisJY3VycmVudF90dCA9 IHNhbi0+c3RhdHNbc2l6ZV9iaW5dW2N1cnJlbnRfcml4XS5hdmVyYWdlX3R4X3RpbWU7CisKKwly aXggPSBzYW4tPmxhc3Rfc2FtcGxlX3JpeFtzaXplX2Jpbl0rMTsJLyogbmV4dCBzYW1wbGUgcmF0 ZSAqLworCW1hc2sgPSBzYW4tPnJhdGVtYXNrICZ+ICgodWludDY0X3QpIDE8PGN1cnJlbnRfcml4 KTsvKiBkb24ndCBzYW1wbGUgY3VycmVudCByYXRlICovCisJd2hpbGUgKG1hc2sgIT0gMCkgewor CQlpZiAoKG1hc2sgJiAoKHVpbnQ2NF90KSAxPDxyaXgpKSA9PSAwKSB7CS8qIG5vdCBhIHN1cHBv cnRlZCByYXRlICovCisJbmV4dHJhdGU6CisJCQlpZiAoKytyaXggPj0gcnQtPnJhdGVDb3VudCkK KwkJCQlyaXggPSAwOworCQkJY29udGludWU7CisJCX0KKworCQkvKgorCQkgKiBUaGUgZm9sbG93 aW5nIGNvZGUgc3RvcHMgdHJ5aW5nIHRvIHNhbXBsZQorCQkgKiBub24tTUNTIHJhdGVzIHdoZW4g c3BlYWtpbmcgdG8gYW4gTUNTIG5vZGUuCisJCSAqIEhvd2V2ZXIsIGF0IGxlYXN0IGZvciBDQ0sg cmF0ZXMgaW4gMi40R0h6IG1vZGUsCisJCSAqIHRoZSBub24tTUNTIHJhdGVzIE1BWSBhY3R1YWxs eSBwcm92aWRlIGJldHRlcgorCQkgKiBQRVIgYXQgdGhlIHZlcnkgZmFyIGVkZ2Ugb2YgcmVjZXB0 aW9uLgorCQkgKgorCQkgKiBIb3dldmVyISBVbnRpbCBhdGhfcmF0ZV9mb3JtX2FnZ3IoKSBncm93 cworCQkgKiBzb21lIGxvZ2ljIHRvIG5vdCBmb3JtIGFnZ3JlZ2F0ZXMgaWYgdGhlCisJCSAqIHNl bGVjdGVkIHJhdGUgaXMgbm9uLU1DUywgdGhpcyB3b24ndCB3b3JrLgorCQkgKgorCQkgKiBTbyBk b24ndCBkaXNhYmxlIHRoaXMgY29kZSB1bnRpbCB5b3UndmUgdGF1Z2h0CisJCSAqIGF0aF9yYXRl X2Zvcm1fYWdncigpIHRvIGRyb3Agb3V0IGlmIGFueSBvZgorCQkgKiB0aGUgc2VsZWN0ZWQgcmF0 ZXMgYXJlIG5vbi1NQ1MuCisJCSAqLworI2lmIDEKKwkJLyogaWYgdGhlIG5vZGUgaXMgSFQgYW5k IHRoZSByYXRlIGlzbid0IEhULCBkb24ndCBib3RoZXIgc2FtcGxlICovCisJCWlmICgobmktPm5p X2ZsYWdzICYgSUVFRTgwMjExX05PREVfSFQpICYmCisJCSAgICAocnQtPmluZm9bcml4XS5waHkg IT0gSUVFRTgwMjExX1RfSFQpKSB7CisJCQltYXNrICY9IH4oKHVpbnQ2NF90KSAxPDxyaXgpOwor CQkJZ290byBuZXh0cmF0ZTsKKwkJfQorI2VuZGlmCisKKwkJLyogdGhpcyBiaXQtcmF0ZSBpcyBh bHdheXMgd29yc2UgdGhhbiB0aGUgY3VycmVudCBvbmUgKi8KKwkJaWYgKHNhbi0+c3RhdHNbc2l6 ZV9iaW5dW3JpeF0ucGVyZmVjdF90eF90aW1lID4gY3VycmVudF90dCkgeworCQkJbWFzayAmPSB+ KCh1aW50NjRfdCkgMTw8cml4KTsKKwkJCWdvdG8gbmV4dHJhdGU7CisJCX0KKworCQkvKiByYXJl bHkgc2FtcGxlIGJpdC1yYXRlcyB0aGF0IGZhaWwgYSBsb3QgKi8KKwkJaWYgKHNhbi0+c3RhdHNb c2l6ZV9iaW5dW3JpeF0uc3VjY2Vzc2l2ZV9mYWlsdXJlcyA+IHNhbXBsZS0+c2FtcGxlX21heF9z dWNjZXNzaXZlX2ZhaWx1cmVzICYmCisJCSAgICB0aWNrcyAtIHNhbi0+c3RhdHNbc2l6ZV9iaW5d W3JpeF0ubGFzdF90eCA8IHNhbXBsZS0+c2FtcGxlX3N0YWxlX2ZhaWx1cmVfdGltZW91dCkgewor CQkJbWFzayAmPSB+KCh1aW50NjRfdCkgMTw8cml4KTsKKwkJCWdvdG8gbmV4dHJhdGU7CisJCX0K KworCQkvKgorCQkgKiBGb3IgSFQsIG9ubHkgc2FtcGxlIGEgZmV3IHJhdGVzIG9uIGVpdGhlciBz aWRlIG9mIHRoZQorCQkgKiBjdXJyZW50IHJpeDsgdGhlcmUncyBxdWl0ZSBsaWtlbHkgYSBsb3Qg b2YgdGhlbS4KKwkJICovCisJCWlmIChuaS0+bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9IVCkg eworCQkJaWYgKHJpeCA8IChjdXJyZW50X3JpeCAtIDMpIHx8CisJCQkgICAgcml4ID4gKGN1cnJl bnRfcml4ICsgMykpIHsKKwkJCQltYXNrICY9IH4oKHVpbnQ2NF90KSAxPDxyaXgpOworCQkJCWdv dG8gbmV4dHJhdGU7CisJCQl9CisJCX0KKworCQkvKiBEb24ndCBzYW1wbGUgbW9yZSB0aGFuIDIg cmF0ZXMgaGlnaGVyIGZvciByYXRlcyA+IDExTSBmb3Igbm9uLUhUIHJhdGVzICovCisJCWlmICgh IChuaS0+bmlfZmxhZ3MgJiBJRUVFODAyMTFfTk9ERV9IVCkpIHsKKwkJCWlmIChET1QxMVJBVEUo cml4KSA+IDIqMTEgJiYgcml4ID4gY3VycmVudF9yaXggKyAyKSB7CisJCQkJbWFzayAmPSB+KCh1 aW50NjRfdCkgMTw8cml4KTsKKwkJCQlnb3RvIG5leHRyYXRlOworCQkJfQorCQl9CisKKwkJc2Fu LT5sYXN0X3NhbXBsZV9yaXhbc2l6ZV9iaW5dID0gcml4OworCQlyZXR1cm4gcml4OworCX0KKwly ZXR1cm4gY3VycmVudF9yaXg7CisjdW5kZWYgRE9UMTFSQVRFCisjdW5kZWYgTUNTCit9CisKK3N0 YXRpYyBpbnQKK3NhbXBsZV9nZXRfc3RhdGljX3JpeChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX25v ZGUgKm5pKQoreworI2RlZmluZQlSQVRFKF9peCkJKG5pLT5uaV9yYXRlcy5yc19yYXRlc1soX2l4 KV0gJiBJRUVFODAyMTFfUkFURV9WQUwpCisjZGVmaW5lCU1DUyhfaXgpCShuaS0+bmlfaHRyYXRl cy5yc19yYXRlc1tfaXhdIHwgSUVFRTgwMjExX1JBVEVfTUNTKQorCXN0cnVjdCBpZWVlODAyMTF2 YXAgKnZhcCA9IG5pLT5uaV92YXA7CisJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlX3RhYmxl ICpydCA9IGllZWU4MDIxMV9nZXRfcmF0ZXRhYmxlKHZhcC0+aXZfaWMtPmljX2N1cmNoYW4pOwor CWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfdHhwYXJhbSAqdHAgPSBuaS0+bmlfdHhwYXJtczsKKwlp bnQgc3JhdGU7CisKKwkvKiBDaGVjayBNQ1MgcmF0ZXMgKi8KKwlmb3IgKHNyYXRlID0gbmktPm5p X2h0cmF0ZXMucnNfbnJhdGVzIC0gMTsgc3JhdGUgPj0gMDsgc3JhdGUtLSkgeworCQlpZiAoTUNT KHNyYXRlKSA9PSB0cC0+dWNhc3RyYXRlKQorCQkJcmV0dXJuIHJ0LT5yYXRlQ29kZVRvSW5kZXhb dHAtPnVjYXN0cmF0ZV07CisJfQorCisJLyogQ2hlY2sgbGVnYWN5IHJhdGVzICovCisJZm9yIChz cmF0ZSA9IG5pLT5uaV9yYXRlcy5yc19ucmF0ZXMgLSAxOyBzcmF0ZSA+PSAwOyBzcmF0ZS0tKSB7 CisJCWlmIChSQVRFKHNyYXRlKSA9PSB0cC0+dWNhc3RyYXRlKQorCQkJcmV0dXJuIHJ0LT5yYXRl Q29kZVRvSW5kZXhbdHAtPnVjYXN0cmF0ZV07CisJfQorCXJldHVybiAtMTsKKyN1bmRlZglSQVRF CisjdW5kZWYJTUNTCit9CisKK3N0YXRpYyB2b2lkCitzYW1wbGVfdXBkYXRlX3N0YXRpY19yaXgo c3RydWN0IGllZWU4MDIxMV9ub2RlICpuaSkKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX3NhbXBsZV9u b2RlICpzYW4gPSBuaS0+bmlfcmN0bHM7CisJY29uc3Qgc3RydWN0IGllZWU4MDIxMV90eHBhcmFt ICp0cCA9IG5pLT5uaV90eHBhcm1zOworCisJaWYgKHRwICE9IE5VTEwgJiYgdHAtPnVjYXN0cmF0 ZSAhPSBJRUVFODAyMTFfRklYRURfUkFURV9OT05FKSB7CisJCS8qCisJCSAqIEEgZml4ZWQgcmF0 ZSBpcyB0byBiZSB1c2VkOyB1Y2FzdHJhdGUgaXMgdGhlIElFRUUgY29kZQorCQkgKiBmb3IgdGhp cyByYXRlIChzYW5zIGJhc2ljIGJpdCkuICBDaGVjayB0aGlzIGFnYWluc3QgdGhlCisJCSAqIG5l Z290aWF0ZWQgcmF0ZSBzZXQgZm9yIHRoZSBub2RlLiAgTm90ZSB0aGUgZml4ZWQgcmF0ZQorCQkg KiBtYXkgbm90IGJlIGF2YWlsYWJsZSBmb3IgdmFyaW91cyByZWFzb25zIHNvIHdlIG9ubHkKKwkJ ICogc2V0dXAgdGhlIHN0YXRpYyByYXRlIGluZGV4IGlmIHRoZSBsb29rdXAgaXMgc3VjY2Vzc2Z1 bC4KKwkJICovCisJCXNhbi0+c3RhdGljX3JpeCA9IHNhbXBsZV9nZXRfc3RhdGljX3JpeChuaSk7 CisJfSBlbHNlIHsKKwkJc2FuLT5zdGF0aWNfcml4ID0gLTE7CisJfQorfQorCisvKgorICogUGlj ayBhIG5vbi1IVCByYXRlIHRvIGJlZ2luIHVzaW5nLgorICovCitzdGF0aWMgaW50CitzYW1wbGVf cGlja19zZWVkX3JhdGVfbGVnYWN5KGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksIGlu dCBmcmFtZUxlbikKK3sKKyNkZWZpbmUJRE9UMTFSQVRFKGl4KQkocnQtPmluZm9baXhdLmRvdDEx UmF0ZSAmIElFRUU4MDIxMV9SQVRFX1ZBTCkKKwlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAgPSBu aS0+bmlfdmFwOworCXN0cnVjdCBpZWVlODAyMTFfc2FtcGxlX25vZGUgKnNhbiA9IG5pLT5uaV9y Y3RsczsKKwljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JhdGVfdGFibGUgKnJ0ID0gaWVlZTgwMjEx X2dldF9yYXRldGFibGUodmFwLT5pdl9pYy0+aWNfY3VyY2hhbik7CisJCisJY29uc3QgaW50IHNp emVfYmluID0gc2l6ZV90b19iaW4oZnJhbWVMZW4pOworCWludCByaXggPSAtMTsKKworCS8qIG5v IHBhY2tldCBoYXMgYmVlbiBzZW50IHN1Y2Nlc3NmdWxseSB5ZXQgKi8KKwlmb3IgKHJpeCA9IHJ0 LT5yYXRlQ291bnQtMTsgcml4ID4gMDsgcml4LS0pIHsKKwkJaWYgKChzYW4tPnJhdGVtYXNrICYg KCh1aW50NjRfdCkgMTw8cml4KSkgPT0gMCkKKwkJCWNvbnRpbnVlOworCisJCS8qIFNraXAgSFQg cmF0ZXMgKi8KKwkJaWYgKHJ0LT5pbmZvW3JpeF0ucGh5ID09IElFRUU4MDIxMV9UX0hUKQorCQkJ Y29udGludWU7CisKKwkJLyoKKwkJICogUGljayB0aGUgaGlnaGVzdCByYXRlIDw9IDM2IE1icHMK KwkJICogdGhhdCBoYXNuJ3QgZmFpbGVkLgorCQkgKi8KKwkJaWYgKERPVDExUkFURShyaXgpIDw9 IDcyICYmCisJCSAgICBzYW4tPnN0YXRzW3NpemVfYmluXVtyaXhdLnN1Y2Nlc3NpdmVfZmFpbHVy ZXMgPT0gMCkgeworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJuIHJpeDsKKyN1bmRlZiBET1Qx MVJBVEUKK30KKworLyoKKyAqIFBpY2sgYSBIVCByYXRlIHRvIGJlZ2luIHVzaW5nLgorICoKKyAq IERvbid0IHVzZSBhbnkgbm9uLUhUIHJhdGVzOyBvbmx5IGNvbnNpZGVyIEhUIHJhdGVzLgorICov CitzdGF0aWMgaW50CitzYW1wbGVfcGlja19zZWVkX3JhdGVfaHQoY29uc3Qgc3RydWN0IGllZWU4 MDIxMV9ub2RlICpuaSwgaW50IGZyYW1lTGVuKQoreworI2RlZmluZQlNQ1MoaXgpCQkocnQtPmlu Zm9baXhdLmRvdDExUmF0ZSB8IElFRUU4MDIxMV9SQVRFX01DUykKKwlzdHJ1Y3QgaWVlZTgwMjEx dmFwICp2YXAgPSBuaS0+bmlfdmFwOworCXN0cnVjdCBpZWVlODAyMTFfc2FtcGxlX25vZGUgKnNh biA9IG5pLT5uaV9yY3RsczsKKwljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX3JhdGVfdGFibGUgKnJ0 ID0gaWVlZTgwMjExX2dldF9yYXRldGFibGUodmFwLT5pdl9pYy0+aWNfY3VyY2hhbik7CisJCisJ Y29uc3QgaW50IHNpemVfYmluID0gc2l6ZV90b19iaW4oZnJhbWVMZW4pOworCWludCByaXggPSAt MSwgaHRfcml4ID0gLTE7CisKKwkvKiBubyBwYWNrZXQgaGFzIGJlZW4gc2VudCBzdWNjZXNzZnVs bHkgeWV0ICovCisJZm9yIChyaXggPSBydC0+cmF0ZUNvdW50LTE7IHJpeCA+IDA7IHJpeC0tKSB7 CisJCS8qIFNraXAgcmF0ZXMgd2UgY2FuJ3QgdXNlICovCisJCWlmICgoc2FuLT5yYXRlbWFzayAm ICgodWludDY0X3QpIDE8PHJpeCkpID09IDApCisJCQljb250aW51ZTsKKworCQkvKiBLZWVwIGEg Y29weSBvZiB0aGUgbGFzdCBzZWVuIEhUIHJhdGUgaW5kZXggKi8KKwkJaWYgKHJ0LT5pbmZvW3Jp eF0ucGh5ID09IElFRUU4MDIxMV9UX0hUKQorCQkJaHRfcml4ID0gcml4OworCisJCS8qIFNraXAg bm9uLUhUIHJhdGVzICovCisJCWlmIChydC0+aW5mb1tyaXhdLnBoeSAhPSBJRUVFODAyMTFfVF9I VCkKKwkJCWNvbnRpbnVlOworCisJCS8qCisJCSAqIFBpY2sgYSBtZWRpdW0tc3BlZWQgcmF0ZSBy ZWdhcmRsZXNzIG9mIHN0cmVhbSBjb3VudAorCQkgKiB3aGljaCBoYXMgbm90IHNlZW4gYW55IGZh aWx1cmVzLiBIaWdoZXIgcmF0ZXMgbWF5IGZhaWw7CisJCSAqIHdlJ2xsIHRyeSB0aGVtIGxhdGVy LgorCQkgKi8KKwkJaWYgKCgoTUNTKHJpeCkgJiAweDcpIDw9IDQpICYmCisJCSAgICBzYW4tPnN0 YXRzW3NpemVfYmluXVtyaXhdLnN1Y2Nlc3NpdmVfZmFpbHVyZXMgPT0gMCkgeworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwkvKgorCSAqIElmIGFsbCB0aGUgTUNTIHJhdGVzIGhhdmUgc3VjY2Vzc2l2 ZSBmYWlsdXJlcywgcml4IHNob3VsZCBiZQorCSAqID4gMDsgb3RoZXJ3aXNlIHVzZSB0aGUgbG93 ZXN0IE1DUyByaXggKGhvcGVmdWxseSBNQ1MgMC4pCisJICovCisJcmV0dXJuIE1BWChyaXgsIGh0 X3JpeCk7CisjdW5kZWYgTUNTCit9CisKK3N0YXRpYyBpbnQKK3NhbXBsZV9yYXRlKHN0cnVjdCBp ZWVlODAyMTFfbm9kZSAqbmksIHZvaWQgKmFyZyBfX3VudXNlZCwgdWludDMyX3QgaWFyZyBfX3Vu dXNlZCkKK3sKKyNkZWZpbmUJRE9UMTFSQVRFKGl4KQkocnQtPmluZm9baXhdLmRvdDExUmF0ZSAm IElFRUU4MDIxMV9SQVRFX1ZBTCkKKyNkZWZpbmUJTUNTKGl4KQkJKHJ0LT5pbmZvW2l4XS5kb3Qx MVJhdGUgfCBJRUVFODAyMTFfUkFURV9NQ1MpCisjZGVmaW5lCVJBVEUoaXgpCShET1QxMVJBVEUo aXgpIC8gMikKKwlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAgPSBuaS0+bmlfdmFwOworCXN0cnVj dCBpZWVlODAyMTFfc2FtcGxlX25vZGUgKnNhbiA9IG5pLT5uaV9yY3RsczsKKwlzdHJ1Y3QgaWVl ZTgwMjExX3NhbXBsZSAqc2FtcGxlID0gc2FuLT5zYW5fc2FtcGxlOworCWNvbnN0IHN0cnVjdCBp ZWVlODAyMTFfcmF0ZV90YWJsZSAqcnQgPSBpZWVlODAyMTFfZ2V0X3JhdGV0YWJsZSh2YXAtPml2 X2ljLT5pY19jdXJjaGFuKTsKKwkKKwlpbnQgcml4LCBtcnIsIGJlc3Rfcml4LCBjaGFuZ2VfcmF0 ZXM7CisJdW5zaWduZWQgYXZlcmFnZV90eF90aW1lOworCQorCXNpemVfdCBmcmFtZUxlbiA9IChz aXplX3QpaWFyZzsKKwljb25zdCBpbnQgc2l6ZV9iaW4gPSBzaXplX3RvX2JpbihmcmFtZUxlbik7 CisKKwlzYW1wbGVfdXBkYXRlX3N0YXRpY19yaXgobmkpOworCisJaWYgKHNhbi0+c3RhdGljX3Jp eCAhPSAtMSkgeworCQlyaXggPSBzYW4tPnN0YXRpY19yaXg7CisJCWdvdG8gZG9uZTsKKwl9CisK KwlpZiAoSUVFRTgwMjExX1JBVEVDVExfSEFTQ0FQX01SUih2YXApKQorCQltcnIgPSAxOworCWlm ICghIElFRUU4MDIxMV9SQVRFQ1RMX0hBU0NBUF9NUlJQUk9UKHZhcCkpCisJCW1yciA9IDA7CisK KwliZXN0X3JpeCA9IHBpY2tfYmVzdF9yYXRlKG5pLCBydCwgc2l6ZV9iaW4sICFtcnIpOworCWlm IChiZXN0X3JpeCA+PSAwKSB7CisJCWF2ZXJhZ2VfdHhfdGltZSA9IHNhbi0+c3RhdHNbc2l6ZV9i aW5dW2Jlc3Rfcml4XS5hdmVyYWdlX3R4X3RpbWU7CisJfSBlbHNlIHsKKwkJYXZlcmFnZV90eF90 aW1lID0gMDsKKwl9CisKKwkvKgorCSAqIExpbWl0IHRoZSB0aW1lIG1lYXN1cmluZyB0aGUgcGVy Zm9ybWFuY2Ugb2Ygb3RoZXIgdHgKKwkgKiByYXRlcyB0byBzYW1wbGVfcmF0ZSUgb2YgdGhlIHRv dGFsIHRyYW5zbWlzc2lvbiB0aW1lLgorCSAqLworCWlmIChzYW4tPnNhbXBsZV90dFtzaXplX2Jp bl0gPCBhdmVyYWdlX3R4X3RpbWUgKiAoc2FuLT5wYWNrZXRzX3NpbmNlX3NhbXBsZVtzaXplX2Jp bl0gKgorCQlzYW1wbGUtPnNhbXBsZV9yYXRlLzEwMCkpIHsKKwkJcml4ID0gcGlja19zYW1wbGVf cmF0ZShuaSwgcnQsIHNpemVfYmluKTsKKwkJSUVFRTgwMjExX05PVEUodmFwLCBJRUVFODAyMTFf TVNHX1JBVEVDVEwsCisJCSAgICAgJm5pLCAiYXR0ICVkIHNhbXBsZV90dCAlZCBzaXplICV1IHNh bXBsZSByYXRlICVkICVzIGN1cnJlbnQgcmF0ZSAlZCAlcyIsCisJCSAgICAgYXZlcmFnZV90eF90 aW1lLAorCQkgICAgIHNhbi0+c2FtcGxlX3R0W3NpemVfYmluXSwKKwkJICAgICBiaW5fdG9fc2l6 ZShzaXplX2JpbiksCisJCSAgICAgZG90MTFyYXRlKHJ0LCByaXgpLAorCQkgICAgIGRvdDExcmF0 ZV9sYWJlbChydCwgcml4KSwKKwkJICAgICBkb3QxMXJhdGUocnQsIHNhbi0+Y3VycmVudF9yaXhb c2l6ZV9iaW5dKSwKKwkJICAgICBkb3QxMXJhdGVfbGFiZWwocnQsIHNhbi0+Y3VycmVudF9yaXhb c2l6ZV9iaW5dKSk7CisJCWlmIChyaXggIT0gc2FuLT5jdXJyZW50X3JpeFtzaXplX2Jpbl0pIHsK KwkJCXNhbi0+Y3VycmVudF9zYW1wbGVfcml4W3NpemVfYmluXSA9IHJpeDsKKwkJfSBlbHNlIHsK KwkJCXNhbi0+Y3VycmVudF9zYW1wbGVfcml4W3NpemVfYmluXSA9IC0xOworCQl9CisJCXNhbi0+ cGFja2V0c19zaW5jZV9zYW1wbGVbc2l6ZV9iaW5dID0gMDsKKwl9IGVsc2UgeworCQljaGFuZ2Vf cmF0ZXMgPSAwOworCQlpZiAoIXNhbi0+cGFja2V0c19zZW50W3NpemVfYmluXSB8fCBiZXN0X3Jp eCA9PSAtMSkgeworCQkJLyogbm8gcGFja2V0IGhhcyBiZWVuIHNlbnQgc3VjY2Vzc2Z1bGx5IHll dCAqLworCQkJY2hhbmdlX3JhdGVzID0gMTsKKwkJCWlmIChuaS0+bmlfZmxhZ3MgJiBJRUVFODAy MTFfTk9ERV9IVCkKKwkJCQliZXN0X3JpeCA9IHNhbXBsZV9waWNrX3NlZWRfcmF0ZV9odChuaSwg ZnJhbWVMZW4pOworCQkJZWxzZQorCQkJCWJlc3Rfcml4ID0gc2FtcGxlX3BpY2tfc2VlZF9yYXRl X2xlZ2FjeShuaSwgZnJhbWVMZW4pOworCQl9IGVsc2UgaWYgKHNhbi0+cGFja2V0c19zZW50W3Np emVfYmluXSA8IDIwKSB7CisJCQkvKiBsZXQgdGhlIGJpdC1yYXRlIHN3aXRjaCBxdWlja2x5IGR1 cmluZyB0aGUgZmlyc3QgZmV3IHBhY2tldHMgKi8KKwkJCUlFRUU4MDIxMV9OT1RFKHZhcCwKKwkJ CSAgICBJRUVFODAyMTFfTVNHX1JBVEVDVEwsICZuaSwKKwkJCSAgICAiJXM6IHN3aXRjaGluZyBx dWlja2x5Li4iLCBfX2Z1bmNfXyk7CisJCQljaGFuZ2VfcmF0ZXMgPSAxOworCQl9IGVsc2UgaWYg KHRpY2tzIC0gc2FtcGxlLT5zYW1wbGVfbWluX3N3aXRjaCA+IHNhbi0+dGlja3Nfc2luY2Vfc3dp dGNoW3NpemVfYmluXSkgeworCQkJLyogbWluX3N3aXRjaCBzZWNvbmRzIGhhdmUgZ29uZSBieSAq LworCQkJSUVFRTgwMjExX05PVEUodmFwLAorCQkJICAgIElFRUU4MDIxMV9NU0dfUkFURUNUTCwg Jm5pLAorCQkJICAgICIlczogbWluX3N3aXRjaCAlZCA+IHRpY2tzX3NpbmNlX3N3aXRjaCAlZC4u IiwKKwkJCSAgICBfX2Z1bmNfXywgdGlja3MgLSBzYW1wbGUtPnNhbXBsZV9taW5fc3dpdGNoLCBz YW4tPnRpY2tzX3NpbmNlX3N3aXRjaFtzaXplX2Jpbl0pOworCQkJY2hhbmdlX3JhdGVzID0gMTsK KwkJfSBlbHNlIGlmICgoISAobmktPm5pX2ZsYWdzICYgSUVFRTgwMjExX05PREVfSFQpKSAmJgor CQkgICAgKDIqYXZlcmFnZV90eF90aW1lIDwgc2FuLT5zdGF0c1tzaXplX2Jpbl1bc2FuLT5jdXJy ZW50X3JpeFtzaXplX2Jpbl1dLmF2ZXJhZ2VfdHhfdGltZSkpIHsKKwkJCS8qIHRoZSBjdXJyZW50 IGJpdC1yYXRlIGlzIHR3aWNlIGFzIHNsb3cgYXMgdGhlIGJlc3Qgb25lICovCisJCQlJRUVFODAy MTFfTk9URSh2YXAsCisJCQkgICAgSUVFRTgwMjExX01TR19SQVRFQ1RMLCAmbmksCisJCQkgICAg IiVzOiAyeCBhdHQgKD0gJWQpIDwgY3VyX3JpeCBhdHQgJWQiLAorCQkJICAgIF9fZnVuY19fLAor CQkJICAgIDIgKiBhdmVyYWdlX3R4X3RpbWUsIHNhbi0+c3RhdHNbc2l6ZV9iaW5dW3Nhbi0+Y3Vy cmVudF9yaXhbc2l6ZV9iaW5dXS5hdmVyYWdlX3R4X3RpbWUpOworCQkJY2hhbmdlX3JhdGVzID0g MTsKKwkJfSBlbHNlIGlmICgobmktPm5pX2ZsYWdzICYgSUVFRTgwMjExX05PREVfSFQpKSB7CisJ CQlpbnQgY3VyX3JpeCA9IHNhbi0+Y3VycmVudF9yaXhbc2l6ZV9iaW5dOworCQkJaW50IGN1cl9h dHQgPSBzYW4tPnN0YXRzW3NpemVfYmluXVtjdXJfcml4XS5hdmVyYWdlX3R4X3RpbWU7CisJCQkv KgorCQkJICogSWYgdGhlIG5vZGUgaXMgSFQsIHVwZ3JhZGUgaXQgaWYgdGhlIE1DUyByYXRlIGlz CisJCQkgKiBoaWdoZXIgYW5kIHRoZSBhdmVyYWdlIHR4IHRpbWUgaXMgd2l0aGluIDIwJSBvZgor CQkJICogdGhlIGN1cnJlbnQgcmF0ZS4gSXQgY2FuIGZhaWwgYSBsaXR0bGUuCisJCQkgKgorCQkJ ICogVGhpcyBpcyBsaWtlbHkgbm90IG9wdGltYWwhCisJCQkgKi8KKyNpZiAwCisJCQlwcmludGYo ImN1ciByaXgvYXR0ICV4LyVkLCBiZXN0IHJpeC9hdHQgJXgvJWRcbiIsCisJCQkgICAgTUNTKGN1 cl9yaXgpLCBjdXJfYXR0LCBNQ1MoYmVzdF9yaXgpLCBhdmVyYWdlX3R4X3RpbWUpOworI2VuZGlm CisJCQlpZiAoKE1DUyhiZXN0X3JpeCkgPiBNQ1MoY3VyX3JpeCkpICYmCisJCQkgICAgKGF2ZXJh Z2VfdHhfdGltZSAqIDgpIDw9IChjdXJfYXR0ICogMTApKSB7CisJCQkJSUVFRTgwMjExX05PVEUo dmFwLAorCQkJCSAgICBJRUVFODAyMTFfTVNHX1JBVEVDVEwsICZuaSwKKwkJCQkgICAgIiVzOiBI VDogYmVzdF9yaXggMHglZCA+IGN1cl9yaXggMHgleCwgYXZlcmFnZV90eF90aW1lICVkLCBjdXJf YXR0ICVkIiwKKwkJCQkgICAgX19mdW5jX18sCisJCQkJICAgIE1DUyhiZXN0X3JpeCksIE1DUyhj dXJfcml4KSwgYXZlcmFnZV90eF90aW1lLCBjdXJfYXR0KTsKKwkJCQljaGFuZ2VfcmF0ZXMgPSAx OworCQkJfQorCQl9CisKKwkJc2FuLT5wYWNrZXRzX3NpbmNlX3NhbXBsZVtzaXplX2Jpbl0rKzsK KwkJCisJCWlmIChjaGFuZ2VfcmF0ZXMpIHsKKwkJCWlmIChiZXN0X3JpeCAhPSBzYW4tPmN1cnJl bnRfcml4W3NpemVfYmluXSkgeworCQkJCUlFRUU4MDIxMV9OT1RFKHZhcCwKKwkJCQkgICAgSUVF RTgwMjExX01TR19SQVRFQ1RMLAorCQkJCSAgICAmbmksCisiJXM6IHNpemUgJWQgc3dpdGNoIHJh dGUgJWQgKCVkLyVkKSAtPiAlZCAoJWQvJWQpIGFmdGVyICVkIHBhY2tldHMgbXJyICVkIiwKKwkJ CQkgICAgX19mdW5jX18sCisJCQkJICAgIGJpbl90b19zaXplKHNpemVfYmluKSwKKwkJCQkgICAg UkFURShzYW4tPmN1cnJlbnRfcml4W3NpemVfYmluXSksCisJCQkJICAgIHNhbi0+c3RhdHNbc2l6 ZV9iaW5dW3Nhbi0+Y3VycmVudF9yaXhbc2l6ZV9iaW5dXS5hdmVyYWdlX3R4X3RpbWUsCisJCQkJ ICAgIHNhbi0+c3RhdHNbc2l6ZV9iaW5dW3Nhbi0+Y3VycmVudF9yaXhbc2l6ZV9iaW5dXS5wZXJm ZWN0X3R4X3RpbWUsCisJCQkJICAgIFJBVEUoYmVzdF9yaXgpLAorCQkJCSAgICBzYW4tPnN0YXRz W3NpemVfYmluXVtiZXN0X3JpeF0uYXZlcmFnZV90eF90aW1lLAorCQkJCSAgICBzYW4tPnN0YXRz W3NpemVfYmluXVtiZXN0X3JpeF0ucGVyZmVjdF90eF90aW1lLAorCQkJCSAgICBzYW4tPnBhY2tl dHNfc2luY2Vfc3dpdGNoW3NpemVfYmluXSwKKwkJCQkgICAgbXJyKTsKKwkJCX0KKwkJCXNhbi0+ cGFja2V0c19zaW5jZV9zd2l0Y2hbc2l6ZV9iaW5dID0gMDsKKwkJCXNhbi0+Y3VycmVudF9yaXhb c2l6ZV9iaW5dID0gYmVzdF9yaXg7CisJCQlzYW4tPnRpY2tzX3NpbmNlX3N3aXRjaFtzaXplX2Jp bl0gPSB0aWNrczsKKwkJCS8qIAorCQkJICogU2V0IHRoZSB2aXNpYmxlIHR4cmF0ZSBmb3IgdGhp cyBub2RlLgorCQkJICovCisJCQluaS0+bmlfdHhyYXRlID0gZG90MTFyYXRlKHJ0LCBiZXN0X3Jp eCk7CisJCX0KKwkJcml4ID0gc2FuLT5jdXJyZW50X3JpeFtzaXplX2Jpbl07CisJCXNhbi0+cGFj a2V0c19zaW5jZV9zd2l0Y2hbc2l6ZV9iaW5dKys7CisJfQorCS8vICp0cnkwID0gbXJyID8gc2Fu LT5zY2hlZFtyaXhdLnQwIDogQVRIX1RYTUFYVFJZOworZG9uZToKKworCS8qCisJICogVGhpcyBi dWcgdG90YWxseSBzdWNrcyBhbmQgc2hvdWxkIGJlIGZpeGVkLgorCSAqCisJICogRm9yIG5vdyB0 aG91Z2gsIGxldCdzIG5vdCBwYW5pYywgc28gd2UgY2FuIHN0YXJ0IHRvIGZpZ3VyZQorCSAqIG91 dCBob3cgdG8gYmV0dGVyIHJlcHJvZHVjZSBpdC4KKwkgKi8KKwlpZiAocml4IDwgMCB8fCByaXgg Pj0gcnQtPnJhdGVDb3VudCkgeworCQlwcmludGYoIiVzOiBFUlJPUjogcml4ICVkIG91dCBvZiBi b3VuZHMgKHJhdGVDb3VudD0lZClcbiIsCisJCSAgICBfX2Z1bmNfXywKKwkJICAgIHJpeCwKKwkJ ICAgIHJ0LT5yYXRlQ291bnQpOworCQkgICAgcml4ID0gMDsJLyogWFhYIGp1c3QgZGVmYXVsdCBm b3Igbm93ICovCisJfQorCUtBU1NFUlQocml4ID49IDAgJiYgcml4IDwgcnQtPnJhdGVDb3VudCwg KCJyaXggaXMgJWQiLCByaXgpKTsKKworCS8vICpyaXgwID0gcml4OworCS8vICp0eHJhdGUgPSBy dC0+aW5mb1tyaXhdLnJhdGVDb2RlCisJLy8gCXwgKHNob3J0UHJlYW1ibGUgPyBydC0+aW5mb1ty aXhdLnNob3J0UHJlYW1ibGUgOiAwKTsKKwlzYW4tPnBhY2tldHNfc2VudFtzaXplX2Jpbl0rKzsK KworCXJldHVybiByaXg7CisjdW5kZWYgRE9UMTFSQVRFCisjdW5kZWYgTUNTCisjdW5kZWYgUkFU RQorfQorCitzdGF0aWMgdm9pZAorc2FtcGxlX3JhdGVzKHN0cnVjdCBpZWVlODAyMTFfbm9kZSAq bmksIHN0cnVjdCBpZWVlODAyMTFfcmNfaW5mbyAqcmNfaW5mbykKK3sKKwlzdHJ1Y3QgaWVlZTgw MjExX3NhbXBsZV9ub2RlICpzYW4gPSBuaS0+bmlfcmN0bHM7CisJdWludDhfdCByaXgwID0gc2Ft cGxlX3JhdGUobmksIE5VTEwsIDApOworCWNvbnN0IHN0cnVjdCB0eHNjaGVkdWxlICpzY2hlZCA9 ICZzYW4tPnNjaGVkW3JpeDBdOworCXN0cnVjdCBpZWVlODAyMTFfcmNfc2VyaWVzICpyYyA9IHJj X2luZm8tPmlyaV9yYzsKKworCUtBU1NFUlQocml4MCA9PSBzY2hlZC0+cjAsICgicml4MCAoJXgp ICE9IHNjaGVkLT5yMCAoJXgpIVxuIiwKKwkgICAgcml4MCwgc2NoZWQtPnIwKSk7CisJLyogWFhY ICovCisJcmNbMF0uZmxhZ3MgPSByY1sxXS5mbGFncyA9IHJjWzJdLmZsYWdzID0gcmNbM10uZmxh Z3MgPSAwOworCisJcmNbMF0ucml4ID0gc2NoZWQtPnIwOworCXJjWzFdLnJpeCA9IHNjaGVkLT5y MTsKKwlyY1syXS5yaXggPSBzY2hlZC0+cjI7CisJcmNbM10ucml4ID0gc2NoZWQtPnIzOworCisJ cmNbMF0udHJpZXMgPSBzY2hlZC0+dDA7CisJcmNbMV0udHJpZXMgPSBzY2hlZC0+dDE7CisJcmNb Ml0udHJpZXMgPSBzY2hlZC0+dDI7CisJcmNbM10udHJpZXMgPSBzY2hlZC0+dDM7Cit9CisKK3N0 YXRpYyB2b2lkCit1cGRhdGVfc3RhdHMoY29uc3Qgc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLAor ICAgIAkgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmksCisJCSAgaW50IGZyYW1lX3Np emUsCisJCSAgaW50IHJpeDAsIGludCB0cmllczAsCisJCSAgaW50IHJpeDEsIGludCB0cmllczEs CisJCSAgaW50IHJpeDIsIGludCB0cmllczIsCisJCSAgaW50IHJpeDMsIGludCB0cmllczMsCisJ CSAgaW50IHNob3J0X3RyaWVzLCBpbnQgdHJpZXMsCisJCSAgaW50IG5mcmFtZXMsIGludCBuYmFk KQoreworCXN0cnVjdCBpZWVlODAyMTFfc2FtcGxlX25vZGUgKnNhbiA9IG5pLT5uaV9yY3RsczsK KwlzdHJ1Y3QgaWVlZTgwMjExX3NhbXBsZSAqc2FtcGxlID0gc2FuLT5zYW5fc2FtcGxlOworCisJ Y29uc3QgaW50IHNpemVfYmluID0gc2l6ZV90b19iaW4oZnJhbWVfc2l6ZSk7CisJY29uc3QgaW50 IHNpemUgPSBiaW5fdG9fc2l6ZShzaXplX2Jpbik7CisKKwlpbnQgaXNfaHQ0MCA9IGllZWU4MDIx MV9yYXRlY3RsX2hhc2NhcF9jdzQwKHZhcCwgbmkpOworCWludCB0dCwgdHJpZXNfc29fZmFyOwor CWludCBwY3Q7CisKKwlpZiAoIUlTX1JBVEVfREVGSU5FRChzYW4sIHJpeDApKQorCQlyZXR1cm47 CisJdHQgPSBjYWxjX3VzZWNzX3VuaWNhc3RfcGFja2V0KHZhcCwgc2l6ZSwgcml4MCwgc2hvcnRf dHJpZXMsCisJCU1JTih0cmllczAsIHRyaWVzKSAtIDEsIGlzX2h0NDApOworCXRyaWVzX3NvX2Zh ciA9IHRyaWVzMDsKKworCWlmICh0cmllczEgJiYgdHJpZXNfc29fZmFyIDwgdHJpZXMpIHsKKwkJ aWYgKCFJU19SQVRFX0RFRklORUQoc2FuLCByaXgxKSkKKwkJCXJldHVybjsKKwkJdHQgKz0gY2Fs Y191c2Vjc191bmljYXN0X3BhY2tldCh2YXAsIHNpemUsIHJpeDEsIHNob3J0X3RyaWVzLAorCQkJ TUlOKHRyaWVzMSArIHRyaWVzX3NvX2ZhciwgdHJpZXMpIC0gdHJpZXNfc29fZmFyIC0gMSwgaXNf aHQ0MCk7CisJCXRyaWVzX3NvX2ZhciArPSB0cmllczE7CisJfQorCisJaWYgKHRyaWVzMiAmJiB0 cmllc19zb19mYXIgPCB0cmllcykgeworCQlpZiAoIUlTX1JBVEVfREVGSU5FRChzYW4sIHJpeDIp KQorCQkJcmV0dXJuOworCQl0dCArPSBjYWxjX3VzZWNzX3VuaWNhc3RfcGFja2V0KHZhcCwgc2l6 ZSwgcml4Miwgc2hvcnRfdHJpZXMsCisJCQlNSU4odHJpZXMyICsgdHJpZXNfc29fZmFyLCB0cmll cykgLSB0cmllc19zb19mYXIgLSAxLCBpc19odDQwKTsKKwkJdHJpZXNfc29fZmFyICs9IHRyaWVz MjsKKwl9CisKKwlpZiAodHJpZXMzICYmIHRyaWVzX3NvX2ZhciA8IHRyaWVzKSB7CisJCWlmICgh SVNfUkFURV9ERUZJTkVEKHNhbiwgcml4MykpCisJCQlyZXR1cm47CisJCXR0ICs9IGNhbGNfdXNl Y3NfdW5pY2FzdF9wYWNrZXQodmFwLCBzaXplLCByaXgzLCBzaG9ydF90cmllcywKKwkJCU1JTih0 cmllczMgKyB0cmllc19zb19mYXIsIHRyaWVzKSAtIHRyaWVzX3NvX2ZhciAtIDEsIGlzX2h0NDAp OworCX0KKworCWlmIChzYW4tPnN0YXRzW3NpemVfYmluXVtyaXgwXS50b3RhbF9wYWNrZXRzIDwg c2FtcGxlLT5zYW5wbGVfc21vb3RoaW5nX21pbnBhY2tldHMpIHsKKwkJLyoganVzdCBhdmVyYWdl IHRoZSBmaXJzdCBmZXcgcGFja2V0cyAqLworCQlpbnQgYXZnX3R4ID0gc2FuLT5zdGF0c1tzaXpl X2Jpbl1bcml4MF0uYXZlcmFnZV90eF90aW1lOworCQlpbnQgcGFja2V0cyA9IHNhbi0+c3RhdHNb c2l6ZV9iaW5dW3JpeDBdLnRvdGFsX3BhY2tldHM7CisJCXNhbi0+c3RhdHNbc2l6ZV9iaW5dW3Jp eDBdLmF2ZXJhZ2VfdHhfdGltZSA9ICh0dCsoYXZnX3R4KnBhY2tldHMpKS8ocGFja2V0cytuZnJh bWVzKTsKKwl9IGVsc2UgeworCQkvKiB1c2UgYSBld21hICovCisJCXNhbi0+c3RhdHNbc2l6ZV9i aW5dW3JpeDBdLmF2ZXJhZ2VfdHhfdGltZSA9IAorCQkJKChzYW4tPnN0YXRzW3NpemVfYmluXVty aXgwXS5hdmVyYWdlX3R4X3RpbWUgKiBzYW1wbGUtPnNhbnBsZV9zbW9vdGhpbmdfcmF0ZSkgKyAK KwkJCSAodHQgKiAoMTAwIC0gc2FtcGxlLT5zYW5wbGVfc21vb3RoaW5nX3JhdGUpKSkgLyAxMDA7 CisJfQorCQorCS8qCisJICogWFhYIERvbid0IG1hcmsgdGhlIGhpZ2hlciBiaXQgcmF0ZXMgYXMg YWxzbyBoYXZpbmcgZmFpbGVkOyBhcyB0aGlzCisJICogdW5mb3J0dW5hdGVseSBzdG9wcyB0aG9z ZSByYXRlcyBmcm9tIGJlaW5nIHRhc3RlZCB3aGVuIHRyeWluZyB0bworCSAqIFRYLiBUaGlzIGhh cHBlbnMgd2l0aCAxMW4gYWdncmVnYXRpb24uCisJICovCisJaWYgKG5mcmFtZXMgPT0gbmJhZCkg eworCQlzYW4tPnN0YXRzW3NpemVfYmluXVtyaXgwXS5zdWNjZXNzaXZlX2ZhaWx1cmVzICs9IG5i YWQ7CisKKwl9IGVsc2UgeworCQlzYW4tPnN0YXRzW3NpemVfYmluXVtyaXgwXS5wYWNrZXRzX2Fj a2VkICs9IChuZnJhbWVzIC0gbmJhZCk7CisJCXNhbi0+c3RhdHNbc2l6ZV9iaW5dW3JpeDBdLnN1 Y2Nlc3NpdmVfZmFpbHVyZXMgPSAwOworCX0KKwlzYW4tPnN0YXRzW3NpemVfYmluXVtyaXgwXS50 cmllcyArPSB0cmllczsKKwlzYW4tPnN0YXRzW3NpemVfYmluXVtyaXgwXS5sYXN0X3R4ID0gdGlj a3M7CisJc2FuLT5zdGF0c1tzaXplX2Jpbl1bcml4MF0udG90YWxfcGFja2V0cyArPSBuZnJhbWVz OworCisJLyogdXBkYXRlIEVXTUEgZm9yIHRoaXMgcml4ICovCisKKwkvKiBDYWxjdWxhdGUgcGVy Y2VudGFnZSBiYXNlZCBvbiBjdXJyZW50IHJhdGUgKi8KKwlpZiAobmZyYW1lcyA9PSAwKQorCQlu ZnJhbWVzID0gbmJhZCA9IDE7CisJcGN0ID0gKChuZnJhbWVzIC0gbmJhZCkgKiAxMDAwKSAvIG5m cmFtZXM7CisKKwlpZiAoc2FuLT5zdGF0c1tzaXplX2Jpbl1bcml4MF0udG90YWxfcGFja2V0cyA8 CisJICAgIHNhbXBsZS0+c2FucGxlX3Ntb290aGluZ19taW5wYWNrZXRzKSB7CisJCS8qIGp1c3Qg YXZlcmFnZSB0aGUgZmlyc3QgZmV3IHBhY2tldHMgKi8KKwkJaW50IGFfcGN0ID0gKHNhbi0+c3Rh dHNbc2l6ZV9iaW5dW3JpeDBdLnBhY2tldHNfYWNrZWQgKiAxMDAwKSAvCisJCSAgICAoc2FuLT5z dGF0c1tzaXplX2Jpbl1bcml4MF0udG90YWxfcGFja2V0cyk7CisJCXNhbi0+c3RhdHNbc2l6ZV9i aW5dW3JpeDBdLmV3bWFfcGN0ID0gYV9wY3Q7CisJfSBlbHNlIHsKKwkJLyogdXNlIGEgZXdtYSAq LworCQlzYW4tPnN0YXRzW3NpemVfYmluXVtyaXgwXS5ld21hX3BjdCA9CisJCQkoKHNhbi0+c3Rh dHNbc2l6ZV9iaW5dW3JpeDBdLmV3bWFfcGN0ICogc2FtcGxlLT5zYW5wbGVfc21vb3RoaW5nX3Jh dGUpICsKKwkJCSAocGN0ICogKDEwMCAtIHNhbXBsZS0+c2FucGxlX3Ntb290aGluZ19yYXRlKSkp IC8gMTAwOworCX0KKworCWlmIChyaXgwID09IHNhbi0+Y3VycmVudF9zYW1wbGVfcml4W3NpemVf YmluXSkgeworCQlzYW4tPnNhbXBsZV90dFtzaXplX2Jpbl0gPSB0dDsKKwkJc2FuLT5jdXJyZW50 X3NhbXBsZV9yaXhbc2l6ZV9iaW5dID0gLTE7CisJfQorfQorCitzdGF0aWMgdm9pZAorc2FtcGxl X3R4X2NvbXBsZXRlKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwKKyAgICBjb25zdCBz dHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBpbnQgb2ssCisgICAgdm9pZCAqYXJnMSwgdm9pZCAq YXJnMikKK3sKKwlzdHJ1Y3QgaWVlZTgwMjExX3NhbXBsZV9ub2RlICpzYW4gPSBuaS0+bmlfcmN0 bHM7CisJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9yYXRlX3RhYmxlICpydCA9IGllZWU4MDIxMV9n ZXRfcmF0ZXRhYmxlKHZhcC0+aXZfaWMtPmljX2N1cmNoYW4pOworCisJLyogWFhYIG5lZWQgdG8g Y2hhbmdlIGFyZzIgdG8gcG9pbnRlciBvZiBpZWVlODAyMTFfcmNfaW5mbyAqLworCXN0cnVjdCBp ZWVlODAyMTFfcmNfaW5mbyAqcmNfaW5mbyA9IChzdHJ1Y3QgaWVlZTgwMjExX3JjX2luZm8qKWFy ZzI7CisKKwlpbnQgZmluYWxfcml4LCBzaG9ydF90cmllcywgbG9uZ190cmllczsKKwlpbnQgbmZy YW1lcywgbmJhZDsKKwlpbnQgZnJhbWVfc2l6ZSwgbXJyOworCisJLyogdXBkYXRlIHBlciB2YXAg c3RhdGlzdGljcyAqLworCWllZWU4MDIxMV9yYXRlY3RsX3VwZGF0ZV9zdGF0KHZhcCwgcmNfaW5m byk7CisKKwlmaW5hbF9yaXggPSBydC0+cmF0ZUNvZGVUb0luZGV4W3JjX2luZm8tPmlyaV90eHJh dGVdOworCXNob3J0X3RyaWVzID0gcmNfaW5mby0+aXJpX3Nob3J0cmV0cnk7CisJLyogWFhYIHdo eSBwbHVzIDEgaGVyZT8gKi8KKwlsb25nX3RyaWVzID0gcmNfaW5mby0+aXJpX2xvbmdyZXRyeSAr IDE7CisKKwluZnJhbWVzID0gcmNfaW5mby0+aXJpX3R4Y250OworCW5iYWQgPSByY19pbmZvLT5p cmlfZmFpbGNudDsKKworCWZyYW1lX3NpemUgPSByY19pbmZvLT5pcmlfZnJhbWVsZW47CisJbXJy ID0gMDsKKworCWlmIChuZnJhbWVzID09IDApIHsKKwkJcmV0dXJuOworCX0KKworCWlmIChmcmFt ZV9zaXplID09IDApCQkgICAgLyogTkI6IHNob3VsZCBub3QgaGFwcGVuICovCisJCWZyYW1lX3Np emUgPSAxNTAwOworCisJaWYgKHNhbi0+cmF0ZW1hc2sgPT0gMCkgeworCQlyZXR1cm47CisJfQor CQorCWlmIChJRUVFODAyMTFfUkFURUNUTF9IQVNDQVBfTVJSKHZhcCkpCisJCW1yciA9IDE7CisJ LyogWFhYIGNoZWNrIEhUIHByb3Rtb2RlIHRvbyAqLworCWlmIChtcnIgJiYgIUlFRUU4MDIxMV9S QVRFQ1RMX0hBU0NBUF9NUlJQUk9UKHZhcCkpCisJCW1yciA9IDA7CisJCisJaWYgKCFtcnIgfHwg cmNfaW5mby0+aXJpX2ZpbmFsdHNpID09IDApIHsKKwkJaWYgKCFJU19SQVRFX0RFRklORUQoc2Fu LCBmaW5hbF9yaXgpKSB7CisJCQlyZXR1cm47CisJCX0KKwkJLyoKKwkJICogT25seSBvbmUgcmF0 ZSB3YXMgdXNlZDsgb3B0aW1pemUgd29yay4KKwkJICovCisJCXVwZGF0ZV9zdGF0cyh2YXAsIG5p LCBmcmFtZV9zaXplLCAKKwkJCSAgICAgZmluYWxfcml4LCBsb25nX3RyaWVzLAorCQkJICAgICAw LCAwLAorCQkJICAgICAwLCAwLAorCQkJICAgICAwLCAwLAorCQkJICAgICBzaG9ydF90cmllcywg bG9uZ190cmllcywKKwkJCSAgICAgbmZyYW1lcywgbmJhZCk7CisKKwl9IGVsc2UgeworCQlpbnQg ZmluYWxUU0lkeCA9IHJjX2luZm8tPmlyaV9maW5hbHRzaTsKKwkJaW50IGk7CisKKwkJLyoKKwkJ ICogTkI6IHNlcmllcyA+IDAgYXJlIG5vdCBwZW5hbGl6ZWQgZm9yIGZhaWx1cmUKKwkJICogYmFz ZWQgb24gdGhlIHRyeSBjb3VudHMgdW5kZXIgdGhlIGFzc3VtcHRpb24KKwkJICogdGhhdCBsb3Nz ZXMgYXJlIG9mdGVuIGJ1cnN0eSBhbmQgc2luY2Ugd2UKKwkJICogc2FtcGxlIGhpZ2hlciByYXRl cyAxIHRyeSBhdCBhIHRpbWUgZG9pbmcgc28KKwkJICogbWF5IHVuZmFpcmx5IHBlbmFsaXplIHRo ZW0uCisJCSAqLworCQlpZiAocmNbMF0udHJpZXMpIHsKKwkJCXVwZGF0ZV9zdGF0cyh2YXAsIG5p LCBmcmFtZV9zaXplLAorCQkJCSAgICAgcmNbMF0ucml4LCByY1swXS50cmllcywKKwkJCQkgICAg IHJjWzFdLnJpeCwgcmNbMV0udHJpZXMsCisJCQkJICAgICByY1syXS5yaXgsIHJjWzJdLnRyaWVz LAorCQkJCSAgICAgcmNbM10ucml4LCByY1szXS50cmllcywKKwkJCQkgICAgIHNob3J0X3RyaWVz LCBsb25nX3RyaWVzLAorCQkJCSAgICAgbmZyYW1lcywgbmJhZCk7CisJCQlsb25nX3RyaWVzIC09 IHJjWzBdLnRyaWVzOworCQl9CisJCQorCQlpZiAocmNbMV0udHJpZXMgJiYgZmluYWxUU0lkeCA+ IDApIHsKKwkJCXVwZGF0ZV9zdGF0cyh2YXAsIG5pLCBmcmFtZV9zaXplLAorCQkJCSAgICAgcmNb MV0ucml4LCByY1sxXS50cmllcywKKwkJCQkgICAgIHJjWzJdLnJpeCwgcmNbMl0udHJpZXMsCisJ CQkJICAgICByY1szXS5yaXgsIHJjWzNdLnRyaWVzLAorCQkJCSAgICAgMCwgMCwKKwkJCQkgICAg IHNob3J0X3RyaWVzLCBsb25nX3RyaWVzLAorCQkJCSAgICAgbmZyYW1lcywgbmJhZCk7CisJCQls b25nX3RyaWVzIC09IHJjWzFdLnRyaWVzOworCQl9CisKKwkJaWYgKHJjWzJdLnRyaWVzICYmIGZp bmFsVFNJZHggPiAxKSB7CisJCQl1cGRhdGVfc3RhdHModmFwLCBuaSwgZnJhbWVfc2l6ZSwKKwkJ CQkgICAgIHJjWzJdLnJpeCwgcmNbMl0udHJpZXMsCisJCQkJICAgICByY1szXS5yaXgsIHJjWzNd LnRyaWVzLAorCQkJCSAgICAgMCwgMCwKKwkJCQkgICAgIDAsIDAsCisJCQkJICAgICBzaG9ydF90 cmllcywgbG9uZ190cmllcywKKwkJCQkgICAgIG5mcmFtZXMsIG5iYWQpOworCQkJbG9uZ190cmll cyAtPSByY1syXS50cmllczsKKwkJfQorCisJCWlmIChyY1szXS50cmllcyAmJiBmaW5hbFRTSWR4 ID4gMikgeworCQkJdXBkYXRlX3N0YXRzKHZhcCwgbmksIGZyYW1lX3NpemUsCisJCQkJICAgICBy Y1szXS5yaXgsIHJjWzNdLnRyaWVzLAorCQkJCSAgICAgMCwgMCwKKwkJCQkgICAgIDAsIDAsCisJ CQkJICAgICAwLCAwLAorCQkJCSAgICAgc2hvcnRfdHJpZXMsIGxvbmdfdHJpZXMsCisJCQkJICAg ICBuZnJhbWVzLCBuYmFkKTsKKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQKK3NhbXBsZV90eF91 cGRhdGUoY29uc3Qgc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwLCBjb25zdCBzdHJ1Y3QgaWVlZTgw MjExX25vZGUgKm5pLAorICAgIHZvaWQgKmFyZzEsIHZvaWQgKmFyZzIsIHZvaWQgKmFyZzMpCit7 CisJLyogbm90aGluZyBoZXJlLiAqLworfQorCitzdGF0aWMgdm9pZAorc2FtcGxlX3NldGludGVy dmFsKGNvbnN0IHN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCwgaW50IG1zZWNzKQoreworCXN0cnVj dCBpZWVlODAyMTFfc2FtcGxlICpzYW1wbGUgPSB2YXAtPml2X3JzOworCWludCB0OworCisJaWYg KG1zZWNzIDwgMTAwKQorCQltc2VjcyA9IDEwMDsKKwl0ID0gbXNlY3NfdG9fdGlja3MobXNlY3Mp OworCS8qIGllZWU4MDIxMV9zYW1wbGUgZG9lc24ndCBoYXZlIHRoZSBzYW1wbGVfaW50ZXJ2YWwg ZmllbGQgYnkgbm93ICovCisJLy8gc2FtcGxlLT5zYW1wbGVfaW50ZXJ2YWwgPSAodCA8IDEpID8g MSA6IHQ7Cit9CisKK3N0YXRpYyB2b2lkCitzYW1wbGVfc3RhdHModm9pZCAqYXJnLCBzdHJ1Y3Qg aWVlZTgwMjExX25vZGUgKm5pKQoreworCXN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9IG5pLT5u aV92YXA7CisJc3RydWN0IGllZWU4MDIxMV9zYW1wbGVfbm9kZSAqc2FuID0gbmktPm5pX3JjdGxz OworCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZV90YWJsZSAqcnQgPSBpZWVlODAyMTFfZ2V0 X3JhdGV0YWJsZSh2YXAtPml2X2ljLT5pY19jdXJjaGFuKTsKKwl1aW50NjRfdCBtYXNrOworCWlu dCByaXgsIHk7CisKKwlwcmludGYoIlxuWyVzXSByZWZjbnQgJWQgc3RhdGljX3JpeCAoJWQgJXMp IHJhdGVtYXNrIDB4JWp4XG4iLAorCSAgICBldGhlcl9zcHJpbnRmKG5pLT5uaV9tYWNhZGRyKSwg aWVlZTgwMjExX25vZGVfcmVmY250KG5pKSwKKwkgICAgZG90MTFyYXRlKHJ0LCBzYW4tPnN0YXRp Y19yaXgpLAorCSAgICBkb3QxMXJhdGVfbGFiZWwocnQsIHNhbi0+c3RhdGljX3JpeCksCisJICAg ICh1aW50bWF4X3Qpc2FuLT5yYXRlbWFzayk7CisJZm9yICh5ID0gMDsgeSA8IE5VTV9QQUNLRVRf U0laRV9CSU5TOyB5KyspIHsKKwkJcHJpbnRmKCJbJTR1XSBjdXIgcml4ICVkICglZCAlcykgc2lu Y2Ugc3dpdGNoOiBwYWNrZXRzICVkIHRpY2tzICV1XG4iLAorCQkgICAgYmluX3RvX3NpemUoeSks IHNhbi0+Y3VycmVudF9yaXhbeV0sCisJCSAgICBkb3QxMXJhdGUocnQsIHNhbi0+Y3VycmVudF9y aXhbeV0pLAorCQkgICAgZG90MTFyYXRlX2xhYmVsKHJ0LCBzYW4tPmN1cnJlbnRfcml4W3ldKSwK KwkJICAgIHNhbi0+cGFja2V0c19zaW5jZV9zd2l0Y2hbeV0sIHNhbi0+dGlja3Nfc2luY2Vfc3dp dGNoW3ldKTsKKwkJcHJpbnRmKCJbJTR1XSBsYXN0IHNhbXBsZSAoJWQgJXMpIGN1ciBzYW1wbGUg KCVkICVzKSBwYWNrZXRzIHNlbnQgJWRcbiIsCisJCSAgICBiaW5fdG9fc2l6ZSh5KSwKKwkJICAg IGRvdDExcmF0ZShydCwgc2FuLT5sYXN0X3NhbXBsZV9yaXhbeV0pLAorCQkgICAgZG90MTFyYXRl X2xhYmVsKHJ0LCBzYW4tPmxhc3Rfc2FtcGxlX3JpeFt5XSksCisJCSAgICBkb3QxMXJhdGUocnQs IHNhbi0+Y3VycmVudF9zYW1wbGVfcml4W3ldKSwKKwkJICAgIGRvdDExcmF0ZV9sYWJlbChydCwg c2FuLT5jdXJyZW50X3NhbXBsZV9yaXhbeV0pLAorCQkgICAgc2FuLT5wYWNrZXRzX3NlbnRbeV0p OworCQlwcmludGYoIlslNHVdIHBhY2tldHMgc2luY2Ugc2FtcGxlICVkIHNhbXBsZSB0dCAldVxu IiwKKwkJICAgIGJpbl90b19zaXplKHkpLCBzYW4tPnBhY2tldHNfc2luY2Vfc2FtcGxlW3ldLAor CQkgICAgc2FuLT5zYW1wbGVfdHRbeV0pOworCX0KKwlmb3IgKG1hc2sgPSBzYW4tPnJhdGVtYXNr LCByaXggPSAwOyBtYXNrICE9IDA7IG1hc2sgPj49IDEsIHJpeCsrKSB7CisJCWlmICgobWFzayAm IDEpID09IDApCisJCQkJY29udGludWU7CisJCWZvciAoeSA9IDA7IHkgPCBOVU1fUEFDS0VUX1NJ WkVfQklOUzsgeSsrKSB7CisJCQlpZiAoc2FuLT5zdGF0c1t5XVtyaXhdLnRvdGFsX3BhY2tldHMg PT0gMCkKKwkJCQljb250aW51ZTsKKwkJCXByaW50ZigiWyUydSAlczolNHVdICU4anU6JS04anUg KCUzZCUlKSAoRVdNQSAlM2QuJTFkJSUpIFQgJThqdSBGICU0ZCBhdmcgJTV1IGxhc3QgJXVcbiIs CisJCQkgICAgZG90MTFyYXRlKHJ0LCByaXgpLCBkb3QxMXJhdGVfbGFiZWwocnQsIHJpeCksCisJ CQkgICAgYmluX3RvX3NpemUoeSksCisJCQkgICAgKHVpbnRtYXhfdCkgc2FuLT5zdGF0c1t5XVty aXhdLnRvdGFsX3BhY2tldHMsCisJCQkgICAgKHVpbnRtYXhfdCkgc2FuLT5zdGF0c1t5XVtyaXhd LnBhY2tldHNfYWNrZWQsCisJCQkgICAgKGludCkgKChzYW4tPnN0YXRzW3ldW3JpeF0ucGFja2V0 c19hY2tlZCAqIDEwMFVMTCkgLworCQkJICAgICBzYW4tPnN0YXRzW3ldW3JpeF0udG90YWxfcGFj a2V0cyksCisJCQkgICAgc2FuLT5zdGF0c1t5XVtyaXhdLmV3bWFfcGN0IC8gMTAsCisJCQkgICAg c2FuLT5zdGF0c1t5XVtyaXhdLmV3bWFfcGN0ICUgMTAsCisJCQkgICAgKHVpbnRtYXhfdCkgc2Fu LT5zdGF0c1t5XVtyaXhdLnRyaWVzLAorCQkJICAgIHNhbi0+c3RhdHNbeV1bcml4XS5zdWNjZXNz aXZlX2ZhaWx1cmVzLAorCQkJICAgIHNhbi0+c3RhdHNbeV1bcml4XS5hdmVyYWdlX3R4X3RpbWUs CisJCQkgICAgdGlja3MgLSBzYW4tPnN0YXRzW3ldW3JpeF0ubGFzdF90eCk7CisJCX0KKwl9Cit9 CisKK3N0YXRpYyBpbnQKK3NhbXBsZV9zeXNjdGxfc3RhdHMoU1lTQ1RMX0hBTkRMRVJfQVJHUykK K3sKKwlzdHJ1Y3QgaWVlZTgwMjExdmFwICp2YXAgPSBhcmcxOworCXN0cnVjdCBpZWVlODAyMTFj b20gKmljID0gdmFwLT5pdl9pZnAtPmlmX2wyY29tOworCWludCBlcnJvciwgdjsKKworCXYgPSAw OworCWVycm9yID0gc3lzY3RsX2hhbmRsZV9pbnQob2lkcCwgJnYsIDAsIHJlcSk7CisJaWYgKGVy cm9yIHx8ICFyZXEtPm5ld3B0cikKKwkJcmV0dXJuIGVycm9yOworCWllZWU4MDIxMV9pdGVyYXRl X25vZGVzKCZpYy0+aWNfc3RhLCBzYW1wbGVfc3RhdHMsIE5VTEwpOworCXJldHVybiAwOworfQor CitzdGF0aWMgaW50CitzYW1wbGVfc3lzY3RsX3Ntb290aGluZ19yYXRlKFNZU0NUTF9IQU5ETEVS X0FSR1MpCit7CisJc3RydWN0IGllZWU4MDIxMXZhcCAqdmFwID0gYXJnMTsKKwlzdHJ1Y3QgaWVl ZTgwMjExX3NhbXBsZSAqc2FtcGxlID0gdmFwLT5pdl9yczsKKwlpbnQgcmF0ZSwgZXJyb3I7CisK KwlyYXRlID0gc2FtcGxlLT5zYW1wbGVfc21vb3RoaW5nX3JhdGU7CisJZXJyb3IgPSBzeXNjdGxf aGFuZGxlX2ludChvaWRwLCAmcmF0ZSwgMCwgcmVxKTsKKwlpZiAoZXJyb3IgfHwgIXJlcS0+bmV3 cHRyKQorCQlyZXR1cm4gZXJyb3I7CisJaWYgKCEoMCA8PSByYXRlICYmIHJhdGUgPCAxMDApKQor CQlyZXR1cm4gRUlOVkFMOworCXNhbXBsZS0+c2FtcGxlX3Ntb290aGluZ19yYXRlID0gcmF0ZTsK KwlzYW1wbGUtPnNhbXBsZV9zbW9vdGhpbmdfbWlucGFja2V0cyA9IDEwMCAvICgxMDAgLSByYXRl KTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludAorc2FtcGxlX3N5c2N0bF9zYW1wbGVfcmF0 ZShTWVNDVExfSEFORExFUl9BUkdTKQoreworCXN0cnVjdCBpZWVlODAyMTF2YXAgKnZhcCA9IGFy ZzE7CisJc3RydWN0IGllZWU4MDIxMV9zYW1wbGUgKnNhbXBsZSA9IHZhcC0+aXZfcnM7CisJaW50 IHJhdGUsIGVycm9yOworCisJcmF0ZSA9IHNhbXBsZS0+c2FtcGxlX3JhdGU7CisJZXJyb3IgPSBz eXNjdGxfaGFuZGxlX2ludChvaWRwLCAmcmF0ZSwgMCwgcmVxKTsKKwlpZiAoZXJyb3IgfHwgIXJl cS0+bmV3cHRyKQorCQlyZXR1cm4gZXJyb3I7CisJaWYgKCEoMiA8PSByYXRlICYmIHJhdGUgPD0g MTAwKSkKKwkJcmV0dXJuIEVJTlZBTDsKKwlzYW1wbGUtPnNhbXBsZV9yYXRlID0gcmF0ZTsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQKK3NhbXBsZV9zeXNjdGxhdHRhY2goc3RydWN0IGll ZWU4MDIxMXZhcCAqdmFwLAorICAgIHN0cnVjdCBzeXNjdGxfY3R4X2xpc3QgKmN0eCwgc3RydWN0 IHN5c2N0bF9vaWQgKnRyZWUpCit7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgU1lTQ1RMX0NISUxE UkVOKHRyZWUpLCBPSURfQVVUTywKKwkgICAgInNhbXBsZV9zbW9vdGhpbmdfcmF0ZSIsIENUTFRZ UEVfSU5UIHwgQ1RMRkxBR19SVywgdmFwLCAwLAorCSAgICBzYW1wbGVfc3lzY3RsX3Ntb290aGlu Z19yYXRlLCAiSSIsCisJICAgICJzYW1wbGU6IHNtb290aGluZyByYXRlIGZvciBhdmcgdHggdGlt ZSAoJSUpIik7CisJU1lTQ1RMX0FERF9QUk9DKGN0eCwgU1lTQ1RMX0NISUxEUkVOKHRyZWUpLCBP SURfQVVUTywKKwkgICAgInNhbXBsZV9yYXRlIiwgQ1RMVFlQRV9JTlQgfCBDVExGTEFHX1JXLCB2 YXAsIDAsCisJICAgIHNhbXBsZV9zeXNjdGxfc2FtcGxlX3JhdGUsICJJIiwKKwkgICAgInNhbXBs ZTogcGVyY2VudCBhaXIgdGltZSBkZXZvdGVkIHRvIHNhbXBsaW5nIG5ldyByYXRlcyAoJSUpIik7 CisJLyogWFhYIG1heF9zdWNjZXNzaXZlX2ZhaWx1cmVzLCBzdGFsZV9mYWlsdXJlX3RpbWVvdXQs IG1pbl9zd2l0Y2ggKi8KKwlTWVNDVExfQUREX1BST0MoY3R4LCBTWVNDVExfQ0hJTERSRU4odHJl ZSksIE9JRF9BVVRPLAorCSAgICAic2FtcGxlX3N0YXRzIiwgQ1RMVFlQRV9JTlQgfCBDVExGTEFH X1JXLCB2YXAsIDAsCisJICAgIHNhbXBsZV9zeXNjdGxfc3RhdHMsICJJIiwgInNhbXBsZTogcHJp bnQgc3RhdGlzdGljcyIpOworfQpJbmRleDogc3lzL25ldDgwMjExL2llZWU4MDIxMV9yY19zYW1w bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3JjX3NhbXBsZS5oCShy ZXZpc2lvbiAwKQorKysgc3lzL25ldDgwMjExL2llZWU4MDIxMV9yY19zYW1wbGUuaAkocmV2aXNp b24gMjU2NDc0KQpAQCAtMCwwICsxLDI4NyBAQAorLyogJEZyZWVCU0Q6IGhlYWQvc3lzL2Rldi9h dGgvYXRoX3JhdGUvc2FtcGxlL3NhbXBsZS5oIDI0MDM4MiAyMDEyLTA4LTE1IDA3OjEwOjEwWiBh ZHJpYW4gJCovCisKKy8qLQorICogQ29weXJpZ2h0IChjKSAyMDA1IEpvaG4gQmlja2V0CisgKiBD b3B5cmlnaHQgKGMpIDIwMTMgQ2hlbmNob25nIFFpbiA8Y2NxaW5ARnJlZUJTRC5vcmc+CisgKiBB bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291 cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciwKKyAqICAgIHdpdGhvdXQgbW9kaWZpY2F0 aW9uLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IGF0IG1pbmltdW0gYSBkaXNjbGFpbWVyCisgKiAgICBzaW1pbGFyIHRvIHRoZSAiTk8gV0FSUkFO VFkiIGRpc2NsYWltZXIgYmVsb3cgKCJEaXNjbGFpbWVyIikgYW5kIGFueQorICogICAgcmVkaXN0 cmlidXRpb24gbXVzdCBiZSBjb25kaXRpb25lZCB1cG9uIGluY2x1ZGluZyBhIHN1YnN0YW50aWFs bHkKKyAqICAgIHNpbWlsYXIgRGlzY2xhaW1lciByZXF1aXJlbWVudCBmb3IgZnVydGhlciBiaW5h cnkgcmVkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lcyBvZiB0aGUgYWJvdmUt bGlzdGVkIGNvcHlyaWdodCBob2xkZXJzIG5vciB0aGUgbmFtZXMKKyAqICAgIG9mIGFueSBjb250 cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2 ZWQKKyAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIHNvZnR3YXJlIG1heSBi ZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSAoIkdQTCIpIHZlcnNpb24gMiBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUKKyAq IFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogTk8gV0FSUkFOVFkKKyAqIFRISVMgU09GVFdB UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK KyAqIGBgQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg Tk9OSU5GUklOR0VNRU5ULCBNRVJDSEFOVElCSUxJVFkKKyAqIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRI RSBDT1BZUklHSFQgSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBTUEVDSUFM LCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU WSwgV0hFVEhFUgorICogSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCisgKi8KKworI2lmbmRlZiBfTkVUODAyMTFf SUVFRTgwMjExX1JBVEVDVExfU0FNUExFX0hfCisjZGVmaW5lIF9ORVQ4MDIxMV9JRUVFODAyMTFf UkFURUNUTF9TQU1QTEVfSF8KKworI2luY2x1ZGUgPG5ldDgwMjExL2llZWU4MDIxMV9yYXRlY3Rs Lmg+CisKKy8qCisgKiBmb3Igbm93LCB3ZSB0cmFjayBwZXJmb3JtYW5jZSBmb3IgdGhyZWUgZGlm ZmVyZW50IHBhY2tldAorICogc2l6ZSBidWNrZXRzCisgKi8KKyNkZWZpbmUgTlVNX1BBQ0tFVF9T SVpFX0JJTlMgMgorI2RlZmluZQlTQU1QTEVfTUFYUkFURVMJNjQJCS8qIE5COiBjb3JyZXNwb25k cyB0byBoYWwgaW5mb1szMl0gKi8KKworLyoKKyAqIFJhdGUgY29udHJvbCBzZXR0aW5ncy4KKyAq Lworc3RydWN0IGllZWU4MDIxMV9zYW1wbGUgeworCXN0cnVjdCBpZWVlODAyMTFfcmNfc3RhdCBz YW1wbGVfc3RhdDsKKwlpbnQJc2FtcGxlX3Ntb290aGluZ19yYXRlOwkJCS8qIGV3bWEgcGVyY2Vu dGFnZSBbMC4uOTldICovCisJaW50CXNhbXBsZV9zbW9vdGhpbmdfbWlucGFja2V0czsKKwlpbnQJ c2FtcGxlX3JhdGU7CQkJLyogJXRpbWUgdG8gdHJ5IGRpZmZlcmVudCB0eCByYXRlcyAqLworCWlu dAlzYW1wbGVfbWF4X3N1Y2Nlc3NpdmVfZmFpbHVyZXM7CisJaW50CXNhbXBsZV9zdGFsZV9mYWls dXJlX3RpbWVvdXQ7CS8qIGhvdyBsb25nIHRvIGhvbm9yIG1heF9zdWNjZXNzaXZlX2ZhaWx1cmVz ICovCisJaW50CXNhbXBsZV9taW5fc3dpdGNoOwkJLyogbWluIHRpbWUgYmV0d2VlbiByYXRlIGNo YW5nZXMgKi8KKwlpbnQJc2FtcGxlX21pbl9nb29kX3BjdDsJLyogbWluIGdvb2QgcGVyY2VudGFn ZSBmb3IgYSByYXRlIHRvIGJlIGNvbnNpZGVyZWQgKi8KK307CisKK3N0cnVjdCByYXRlX3N0YXRz IHsJCisJdW5zaWduZWQgYXZlcmFnZV90eF90aW1lOworCWludCBzdWNjZXNzaXZlX2ZhaWx1cmVz OworCXVpbnQ2NF90IHRyaWVzOworCXVpbnQ2NF90IHRvdGFsX3BhY2tldHM7CS8qIHBrdHMgdG90 YWwgc2luY2UgYXNzb2MgKi8KKwl1aW50NjRfdCBwYWNrZXRzX2Fja2VkOwkvKiBwa3RzIGFja2Vk IHNpbmNlIGFzc29jICovCisJaW50IGV3bWFfcGN0OwkvKiBFV01BIHBlcmNlbnRhZ2UgKi8KKwl1 bnNpZ25lZCBwZXJmZWN0X3R4X3RpbWU7IC8qIHRyYW5zbWl0IHRpbWUgZm9yIDAgcmV0cmllcyAq LworCWludCBsYXN0X3R4OworfTsKKworc3RydWN0IHR4c2NoZWR1bGUgeworCXVpbnQ4X3QJdDAs IHIwOwkJLyogc2VyaWVzIDA6IHRyaWVzLCByYXRlIGNvZGUgKi8KKwl1aW50OF90CXQxLCByMTsJ CS8qIHNlcmllcyAxOiB0cmllcywgcmF0ZSBjb2RlICovCisJdWludDhfdAl0MiwgcjI7CQkvKiBz ZXJpZXMgMjogdHJpZXMsIHJhdGUgY29kZSAqLworCXVpbnQ4X3QJdDMsIHIzOwkJLyogc2VyaWVz IDM6IHRyaWVzLCByYXRlIGNvZGUgKi8KK307CisKKy8qCisgKiBSYXRlIGNvbnRyb2wgc3RhdGUg Zm9yIGEgZ2l2ZW4gbm9kZS4KKyAqLworLyogWFhYIGNoYW5nZSBuYW1pbmcgY29udmVyc2lvbj8g Ki8KK3N0cnVjdCBpZWVlODAyMTFfc2FtcGxlX25vZGUgeworCXN0cnVjdCBpZWVlODAyMTFfc2Ft cGxlICpzYW5fc2FtcGxlOy8qIGJhY2twb2ludGVyICovCisJaW50IHN0YXRpY19yaXg7CQkJLyog cmF0ZSBpbmRleCBvZiBmaXhlZCB0eCByYXRlICovCisJdWludDY0X3QgcmF0ZW1hc2s7CQkvKiBi aXQgbWFzayBvZiB2YWxpZCByYXRlIGluZGljZXMgKi8KKwljb25zdCBzdHJ1Y3QgdHhzY2hlZHVs ZSAqc2NoZWQ7CS8qIHR4IHNjaGVkdWxlIHRhYmxlICovCisKKwlzdHJ1Y3QgcmF0ZV9zdGF0cyBz dGF0c1tOVU1fUEFDS0VUX1NJWkVfQklOU11bU0FNUExFX01BWFJBVEVTXTsKKwlpbnQgbGFzdF9z YW1wbGVfcml4W05VTV9QQUNLRVRfU0laRV9CSU5TXTsKKworCWludCBjdXJyZW50X3NhbXBsZV9y aXhbTlVNX1BBQ0tFVF9TSVpFX0JJTlNdOyAgICAgICAKKwlpbnQgcGFja2V0c19zZW50W05VTV9Q QUNLRVRfU0laRV9CSU5TXTsKKworCWludCBjdXJyZW50X3JpeFtOVU1fUEFDS0VUX1NJWkVfQklO U107CisJaW50IHBhY2tldHNfc2luY2Vfc3dpdGNoW05VTV9QQUNLRVRfU0laRV9CSU5TXTsKKwl1 bnNpZ25lZCB0aWNrc19zaW5jZV9zd2l0Y2hbTlVNX1BBQ0tFVF9TSVpFX0JJTlNdOworCisJaW50 IHBhY2tldHNfc2luY2Vfc2FtcGxlW05VTV9QQUNLRVRfU0laRV9CSU5TXTsKKwl1bnNpZ25lZCBz YW1wbGVfdHRbTlVNX1BBQ0tFVF9TSVpFX0JJTlNdOworfTsKKworI2RlZmluZQlJU19SQVRFX0RF RklORUQoc2FuLCByaXgpCSgoKHNhbiktPnJhdGVtYXNrICYgKDE8PChyaXgpKSkgIT0gMCkKKwor I2lmbmRlZiBNSU4KKyNkZWZpbmUJTUlOKGEsYikJKChhKSA8IChiKSA/IChhKSA6IChiKSkKKyNl bmRpZgorI2lmbmRlZiBNQVgKKyNkZWZpbmUJTUFYKGEsYikJKChhKSA+IChiKSA/IChhKSA6IChi KSkKKyNlbmRpZgorCitzdGF0aWMgY29uc3QgaW50IHBhY2tldF9zaXplX2JpbnNbTlVNX1BBQ0tF VF9TSVpFX0JJTlNdICA9IHsgMjUwLCAxNjAwIH07CisKK3N0YXRpYyBpbmxpbmUgaW50CitiaW5f dG9fc2l6ZShpbnQgaW5kZXgpCit7CisJcmV0dXJuIHBhY2tldF9zaXplX2JpbnNbaW5kZXhdOwor fQorCitzdGF0aWMgaW5saW5lIGludAorc2l6ZV90b19iaW4oaW50IHNpemUpIAoreworI2lmIE5V TV9QQUNLRVRfU0laRV9CSU5TID4gMQorCWlmIChzaXplIDw9IHBhY2tldF9zaXplX2JpbnNbMF0p CisJCXJldHVybiAwOworI2VuZGlmCisjaWYgTlVNX1BBQ0tFVF9TSVpFX0JJTlMgPiAyCisJaWYg KHNpemUgPD0gcGFja2V0X3NpemVfYmluc1sxXSkKKwkJcmV0dXJuIDE7CisjZW5kaWYKKyNpZiBO VU1fUEFDS0VUX1NJWkVfQklOUyA+IDMKKwlpZiAoc2l6ZSA8PSBwYWNrZXRfc2l6ZV9iaW5zWzJd KQorCQlyZXR1cm4gMjsKKyNlbmRpZgorI2lmIE5VTV9QQUNLRVRfU0laRV9CSU5TID4gNAorI2Vy cm9yICJhZGQgc3VwcG9ydCBmb3IgbW9yZSBwYWNrZXQgc2l6ZXMiCisjZW5kaWYKKwlyZXR1cm4g TlVNX1BBQ0tFVF9TSVpFX0JJTlMtMTsKK30KKworc3RhdGljIHVpbnQzMl90IHNhbXBsZV9wa3Rf dHh0aW1lKGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZV90YWJsZSAqcnQsCisJdWludDMyX3Qg ZnJhbWVMZW4sIHVpbnQxNl90IHJhdGVpeCwgaW50IGlzaHQ0MCwgaW50IGlzU2hvcnRQcmVhbWJs ZSkKK3sKKwl1aW50OF90IHJjOworICAgIGludCBudW1TdHJlYW1zOworCisgICAgcmMgPSBydC0+ aW5mb1tyYXRlaXhdLnJhdGVDb2RlOworCisgICAgLyogTGVnYWN5IHJhdGU/IFJldHVybiB0aGUg b2xkIHdheSAqLworICAgIGlmICghIElTX0hUX1JBVEUocmMpKQorICAgIAlyZXR1cm4gaWVlZTgw MjExX2NvbXB1dGVfZHVyYXRpb24ocnQsIGZyYW1lTGVuLCByYXRlaXgsIGlzU2hvcnRQcmVhbWJs ZSk7CisKKyAgICAvKiAxMW4gZnJhbWUgLSBleHRyYWN0IG91dCB0aGUgbnVtYmVyIG9mIHNwYXRp YWwgc3RyZWFtcyAqLworICAgIG51bVN0cmVhbXMgPSBIVF9SQ18yX1NUUkVBTVMocmMpOworICAg IEtBU1NFUlQobnVtU3RyZWFtcyA+IDAgJiYgbnVtU3RyZWFtcyA8PSA0LAorICAgICAgICAoIm51 bWJlciBvZiBzcGF0aWFsIHN0cmVhbXMgbmVlZHMgdG8gYmUgMS4uMzogTUNTIHJhdGUgMHgleCEi LAorICAgICAgICByYXRlaXgpKTsKKworICAgIHJldHVybiBpZWVlODAyMTFfY29tcHV0ZV9kdXJh dGlvbl9odChmcmFtZUxlbiwgcmMsIG51bVN0cmVhbXMsIGlzaHQ0MCwgaXNTaG9ydFByZWFtYmxl KTsKK30KKworI2RlZmluZSBXSUZJX0NXX01JTiAzMQorI2RlZmluZSBXSUZJX0NXX01BWCAxMDIz CisKKy8qCisgKiBDYWxjdWxhdGUgdGhlIHRyYW5zbWl0IGR1cmF0aW9uIG9mIGEgZnJhbWUuCisg Ki8KK3N0YXRpYyB1bnNpZ25lZCBjYWxjX3VzZWNzX3VuaWNhc3RfcGFja2V0KGNvbnN0IHN0cnVj dCBpZWVlODAyMTF2YXAgKnZhcCwKKwkJCQlpbnQgbGVuZ3RoLAorCQkJCWludCByaXgsIGludCBz aG9ydF9yZXRyaWVzLAorCQkJCWludCBsb25nX3JldHJpZXMsIGludCBpc19odDQwKQoreworCWNv bnN0IHN0cnVjdCBpZWVlODAyMTFfcmF0ZV90YWJsZSAqcnQgPSBpZWVlODAyMTFfZ2V0X3JhdGV0 YWJsZSh2YXAtPml2X2ljLT5pY19jdXJjaGFuKTsKKwlzdHJ1Y3QgaWVlZTgwMjExY29tICppYyA9 IHZhcC0+aXZfaWM7CisJaW50IGN1cm1vZGUgPSBpZWVlODAyMTFfY2hhbjJtb2RlKHZhcC0+aXZf aWMtPmljX2N1cmNoYW4pOworCQorCXVuc2lnbmVkIHRfc2xvdCwgdF9kaWZzLCB0X3NpZnM7IAor CWludCBydHMsIGN0czsKKwlpbnQgdHQsIHgsIGN3LCBjaXg7CisKKwlpbnQgdHQgPSAwOworCWlu dCB4ID0gMDsKKwlpbnQgY3cgPSBXSUZJX0NXX01JTjsKKworCUtBU1NFUlQocnQgIT0gTlVMTCwg KCJubyByYXRlIHRhYmxlLCBtb2RlICV1IiwgY3VybW9kZSkpOworCisJaWYgKHJpeCA+PSBydC0+ cmF0ZUNvdW50KSB7CisJCXByaW50ZigiYm9ndXMgcml4ICVkLCBtYXggJXUsIG1vZGUgJXVcbiIs CisJCSAgICAgICByaXgsIHJ0LT5yYXRlQ291bnQsIGN1cm1vZGUpOworCQlyZXR1cm4gMDsKKwl9 CisJY2l4ID0gcnQtPmluZm9bcml4XS5jb250cm9sUmF0ZTsKKwkvKiAKKwkgKiBYWFggZ2V0dGlu ZyBtYWMvcGh5IGxldmVsIHRpbWluZ3Mgc2hvdWxkIGJlIGZpeGVkIGZvciB0dXJibworCSAqIHJh dGVzLCBhbmQgdGhlcmUgaXMgcHJvYmFibHkgYSB3YXkgdG8gZ2V0IHRoaXMgZnJvbSB0aGUKKwkg KiBoYWwuLi4KKwkgKi8KKwlzd2l0Y2ggKHJ0LT5pbmZvW3JpeF0ucGh5KSB7CisJY2FzZSBJRUVF ODAyMTFfVF9PRkRNOgorCQl0X3Nsb3QgPSA5OworCQl0X3NpZnMgPSAxNjsKKwkJdF9kaWZzID0g Mjg7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgSUVFRTgwMjExX1RfVFVSQk86CisJCXRf c2xvdCA9IDk7CisJCXRfc2lmcyA9IDg7CisJCXRfZGlmcyA9IDI4OworCQlicmVhazsKKwljYXNl IElFRUU4MDIxMV9UX0hUOgorCQl0X3Nsb3QgPSA5OworCQl0X3NpZnMgPSA4OworCQl0X2RpZnMg PSAyODsKKwkJYnJlYWs7CisJY2FzZSBJRUVFODAyMTFfVF9EUzoKKwkJLyogZmFsbCB0aHJvdWdo IHRvIGRlZmF1bHQgKi8KKwlkZWZhdWx0OgorCQkvKiBwZyAyMDUgaWVlZS44MDIuMTEucGRmICov CisJCXRfc2xvdCA9IDIwOworCQl0X2RpZnMgPSA1MDsKKwkJdF9zaWZzID0gMTA7CisJfQorCisJ cnRzID0gY3RzID0gMDsKKworCWlmICgoaWMtPmljX2ZsYWdzICYgSUVFRTgwMjExX0ZfVVNFUFJP VCkgJiYKKwkgICAgcnQtPmluZm9bcml4XS5waHkgPT0gSUVFRTgwMjExX1RfT0ZETSkgeworCQlp ZiAoaWMtPmljX3Byb3Rtb2RlID09IElFRUU4MDIxMV9QUk9UX1JUU0NUUykKKwkJCXJ0cyA9IDE7 CisJCWVsc2UgaWYgKGljLT5pY19wcm90bW9kZSA9PSBJRUVFODAyMTFfUFJPVF9DVFNPTkxZKQor CQkJY3RzID0gMTsKKworCQlpbnQgcHJvdHJpeDsKKyAgICAJaWYgKGN1cm1vZGUgPT0gSUVFRTgw MjExX01PREVfMTFHKQorICAgIAkgICAgcHJvdHJpeCA9IHJ0LT5yYXRlQ29kZVRvSW5kZXhbMioy XTsKKyAgICAJZWxzZSAKKyAgICAJICAgIHByb3RyaXggPSBydC0+cmF0ZUNvZGVUb0luZGV4WzIq MV07CisgICAgCWlmICgweGZmID09IHByb3RyaXgpCisgICAgCQlwcm90cml4ID0gMDsKKworCQlj aXggPSBydC0+aW5mb1twcm90cml4XS5jb250cm9sUmF0ZTsKKwl9CisKKwlpZiAoMCAvKmxlbmd0 aCA+IGljLT5pY19ydHN0aHJlc2hvbGQgKi8pIHsKKwkJcnRzID0gMTsKKwl9CisKKwlpZiAocnRz IHx8IGN0cykgeworCQlpbnQgY3RzcmF0ZTsKKwkJaW50IGN0c2R1cmF0aW9uID0gMDsKKworCQkv KiBOQjogdGhpcyBpcyBpbnRlbnRpb25hbGx5IG5vdCBhIHJ1bnRpbWUgY2hlY2sgKi8KKwkJS0FT U0VSVChjaXggPCBydC0+cmF0ZUNvdW50LAorCQkgICAgKCJib2d1cyBjaXggJWQsIG1heCAldSwg bW9kZSAldVxuIiwgY2l4LCBydC0+cmF0ZUNvdW50LAorCQkgICAgIGN1cm1vZGUpKTsKKworCQlj dHNyYXRlID0gcnQtPmluZm9bY2l4XS5yYXRlQ29kZSB8IHJ0LT5pbmZvW2NpeF0uc2hvcnRQcmVh bWJsZTsKKwkJaWYgKHJ0cykJCS8qIFNJRlMgKyBDVFMgKi8KKwkJCWN0c2R1cmF0aW9uICs9IHJ0 LT5pbmZvW2NpeF0uc3BBY2tEdXJhdGlvbjsKKworCQkvKiBYWFggYXNzdW1lcyBzaG9ydCBwcmVh bWJsZSAqLworCQljdHNkdXJhdGlvbiArPSBzYW1wbGVfcGt0X3R4dGltZShydCwgbGVuZ3RoLCBy aXgsIGlzX2h0NDAsIDApOworCisJCWlmIChjdHMpCS8qIFNJRlMgKyBBQ0sgKi8KKwkJCWN0c2R1 cmF0aW9uICs9IHJ0LT5pbmZvW2NpeF0uc3BBY2tEdXJhdGlvbjsKKworCQl0dCArPSAoc2hvcnRf cmV0cmllcyArIDEpICogY3RzZHVyYXRpb247CisJfQorCXR0ICs9IHRfZGlmczsKKworCS8qIFhY WCBhc3N1bWVzIHNob3J0IHByZWFtYmxlICovCisJdHQgKz0gKGxvbmdfcmV0cmllcysxKSpzYW1w bGVfcGt0X3R4dGltZShydCwgbGVuZ3RoLCByaXgsIGlzX2h0NDAsIDApOworCisJdHQgKz0gKGxv bmdfcmV0cmllcysxKSoodF9zaWZzICsgcnQtPmluZm9bcml4XS5zcEFja0R1cmF0aW9uKTsKKwor CWZvciAoeCA9IDA7IHggPD0gc2hvcnRfcmV0cmllcyArIGxvbmdfcmV0cmllczsgeCsrKSB7CisJ CWN3ID0gTUlOKFdJRklfQ1dfTUFYLCAoY3cgKyAxKSAqIDIpOworCQl0dCArPSAodF9zbG90ICog Y3cvMik7CisJfQorCXJldHVybiB0dDsKK30KKworI2VuZGlmIC8qIF9ORVQ4MDIxMV9JRUVFODAy MTFfUkFURUNUTF9TQU1QTEVfSF8gKi8KSW5kZXg6IHN5cy9uZXQ4MDIxMS9pZWVlODAyMTFfcmNf c2FtcGxlX3R4c2NoZWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvbmV0ODAyMTEvaWVlZTgwMjExX3Jj X3NhbXBsZV90eHNjaGVkLmgJKHJldmlzaW9uIDApCisrKyBzeXMvbmV0ODAyMTEvaWVlZTgwMjEx X3JjX3NhbXBsZV90eHNjaGVkLmgJKHJldmlzaW9uIDI1NjQ5MSkKQEAgLTAsMCArMSwyNDEgQEAK Ky8qICRGcmVlQlNEOiBoZWFkL3N5cy9kZXYvYXRoL2F0aF9yYXRlL3NhbXBsZS90eF9zY2hlZHVs ZXMuaCAyNDAzODQgMjAxMi0wOC0xNSAwNzo1MDo0MlogYWRyaWFuICQqLworCisvKi0KKyAqIENv cHlyaWdodCAoYykgMjAwNSBKb2huIEJpY2tldAorICogQ29weXJpZ2h0IChjKSAyMDEzIENoZW5j aG9uZyBRaW4gPGNjcWluQEZyZWVCU0Qub3JnPgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3 aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0 aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp c2NsYWltZXIsCisgKiAgICB3aXRob3V0IG1vZGlmaWNhdGlvbi4KKyAqIDIuIFJlZGlzdHJpYnV0 aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSBhdCBtaW5pbXVtIGEgZGlzY2xhaW1l cgorICogICAgc2ltaWxhciB0byB0aGUgIk5PIFdBUlJBTlRZIiBkaXNjbGFpbWVyIGJlbG93ICgi RGlzY2xhaW1lciIpIGFuZCBhbnkKKyAqICAgIHJlZGlzdHJpYnV0aW9uIG11c3QgYmUgY29uZGl0 aW9uZWQgdXBvbiBpbmNsdWRpbmcgYSBzdWJzdGFudGlhbGx5CisgKiAgICBzaW1pbGFyIERpc2Ns YWltZXIgcmVxdWlyZW1lbnQgZm9yIGZ1cnRoZXIgYmluYXJ5IHJlZGlzdHJpYnV0aW9uLgorICog My4gTmVpdGhlciB0aGUgbmFtZXMgb2YgdGhlIGFib3ZlLWxpc3RlZCBjb3B5cmlnaHQgaG9sZGVy cyBub3IgdGhlIG5hbWVzCisgKiAgICBvZiBhbnkgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICBmcm9tIHRoaXMgc29m dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog QWx0ZXJuYXRpdmVseSwgdGhpcyBzb2Z0d2FyZSBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKCJHUEwiKSB2ZXJz aW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCisgKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgor ICoKKyAqIE5PIFdBUlJBTlRZCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiBgYEFTIElTJycgQU5EIEFOWSBF WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE5PTklORlJJTkdFTUVOVCwgTUVSQ0hB TlRJQklMSVRZCisgKiBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1Ig Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgU1BFQ0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09O U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIKKyAqIElOIENPTlRS QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE QU1BR0VTLgorICoKKyAqLworI2lmbmRlZglfTkVUODAyMTFfSUVFRTgwMjExX1JBVEVDVExfU0FN UExFX1RYU0NIRURVTEVTX0hfCisjZGVmaW5lCV9ORVQ4MDIxMV9JRUVFODAyMTFfUkFURUNUTF9T QU1QTEVfVFhTQ0hFRFVMRVNfSF8KKworI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorCisjZGVmaW5l IEEoX3IpIFwKKyAgICAoKChfcikgPT0gNikgICA/IDAgOiAoKChfcikgPT0gOSkgICA/IDEgOiAo KChfcikgPT0gMTIpICA/IDIgOiBcCisgICAgKCgoX3IpID09IDE4KSAgPyAzIDogKCgoX3IpID09 IDI0KSAgPyA0IDogKCgoX3IpID09IDM2KSAgPyA1IDogXAorICAgICgoKF9yKSA9PSA0OCkgID8g NiA6ICgoKF9yKSA9PSA1NCkgID8gNyA6IDApKSkpKSkpKQorc3RhdGljIGNvbnN0IHN0cnVjdCB0 eHNjaGVkdWxlIHNlcmllc18xMWFbXSA9IHsKKwl7IDMsQSggNiksIDMsQSggIDYpLCAwLEEoICA2 KSwgMCxBKCA2KSB9LAkvKiAgIDZNYi9zICovCisJeyA0LEEoIDkpLCAzLEEoICA2KSwgNCxBKCAg NiksIDAsQSggNikgfSwJLyogICA5TWIvcyAqLworCXsgNCxBKDEyKSwgMyxBKCAgNiksIDQsQSgg IDYpLCAwLEEoIDYpIH0sCS8qICAxMk1iL3MgKi8KKwl7IDQsQSgxOCksIDMsQSggMTIpLCA0LEEo ICA2KSwgMixBKCA2KSB9LAkvKiAgMThNYi9zICovCisJeyA0LEEoMjQpLCAzLEEoIDE4KSwgNCxB KCAxMiksIDIsQSggNikgfSwJLyogIDI0TWIvcyAqLworCXsgNCxBKDM2KSwgMyxBKCAyNCksIDQs QSggMTgpLCAyLEEoIDYpIH0sCS8qICAzNk1iL3MgKi8KKwl7IDQsQSg0OCksIDMsQSggMzYpLCA0 LEEoIDI0KSwgMixBKDEyKSB9LAkvKiAgNDhNYi9zICovCisJeyA0LEEoNTQpLCAzLEEoIDQ4KSwg NCxBKCAzNiksIDIsQSgyNCkgfQkvKiAgNTRNYi9zICovCit9OworCisjZGVmaW5lIE5BMShfcikg XAorCSgoKF9yKSA9PSA2LjUpICA/IDggOiAoKChfcikgPT0gMTMpICA/ICA5IDogKCgoX3IpID09 IDE5LjUpPyAxMCA6IFwKKwkoKChfcikgPT0gMjYpICA/IDExIDogKCgoX3IpID09IDM5KSAgPyAx MiA6ICgoKF9yKSA9PSA1MikgID8gMTMgOiBcCisJKCgoX3IpID09IDU4LjUpPyAxNCA6ICgoKF9y KSA9PSA2NSkgID8gMTUgOiAwKSkpKSkpKSkKKyNkZWZpbmUgTkEyKF9yKSBcCisJKCgoX3IpID09 IDEzKSA/IDE2IDogKCgoX3IpID09IDI2KSA/IDE3IDogKCgoX3IpID09IDM5KSA/IDE4IDogXAor CSgoKF9yKSA9PSA1MikgPyAxOSA6ICgoKF9yKSA9PSA3OCkgPyAyMCA6ICgoKF9yKSA9PSAxMDQp PyAyMSA6IFwKKwkoKChfcikgPT0gMTE3KT8gMjIgOiAoKChfcikgPT0gMTMwKT8gMjMgOiAwKSkp KSkpKSkKKyNkZWZpbmUgTkEzKF9yKSBcCisJKCgoX3IpID09IDE5LjUpICA/IDI0IDogKCgoX3Ip ID09IDM5KSA/IDI1IDogKCgoX3IpID09IDU4LjUpICA/IDI2IDogXAorCSgoKF9yKSA9PSA3OCkg ID8gMjcgOiAoKChfcikgPT0gMTE3KSA/IDI4IDogKCgoX3IpID09IDE1NikgPyAyOSA6IFwKKwko KChfcikgPT0gMTc1LjUpID8gMzAgOiAoKChfcikgPT0gMTk1KT8gMzEgOiAwKSkpKSkpKSkKK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgdHhzY2hlZHVsZSBzZXJpZXNfMTFuYVtdID0geworCXsgMyxBKCA2 KSwgMyxBKCAgNiksIDAsQSggIDYpLCAwLEEoIDYpIH0sICAgICAgIC8qICAgNk1iL3MgKi8KKwl7 IDQsQSggOSksIDMsQSggIDYpLCA0LEEoICA2KSwgMCxBKCA2KSB9LCAgICAgICAvKiAgIDlNYi9z ICovCisJeyA0LEEoMTIpLCAzLEEoICA2KSwgNCxBKCAgNiksIDAsQSggNikgfSwgICAgICAgLyog IDEyTWIvcyAqLworCXsgNCxBKDE4KSwgMyxBKCAxMiksIDQsQSggIDYpLCAyLEEoIDYpIH0sICAg ICAgIC8qICAxOE1iL3MgKi8KKwl7IDQsQSgyNCksIDMsQSggMTgpLCA0LEEoIDEyKSwgMixBKCA2 KSB9LCAgICAgICAvKiAgMjRNYi9zICovCisJeyA0LEEoMzYpLCAzLEEoIDI0KSwgNCxBKCAxOCks IDIsQSggNikgfSwgICAgICAgLyogIDM2TWIvcyAqLworCXsgNCxBKDQ4KSwgMyxBKCAzNiksIDQs QSggMjQpLCAyLEEoMTIpIH0sICAgICAgIC8qICA0OE1iL3MgKi8KKwl7IDQsQSg1NCksIDMsQSgg NDgpLCA0LEEoIDM2KSwgMixBKDI0KSB9LCAgICAgICAvKiAgNTRNYi9zICovCisKKwkvKiAxIHN0 cmVhbSByYXRlcyAqLworCisJeyAzLE5BMSggNi41KSwgMyxOQTEoIDYuNSksIDAsTkExKCA2LjUp LCAwLE5BMSg2LjUpIH0sICAvKiA2LjVNYi9zICovCisJeyA0LE5BMSggIDEzKSwgMyxOQTEoIDYu NSksIDQsTkExKCA2LjUpLCAwLE5BMSg2LjUpIH0sICAvKiAgMTNNYi9zICovCisJeyA0LE5BMSgx OS41KSwgMyxOQTEoIDYuNSksIDQsTkExKCA2LjUpLCAwLE5BMSg2LjUpIH0sICAvKjE5LjVNYi9z ICovCisJeyA0LE5BMSggIDI2KSwgMyxOQTEoMTkuNSksIDQsTkExKCA2LjUpLCAyLE5BMSg2LjUp IH0sICAvKiAgMjZNYi9zICovCisJeyA0LE5BMSggIDM5KSwgMyxOQTEoICAyNiksIDQsTkExKDE5 LjUpLCAyLE5BMSg2LjUpIH0sICAvKiAgMzlNYi9zICovCisJeyA0LE5BMSggIDUyKSwgMyxOQTEo ICAzOSksIDQsTkExKCAgMjYpLCAyLE5BMSg2LjUpIH0sICAvKiAgNTJNYi9zICovCisJeyA0LE5B MSg1OC41KSwgMyxOQTEoICA1MiksIDQsTkExKCAgMzkpLCAyLE5BMSggMTMpIH0sICAvKjU4LjVN Yi9zICovCisJeyA0LE5BMSggIDY1KSwgMyxOQTEoNTguNSksIDQsTkExKCAgNTIpLCAyLE5BMSgg MTMpIH0sICAvKiAgNjVNYi9zICovCisKKwkvKiAyIHN0cmVhbSByYXRlcyAqLworCisJeyAzLE5B MiggIDEzKSwgMyxOQTIoICAxMyksIDAsTkEyKCAgMTMpLCAwLE5BMiggMTMpIH0sICAvKiAgMTNN Yi9zICovCisJeyA0LE5BMiggIDI2KSwgMyxOQTIoICAxMyksIDQsTkEyKCAgMTMpLCAwLE5BMigg MTMpIH0sICAvKiAgMjZNYi9zICovCisJeyA0LE5BMiggIDM5KSwgMyxOQTIoICAyNiksIDQsTkEy KCAgMTMpLCAyLE5BMiggMTMpIH0sICAvKiAgMzlNYi9zICovCisJeyA0LE5BMiggIDUyKSwgMyxO QTIoICAzOSksIDQsTkEyKCAgMjYpLCAyLE5BMiggMTMpIH0sICAvKiAgNTJNYi9zICovCisJeyA0 LE5BMiggIDc4KSwgMyxOQTIoICA1MiksIDQsTkEyKCAgMzkpLCAyLE5BMiggMTMpIH0sICAvKiAg NzhNYi9zICovCisJeyA0LE5BMiggMTA0KSwgMyxOQTIoICA3OCksIDQsTkEyKCAgNTIpLCAyLE5B MiggMTMpIH0sICAvKiAxMDRNYi9zICovCisJeyA0LE5BMiggMTE3KSwgMyxOQTIoIDEwNCksIDQs TkEyKCAgNzgpLCAyLE5BMiggMjYpIH0sICAvKiAxMTdNYi9zICovCisJeyA0LE5BMiggMTMwKSwg MyxOQTIoIDExNyksIDQsTkEyKCAxMDQpLCAyLE5BMiggMjYpIH0sICAgLyogMTMwTWIvcyAqLwor CisJLyogMyBzdHJlYW0gcmF0ZXMgKi8KKworCXsgMyxOQTMoMTkuNSksIDMsTkEzKDE5LjUpLCAw LE5BMygxOS41KSwgMCxOQTMoMTkuNSkgfSwgIC8qICAxOU1iL3MgKi8KKwl7IDMsTkEzKCAgMzkp LCAzLE5BMygxOS41KSwgMCxOQTMoMTkuNSksIDAsTkEzKDE5LjUpIH0sICAvKiAgMzlNYi9zICov CisJeyAzLE5BMyg1OC41KSwgMyxOQTMoICAzOSksIDAsTkEzKDE5LjUpLCAwLE5BMygxOS41KSB9 LCAgLyogIDU4TWIvcyAqLworCXsgMyxOQTMoICA3OCksIDMsTkEzKDU4LjUpLCAwLE5BMyggIDM5 KSwgMCxOQTMoMTkuNSkgfSwgIC8qICA3OE1iL3MgKi8KKwl7IDMsTkEzKCAxMTcpLCAzLE5BMygg IDc4KSwgMCxOQTMoNTguNSksIDAsTkEzKDE5LjUpIH0sICAvKiAxMTdNYi9zICovCisJeyAzLE5B MyggMTU2KSwgMyxOQTMoIDExNyksIDAsTkEzKCAgNzgpLCAwLE5BMygxOS41KSB9LCAgLyogIDE1 Nk1iL3MgKi8KKwl7IDMsTkEzKDE3NS41KSwgMyxOQTMoIDE1NiksIDAsTkEzKCAxMTcpLCAwLE5B MyggIDM5KSB9LCAgLyogIDE3NU1iL3MgKi8KKwl7IDMsTkEzKCAxOTUpLCAzLE5BMyggMTk1KSwg MCxOQTMoIDE1NiksIDAsTkEzKDU4LjUpIH0sICAvKiAxOTVNYi9zICovCit9OworI3VuZGVmIEEK KyN1bmRlZiBOQTMKKyN1bmRlZiBOQTIKKyN1bmRlZiBOQTEKKworI2RlZmluZSBHKF9yKSBcCisg ICAgKCgoX3IpID09IDEpICAgPyAwIDogKCgoX3IpID09IDIpICAgPyAxIDogKCgoX3IpID09IDUu NSkgPyAyIDogXAorICAgICgoKF9yKSA9PSAxMSkgID8gMyA6ICgoKF9yKSA9PSA2KSAgID8gNCA6 ICgoKF9yKSA9PSA5KSAgID8gNSA6IFwKKyAgICAoKChfcikgPT0gMTIpICA/IDYgOiAoKChfcikg PT0gMTgpICA/IDcgOiAoKChfcikgPT0gMjQpICA/IDggOiBcCisgICAgKCgoX3IpID09IDM2KSAg PyA5IDogKCgoX3IpID09IDQ4KSAgPyAxMCA6ICgoKF9yKSA9PSA1NCkgID8gMTEgOiAwKSkpKSkp KSkpKSkpCitzdGF0aWMgY29uc3Qgc3RydWN0IHR4c2NoZWR1bGUgc2VyaWVzXzExZ1tdID0gewor CXsgMyxHKCAxKSwgMyxHKCAgMSksIDAsRyggIDEpLCAwLEcoIDEpIH0sCS8qICAgMU1iL3MgKi8K Kwl7IDQsRyggMiksIDMsRyggIDEpLCA0LEcoICAxKSwgMCxHKCAxKSB9LAkvKiAgIDJNYi9zICov CisJeyA0LEcoNS41KSwzLEcoICAyKSwgNCxHKCAgMSksIDIsRyggMSkgfSwJLyogNS41TWIvcyAq LworCXsgNCxHKDExKSwgMyxHKDUuNSksIDQsRyggIDIpLCAyLEcoIDEpIH0sCS8qICAxMU1iL3Mg Ki8KKwl7IDQsRyggNiksIDMsRyg1LjUpLCA0LEcoICAyKSwgMixHKCAxKSB9LAkvKiAgIDZNYi9z ICovCisJeyA0LEcoIDkpLCAzLEcoICA2KSwgNCxHKDUuNSksIDIsRyggMSkgfSwJLyogICA5TWIv cyAqLworCXsgNCxHKDEyKSwgMyxHKCAxMSksIDQsRyg1LjUpLCAyLEcoIDEpIH0sCS8qICAxMk1i L3MgKi8KKwl7IDQsRygxOCksIDMsRyggMTIpLCA0LEcoIDExKSwgMixHKCAxKSB9LAkvKiAgMThN Yi9zICovCisJeyA0LEcoMjQpLCAzLEcoIDE4KSwgNCxHKCAxMiksIDIsRyggMSkgfSwJLyogIDI0 TWIvcyAqLworCXsgNCxHKDM2KSwgMyxHKCAyNCksIDQsRyggMTgpLCAyLEcoIDEpIH0sCS8qICAz Nk1iL3MgKi8KKwl7IDQsRyg0OCksIDMsRyggMzYpLCA0LEcoIDI0KSwgMixHKCAxKSB9LAkvKiAg NDhNYi9zICovCisJeyA0LEcoNTQpLCAzLEcoIDQ4KSwgNCxHKCAzNiksIDIsRyggMSkgfQkvKiAg NTRNYi9zICovCit9OworCisjZGVmaW5lIE5HMShfcikgXAorCSgoKF9yKSA9PSA2LjUpID8gMTIg OiAoKChfcikgPT0gMTMpID8gMTMgOiAoKChfcikgPT0gMTkuNSk/IDE0IDogXAorCSgoKF9yKSA9 PSAyNikgID8gMTUgOiAoKChfcikgPT0gMzkpID8gMTYgOiAoKChfcikgPT0gNTIpICA/IDE3IDog XAorCSgoKF9yKSA9PSA1OC41KT8gMTggOiAoKChfcikgPT0gNjUpID8gMTkgOiAwKSkpKSkpKSkK KyNkZWZpbmUgTkcyKF9yKSBcCisJKCgoX3IpID09IDEzKSAgPyAyMCA6ICgoKF9yKSA9PSAyNikg PyAyMSA6ICgoKF9yKSA9PSAzOSkgID8gMjIgOiBcCisJKCgoX3IpID09IDUyKSAgPyAyMyA6ICgo KF9yKSA9PSA3OCkgPyAyNCA6ICgoKF9yKSA9PSAxMDQpID8gMjUgOiBcCisJKCgoX3IpID09IDEx NykgPyAyNiA6ICgoKF9yKSA9PSAxMzApPyAyNyA6IDApKSkpKSkpKQorI2RlZmluZSBORzMoX3Ip IFwKKwkoKChfcikgPT0gMTkuNSkgID8gMjggOiAoKChfcikgPT0gMzkpID8gMjkgOiAoKChfcikg PT0gNTguNSkgID8gMzAgOiBcCisJKCgoX3IpID09IDc4KSAgPyAzMSA6ICgoKF9yKSA9PSAxMTcp ID8gMzIgOiAoKChfcikgPT0gMTU2KSA/IDMzIDogXAorCSgoKF9yKSA9PSAxNzUuNSkgPyAzNCA6 ICgoKF9yKSA9PSAxOTUpPyAzNSA6IDApKSkpKSkpKQorCitzdGF0aWMgY29uc3Qgc3RydWN0IHR4 c2NoZWR1bGUgc2VyaWVzXzExbmdbXSA9IHsKKwl7IDMsRyggMSksIDMsRyggIDEpLCAwLEcoICAx KSwgMCxHKCAxKSB9LCAgICAgICAvKiAgIDFNYi9zICovCisJeyA0LEcoIDIpLCAzLEcoICAxKSwg NCxHKCAgMSksIDAsRyggMSkgfSwgICAgICAgLyogICAyTWIvcyAqLworCXsgNCxHKDUuNSksMyxH KCAgMiksIDQsRyggIDEpLCAyLEcoIDEpIH0sICAgICAgIC8qIDUuNU1iL3MgKi8KKwl7IDQsRygx MSksIDMsRyg1LjUpLCA0LEcoICAyKSwgMixHKCAxKSB9LCAgICAgICAvKiAgMTFNYi9zICovCisJ eyA0LEcoIDYpLCAzLEcoNS41KSwgNCxHKCAgMiksIDIsRyggMSkgfSwgICAgICAgLyogICA2TWIv cyAqLworCXsgNCxHKCA5KSwgMyxHKCAgNiksIDQsRyg1LjUpLCAyLEcoIDEpIH0sICAgICAgIC8q ICAgOU1iL3MgKi8KKwl7IDQsRygxMiksIDMsRyggMTEpLCA0LEcoNS41KSwgMixHKCAxKSB9LCAg ICAgICAvKiAgMTJNYi9zICovCisJeyA0LEcoMTgpLCAzLEcoIDEyKSwgNCxHKCAxMSksIDIsRygg MSkgfSwgICAgICAgLyogIDE4TWIvcyAqLworCXsgNCxHKDI0KSwgMyxHKCAxOCksIDQsRyggMTIp LCAyLEcoIDEpIH0sICAgICAgIC8qICAyNE1iL3MgKi8KKwl7IDQsRygzNiksIDMsRyggMjQpLCA0 LEcoIDE4KSwgMixHKCAxKSB9LCAgICAgICAvKiAgMzZNYi9zICovCisJeyA0LEcoNDgpLCAzLEco IDM2KSwgNCxHKCAyNCksIDIsRyggMSkgfSwgICAgICAgLyogIDQ4TWIvcyAqLworCXsgNCxHKDU0 KSwgMyxHKCA0OCksIDQsRyggMzYpLCAyLEcoIDEpIH0sICAgICAgIC8qICA1NE1iL3MgKi8KKwor CS8qIDEgc3RyZWFtIHJhdGVzICovCisKKwl7IDMsTkcxKCA2LjUpLCAzLE5HMSggNi41KSwgMCxO RzEoIDYuNSksIDAsTkcxKDYuNSkgfSwgIC8qIDYuNU1iL3MgKi8KKwl7IDQsTkcxKCAgMTMpLCAz LE5HMSggNi41KSwgNCxORzEoIDYuNSksIDAsTkcxKDYuNSkgfSwgIC8qICAxM01iL3MgKi8KKwl7 IDQsTkcxKDE5LjUpLCAzLE5HMSggNi41KSwgNCxORzEoIDYuNSksIDAsTkcxKDYuNSkgfSwgIC8q MTkuNU1iL3MgKi8KKwl7IDQsTkcxKCAgMjYpLCAzLE5HMSgxOS41KSwgNCxORzEoIDYuNSksIDIs TkcxKDYuNSkgfSwgIC8qICAyNk1iL3MgKi8KKwl7IDQsTkcxKCAgMzkpLCAzLE5HMSggIDI2KSwg NCxORzEoMTkuNSksIDIsTkcxKDYuNSkgfSwgIC8qICAzOU1iL3MgKi8KKwl7IDQsTkcxKCAgNTIp LCAzLE5HMSggIDM5KSwgNCxORzEoICAyNiksIDIsTkcxKDYuNSkgfSwgIC8qICA1Mk1iL3MgKi8K Kwl7IDQsTkcxKDU4LjUpLCAzLE5HMSggIDUyKSwgNCxORzEoICAzOSksIDIsTkcxKCAxMykgfSwg IC8qNTguNU1iL3MgKi8KKwl7IDQsTkcxKCAgNjUpLCAzLE5HMSg1OC41KSwgNCxORzEoICA1Miks IDIsTkcxKCAxMykgfSwgIC8qICA2NU1iL3MgKi8KKworCS8qIDIgc3RyZWFtIHJhdGVzICovCisK Kwl7IDMsTkcyKCAgMTMpLCAzLE5HMiggIDEzKSwgMCxORzIoICAxMyksIDAsTkcyKCAxMykgfSwg IC8qICAxM01iL3MgKi8KKwl7IDQsTkcyKCAgMjYpLCAzLE5HMiggIDEzKSwgNCxORzIoICAxMyks IDAsTkcyKCAxMykgfSwgIC8qICAyNk1iL3MgKi8KKwl7IDQsTkcyKCAgMzkpLCAzLE5HMiggIDI2 KSwgNCxORzIoICAxMyksIDIsTkcyKCAxMykgfSwgIC8qICAzOU1iL3MgKi8KKwl7IDQsTkcyKCAg NTIpLCAzLE5HMiggIDM5KSwgNCxORzIoICAyNiksIDIsTkcyKCAxMykgfSwgIC8qICA1Mk1iL3Mg Ki8KKwl7IDQsTkcyKCAgNzgpLCAzLE5HMiggIDUyKSwgNCxORzIoICAzOSksIDIsTkcyKCAxMykg fSwgIC8qICA3OE1iL3MgKi8KKwl7IDQsTkcyKCAxMDQpLCAzLE5HMiggIDc4KSwgNCxORzIoICA1 MiksIDIsTkcyKCAxMykgfSwgIC8qIDEwNE1iL3MgKi8KKwl7IDQsTkcyKCAxMTcpLCAzLE5HMigg MTA0KSwgNCxORzIoICA3OCksIDIsTkcyKCAyNikgfSwgIC8qIDExN01iL3MgKi8KKwl7IDQsTkcy KCAxMzApLCAzLE5HMiggMTE3KSwgNCxORzIoIDEwNCksIDIsTkcyKCAyNikgfSwgIC8qIDEzME1i L3MgKi8KKworCS8qIDMgc3RyZWFtIHJhdGVzICovCisKKwl7IDMsTkczKDE5LjUpLCAzLE5HMygx OS41KSwgMCxORzMoMTkuNSksIDAsTkczKDE5LjUpIH0sICAvKiAgMTlNYi9zICovCisJeyAzLE5H MyggIDM5KSwgMyxORzMoMTkuNSksIDAsTkczKDE5LjUpLCAwLE5HMygxOS41KSB9LCAgLyogIDM5 TWIvcyAqLworCXsgMyxORzMoNTguNSksIDMsTkczKCAgMzkpLCAwLE5HMygxOS41KSwgMCxORzMo MTkuNSkgfSwgIC8qICA1OE1iL3MgKi8KKwl7IDMsTkczKCAgNzgpLCAzLE5HMyg1OC41KSwgMCxO RzMoICAzOSksIDAsTkczKDE5LjUpIH0sICAvKiAgNzhNYi9zICovCisJeyAzLE5HMyggMTE3KSwg MyxORzMoICA3OCksIDAsTkczKDU4LjUpLCAwLE5HMygxOS41KSB9LCAgLyogMTE3TWIvcyAqLwor CXsgMyxORzMoIDE1NiksIDMsTkczKCAxMTcpLCAwLE5HMyggIDc4KSwgMCxORzMoMTkuNSkgfSwg IC8qICAxNTZNYi9zICovCisJeyAzLE5HMygxNzUuNSksIDMsTkczKCAxNTYpLCAwLE5HMyggMTE3 KSwgMCxORzMoICAzOSkgfSwgIC8qICAxNzVNYi9zICovCisJeyAzLE5HMyggMTk1KSwgMyxORzMo IDE5NSksIDAsTkczKCAxNTYpLCAwLE5HMyg1OC41KSB9LCAgLyogMTk1TWIvcyAqLworCit9Owor I3VuZGVmIEcKKyN1bmRlZiBORzMKKyN1bmRlZiBORzIKKyN1bmRlZiBORzEKKworI2RlZmluZSBI KF9yKSBcCisgICAgKCgoX3IpID09IDMpICAgPyAwIDogKCgoX3IpID09IDQuNSkgPyAxIDogKCgo X3IpID09IDYpICA/IDIgOiBcCisgICAgKCgoX3IpID09IDkpICAgPyAzIDogKCgoX3IpID09IDEy KSAgPyA0IDogKCgoX3IpID09IDE4KSA/IDUgOiBcCisgICAgKCgoX3IpID09IDI0KSAgPyA2IDog KCgoX3IpID09IDI3KSAgPyA3IDogMCkpKSkpKSkpCitzdGF0aWMgY29uc3Qgc3RydWN0IHR4c2No ZWR1bGUgc2VyaWVzX2hhbGZbXSA9IHsKKwl7IDMsSCggMyksIDMsSCggIDMpLCAwLEgoICAzKSwg MCxIKCAzKSB9LAkvKiAgIDNNYi9zICovCisJeyA0LEgoNC41KSwzLEgoICAzKSwgNCxIKCAgMyks IDAsSCggMykgfSwJLyogNC41TWIvcyAqLworCXsgNCxIKCA2KSwgMyxIKCAgMyksIDQsSCggIDMp LCAwLEgoIDMpIH0sCS8qICAgNk1iL3MgKi8KKwl7IDQsSCggOSksIDMsSCggIDYpLCA0LEgoICAz KSwgMixIKCAzKSB9LAkvKiAgIDlNYi9zICovCisJeyA0LEgoMTIpLCAzLEgoICA5KSwgNCxIKCAg NiksIDIsSCggMykgfSwJLyogIDEyTWIvcyAqLworCXsgNCxIKDE4KSwgMyxIKCAxMiksIDQsSCgg IDkpLCAyLEgoIDMpIH0sCS8qICAxOE1iL3MgKi8KKwl7IDQsSCgyNCksIDMsSCggMTgpLCA0LEgo IDEyKSwgMixIKCA2KSB9LAkvKiAgMjRNYi9zICovCisJeyA0LEgoMjcpLCAzLEgoIDI0KSwgNCxI KCAxOCksIDIsSCgxMikgfQkvKiAgMjdNYi9zICovCit9OworI3VuZGVmIEgKKworI2lmZGVmIFEK KyN1bmRlZiBRCisjZW5kaWYKKyNkZWZpbmUgUShfcikgXAorICAgICgoKF9yKSA9PSAxLjUpID8g MCA6ICgoKF9yKSA9PTIuMjUpID8gMSA6ICgoKF9yKSA9PSAzKSAgPyAyIDogXAorICAgICgoKF9y KSA9PSA0LjUpID8gMyA6ICgoKF9yKSA9PSAgNikgID8gNCA6ICgoKF9yKSA9PSA5KSAgPyA1IDog XAorICAgICgoKF9yKSA9PSAxMikgID8gNiA6ICgoKF9yKSA9PSAxMy41KT8gNyA6IDApKSkpKSkp KQorc3RhdGljIGNvbnN0IHN0cnVjdCB0eHNjaGVkdWxlIHNlcmllc19xdWFydGVyW10gPSB7CisJ eyAzLFEoIDEuNSksMyxRKDEuNSksIDAsUSgxLjUpLCAwLFEoMS41KSB9LAkvKiAxLjVNYi9zICov CisJeyA0LFEoMi4yNSksMyxRKDEuNSksIDQsUSgxLjUpLCAwLFEoMS41KSB9LAkvKjIuMjVNYi9z ICovCisJeyA0LFEoICAgMyksMyxRKDEuNSksIDQsUSgxLjUpLCAwLFEoMS41KSB9LAkvKiAgIDNN Yi9zICovCisJeyA0LFEoIDQuNSksMyxRKCAgMyksIDQsUSgxLjUpLCAyLFEoMS41KSB9LAkvKiA0 LjVNYi9zICovCisJeyA0LFEoICAgNiksMyxRKDQuNSksIDQsUSggIDMpLCAyLFEoMS41KSB9LAkv KiAgIDZNYi9zICovCisJeyA0LFEoICAgOSksMyxRKCAgNiksIDQsUSg0LjUpLCAyLFEoMS41KSB9 LAkvKiAgIDlNYi9zICovCisJeyA0LFEoICAxMiksMyxRKCAgOSksIDQsUSggIDYpLCAyLFEoICAz KSB9LAkvKiAgMTJNYi9zICovCisJeyA0LFEoMTMuNSksMyxRKCAxMiksIDQsUSggIDkpLCAyLFEo ICA2KSB9CS8qMTMuNU1iL3MgKi8KK307CisjdW5kZWYgUQorCisjZW5kaWYgLyogX05FVDgwMjEx X0lFRUU4MDIxMV9SQVRFQ1RMX1NBTVBMRV9UWFNDSEVEVUxFU19IXyAqLwo= --20cf3071c88693e1e004e4c679b2-- From owner-freebsd-wireless@FreeBSD.ORG Sun Aug 25 14:39:52 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5404CFFF for ; Sun, 25 Aug 2013 14:39:52 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qa0-x229.google.com (mail-qa0-x229.google.com [IPv6:2607:f8b0:400d:c00::229]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 0AD1120D1 for ; Sun, 25 Aug 2013 14:39:51 +0000 (UTC) Received: by mail-qa0-f41.google.com with SMTP id n20so171590qaj.14 for ; Sun, 25 Aug 2013 07:39:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=ukltFz9VpqImJfZwmcfKeoE8/qNtXUUx9PqBdnQESs8=; b=d2xtQMJ6CITda3b1lhYgIsUE6d867HtlIezJ1Mqb03c755Vr+NPStnzhCB+ptVLJbG x+skOmCUsHb6bJGNC7SRpyn4fqNffjANwtiGRrVrhbnvFmBYsoGjyhCil0du+j6OCj0y 3RoRNKCVnr5daJfeYYD39/XiTK2rxLV3L0bomnB5re/ExHNFsOMAhdqChvrkgSOr1a4F NDDfdKTItB8S1cuqg3HhJlCsCNo3tENC1ymd7w4fl1q1NFDbggzDlTTI59xZXGm5I4r8 rwJl3cEtAPiWHbXBJbKdLdkIIIvm1wn9I7cfh9uHd4Ya6DFx0qv+u4KISY85hdegVI7q ae0Q== MIME-Version: 1.0 X-Received: by 10.224.97.3 with SMTP id j3mr1146212qan.87.1377441591161; Sun, 25 Aug 2013 07:39:51 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Sun, 25 Aug 2013 07:39:51 -0700 (PDT) In-Reply-To: References: Date: Sun, 25 Aug 2013 07:39:51 -0700 X-Google-Sender-Auth: a-vqI41eufMM9OFvaX6BjwBT06A Message-ID: Subject: Re: Chenchong's work on net80211_ratectl From: Adrian Chadd To: Chenchong Qin Content-Type: text/plain; charset=ISO-8859-1 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: Sun, 25 Aug 2013 14:39:52 -0000 Hi! Have you tried this out with any hardware just yet? -adrian On 25 August 2013 07:30, Chenchong Qin wrote: > Hi! > > This is the latest update. > > * add a simple per vap ratectl statistic tracker and api to update it. > * port irn_capabilities to irs_capabilities in struct ieee80211_rc_stat. > perhaps the capabilities field needs to be within ieee80211_rc_stat as > a per vap atrribute. corresponding updates performed. > * add ieee80211_ratectl_none.h to record common ratectl state. > > Thanks! > > Chenchong > > > On Thu, Aug 15, 2013 at 8:03 PM, Chenchong Qin wrote: > >> Hi! >> >> Here is my latest update. In this update: >> >> * add a new struct, ieee80211_ratectl_node. This is the common state that >> all per node rc >> state, i.e. ieee80211_[amrr|sample]_node, should contains it as the >> first field. It's now used to store >> the capabilities. see below. >> * rename ir_capabilities to irn_capabilities and move it to >> ieee80211_ratectl_node (it contained in >> ieee80211_[amrr|sample]_node). ieee80211_ratectl is readonly, so >> ir_capabilities can't be set. And, >> the capabilities is not a part of rc algo. It seems that it should be >> put in the per node rc state. Interface >> of ieee80211_ratectl_node_init() and its callers are updated. >> References to ir_capabilities are also adapted. >> * add ieee80211_ratectl_[node_is11n|get_rateset] to the ratectl api. rc >> algoes all need these functions. >> * change the naming conversion of IEEE80211_RATECTL_FLAG_*. >> * some errors fixed. >> >> >> On Thu, Aug 15, 2013 at 12:58 AM, Adrian Chadd wrote: >> >>> Hi! >>> >>> So yes, we do need to have a generic way of returning that completion >>> information to the rate control code. >>> >>> I'm all for you churning the rate control API to return a struct >>> ieee80211_rc_info in the complete function and totally just kill arg1/arg2. >>> That forces us to extend ieee80211_rc_info to be "right" for all the >>> drivers. >>> >> >> Do you mean drop arg1/arg2 and pass pointer of ieee80211_rc_info to the >> complete function directly? Or return it >> when complete function return? >> >> >>> What wifi devices do you have there? It looks like we're almost at the >>> point where we can start converting a few things to use the modified rate >>> control API and modules - notably iwn (which won't use the multi-rate retry >>> stuff to begin with - it works "differently"..) and ath (which will use the >>> multi-rate retry stuff and the sample rate control module.) >>> >> >> Yeah, I have an AR9227 device at hand. >> >> And, I also get a question here. The ieee80211_ratetable doesn't get a >> rateCode field. So, how we get the >> ratecode of the non_ht rate? >> >> Thanks! >> >> Chenchong >> >> > From owner-freebsd-wireless@FreeBSD.ORG Mon Aug 26 06:43:03 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A268727B; Mon, 26 Aug 2013 06:43:03 +0000 (UTC) (envelope-from qinchenchong@gmail.com) Received: from mail-ve0-x22a.google.com (mail-ve0-x22a.google.com [IPv6:2607:f8b0:400c:c01::22a]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 460682C1E; Mon, 26 Aug 2013 06:43:03 +0000 (UTC) Received: by mail-ve0-f170.google.com with SMTP id 15so1942927vea.1 for ; Sun, 25 Aug 2013 23:43:02 -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=IAjIK4+yZrPu2ioqZYNYBpMyVtBKXVr0PDYnPCzV3qU=; b=Q4V6N5hV81i8w7SHPJmpRF4r1LPp8EOImF1VYJE6RueCOSH12D1M0bn2vnxNReS+Gx MhlwvlwsafZA38kGC09Sy0iU2cJdV0iUinLewcktX2Wi3NEVmto9gaiFRRtK23sWW6hF KcnKMM6n3ZyBAg0MFWFsWFIGEYuV67ae/0E7FgwG2JCjHf4qfvdRCW7NrgBRBlhUeeOH ZpaXq3PnA1+mKtm+T7nGh91qTD6P74A7IpAWgxzkjimp1K15v07C1X3nTLx5RrZ1L5rO TKY4uYvwRrNYF6jNGilpWyTl8PWRu0Z3WAQJONtvyR8QKDl+uZ7RXUoMF6953ZJEoqlm SE/A== MIME-Version: 1.0 X-Received: by 10.58.201.227 with SMTP id kd3mr13851059vec.14.1377499382356; Sun, 25 Aug 2013 23:43:02 -0700 (PDT) Received: by 10.220.182.68 with HTTP; Sun, 25 Aug 2013 23:43:02 -0700 (PDT) In-Reply-To: References: Date: Mon, 26 Aug 2013 14:43:02 +0800 Message-ID: Subject: Re: Chenchong's work on net80211_ratectl From: Chenchong Qin To: Adrian Chadd Content-Type: text/plain; charset=ISO-8859-1 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: Mon, 26 Aug 2013 06:43:03 -0000 Hi! I struggled to perform changes to all parts that affected by my update to ratectl api and got the customized kernel compiled... I'm now tring to play it on my AR9227 device. Thanks! Chenchong On Sun, Aug 25, 2013 at 10:39 PM, Adrian Chadd wrote: > Hi! > > Have you tried this out with any hardware just yet? > > > -adrian > > > > On 25 August 2013 07:30, Chenchong Qin wrote: > >> Hi! >> >> This is the latest update. >> >> * add a simple per vap ratectl statistic tracker and api to update it. >> * port irn_capabilities to irs_capabilities in struct ieee80211_rc_stat. >> perhaps the capabilities field needs to be within ieee80211_rc_stat as >> a per vap atrribute. corresponding updates performed. >> * add ieee80211_ratectl_none.h to record common ratectl state. >> >> Thanks! >> >> Chenchong >> >> >> On Thu, Aug 15, 2013 at 8:03 PM, Chenchong Qin wrote: >> >>> Hi! >>> >>> Here is my latest update. In this update: >>> >>> * add a new struct, ieee80211_ratectl_node. This is the common state >>> that all per node rc >>> state, i.e. ieee80211_[amrr|sample]_node, should contains it as the >>> first field. It's now used to store >>> the capabilities. see below. >>> * rename ir_capabilities to irn_capabilities and move it to >>> ieee80211_ratectl_node (it contained in >>> ieee80211_[amrr|sample]_node). ieee80211_ratectl is readonly, so >>> ir_capabilities can't be set. And, >>> the capabilities is not a part of rc algo. It seems that it should be >>> put in the per node rc state. Interface >>> of ieee80211_ratectl_node_init() and its callers are updated. >>> References to ir_capabilities are also adapted. >>> * add ieee80211_ratectl_[node_is11n|get_rateset] to the ratectl api. rc >>> algoes all need these functions. >>> * change the naming conversion of IEEE80211_RATECTL_FLAG_*. >>> * some errors fixed. >>> >>> >>> On Thu, Aug 15, 2013 at 12:58 AM, Adrian Chadd wrote: >>> >>>> Hi! >>>> >>>> So yes, we do need to have a generic way of returning that completion >>>> information to the rate control code. >>>> >>>> I'm all for you churning the rate control API to return a struct >>>> ieee80211_rc_info in the complete function and totally just kill arg1/arg2. >>>> That forces us to extend ieee80211_rc_info to be "right" for all the >>>> drivers. >>>> >>> >>> Do you mean drop arg1/arg2 and pass pointer of ieee80211_rc_info to the >>> complete function directly? Or return it >>> when complete function return? >>> >>> >>>> What wifi devices do you have there? It looks like we're almost at the >>>> point where we can start converting a few things to use the modified rate >>>> control API and modules - notably iwn (which won't use the multi-rate retry >>>> stuff to begin with - it works "differently"..) and ath (which will use the >>>> multi-rate retry stuff and the sample rate control module.) >>>> >>> >>> Yeah, I have an AR9227 device at hand. >>> >>> And, I also get a question here. The ieee80211_ratetable doesn't get a >>> rateCode field. So, how we get the >>> ratecode of the non_ht rate? >>> >>> Thanks! >>> >>> Chenchong >>> >>> >> > From owner-freebsd-wireless@FreeBSD.ORG Mon Aug 26 11:06:54 2013 Return-Path: Delivered-To: freebsd-wireless@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 794941C3 for ; Mon, 26 Aug 2013 11:06:54 +0000 (UTC) (envelope-from owner-bugmaster@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 597232877 for ; Mon, 26 Aug 2013 11:06:54 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r7QB6stn066129 for ; Mon, 26 Aug 2013 11:06:54 GMT (envelope-from owner-bugmaster@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r7QB6rj9066127 for freebsd-wireless@FreeBSD.org; Mon, 26 Aug 2013 11:06:53 GMT (envelope-from owner-bugmaster@FreeBSD.org) Date: Mon, 26 Aug 2013 11:06:53 GMT Message-Id: <201308261106.r7QB6rj9066127@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: gnats set sender to owner-bugmaster@FreeBSD.org using -f From: FreeBSD bugmaster To: freebsd-wireless@FreeBSD.org Subject: Current problem reports assigned to 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: Mon, 26 Aug 2013 11:06:54 -0000 Note: to view an individual PR, use: http://www.freebsd.org/cgi/query-pr.cgi?pr=(number). The following is a listing of current problems submitted by FreeBSD users. These represent problem reports covering all versions including experimental development code and obsolete releases. S Tracker Resp. Description -------------------------------------------------------------------------------- o kern/181161 wireless [wl] config a old compaq wl-110 wireless card make ker o kern/181132 wireless [iwn] stream calculation is wrong for the Intel 4965 o kern/181100 wireless [bwi] Turning up bwi0 crashes / deadlocks the kernel o kern/180816 wireless [iwl] Intel Centrino Wireless-N 2200 not supported o kern/179847 wireless [ath] [patch] Update regdomain in ath drivers includin o kern/179709 wireless [ath] Atheros 5212 does not work: stuck beacon; resett o kern/179547 wireless [ath] Add AR9485 custom board fixes (CUS198) o kern/179482 wireless [ath] [patch] Fix AR9462 external LNA configuration o kern/179269 wireless [ath] [AR9285] RX antenna diversity is not functioning o kern/179232 wireless [ath] panic in ath o kern/178986 wireless [ath] Change mac address of ath(4) is not reflected wh o kern/178492 wireless [ath] ath0 (AR9287) panic o kern/178491 wireless [ath] ath0 (AR9287) stuck beacon o kern/178477 wireless [ath] missed beacon / soft reset in STA mode results i o kern/178470 wireless [panic][ath] bss vap can and does change o kern/178411 wireless [ral] [panic] FreeBSD kernel crash in rt2860 o kern/178379 wireless [net80211] [ath] WPA rekey on the STA side fails when o kern/178378 wireless [net80211] crypto state isn't reset during a reassocia o kern/178263 wireless [ath] review the use of ic_freq / ic_ieee / ic_flags / o kern/177847 wireless [ath] With TPC enabled, TX power values aren't clamped o kern/177846 wireless [ath] [net80211] net80211 TX power limit isn't correct o conf/177688 wireless WiFi regodmains information is inconsistent between "e o kern/177530 wireless [ath] ath driver isn't 32 bit int clean o kern/177465 wireless [iwn] 20%-100% packet loss with iwn driver o kern/177451 wireless [ieee80211] page fault in ieee80211_tx_mgt_timeout o kern/176238 wireless [ath] [patch] Correct buffer size calculation and simp o kern/176201 wireless [net80211] [patch] 11n station includes unrelated ht p o kern/176104 wireless [iwn] iwn0: iwn_intr: fatal firmware error o kern/175722 wireless [ath]lot of bad seriesx hwrate in kernel messages o kern/175446 wireless [ath] high volumes of PHY errors lead to BB/MAC hangs o kern/175227 wireless [ath] beacon timers aren't necessarily reprogrammed af o kern/175183 wireless [iwn] iwn(4) becomes unresponsive during initial confi o kern/175053 wireless [iwn] iwn firmware error on 9-stable with Ultimate-N 6 o kern/174891 wireless [ieee80211] struct ieee80211_node is freed during acti o kern/174722 wireless [wlan] can't use channel 12 and 13 (14) with my wifi i o kern/174661 wireless [wlan] lost alias on wlan interface o kern/174283 wireless [net80211] panics in ieee80211_ff_age() and ieee80211_ o kern/174276 wireless [ath] if_ath memory modified after free o kern/174273 wireless [net80211] taking down a net80211 node with active fas o kern/173917 wireless [iwn] wpa-supplicant issues on iwn o kern/173898 wireless [iwn] [patch] iwn(4) DOES support 6235 chip. o kern/173883 wireless [ath] ath0: unable to attach - pci issue? o kern/173711 wireless [ath] powerd kills ath on the Asus EeePC 1005HA o kern/173342 wireless PS-Poll isn't working o kern/173336 wireless [ath] Atheros card improper device poweroff handling o o kern/172955 wireless [ath] 11n does not work in adhoc mode o kern/172706 wireless [wpi] wpi0 fails to load firmware when using country o kern/172672 wireless [ubt] Bluetooth device recognised but not working o kern/172661 wireless hostapd(8) securing wireless adapter in HostAP mode is o kern/172338 wireless [ath] [net80211] CCMP IV transmit counters are not cor o kern/171598 wireless [ath] TP-Link TL-WN951N W-LAN PCI Adapter 300 MBit stu o kern/171235 wireless [ath] ath loses connection, system freezes on netif re o kern/170889 wireless [ath] ath driver uses some uninitilized memory o kern/170620 wireless [ath] LOR and deadlock when multiple vaps are used o kern/170573 wireless [iwi] Intel 2200BG iwi NIC hangs with need multicast c o kern/170513 wireless [ath] ath logs: ath_tx_aggr_comp_aggr: AR5416 bug: o kern/170433 wireless [ath] TX hang after a stuck beacon message with active o kern/170411 wireless [ath] Uninitialized variables in if_ath.c o kern/170397 wireless [ath] [patch] Uninitialized variables in ah_eeprom_928 o kern/170302 wireless [ath] 802.11n frames are not being transmitted with mu o kern/170281 wireless [ath] 802.11n locks up on aggregation setup (ampdutx) o kern/170098 wireless [ath] [net80211] VAPs (Virtual access points) with Ath o kern/170066 wireless [ral] ral(4) rt61pci Linksys freezes the machine as so o kern/169432 wireless [ath] BAR TX hang when aggregation session is reset du p kern/169362 wireless [ath] AR5416: radar pulse PHY errors sometimes include o kern/169336 wireless [ath] ANI isn't triggering in a busy/noisy environment o kern/169199 wireless [ath] Cannot set up static ip addresses for wireless w o kern/169084 wireless [ath] suspend/resume doesn't cause a rescan; the assoc o kern/168530 wireless [ath] Broken WEP probably o kern/168393 wireless AR9285: suspend/resume sometimes fails o kern/168170 wireless [net80211] ieee80211_send_bar() doesn't complete corre o kern/167870 wireless [ath] adhoc wifi client does not join an existing IBSS o kern/167834 wireless [ath] kickpcu; 'handled 0 packets' o kern/167828 wireless [iwn] iwn(4) doesn't recover automatically after firmw o kern/167798 wireless ifconfig(8): problem with "ifconfig list scan" command o kern/167491 wireless [ath] TID != hardware queue TID in ath_tx_aggr_comp_ag o kern/167113 wireless [ath] AR5210: "stuck" TX seems to be occuring, without o kern/167080 wireless [ath] channel switch on another VAP break channel setu o kern/166684 wireless [ath] [net80211] mgmtrate/mcastrate isn't updated base p kern/166642 wireless [ieee80211] [patch] in 802.11n mode for FreeBSD AP, ha o kern/166641 wireless [ieee80211] [patch] mbuf/cluster leak in AP mode in 80 p kern/166357 wireless [ath] 802.11n TX stall when the first frame in the BAW o kern/166286 wireless [net80211] [ath] initial switch to HT40 isn't causing p kern/166190 wireless [ath] TX hangs and frames stuck in TX queue o kern/166086 wireless [Patch][ath] Reflect state of rfkill switch in a sysct o kern/165969 wireless [ath] Slower performance in adhoc mode vs Client/AP mo o kern/165966 wireless [ath] ath0: device timeout on SMP machines due to race o kern/165895 wireless [ath] overly busy cabq can tie up all tx buffers o kern/165870 wireless [bwn] bwn driver does not attach on HP Pavilion dv9420 o kern/165866 wireless [ath] TX hangs, requiring a "scan" to properly reset t o kern/165849 wireless [ath] [hang] network ath driver freeze o kern/165595 wireless [ipw] ipw(4): Can't load firmare for ipw2200bg o kern/165543 wireless [ath] ath0 endless scanning of channels without connec o kern/165517 wireless [net80211] bgscan isn't triggered when invalid beacons o kern/165475 wireless [ath] operational mode change doesn't poke the underly o kern/165382 wireless [kernel] taskqueue_unblock doesn't unblock currently q o kern/165306 wireless [ath] race conditions between scanning and beacon time o kern/165220 wireless [ath] "ath_rx_tasklet: sc_inreset_cnt > 0; skipping" m o kern/165214 wireless [ieee80211] Kernel panic in ieee80211_output.c:2505 o kern/165212 wireless [ath] No WiFi on Acer Aspire One 751h (Atheros AR5BHB6 o kern/165149 wireless [ath] [net80211] Ping with data length more than iv_fr o kern/165146 wireless [net80211] Net802.11 Fragment number is assigned 1 (sh o kern/165060 wireless [ath] vap->iv_bss race conditions causing crashes insi o kern/165021 wireless [ath] ath device timeout during scan/attach, if wlan_c o kern/164721 wireless [ath] ath device timeouts o kern/164382 wireless [ath] crash when down/deleting a vap - inside ieee8021 o kern/164365 wireless [iwi] iwi0: UP/DOWN in o bin/164102 wireless hostapd not configured for 802.11n o kern/163759 wireless [ath] ath(4) "stops working" in hostap mode o kern/163724 wireless [mwl] [patch] NULL check before dereference o kern/163719 wireless [ath] ath interface do not receive multicast o kern/163689 wireless [ath] TX timeouts when sending probe/mgmt frames durin o kern/163574 wireless [net80211] overly-frequent HT occupancy changes o kern/163573 wireless [ath] hostap mode TX buffer hang o kern/163559 wireless [ath] kernel panic AH_DEBUG o kern/163318 wireless [ath] ath(4) stops working p kern/163312 wireless [panic] [ath driver] kernel panic: page fault with ath o kern/163237 wireless [ath] AR5416 as HostAP. Delays among clients when a cl o kern/163082 wireless [ath] ar9285 diversity fixes o kern/162648 wireless [ath] AR9227 ADC DC calibration failure o kern/162647 wireless [ath] 11n TX aggregation session / TX hang o kern/161293 wireless [iwn] hang at startup when starting network o kern/161035 wireless [ieee80211] Incorrect number describing 11ng MCS rate o kern/160391 wireless [ieee80211] [patch] Panic in mesh mode o kern/160296 wireless [zyd] [panic] 802.11 usb device reboots system on 'ifc o misc/160176 wireless [mips] [panic] Kernel panic on AR7161 platform with AR o kern/157449 wireless [ath] MAC address conflict causes system to freeze o kern/157243 wireless [ath] investigate beacon TX (AP) / RX (STA) when under o kern/156904 wireless [ath] AR9285 antenna diversity algorithm is buggy and o kern/156884 wireless [ath] ath instablity o kern/156327 wireless [bwn] bwn driver causes 20%-50% packet loss o kern/156322 wireless [wpi] no ahdemo support for if_wpi o kern/156321 wireless [ath] ahdemo doesn't work with if_ath o kern/155498 wireless [ral] ral(4) needs to be resynced with OpenBSD's to ga o kern/155100 wireless [ath] ath driver on busy channel: "stuck beacon" p kern/154598 wireless [ath] Atheros 5424/2424 can't connect to WPA network o kern/154567 wireless [ath] ath(4) lot of bad series(0) o kern/154327 wireless [ath] AR5416 in station mode hangs when transmitting f o kern/154284 wireless [ath] Modern ath wifi cards (such as AR9285) have miss o kern/154153 wireless [ath] AR5213 + MIPS + WPA group key packet corruption o kern/153594 wireless [wlan] netif/devd race o kern/153448 wireless [ath] ath networking device loses association after a o kern/152750 wireless [ath] ath0 lot of bad series hwrate o kern/151198 wireless [ath] ath/5416 fails bgscan with "ath0: ath_chan_set: o kern/149786 wireless [bwn] bwn on Dell Inspiron 1150: connections stall o kern/149516 wireless [ath] ath(4) hostap with fake MAC/BSSID results in sta o kern/149373 wireless [realtek/atheros]: None of my network card working o kern/148322 wireless [ath] Triggering atheros wifi beacon misses in hostap o kern/148317 wireless [ath] FreeBSD 7.x hostap memory leak in net80211 or At o kern/148078 wireless [ath] wireless networking stops functioning o kern/146426 wireless [mwl] 802.11n rates not possible on mwl o kern/146425 wireless [mwl] mwl dropping all packets during and after high u o kern/145826 wireless [panic] [ath] Unable to configure adhoc mode on ath0/w o kern/144987 wireless [wpi] [panic] injecting packets with wlaninject using o kern/144755 wireless [wlan] netif/devd race o bin/144109 wireless hostapd(8) uses the MAC of the wireless interface, but o conf/143079 wireless hostapd(8) startup missing multi wlan functionality p kern/140567 wireless [ath] [patch] ath is not worked on my notebook PC o kern/140245 wireless [ath] [panic] Kernel panic during network activity on o kern/137592 wireless [ath] panic - 7-STABLE (Aug 7, 2009 UTC) crashes on ne o kern/136943 wireless [wpi] [lor] wpi0_com_lock / wpi0 o kern/136836 wireless [ath] atheros card stops functioning after about 12 ho o kern/132722 wireless [ath] Wifi ath0 associates fine with AP, but DHCP or I o bin/131549 wireless ifconfig(8) can't clear 'monitor' mode on the wireless o kern/126475 wireless [ath] [panic] ath pcmcia card inevitably panics under o kern/125721 wireless [ath] Terrible throughput/high ping latency with Ubiqu o kern/125617 wireless [ath] [panic] ath(4) related panic o kern/125501 wireless [ath] atheros cardbus driver hangs o kern/125332 wireless [ath] [panic] crash under any non-tiny networking unde o kern/124767 wireless [iwi] Wireless connection using iwi0 driver (Intel 220 o kern/124753 wireless [ieee80211] net80211 discards power-save queue packets o kern/121061 wireless [ath] [panic] panic while ejecting ath(4)-adapter duri o docs/120456 wireless ath(4) needs to specify requirement on wlan_scan_sta o kern/119513 wireless [ath] [irq] inserting dlink dwl-g630 wireless card res o kern/116747 wireless [ndis] FreeBSD 7.0-CURRENT crash with Dell TrueMobile f kern/105348 wireless [ath] ath device stopps TX 176 problems total. From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 01:20:37 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A06217E7; Tue, 27 Aug 2013 01:20:37 +0000 (UTC) (envelope-from gnn@freebsd.org) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7455B2E7D; Tue, 27 Aug 2013 01:20:37 +0000 (UTC) Received: from [206.217.92.186] (port=10724 helo=[192.168.252.4]) by vps.hungerhost.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.80.1) (envelope-from ) id 1VE7xT-0001ky-57; Mon, 26 Aug 2013 21:20:35 -0400 Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: patch for intel centrino ? From: George Neville-Neil In-Reply-To: Date: Mon, 26 Aug 2013 21:20:41 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> References: <000601cea157$3fbc8830$bf359890$@info> To: Adrian Chadd X-Mailer: Apple Mail (2.1508) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - freebsd.org X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com 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: Tue, 27 Aug 2013 01:20:37 -0000 On Aug 25, 2013, at 7:41 , Adrian Chadd wrote: > Hi! >=20 > I encourage people to test this out on all iwn(4) hardware, new and = old. >=20 > It needs to work on the older stuff (4965, 5100, etc) before I will = merge > it into -HEAD. >=20 > Sorry I've not merged more, I've been busy with work and work travel. >=20 >=20 >=20 OK, here is a patch that makes this "start" to work. I say "start" = because after a few reasonable exchanges (i.e. I can open a web page) the device seems to wedge with no = messages. http://people.freebsd.org/~gnn/iwn.diff If y'all can look at that and make comments that would be helpful. I turned on debugging and a sample of the messages when the device is = "stuck" are at the end of this email. Best, George Aug 26 21:18:24 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:24 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:24 punk kernel: iwn_tx_data: qid 2 idx 205 len 84 nsegs 2 Aug 26 21:18:24 punk kernel: iwn_tx_data: qid 2 idx 206 len 84 nsegs 2 Aug 26 21:18:24 punk kernel: iwn_tx_data: qid 2 idx 207 len 84 nsegs 2 Aug 26 21:18:24 punk kernel: iwn_tx_data: qid 2 idx 208 len 84 nsegs 2 Aug 26 21:18:24 punk kernel: iwn_tx_data: qid 2 idx 209 len 84 nsegs 2 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: qid 2 idx 205 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:24 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: qid 2 idx 206 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:24 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: qid 2 idx 207 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:24 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: qid 2 idx 208 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:24 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: qid 2 idx 209 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:24 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:24 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:26 punk kernel: iwn_tx_data: qid 2 idx 210 len 80 nsegs 1 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: qid 2 idx 210 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:26 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:26 punk kernel: iwn_tx_data: qid 2 idx 211 len 83 nsegs 1 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: qid 2 idx 211 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:26 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:26 punk kernel: iwn_tx_data: qid 2 idx 212 len 84 nsegs 2 Aug 26 21:18:26 punk kernel: iwn_tx_data: qid 2 idx 213 len 84 nsegs 2 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: qid 2 idx 212 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:26 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: qid 2 idx 213 retries 0 = nkill 0 ra te 80006103 duration 161 status 1 Aug 26 21:18:26 punk kernel: iwn5000_tx_done: Agg : 1 Aug 26 21:18:26 punk kernel: iwn_tx_done: Status OK ackcnt: 0 Aug 26 21:18:27 punk kernel: iwn_tx_data: qid 2 idx 214 len 84 nsegs 2 Aug 26 21:18:27 punk kernel: iwn_tx_data: qid 2 idx 215 len 84 nsegs 2 Aug 26 21:18:27 punk kernel: iwn_tx_data: qid 2 idx 216 len 84 nsegs 2 Aug 26 21:18:27 punk kernel: iwn_tx_data: qid 2 idx 217 len 84 nsegs 2 From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 09:02:11 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7E0B6F63 for ; Tue, 27 Aug 2013 09:02:11 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qe0-x235.google.com (mail-qe0-x235.google.com [IPv6:2607:f8b0:400d:c02::235]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 33D5E283B for ; Tue, 27 Aug 2013 09:02:11 +0000 (UTC) Received: by mail-qe0-f53.google.com with SMTP id 1so2420187qee.12 for ; Tue, 27 Aug 2013 02:02:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=ll0svDIhx6Vp80TJpY8Q+IlUIqLDFEKWt9cMgvKd9cg=; b=Ls5I0iw5StZgenoTT37/TOIvI/XDa24jUFgZ1UKlQpfpS3N3nlrXkA6q6B0P3c4Hko EKGgCpIUSZzHXFi3Urd8KQtCKbF0FDYfzD7a00ZIlCrhcFUY4ITD1gxd2+xtDiJsosfm V/cD3b6q7KXYuWiaMuc9GA9h1IKj0Eu6qfXqKhK1lYy3OFPKmqxai88eWdi4jTtFgsWh 0dEHeAuo/Nav/RuoMkCipu+frve/5XTg5ignHtK0k8eSr7eFkzfvKNggm50WvXcXgfyB Ol9yudriO+9eDeYxZ23FTCzqp7OOmUWMe3qhjEWN2yIHi/CZTNic4r+GfBmZvgvmfK6w ekqQ== MIME-Version: 1.0 X-Received: by 10.224.7.67 with SMTP id c3mr21257966qac.6.1377594130235; Tue, 27 Aug 2013 02:02:10 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Tue, 27 Aug 2013 02:02:10 -0700 (PDT) In-Reply-To: References: Date: Tue, 27 Aug 2013 02:02:10 -0700 X-Google-Sender-Auth: J0cogVk3vHplxPrP0mrY8pBA4Mk Message-ID: Subject: Re: Chenchong's work on net80211_ratectl From: Adrian Chadd To: Chenchong Qin Content-Type: text/plain; charset=ISO-8859-1 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: Tue, 27 Aug 2013 09:02:11 -0000 Sweet! Let me know how it goes. -adrian On 25 August 2013 23:43, Chenchong Qin wrote: > Hi! > > I struggled to perform changes to all parts that affected by my update to > ratectl api > and got the customized kernel compiled... I'm now tring to play it on my > AR9227 device. > > Thanks! > > Chenchong > > > On Sun, Aug 25, 2013 at 10:39 PM, Adrian Chadd wrote: > >> Hi! >> >> Have you tried this out with any hardware just yet? >> >> >> -adrian >> >> >> >> On 25 August 2013 07:30, Chenchong Qin wrote: >> >>> Hi! >>> >>> This is the latest update. >>> >>> * add a simple per vap ratectl statistic tracker and api to update it. >>> * port irn_capabilities to irs_capabilities in struct ieee80211_rc_stat. >>> perhaps the capabilities field needs to be within ieee80211_rc_stat as >>> a per vap atrribute. corresponding updates performed. >>> * add ieee80211_ratectl_none.h to record common ratectl state. >>> >>> Thanks! >>> >>> Chenchong >>> >>> >>> On Thu, Aug 15, 2013 at 8:03 PM, Chenchong Qin wrote: >>> >>>> Hi! >>>> >>>> Here is my latest update. In this update: >>>> >>>> * add a new struct, ieee80211_ratectl_node. This is the common state >>>> that all per node rc >>>> state, i.e. ieee80211_[amrr|sample]_node, should contains it as the >>>> first field. It's now used to store >>>> the capabilities. see below. >>>> * rename ir_capabilities to irn_capabilities and move it to >>>> ieee80211_ratectl_node (it contained in >>>> ieee80211_[amrr|sample]_node). ieee80211_ratectl is readonly, so >>>> ir_capabilities can't be set. And, >>>> the capabilities is not a part of rc algo. It seems that it should be >>>> put in the per node rc state. Interface >>>> of ieee80211_ratectl_node_init() and its callers are updated. >>>> References to ir_capabilities are also adapted. >>>> * add ieee80211_ratectl_[node_is11n|get_rateset] to the ratectl api. rc >>>> algoes all need these functions. >>>> * change the naming conversion of IEEE80211_RATECTL_FLAG_*. >>>> * some errors fixed. >>>> >>>> >>>> On Thu, Aug 15, 2013 at 12:58 AM, Adrian Chadd wrote: >>>> >>>>> Hi! >>>>> >>>>> So yes, we do need to have a generic way of returning that completion >>>>> information to the rate control code. >>>>> >>>>> I'm all for you churning the rate control API to return a struct >>>>> ieee80211_rc_info in the complete function and totally just kill arg1/arg2. >>>>> That forces us to extend ieee80211_rc_info to be "right" for all the >>>>> drivers. >>>>> >>>> >>>> Do you mean drop arg1/arg2 and pass pointer of ieee80211_rc_info to the >>>> complete function directly? Or return it >>>> when complete function return? >>>> >>>> >>>>> What wifi devices do you have there? It looks like we're almost at the >>>>> point where we can start converting a few things to use the modified rate >>>>> control API and modules - notably iwn (which won't use the multi-rate retry >>>>> stuff to begin with - it works "differently"..) and ath (which will use the >>>>> multi-rate retry stuff and the sample rate control module.) >>>>> >>>> >>>> Yeah, I have an AR9227 device at hand. >>>> >>>> And, I also get a question here. The ieee80211_ratetable doesn't get a >>>> rateCode field. So, how we get the >>>> ratecode of the non_ht rate? >>>> >>>> Thanks! >>>> >>>> Chenchong >>>> >>>> >>> >> > From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 09:28:28 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 636B272B; Tue, 27 Aug 2013 09:28:28 +0000 (UTC) (envelope-from cg@cgross.info) Received: from alpha.kreiz-it.fr (alpha.kreiz-it.fr [178.32.219.166]) by mx1.freebsd.org (Postfix) with ESMTP id 2A98C29EA; Tue, 27 Aug 2013 09:28:27 +0000 (UTC) Received: from DirTech (lnr56-1-82-246-51-185.fbx.proxad.net [82.246.51.185]) by alpha.kreiz-it.fr (Postfix) with ESMTPSA id 6A411C5E; Tue, 27 Aug 2013 11:28:20 +0200 (CEST) From: "Cedric GROSS" To: "'George Neville-Neil'" References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> In-Reply-To: <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> Subject: RE: patch for intel centrino ? Date: Tue, 27 Aug 2013 11:28:16 +0200 Message-ID: <000c01cea307$c5324e30$4f96ea90$@info> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Ac6iw86rbvmfaF9RRfqW9LSpIBGqbAAQOS3Q Content-Language: fr 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: Tue, 27 Aug 2013 09:28:28 -0000 > De=A0: George Neville-Neil [mailto:gnn@freebsd.org] > Envoy=E9=A0: mardi 27 ao=FBt 2013 03:21 > =C0=A0: Adrian Chadd > Cc=A0: Cedric GROSS; freebsd-wireless@freebsd.org > Objet=A0: Re: patch for intel centrino ? >=20 >=20 > On Aug 25, 2013, at 7:41 , Adrian Chadd wrote: >=20 > > Hi! Hello George, > http://people.freebsd.org/~gnn/iwn.diff You don't use correct firmware for your NIC. It's should be a 2000 not = 2030. >=20 > If y'all can look at that and make comments that would be helpful. >=20 Try to get correct firmware and test it again. (http://wireless.kernel.org/en/users/Drivers/iwlwifi?action=3DAttachFile&= do=3Dge t&target=3Diwlwifi-2000-ucode-18.168.6.1.tgz) You will need to uncompress it and then uucode firmware, create module (sys/modules/iwnfw) and so on. Cedric From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 14:24:29 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C27EF270; Tue, 27 Aug 2013 14:24:29 +0000 (UTC) (envelope-from gnn@freebsd.org) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 948032B27; Tue, 27 Aug 2013 14:24:29 +0000 (UTC) Received: from [38.105.238.108] (port=62905 helo=gnnmac.hudson-trading.com) by vps.hungerhost.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.80.1) (envelope-from ) id 1VEKAx-0004Yz-1i; Tue, 27 Aug 2013 10:23:19 -0400 Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: patch for intel centrino ? From: George Neville-Neil In-Reply-To: <000c01cea307$c5324e30$4f96ea90$@info> Date: Tue, 27 Aug 2013 10:23:20 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> To: "Cedric GROSS" X-Mailer: Apple Mail (2.1508) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - freebsd.org X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com 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: Tue, 27 Aug 2013 14:24:29 -0000 On Aug 27, 2013, at 5:28 , "Cedric GROSS" wrote: >=20 >=20 >> De : George Neville-Neil [mailto:gnn@freebsd.org] >> Envoy=E9 : mardi 27 ao=FBt 2013 03:21 >> =C0 : Adrian Chadd >> Cc : Cedric GROSS; freebsd-wireless@freebsd.org >> Objet : Re: patch for intel centrino ? >>=20 >>=20 >> On Aug 25, 2013, at 7:41 , Adrian Chadd wrote: >>=20 >>> Hi! >=20 > Hello George, >=20 >> http://people.freebsd.org/~gnn/iwn.diff >=20 > You don't use correct firmware for your NIC. It's should be a 2000 not = 2030. >>=20 >> If y'all can look at that and make comments that would be helpful. >>=20 >=20 > Try to get correct firmware and test it again. > = (http://wireless.kernel.org/en/users/Drivers/iwlwifi?action=3DAttachFile&d= o=3Dge > t&target=3Diwlwifi-2000-ucode-18.168.6.1.tgz) >=20 > You will need to uncompress it and then uucode firmware, create module > (sys/modules/iwnfw) and so on. With the 2000 firmware I get a firmware crash: Aug 27 10:20:12 punk kernel: iwn0: iwn_intr: fatal firmware error Aug 27 10:20:12 punk kernel: firmware error log: Aug 27 10:20:12 punk kernel: error type =3D "UNKNOWN" (0x00000038) Aug 27 10:20:12 punk kernel: program counter =3D 0x0000A240 Aug 27 10:20:12 punk kernel: source line =3D 0x000003C4 Aug 27 10:20:12 punk kernel: error data =3D 0x00000000000000AA Aug 27 10:20:12 punk kernel: branch link =3D 0x0000A23C0000A23C Aug 27 10:20:12 punk kernel: interrupt link =3D 0x0000E1AE00000000 Aug 27 10:20:12 punk kernel: time =3D 29232 Aug 27 10:20:12 punk kernel: driver status: Aug 27 10:20:12 punk kernel: tx ring 0: qid=3D0 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 1: qid=3D1 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 2: qid=3D2 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 3: qid=3D3 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 4: qid=3D4 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 5: qid=3D5 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 6: qid=3D6 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 7: qid=3D7 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 8: qid=3D8 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 9: qid=3D9 cur=3D12 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 10: qid=3D10 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 11: qid=3D11 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 12: qid=3D12 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 13: qid=3D13 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 14: qid=3D14 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 15: qid=3D15 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 16: qid=3D16 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 17: qid=3D17 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 18: qid=3D18 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: tx ring 19: qid=3D19 cur=3D0 queued=3D0 Aug 27 10:20:12 punk kernel: rx ring: cur=3D11 Aug 27 10:20:13 punk kernel: iwn0: iwn_config: could not configure valid = TX chains, error 35 Aug 27 10:20:13 punk kernel: iwn0: iwn_init_locked: could not configure = device, error 35 Best, George From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 15:08:10 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 0EFA8861; Tue, 27 Aug 2013 15:08:10 +0000 (UTC) (envelope-from cg@cgross.info) Received: from alpha.kreiz-it.fr (alpha.kreiz-it.fr [IPv6:2001:41d0:8:dda6::1]) by mx1.freebsd.org (Postfix) with ESMTP id C89C12E0E; Tue, 27 Aug 2013 15:08:09 +0000 (UTC) Received: from DirTech (lnr56-1-82-246-51-185.fbx.proxad.net [82.246.51.185]) by alpha.kreiz-it.fr (Postfix) with ESMTPSA id 14605D20; Tue, 27 Aug 2013 17:08:07 +0200 (CEST) From: "Cedric GROSS" To: "'George Neville-Neil'" References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> In-Reply-To: Subject: RE: patch for intel centrino ? Date: Tue, 27 Aug 2013 17:08:05 +0200 Message-ID: <002801cea337$3d0c7b40$b72571c0$@info> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Ac6jMSdl7PR3ftG5Rqe+PdZWOvS/qAABJb6g Content-Language: fr 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: Tue, 27 Aug 2013 15:08:10 -0000 > -----Message d'origine----- > De=A0: George Neville-Neil [mailto:gnn@freebsd.org] > Envoy=E9=A0: mardi 27 ao=FBt 2013 16:23 > =C0=A0: Cedric GROSS > Cc=A0: freebsd-wireless@freebsd.org; 'Adrian Chadd' > Objet=A0: Re: patch for intel centrino ? >=20 >=20 > On Aug 27, 2013, at 5:28 , "Cedric GROSS" wrote: >=20 > >> De : George Neville-Neil [mailto:gnn@freebsd.org] Envoy=E9 : mardi = 27 > >> ao=FBt 2013 03:21 =C0 : Adrian Chadd Cc : Cedric GROSS; > >> freebsd-wireless@freebsd.org Objet : Re: patch for intel centrino ? > >> > >> > >> On Aug 25, 2013, at 7:41 , Adrian Chadd wrote: > >> > >>> Hi! > > > > Hello George, > > > >> http://people.freebsd.org/~gnn/iwn.diff > > > > You don't use correct firmware for your NIC. It's should be a 2000 > not 2030. > >> > >> If y'all can look at that and make comments that would be helpful. > >> > > > > Try to get correct firmware and test it again. > > > = (http://wireless.kernel.org/en/users/Drivers/iwlwifi?action=3DAttachFile&= > do=3Dge > > t&target=3Diwlwifi-2000-ucode-18.168.6.1.tgz) > > > > You will need to uncompress it and then uucode firmware, create > module > > (sys/modules/iwnfw) and so on. >=20 > With the 2000 firmware I get a firmware crash: >=20 > Aug 27 10:20:12 punk kernel: iwn0: iwn_intr: fatal firmware error > Aug 27 10:20:12 punk kernel: firmware error log: > Aug 27 10:20:12 punk kernel: error type =3D "UNKNOWN" = (0x00000038) > Aug 27 10:20:13 punk kernel: iwn0: iwn_config: could not configure > valid TX chains, error 35 > Aug 27 10:20:13 punk kernel: iwn0: iwn_init_locked: could not = configure > device, error 35 Hum.. I nearly sure is because your NIC don't have BT. Set advanced_bt_coexist to false within iwn2000_base_params.=20 May be it will not run also but iwn cannot skip BT config for the = moment. If setting parameter to false doesn't change crash, try to comment /* Configure bluetooth coexistence. */ bloc code in iwn_config.=20 I will do a patch for that later. >=20 > Best, > George From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 16:11:14 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 5AE39176; Tue, 27 Aug 2013 16:11:14 +0000 (UTC) (envelope-from gnn@freebsd.org) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2CFB021F5; Tue, 27 Aug 2013 16:11:14 +0000 (UTC) Received: from [38.105.238.108] (port=64197 helo=gnnmac.hudson-trading.com) by vps.hungerhost.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.80.1) (envelope-from ) id 1VELrL-0000dI-29; Tue, 27 Aug 2013 12:11:11 -0400 Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: patch for intel centrino ? From: George Neville-Neil In-Reply-To: <002801cea337$3d0c7b40$b72571c0$@info> Date: Tue, 27 Aug 2013 12:11:12 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <329B55B0-F515-4612-BCF5-1D9A9A47BD77@freebsd.org> References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> <002801cea337$3d0c7b40$b72571c0$@info> To: "Cedric GROSS" X-Mailer: Apple Mail (2.1508) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - freebsd.org X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com 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: Tue, 27 Aug 2013 16:11:14 -0000 On Aug 27, 2013, at 11:08 , "Cedric GROSS" wrote: >> -----Message d'origine----- >> De : George Neville-Neil [mailto:gnn@freebsd.org] >> Envoy=E9 : mardi 27 ao=FBt 2013 16:23 >> =C0 : Cedric GROSS >> Cc : freebsd-wireless@freebsd.org; 'Adrian Chadd' >> Objet : Re: patch for intel centrino ? >>=20 >>=20 >> On Aug 27, 2013, at 5:28 , "Cedric GROSS" wrote: >>=20 >>>> De : George Neville-Neil [mailto:gnn@freebsd.org] Envoy=E9 : mardi = 27 >>>> ao=FBt 2013 03:21 =C0 : Adrian Chadd Cc : Cedric GROSS; >>>> freebsd-wireless@freebsd.org Objet : Re: patch for intel centrino ? >>>>=20 >>>>=20 >>>> On Aug 25, 2013, at 7:41 , Adrian Chadd wrote: >>>>=20 >>>>> Hi! >>>=20 >>> Hello George, >>>=20 >>>> http://people.freebsd.org/~gnn/iwn.diff >>>=20 >>> You don't use correct firmware for your NIC. It's should be a 2000 >> not 2030. >>>>=20 >>>> If y'all can look at that and make comments that would be helpful. >>>>=20 >>>=20 >>> Try to get correct firmware and test it again. >>>=20 >> = (http://wireless.kernel.org/en/users/Drivers/iwlwifi?action=3DAttachFile& >> do=3Dge >>> t&target=3Diwlwifi-2000-ucode-18.168.6.1.tgz) >>>=20 >>> You will need to uncompress it and then uucode firmware, create >> module >>> (sys/modules/iwnfw) and so on. >>=20 >> With the 2000 firmware I get a firmware crash: >>=20 >> Aug 27 10:20:12 punk kernel: iwn0: iwn_intr: fatal firmware error >> Aug 27 10:20:12 punk kernel: firmware error log: >> Aug 27 10:20:12 punk kernel: error type =3D "UNKNOWN" = (0x00000038) >> Aug 27 10:20:13 punk kernel: iwn0: iwn_config: could not configure >> valid TX chains, error 35 >> Aug 27 10:20:13 punk kernel: iwn0: iwn_init_locked: could not = configure >> device, error 35 >=20 > Hum.. I nearly sure is because your NIC don't have BT. >=20 > Set advanced_bt_coexist to false within iwn2000_base_params.=20 > May be it will not run also but iwn cannot skip BT config for the = moment. > If setting parameter to false doesn't change crash, try to comment /* > Configure bluetooth coexistence. */ bloc code in iwn_config.=20 >=20 > I will do a patch for that later. >=20 I had to #if 0 out the code but now something is happening and the fw is = not crashing. I still cannot associate but am tracking that down via debug from = wpa_supplicant. It does look like it tries to do it, but it just fails The AP is an = Apple Extreme. Best, George wpa_driver_bsd_associate: ssid 'XXX' wpa ie len 22 pairwise 3 group 3 = key mgmt 1 wpa_driver_bsd_set_drop_unencrypted: enabled=3D1 wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1 wpa_driver_bsd_associate: set PRIVACY 1 Setting authentication timeout: 10 sec 0 usec EAPOL: External notification - EAP success=3D0 EAPOL: Supplicant port status: Unauthorized EAPOL: External notification - EAP fail=3D0 EAPOL: Supplicant port status: Unauthorized EAPOL: External notification - portControl=3DAuto EAPOL: Supplicant port status: Unauthorized Authentication with c8:bc:c8:ff:43:c5 timed out. BSSID c8:bc:c8:ff:43:c5 blacklist count incremented to 2 No keys have been configured - skip key clearing State: ASSOCIATING -> DISCONNECTED From owner-freebsd-wireless@FreeBSD.ORG Tue Aug 27 22:46:00 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id DA262953 for ; Tue, 27 Aug 2013 22:46:00 +0000 (UTC) (envelope-from gnn@neville-neil.com) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id AB0E4289C for ; Tue, 27 Aug 2013 22:46:00 +0000 (UTC) Received: from ip-64-134-103-239.public.wayport.net ([64.134.103.239]:18618 helo=punk.neville-neil.com) by vps.hungerhost.com with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.80.1) (envelope-from ) id 1VES0M-0000SV-VD for freebsd-wireless@freebsd.org; Tue, 27 Aug 2013 18:44:55 -0400 Message-ID: <521D2BAC.5070604@neville-neil.com> Date: Tue, 27 Aug 2013 18:43:56 -0400 From: George Neville-Neil User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130819 Thunderbird/17.0.8 MIME-Version: 1.0 To: freebsd-wireless@freebsd.org Subject: Re: patch for intel centrino ? References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> <002801cea337$3d0c7b40$b72571c0$@info> <329B55B0-F515-4612-BCF5-1D9A9A47BD77@freebsd.org> In-Reply-To: <329B55B0-F515-4612-BCF5-1D9A9A47BD77@freebsd.org> X-Enigmail-Version: 1.5.1 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - neville-neil.com X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com 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: Tue, 27 Aug 2013 22:46:00 -0000 On 08/27/13 12:11, George Neville-Neil wrote: > > On Aug 27, 2013, at 11:08 , "Cedric GROSS" wrote: > >>> -----Message d'origine----- De : George Neville-Neil >>> [mailto:gnn@freebsd.org] Envoyé : mardi 27 août 2013 16:23 À : >>> Cedric GROSS Cc : freebsd-wireless@freebsd.org; 'Adrian Chadd' >>> Objet : Re: patch for intel centrino ? >>> >>> >>> On Aug 27, 2013, at 5:28 , "Cedric GROSS" >>> wrote: >>> >>>>> De : George Neville-Neil [mailto:gnn@freebsd.org] Envoyé : >>>>> mardi 27 août 2013 03:21 À : Adrian Chadd Cc : Cedric >>>>> GROSS; freebsd-wireless@freebsd.org Objet : Re: patch for >>>>> intel centrino ? >>>>> >>>>> >>>>> On Aug 25, 2013, at 7:41 , Adrian Chadd >>>>> wrote: >>>>> >>>>>> Hi! >>>> >>>> Hello George, >>>> >>>>> http://people.freebsd.org/~gnn/iwn.diff >>>> >>>> You don't use correct firmware for your NIC. It's should be a >>>> 2000 >>> not 2030. >>>>> >>>>> If y'all can look at that and make comments that would be >>>>> helpful. >>>>> >>>> >>>> Try to get correct firmware and test it again. >>>> >>> (http://wireless.kernel.org/en/users/Drivers/iwlwifi?action=AttachFile& >>> >>> do=ge >>>> t&target=iwlwifi-2000-ucode-18.168.6.1.tgz) >>>> >>>> You will need to uncompress it and then uucode firmware, >>>> create >>> module >>>> (sys/modules/iwnfw) and so on. >>> >>> With the 2000 firmware I get a firmware crash: >>> >>> Aug 27 10:20:12 punk kernel: iwn0: iwn_intr: fatal firmware >>> error Aug 27 10:20:12 punk kernel: firmware error log: Aug 27 >>> 10:20:12 punk kernel: error type = "UNKNOWN" (0x00000038) >>> Aug 27 10:20:13 punk kernel: iwn0: iwn_config: could not >>> configure valid TX chains, error 35 Aug 27 10:20:13 punk >>> kernel: iwn0: iwn_init_locked: could not configure device, >>> error 35 >> >> Hum.. I nearly sure is because your NIC don't have BT. >> >> Set advanced_bt_coexist to false within iwn2000_base_params. May >> be it will not run also but iwn cannot skip BT config for the >> moment. If setting parameter to false doesn't change crash, try >> to comment /* Configure bluetooth coexistence. */ bloc code in >> iwn_config. >> >> I will do a patch for that later. >> > > I had to #if 0 out the code but now something is happening and the > fw is not crashing. I still cannot associate but am tracking that > down via debug from wpa_supplicant. It does look like it tries to > do it, but it just fails The AP is an Apple Extreme. > > > Best, George > > wpa_driver_bsd_associate: ssid 'XXX' wpa ie len 22 pairwise 3 group > 3 key mgmt 1 wpa_driver_bsd_set_drop_unencrypted: enabled=1 > wpa_driver_bsd_set_auth_alg alg 0x1 authmode 1 > wpa_driver_bsd_associate: set PRIVACY 1 Setting authentication > timeout: 10 sec 0 usec EAPOL: External notification - EAP > success=0 EAPOL: Supplicant port status: Unauthorized EAPOL: > External notification - EAP fail=0 EAPOL: Supplicant port status: > Unauthorized EAPOL: External notification - portControl=Auto EAPOL: > Supplicant port status: Unauthorized Authentication with > c8:bc:c8:ff:43:c5 timed out. BSSID c8:bc:c8:ff:43:c5 blacklist > count incremented to 2 No keys have been configured - skip key > clearing State: ASSOCIATING -> DISCONNECTED OK, I left work's network to try this out in a Starbucks which has open WiFi and then authenticates with the web. It is working from here. I'll try it next on a network that has WPA-PSK again. It might just be that my MAC was not registered on the work network. Cedric, if you can update your code and also include the proper module for iwnfw2000 that would be good. I can add the module to the tree if others want, but I'm not committing any code as Adrian is working with you on that. Best, George From owner-freebsd-wireless@FreeBSD.ORG Wed Aug 28 01:49:14 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 166A443F for ; Wed, 28 Aug 2013 01:49:14 +0000 (UTC) (envelope-from gnn@neville-neil.com) Received: from vps.hungerhost.com (vps.hungerhost.com [216.38.53.176]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id DC3E6219B for ; Wed, 28 Aug 2013 01:49:13 +0000 (UTC) Received: from [206.217.92.186] (port=28755 helo=[192.168.252.8]) by vps.hungerhost.com with esmtpsa (TLSv1:AES128-SHA:128) (Exim 4.80.1) (envelope-from ) id 1VEUsi-0001Cx-DX for freebsd-wireless@freebsd.org; Tue, 27 Aug 2013 21:49:12 -0400 Content-Type: text/plain; charset=iso-8859-1 Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: patch for intel centrino ? From: George Neville-Neil In-Reply-To: <521D2BAC.5070604@neville-neil.com> Date: Tue, 27 Aug 2013 21:49:15 -0400 Content-Transfer-Encoding: quoted-printable Message-Id: <2AF82B72-0347-41C4-851C-827D698F434B@neville-neil.com> References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> <002801cea337$3d0c7b40$b72571c0$@info> <329B55B0-F515-4612-BCF5-1D9A9A47BD77@freebsd.org> <521D2BAC.5070604@neville-neil.com> To: freebsd-wireless@freebsd.org X-Mailer: Apple Mail (2.1508) X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - vps.hungerhost.com X-AntiAbuse: Original Domain - freebsd.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - neville-neil.com X-Get-Message-Sender-Via: vps.hungerhost.com: authenticated_id: gnn@neville-neil.com 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, 28 Aug 2013 01:49:14 -0000 On Aug 27, 2013, at 18:43 , George Neville-Neil = wrote: > OK, I left work's network to try this out in a Starbucks which has > open WiFi and then authenticates with the web. It is working from > here. I'll try it next on a network that has WPA-PSK again. It might > just be that my MAC was not registered on the work network. >=20 > Cedric, if you can update your code and also include the proper module > for iwnfw2000 that would be good. I can add the module to the tree if > others want, but I'm not committing any code as Adrian is working with > you on that. >=20 Looks like it was MAC filtering that was the problem earlier. This is = now working on a WPA-PSK network. Best, George From owner-freebsd-wireless@FreeBSD.ORG Wed Aug 28 08:21:08 2013 Return-Path: Delivered-To: wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id C0AD1BA3 for ; Wed, 28 Aug 2013 08:21:08 +0000 (UTC) (envelope-from pkugrinas@gmail.com) Received: from mail-ee0-x22a.google.com (mail-ee0-x22a.google.com [IPv6:2a00:1450:4013:c00::22a]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 5A9C024C4 for ; Wed, 28 Aug 2013 08:21:08 +0000 (UTC) Received: by mail-ee0-f42.google.com with SMTP id b45so2774752eek.29 for ; Wed, 28 Aug 2013 01:21:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=MIFDdDXa+WyzhMlQavVqsMn2ZQFJjNRjUFYEg8OVzK4=; b=hkUACMIUYjq6e8iJpZhjgH0lH0oUK9vigLZ0di0k50AJpscKrUiR/hzNBIuV3cNm/1 H390OSsP/E/y91kR41DS4L9JL1/YqTEkGfb3myz+Q+yrfX9MLjyTyBvhW0eXaKp8idI0 /71jZokDOgIrHgkX5pDZbjuyom8oI/qBVNnE9VwcCqMetfypRIPAKw1x0/NicoqE23pE 2gdTZFC4L7L+QsT0jhVrNx9K0uVZQHKCr4wKMRbBJ/HGnziCWwZrudwVPz9NOizH19ia 1CWz63rRKcXKP0QNbyoZDBhDZf9iXDXWD1MeIl4NoefQuXS/fQJumV5CicNuSZ833HRv G3cw== MIME-Version: 1.0 X-Received: by 10.15.48.197 with SMTP id h45mr41863801eew.0.1377678066620; Wed, 28 Aug 2013 01:21:06 -0700 (PDT) Received: by 10.14.91.70 with HTTP; Wed, 28 Aug 2013 01:21:06 -0700 (PDT) Date: Wed, 28 Aug 2013 11:21:06 +0300 Message-ID: Subject: iwi0: timeout waiting for (null) firmware initialization to complete (Intel Pro/Wireless 2200BG) From: Pat To: wireless@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 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, 28 Aug 2013 08:21:08 -0000 Hi, (this is a repost from forums as one of the developers suggested I report this issue here) Freshly installed FreeBSD 9.2-RC3 today on Acer TravelMate 3000, having trouble setting up WiFi. Having read the iwi(4) I have these entries in /boot/loader.conf: if_iwi_load="YES" iwi_bss_load="YES" iwi_ibss_load="YES" iwi_monitor_load="YES" legal.intel_iwi.license_ack="1" kldstat shows that the selected modules have been loaded. However when doing ifconfig iwi0 up scan it yields this: iwi0: timeout waiting for (null) firmware initialization to complete iwi0: could not load boot firmware (null) I've switching radio on/off, no result. No other changes have been made to the system after freshly installing it off the memory stick. Same results with 9.1-RELEASE: root@:/root # ifconfig iwi0 up scan iwi0: timeout waiting for (null) firmware initialization to complete iwi0: could not load boot firmware (null) Driver works just fine on OpenBSD however (judging from the manual it seems to originate from the same code base). From owner-freebsd-wireless@FreeBSD.ORG Wed Aug 28 10:51:26 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id E7270F20 for ; Wed, 28 Aug 2013 10:51:26 +0000 (UTC) (envelope-from cg@cgross.info) Received: from alpha.kreiz-it.fr (alpha.kreiz-it.fr [IPv6:2001:41d0:8:dda6::1]) by mx1.freebsd.org (Postfix) with ESMTP id AB7BC2D7D for ; Wed, 28 Aug 2013 10:51:26 +0000 (UTC) Received: from DirTech (lnr56-1-82-246-51-185.fbx.proxad.net [82.246.51.185]) by alpha.kreiz-it.fr (Postfix) with ESMTPSA id 5B75CEEB; Wed, 28 Aug 2013 12:51:24 +0200 (CEST) From: "Cedric GROSS" To: "'George Neville-Neil'" References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> <002801cea337$3d0c7b40$b72571c0$@info> <329B55B0-F515-4612-BCF5-1D9A9A47BD77@freebsd.org> <521D2BAC.5070604@neville-neil.com> <2AF82B72-0347-41C4-851C-827D698F434B@neville-neil.com> In-Reply-To: <2AF82B72-0347-41C4-851C-827D698F434B@neville-neil.com> Subject: RE: patch for intel centrino ? Date: Wed, 28 Aug 2013 12:51:20 +0200 Message-ID: <002201cea3dc$89cd0350$9d6709f0$@info> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Ac6jkNe2acu3U20HTiaJku11twri/gAS1G7w Content-Language: fr 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, 28 Aug 2013 10:51:27 -0000 > -----Message d'origine----- > De=A0: owner-freebsd-wireless@freebsd.org [mailto:owner-freebsd- > wireless@freebsd.org] De la part de George Neville-Neil > Envoy=E9=A0: mercredi 28 ao=FBt 2013 03:49 > > Cedric, if you can update your code and also include the proper > module > > for iwnfw2000 that would be good. I can add the module to the tree > if > > others want, but I'm not committing any code as Adrian is working > with > > you on that. > > Yep, I will do that within the week. >=20 > Looks like it was MAC filtering that was the problem earlier. This is > now working on a WPA-PSK network. Good news, let us know how thing goes (stability, speed, etc.). >=20 > Best, > George Cheers Cedric From owner-freebsd-wireless@FreeBSD.ORG Wed Aug 28 12:11:57 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 96055C3B for ; Wed, 28 Aug 2013 12:11:57 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qe0-x22d.google.com (mail-qe0-x22d.google.com [IPv6:2607:f8b0:400d:c02::22d]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 51FE5227B for ; Wed, 28 Aug 2013 12:11:57 +0000 (UTC) Received: by mail-qe0-f45.google.com with SMTP id 8so2677038qea.32 for ; Wed, 28 Aug 2013 05:11:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=kswgkmUtWnqlaYSCjedRjlGAA4+q0wwYsK6ri8aX1ek=; b=vdgTG39WwTjLOHOEnIcqcrtOyXB8xyVSnA9koie1o0R0p5qGjaiK6Kb5MZlXBMFAAk 6a1xcLew2jFJ7XYUf9YpKpR1YmzUVbgLVohZaatx2e8rCqy5tkoeKiA6kAnpRg5K6ngy BV4eDIpVbaFbQO9Vovj2wfzykNRVs2QVBI3mfHvsEaKaGZjqO0E1ukEMNfZc2vroiNkb gd+xgUVyD25ssUJJ7NsUARcesA2GF0yRPNIDWHMzLbIAmOrd9vHlIqZMfEfQ4N53fYBf Rg9PhYOESZMZstokVujxDBAotc7xKZpTyS0oWELgsI76XFLErcZdsLaACXtoHYi2eNbQ mszg== MIME-Version: 1.0 X-Received: by 10.229.103.135 with SMTP id k7mr7375960qco.22.1377691916412; Wed, 28 Aug 2013 05:11:56 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Wed, 28 Aug 2013 05:11:56 -0700 (PDT) In-Reply-To: <002201cea3dc$89cd0350$9d6709f0$@info> References: <000601cea157$3fbc8830$bf359890$@info> <404C99D3-8829-40C9-9222-08B3398CF3AA@freebsd.org> <000c01cea307$c5324e30$4f96ea90$@info> <002801cea337$3d0c7b40$b72571c0$@info> <329B55B0-F515-4612-BCF5-1D9A9A47BD77@freebsd.org> <521D2BAC.5070604@neville-neil.com> <2AF82B72-0347-41C4-851C-827D698F434B@neville-neil.com> <002201cea3dc$89cd0350$9d6709f0$@info> Date: Wed, 28 Aug 2013 05:11:56 -0700 X-Google-Sender-Auth: 6FLlM-0GVr7PznHF1zWDZCBoBk8 Message-ID: Subject: Re: patch for intel centrino ? From: Adrian Chadd To: Cedric GROSS Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Content-Filtered-By: Mailman/MimeDel 2.1.14 Cc: George Neville-Neil , "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, 28 Aug 2013 12:11:57 -0000 Sweet, Cedric - can you generate an updated patch now? Including the things you needed to do to get george online? Thanks, -adrian On 28 August 2013 03:51, Cedric GROSS wrote: > > > -----Message d'origine----- > > De : owner-freebsd-wireless@freebsd.org [mailto:owner-freebsd- > > wireless@freebsd.org] De la part de George Neville-Neil > > Envoy=E9 : mercredi 28 ao=FBt 2013 03:49 > > > > > Cedric, if you can update your code and also include the proper > > module > > > for iwnfw2000 that would be good. I can add the module to the tree > > if > > > others want, but I'm not committing any code as Adrian is working > > with > > > you on that. > > > > > Yep, I will do that within the week. > > > > > Looks like it was MAC filtering that was the problem earlier. This is > > now working on a WPA-PSK network. > > Good news, let us know how thing goes (stability, speed, etc.). > > > > > Best, > > George > > Cheers > Cedric > > > _______________________________________________ > freebsd-wireless@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-wireless > To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@freebsd.or= g > " > From owner-freebsd-wireless@FreeBSD.ORG Thu Aug 29 13:59:37 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A1E85912 for ; Thu, 29 Aug 2013 13:59:37 +0000 (UTC) (envelope-from ksramanujan@gmail.com) Received: from mail-la0-x22e.google.com (mail-la0-x22e.google.com [IPv6:2a00:1450:4010:c03::22e]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 2AFA12944 for ; Thu, 29 Aug 2013 13:59:36 +0000 (UTC) Received: by mail-la0-f46.google.com with SMTP id eh20so391400lab.19 for ; Thu, 29 Aug 2013 06:59:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=1KFko6J2kyWB+yxR971/psMXjswYen39COwOkpsiPDo=; b=SVOT0fzkbSAJQASqchx9wtc5tMy8ZthUwVnourIH64REbedKcwys0711WxjovfUH1a 6mLCFlvv5vbvWGfFxWX6bX26MS9kVB7VH4eGL5M6WjOZ13dht8xJ5bwaV0TGhuwtydJC +YU3JWsFKf+Dk6ZN3CmXt4pXTyk3B4CKnD+JXFkStDxYCQxDAJd9ZLfRTxvbg7pl+FM7 HN/F66whQHr1AQOs4A8ZS4MYOyoNTNqmAubeOdb7tPwzzDNidBafHqBZFl8sj29IIRv0 8QX2RfTeUuAD0AQuH8rw+dhGEbf+hL8/Dg64vTyX/fi1u5bndMCdFeWYLoFat41pvjAY 3zfg== MIME-Version: 1.0 X-Received: by 10.152.170.166 with SMTP id an6mr3057333lac.20.1377784774848; Thu, 29 Aug 2013 06:59:34 -0700 (PDT) Received: by 10.112.1.167 with HTTP; Thu, 29 Aug 2013 06:59:34 -0700 (PDT) Date: Thu, 29 Aug 2013 09:59:34 -0400 Message-ID: Subject: Ralink RT2860 rate adaptation From: Ramanujan Seshadri To: freebsd-wireless@freebsd.org Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 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: Thu, 29 Aug 2013 13:59:37 -0000 Hello all, I'm trying to understand the dynamic rate adaptation in the ralink rt2860 driver code. Can i know how the bit-rates are decided dynamically. What algorithm is used ? Thanks ram From owner-freebsd-wireless@FreeBSD.ORG Thu Aug 29 14:01:08 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 032DBA62 for ; Thu, 29 Aug 2013 14:01:08 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qa0-x230.google.com (mail-qa0-x230.google.com [IPv6:2607:f8b0:400d:c00::230]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id BB32D29A0 for ; Thu, 29 Aug 2013 14:01:07 +0000 (UTC) Received: by mail-qa0-f48.google.com with SMTP id hu16so436755qab.14 for ; Thu, 29 Aug 2013 07:01:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:message-id:subject:from:to:content-type; bh=BSuR6j5jJwdnJFzFVU/vu054hdjCzpWBpOU+2yWoLpk=; b=fAKNgqcv7JmJm2DyToFGoabmbqwsSoWpMd8svcjKB8/e3xHXdsdunkxGWMU21U5TXd 6EILe3lOWT9dRO4z5xcX4enhrnYvGOI0I5AdV+pRONPKReNbKaKdLoRYjivqbwTepag0 lAqV14Ck79CxtLnWdnD20qO2dwmVwEvZHCRP+103p18ZdDLlVc4C/nB9p2gKc8XmQFll Yb5bbBE7JsIEemj2wMCjfBVf1q5E+gqg/Y/48d27Vd3KoVMKiNuxLB6rY8Qi1eaBJ2Ev f3w/+t6BMCPkDVFVw6pRszTLz7HpEP25Sbcro1UBXVXZAo8vSMkC5/SuKsXAx/fnpLmS rVKw== MIME-Version: 1.0 X-Received: by 10.224.66.74 with SMTP id m10mr5062510qai.12.1377784866717; Thu, 29 Aug 2013 07:01:06 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Thu, 29 Aug 2013 07:01:06 -0700 (PDT) Date: Thu, 29 Aug 2013 07:01:06 -0700 X-Google-Sender-Auth: Pw92hEF3gbV3aus6ujnKcaIYUVo Message-ID: Subject: [net80211] API change - ieee80211_tx_complete() From: Adrian Chadd To: "freebsd-wireless@freebsd.org" Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.14 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: Thu, 29 Aug 2013 14:01:08 -0000 Hi all, As part of some eventual software transmit path work that I'm slowly chipping away of in -HEAD, I've created a new function call which replaces the following: if (node) { if (m->m_flags & M_TXCB) ieee80211_free_node(ni) } m_freem(m) Now, the _eventual_ path for this is to push all driver 802.11 frame free (in all conditions!) back to the driver via this method so net80211 can handle software queuing, retransmission and aggregation. But to do this, we have to modify all the drivers to call ieee80211_tx_complete() from _outside_ its normal locks. Now, doing that right now (just before 10!) is a bit much to ask so no, I'm not yet going down that path. But I would like to convert the drivers over to call this rather than manually do the above code. I've done ath(4) and iwn(4). If you have another wireless card then please update it to call the new function and post a diff. I'd like to get all of these drivers converted over ASAP so I can start the second part of my net80211 software queue changes. Thanks! -adrian From owner-freebsd-wireless@FreeBSD.ORG Thu Aug 29 14:07:11 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 121F4D76 for ; Thu, 29 Aug 2013 14:07:11 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qe0-x22c.google.com (mail-qe0-x22c.google.com [IPv6:2607:f8b0:400d:c02::22c]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C77532A1F for ; Thu, 29 Aug 2013 14:07:10 +0000 (UTC) Received: by mail-qe0-f44.google.com with SMTP id 5so216941qeb.17 for ; Thu, 29 Aug 2013 07:07:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=+mSemSf6MSx0sRlE4UpzKjksmSxwtqd9ThfJPRBtiWY=; b=VslKNXNyor02Fow3tkP+1DKRqw1sZR/DderSCYOqBlJDfbaHewrHfiIBPNFVf33rOV 8ZMm1HY70FNUGoQfMoE4kHEAoz/qy8bmyLhPDx49EgEGV0ibbtCHkZtsjcGzCIDJsC+H pYW4qOZm7Sul13QsFNH1YrWmN23mgOsiHgbRc8mgVBIcVIl1MMGY2A39pN1ec03txTZ9 Z9Kq8ZsFPFt+bGDNm+Xt+3G6x2EtXDjl500jwN/wmtXQTqPOnCESNoT0xI4HR1c64Qcs 8oUKo2eG9GrL9FANOJRBh0zcaJtTjLXCSBd+q8FMU/HOqy8bQ5mqsV8KTqYoxLzomELV sztg== MIME-Version: 1.0 X-Received: by 10.229.71.132 with SMTP id h4mr4119878qcj.14.1377785229953; Thu, 29 Aug 2013 07:07:09 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Thu, 29 Aug 2013 07:07:09 -0700 (PDT) In-Reply-To: References: Date: Thu, 29 Aug 2013 07:07:09 -0700 X-Google-Sender-Auth: 49sJbEAHxazsgBRgpHHT14wcraE Message-ID: Subject: Re: Ralink RT2860 rate adaptation From: Adrian Chadd To: Ramanujan Seshadri Content-Type: text/plain; charset=ISO-8859-1 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: Thu, 29 Aug 2013 14:07:11 -0000 Hi, It looks like it's using the net80211 rate control code. Look at if_run.c, ieee80211_ratectl_* calls. -adiran On 29 August 2013 06:59, Ramanujan Seshadri wrote: > Hello all, > I'm trying to understand the dynamic rate adaptation in the ralink rt2860 > driver code. Can i know how the bit-rates are decided dynamically. What > algorithm is used ? > > Thanks > ram > _______________________________________________ > freebsd-wireless@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-wireless > To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@freebsd.org > " > From owner-freebsd-wireless@FreeBSD.ORG Thu Aug 29 14:21:00 2013 Return-Path: Delivered-To: wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 23702526 for ; Thu, 29 Aug 2013 14:21:00 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-qa0-x22e.google.com (mail-qa0-x22e.google.com [IPv6:2607:f8b0:400d:c00::22e]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id D83082B7E for ; Thu, 29 Aug 2013 14:20:59 +0000 (UTC) Received: by mail-qa0-f46.google.com with SMTP id i13so2890632qae.12 for ; Thu, 29 Aug 2013 07:20:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=nglqgadvEs6miyKnpG/2eEfM0Cur6A4xbeBdM9Zz2Jw=; b=pAOg7BoCJChZGRDwzOOCqhqIBLTKemnjF1CSI1xQpP/SAzJz2S8Uyo9SkVDF792W9L Hnm7AjOKEXzH/9H9JxjM1FVIXTzg96PxQmSQCmX1HcyfXKwLi4tYDLUrjf/x0DpjFafa aN1CDo4osqP01bGM0Pifptq9Rc2JQfLBDBCwnwbfE2mexcBzC8c/kSVAhiANLvdQkhdg i0HCs/I3f9mJZ380PJwu5GdpkD3+MeuLVkl8oAO80v4uusy+Loay97ukdnjkuGOYqdO2 Q7UJmHP30luJOf5c8CCMwYCwOyFtH1qRxes3tzYPcRvpRDWFKHQHtdyhyvDI5yOW/WHO cDlA== MIME-Version: 1.0 X-Received: by 10.224.42.200 with SMTP id t8mr5158243qae.4.1377786058868; Thu, 29 Aug 2013 07:20:58 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.224.128.70 with HTTP; Thu, 29 Aug 2013 07:20:58 -0700 (PDT) In-Reply-To: References: Date: Thu, 29 Aug 2013 07:20:58 -0700 X-Google-Sender-Auth: bcG3MYPzxoG1Ecz-hFB4HAfKOdE Message-ID: Subject: Re: iwi0: timeout waiting for (null) firmware initialization to complete (Intel Pro/Wireless 2200BG) From: Adrian Chadd To: Pat Content-Type: text/plain; charset=ISO-8859-1 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: Thu, 29 Aug 2013 14:21:00 -0000 That "null" firmware is a bit odd. I unfortunately don't have an iwi NIC to test against, sorry :( -adrian On 28 August 2013 01:21, Pat wrote: > Hi, > > (this is a repost from forums as one of the developers suggested I > report this issue here) > > Freshly installed FreeBSD 9.2-RC3 today on Acer TravelMate 3000, > having trouble setting up WiFi. Having read the iwi(4) I have these > entries in /boot/loader.conf: > > if_iwi_load="YES" > iwi_bss_load="YES" > iwi_ibss_load="YES" > iwi_monitor_load="YES" > legal.intel_iwi.license_ack="1" > > kldstat shows that the selected modules have been loaded. However when > doing ifconfig iwi0 up scan it yields this: > > iwi0: timeout waiting for (null) firmware initialization to complete > iwi0: could not load boot firmware (null) > > I've switching radio on/off, no result. No other changes have been > made to the system after freshly installing it off the memory stick. > > Same results with 9.1-RELEASE: > > root@:/root # ifconfig iwi0 up scan > iwi0: timeout waiting for (null) firmware initialization to complete > iwi0: could not load boot firmware (null) > > Driver works just fine on OpenBSD however (judging from the manual it > seems to originate from the same code base). > _______________________________________________ > freebsd-wireless@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-wireless > To unsubscribe, send any mail to "freebsd-wireless-unsubscribe@freebsd.org > " > From owner-freebsd-wireless@FreeBSD.ORG Sat Aug 31 02:09:34 2013 Return-Path: Delivered-To: freebsd-wireless@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 08E61DD8; Sat, 31 Aug 2013 02:09:34 +0000 (UTC) (envelope-from linimon@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id CFD022E8C; Sat, 31 Aug 2013 02:09:33 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.7/8.14.7) with ESMTP id r7V29XHY090400; Sat, 31 Aug 2013 02:09:33 GMT (envelope-from linimon@freefall.freebsd.org) Received: (from linimon@localhost) by freefall.freebsd.org (8.14.7/8.14.7/Submit) id r7V29XHJ090399; Sat, 31 Aug 2013 02:09:33 GMT (envelope-from linimon) Date: Sat, 31 Aug 2013 02:09:33 GMT Message-Id: <201308310209.r7V29XHJ090399@freefall.freebsd.org> To: linimon@FreeBSD.org, freebsd-bugs@FreeBSD.org, freebsd-wireless@FreeBSD.org From: linimon@FreeBSD.org Subject: Re: kern/181694: [iwn] [patch] Initialize hardware in iwn(4) resume code 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: Sat, 31 Aug 2013 02:09:34 -0000 Old Synopsis: Initialize hardware in iwn(4) resume code New Synopsis: [iwn] [patch] Initialize hardware in iwn(4) resume code Responsible-Changed-From-To: freebsd-bugs->freebsd-wireless Responsible-Changed-By: linimon Responsible-Changed-When: Sat Aug 31 02:08:57 UTC 2013 Responsible-Changed-Why: Over to maintainer(s). http://www.freebsd.org/cgi/query-pr.cgi?pr=181694