From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm0-x236.google.com (mail-wm0-x236.google.com [IPv6:2a00:1450:400c:c09::236]) (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 CF6AE3B2A0 for ; Tue, 15 Nov 2016 13:36:12 -0500 (EST) Received: by mail-wm0-x236.google.com with SMTP id f82so17543911wmf.1 for ; Tue, 15 Nov 2016 10:36:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tieto.com; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=o3ElUf9lFYga0KS0H7E8gp+gqAf4aKUxqizpCCn9E9o=; b=wmfDs62ZvyJNK9N8P3cA+yoylslqFqjBe4aAgNW/s2Z7UCLPSn7JY7dn0B1V2qKsxL ECI33DZT0lyM04UhwWyq/T3ZBALhwUUQGiC+gNlA/WGk7gYEg5eAjm5ith3dWbmjFstL bZ76bYkYS0ZIB3FqeWzBwlEpuNHq0mBohbcR8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=o3ElUf9lFYga0KS0H7E8gp+gqAf4aKUxqizpCCn9E9o=; b=aKyD1AwqzmxtJhGEpRko43/5XP5wF+i1ZIcxviE/m+AOlgyuXnpinsc2q6G4j3+hOm S/p6N3HQaU3qn+mF1fu2e2GQopA0TGmkmZRLVuRjyABVP3pSBi7ualm8bruTiE7/jxDP o5qyRm67mDLTMlog+G09AJr3IwQxNfGDSvZtH2dhoEJyh9TatEAin5bhDLxMGval0r0W gWVpBQLR3a5FuTx7pnoYcvaFP5ZFNkevebyHS9I3B0lOY1+VUYJT7m2E7ZwIa1WZpcYt vFIJprPcsETdPyZE8Qy42cu2Xa+sXje9B0qEfBZTCUXmjnUHz+nBqkgzNbcmYbp8tLfj VHpg== X-Gm-Message-State: ABUngvdTKa/rOhgYvfmtqYra+iiCzxdrHxO0AA4CA8qQPPRf3rdt7TwjerosDJBy62Pw9/c4yj0IRs+wkjKk8DZSFPk4Q4wPzrRFMI6vkve/zeqyd0kqWHs+LO9blWV+f5/0RZLXIF2ZsYN6VLf0ijSe4ppLJe9hOXn7MA== X-Received: by 10.28.35.14 with SMTP id j14mr5202762wmj.24.1479234971825; Tue, 15 Nov 2016 10:36:11 -0800 (PST) MIME-Version: 1.0 Received: by 10.194.112.102 with HTTP; Tue, 15 Nov 2016 10:36:10 -0800 (PST) In-Reply-To: <69119644-7618-0f4a-884a-e01fb1a7edb6@gmail.com> References: <69119644-7618-0f4a-884a-e01fb1a7edb6@gmail.com> From: Michal Kazior Date: Tue, 15 Nov 2016 19:36:10 +0100 Message-ID: To: Noah Causin Cc: make-wifi-fast@lists.bufferbloat.net Content-Type: multipart/mixed; boundary=001a113ead28099dff05415b3bab X-DomainID: tieto.com Subject: Re: [Make-wifi-fast] Experimental ath10k airtime fairness patch? X-BeenThere: make-wifi-fast@lists.bufferbloat.net X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Nov 2016 18:36:13 -0000 --001a113ead28099dff05415b3bab Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 14 November 2016 at 18:06, Noah Causin wrote: > Hi, > > I was wondering if there is an experimental airtime fairness patch for th= e > ath10k on LEDE. > > I have been using Toke's patch for enabling intermediate queue support on > the ath10k, and it has been working well. I did some work on that but didn't finish nor publish it. I just dug around my git repo and found something. I can't remember if it was this exactly what I used in the "100 station" thingy[1][2] or not. Attached. Feel free to play around it if you want. It should provide fairness but will degrade peak performance due to delayed firmware aggregation introducing extra idling latency and the naive design. You'll most likely need to rebase it. [1]: http://imgur.com/a/sSn8V [2]: http://www.linuxplumbersconf.com/2016/ocw//system/presentations/3963/o= riginal/linuxplumbers_wifi_latency-3Nov.pdf page 28, 30 Micha=C5=82 --001a113ead28099dff05415b3bab Content-Type: text/x-diff; charset=US-ASCII; name="0001-ath10k-introduce-per-sta-DQL-and-tx-scheduling.patch" Content-Disposition: attachment; filename="0001-ath10k-introduce-per-sta-DQL-and-tx-scheduling.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ivju2vr60 RnJvbSAxNDg2ZmZiYWZkYjRkZDQzMzIwM2MzNWM2OTRiNzQ0M2ZhNzY5MjEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWwgS2F6aW9yIDxtaWNoYWwua2F6aW9yQHRpZXRvLmNv bT4KRGF0ZTogVGh1LCA1IE1heSAyMDE2IDEzOjQxOjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSF0g YXRoMTBrOiBpbnRyb2R1Y2UgcGVyLXN0YSBEUUwgYW5kIHR4IHNjaGVkdWxpbmcKCldvcmsgaW4g cHJvZ3Jlc3MuCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgS2F6aW9yIDxtaWNoYWwua2F6aW9yQHRp ZXRvLmNvbT4KLS0tCiBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYyAgIHwg IDMgKy0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oICAgfCAgOSArKy0K IGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgfCAyMSArKysrKystCiBk cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF90eC5jIHwgIDkgKystCiBkcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jICAgIHwgOTcgKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdHhyeC5jICAg fCAgOSArKy0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdHhyeC5oICAgfCAgMyAr LQogNyBmaWxlcyBjaGFuZ2VkLCAxMTYgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMgYi9kcml2 ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuYwppbmRleCBlOTRjYjg3MzgwZDIuLjMx ZDM0ODUyNTg2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9j b3JlLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmMKQEAgLTIx MDAsNyArMjEwMCw4IEBAIHN0cnVjdCBhdGgxMGsgKmF0aDEwa19jb3JlX2NyZWF0ZShzaXplX3Qg cHJpdl9zaXplLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCiAJc3Bpbl9sb2NrX2luaXQoJmFyLT5kYXRh X2xvY2spOwogCXNwaW5fbG9ja19pbml0KCZhci0+dHhxc19sb2NrKTsKIAotCUlOSVRfTElTVF9I RUFEKCZhci0+dHhxcyk7CisJSU5JVF9MSVNUX0hFQUQoJmFyLT50eHFzX25ldyk7CisJSU5JVF9M SVNUX0hFQUQoJmFyLT50eHFzX29sZCk7CiAJSU5JVF9MSVNUX0hFQUQoJmFyLT5wZWVycyk7CiAJ aW5pdF93YWl0cXVldWVfaGVhZCgmYXItPnBlZXJfbWFwcGluZ193cSk7CiAJaW5pdF93YWl0cXVl dWVfaGVhZCgmYXItPmh0dC5lbXB0eV90eF93cSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgx MGsvY29yZS5oCmluZGV4IDEzNzkwNTQwMDBmOS4uNjgzZDFkMDUwMTA2IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaAorKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaApAQCAtMzEwLDggKzMxMCwxMyBAQCBzdHJ1Y3QgYXRo MTBrX3BlZXIgewogCiBzdHJ1Y3QgYXRoMTBrX3R4cSB7CiAJc3RydWN0IGxpc3RfaGVhZCBsaXN0 OworCXN0cnVjdCBsaXN0X2hlYWQgY29tcGxldGVkX2xpc3Q7CisJc3RydWN0IGRxbCBkcWw7CisJ a3RpbWVfdCB0eF9zdGFydDsKIAl1bnNpZ25lZCBsb25nIG51bV9md19xdWV1ZWQ7CiAJdW5zaWdu ZWQgbG9uZyBudW1fcHVzaF9hbGxvd2VkOworCXVuc2lnbmVkIGludCBjb21wbGV0ZWQ7IC8qIHBy b3RlY3RlZCBieTogaHR0LT50eF9sb2NrICovCisJczY0IGRlZmljaXQ7CiB9OwogCiBzdHJ1Y3Qg YXRoMTBrX3N0YSB7CkBAIC04MzAsNyArODM1LDkgQEAgc3RydWN0IGF0aDEwayB7CiAJLyogcHJv dGVjdHM6IGFyLT50eHFzLCBhcnR4cS0+bGlzdCAqLwogCXNwaW5sb2NrX3QgdHhxc19sb2NrOwog Ci0Jc3RydWN0IGxpc3RfaGVhZCB0eHFzOworCXN0cnVjdCBhdGgxMGtfdHhxICp0eHE7CisJc3Ry dWN0IGxpc3RfaGVhZCB0eHFzX25ldzsKKwlzdHJ1Y3QgbGlzdF9oZWFkIHR4cXNfb2xkOwogCXN0 cnVjdCBsaXN0X2hlYWQgYXJ2aWZzOwogCXN0cnVjdCBsaXN0X2hlYWQgcGVlcnM7CiAJc3RydWN0 IGF0aDEwa19wZWVyICpwZWVyX21hcFtBVEgxMEtfTUFYX05VTV9QRUVSX0lEU107CmRpZmYgLS1n aXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYwppbmRleCA3NDExYjY5ZmRlNDIuLjgwNmJk YzZkM2ZkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRf cnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jCkBAIC0x NjM1LDcgKzE2MzUsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfaHR0X3J4X3R4X2NvbXBsX2luZChz dHJ1Y3QgYXRoMTBrICphciwKIAkJaWYgKCFrZmlmb19wdXQoJmh0dC0+dHhkb25lX2ZpZm8sIHR4 X2RvbmUpKSB7CiAJCQlhdGgxMGtfd2FybihhciwgInR4ZG9uZSBmaWZvIG92ZXJydW4sIG1zZHVf aWQgJWQgc3RhdHVzICVkXG4iLAogCQkJCSAgICB0eF9kb25lLm1zZHVfaWQsIHR4X2RvbmUuc3Rh dHVzKTsKLQkJCWF0aDEwa190eHJ4X3R4X3VucmVmKGh0dCwgJnR4X2RvbmUpOworCQkJYXRoMTBr X3R4cnhfdHhfdW5yZWYoaHR0LCAmdHhfZG9uZSwgTlVMTCk7CiAJCX0KIAl9CiB9CkBAIC0yMjg1 LDcgKzIyODUsNyBAQCBib29sIGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgx MGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogCQkJYnJlYWs7CiAJCX0KIAotCQlzdGF0dXMg PSBhdGgxMGtfdHhyeF90eF91bnJlZihodHQsICZ0eF9kb25lKTsKKwkJc3RhdHVzID0gYXRoMTBr X3R4cnhfdHhfdW5yZWYoaHR0LCAmdHhfZG9uZSwgTlVMTCk7CiAJCWlmICghc3RhdHVzKSB7CiAJ CQlzcGluX2xvY2tfYmgoJmh0dC0+dHhfbG9jayk7CiAJCQlhdGgxMGtfaHR0X3R4X21nbXRfZGVj X3BlbmRpbmcoaHR0KTsKQEAgLTI0MTAsMTAgKzI0MTAsMTIgQEAgc3RhdGljIHZvaWQgYXRoMTBr X2h0dF90eHJ4X2NvbXBsX3Rhc2sodW5zaWduZWQgbG9uZyBwdHIpCiB7CiAJc3RydWN0IGF0aDEw a19odHQgKmh0dCA9IChzdHJ1Y3QgYXRoMTBrX2h0dCAqKXB0cjsKIAlzdHJ1Y3QgYXRoMTBrICph ciA9IGh0dC0+YXI7CisJc3RydWN0IGF0aDEwa190eHEgKmFydHhxOwogCXN0cnVjdCBodHRfdHhf ZG9uZSB0eF9kb25lID0ge307CiAJc3RydWN0IHNrX2J1ZmZfaGVhZCByeF9pbmRfcTsKIAlzdHJ1 Y3Qgc2tfYnVmZl9oZWFkIHR4X2luZF9xOwogCXN0cnVjdCBza19idWZmICpza2I7CisJc3RydWN0 IGxpc3RfaGVhZCBjb21wbGV0ZWRfbGlzdDsKIAl1bnNpZ25lZCBsb25nIGZsYWdzOwogCWludCBu dW1fbXBkdXM7CiAKQEAgLTI0MjgsMTMgKzI0MzAsMjYgQEAgc3RhdGljIHZvaWQgYXRoMTBrX2h0 dF90eHJ4X2NvbXBsX3Rhc2sodW5zaWduZWQgbG9uZyBwdHIpCiAJc2tiX3F1ZXVlX3NwbGljZV9p bml0KCZodHQtPnR4X2ZldGNoX2luZF9xLCAmdHhfaW5kX3EpOwogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmh0dC0+dHhfZmV0Y2hfaW5kX3EubG9jaywgZmxhZ3MpOwogCisJSU5JVF9MSVNUX0hF QUQoJmNvbXBsZXRlZF9saXN0KTsKKwogCS8qIGtmaWZvX2dldDogY2FsbGVkIG9ubHkgd2l0aGlu IHR4cnhfdGFza2xldCBzbyBpdCdzIG5lYXRseSBzZXJpYWxpemVkLgogCSAqIEZyb20ga2ZpZm9f Z2V0KCkgZG9jdW1lbnRhdGlvbjoKIAkgKiAgTm90ZSB0aGF0IHdpdGggb25seSBvbmUgY29uY3Vy cmVudCByZWFkZXIgYW5kIG9uZSBjb25jdXJyZW50IHdyaXRlciwKIAkgKiAgeW91IGRvbid0IG5l ZWQgZXh0cmEgbG9ja2luZyB0byB1c2UgdGhlc2UgbWFjcm8uCiAJICovCiAJd2hpbGUgKGtmaWZv X2dldCgmaHR0LT50eGRvbmVfZmlmbywgJnR4X2RvbmUpKQotCQlhdGgxMGtfdHhyeF90eF91bnJl ZihodHQsICZ0eF9kb25lKTsKKwkJYXRoMTBrX3R4cnhfdHhfdW5yZWYoaHR0LCAmdHhfZG9uZSwg JmNvbXBsZXRlZF9saXN0KTsKKworCXdoaWxlICghbGlzdF9lbXB0eSgmY29tcGxldGVkX2xpc3Qp KSB7CisJCWFydHhxID0gbGlzdF9maXJzdF9lbnRyeSgmY29tcGxldGVkX2xpc3QsIHN0cnVjdCBh dGgxMGtfdHhxLAorCQkJCQkgY29tcGxldGVkX2xpc3QpOworCQlsaXN0X2RlbF9pbml0KCZhcnR4 cS0+Y29tcGxldGVkX2xpc3QpOworCisJCXNwaW5fbG9ja19iaCgmaHR0LT50eF9sb2NrKTsKKwkJ ZHFsX2NvbXBsZXRlZCgmYXJ0eHEtPmRxbCwgYXJ0eHEtPmNvbXBsZXRlZCk7CisJCWFydHhxLT5j b21wbGV0ZWQgPSAwOworCQlzcGluX3VubG9ja19iaCgmaHR0LT50eF9sb2NrKTsKKwl9CiAKIAl3 aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJnR4X2luZF9xKSkpIHsKIAkJYXRoMTBrX2h0dF9y eF90eF9mZXRjaF9pbmQoYXIsIHNrYik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTBrL2h0dF90eC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9o dHRfdHguYwppbmRleCA2MjY5YzYxMGIwYTMuLjY2OGYwM2U3ZDkxNCAxMDA2NDQKLS0tIGEvZHJp dmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfdHguYworKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF90eC5jCkBAIC0zNzksNyArMzc5LDcgQEAgc3RhdGljIGlu dCBhdGgxMGtfaHR0X3R4X2NsZWFuX3VwX3BlbmRpbmcoaW50IG1zZHVfaWQsIHZvaWQgKnNrYiwg dm9pZCAqY3R4KQogCXR4X2RvbmUubXNkdV9pZCA9IG1zZHVfaWQ7CiAJdHhfZG9uZS5zdGF0dXMg PSBIVFRfVFhfQ09NUExfU1RBVEVfRElTQ0FSRDsKIAotCWF0aDEwa190eHJ4X3R4X3VucmVmKGh0 dCwgJnR4X2RvbmUpOworCWF0aDEwa190eHJ4X3R4X3VucmVmKGh0dCwgJnR4X2RvbmUsIE5VTEwp OwogCiAJcmV0dXJuIDA7CiB9CkBAIC04NDEsMTIgKzg0MSwxNCBAQCBpbnQgYXRoMTBrX2h0dF90 eChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LCBlbnVtIGF0aDEwa19od190eHJ4X21vZGUgdHhtb2Rl LAogCXN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKilt c2R1LT5kYXRhOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbyA9IElFRUU4MDIxMV9T S0JfQ0IobXNkdSk7CiAJc3RydWN0IGF0aDEwa19za2JfY2IgKnNrYl9jYiA9IEFUSDEwS19TS0Jf Q0IobXNkdSk7CisJc3RydWN0IGF0aDEwa190eHEgKmFydHhxID0gKHZvaWQgKilza2JfY2ItPnR4 cS0+ZHJ2X3ByaXY7CiAJc3RydWN0IGF0aDEwa19oaWZfc2dfaXRlbSBzZ19pdGVtc1syXTsKIAlz dHJ1Y3QgYXRoMTBrX2h0dF90eGJ1ZiAqdHhidWY7CiAJc3RydWN0IGh0dF9kYXRhX3R4X2Rlc2Nf ZnJhZyAqZnJhZ3M7CiAJYm9vbCBpc19ldGggPSAodHhtb2RlID09IEFUSDEwS19IV19UWFJYX0VU SEVSTkVUKTsKIAl1OCB2ZGV2X2lkID0gYXRoMTBrX2h0dF90eF9nZXRfdmRldl9pZChhciwgbXNk dSk7CiAJdTggdGlkID0gYXRoMTBrX2h0dF90eF9nZXRfdGlkKG1zZHUsIGlzX2V0aCk7CisJc2l6 ZV90IG1zZHVfbGVuOwogCWludCBwcmVmZXRjaF9sZW47CiAJaW50IHJlczsKIAl1OCBmbGFnczAg PSAwOwpAQCAtMTAxNSwxMiArMTAxNywxNyBAQCBpbnQgYXRoMTBrX2h0dF90eChzdHJ1Y3QgYXRo MTBrX2h0dCAqaHR0LCBlbnVtIGF0aDEwa19od190eHJ4X21vZGUgdHhtb2RlLAogCXNnX2l0ZW1z WzFdLnBhZGRyID0gc2tiX2NiLT5wYWRkcjsKIAlzZ19pdGVtc1sxXS5sZW4gPSBwcmVmZXRjaF9s ZW47CiAKKwltc2R1X2xlbiA9IG1zZHUtPmxlbjsKKwogCXJlcyA9IGF0aDEwa19oaWZfdHhfc2co aHR0LT5hciwKIAkJCSAgICAgICBodHQtPmFyLT5odGMuZW5kcG9pbnRbaHR0LT5laWRdLnVsX3Bp cGVfaWQsCiAJCQkgICAgICAgc2dfaXRlbXMsIEFSUkFZX1NJWkUoc2dfaXRlbXMpKTsKIAlpZiAo cmVzKQogCQlnb3RvIGVycl91bm1hcF9tc2R1OwogCisJaWYgKHNrYl9jYi0+dHhxKQorCQlkcWxf cXVldWVkKCZhcnR4cS0+ZHFsLCBtc2R1X2xlbik7CisKIAlyZXR1cm4gMDsKIAogZXJyX3VubWFw X21zZHU6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5j IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYwppbmRleCAxYmFlNTQ3YTk2 MTYuLjcwOGM2M2UzZmQ2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0 aDEway9tYWMuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jCkBA IC0zNjUyLDYgKzM2NTIsOCBAQCBzdGF0aWMgdm9pZCBhdGgxMGtfbWFjX3R4cV9pbml0KHN0cnVj dCBpZWVlODAyMTFfdHhxICp0eHEpCiAJCXJldHVybjsKIAogCUlOSVRfTElTVF9IRUFEKCZhcnR4 cS0+bGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJmFydHhxLT5jb21wbGV0ZWRfbGlzdCk7CisJZHFs X2luaXQoJmFydHhxLT5kcWwsIEhaKTsKIH0KIAogc3RhdGljIHZvaWQgYXRoMTBrX21hY190eHFf dW5yZWYoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBpZWVlODAyMTFfdHhxICp0eHEpCkBAIC0z Nzc2LDQwICszNzc4LDgxIEBAIHZvaWQgYXRoMTBrX21hY190eF9wdXNoX3BlbmRpbmcoc3RydWN0 IGF0aDEwayAqYXIpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9odyAqaHcgPSBhci0+aHc7CiAJc3Ry dWN0IGllZWU4MDIxMV90eHEgKnR4cTsKKwlzdHJ1Y3QgbGlzdF9oZWFkICpsaXN0OwogCXN0cnVj dCBhdGgxMGtfdHhxICphcnR4cTsKLQlzdHJ1Y3QgYXRoMTBrX3R4cSAqbGFzdDsKKwlrdGltZV90 IG5vdzsKKwl1NjQgc2VudDsKKwlzNjQgZGVsdGE7CiAJaW50IHJldDsKLQlpbnQgbWF4OwotCi0J aWYgKGFyLT5odHQubnVtX3BlbmRpbmdfdHggPj0gKGFyLT5odHQubWF4X251bV9wZW5kaW5nX3R4 IC8gMikpCi0JCXJldHVybjsKIAogCXNwaW5fbG9ja19iaCgmYXItPnR4cXNfbG9jayk7CiAJcmN1 X3JlYWRfbG9jaygpOwogCi0JbGFzdCA9IGxpc3RfbGFzdF9lbnRyeSgmYXItPnR4cXMsIHN0cnVj dCBhdGgxMGtfdHhxLCBsaXN0KTsKLQl3aGlsZSAoIWxpc3RfZW1wdHkoJmFyLT50eHFzKSkgewot CQlhcnR4cSA9IGxpc3RfZmlyc3RfZW50cnkoJmFyLT50eHFzLCBzdHJ1Y3QgYXRoMTBrX3R4cSwg bGlzdCk7Ci0JCXR4cSA9IGNvbnRhaW5lcl9vZigodm9pZCAqKWFydHhxLCBzdHJ1Y3QgaWVlZTgw MjExX3R4cSwKLQkJCQkgICBkcnZfcHJpdik7Ci0KLQkJLyogUHJldmVudCBhZ2dyZXNzaXZlIHN0 YS90aWQgdGFraW5nIG92ZXIgdHggcXVldWUgKi8KLQkJbWF4ID0gMTY7Ci0JCXJldCA9IDA7Ci0J CXdoaWxlIChhdGgxMGtfbWFjX3R4X2Nhbl9wdXNoKGh3LCB0eHEpICYmIG1heC0tKSB7Ci0JCQly ZXQgPSBhdGgxMGtfbWFjX3R4X3B1c2hfdHhxKGh3LCB0eHEpOwotCQkJaWYgKHJldCA8IDApCisJ Zm9yICg7OykgeworCQlsaXN0ID0gJmFyLT50eHFzX25ldzsKKwkJaWYgKGxpc3RfZW1wdHkobGlz dCkpIHsKKwkJCWxpc3QgPSAmYXItPnR4cXNfb2xkOworCQkJaWYgKGxpc3RfZW1wdHkobGlzdCkp CiAJCQkJYnJlYWs7CiAJCX0KIAotCQlsaXN0X2RlbF9pbml0KCZhcnR4cS0+bGlzdCk7Ci0JCWlm IChyZXQgIT0gLUVOT0VOVCkKLQkJCWxpc3RfYWRkX3RhaWwoJmFydHhxLT5saXN0LCAmYXItPnR4 cXMpOwotCi0JCWF0aDEwa19odHRfdHhfdHhxX3VwZGF0ZShodywgdHhxKTsKLQotCQlpZiAoYXJ0 eHEgPT0gbGFzdCB8fCAocmV0IDwgMCAmJiByZXQgIT0gLUVOT0VOVCkpCisJCWFydHhxID0gbGlz dF9maXJzdF9lbnRyeV9vcl9udWxsKGxpc3QsIHN0cnVjdCBhdGgxMGtfdHhxLCBsaXN0KTsKKwkJ aWYgKCFhcnR4cSkKIAkJCWJyZWFrOworCisJCWlmIChhcnR4cS0+ZGVmaWNpdCA8PSAwKSB7CisJ CQlhcnR4cS0+ZGVmaWNpdCArPSAzMDA7CisJCQlsaXN0X21vdmVfdGFpbCgmYXJ0eHEtPmxpc3Qs ICZhci0+dHhxc19vbGQpOworCQkJY29udGludWU7CisJCX0KKworCQlpZiAoYXItPnR4cSkKKwkJ CWFydHhxID0gYXItPnR4cTsKKworCQl0eHEgPSBjb250YWluZXJfb2YoKHZvaWQgKilhcnR4cSwg c3RydWN0IGllZWU4MDIxMV90eHEsIGRydl9wcml2KTsKKwkJcmV0ID0gMDsKKwkJc2VudCA9IDA7 CisKKwkJaWYgKGFyLT50eHEgIT0gYXJ0eHEpIHsKKwkJCWFydHhxLT50eF9zdGFydCA9IGt0aW1l X2dldF9yYXcoKTsKKworCQkJZm9yICg7OykgeworCQkJCWlmIChkcWxfYXZhaWwoJmFydHhxLT5k cWwpIDwgMCkKKwkJCQkJYnJlYWs7CisKKwkJCQlpZiAoIWF0aDEwa19tYWNfdHhfY2FuX3B1c2go aHcsIHR4cSkpCisJCQkJCWJyZWFrOworCisJCQkJcmV0ID0gYXRoMTBrX21hY190eF9wdXNoX3R4 cShodywgdHhxKTsKKwkJCQlpZiAocmV0IDwgMCkKKwkJCQkJYnJlYWs7CisKKwkJCQlzZW50ICs9 IHJldDsKKwkJCX0KKworCQkJYXRoMTBrX2h0dF90eF90eHFfdXBkYXRlKGh3LCB0eHEpOworCisJ CQlpZiAocmV0ID09IC1FTk9FTlQgJiYgIXNlbnQpIHsKKwkJCQlsaXN0X2RlbF9pbml0KCZhcnR4 cS0+bGlzdCk7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCWFyLT50eHEgPSBhcnR4cTsKKwkJ fQorCisJCWlmIChhcnR4cS0+bnVtX2Z3X3F1ZXVlZCA9PSAwKSB7CisJCQlub3cgPSBrdGltZV9n ZXRfcmF3KCk7CisJCQlkZWx0YSA9IGt0aW1lX3VzX2RlbHRhKG5vdywgYXJ0eHEtPnR4X3N0YXJ0 KTsKKwkJCWFydHhxLT50eF9zdGFydCA9IG5vdzsKKwkJCWFydHhxLT5kZWZpY2l0IC09IGRlbHRh OworCQkJYXItPnR4cSA9IE5VTEw7CisJCQlwcmludGsoInR4cSAlcE0gZGVsdGEgJWxsdSB1c2Vj XG4iLAorCQkJCQl0eHEtPnN0YSA/IHR4cS0+c3RhLT5hZGRyIDogdHhxLT52aWYtPmFkZHIsCisJ CQkJCWRlbHRhKTsKKwkJfQorCisJCWxpc3RfbW92ZV90YWlsKCZhcnR4cS0+bGlzdCwgJmFyLT50 eHFzX29sZCk7CisJCWJyZWFrOwogCX0KIAogCXJjdV9yZWFkX3VubG9jaygpOwpAQCAtNDA1MCw4 ICs0MDkzLDEwIEBAIHN0YXRpYyB2b2lkIGF0aDEwa19tYWNfb3Bfd2FrZV90eF9xdWV1ZShzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpodywKIAlzdHJ1Y3QgYXRoMTBrX3R4cSAqYXJ0eHEgPSAodm9pZCAq KXR4cS0+ZHJ2X3ByaXY7CiAKIAlzcGluX2xvY2tfYmgoJmFyLT50eHFzX2xvY2spOwotCWlmIChs aXN0X2VtcHR5KCZhcnR4cS0+bGlzdCkpCi0JCWxpc3RfYWRkX3RhaWwoJmFydHhxLT5saXN0LCAm YXItPnR4cXMpOworCWlmIChsaXN0X2VtcHR5KCZhcnR4cS0+bGlzdCkpIHsKKwkJbGlzdF9hZGRf dGFpbCgmYXJ0eHEtPmxpc3QsICZhci0+dHhxc19uZXcpOworCQlhcnR4cS0+ZGVmaWNpdCA9IDMw MDsKKwl9CiAJc3Bpbl91bmxvY2tfYmgoJmFyLT50eHFzX2xvY2spOwogCiAJYXRoMTBrX21hY190 eF9wdXNoX3BlbmRpbmcoYXIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDEway90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3R4cnguYwpp bmRleCAxOTY2Yzc4Nzk5OGIuLjc0NjY0NGIyNDgzZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvYXRoL2F0aDEway90eHJ4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRo L2F0aDEway90eHJ4LmMKQEAgLTUwLDcgKzUwLDggQEAgc3RhdGljIHZvaWQgYXRoMTBrX3JlcG9y dF9vZmZjaGFuX3R4KHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQogfQog CiBpbnQgYXRoMTBrX3R4cnhfdHhfdW5yZWYoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKLQkJCSBj b25zdCBzdHJ1Y3QgaHR0X3R4X2RvbmUgKnR4X2RvbmUpCisJCQkgY29uc3Qgc3RydWN0IGh0dF90 eF9kb25lICp0eF9kb25lLAorCQkJIHN0cnVjdCBsaXN0X2hlYWQgKmNvbXBsZXRlZF9saXN0KQog ewogCXN0cnVjdCBhdGgxMGsgKmFyID0gaHR0LT5hcjsKIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBh ci0+ZGV2OwpAQCAtODMsOCArODQsMTIgQEAgaW50IGF0aDEwa190eHJ4X3R4X3VucmVmKHN0cnVj dCBhdGgxMGtfaHR0ICpodHQsCiAJdHhxID0gc2tiX2NiLT50eHE7CiAJYXJ0eHEgPSAodm9pZCAq KXR4cS0+ZHJ2X3ByaXY7CiAKLQlpZiAodHhxKQorCWlmICh0eHEpIHsKIAkJYXJ0eHEtPm51bV9m d19xdWV1ZWQtLTsKKwkJYXJ0eHEtPmNvbXBsZXRlZCArPSBtc2R1LT5sZW47CisJCWlmIChjb21w bGV0ZWRfbGlzdCAmJiBsaXN0X2VtcHR5KCZhcnR4cS0+Y29tcGxldGVkX2xpc3QpKQorCQkJbGlz dF9hZGRfdGFpbCgmYXJ0eHEtPmNvbXBsZXRlZF9saXN0LCBjb21wbGV0ZWRfbGlzdCk7CisJfQog CiAJYXRoMTBrX2h0dF90eF9mcmVlX21zZHVfaWQoaHR0LCB0eF9kb25lLT5tc2R1X2lkKTsKIAlh dGgxMGtfaHR0X3R4X2RlY19wZW5kaW5nKGh0dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL3R4cnguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgx MGsvdHhyeC5oCmluZGV4IGU3ZWExYWUxYzQzOC4uMGZlNWU2ZmNmN2U1IDEwMDY0NAotLS0gYS9k cml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3R4cnguaAorKysgYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTBrL3R4cnguaApAQCAtMjAsNyArMjAsOCBAQAogI2luY2x1ZGUgImh0 dC5oIgogCiBpbnQgYXRoMTBrX3R4cnhfdHhfdW5yZWYoc3RydWN0IGF0aDEwa19odHQgKmh0dCwK LQkJCSBjb25zdCBzdHJ1Y3QgaHR0X3R4X2RvbmUgKnR4X2RvbmUpOworCQkJIGNvbnN0IHN0cnVj dCBodHRfdHhfZG9uZSAqdHhfZG9uZSwKKwkJCSBzdHJ1Y3QgbGlzdF9oZWFkICpjb21wbGV0ZWRf bGlzdCk7CiAKIHN0cnVjdCBhdGgxMGtfcGVlciAqYXRoMTBrX3BlZXJfZmluZChzdHJ1Y3QgYXRo MTBrICphciwgaW50IHZkZXZfaWQsCiAJCQkJICAgICBjb25zdCB1OCAqYWRkcik7Ci0tIAoyLjEu NAoK --001a113ead28099dff05415b3bab--