Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp382239ybb; Fri, 10 Apr 2020 01:57:31 -0700 (PDT) X-Google-Smtp-Source: APiQypJN8aZNrM6jKwt7LcDH3SG8kFgqa06tq3UNK3tJ8vTQ2P+1Qt/IBGgkekchPT0hMQJdgfD2 X-Received: by 2002:aed:33a4:: with SMTP id v33mr3261446qtd.289.1586509051841; Fri, 10 Apr 2020 01:57:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586509051; cv=none; d=google.com; s=arc-20160816; b=A1mLVmzRac4+o58n/E+7WkuBgDQ55eXHsBgV9IU6E4S+xNJ315JPk/JvM15XBoH6FQ /1bFt2eD7RIw9z7zmsN5VfE3Z8ov8/nEODcZiTRc1zhIjiKy2zeT3SKmiVzBy2+GRHfW WyaS0PMcgaBVf1t+VfBMEaZJXqc/SIQ7FtdIFQVr0ahUwKDG6Q3fDjL9khYdUV3TH6Lc aNqhmaxkzAMXIUMGcDoZEPD9bMFm7ferJtIAe8yJ1yURO5Ub3ccFzxLaMgw7kwFUy4ek n3EwplY4Ti6qGZz1WmwBcsPmUXTU+jJnn7HpPym0Hy24Of1WHBr0QBn7cVOjuSBVHiJy pBkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=lcRSBm2Qn6zLQZp4CLET2NDgyS8tMHUGD+d1o/f5bOM=; b=XwZWjfkvxBeav2krpogFHymdwlq5S0aOz8iFT0/8B1mMbecLP+y79O/EbaHC6POeJy +1x9RIOYK7ZBrzXIl8+goGBV96iMtS4x/ImtJ/TMGV6zoLWY3qvHe1TnDTjB2DyxlPhz Wazi8aNMTRRPJoDDjr4mLB455nrof+LohCEn3+Vcg8dli8fzH1pnbOW25rK/3JnXCw96 NQghYeMaSeM8V8gKtA/hNOQqjm6EezH/JvnMPZL7MGvVogvxo4u02XfQpNaJ3JPi+cST nNzl0gNYFsWyjCq69rXVAPY6UhMc5e8ajTngg3ADpSPv2ME+AU5f+cfBKDYAAueZKzNe AQcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=saIPKymD; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d191si991891qkg.264.2020.04.10.01.57.17; Fri, 10 Apr 2020 01:57:31 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=saIPKymD; spf=pass (google.com: best guess record for domain of linux-wireless-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726652AbgDJIzO (ORCPT + 99 others); Fri, 10 Apr 2020 04:55:14 -0400 Received: from mailgw02.mediatek.com ([210.61.82.184]:49894 "EHLO mailgw02.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726143AbgDJIzO (ORCPT ); Fri, 10 Apr 2020 04:55:14 -0400 X-UUID: ae47a5537b214724a924ebb8fa3ca3a9-20200410 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=lcRSBm2Qn6zLQZp4CLET2NDgyS8tMHUGD+d1o/f5bOM=; b=saIPKymDudhOie3aHc4hY6fFZjq5Sm7fcB82h1U4Q9HMedC5QxaOVn+rNQKtpHUOAubvrF6tC5fTC6XHGgjzxMpzI4V6acEUbc/HAGZmh8uz0LwYbyLfQe8VYkAWt+wqlH6SePMmn1rBr+AEaQilvYQZQsqJqb6RintBssd3vWg=; X-UUID: ae47a5537b214724a924ebb8fa3ca3a9-20200410 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw02.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 698028075; Fri, 10 Apr 2020 16:55:00 +0800 Received: from MTKCAS06.mediatek.inc (172.21.101.30) by mtkmbs08n2.mediatek.inc (172.21.101.56) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Fri, 10 Apr 2020 16:54:57 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by MTKCAS06.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Fri, 10 Apr 2020 16:54:57 +0800 From: Ryder Lee To: Felix Fietkau , Lorenzo Bianconi CC: Shayne Chen , YF Luo , Yiwei Chung , Chih-Min Chen , Evelyn Tsai , Sean Wang , , , Ryder Lee Subject: [PATCH 07/16] mt76: mt7915: implement HE per-rate tx power support Date: Fri, 10 Apr 2020 16:54:44 +0800 Message-ID: <44776fec051db7ef48785046658946eaf553cd18.1586507878.git.ryder.lee@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: E21AE195C7B3B0582B79215EF17D2769D3183252E033B9999B426719721AEC0F2000:8 X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org VXNlIGZpcm13YXJlIHN1cHBvcnQgZm9yIGFwcGx5aW5nIHBlci1yYXRlIGxpbWl0IGFuZCBwb3dl ciBvZmZzZXRzLg0KVGhpcyBjYW4gc3VwcG9ydCBhbGwgSEUgUlUgdHlwZXMuDQoNClNpZ25lZC1v ZmYtYnk6IFNoYXluZSBDaGVuIDxzaGF5bmUuY2hlbkBtZWRpYXRlay5jb20+DQpTaWduZWQtb2Zm LWJ5OiBSeWRlciBMZWUgPHJ5ZGVyLmxlZUBtZWRpYXRlay5jb20+DQpUZXN0ZWQtYnk6IENoaWgt TWluIENoZW4gPGNoaWgtbWluLmNoZW5AbWVkaWF0ZWsuY29tPg0KVGVzdGVkLWJ5OiBFdmVseW4g VHNhaSA8ZXZlbHluLnRzYWlAbWVkaWF0ZWsuY29tPg0KQWNrZWQtYnk6IFlpd2VpIENodW5nIDx5 aXdlaS5jaHVuZ0BtZWRpYXRlay5jb20+DQpBY2tlZC1ieTogWUYgTHVvIDx5Zi5sdW9AbWVkaWF0 ZWsuY29tPg0KLS0tDQogLi4uL3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMu YyAgIHwgIDU2ICsrKysrKysrKw0KIC4uLi93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9l ZXByb20uYyAgICB8IDExMSArKysrKysrKysrKysrKysrKysNCiAuLi4vd2lyZWxlc3MvbWVkaWF0 ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmggICAgfCAgNDcgKysrKysrKysNCiAuLi4vbmV0L3dpcmVs ZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyAgfCAgIDIgKw0KIC4uLi9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFpbi5jICB8ICAgNyArKw0KIC4uLi9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmMgICB8ICA0OSArKysrKysrKw0KIC4uLi9uZXQv d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmggICB8ICAgMSArDQogLi4uL3dpcmVs ZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oICAgIHwgICA2ICsNCiAuLi4vbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jICAgfCAgMjYgKysrKw0KIDkgZmlsZXMg Y2hhbmdlZCwgMzA1IGluc2VydGlvbnMoKykNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RlYnVnZnMuYw0KaW5kZXggMTUyYWUwNjE3ZjNkLi4z NGRmMmQ4Y2RiOGYgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzkxNS9kZWJ1Z2ZzLmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3OTE1L2RlYnVnZnMuYw0KQEAgLTIxOSw2ICsyMTksNjAgQEAgbXQ3OTE1X3F1ZXVl c19yZWFkKHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCiAJcmV0dXJuIDA7DQogfQ0K IA0KK3N0YXRpYyB2b2lkDQorbXQ3OTE1X3B1dHNfcmF0ZV90eHBvd2VyKHN0cnVjdCBzZXFfZmls ZSAqcywgczggKmRlbHRhLA0KKwkJCSBzOCB0eHBvd2VyX2N1ciwgaW50IGJhbmQpDQorew0KKwlz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHNrdV9ncm91cF9uYW1lW10gPSB7DQorCQkiQ0NLIiwg Ik9GRE0iLCAiSFQyMCIsICJIVDQwIiwNCisJCSJWSFQyMCIsICJWSFQ0MCIsICJWSFQ4MCIsICJW SFQxNjAiLA0KKwkJIlJVMjYiLCAiUlU1MiIsICJSVTEwNiIsICJSVTI0Mi9TVTIwIiwNCisJCSJS VTQ4NC9TVTQwIiwgIlJVOTk2L1NVODAiLCAiUlUyeDk5Ni9TVTE2MCINCisJfTsNCisJczggdHhw b3dlcltNVDc5MTVfU0tVX1JBVEVfTlVNXTsNCisJaW50IGksIGlkeCA9IDA7DQorDQorCWZvciAo aSA9IDA7IGkgPCBNVDc5MTVfU0tVX1JBVEVfTlVNOyBpKyspDQorCQl0eHBvd2VyW2ldID0gdHhw b3dlcl9jdXIgKyBkZWx0YVtpXSAvIDI7DQorDQorCWZvciAoaSA9IDA7IGkgPCBNQVhfU0tVX1JB VEVfR1JPVVBfTlVNOyBpKyspIHsNCisJCWNvbnN0IHN0cnVjdCBza3VfZ3JvdXAgKnNrdSA9ICZt dDc5MTVfc2t1X2dyb3Vwc1tpXTsNCisJCXUzMiBvZmZzZXQgPSBza3UtPm9mZnNldFtiYW5kXTsN CisNCisJCWlmICghb2Zmc2V0KSB7DQorCQkJaWR4ICs9IHNrdS0+bGVuOw0KKwkJCWNvbnRpbnVl Ow0KKwkJfQ0KKw0KKwkJbXQ3Nl9zZXFfcHV0c19hcnJheShzLCBza3VfZ3JvdXBfbmFtZVtpXSwN CisJCQkJICAgIHR4cG93ZXIgKyBpZHgsIHNrdS0+bGVuKTsNCisJCWlkeCArPSBza3UtPmxlbjsN CisJfQ0KK30NCisNCitzdGF0aWMgaW50DQorbXQ3OTE1X3JlYWRfcmF0ZV90eHBvd2VyKHN0cnVj dCBzZXFfZmlsZSAqcywgdm9pZCAqZGF0YSkNCit7DQorCXN0cnVjdCBtdDc5MTVfZGV2ICpkZXYg PSBkZXZfZ2V0X2RydmRhdGEocy0+cHJpdmF0ZSk7DQorCXN0cnVjdCBtdDc2X3BoeSAqbXBoeSA9 ICZkZXYtPm1waHk7DQorCWVudW0gbmw4MDIxMV9iYW5kIGJhbmQgPSBtcGh5LT5jaGFuZGVmLmNo YW4tPmJhbmQ7DQorCXM4ICpkZWx0YSA9IGRldi0+cmF0ZV9wb3dlcltiYW5kXTsNCisNCisJc2Vx X3B1dHMocywgIkJhbmQgMDpcbiIpOw0KKwltdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIocywgZGVs dGEsIG1waHktPnR4cG93ZXJfY3VyLCBiYW5kKTsNCisNCisJaWYgKGRldi0+bXQ3Ni5waHkyKSB7 DQorCQltcGh5ID0gZGV2LT5tdDc2LnBoeTI7DQorCQliYW5kID0gbXBoeS0+Y2hhbmRlZi5jaGFu LT5iYW5kOw0KKwkJZGVsdGEgPSBkZXYtPnJhdGVfcG93ZXJbYmFuZF07DQorDQorCQlzZXFfcHV0 cyhzLCAiQmFuZCAxOlxuIik7DQorCQltdDc5MTVfcHV0c19yYXRlX3R4cG93ZXIocywgZGVsdGEs IG1waHktPnR4cG93ZXJfY3VyLCBiYW5kKTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQog aW50IG10NzkxNV9pbml0X2RlYnVnZnMoc3RydWN0IG10NzkxNV9kZXYgKmRldikNCiB7DQogCXN0 cnVjdCBkZW50cnkgKmRpcjsNCkBAIC0yNDAsNiArMjk0LDggQEAgaW50IG10NzkxNV9pbml0X2Rl YnVnZnMoc3RydWN0IG10NzkxNV9kZXYgKmRldikNCiAJZGVidWdmc19jcmVhdGVfZmlsZSgic2Vy X3RyaWdnZXIiLCAwMjAwLCBkaXIsIGRldiwgJmZvcHNfc2VyX3RyaWdnZXIpOw0KIAlkZWJ1Z2Zz X2NyZWF0ZV9kZXZtX3NlcWZpbGUoZGV2LT5tdDc2LmRldiwgInRlbXBlcmF0dXJlIiwgZGlyLA0K IAkJCQkgICAgbXQ3OTE1X3JlYWRfdGVtcGVyYXR1cmUpOw0KKwlkZWJ1Z2ZzX2NyZWF0ZV9kZXZt X3NlcWZpbGUoZGV2LT5tdDc2LmRldiwgInR4cG93ZXJfc2t1IiwgZGlyLA0KKwkJCQkgICAgbXQ3 OTE1X3JlYWRfcmF0ZV90eHBvd2VyKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jIGIvZHJp dmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMNCmluZGV4IDIw OTlkZDQwNTMwZi4uNTI3MDY5NjhiZjZhIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5jDQpAQCAtMTIzLDMgKzEyMywxMTQgQEAg aW50IG10NzkxNV9lZXByb21fZ2V0X3RhcmdldF9wb3dlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2 LA0KIA0KIAlyZXR1cm4gbXQ3OTE1X2VlcHJvbV9yZWFkKGRldiwgaW5kZXgpOw0KIH0NCisNCitz dGF0aWMgY29uc3QgdTggc2t1X2Nja19kZWx0YV9tYXBbXSA9IHsNCisJU0tVX0NDS19HUk9VUDAs DQorCVNLVV9DQ0tfR1JPVVAwLA0KKwlTS1VfQ0NLX0dST1VQMSwNCisJU0tVX0NDS19HUk9VUDEs DQorfTsNCisNCitzdGF0aWMgY29uc3QgdTggc2t1X29mZG1fZGVsdGFfbWFwW10gPSB7DQorCVNL VV9PRkRNX0dST1VQMCwNCisJU0tVX09GRE1fR1JPVVAwLA0KKwlTS1VfT0ZETV9HUk9VUDEsDQor CVNLVV9PRkRNX0dST1VQMSwNCisJU0tVX09GRE1fR1JPVVAyLA0KKwlTS1VfT0ZETV9HUk9VUDIs DQorCVNLVV9PRkRNX0dST1VQMywNCisJU0tVX09GRE1fR1JPVVA0LA0KK307DQorDQorc3RhdGlj IGNvbnN0IHU4IHNrdV9tY3NfZGVsdGFfbWFwW10gPSB7DQorCVNLVV9NQ1NfR1JPVVAwLA0KKwlT S1VfTUNTX0dST1VQMSwNCisJU0tVX01DU19HUk9VUDEsDQorCVNLVV9NQ1NfR1JPVVAyLA0KKwlT S1VfTUNTX0dST1VQMiwNCisJU0tVX01DU19HUk9VUDMsDQorCVNLVV9NQ1NfR1JPVVA0LA0KKwlT S1VfTUNTX0dST1VQNSwNCisJU0tVX01DU19HUk9VUDYsDQorCVNLVV9NQ1NfR1JPVVA3LA0KKwlT S1VfTUNTX0dST1VQOCwNCisJU0tVX01DU19HUk9VUDksDQorfTsNCisNCisjZGVmaW5lIFNLVV9H Uk9VUChfbW9kZSwgX2xlbiwgX29mc18yZywgX29mc181ZywgX21hcCkJXA0KKwlbX21vZGVdID0g ewkJCQkJXA0KKwkubGVuID0gX2xlbiwJCQkJCVwNCisJLm9mZnNldCA9IHsJCQkJCVwNCisJCV9v ZnNfMmcsCQkJCVwNCisJCV9vZnNfNWcsCQkJCVwNCisJfSwJCQkJCQlcDQorCS5kZWx0YV9tYXAg PSBfbWFwCQkJCVwNCit9DQorDQorY29uc3Qgc3RydWN0IHNrdV9ncm91cCBtdDc5MTVfc2t1X2dy b3Vwc1tdID0gew0KKwlTS1VfR1JPVVAoU0tVX0NDSywgNCwgMHgyNTIsIDAsIHNrdV9jY2tfZGVs dGFfbWFwKSwNCisJU0tVX0dST1VQKFNLVV9PRkRNLCA4LCAweDI1NCwgMHgyOWQsIHNrdV9vZmRt X2RlbHRhX21hcCksDQorDQorCVNLVV9HUk9VUChTS1VfSFRfQlcyMCwgOCwgMHgyNTksIDB4MmEy LCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfSFRfQlc0MCwgOSwgMHgyNjIs IDB4MmFiLCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfVkhUX0JXMjAsIDEy LCAweDI1OSwgMHgyYTIsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCisJU0tVX0dST1VQKFNLVV9WSFRf Qlc0MCwgMTIsIDB4MjYyLCAweDJhYiwgc2t1X21jc19kZWx0YV9tYXApLA0KKwlTS1VfR1JPVVAo U0tVX1ZIVF9CVzgwLCAxMiwgMCwgMHgyYjQsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCisJU0tVX0dS T1VQKFNLVV9WSFRfQlcxNjAsIDEyLCAwLCAwLCBza3VfbWNzX2RlbHRhX21hcCksDQorDQorCVNL VV9HUk9VUChTS1VfSEVfUlUyNiwgMTIsIDB4MjdmLCAweDJkZCwgc2t1X21jc19kZWx0YV9tYXAp LA0KKwlTS1VfR1JPVVAoU0tVX0hFX1JVNTIsIDEyLCAweDI4OSwgMHgyZTcsIHNrdV9tY3NfZGVs dGFfbWFwKSwNCisJU0tVX0dST1VQKFNLVV9IRV9SVTEwNiwgMTIsIDB4MjkzLCAweDJmMSwgc2t1 X21jc19kZWx0YV9tYXApLA0KKwlTS1VfR1JPVVAoU0tVX0hFX1JVMjQyLCAxMiwgMHgyNmIsIDB4 MmJmLCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfSEVfUlU0ODQsIDEyLCAw eDI3NSwgMHgyYzksIHNrdV9tY3NfZGVsdGFfbWFwKSwNCisJU0tVX0dST1VQKFNLVV9IRV9SVTk5 NiwgMTIsIDAsIDB4MmQzLCBza3VfbWNzX2RlbHRhX21hcCksDQorCVNLVV9HUk9VUChTS1VfSEVf UlUyeDk5NiwgMTIsIDAsIDAsIHNrdV9tY3NfZGVsdGFfbWFwKSwNCit9Ow0KKw0KK3N0YXRpYyBz OA0KK210NzkxNV9nZXRfc2t1X2RlbHRhKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiBhZGRy KQ0KK3sNCisJdTMyIHZhbCA9IG10NzkxNV9lZXByb21fcmVhZChkZXYsIGFkZHIpOw0KKwlzOCBk ZWx0YSA9IEZJRUxEX0dFVChTS1VfREVMVEFfVkFMLCB2YWwpOw0KKw0KKwlpZiAoISh2YWwgJiBT S1VfREVMVEFfRU4pKQ0KKwkJcmV0dXJuIDA7DQorDQorCXJldHVybiB2YWwgJiBTS1VfREVMVEFf QUREID8gZGVsdGEgOiAtZGVsdGE7DQorfQ0KKw0KK3N0YXRpYyB2b2lkDQorbXQ3OTE1X2VlcHJv bV9pbml0X3NrdV9iYW5kKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsDQorCQkJICAgIHN0cnVjdCBp ZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kKQ0KK3sNCisJaW50IGksIGJhbmQgPSBzYmFu ZC0+YmFuZDsNCisJczggKnJhdGVfcG93ZXIgPSBkZXYtPnJhdGVfcG93ZXJbYmFuZF07DQorCXU4 IGlkeCA9IDA7DQorDQorCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKG10NzkxNV9za3VfZ3Jv dXBzKTsgaSsrKSB7DQorCQljb25zdCBzdHJ1Y3Qgc2t1X2dyb3VwICpza3UgPSAmbXQ3OTE1X3Nr dV9ncm91cHNbaV07DQorCQl1MzIgb2Zmc2V0ID0gc2t1LT5vZmZzZXRbYmFuZF07DQorCQlpbnQg ajsNCisNCisJCWlmICghb2Zmc2V0KSB7DQorCQkJaWR4ICs9IHNrdS0+bGVuOw0KKwkJCWNvbnRp bnVlOw0KKwkJfQ0KKw0KKwkJcmF0ZV9wb3dlcltpZHgrK10gPSBtdDc5MTVfZ2V0X3NrdV9kZWx0 YShkZXYsIG9mZnNldCk7DQorCQlpZiAoaSA9PSBTS1VfSFRfQlcyMCB8fCBpID09IFNLVV9WSFRf QlcyMCkNCisJCQlvZmZzZXQgKz0gMTsNCisNCisJCWZvciAoaiA9IDE7IGogPCBza3UtPmxlbjsg aisrKSB7DQorCQkJdTMyIGFkZHIgPSBvZmZzZXQgKyBza3UtPmRlbHRhX21hcFtqXTsNCisNCisJ CQlyYXRlX3Bvd2VyW2lkeCsrXSA9IG10NzkxNV9nZXRfc2t1X2RlbHRhKGRldiwgYWRkcik7DQor CQl9DQorCX0NCit9DQorDQordm9pZCBtdDc5MTVfZWVwcm9tX2luaXRfc2t1KHN0cnVjdCBtdDc5 MTVfZGV2ICpkZXYpDQorew0KKwltdDc5MTVfZWVwcm9tX2luaXRfc2t1X2JhbmQoZGV2LCAmZGV2 LT5tcGh5LnNiYW5kXzJnLnNiYW5kKTsNCisJbXQ3OTE1X2VlcHJvbV9pbml0X3NrdV9iYW5kKGRl diwgJmRldi0+bXBoeS5zYmFuZF81Zy5zYmFuZCk7DQorfQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMv bmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2VlcHJvbS5oIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmgNCmluZGV4IDMwZmM2MDdlNDY2 ZC4uNGUzMWQ2YWI0ZmE2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0 ZWsvbXQ3Ni9tdDc5MTUvZWVwcm9tLmgNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlh dGVrL210NzYvbXQ3OTE1L2VlcHJvbS5oDQpAQCAtMzcsNiArMzcsNTEgQEAgZW51bSBtdDc5MTVf ZWVwcm9tX2JhbmQgew0KIAlNVF9FRV9EQkRDLA0KIH07DQogDQorI2RlZmluZSBTS1VfREVMVEFf VkFMCQlHRU5NQVNLKDUsIDApDQorI2RlZmluZSBTS1VfREVMVEFfQURECQlCSVQoNikNCisjZGVm aW5lIFNLVV9ERUxUQV9FTgkJQklUKDcpDQorDQorZW51bSBtdDc5MTVfc2t1X2RlbHRhX2dyb3Vw IHsNCisJU0tVX0NDS19HUk9VUDAsDQorCVNLVV9DQ0tfR1JPVVAxLA0KKw0KKwlTS1VfT0ZETV9H Uk9VUDAgPSAwLA0KKwlTS1VfT0ZETV9HUk9VUDEsDQorCVNLVV9PRkRNX0dST1VQMiwNCisJU0tV X09GRE1fR1JPVVAzLA0KKwlTS1VfT0ZETV9HUk9VUDQsDQorDQorCVNLVV9NQ1NfR1JPVVAwID0g MCwNCisJU0tVX01DU19HUk9VUDEsDQorCVNLVV9NQ1NfR1JPVVAyLA0KKwlTS1VfTUNTX0dST1VQ MywNCisJU0tVX01DU19HUk9VUDQsDQorCVNLVV9NQ1NfR1JPVVA1LA0KKwlTS1VfTUNTX0dST1VQ NiwNCisJU0tVX01DU19HUk9VUDcsDQorCVNLVV9NQ1NfR1JPVVA4LA0KKwlTS1VfTUNTX0dST1VQ OSwNCit9Ow0KKw0KK2VudW0gbXQ3OTE1X3NrdV9yYXRlX2dyb3VwIHsNCisJU0tVX0NDSywNCisJ U0tVX09GRE0sDQorCVNLVV9IVF9CVzIwLA0KKwlTS1VfSFRfQlc0MCwNCisJU0tVX1ZIVF9CVzIw LA0KKwlTS1VfVkhUX0JXNDAsDQorCVNLVV9WSFRfQlc4MCwNCisJU0tVX1ZIVF9CVzE2MCwNCisJ U0tVX0hFX1JVMjYsDQorCVNLVV9IRV9SVTUyLA0KKwlTS1VfSEVfUlUxMDYsDQorCVNLVV9IRV9S VTI0MiwNCisJU0tVX0hFX1JVNDg0LA0KKwlTS1VfSEVfUlU5OTYsDQorCVNLVV9IRV9SVTJ4OTk2 LA0KKwlNQVhfU0tVX1JBVEVfR1JPVVBfTlVNLA0KK307DQorDQogc3RydWN0IHNrdV9ncm91cCB7 DQogCXU4IGxlbjsNCiAJdTE2IG9mZnNldFsyXTsNCkBAIC03NSw0ICsxMjAsNiBAQCBtdDc5MTVf dHNzaV9lbmFibGVkKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIGVudW0gbmw4MDIxMV9iYW5kIGJh bmQpDQogCQlyZXR1cm4gZWVwW01UX0VFX1dJRklfQ09ORiArIDddICYgTVRfRUVfV0lGSV9DT05G X1RTU0kwXzJHOw0KIH0NCiANCitleHRlcm4gY29uc3Qgc3RydWN0IHNrdV9ncm91cCBtdDc5MTVf c2t1X2dyb3Vwc1tdOw0KKw0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21l ZGlhdGVrL210NzYvbXQ3OTE1L2luaXQuYw0KaW5kZXggMGUzZTZiMTU0N2IzLi5jYmE5ZGZiODNl MTkgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzkx NS9pbml0LmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1 L2luaXQuYw0KQEAgLTg1LDYgKzg1LDggQEAgc3RhdGljIHZvaWQgbXQ3OTE1X2luaXRfdHhwb3dl cihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KQ0KIHsNCiAJbXQ3OTE1X2luaXRfdHhwb3dlcl9iYW5k KGRldiwgJmRldi0+bXBoeS5zYmFuZF8yZy5zYmFuZCk7DQogCW10NzkxNV9pbml0X3R4cG93ZXJf YmFuZChkZXYsICZkZXYtPm1waHkuc2JhbmRfNWcuc2JhbmQpOw0KKw0KKwltdDc5MTVfZWVwcm9t X2luaXRfc2t1KGRldik7DQogfQ0KIA0KIHN0YXRpYyB2b2lkIG10NzkxNV9pbml0X3dvcmsoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQ0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L21lZGlhdGVrL210NzYvbXQ3OTE1L21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlh dGVrL210NzYvbXQ3OTE1L21haW4uYw0KaW5kZXggZTllOWU3ZTIxMzg4Li43YmY5OWUxNDhkMDIg MTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9t YWluLmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21h aW4uYw0KQEAgLTQyLDYgKzQyLDcgQEAgc3RhdGljIGludCBtdDc5MTVfc3RhcnQoc3RydWN0IGll ZWU4MDIxMV9odyAqaHcpDQogCQltdDc5MTVfbWN1X3NldF9zY3MoZGV2LCAxLCB0cnVlKTsNCiAJ fQ0KIA0KKwltdDc5MTVfbWN1X3NldF9za3VfZW4ocGh5LCB0cnVlKTsNCiAJbXQ3OTE1X21jdV9z ZXRfY2hhbl9pbmZvKHBoeSwgTUNVX0VYVF9DTURfU0VUX1JYX1BBVEgpOw0KIA0KIAlzZXRfYml0 KE1UNzZfU1RBVEVfUlVOTklORywgJnBoeS0+bXQ3Ni0+c3RhdGUpOw0KQEAgLTMyNyw2ICszMjgs MTIgQEAgc3RhdGljIGludCBtdDc5MTVfY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCB1 MzIgY2hhbmdlZCkNCiAJCWllZWU4MDIxMV93YWtlX3F1ZXVlcyhodyk7DQogCX0NCiANCisJaWYg KGNoYW5nZWQgJiBJRUVFODAyMTFfQ09ORl9DSEFOR0VfUE9XRVIpIHsNCisJCXJldCA9IG10Nzkx NV9tY3Vfc2V0X3NrdShwaHkpOw0KKwkJaWYgKHJldCkNCisJCQlyZXR1cm4gcmV0Ow0KKwl9DQor DQogCW11dGV4X2xvY2soJmRldi0+bXQ3Ni5tdXRleCk7DQogDQogCWlmIChjaGFuZ2VkICYgSUVF RTgwMjExX0NPTkZfQ0hBTkdFX01PTklUT1IpIHsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNz L21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5jDQppbmRleCA1Y2E2YmQ5ZjA5OWMuLjU5Y2Q1MGRi MmVjZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3 OTE1L21jdS5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210Nzkx NS9tY3UuYw0KQEAgLTIzMDEsNiArMjMwMSw1NSBAQCBpbnQgbXQ3OTE1X21jdV9nZXRfcmF0ZV9p bmZvKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsIHUzMiBjbWQsIHUxNiB3bGFuX2lkeCkNCiAJCQkJ ICAgc2l6ZW9mKHJlcSksIGZhbHNlKTsNCiB9DQogDQoraW50IG10NzkxNV9tY3Vfc2V0X3NrdShz dHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KQ0KK3sNCisJc3RydWN0IG10NzkxNV9kZXYgKmRldiA9IHBo eS0+ZGV2Ow0KKwlzdHJ1Y3QgbXQ3Nl9waHkgKm1waHkgPSBwaHktPm10NzY7DQorCXN0cnVjdCBp ZWVlODAyMTFfaHcgKmh3ID0gbXBoeS0+aHc7DQorCXN0cnVjdCBtdDc5MTVfc2t1X3ZhbCB7DQor CQl1OCBmb3JtYXRfaWQ7DQorCQl1OCBsaW1pdF90eXBlOw0KKwkJdTggZGJkY19pZHg7DQorCQlz OCB2YWxbTVQ3OTE1X1NLVV9SQVRFX05VTV07DQorCX0gX19wYWNrZWQgcmVxID0gew0KKwkJLmZv cm1hdF9pZCA9IDQsDQorCQkuZGJkY19pZHggPSBwaHkgIT0gJmRldi0+cGh5LA0KKwl9Ow0KKwlp bnQgaTsNCisJczggKmRlbHRhLCBtYXhfcG93ZXI7DQorDQorCWRlbHRhID0gZGV2LT5yYXRlX3Bv d2VyW21waHktPmNoYW5kZWYuY2hhbi0+YmFuZF07DQorDQorCWZvciAoaSA9IDAsIG1heF9wb3dl ciA9IDA7IGkgPCBNVDc5MTVfU0tVX1JBVEVfTlVNOyBpKyspIHsNCisJCXJlcS52YWxbaV0gPSBo dy0+Y29uZi5wb3dlcl9sZXZlbCAqIDIgKyBkZWx0YVtpXTsNCisJCW1heF9wb3dlciA9IG1heCht YXhfcG93ZXIsIHJlcS52YWxbaV0pOw0KKwl9DQorCW1waHktPnR4cG93ZXJfY3VyID0gbWF4X3Bv d2VyOw0KKw0KKwlyZXR1cm4gX19tdDc2X21jdV9zZW5kX21zZygmZGV2LT5tdDc2LA0KKwkJCQkg ICBNQ1VfRVhUX0NNRF9UWF9QT1dFUl9GRUFUVVJFX0NUUkwsDQorCQkJCSAgICZyZXEsIHNpemVv ZihyZXEpLCB0cnVlKTsNCit9DQorDQoraW50IG10NzkxNV9tY3Vfc2V0X3NrdV9lbihzdHJ1Y3Qg bXQ3OTE1X3BoeSAqcGh5LCBib29sIGVuYWJsZSkNCit7DQorCXN0cnVjdCBtdDc5MTVfZGV2ICpk ZXYgPSBwaHktPmRldjsNCisJc3RydWN0IG10NzkxNV9za3Ugew0KKwkJdTggZm9ybWF0X2lkOw0K KwkJdTggc2t1X2VuYWJsZTsNCisJCXU4IGRiZGNfaWR4Ow0KKwkJdTggcnN2Ow0KKwl9IF9fcGFj a2VkIHJlcSA9IHsNCisJCS5mb3JtYXRfaWQgPSAwLA0KKwkJLmRiZGNfaWR4ID0gcGh5ICE9ICZk ZXYtPnBoeSwNCisJCS5za3VfZW5hYmxlID0gZW5hYmxlLA0KKwl9Ow0KKw0KKwlyZXR1cm4gX19t dDc2X21jdV9zZW5kX21zZygmZGV2LT5tdDc2LA0KKwkJCQkgICBNQ1VfRVhUX0NNRF9UWF9QT1dF Ul9GRUFUVVJFX0NUUkwsDQorCQkJCSAgICZyZXEsIHNpemVvZihyZXEpLCB0cnVlKTsNCit9DQor DQogaW50IG10NzkxNV9tY3Vfc2V0X3NlcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCB1OCBhY3Rp b24sIHU4IHNldCwgdTggYmFuZCkNCiB7DQogCXN0cnVjdCB7DQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWN1LmggYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuaA0KaW5kZXggNWU0NzA4ODYxZWRlLi5k OWM5YWFiN2U2ZGMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9t dDc2L210NzkxNS9tY3UuaA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3 Ni9tdDc5MTUvbWN1LmgNCkBAIC0yMDMsNiArMjAzLDcgQEAgZW51bSB7DQogCU1DVV9FWFRfQ01E X01BQ19JTklUX0NUUkwgPSAweDQ2LA0KIAlNQ1VfRVhUX0NNRF9SWF9IRFJfVFJBTlMgPSAweDQ3 LA0KIAlNQ1VfRVhUX0NNRF9TRVRfUlhfUEFUSCA9IDB4NGUsDQorCU1DVV9FWFRfQ01EX1RYX1BP V0VSX0ZFQVRVUkVfQ1RSTCA9IDB4NTgsDQogCU1DVV9FWFRfQ01EX1NFVF9TRVJfVFJJR0dFUiA9 IDB4ODEsDQogCU1DVV9FWFRfQ01EX1NDU19DVFJMID0gMHg4MiwNCiAJTUNVX0VYVF9DTURfUkFU RV9DVFJMID0gMHg4NywNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRl ay9tdDc2L210NzkxNS9tdDc5MTUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L210NzkxNS5oDQppbmRleCBmMjEzOWE1MjQ4ZDkuLmI1MDJiY2M5ODVlYyAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L210Nzkx NS5oDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5 MTUuaA0KQEAgLTM4LDYgKzM4LDcgQEANCiAjZGVmaW5lIE1UNzkxNV81R19SQVRFX0RFRkFVTFQJ CTB4NGIJLyogT0ZETSA2TSAqLw0KICNkZWZpbmUgTVQ3OTE1XzJHX1JBVEVfREVGQVVMVAkJMHgw CS8qIENDSyAxTSAqLw0KIA0KKyNkZWZpbmUgTVQ3OTE1X1NLVV9SQVRFX05VTQkJMTYxDQogDQog c3RydWN0IG10NzkxNV92aWY7DQogc3RydWN0IG10NzkxNV9zdGE7DQpAQCAtMTYyLDYgKzE2Myw4 IEBAIHN0cnVjdCBtdDc5MTVfZGV2IHsNCiAJc3BpbmxvY2tfdCB0b2tlbl9sb2NrOw0KIAlzdHJ1 Y3QgaWRyIHRva2VuOw0KIA0KKwlzOCAqKnJhdGVfcG93ZXI7IC8qIFRPRE86IHVzZSBtdDc2X3Jh dGVfcG93ZXIgKi8NCisNCiAJdTggbWFjX3dvcmtfY291bnQ7DQogCWJvb2wgZndfZGVidWc7DQog fTsNCkBAIC0yNjksNiArMjcyLDcgQEAgdTMyIG10NzkxNV9lZXByb21fcmVhZChzdHJ1Y3QgbXQ3 OTE1X2RldiAqZGV2LCB1MzIgb2Zmc2V0KTsNCiBpbnQgbXQ3OTE1X2VlcHJvbV9nZXRfdGFyZ2V0 X3Bvd2VyKHN0cnVjdCBtdDc5MTVfZGV2ICpkZXYsDQogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFf Y2hhbm5lbCAqY2hhbiwNCiAJCQkJICAgdTggY2hhaW5faWR4KTsNCit2b2lkIG10NzkxNV9lZXBy b21faW5pdF9za3Uoc3RydWN0IG10NzkxNV9kZXYgKmRldik7DQogaW50IG10NzkxNV9kbWFfaW5p dChzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KTsNCiB2b2lkIG10NzkxNV9kbWFfcHJlZmV0Y2goc3Ry dWN0IG10NzkxNV9kZXYgKmRldik7DQogdm9pZCBtdDc5MTVfZG1hX2NsZWFudXAoc3RydWN0IG10 NzkxNV9kZXYgKmRldik7DQpAQCAtMzA0LDYgKzMwOCw4IEBAIGludCBtdDc5MTVfbWN1X3NldF9z Y3Moc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYmFuZCwgYm9vbCBlbmFibGUpOw0KIGludCBt dDc5MTVfbWN1X3NldF9zZXIoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgdTggYWN0aW9uLCB1OCBz ZXQsIHU4IGJhbmQpOw0KIGludCBtdDc5MTVfbWN1X3NldF9ydHNfdGhyZXNoKHN0cnVjdCBtdDc5 MTVfcGh5ICpwaHksIHUzMiB2YWwpOw0KIGludCBtdDc5MTVfbWN1X3NldF9wbShzdHJ1Y3QgbXQ3 OTE1X2RldiAqZGV2LCBpbnQgYmFuZCwgaW50IGVudGVyKTsNCitpbnQgbXQ3OTE1X21jdV9zZXRf c2t1X2VuKHN0cnVjdCBtdDc5MTVfcGh5ICpwaHksIGJvb2wgZW5hYmxlKTsNCitpbnQgbXQ3OTE1 X21jdV9zZXRfc2t1KHN0cnVjdCBtdDc5MTVfcGh5ICpwaHkpOw0KIGludCBtdDc5MTVfbWN1X3Nl dF9mY2M1X2xwbihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBpbnQgdmFsKTsNCiBpbnQgbXQ3OTE1 X21jdV9zZXRfcHVsc2VfdGgoc3RydWN0IG10NzkxNV9kZXYgKmRldiwNCiAJCQkgICAgY29uc3Qg c3RydWN0IG10NzkxNV9kZnNfcHVsc2UgKnB1bHNlKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25l dC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9wY2kuYyBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3BjaS5jDQppbmRleCAxMmE1NjJkM2FhM2QuLmQzNDk1 NjFlNDU5OCAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYv bXQ3OTE1L3BjaS5jDQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210 NzkxNS9wY2kuYw0KQEAgLTc0LDYgKzc0LDI5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBtdDc5MTVf aXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqZGV2X2luc3RhbmNlKQ0KIAlyZXR1cm4gSVJRX0hB TkRMRUQ7DQogfQ0KIA0KK3N0YXRpYyBpbnQNCittdDc5MTVfYWxsb2NfZGV2aWNlKHN0cnVjdCBw Y2lfZGV2ICpwZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2KQ0KK3sNCisjZGVmaW5lIE5VTV9C QU5EUwkyDQorCWludCBpOw0KKwlzOCAqKnNrdTsNCisNCisJc2t1ID0gZGV2bV9remFsbG9jKCZw ZGV2LT5kZXYsIE5VTV9CQU5EUyAqIHNpemVvZigqc2t1KSwgR0ZQX0tFUk5FTCk7DQorCWlmICgh c2t1KQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWZvciAoaSA9IDA7IGkgPCBOVU1fQkFORFM7 IGkrKykgew0KKwkJc2t1W2ldID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIE1UNzkxNV9TS1Vf UkFURV9OVU0gKg0KKwkJCQkgICAgICBzaXplb2YoKipza3UpLCBHRlBfS0VSTkVMKTsNCisJCWlm ICghc2t1W2ldKQ0KKwkJCXJldHVybiAtRU5PTUVNOw0KKwl9DQorCWRldi0+cmF0ZV9wb3dlciA9 IHNrdTsNCisNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgbXQ3OTE1X3BjaV9w cm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwNCiAJCQkgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZp Y2VfaWQgKmlkKQ0KIHsNCkBAIC0xMTcsNiArMTQwLDkgQEAgc3RhdGljIGludCBtdDc5MTVfcGNp X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LA0KIAkJcmV0dXJuIC1FTk9NRU07DQogDQogCWRl diA9IGNvbnRhaW5lcl9vZihtZGV2LCBzdHJ1Y3QgbXQ3OTE1X2RldiwgbXQ3Nik7DQorCXJldCA9 IG10NzkxNV9hbGxvY19kZXZpY2UocGRldiwgZGV2KTsNCisJaWYgKHJldCkNCisJCXJldHVybiBy ZXQ7DQogDQogCW10NzZfbW1pb19pbml0KCZkZXYtPm10NzYsIHBjaW1faW9tYXBfdGFibGUocGRl dilbMF0pOw0KIAltZGV2LT5yZXYgPSAobXQ3OTE1X2wxX3JyKGRldiwgTVRfSFdfQ0hJUElEKSA8 PCAxNikgfA0KLS0gDQoyLjE4LjANCg==