From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io0-x232.google.com (mail-io0-x232.google.com [IPv6:2607:f8b0:4001:c06::232]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.bufferbloat.net (Postfix) with ESMTPS id 3CFF73B25E; Wed, 10 Aug 2016 07:28:34 -0400 (EDT) Received: by mail-io0-x232.google.com with SMTP id q83so38417654iod.1; Wed, 10 Aug 2016 04:28:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=kzC/NB7SBdAY7ExVO0hvc0IZGWoPLkK5Oqcd0Slo6c0=; b=EnFMhBXUnDBbvtvRTY6ZfcvdKNke93lkXvTXR20wdmKV933Vpw9UPE7QnFve2M6Pk8 BG9Fnl02NFD1Tc8M5YcI1B0fT6QdX8Bma2BnFPwpkDfWYfG6Rl9PjTX6StWuCIcKcEsy +rmWX3MBsiJXCAeVX+fahOqqwWRgF21VAN1WLNrO39dfkpXhg475LJZJXgNolRJis/HV K6w7bnEaMyC3E0UuuV/9FD0/l7iAPqLYL/AxIcHPsvUaFLemA+zRvSu/BI1c1prRehkc yuimg8XZbLqRLwAwGH5iJvLwt/eTQbRL5ETJWOWzlQ9ekoqDv+VZAF4qZkdNuM8E1Hz3 dGIw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=kzC/NB7SBdAY7ExVO0hvc0IZGWoPLkK5Oqcd0Slo6c0=; b=foVdhgE1neWh5PKEZb3xbtfSIvmOE0Tdr39JWBMGg4NoxS6OwRgBQN6/UyHrojmb7N /5OoRt3UqH0L3Ey5cutMgJxwBHpHpPvSCilNQ3cdq8WwfM6NjPZvxQb6cArNPPX88+si yolYTij4zKdczczwh43SKeHQvi3b0qv0pBYW/kN8cjGkps9Vx5+JjOVEhiazBwtgZw6F Kfv9fqTg53yNLL4a4H6YTAUaqLxYvV/wtKofgsabmO/31BUR8OAW4xQ4Gy2IqQS0bwFR Q4POPp5BLDtQfoXbMiExMK/GZTJKIf9yqfHB2zeqEQfqqfaJNxHj3F8nPUK4tY47EIB0 CwOQ== X-Gm-Message-State: AEkooutifcHrennMZfo3mrsOSH3yhKgJtLCA9gpFVAN0e1Ssl6a0bIQBIT79QxhdoCsJ9veJ399UzUyHfTiIQQ== X-Received: by 10.107.22.198 with SMTP id 189mr5374361iow.0.1470828513702; Wed, 10 Aug 2016 04:28:33 -0700 (PDT) MIME-Version: 1.0 Received: by 10.36.13.200 with HTTP; Wed, 10 Aug 2016 04:28:33 -0700 (PDT) From: Dave Taht Date: Wed, 10 Aug 2016 13:28:33 +0200 Message-ID: To: make-wifi-fast@lists.bufferbloat.net, "cerowrt-devel@lists.bufferbloat.net" , Felix Fietkau , Simon Wunderlich Content-Type: multipart/mixed; boundary=001a1148cbb61684870539b5f3e1 Subject: [Cerowrt-devel] wifi airtime fairness patches could use eyeballs and testing X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Aug 2016 11:28:34 -0000 --001a1148cbb61684870539b5f3e1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Simon's team successfully[1] tested the attached patches on top of felix's lede staging tree on monday against 30 stations. The initial results were lovely, at the rates he tested at. If anyone out there is daring enough to try building these for the wndr3800, wndr3700v2 and nanostation, (or anything else with ath9k in it!) it would be very good to put these through as many other scenarios as possible, notably adhoc and wds need to get looked at - but go forth! blow things up anyway you can! measure! Flent has a rtt_fair_var test if you can get multiple stations going... Virtual beer to you, if you put your build up somewhere. The staging tree: https://git.lede-project.org/?p=3Dlede/nbd/staging.git;a=3Dsummary ---------- Forwarded message ---------- From: Toke H=C3=B8iland-J=C3=B8rgensen Date: Mon, Aug 8, 2016 at 12:49 PM Subject: Re: u alive today? patch To: Dave Taht Cc: Simon Wunderlich Dave Taht writes: > I am hanging with simon today, have lab setup, was hoping to do some patc= hing... These are for LEDE; just dump them in package/kernel/mac80211/patches -Toke --=20 Dave T=C3=A4ht Let's go make home routers and wifi faster! With better software! http://blog.cerowrt.org --001a1148cbb61684870539b5f3e1 Content-Type: text/x-diff; charset=utf-8; name="338-ath9k-Measure-per-station-airtime.patch" Content-Disposition: attachment; filename="338-ath9k-Measure-per-station-airtime.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: a26600c36f10404b_0.1 RnJvbSA5ZWYyNjYzNTdjOThmYWVjZTFiNGI0MDBjZjgzZmQ5YTViYmZjYWZjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogPT9VVEYtOD9xP1Rva2U9MjBIPUMzPUI4aWxhbmQtSj1DMz1C OHJnZW5zZW4/PSA8dG9rZUB0b2tlLmRrPg0KRGF0ZTogV2VkLCAyMiBKdW4gMjAxNiAxMzo0ODox NCArMDIwMA0KU3ViamVjdDogW1BBVENIIDIvM10gYXRoOWs6IE1lYXN1cmUgcGVyLXN0YXRpb24g YWlydGltZQ0KTUlNRS1WZXJzaW9uOiAxLjANCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hh cnNldD1VVEYtOA0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdA0KDQpUaGlzIGFkZHMg aG9va3MgdG8gbWVhc3VyZSB0aGUgYWlydGltZSB1c2VkIGJ5IHN0YXRpb25zIGZvciBUWCBhbmQg UlguDQpUaGUgY3VtdWxhdGl2ZSB0aW1lIGlzIGFjY291bnRlZCBpbiBhIHN0YXRzIHN0cnVjdHVy ZSBhbmQgZXhwb3J0ZWQgaW4NCmRlYnVnZnMuDQoNClVzZXMgdGhlIHRzLT5kdXJhdGlvbiArIHJl dHJ5LWNoYWluIGluZm9ybWF0aW9uIHRvIGFjY291bnQgZm9yIHRpbWUNCnNwZW50IHRyYW5zbWl0 dGluZyB0byBhIHN0YXRpb24uIFRoZSBSWCBhaXJ0aW1lIGlzIG1lYXN1cmVkIGFzIHRoZQ0KZHVy YXRpb24gZnJvbSBmaXJzdCB0byBsYXN0IGZyYW1lIGluIGFuIGFnZ3JlZ2F0ZSwgdXNpbmcgdGhl IHJzX3RzdGFtcA0KZmllbGRzLg0KDQpTaWduZWQtb2ZmLWJ5OiBUb2tlIEjDuGlsYW5kLUrDuHJn ZW5zZW4gPHRva2VAdG9rZS5kaz4NCi0tLQ0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9hdGg5ay5oICAgICB8ICA0ICsrKw0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9k ZWJ1Zy5oICAgICB8IDEzICsrKysrKysNCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv ZGVidWdfc3RhLmMgfCA0NSArKysrKysrKysrKysrKysrKysrKysrKw0KIGRyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKw0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgICAgICB8IDQ2 ICsrKysrKysrKysrKysrKysrKysrKystLQ0KIDUgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvYXRoOWsuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hdGg5 ay5oDQppbmRleCAwODNkOTZiLi41YmNkYzhkIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2F0aDlrLmgNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGg5ay9hdGg5ay5oDQpAQCAtMjU4LDkgKzI1OCwxMSBAQCBzdHJ1Y3QgYXRoX25vZGUgew0KIA0K IAlib29sIHNsZWVwaW5nOw0KIAlib29sIG5vX3BzX2ZpbHRlcjsNCisJdTMyIGFpcnRpbWVfcnhf c3RhcnQ7DQogDQogI2lmZGVmIENQVENGR19BVEg5S19TVEFUSU9OX1NUQVRJU1RJQ1MNCiAJc3Ry dWN0IGF0aF9yeF9yYXRlX3N0YXRzIHJ4X3JhdGVfc3RhdHM7DQorCXN0cnVjdCBhdGhfYWlydGlt ZV9zdGF0cyBhaXJ0aW1lX3N0YXRzOw0KICNlbmRpZg0KIAl1OCBrZXlfaWR4WzRdOw0KIA0KQEAg LTU2MSw2ICs1NjMsOCBAQCB2b2lkIGF0aF90eHFfc2NoZWR1bGVfYWxsKHN0cnVjdCBhdGhfc29m dGMgKnNjKTsNCiBpbnQgYXRoX3R4X2luaXQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIGludCBuYnVm cyk7DQogaW50IGF0aF90eHFfdXBkYXRlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBpbnQgcW51bSwN CiAJCSAgIHN0cnVjdCBhdGg5a190eF9xdWV1ZV9pbmZvICpxKTsNCit1MzIgYXRoX3BrdF9kdXJh dGlvbihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgdTggcml4LCBpbnQgcGt0bGVuLA0KKwkJICAgICBp bnQgd2lkdGgsIGludCBoYWxmX2dpLCBib29sIHNob3J0UHJlYW1ibGUpOw0KIHZvaWQgYXRoX3Vw ZGF0ZV9tYXhfYWdncl9mcmFtZWxlbihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgaW50IHF1ZXVlLCBp bnQgdHhvcCk7DQogdm9pZCBhdGhfYXNzaWduX3NlcShzdHJ1Y3QgYXRoX2NvbW1vbiAqY29tbW9u LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsNCiBpbnQgYXRoX3R4X3N0YXJ0KHN0cnVjdCBpZWVlODAy MTFfaHcgKmh3LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2RlYnVnLmgNCmluZGV4IGEwNzhjZGQuLjg2NTlhOTYgMTAwNjQ0DQotLS0gYS9kcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuaA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL2RlYnVnLmgNCkBAIC0yMjEsNiArMjIxLDExIEBAIHN0cnVjdCBhdGhfcnhf cmF0ZV9zdGF0cyB7DQogCX0gY2NrX3N0YXRzWzRdOw0KIH07DQogDQorc3RydWN0IGF0aF9haXJ0 aW1lX3N0YXRzIHsNCisJdTMyIHJ4X2FpcnRpbWU7DQorCXUzMiB0eF9haXJ0aW1lOw0KK307DQor DQogI2RlZmluZSBBTlRfTUFJTiAwDQogI2RlZmluZSBBTlRfQUxUICAxDQogDQpAQCAtMzE0LDEy ICszMTksMjAgQEAgYXRoOWtfZGVidWdfc3luY19jYXVzZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywg dTMyIHN5bmNfY2F1c2UpDQogdm9pZCBhdGhfZGVidWdfcmF0ZV9zdGF0cyhzdHJ1Y3QgYXRoX3Nv ZnRjICpzYywNCiAJCQkgIHN0cnVjdCBhdGhfcnhfc3RhdHVzICpycywNCiAJCQkgIHN0cnVjdCBz a19idWZmICpza2IpOw0KK3ZvaWQgYXRoX2RlYnVnX2FpcnRpbWUoc3RydWN0IGF0aF9zb2Z0YyAq c2MsDQorCQkgICAgICAgc3RydWN0IGF0aF9ub2RlICphbiwNCisJCSAgICAgICB1MzIgcngsIHUz MiB0eCk7DQogI2Vsc2UNCiBzdGF0aWMgaW5saW5lIHZvaWQgYXRoX2RlYnVnX3JhdGVfc3RhdHMo c3RydWN0IGF0aF9zb2Z0YyAqc2MsDQogCQkJCQlzdHJ1Y3QgYXRoX3J4X3N0YXR1cyAqcnMsDQog CQkJCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KIHsNCiB9DQorc3RhdGljIGlubGluZSB2b2lkIGF0 aF9kZWJ1Z19haXJ0aW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLA0KKwkJCSAgICAgIHN0cnVjdCBh dGhfbm9kZSAqYW4sDQorCQkJICAgICAgdTMyIHJ4LCB1MzIgdHgpDQorew0KK30NCiAjZW5kaWYg LyogQ1BUQ0ZHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUyAqLw0KIA0KICNlbmRpZiAvKiBERUJV R19IICovDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVn X3N0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnX3N0YS5jDQppbmRl eCBkZjIyZTdjLi5kMGQyMTFlIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2RlYnVnX3N0YS5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsv ZGVidWdfc3RhLmMNCkBAIC0yNDIsNiArMjQyLDUwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmls ZV9vcGVyYXRpb25zIGZvcHNfbm9kZV9yZWN2ID0gew0KIAkubGxzZWVrID0gZGVmYXVsdF9sbHNl ZWssDQogfTsNCiANCit2b2lkIGF0aF9kZWJ1Z19haXJ0aW1lKHN0cnVjdCBhdGhfc29mdGMgKnNj LA0KKwkJc3RydWN0IGF0aF9ub2RlICphbiwNCisJCXUzMiByeCwNCisJCXUzMiB0eCkNCit7DQor CXN0cnVjdCBhdGhfYWlydGltZV9zdGF0cyAqYXN0YXRzID0gJmFuLT5haXJ0aW1lX3N0YXRzOw0K Kw0KKwlhc3RhdHMtPnJ4X2FpcnRpbWUgKz0gcng7DQorCWFzdGF0cy0+dHhfYWlydGltZSArPSB0 eDsNCit9DQorDQorc3RhdGljIHNzaXplX3QgcmVhZF9haXJ0aW1lKHN0cnVjdCBmaWxlICpmaWxl LCBjaGFyIF9fdXNlciAqdXNlcl9idWYsDQorCQkJc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3Mp DQorew0KKwlzdHJ1Y3QgYXRoX25vZGUgKmFuID0gZmlsZS0+cHJpdmF0ZV9kYXRhOw0KKwlzdHJ1 Y3QgYXRoX2FpcnRpbWVfc3RhdHMgKmFzdGF0czsNCisJdTMyIGxlbiA9IDAsIHNpemUgPSAxMjg7 DQorCWNoYXIgKmJ1ZjsNCisJc2l6ZV90IHJldHZhbDsNCisNCisJYnVmID0ga3phbGxvYyhzaXpl LCBHRlBfS0VSTkVMKTsNCisJaWYgKGJ1ZiA9PSBOVUxMKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQor DQorCWFzdGF0cyA9ICZhbi0+YWlydGltZV9zdGF0czsNCisNCisJbGVuICs9IHNjbnByaW50Zihi dWYgKyBsZW4sIHNpemUgLSBsZW4sICJSWDogJXUgdXNcbiIsIGFzdGF0cy0+cnhfYWlydGltZSk7 DQorCWxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCAiVFg6ICV1IHVzXG4i LCBhc3RhdHMtPnR4X2FpcnRpbWUpOw0KKw0KKwlyZXR2YWwgPSBzaW1wbGVfcmVhZF9mcm9tX2J1 ZmZlcih1c2VyX2J1ZiwgY291bnQsIHBwb3MsIGJ1ZiwgbGVuKTsNCisJa2ZyZWUoYnVmKTsNCisN CisJcmV0dXJuIHJldHZhbDsNCit9DQorDQorDQorc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgZm9wc19haXJ0aW1lID0gew0KKwkucmVhZCA9IHJlYWRfYWlydGltZSwNCisJLm9w ZW4gPSBzaW1wbGVfb3BlbiwNCisJLm93bmVyID0gVEhJU19NT0RVTEUsDQorCS5sbHNlZWsgPSBk ZWZhdWx0X2xsc2VlaywNCit9Ow0KKw0KKw0KIHZvaWQgYXRoOWtfc3RhX2FkZF9kZWJ1Z2ZzKHN0 cnVjdCBpZWVlODAyMTFfaHcgKmh3LA0KIAkJCSAgIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYs DQogCQkJICAgc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwNCkBAIC0yNTEsNCArMjk1LDUgQEAg dm9pZCBhdGg5a19zdGFfYWRkX2RlYnVnZnMoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsDQogDQog CWRlYnVnZnNfY3JlYXRlX2ZpbGUoIm5vZGVfYWdnciIsIFNfSVJVR08sIGRpciwgYW4sICZmb3Bz X25vZGVfYWdncik7DQogCWRlYnVnZnNfY3JlYXRlX2ZpbGUoIm5vZGVfcmVjdiIsIFNfSVJVR08s IGRpciwgYW4sICZmb3BzX25vZGVfcmVjdik7DQorCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImFpcnRp bWUiLCBTX0lSVUdPLCBkaXIsIGFuLCAmZm9wc19haXJ0aW1lKTsNCiB9DQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JlY3YuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9yZWN2LmMNCmluZGV4IDMyMTYwZmMuLjg3YzNjMGUgMTAwNjQ0DQotLS0g YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jDQorKysgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jDQpAQCAtOTkxLDYgKzk5MSw2MyBAQCBzdGF0aWMg dm9pZCBhdGg5a19hcHBseV9hbXBkdV9kZXRhaWxzKHN0cnVjdCBhdGhfc29mdGMgKnNjLA0KIAl9 DQogfQ0KIA0KK3N0YXRpYyB2b2lkIGF0aF9yeF9jb3VudF9haXJ0aW1lKHN0cnVjdCBhdGhfc29m dGMgKnNjLA0KKwkJCQkgc3RydWN0IGF0aF9yeF9zdGF0dXMgKnJzLA0KKwkJCQkgc3RydWN0IHNr X2J1ZmYgKnNrYikNCit7DQorCXN0cnVjdCBhdGhfbm9kZSAqYW47DQorCXN0cnVjdCBpZWVlODAy MTFfaGRyICpoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikgc2tiLT5kYXRhOw0KKwlzdHJ1 Y3QgYXRoX2h3ICphaCA9IHNjLT5zY19haDsNCisJc3RydWN0IGF0aF9jb21tb24gKmNvbW1vbiA9 IGF0aDlrX2h3X2NvbW1vbihhaCk7DQorCXN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGE7DQorCXN0 cnVjdCBpZWVlODAyMTFfcnhfc3RhdHVzICpyeHM7DQorCWNvbnN0IHN0cnVjdCBpZWVlODAyMTFf cmF0ZSAqcmF0ZTsNCisJYm9vbCBpc19zZ2ksIGlzXzQwLCBpc19zcDsNCisJaW50IHBoeTsNCisJ dTMyIGFpcnRpbWUgPSAwOw0KKw0KKwlpZiAoIWllZWU4MDIxMV9pc19kYXRhKGhkci0+ZnJhbWVf Y29udHJvbCkpDQorCQlyZXR1cm47DQorDQorCXJjdV9yZWFkX2xvY2soKTsNCisNCisJc3RhID0g aWVlZTgwMjExX2ZpbmRfc3RhX2J5X2lmYWRkcihzYy0+aHcsIGhkci0+YWRkcjIsIE5VTEwpOw0K KwlpZiAoIXN0YSkNCisJCWdvdG8gZXhpdDsNCisJYW4gPSAoc3RydWN0IGF0aF9ub2RlICopIHN0 YS0+ZHJ2X3ByaXY7DQorDQorCWlmIChycy0+cnNfaXNhZ2dyICYmIHJzLT5yc19maXJzdGFnZ3Ip IHsNCisJCWFuLT5haXJ0aW1lX3J4X3N0YXJ0ID0gcnMtPnJzX3RzdGFtcDsNCisJfSBlbHNlIGlm IChycy0+cnNfaXNhZ2dyICYmICFycy0+cnNfbW9yZWFnZ3IgJiYgYW4tPmFpcnRpbWVfcnhfc3Rh cnQpIHsNCisJCWFpcnRpbWUgPSBycy0+cnNfdHN0YW1wIC0gYW4tPmFpcnRpbWVfcnhfc3RhcnQ7 DQorCX0gZWxzZSBpZiAoIXJzLT5yc19pc2FnZ3IpIHsNCisJCWFuLT5haXJ0aW1lX3J4X3N0YXJ0 ID0gMDsNCisNCisJCXJ4cyA9IElFRUU4MDIxMV9TS0JfUlhDQihza2IpOw0KKw0KKwkJaXNfc2dp ID0gISEocnhzLT5mbGFnICYgUlhfRkxBR19TSE9SVF9HSSk7DQorCQlpc180MCA9ICEhKHJ4cy0+ ZmxhZyAmIFJYX0ZMQUdfNDBNSFopOw0KKwkJaXNfc3AgPSAhIShyeHMtPmZsYWcgJiBSWF9GTEFH X1NIT1JUUFJFKTsNCisNCisJCWlmICghIShyeHMtPmZsYWcgJiBSWF9GTEFHX0hUKSkgew0KKwkJ CS8qIE1DUyByYXRlcyAqLw0KKw0KKwkJCWFpcnRpbWUgKz0gYXRoX3BrdF9kdXJhdGlvbihzYywg cnhzLT5yYXRlX2lkeCwgcnMtPnJzX2RhdGFsZW4sDQorCQkJCQkJaXNfNDAsIGlzX3NnaSwgaXNf c3ApOw0KKwkJfSBlbHNlIHsNCisNCisJCQlwaHkgPSBJU19DQ0tfUkFURShycy0+cnNfcmF0ZSkg PyBXTEFOX1JDX1BIWV9DQ0sgOiBXTEFOX1JDX1BIWV9PRkRNOw0KKwkJCXJhdGUgPSAmY29tbW9u LT5zYmFuZHNbcnhzLT5iYW5kXS5iaXRyYXRlc1tyeHMtPnJhdGVfaWR4XTsNCisJCQlhaXJ0aW1l ICs9IGF0aDlrX2h3X2NvbXB1dGV0eHRpbWUoYWgsIHBoeSwgcmF0ZS0+Yml0cmF0ZSAqIDEwMCwN CisJCQkJCQkJcnMtPnJzX2RhdGFsZW4sIHJ4cy0+cmF0ZV9pZHgsIGlzX3NwKTsNCisJCX0NCisJ fQ0KKw0KKwlhdGhfZGVidWdfYWlydGltZShzYywgYW4sIGFpcnRpbWUsIDApOw0KK2V4aXQ6DQor CXJjdV9yZWFkX3VubG9jaygpOw0KK30NCisNCiBpbnQgYXRoX3J4X3Rhc2tsZXQoc3RydWN0IGF0 aF9zb2Z0YyAqc2MsIGludCBmbHVzaCwgYm9vbCBocCkNCiB7DQogCXN0cnVjdCBhdGhfcnhidWYg KmJmOw0KQEAgLTExMzcsNiArMTE5NCw3IEBAIGludCBhdGhfcnhfdGFza2xldChzdHJ1Y3QgYXRo X3NvZnRjICpzYywgaW50IGZsdXNoLCBib29sIGhwKQ0KIAkJYXRoOWtfYW50ZW5uYV9jaGVjayhz YywgJnJzKTsNCiAJCWF0aDlrX2FwcGx5X2FtcGR1X2RldGFpbHMoc2MsICZycywgcnhzKTsNCiAJ CWF0aF9kZWJ1Z19yYXRlX3N0YXRzKHNjLCAmcnMsIHNrYik7DQorCQlhdGhfcnhfY291bnRfYWly dGltZShzYywgJnJzLCBza2IpOw0KIA0KIAkJaGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICop c2tiLT5kYXRhOw0KIAkJaWYgKGllZWU4MDIxMV9pc19hY2soaGRyLT5mcmFtZV9jb250cm9sKSkN CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYw0KaW5kZXggYjUwOGE0OS4uYTBkZTg3 MyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMNCisr KyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMNCkBAIC02NzYsNiArNjc2 LDQ2IEBAIHN0YXRpYyBib29sIGJmX2lzX2FtcGR1X25vdF9wcm9iaW5nKHN0cnVjdCBhdGhfYnVm ICpiZikNCiAgICAgcmV0dXJuIGJmX2lzYW1wZHUoYmYpICYmICEoaW5mby0+ZmxhZ3MgJiBJRUVF ODAyMTFfVFhfQ1RMX1JBVEVfQ1RSTF9QUk9CRSk7DQogfQ0KIA0KK3N0YXRpYyB2b2lkIGF0aF90 eF9jb3VudF9haXJ0aW1lKHN0cnVjdCBhdGhfc29mdGMgKnNjLA0KKwkJCQkgc3RydWN0IGF0aF9i dWYgKmJmLA0KKwkJCQkgc3RydWN0IGF0aF90eF9zdGF0dXMgKnRzKQ0KK3sNCisJc3RydWN0IGF0 aF9ub2RlICphbjsNCisJc3RydWN0IHNrX2J1ZmYgKnNrYjsNCisJc3RydWN0IGllZWU4MDIxMV9o ZHIgKmhkcjsNCisJc3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBzYy0+aHc7DQorCXN0cnVjdCBp ZWVlODAyMTFfdHhfcmF0ZSByYXRlc1s0XTsNCisJc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YTsN CisJaW50IGk7DQorCXUzMiBhaXJ0aW1lID0gMDsNCisNCisJc2tiID0gYmYtPmJmX21wZHU7DQor CWlmKCFza2IpDQorCQlyZXR1cm47DQorDQorCWhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAq KXNrYi0+ZGF0YTsNCisJbWVtY3B5KHJhdGVzLCBiZi0+cmF0ZXMsIHNpemVvZihyYXRlcykpOw0K Kw0KKwlyY3VfcmVhZF9sb2NrKCk7DQorDQorCXN0YSA9IGllZWU4MDIxMV9maW5kX3N0YV9ieV9p ZmFkZHIoaHcsIGhkci0+YWRkcjEsIGhkci0+YWRkcjIpOw0KKwlpZighc3RhKQ0KKwkJZ290byBl eGl0Ow0KKw0KKw0KKwlhbiA9IChzdHJ1Y3QgYXRoX25vZGUgKikgc3RhLT5kcnZfcHJpdjsNCisN CisJYWlydGltZSArPSB0cy0+ZHVyYXRpb24gKiAodHMtPnRzX2xvbmdyZXRyeSArIDEpOw0KKw0K Kwlmb3IoaT0wOyBpIDwgdHMtPnRzX3JhdGVpbmRleDsgaSsrKQ0KKwkJYWlydGltZSArPSBhdGg5 a19od19nZXRfZHVyYXRpb24oc2MtPnNjX2FoLCBiZi0+YmZfZGVzYywgaSkgKiByYXRlc1tpXS5j b3VudDsNCisNCisJYXRoX2RlYnVnX2FpcnRpbWUoc2MsIGFuLCAwLCBhaXJ0aW1lKTsNCisNCitl eGl0Og0KKwlyY3VfcmVhZF91bmxvY2soKTsNCit9DQorDQogc3RhdGljIHZvaWQgYXRoX3R4X3By b2Nlc3NfYnVmZmVyKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLA0K IAkJCQkgIHN0cnVjdCBhdGhfdHhfc3RhdHVzICp0cywgc3RydWN0IGF0aF9idWYgKmJmLA0KIAkJ CQkgIHN0cnVjdCBsaXN0X2hlYWQgKmJmX2hlYWQpDQpAQCAtNjkzLDYgKzczMyw3IEBAIHN0YXRp YyB2b2lkIGF0aF90eF9wcm9jZXNzX2J1ZmZlcihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0 IGF0aF90eHEgKnR4cSwNCiANCiAJdHMtPmR1cmF0aW9uID0gYXRoOWtfaHdfZ2V0X2R1cmF0aW9u KHNjLT5zY19haCwgYmYtPmJmX2Rlc2MsDQogCQkJCQkgICAgIHRzLT50c19yYXRlaW5kZXgpOw0K KwlhdGhfdHhfY291bnRfYWlydGltZShzYywgYmYsIHRzKTsNCg0KICAgICAgICBoZHIgPSAoc3Ry dWN0IGllZWU4MDIxMV9oZHIgKikgYmYtPmJmX21wZHUtPmRhdGE7DQogICAgICAgIHN0YSA9IGll ZWU4MDIxMV9maW5kX3N0YV9ieV9pZmFkZHIoaHcsIGhkci0+YWRkcjEsIGhkci0+YWRkcjIpOyAg DQpAQCAtMTA0Miw4ICsxMDg0LDggQEAgZmluaXNoOg0KICAqIHdpZHRoICAtIDAgZm9yIDIwIE1I eiwgMSBmb3IgNDAgTUh6DQogICogaGFsZl9naSAtIHRvIHVzZSA0dXMgdi9zIDMuNiB1cyBmb3Ig c3ltYm9sIHRpbWUNCiAgKi8NCi1zdGF0aWMgdTMyIGF0aF9wa3RfZHVyYXRpb24oc3RydWN0IGF0 aF9zb2Z0YyAqc2MsIHU4IHJpeCwgaW50IHBrdGxlbiwNCi0JCQkgICAgaW50IHdpZHRoLCBpbnQg aGFsZl9naSwgYm9vbCBzaG9ydFByZWFtYmxlKQ0KK3UzMiBhdGhfcGt0X2R1cmF0aW9uKHN0cnVj dCBhdGhfc29mdGMgKnNjLCB1OCByaXgsIGludCBwa3RsZW4sDQorCQkgICAgIGludCB3aWR0aCwg aW50IGhhbGZfZ2ksIGJvb2wgc2hvcnRQcmVhbWJsZSkNCiB7DQogCXUzMiBuYml0cywgbnN5bWJp dHMsIGR1cmF0aW9uLCBuc3ltYm9sczsNCiAJaW50IHN0cmVhbXM7DQotLSANCjIuOS4wDQoNCg== --001a1148cbb61684870539b5f3e1 Content-Type: text/x-diff; charset=US-ASCII; name="340-mac80211-Use-more-standard-codel-and-fq_codel-defaul.patch" Content-Disposition: attachment; filename="340-mac80211-Use-more-standard-codel-and-fq_codel-defaul.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: a26600c36f10404b_0.3 RnJvbSA4MDQ3Mzg2NWUwMTIzYjE5N2RiYjY3NmRjZWRlMjZhMjE5ZDVkNzY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogZGF2ZSB0YWh0IDxkYXZlQHRhaHQubmV0Pg0KRGF0ZTogV2Vk LCAzIEF1ZyAyMDE2IDA4OjIwOjIyIC0wNzAwDQpTdWJqZWN0OiBbUEFUQ0hdIG1hYzgwMjExOiBV c2UgbW9yZSBzdGFuZGFyZCBjb2RlbCBhbmQgZnFfY29kZWwgZGVmYXVsdHMNCg0KSGF2aW5nIHRo ZSBxdWFudHVtIHBhcmFtZXRlciBhdCBhIHNpbmdsZSBwYWNrZXQgc2F2ZXMgNSsgcnVucyB0aHJv dWdoIHRoZQ0KaW5uZXIgbG9vcCBvZiBmcV9jb2RlbCwgYW5kIG1ha2VzIHRoZSBmYXN0L3Nsb3cg Y29uY2VwdCB3b3JrIGZvciBhbGwNCmZsb3dzLg0KDQpUaGUgY29kZWwgdGFyZ2V0IHNob3VsZCBi ZSB0aG91Z2h0IG9mIGFzICJhcmUgeW91IHdpbGxpbmcgdG8gdG9sZXJhdGUNCm1vcmUgdGhhbiBY IGRlbGF5IGZvciBtb3JlIHRoYW4gaW50ZXJ2YWwgWSBtcyIsIGFuZCB0aGUgdGFyZ2V0IHNob3Vs ZA0KYmUgdGhvdWdodCBvZiBhcyBtb3JlIG9mIGEgcGVyY2VudGFnZSBvZiB0aGUgaW50ZXJ2YWws IHdoZXJlIDUlIGlzDQp0aGUgcG9pbnQgb2YgbWF4aW11bSAicG93ZXIiLg0KDQpBZGRpdGlvbmFs bHk6DQoNCkl0IGlzIGJldHRlciB0byByZWR1Y2UgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgdHhv cCB3aGVuIHRoZXJlIGFyZQ0KbWFueSBzdGF0aW9ucyBxdWV1ZWluZyB1cCwgYW5kIHRvIHRyeSB0 byBob2xkIHRoZSBkZWxheSBsb3csIGJ1dA0KdGhpcyBwYXRjaCBkb2Vzbid0IGRvIHRoYXQuDQot LS0NCiBpbmNsdWRlL25ldC9mcV9pbXBsLmggfCAyICstDQogbmV0L21hYzgwMjExL3R4LmMgICAg IHwgMiArLQ0KIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQ0KDQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvZnFfaW1wbC5oIGIvaW5jbHVkZS9uZXQvZnFf aW1wbC5oDQppbmRleCAxNjNmM2VkLi45YWZiMWI2IDEwMDY0NA0KLS0tIGEvaW5jbHVkZS9uZXQv ZnFfaW1wbC5oDQorKysgYi9pbmNsdWRlL25ldC9mcV9pbXBsLmgNCkBAIC0yNDksNyArMjQ5LDcg QEAgc3RhdGljIGludCBmcV9pbml0KHN0cnVjdCBmcSAqZnEsIGludCBmbG93c19jbnQpDQogCXNw aW5fbG9ja19pbml0KCZmcS0+bG9jayk7DQogCWZxLT5mbG93c19jbnQgPSBtYXhfdCh1MzIsIGZs b3dzX2NudCwgMSk7DQogCWZxLT5wZXJ0dXJiYXRpb24gPSBwcmFuZG9tX3UzMigpOw0KLQlmcS0+ cXVhbnR1bSA9IDMwMDsNCisJZnEtPnF1YW50dW0gPSAxNTE0Ow0KIAlmcS0+bGltaXQgPSA4MTky Ow0KIA0KIAlmcS0+Zmxvd3MgPSBrY2FsbG9jKGZxLT5mbG93c19jbnQsIHNpemVvZihmcS0+Zmxv d3NbMF0pLCBHRlBfS0VSTkVMKTsNCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvdHguYyBiL25l dC9tYWM4MDIxMS90eC5jDQppbmRleCA5MTQ2MWM0Li5lYjhiMWM5IDEwMDY0NA0KLS0tIGEvbmV0 L21hYzgwMjExL3R4LmMNCisrKyBiL25ldC9tYWM4MDIxMS90eC5jDQpAQCAtMTQ0Myw3ICsxNDQz LDcgQEAgaW50IGllZWU4MDIxMV90eHFfc2V0dXBfZmxvd3Moc3RydWN0IGllZWU4MDIxMV9sb2Nh bCAqbG9jYWwpDQogCWNvZGVsX3BhcmFtc19pbml0KCZsb2NhbC0+Y3BhcmFtcyk7DQogCWNvZGVs X3N0YXRzX2luaXQoJmxvY2FsLT5jc3RhdHMpOw0KIAlsb2NhbC0+Y3BhcmFtcy5pbnRlcnZhbCA9 IE1TMlRJTUUoMTAwKTsNCi0JbG9jYWwtPmNwYXJhbXMudGFyZ2V0ID0gTVMyVElNRSgyMCk7DQor CWxvY2FsLT5jcGFyYW1zLnRhcmdldCA9IE1TMlRJTUUoNSk7DQogCWxvY2FsLT5jcGFyYW1zLmVj biA9IHRydWU7DQogDQogCWxvY2FsLT5jdmFycyA9IGtjYWxsb2MoZnEtPmZsb3dzX2NudCwgc2l6 ZW9mKGxvY2FsLT5jdmFyc1swXSksDQotLSANCjIuNy40DQoNCg== --001a1148cbb61684870539b5f3e1 Content-Type: application/octet-stream; name="339-ath9k-Add-a-per-station-airtime-deficit-scheduler.patch" Content-Disposition: attachment; filename="339-ath9k-Add-a-per-station-airtime-deficit-scheduler.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_irot5mma2 RnJvbSBjOWQ2N2Q0ZjQxOTA1NTU3ZTRjYWU0NWI4MjBmMzk5NmNkNjE0YmMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogPT9VVEYtOD9xP1Rva2U9MjBIPUMzPUI4aWxhbmQtSj1DMz1C OHJnZW5zZW4/PSA8dG9rZUB0b2tlLmRrPg0KRGF0ZTogV2VkLCAyNSBNYXkgMjAxNiAxMzoxMTox NyArMDIwMA0KU3ViamVjdDogW1BBVENIIDMvM10gYXRoOWs6IEFkZCBhIHBlci1zdGF0aW9uIGFp cnRpbWUgZGVmaWNpdCBzY2hlZHVsZXINCk1JTUUtVmVyc2lvbjogMS4wDQpDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgNCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhi aXQNCg0KVGhpcyBtb2RpZmllcyB0aGUgbG9naWMgaW4gYXRoX3R4cV9zY2hlZHVsZSB0byBhY2Nv dW50IGFpcnRpbWUgY29uc3VtZWQNCmJ5IGVhY2ggc3RhdGlvbiBhbmQgdXNlcyBhIGRlZmljaXQt YmFzZWQgc2NoZWR1bGVyIGRlcml2ZWQgZnJvbSBGUS1Db0RlbA0KdG8gdHJ5IHRvIGVuZm9yY2Ug YWlydGltZSBmYWlybmVzcy4gQSBkZWJ1Z2ZzIGVudHJ5IGNvbnRyb2xzIHdoZXRoZXIgVFgNCmFp cnRpbWUsIFJYIGFpcnRpbWUgb3IgYm90aCBpcyBhY2NvdW50ZWQgdG8gdGhlIGRlZmljaXQgb24g d2hpY2ggdGhlDQpzY2hlZHVsZXIgbWFrZXMgZGVjaXNpb25zLg0KDQpVc2VzIHRoZSB0cy0+ZHVy YXRpb24gKyByZXRyeS1jaGFpbiBpbmZvcm1hdGlvbiB0byBhY2NvdW50IGZvciB0aW1lDQpzcGVu dCB0cmFuc21pdHRpbmcgdG8gYSBzdGF0aW9uLiBUaGUgUlggYWlydGltZSBpcyBtZWFzdXJlZCBh cyB0aGUNCmR1cmF0aW9uIGZyb20gZmlyc3QgdG8gbGFzdCBmcmFtZSBpbiBhbiBhZ2dyZWdhdGUs IHVzaW5nIHRoZSByc190c3RhbXANCmZpZWxkcy4NCg0KU2lnbmVkLW9mZi1ieTogVG9rZSBIw7hp bGFuZC1Kw7hyZ2Vuc2VuIDx0b2tlQHRva2UuZGs+DQotLS0NCiBkcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoOWsvYXRoOWsuaCAgICAgfCAxNiArKysrLQ0KIGRyaXZlcnMvbmV0L3dpcmVsZXNz L2F0aC9hdGg5ay9jaGFubmVsLmMgICB8IDEyICsrLS0NCiBkcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvZGVidWcuYyAgICAgfCAgMyArDQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDlrL2RlYnVnLmggICAgIHwgIDEgKw0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9k ZWJ1Z19zdGEuYyB8ICAyICsNCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaW5pdC5j ICAgICAgfCAgMSArDQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYyAgICAg IHwgIDYgKy0NCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jICAgICAgfCAg MiArDQogZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYyAgICAgIHwgOTkgKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tDQogOSBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRp b25zKCspLCA1MCBkZWxldGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9hdGg5ay5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2F0 aDlrLmgNCmluZGV4IDViY2RjOGQuLmI3NWFiNDkgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvYXRoOWsuaA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDlrL2F0aDlrLmgNCkBAIC0xMTIsNiArMTEyLDggQEAgaW50IGF0aF9kZXNjZG1hX3NldHVw KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX2Rlc2NkbWEgKmRkLA0KICNkZWZpbmUg QVRIX1RYRklGT19ERVBUSCAgICAgICAgICAgOA0KICNkZWZpbmUgQVRIX1RYX0VSUk9SICAgICAg ICAgICAgICAgMHgwMQ0KIA0KKyNkZWZpbmUgQVRIX0FJUlRJTUVfUVVBTlRVTSAgICAgICAgMzAw IC8qIHVzZWMgKi8NCisNCiAvKiBTdG9wIHR4IHRyYWZmaWMgMW1zIGJlZm9yZSB0aGUgR08gZ29l cyBhd2F5ICovDQogI2RlZmluZSBBVEhfUDJQX1BTX1NUT1BfVElNRSAgICAgICAxMDAwDQogDQpA QCAtMjYwLDYgKzI2Miw3IEBAIHN0cnVjdCBhdGhfbm9kZSB7DQogDQogCWJvb2wgc2xlZXBpbmc7 DQogCWJvb2wgbm9fcHNfZmlsdGVyOw0KKwlzNjQgYWlydGltZV9kZWZpY2l0Ow0KIAl1MzIgYWly dGltZV9yeF9zdGFydDsNCiANCiAjaWZkZWYgQ09ORklHX0FUSDlLX1NUQVRJT05fU1RBVElTVElD Uw0KQEAgLTMyMSwxMCArMzI0LDE1IEBAIHN0cnVjdCBhdGhfcnggew0KIC8qIENoYW5uZWwgQ29u dGV4dCAqLw0KIC8qKioqKioqKioqKioqKioqKioqLw0KIA0KK3N0cnVjdCBhdGhfYWNxIHsNCisJ c3RydWN0IGxpc3RfaGVhZCBhY3FfbmV3Ow0KKwlzdHJ1Y3QgbGlzdF9oZWFkIGFjcV9vbGQ7DQor fTsNCisNCiBzdHJ1Y3QgYXRoX2NoYW5jdHggew0KIAlzdHJ1Y3QgY2ZnODAyMTFfY2hhbl9kZWYg Y2hhbmRlZjsNCiAJc3RydWN0IGxpc3RfaGVhZCB2aWZzOw0KLQlzdHJ1Y3QgbGlzdF9oZWFkIGFj cVtJRUVFODAyMTFfTlVNX0FDU107DQorCXN0cnVjdCBhdGhfYWNxIGFjcVtJRUVFODAyMTFfTlVN X0FDU107DQogCWludCBod19xdWV1ZV9iYXNlOw0KIA0KIAkvKiBkbyBub3QgZGVyZWZlcmVuY2Us IHVzZSBmb3IgY29tcGFyaXNvbiBvbmx5ICovDQpAQCAtOTUxLDYgKzk1OSwxMCBAQCB2b2lkIGF0 aF9hbnRfY29tYl9zY2FuKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3J4X3N0YXR1 cyAqcnMpOw0KIA0KICNkZWZpbmUgQVRIOUtfTlVNX0NIQU5DVFggIDIgLyogc3VwcG9ydHMgMiBv cGVyYXRpbmcgY2hhbm5lbHMgKi8NCiANCisjZGVmaW5lIEFJUlRJTUVfVVNFX1RYIEJJVCgwKQ0K KyNkZWZpbmUgQUlSVElNRV9VU0VfUlggQklUKDEpDQorI2RlZmluZSBBSVJUSU1FX0FDVElWRShm bGFncykgKCEhKGZsYWdzICYgKEFJUlRJTUVfVVNFX1RYfEFJUlRJTUVfVVNFX1JYKSkpDQorDQog c3RydWN0IGF0aF9zb2Z0YyB7DQogCXN0cnVjdCBpZWVlODAyMTFfaHcgKmh3Ow0KIAlzdHJ1Y3Qg ZGV2aWNlICpkZXY7DQpAQCAtOTkzLDYgKzEwMDUsOCBAQCBzdHJ1Y3QgYXRoX3NvZnRjIHsNCiAJ c2hvcnQgbmJjbnZpZnM7DQogCXVuc2lnbmVkIGxvbmcgcHNfdXNlY291bnQ7DQogDQorCXUxNiBh aXJ0aW1lX2ZsYWdzOyAvKiBBSVJUSU1FXyogKi8NCisNCiAJc3RydWN0IGF0aF9yeCByeDsNCiAJ c3RydWN0IGF0aF90eCB0eDsNCiAJc3RydWN0IGF0aF9iZWFjb24gYmVhY29uOw0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMgYi9kcml2ZXJzL25l dC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jDQppbmRleCA5MjlkZDcwLi4yNGU1NTc1IDEw MDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYw0KKysr IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYw0KQEAgLTExOCw4ICsx MTgsMTAgQEAgdm9pZCBhdGhfY2hhbmN0eF9pbml0KHN0cnVjdCBhdGhfc29mdGMgKnNjKQ0KIAkJ SU5JVF9MSVNUX0hFQUQoJmN0eC0+dmlmcyk7DQogCQljdHgtPnR4cG93ZXIgPSBBVEhfVFhQT1dF Ul9NQVg7DQogCQljdHgtPmZsdXNoX3RpbWVvdXQgPSBIWiAvIDU7IC8qIDIwMG1zICovDQotCQlm b3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShjdHgtPmFjcSk7IGorKykNCi0JCQlJTklUX0xJU1Rf SEVBRCgmY3R4LT5hY3Fbal0pOw0KKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUoY3R4LT5h Y3EpOyBqKyspIHsNCisJCQlJTklUX0xJU1RfSEVBRCgmY3R4LT5hY3Fbal0uYWNxX25ldyk7DQor CQkJSU5JVF9MSVNUX0hFQUQoJmN0eC0+YWNxW2pdLmFjcV9vbGQpOw0KKwkJfQ0KIAl9DQogfQ0K IA0KQEAgLTEzNDUsOCArMTM0NywxMCBAQCB2b2lkIGF0aDlrX29mZmNoYW5uZWxfaW5pdChzdHJ1 Y3QgYXRoX3NvZnRjICpzYykNCiAJY3R4LT50eHBvd2VyID0gQVRIX1RYUE9XRVJfTUFYOw0KIAlj Zmc4MDIxMV9jaGFuZGVmX2NyZWF0ZSgmY3R4LT5jaGFuZGVmLCBjaGFuLCBOTDgwMjExX0NIQU5f SFQyMCk7DQogDQotCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGN0eC0+YWNxKTsgaSsrKQ0K LQkJSU5JVF9MSVNUX0hFQUQoJmN0eC0+YWNxW2ldKTsNCisJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoY3R4LT5hY3EpOyBpKyspIHsNCisJCUlOSVRfTElTVF9IRUFEKCZjdHgtPmFjcVtpXS5h Y3FfbmV3KTsNCisJCUlOSVRfTElTVF9IRUFEKCZjdHgtPmFjcVtpXS5hY3Ffb2xkKTsNCisJfQ0K IA0KIAlzYy0+b2ZmY2hhbm5lbC5jaGFuLm9mZmNoYW5uZWwgPSB0cnVlOw0KIH0NCmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuYyBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jDQppbmRleCA4OWE5NGRkLi40MzkzMGMzIDEwMDY0 NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmMNCisrKyBiL2Ry aXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5jDQpAQCAtMTM5OSw1ICsxMzk5LDgg QEAgaW50IGF0aDlrX2luaXRfZGVidWcoc3RydWN0IGF0aF9odyAqYWgpDQogCWRlYnVnZnNfY3Jl YXRlX2ZpbGUoInRwYyIsIFNfSVJVU1IgfCBTX0lXVVNSLA0KIAkJCSAgICBzYy0+ZGVidWcuZGVi dWdmc19waHksIHNjLCAmZm9wc190cGMpOw0KIA0KKwlkZWJ1Z2ZzX2NyZWF0ZV91MTYoImFpcnRp bWVfZmxhZ3MiLCBTX0lSVVNSIHwgU19JV1VTUiwNCisJCQkgICBzYy0+ZGVidWcuZGVidWdmc19w aHksICZzYy0+YWlydGltZV9mbGFncyk7DQorDQogCXJldHVybiAwOw0KIH0NCmRpZmYgLS1naXQg YS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvZGVidWcuaCBiL2RyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5oDQppbmRleCA4NjU5YTk2Li5jYzZlMGVhIDEwMDY0NA0K LS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnLmgNCisrKyBiL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Zy5oDQpAQCAtMjI0LDYgKzIyNCw3IEBAIHN0 cnVjdCBhdGhfcnhfcmF0ZV9zdGF0cyB7DQogc3RydWN0IGF0aF9haXJ0aW1lX3N0YXRzIHsNCiAJ dTMyIHJ4X2FpcnRpbWU7DQogCXUzMiB0eF9haXJ0aW1lOw0KKwl1MzIgcXVldWVkX25ldzsNCiB9 Ow0KIA0KICNkZWZpbmUgQU5UX01BSU4gMA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL2F0aC9hdGg5ay9kZWJ1Z19zdGEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5 ay9kZWJ1Z19zdGEuYw0KaW5kZXggZDBkMjExZS4uNzY5YzQxYiAxMDA2NDQNCi0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9kZWJ1Z19zdGEuYw0KKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDlrL2RlYnVnX3N0YS5jDQpAQCAtMjcwLDYgKzI3MCw4IEBAIHN0YXRp YyBzc2l6ZV90IHJlYWRfYWlydGltZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKnVz ZXJfYnVmLA0KIA0KIAlsZW4gKz0gc2NucHJpbnRmKGJ1ZiArIGxlbiwgc2l6ZSAtIGxlbiwgIlJY OiAldSB1c1xuIiwgYXN0YXRzLT5yeF9haXJ0aW1lKTsNCiAJbGVuICs9IHNjbnByaW50ZihidWYg KyBsZW4sIHNpemUgLSBsZW4sICJUWDogJXUgdXNcbiIsIGFzdGF0cy0+dHhfYWlydGltZSk7DQor CWxlbiArPSBzY25wcmludGYoYnVmICsgbGVuLCBzaXplIC0gbGVuLCAiRGVmaWNpdDogJWxsZCB1 c1xuIiwgYW4tPmFpcnRpbWVfZGVmaWNpdCk7DQorCWxlbiArPSBzY25wcmludGYoYnVmICsgbGVu LCBzaXplIC0gbGVuLCAiUXVldWVkIGFzIG5ldzogJXUgdGltZXNcbiIsIGFzdGF0cy0+cXVldWVk X25ldyk7DQogDQogCXJldHZhbCA9IHNpbXBsZV9yZWFkX2Zyb21fYnVmZmVyKHVzZXJfYnVmLCBj b3VudCwgcHBvcywgYnVmLCBsZW4pOw0KIAlrZnJlZShidWYpOw0KZGlmZiAtLWdpdCBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9pbml0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9h dGgvYXRoOWsvaW5pdC5jDQppbmRleCAxOTk4OWUzLi5jZmQ3OTZmIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2luaXQuYw0KKysrIGIvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDlrL2luaXQuYw0KQEAgLTU1OSw2ICs1NTksNyBAQCBzdGF0aWMgaW50IGF0 aDlrX2luaXRfc29mdGModTE2IGRldmlkLCBzdHJ1Y3QgYXRoX3NvZnRjICpzYywNCiANCiAJLyog V2lsbCBiZSBjbGVhcmVkIGluIGF0aDlrX3N0YXJ0KCkgKi8NCiAJc2V0X2JpdChBVEhfT1BfSU5W QUxJRCwgJmNvbW1vbi0+b3BfZmxhZ3MpOw0KKwlzYy0+YWlydGltZV9mbGFncyA9IEFJUlRJTUVf VVNFX1RYIHwgQUlSVElNRV9VU0VfUlg7DQogDQogCXNjLT5zY19haCA9IGFoOw0KIAlzYy0+ZGZz X2RldGVjdG9yID0gZGZzX3BhdHRlcm5fZGV0ZWN0b3JfaW5pdChjb21tb24sIE5MODAyMTFfREZT X1VOU0VUKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvbWFp bi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL21haW4uYw0KaW5kZXggNmFiNTZl NS4uZTEzMDY4YiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9t YWluLmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9tYWluLmMNCkBAIC03 MCwxMCArNzAsMTAgQEAgc3RhdGljIGJvb2wgYXRoOWtfaGFzX3BlbmRpbmdfZnJhbWVzKHN0cnVj dCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLA0KIAkJZ290byBvdXQ7DQogDQog CWlmICh0eHEtPm1hYzgwMjExX3FudW0gPj0gMCkgew0KLQkJc3RydWN0IGxpc3RfaGVhZCAqbGlz dDsNCisJCXN0cnVjdCBhdGhfYWNxICphY3E7DQogDQotCQlsaXN0ID0gJnNjLT5jdXJfY2hhbi0+ YWNxW3R4cS0+bWFjODAyMTFfcW51bV07DQotCQlpZiAoIWxpc3RfZW1wdHkobGlzdCkpDQorCQlh Y3EgPSAmc2MtPmN1cl9jaGFuLT5hY3FbdHhxLT5tYWM4MDIxMV9xbnVtXTsNCisJCWlmICghbGlz dF9lbXB0eSgmYWNxLT5hY3FfbmV3KSB8fCAhbGlzdF9lbXB0eSgmYWNxLT5hY3Ffb2xkKSkNCiAJ CQlwZW5kaW5nID0gdHJ1ZTsNCiAJfQ0KIG91dDoNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoOWsvcmVjdi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlr L3JlY3YuYw0KaW5kZXggODdjM2MwZS4uYTQ4NjY3ZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGg5ay9yZWN2LmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0 aC9hdGg5ay9yZWN2LmMNCkBAIC0xMDQzLDYgKzEwNDMsOCBAQCBzdGF0aWMgdm9pZCBhdGhfcnhf Y291bnRfYWlydGltZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywNCiAJCX0NCiAJfQ0KIA0KKyAJaWYg KCEhKHNjLT5haXJ0aW1lX2ZsYWdzICYgQUlSVElNRV9VU0VfUlgpKQ0KKwkJYW4tPmFpcnRpbWVf ZGVmaWNpdCAtPSBhaXJ0aW1lOw0KIAlhdGhfZGVidWdfYWlydGltZShzYywgYW4sIGFpcnRpbWUs IDApOw0KIGV4aXQ6DQogCXJjdV9yZWFkX3VubG9jaygpOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgv YXRoOWsveG1pdC5jDQppbmRleCBhMGRlODczLi5iYWRmZTczIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxl c3MvYXRoL2F0aDlrL3htaXQuYw0KQEAgLTEwOCwxNiArMTA4LDI2IEBAIHZvaWQgYXRoX3R4cV91 bmxvY2tfY29tcGxldGUoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfdHhxICp0eHEp DQogc3RhdGljIHZvaWQgYXRoX3R4X3F1ZXVlX3RpZChzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3Ry dWN0IGF0aF90eHEgKnR4cSwNCiAJCQkgICAgIHN0cnVjdCBhdGhfYXR4X3RpZCAqdGlkKQ0KIHsN Ci0Jc3RydWN0IGxpc3RfaGVhZCAqbGlzdDsNCiAJc3RydWN0IGF0aF92aWYgKmF2cCA9IChzdHJ1 Y3QgYXRoX3ZpZiAqKSB0aWQtPmFuLT52aWYtPmRydl9wcml2Ow0KIAlzdHJ1Y3QgYXRoX2NoYW5j dHggKmN0eCA9IGF2cC0+Y2hhbmN0eDsNCisJc3RydWN0IGF0aF9hY3EgKmFjcTsNCisJc3RydWN0 IGxpc3RfaGVhZCAqdGlkX2xpc3Q7DQogDQotCWlmICghY3R4KQ0KKwlpZiAoIWN0eCB8fCAhbGlz dF9lbXB0eSgmdGlkLT5saXN0KSkNCiAJCXJldHVybjsNCiANCi0JbGlzdCA9ICZjdHgtPmFjcVtU SURfVE9fV01FX0FDKHRpZC0+dGlkbm8pXTsNCi0JaWYgKGxpc3RfZW1wdHkoJnRpZC0+bGlzdCkp DQotCQlsaXN0X2FkZF90YWlsKCZ0aWQtPmxpc3QsIGxpc3QpOw0KKw0KKwlhY3EgPSAmY3R4LT5h Y3FbVElEX1RPX1dNRV9BQyh0aWQtPnRpZG5vKV07DQorCWlmIChBSVJUSU1FX0FDVElWRShzYy0+ YWlydGltZV9mbGFncykpIHsNCisJCXRpZF9saXN0ID0gJmFjcS0+YWNxX25ldzsNCisjaWZkZWYg Q1BUQ0ZHX0FUSDlLX1NUQVRJT05fU1RBVElTVElDUw0KKwkJdGlkLT5hbi0+YWlydGltZV9zdGF0 cy5xdWV1ZWRfbmV3Kys7DQorI2VuZGlmDQorCX0gZWxzZSB7DQorCQl0aWRfbGlzdCA9ICZhY3Et PmFjcV9vbGQ7DQorCX0NCisNCisJbGlzdF9hZGRfdGFpbCgmdGlkLT5saXN0LCB0aWRfbGlzdCk7 DQogfQ0KIA0KIHZvaWQgYXRoOWtfd2FrZV90eF9xdWV1ZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpo dywgc3RydWN0IGllZWU4MDIxMV90eHEgKnF1ZXVlKQ0KQEAgLTcxMCw2ICs3MTgsOCBAQCBzdGF0 aWMgdm9pZCBhdGhfdHhfY291bnRfYWlydGltZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywNCiAJZm9y KGk9MDsgaSA8IHRzLT50c19yYXRlaW5kZXg7IGkrKykNCiAJCWFpcnRpbWUgKz0gYXRoOWtfaHdf Z2V0X2R1cmF0aW9uKHNjLT5zY19haCwgYmYtPmJmX2Rlc2MsIGkpICogcmF0ZXNbaV0uY291bnQ7 DQogDQorCWlmICghIShzYy0+YWlydGltZV9mbGFncyAmIEFJUlRJTUVfVVNFX1RYKSkNCisJCWFu LT5haXJ0aW1lX2RlZmljaXQgLT0gYWlydGltZTsNCiAJYXRoX2RlYnVnX2FpcnRpbWUoc2MsIGFu LCAwLCBhaXJ0aW1lKTsNCiANCiBleGl0Og0KQEAgLTc0Nyw2ICs3NTcsNyBAQCBzdGF0aWMgdm9p ZCBhdGhfdHhfcHJvY2Vzc19idWZmZXIoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhf dHhxICp0eHEsDQogCX0gZWxzZQ0KIAkJYXRoX3R4X2NvbXBsZXRlX2FnZ3Ioc2MsIHR4cSwgYmYs IGJmX2hlYWQsIHRzLCB0eG9rKTsNCiANCisNCiAJaWYgKCFmbHVzaCkNCiAJCWF0aF90eHFfc2No ZWR1bGUoc2MsIHR4cSk7DQogfQ0KQEAgLTE0ODMsNyArMTQ5NCw3IEBAIGF0aF90eF9mb3JtX2J1 cnN0KHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLA0KIH0NCiANCiBz dGF0aWMgYm9vbCBhdGhfdHhfc2NoZWRfYWdncihzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0 IGF0aF90eHEgKnR4cSwNCi0JCQkgICAgICBzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCwgYm9vbCAq c3RvcCkNCisJCQkgICAgICBzdHJ1Y3QgYXRoX2F0eF90aWQgKnRpZCkNCiB7DQogCXN0cnVjdCBh dGhfYnVmICpiZjsNCiAJc3RydWN0IGllZWU4MDIxMV90eF9pbmZvICp0eF9pbmZvOw0KQEAgLTE1 MDUsNyArMTUxNiw2IEBAIHN0YXRpYyBib29sIGF0aF90eF9zY2hlZF9hZ2dyKHN0cnVjdCBhdGhf c29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxLA0KIAlpZiAoKGFnZ3IgJiYgdHhxLT5heHFf YW1wZHVfZGVwdGggPj0gQVRIX0FHR1JfTUlOX1FERVBUSCkgfHwNCiAJICAgICghYWdnciAmJiB0 eHEtPmF4cV9kZXB0aCA+PSBBVEhfTk9OX0FHR1JfTUlOX1FERVBUSCkpIHsNCiAJCV9fc2tiX3F1 ZXVlX3RhaWwoJnRpZC0+cmV0cnlfcSwgYmYtPmJmX21wZHUpOw0KLQkJKnN0b3AgPSB0cnVlOw0K IAkJcmV0dXJuIGZhbHNlOw0KIAl9DQogDQpAQCAtMTk0Nyw5ICsxOTU3LDEwIEBAIHZvaWQgYXRo X3R4X2NsZWFudXBxKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAqdHhxKQ0K IHZvaWQgYXRoX3R4cV9zY2hlZHVsZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF90 eHEgKnR4cSkNCiB7DQogCXN0cnVjdCBhdGhfY29tbW9uICpjb21tb24gPSBhdGg5a19od19jb21t b24oc2MtPnNjX2FoKTsNCi0Jc3RydWN0IGF0aF9hdHhfdGlkICp0aWQsICpsYXN0X3RpZDsNCisJ c3RydWN0IGF0aF9hdHhfdGlkICp0aWQ7DQogCXN0cnVjdCBsaXN0X2hlYWQgKnRpZF9saXN0Ow0K LQlib29sIHNlbnQgPSBmYWxzZTsNCisJc3RydWN0IGF0aF9hY3EgKmFjcTsNCisJYm9vbCBhY3Rp dmUgPSBBSVJUSU1FX0FDVElWRShzYy0+YWlydGltZV9mbGFncyk7DQogDQogCWlmICh0eHEtPm1h YzgwMjExX3FudW0gPCAwKQ0KIAkJcmV0dXJuOw0KQEAgLTE5NTgsNDggKzE5NjksNTAgQEAgdm9p ZCBhdGhfdHhxX3NjaGVkdWxlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBzdHJ1Y3QgYXRoX3R4cSAq dHhxKQ0KIAkJcmV0dXJuOw0KIA0KIAlzcGluX2xvY2tfYmgoJnNjLT5jaGFuX2xvY2spOw0KLQl0 aWRfbGlzdCA9ICZzYy0+Y3VyX2NoYW4tPmFjcVt0eHEtPm1hYzgwMjExX3FudW1dOw0KKwlhY3Eg PSAmc2MtPmN1cl9jaGFuLT5hY3FbdHhxLT5tYWM4MDIxMV9xbnVtXTsNCiANCi0JaWYgKGxpc3Rf ZW1wdHkodGlkX2xpc3QpKSB7DQotCQlzcGluX3VubG9ja19iaCgmc2MtPmNoYW5fbG9jayk7DQot CQlyZXR1cm47DQotCX0NCisJaWYgKHNjLT5jdXJfY2hhbi0+c3RvcHBlZCkNCisJCWdvdG8gb3V0 Ow0KIA0KIAlyY3VfcmVhZF9sb2NrKCk7DQorYmVnaW46DQorCXRpZF9saXN0ID0gJmFjcS0+YWNx X25ldzsNCisJaWYgKGxpc3RfZW1wdHkodGlkX2xpc3QpKSB7DQorCQl0aWRfbGlzdCA9ICZhY3Et PmFjcV9vbGQ7DQorCQlpZiAobGlzdF9lbXB0eSh0aWRfbGlzdCkpDQorCQkJZ290byBvdXQ7DQor CX0NCisJdGlkID0gbGlzdF9maXJzdF9lbnRyeSh0aWRfbGlzdCwgc3RydWN0IGF0aF9hdHhfdGlk LCBsaXN0KTsNCiANCi0JbGFzdF90aWQgPSBsaXN0X2VudHJ5KHRpZF9saXN0LT5wcmV2LCBzdHJ1 Y3QgYXRoX2F0eF90aWQsIGxpc3QpOw0KLQl3aGlsZSAoIWxpc3RfZW1wdHkodGlkX2xpc3QpKSB7 DQotCQlib29sIHN0b3AgPSBmYWxzZTsNCi0NCi0JCWlmIChzYy0+Y3VyX2NoYW4tPnN0b3BwZWQp DQotCQkJYnJlYWs7DQotDQotCQl0aWQgPSBsaXN0X2ZpcnN0X2VudHJ5KHRpZF9saXN0LCBzdHJ1 Y3QgYXRoX2F0eF90aWQsIGxpc3QpOw0KLQkJbGlzdF9kZWxfaW5pdCgmdGlkLT5saXN0KTsNCi0N Ci0JCWlmIChhdGhfdHhfc2NoZWRfYWdncihzYywgdHhxLCB0aWQsICZzdG9wKSkNCi0JCQlzZW50 ID0gdHJ1ZTsNCi0NCi0JCS8qDQotCQkgKiBhZGQgdGlkIHRvIHJvdW5kLXJvYmluIHF1ZXVlIGlm IG1vcmUgZnJhbWVzDQotCQkgKiBhcmUgcGVuZGluZyBmb3IgdGhlIHRpZA0KLQkJICovDQotCQlp ZiAoYXRoX3RpZF9oYXNfYnVmZmVyZWQodGlkKSkNCi0JCQlhdGhfdHhfcXVldWVfdGlkKHNjLCB0 eHEsIHRpZCk7DQorCWlmIChhY3RpdmUgJiYgdGlkLT5hbi0+YWlydGltZV9kZWZpY2l0IDw9IDAp IHsNCisJCXRpZC0+YW4tPmFpcnRpbWVfZGVmaWNpdCArPSBBVEhfQUlSVElNRV9RVUFOVFVNOw0K KwkJbGlzdF9tb3ZlX3RhaWwoJnRpZC0+bGlzdCwgJmFjcS0+YWNxX29sZCk7DQorCQlnb3RvIGJl Z2luOw0KKwl9DQogDQotCQlpZiAoc3RvcCkNCi0JCQlicmVhazsNCisJaWYgKCFhdGhfdGlkX2hh c19idWZmZXJlZCh0aWQpKSB7DQorCQlpZiAoKHRpZF9saXN0ID09ICZhY3EtPmFjcV9uZXcpICYm ICFsaXN0X2VtcHR5KCZhY3EtPmFjcV9vbGQpKQ0KKwkJCWxpc3RfbW92ZV90YWlsKCZ0aWQtPmxp c3QsICZhY3EtPmFjcV9vbGQpOw0KKwkJZWxzZQ0KKwkJCWxpc3RfZGVsX2luaXQoJnRpZC0+bGlz dCk7DQorCQlnb3RvIGJlZ2luOw0KKwl9DQogDQotCQlpZiAodGlkID09IGxhc3RfdGlkKSB7DQot CQkJaWYgKCFzZW50KQ0KLQkJCQlicmVhazsNCiANCi0JCQlzZW50ID0gZmFsc2U7DQotCQkJbGFz dF90aWQgPSBsaXN0X2VudHJ5KHRpZF9saXN0LT5wcmV2LA0KLQkJCQkJICAgICAgc3RydWN0IGF0 aF9hdHhfdGlkLCBsaXN0KTsNCi0JCX0NCisJLyogSWYgYSBzdGF0aW9uIHN1Y2NlZWRzIGluIHF1 ZXVlaW5nIHNvbWV0aGluZywgaW1tZWRpYXRlbHkgcmVzdGFydCB0aGUNCisJICogbG9vcC4gVGhp cyBtYWtlcyBzdXJlIHRoZSBxdWV1ZXMgYXJlIHNodWZmbGVkIGlmIHRoZSBzdGF0aW9uIG5vdyBo YXMNCisJICogbm8gbW9yZSBwYWNrZXRzIHF1ZXVlZCwgYW5kIGFsc28gZW5zdXJlcyB3ZSBrZWVw IHRoZSBoYXJkd2FyZSBxdWV1ZXMNCisJICogZnVsbC4NCisJICoNCisJICogSWYgd2UgZGVxdWV1 ZWQgZnJvbSBhIG5ldyBxdWV1ZSwgc2h1ZmZsZSB0aGUgcXVldWVzLCB0byBwcmV2ZW50IGl0DQor CSAqIGZyb20gaG9nZ2luZyB0b28gbXVjaCBhaXJ0aW1lLiAqLw0KKwlpZihhdGhfdHhfc2NoZWRf YWdncihzYywgdHhxLCB0aWQpKSB7DQorCQlpZiAoIWFjdGl2ZSB8fCAoKHRpZF9saXN0ID09ICZh Y3EtPmFjcV9uZXcpICYmICFsaXN0X2VtcHR5KCZhY3EtPmFjcV9vbGQpKSkNCisJCQlsaXN0X21v dmVfdGFpbCgmdGlkLT5saXN0LCAmYWNxLT5hY3Ffb2xkKTsNCisJCWdvdG8gYmVnaW47DQogCX0N CiANCitvdXQ6DQogCXJjdV9yZWFkX3VubG9jaygpOw0KIAlzcGluX3VubG9ja19iaCgmc2MtPmNo YW5fbG9jayk7DQogfQ0KQEAgLTI4MzgsNiArMjg1MSw4IEBAIHZvaWQgYXRoX3R4X25vZGVfaW5p dChzdHJ1Y3QgYXRoX3NvZnRjICpzYywgc3RydWN0IGF0aF9ub2RlICphbikNCiAJc3RydWN0IGF0 aF9hdHhfdGlkICp0aWQ7DQogCWludCB0aWRubywgYWNubzsNCiANCisJYW4tPmFpcnRpbWVfZGVm aWNpdCA9IEFUSF9BSVJUSU1FX1FVQU5UVU07DQorDQogCWZvciAodGlkbm8gPSAwOyB0aWRubyA8 IElFRUU4MDIxMV9OVU1fVElEUzsgdGlkbm8rKykgew0KIAkJdGlkID0gQVRIX0FOXzJfVElEKGFu LCB0aWRubyk7DQogCQl0aWQtPmFuICAgICAgICA9IGFuOw0KLS0gDQoyLjkuMA0KDQo= --001a1148cbb61684870539b5f3e1--