Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp3979814pxu; Mon, 12 Oct 2020 06:32:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw77Fkr8ZkKvGSMjGQcznFlFSAPM4shGkYJnpuRpYYvQuMZqBhSeZUMS/3l6DmB5I1Y5O9G X-Received: by 2002:aa7:dd01:: with SMTP id i1mr14371614edv.84.1602509557129; Mon, 12 Oct 2020 06:32:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1602509557; cv=none; d=google.com; s=arc-20160816; b=TqWS31gFOsLzeZ++75ZsNIvUPwC4Sy9JteUJLBeq2igVqdOn0//KEkIzu3SqAe2j6n DpKlgNLFEQhiPoa1/RBRl12dgXK7eHb55xJfcmPBflHO44x7/iIC5lIB80Ua7yif0grL HCPchmCw10gm5WpYo0FSxV+I+J1a3/fxyQLbHkW8/SgH4Pi0Rgl9i1CFv8+XLZG9w0d2 f3Jicqa5BA+w5SZwnYtVMaTPYsLuacoooDde5TqIziNbCs4gPiDiM4qsXzOIYqj+m2/O BAx7IIdginLxsLIHaHXJv+YuOLBr9vBWmqwNIqiPg2EnhKqzSVHJp7PooU7T3LwHvsT/ St8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HtPG+lg+u0TnPb4iEJYLRcPdOAgzljb2iTR7oz5/DLo=; b=y8NZYTc8opAxGltfuoOGF9T7o+lZf/iLtFdinrbVmX3bEgt9KFY0QeJf/1t8f3Btzl +ME+uyrGS4PXTbjnwY0FqT9xIXvP7ivQcZ207JQz0kYNedYGiv/1bdMKAYMxPXfYm6wT PEKpCmc+GaT3s1xspPcGDUhmxZYNAIRMLW39SXAfLdKBRGIw9o1XmgjpFmklYx7EkrPY 5eNPBQmKc/mgq7x9zpIRinHd7JZTmXLVZpjhOLsBtJ5vYkjFrcn3x+7KVYgUCx+Zk8+K YKWOY1WqtFG5g9BnNlCahfcQ95Bi9FtmLOiJbPAg6Wc8CY37vuk6o6C+sgBaMT1Y25Hd qYEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=d9VVJNEh; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id r14si11394661eji.218.2020.10.12.06.32.08; Mon, 12 Oct 2020 06:32:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=d9VVJNEh; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 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 S1730246AbgJLM4P (ORCPT + 99 others); Mon, 12 Oct 2020 08:56:15 -0400 Received: from mailgw01.mediatek.com ([210.61.82.183]:53174 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726769AbgJLM4O (ORCPT ); Mon, 12 Oct 2020 08:56:14 -0400 X-UUID: 5360bc61ef4e4157b74828ac9253249c-20201012 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=HtPG+lg+u0TnPb4iEJYLRcPdOAgzljb2iTR7oz5/DLo=; b=d9VVJNEhMU5Tzfcw5D3ug3+uQWo1RzY7CnZoUBq/KjIYobnwKjXonVml7svjNOHJwwE+pLiLn+QsZfeHj18rIr9SWFdlEr3J3JL4I4m2qwtoVWc+tEgB1aMgEi8nximc8tH3tiIDR2wVgOwYwP51YVUiyQotmCAx7pD9A8RCFFg=; X-UUID: 5360bc61ef4e4157b74828ac9253249c-20201012 Received: from mtkcas06.mediatek.inc [(172.21.101.30)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.14 Build 0819 with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 1531893866; Mon, 12 Oct 2020 20:56:00 +0800 Received: from mtkcas08.mediatek.inc (172.21.101.126) by mtkmbs02n2.mediatek.inc (172.21.101.101) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 12 Oct 2020 20:55:56 +0800 Received: from mtksdccf07.mediatek.inc (172.21.84.99) by mtkcas08.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 12 Oct 2020 20:55:56 +0800 From: Shayne Chen To: Felix Fietkau CC: linux-wireless , Lorenzo Bianconi , Ryder Lee , Evelyn Tsai , linux-mediatek , Shayne Chen Subject: [PATCH v3 08/10] mt76: mt7915: implement testmode rx support Date: Mon, 12 Oct 2020 20:54:01 +0800 Message-ID: <20201012125403.8608-8-shayne.chen@mediatek.com> X-Mailer: git-send-email 2.18.0 In-Reply-To: <20201012125403.8608-1-shayne.chen@mediatek.com> References: <20201012125403.8608-1-shayne.chen@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-TM-SNTS-SMTP: 76F146419BF2D9F78B941CD21DB1EA2E304AB2D10C496131551B51E19DFFF3942000:8 X-MTK: N Content-Transfer-Encoding: base64 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org U3VwcG9ydCB0ZXN0bW9kZSByeCBhbmQgZGlzcGxheSByeCBzdGF0aXN0aWMgYnkgcGFyc2luZyBS WFYgcGFja2V0DQp0eXBlLCB3aGljaCBpcyBjdXJyZW50bHkgb25seSBlbmFibGVkIGluIHRlc3Rt b2RlLg0KDQpSZXZpZXdlZC1ieTogUnlkZXIgTGVlIDxyeWRlci5sZWVAbWVkaWF0ZWsuY29tPg0K U2lnbmVkLW9mZi1ieTogU2hheW5lIENoZW4gPHNoYXluZS5jaGVuQG1lZGlhdGVrLmNvbT4NCi0t LQ0KdjI6IGNoYW5nZSBsYXN0X3NuciB0byB1OA0KdjM6IHVzZSBubGFfcHV0X3U4IGZvciBNVDc2 X1RNX1JYX0FUVFJfU05SDQogICAgY2hhbmdlIHNuciB2YXJpYWJsZSB0eXBlIHRvIHU4IGluIG10 NzkxNV9tYWNfZmlsbF9yeF92ZWN0b3INCg0KIC4uLi9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3 Ni9tdDc5MTUvZG1hLmMgICB8ICAzICsNCiAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYv bXQ3OTE1L21hYy5jICAgfCAzOCArKysrKysrKw0KIC4uLi9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsv bXQ3Ni9tdDc5MTUvbWFjLmggICB8ICA1ICsNCiAuLi4vbmV0L3dpcmVsZXNzL21lZGlhdGVrL210 NzYvbXQ3OTE1L21jdS5oICAgfCAgMSArDQogLi4uL3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3 OTE1L210NzkxNS5oICAgIHwgIDcgKysNCiAuLi4vd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5 MTUvdGVzdG1vZGUuYyAgfCA5NyArKysrKysrKysrKysrKysrKysrDQogLi4uL3dpcmVsZXNzL21l ZGlhdGVrL210NzYvbXQ3OTE1L3Rlc3Rtb2RlLmggIHwgMzAgKysrKysrDQogNyBmaWxlcyBjaGFu Z2VkLCAxODEgaW5zZXJ0aW9ucygrKQ0KDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxl c3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvZG1hLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRp YXRlay9tdDc2L210NzkxNS9kbWEuYw0KaW5kZXggY2ZhMTJjNC4uZTE0ODE0ZCAxMDA2NDQNCi0t LSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L2RtYS5jDQorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9kbWEuYw0KQEAgLTYx LDYgKzYxLDkgQEAgdm9pZCBtdDc5MTVfcXVldWVfcnhfc2tiKHN0cnVjdCBtdDc2X2RldiAqbWRl diwgZW51bSBtdDc2X3J4cV9pZCBxLA0KIAljYXNlIFBLVF9UWVBFX1JYX0VWRU5UOg0KIAkJbXQ3 OTE1X21jdV9yeF9ldmVudChkZXYsIHNrYik7DQogCQlicmVhazsNCisJY2FzZSBQS1RfVFlQRV9U WFJYVjoNCisJCW10NzkxNV9tYWNfZmlsbF9yeF92ZWN0b3IoZGV2LCBza2IpOw0KKwkJYnJlYWs7 DQogCWNhc2UgUEtUX1RZUEVfTk9STUFMOg0KIAkJaWYgKCFtdDc5MTVfbWFjX2ZpbGxfcngoZGV2 LCBza2IpKSB7DQogCQkJbXQ3Nl9yeCgmZGV2LT5tdDc2LCBxLCBza2IpOw0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5jIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbWFjLmMNCmluZGV4IGUwM2UxMmYu LjdiZmRmNTQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2 L210NzkxNS9tYWMuYw0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9t dDc5MTUvbWFjLmMNCkBAIC01NjIsNiArNTYyLDQ0IEBAIGludCBtdDc5MTVfbWFjX2ZpbGxfcngo c3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikNCiAJcmV0dXJuIDA7 DQogfQ0KIA0KK3ZvaWQgbXQ3OTE1X21hY19maWxsX3J4X3ZlY3RvcihzdHJ1Y3QgbXQ3OTE1X2Rl diAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQ0KK3sNCisjaWZkZWYgQ09ORklHX05MODAyMTFf VEVTVE1PREUNCisJX19sZTMyICpyeGQgPSAoX19sZTMyICopc2tiLT5kYXRhOw0KKwlfX2xlMzIg KnJ4diA9IHJ4ZCArIDQ7DQorCXUzMiByY3BpLCBpYl9yc3NpLCB3Yl9yc3NpLCB2MjAsIHYyMTsN CisJczMyIGZvZTsNCisJdTggc25yOw0KKwlpbnQgaTsNCisNCisJcmNwaSA9IGxlMzJfdG9fY3B1 KHJ4dls2XSk7DQorCWliX3Jzc2kgPSBsZTMyX3RvX2NwdShyeHZbN10pOw0KKwl3Yl9yc3NpID0g bGUzMl90b19jcHUocnh2WzhdKSA+PiA1Ow0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgNDsgaSsrLCBy Y3BpID4+PSA4LCBpYl9yc3NpID4+PSA4LCB3Yl9yc3NpID4+PSA5KSB7DQorCQlpZiAoaSA9PSAz KQ0KKwkJCXdiX3Jzc2kgPSBsZTMyX3RvX2NwdShyeHZbOV0pOw0KKw0KKwkJZGV2LT50ZXN0Lmxh c3RfcmNwaVtpXSA9IHJjcGkgJiAweGZmOw0KKwkJZGV2LT50ZXN0Lmxhc3RfaWJfcnNzaVtpXSA9 IGliX3Jzc2kgJiAweGZmOw0KKwkJZGV2LT50ZXN0Lmxhc3Rfd2JfcnNzaVtpXSA9IHdiX3Jzc2kg JiAweGZmOw0KKwl9DQorDQorCXYyMCA9IGxlMzJfdG9fY3B1KHJ4dlsyMF0pOw0KKwl2MjEgPSBs ZTMyX3RvX2NwdShyeHZbMjFdKTsNCisNCisJZm9lID0gRklFTERfR0VUKE1UX0NSWFZfRk9FX0xP LCB2MjApIHwNCisJICAgICAgKEZJRUxEX0dFVChNVF9DUlhWX0ZPRV9ISSwgdjIxKSA8PCBNVF9D UlhWX0ZPRV9TSElGVCk7DQorDQorCXNuciA9IEZJRUxEX0dFVChNVF9DUlhWX1NOUiwgdjIwKSAt IDE2Ow0KKw0KKwlkZXYtPnRlc3QubGFzdF9mcmVxX29mZnNldCA9IGZvZTsNCisJZGV2LT50ZXN0 Lmxhc3Rfc25yID0gc25yOw0KKw0KKwlkZXZfa2ZyZWVfc2tiKHNrYik7DQorI2VuZGlmDQorfQ0K Kw0KIHN0YXRpYyB1MTYNCiBtdDc5MTVfbWFjX3R4X3JhdGVfdmFsKHN0cnVjdCBtdDc2X3BoeSAq bXBoeSwgdTggbW9kZSwgdTggcmF0ZV9pZHgsDQogCQkgICAgICAgdTggbnNzLCB1OCBzdGJjLCB1 OCAqYncpDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9t dDc5MTUvbWFjLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9t YWMuaA0KaW5kZXggMDkyMWI2Zi4uZDQyMDM5MiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21hYy5oDQorKysgYi9kcml2ZXJzL25ldC93aXJl bGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tYWMuaA0KQEAgLTEyOCw2ICsxMjgsMTEgQEAgZW51 bSByeF9wa3RfdHlwZSB7DQogI2RlZmluZSBNVF9DUlhWX0hFX0JFQU1fQ0hORwkJQklUKDEzKQ0K ICNkZWZpbmUgTVRfQ1JYVl9IRV9ET1BQTEVSCQlCSVQoMTYpDQogDQorI2RlZmluZSBNVF9DUlhW X1NOUgkJR0VOTUFTSygxOCwgMTMpDQorI2RlZmluZSBNVF9DUlhWX0ZPRV9MTwkJR0VOTUFTSygz MSwgMTkpDQorI2RlZmluZSBNVF9DUlhWX0ZPRV9ISQkJR0VOTUFTSyg2LCAwKQ0KKyNkZWZpbmUg TVRfQ1JYVl9GT0VfU0hJRlQJMTMNCisNCiBlbnVtIHR4X2hlYWRlcl9mb3JtYXQgew0KIAlNVF9I RFJfRk9STUFUXzgwMl8zLA0KIAlNVF9IRFJfRk9STUFUX0NNRCwNCmRpZmYgLS1naXQgYS9kcml2 ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tY3UuaCBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L21jdS5oDQppbmRleCAwYTdlOWQyLi44OTQ1 M2E2IDEwMDY0NA0KLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5 MTUvbWN1LmgNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1 L21jdS5oDQpAQCAtNDgsNiArNDgsNyBAQCBlbnVtIHsNCiANCiBlbnVtIHsNCiAJTUNVX0FURV9T RVRfVFJYID0gMHgxLA0KKwlNQ1VfQVRFX1NFVF9SWF9GSUxURVIgPSAweDMsDQogfTsNCiANCiBz dHJ1Y3QgbXQ3OTE1X21jdV9yeGQgew0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNz L21lZGlhdGVrL210NzYvbXQ3OTE1L210NzkxNS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVk aWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1LmgNCmluZGV4IDY3MzU5MTUuLmZkN2RlNzkgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS9tdDc5MTUu aA0KKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MTUvbXQ3OTE1 LmgNCkBAIC0xNjUsNiArMTY1LDEyIEBAIHN0cnVjdCBtdDc5MTVfZGV2IHsNCiAJc3RydWN0IHsN CiAJCXUzMiAqcmVnX2JhY2t1cDsNCiANCisJCXMzMiBsYXN0X2ZyZXFfb2Zmc2V0Ow0KKwkJdTgg bGFzdF9yY3BpWzRdOw0KKwkJczggbGFzdF9pYl9yc3NpWzRdOw0KKwkJczggbGFzdF93Yl9yc3Np WzRdOw0KKwkJdTggbGFzdF9zbnI7DQorDQogCQl1OCBzcGVfaWR4Ow0KIAl9IHRlc3Q7DQogI2Vu ZGlmDQpAQCAtNDM2LDYgKzQ0Miw3IEBAIHZvaWQgbXQ3OTE1X21hY193cml0ZV90eHdpKHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYsIF9fbGUzMiAqdHh3aSwNCiAJCQkgICBzdHJ1Y3QgaWVlZTgwMjEx X2tleV9jb25mICprZXksIGJvb2wgYmVhY29uKTsNCiB2b2lkIG10NzkxNV9tYWNfc2V0X3RpbWlu ZyhzdHJ1Y3QgbXQ3OTE1X3BoeSAqcGh5KTsNCiBpbnQgbXQ3OTE1X21hY19maWxsX3J4KHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpOw0KK3ZvaWQgbXQ3OTE1X21h Y19maWxsX3J4X3ZlY3RvcihzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKTsNCiB2b2lkIG10NzkxNV9tYWNfdHhfZnJlZShzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiKTsNCiBpbnQgbXQ3OTE1X21hY19zdGFfYWRkKHN0cnVjdCBtdDc2 X2RldiAqbWRldiwgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZiwNCiAJCSAgICAgICBzdHJ1Y3Qg aWVlZTgwMjExX3N0YSAqc3RhKTsNCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9t ZWRpYXRlay9tdDc2L210NzkxNS90ZXN0bW9kZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVk aWF0ZWsvbXQ3Ni9tdDc5MTUvdGVzdG1vZGUuYw0KaW5kZXggNWQ5NTc2Ni4uYWNhYjI2OCAxMDA2 NDQNCi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3Rlc3Rt b2RlLmMNCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTE1L3Rl c3Rtb2RlLmMNCkBAIC0xMTMsNiArMTEzLDMxIEBAIG10NzkxNV90bV9yZWdfYmFja3VwX3Jlc3Rv cmUoc3RydWN0IG10NzkxNV9kZXYgKmRldiwgc3RydWN0IG10NzkxNV9waHkgKnBoeSkNCiAJbXQ3 Nl9jbGVhcihkZXYsIE1UX1RNQUNfVENSMCgwKSwgTVRfVE1BQ19UQ1IwX1RCVFRfU1RPUF9DVFJM KTsNCiB9DQogDQorc3RhdGljIGludA0KK210NzkxNV90bV9jb25maWdfcnhfZmlsdGVyKHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW4pDQorew0KKwlzdHJ1Y3QgbXQ3OTE1X3RtX2NtZCBy ZXEgPSB7DQorCQkudGVzdG1vZGVfZW4gPSAxLA0KKwkJLnBhcmFtX2lkeCA9IE1DVV9BVEVfU0VU X1JYX0ZJTFRFUiwNCisJCS5wYXJhbS5maWx0ZXIucmVwb3J0X2VuID0gZW4sDQorCQkucGFyYW0u ZmlsdGVyLmJhbmQgPSAwLAkvKiBUT0RPOiBzdXBwb3J0IGRiZGMgKi8NCisJfTsNCisJX19sZTMy IG1hc2sgPSBSWF9GSUxURVJfTk9UX09XTl9CVElNIHwNCisJCSAgICAgIFJYX0ZJTFRFUl9OT1Rf T1dOX1VDQVNUIHwNCisJCSAgICAgIFJYX0ZJTFRFUl9SVFMgfCBSWF9GSUxURVJfQ1RTIHwNCisJ CSAgICAgIFJYX0ZJTFRFUl9DVFJMX1JTViB8DQorCQkgICAgICBSWF9GSUxURVJfQkNfTUNfQlNT SURfQTIgfA0KKwkJICAgICAgUlhfRklMVEVSX0JDX01DX0JTU0lEX0EzIHwNCisJCSAgICAgIFJY X0ZJTFRFUl9CQ19NQ19PTUFDX0EzIHwNCisJCSAgICAgIFJYX0ZJTFRFUl9QUk9UT0NPTF9WRVJT SU9OIHwNCisJCSAgICAgIFJYX0ZJTFRFUl9GQ1NfRVJSOw0KKw0KKwlyZXEucGFyYW0uZmlsdGVy Lm1hc2sgPSBjcHVfdG9fbGUzMihtYXNrKTsNCisNCisJcmV0dXJuIG10NzZfbWN1X3NlbmRfbXNn KCZkZXYtPm10NzYsIE1DVV9FWFRfQ01EX0FURV9DVFJMLCAmcmVxLA0KKwkJCQkgc2l6ZW9mKHJl cSksIGZhbHNlKTsNCit9DQorDQogc3RhdGljIHZvaWQNCiBtdDc5MTVfdG1faW5pdChzdHJ1Y3Qg bXQ3OTE1X2RldiAqZGV2KQ0KIHsNCkBAIC0xMjQsNiArMTQ5LDcgQEAgbXQ3OTE1X3RtX2luaXQo c3RydWN0IG10NzkxNV9kZXYgKmRldikNCiAJbXQ3OTE1X3RtX21vZGVfY3RybChkZXYsIGVuKTsN CiAJbXQ3OTE1X3RtX3JlZ19iYWNrdXBfcmVzdG9yZShkZXYsICZkZXYtPnBoeSk7DQogCW10Nzkx NV90bV9zZXRfdHJ4KGRldiwgJmRldi0+cGh5LCBUTV9NQUNfVFhSWCwgIWVuKTsNCisJbXQ3OTE1 X3RtX2NvbmZpZ19yeF9maWx0ZXIoZGV2LCBlbik7DQogfQ0KIA0KIHN0YXRpYyB2b2lkDQpAQCAt MTU2LDYgKzE4MiwyMCBAQCBtdDc5MTVfdG1fc2V0X3R4X2ZyYW1lcyhzdHJ1Y3QgbXQ3OTE1X2Rl diAqZGV2LCBib29sIGVuKQ0KIAlpbmZvLT5jb250cm9sLnZpZiA9IGRldi0+cGh5Lm1vbml0b3Jf dmlmOw0KIH0NCiANCitzdGF0aWMgdm9pZA0KK210NzkxNV90bV9zZXRfcnhfZnJhbWVzKHN0cnVj dCBtdDc5MTVfZGV2ICpkZXYsIGJvb2wgZW4pDQorew0KKwlpZiAoZW4pIHsNCisJCW11dGV4X3Vu bG9jaygmZGV2LT5tdDc2Lm11dGV4KTsNCisJCW10NzkxNV9zZXRfY2hhbm5lbCgmZGV2LT5waHkp Ow0KKwkJbXV0ZXhfbG9jaygmZGV2LT5tdDc2Lm11dGV4KTsNCisNCisJCW10NzkxNV9tY3Vfc2V0 X2NoYW5faW5mbygmZGV2LT5waHksIE1DVV9FWFRfQ01EX1NFVF9SWF9QQVRIKTsNCisJfQ0KKw0K KwltdDc5MTVfdG1fc2V0X3RyeChkZXYsICZkZXYtPnBoeSwgVE1fTUFDX1JYX1JYViwgZW4pOw0K K30NCisNCiBzdGF0aWMgaW50DQogbXQ3OTE1X3RtX3NldF9zdGF0ZShzdHJ1Y3QgbXQ3Nl9kZXYg Km1kZXYsIGVudW0gbXQ3Nl90ZXN0bW9kZV9zdGF0ZSBzdGF0ZSkNCiB7DQpAQCAtMTY5LDEyICsy MDksNjkgQEAgbXQ3OTE1X3RtX3NldF9zdGF0ZShzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYsIGVudW0g bXQ3Nl90ZXN0bW9kZV9zdGF0ZSBzdGF0ZSkNCiAJCW10NzkxNV90bV9zZXRfdHhfZnJhbWVzKGRl diwgZmFsc2UpOw0KIAllbHNlIGlmIChzdGF0ZSA9PSBNVDc2X1RNX1NUQVRFX1RYX0ZSQU1FUykN CiAJCW10NzkxNV90bV9zZXRfdHhfZnJhbWVzKGRldiwgdHJ1ZSk7DQorCWVsc2UgaWYgKHByZXZf c3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9SWF9GUkFNRVMpDQorCQltdDc5MTVfdG1fc2V0X3J4X2Zy YW1lcyhkZXYsIGZhbHNlKTsNCisJZWxzZSBpZiAoc3RhdGUgPT0gTVQ3Nl9UTV9TVEFURV9SWF9G UkFNRVMpDQorCQltdDc5MTVfdG1fc2V0X3J4X2ZyYW1lcyhkZXYsIHRydWUpOw0KIAllbHNlIGlm IChwcmV2X3N0YXRlID09IE1UNzZfVE1fU1RBVEVfT0ZGIHx8IHN0YXRlID09IE1UNzZfVE1fU1RB VEVfT0ZGKQ0KIAkJbXQ3OTE1X3RtX2luaXQoZGV2KTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KIA0K K3N0YXRpYyBpbnQNCittdDc5MTVfdG1fZHVtcF9zdGF0cyhzdHJ1Y3QgbXQ3Nl9kZXYgKm1kZXYs IHN0cnVjdCBza19idWZmICptc2cpDQorew0KKwlzdHJ1Y3QgbXQ3OTE1X2RldiAqZGV2ID0gY29u dGFpbmVyX29mKG1kZXYsIHN0cnVjdCBtdDc5MTVfZGV2LCBtdDc2KTsNCisJdm9pZCAqcngsICpy c3NpOw0KKwlpbnQgaTsNCisNCisJcnggPSBubGFfbmVzdF9zdGFydChtc2csIE1UNzZfVE1fU1RB VFNfQVRUUl9MQVNUX1JYKTsNCisJaWYgKCFyeCkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlp ZiAobmxhX3B1dF9zMzIobXNnLCBNVDc2X1RNX1JYX0FUVFJfRlJFUV9PRkZTRVQsIGRldi0+dGVz dC5sYXN0X2ZyZXFfb2Zmc2V0KSkNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlyc3NpID0gbmxh X25lc3Rfc3RhcnQobXNnLCBNVDc2X1RNX1JYX0FUVFJfUkNQSSk7DQorCWlmICghcnNzaSkNCisJ CXJldHVybiAtRU5PTUVNOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkZXYtPnRl c3QubGFzdF9yY3BpKTsgaSsrKQ0KKwkJaWYgKG5sYV9wdXRfdTgobXNnLCBpLCBkZXYtPnRlc3Qu bGFzdF9yY3BpW2ldKSkNCisJCQlyZXR1cm4gLUVOT01FTTsNCisNCisJbmxhX25lc3RfZW5kKG1z ZywgcnNzaSk7DQorDQorCXJzc2kgPSBubGFfbmVzdF9zdGFydChtc2csIE1UNzZfVE1fUlhfQVRU Ul9JQl9SU1NJKTsNCisJaWYgKCFyc3NpKQ0KKwkJcmV0dXJuIC1FTk9NRU07DQorDQorCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKGRldi0+dGVzdC5sYXN0X2liX3Jzc2kpOyBpKyspDQorCQlp ZiAobmxhX3B1dF9zOChtc2csIGksIGRldi0+dGVzdC5sYXN0X2liX3Jzc2lbaV0pKQ0KKwkJCXJl dHVybiAtRU5PTUVNOw0KKw0KKwlubGFfbmVzdF9lbmQobXNnLCByc3NpKTsNCisNCisJcnNzaSA9 IG5sYV9uZXN0X3N0YXJ0KG1zZywgTVQ3Nl9UTV9SWF9BVFRSX1dCX1JTU0kpOw0KKwlpZiAoIXJz c2kpDQorCQlyZXR1cm4gLUVOT01FTTsNCisNCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUo ZGV2LT50ZXN0Lmxhc3Rfd2JfcnNzaSk7IGkrKykNCisJCWlmIChubGFfcHV0X3M4KG1zZywgaSwg ZGV2LT50ZXN0Lmxhc3Rfd2JfcnNzaVtpXSkpDQorCQkJcmV0dXJuIC1FTk9NRU07DQorDQorCW5s YV9uZXN0X2VuZChtc2csIHJzc2kpOw0KKw0KKwlpZiAobmxhX3B1dF91OChtc2csIE1UNzZfVE1f UlhfQVRUUl9TTlIsIGRldi0+dGVzdC5sYXN0X3NucikpDQorCQlyZXR1cm4gLUVOT01FTTsNCisN CisJbmxhX25lc3RfZW5kKG1zZywgcngpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogY29uc3Qg c3RydWN0IG10NzZfdGVzdG1vZGVfb3BzIG10NzkxNV90ZXN0bW9kZV9vcHMgPSB7DQogCS5zZXRf c3RhdGUgPSBtdDc5MTVfdG1fc2V0X3N0YXRlLA0KKwkuZHVtcF9zdGF0cyA9IG10NzkxNV90bV9k dW1wX3N0YXRzLA0KIH07DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0 ZWsvbXQ3Ni9tdDc5MTUvdGVzdG1vZGUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVr L210NzYvbXQ3OTE1L3Rlc3Rtb2RlLmgNCmluZGV4IDA0ZjRhMmMuLmIzNDRhNjQgMTAwNjQ0DQot LS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS90ZXN0bW9kZS5o DQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkxNS90ZXN0bW9k ZS5oDQpAQCAtMTEsNiArMTEsMTUgQEAgc3RydWN0IG10NzkxNV90bV90cnggew0KIAl1OCByc3Y7 DQogfTsNCiANCitzdHJ1Y3QgbXQ3OTE1X3RtX3J4X2ZpbHRlciB7DQorCXU4IHByb21pc2N1b3Vz Ow0KKwl1OCByZXBvcnRfZW47DQorCXU4IGJhbmQ7DQorCXU4IF9yc3Y7DQorCV9fbGUzMiBtYXNr Ow0KKwl1OCBfcnN2MVs0XTsNCit9Ow0KKw0KIHN0cnVjdCBtdDc5MTVfdG1fY21kIHsNCiAJdTgg dGVzdG1vZGVfZW47DQogCXU4IHBhcmFtX2lkeDsNCkBAIC0xOCw2ICsyNyw3IEBAIHN0cnVjdCBt dDc5MTVfdG1fY21kIHsNCiAJdW5pb24gew0KIAkJX19sZTMyIGRhdGE7DQogCQlzdHJ1Y3QgbXQ3 OTE1X3RtX3RyeCB0cng7DQorCQlzdHJ1Y3QgbXQ3OTE1X3RtX3J4X2ZpbHRlciBmaWx0ZXI7DQog CQl1OCB0ZXN0WzcyXTsNCiAJfSBwYXJhbTsNCiB9IF9fcGFja2VkOw0KQEAgLTMxLDQgKzQxLDI0 IEBAIGVudW0gew0KIAlUTV9NQUNfUlhfUlhWLA0KIH07DQogDQorI2RlZmluZSBSWF9GSUxURVJf U1RCQ19CQ05fQkNfTUMJQklUKDApDQorI2RlZmluZSBSWF9GSUxURVJfRkNTX0VSUgkJQklUKDEp DQorI2RlZmluZSBSWF9GSUxURVJfUFJPVE9DT0xfVkVSU0lPTglCSVQoMikNCisjZGVmaW5lIFJY X0ZJTFRFUl9QUk9CX1JFUQkJQklUKDMpDQorI2RlZmluZSBSWF9GSUxURVJfTUNBU1QJCQlCSVQo NCkNCisjZGVmaW5lIFJYX0ZJTFRFUl9CQ0FTVAkJCUJJVCg1KQ0KKyNkZWZpbmUgUlhfRklMVEVS X01DQVNUX1RBQkxFCQlCSVQoNikNCisjZGVmaW5lIFJYX0ZJTFRFUl9CQ19NQ19PTUFDX0EzCQlC SVQoNykNCisjZGVmaW5lIFJYX0ZJTFRFUl9CQ19NQ19CU1NJRF9BMwlCSVQoOCkNCisjZGVmaW5l IFJYX0ZJTFRFUl9CQ19NQ19CU1NJRF9BMglCSVQoOSkNCisjZGVmaW5lIFJYX0ZJTFRFUl9CQ05f QlNTSUQJCUJJVCgxMCkNCisjZGVmaW5lIFJYX0ZJTFRFUl9DVFJMX1JTVgkJQklUKDExKQ0KKyNk ZWZpbmUgUlhfRklMVEVSX0NUUwkJCUJJVCgxMikNCisjZGVmaW5lIFJYX0ZJTFRFUl9SVFMJCQlC SVQoMTMpDQorI2RlZmluZSBSWF9GSUxURVJfRFVQTElDQVRFCQlCSVQoMTQpDQorI2RlZmluZSBS WF9GSUxURVJfTk9UX09XTl9CU1NJRAkJQklUKDE1KQ0KKyNkZWZpbmUgUlhfRklMVEVSX05PVF9P V05fVUNBU1QJCUJJVCgxNikNCisjZGVmaW5lIFJYX0ZJTFRFUl9OT1RfT1dOX0JUSU0JCUJJVCgx NykNCisjZGVmaW5lIFJYX0ZJTFRFUl9ORFBBCQkJQklUKDE4KQ0KKw0KICNlbmRpZg0KLS0gDQoy LjE3LjENCg==