From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B3C4EC2BA2B for ; Mon, 15 Mar 2021 13:26:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 55D5C64F01 for ; Mon, 15 Mar 2021 13:26:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231303AbhCON0c (ORCPT ); Mon, 15 Mar 2021 09:26:32 -0400 Received: from mail-dm6nam12on2047.outbound.protection.outlook.com ([40.107.243.47]:2753 "EHLO NAM12-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S230431AbhCON0G (ORCPT ); Mon, 15 Mar 2021 09:26:06 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XDmOzMxiUghLmQAi//6c/+UhcnciugF1glCnDguHI4l4SDthFwTczhSjuO6cnX1PZSqOf41ETEw+ElsXtE1wYYK9ZbxBFAPDgGzPfpjaM2xryef9AVUu4ifaH0sVWiSnaNh9pC6LJNdfCurxFaYyZPK8/MhKynGP+5wBEl8xmbnrT/hk3UAzGC0lVkjvE2LCCP0q3o8YMm8di59/ElA2fz1DplFxJLanTG+PaF0jgbe5r4ywd6gS5uyRIdS+eDF9aXpkxXPRZLztE7oGLwbTM2Skao8kj71JGPVbLdwPfKwtSNd6RCqjRABf4YJgqdNzj1igRM6QKq4YGSmoI3Ni8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ye2hPOexgr/w7y/yM+mmq30IJeyB4N82T+jMJi19m08=; b=gy05DSH6tr1W6EAUAWJLULHNHh2PHoRvzNJw6V34yboiLX+fzOCkUs3BN/uiAAVqBV7GU4ZedD4xHdTKVNo7d4mtcxJ60mSaqQiiybXVudx3nP7+LOQRDgWdhPDXavDhYMPD139R+wPc2YxTB7FVwM4sKa2xj3ndBBvNhalyXV16ZmFoVr01hq0muC9RHTNAAcxr++Ze+wRjiPbv8sBSJqNrkKC8p89lBTM0eouVwCfAzsFLbELsfoGszIFmZMGDjVqq4Z7f00cxNeFaTtEjtz3tXF8OyZWISAbw8T0WkyHUnRb+3tEl3NjihjlaACqXl9hGVmJd27uC30ytfRaURA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ye2hPOexgr/w7y/yM+mmq30IJeyB4N82T+jMJi19m08=; b=As6JzOLmoZRVzjRXeZ1o77MeLaJ72wA70lHiUZo8LaU8DiPHrtv/hwZy6VbFMdoKaNGVjLwKPPQ6ufw7WDT3B8RcDdP4SmZiqmXyjovZI3l7OgovPHwmlHQz6IxnVTXhWCvwDA6fXU6FGnZd86NhKyjBL2qQCHzfTgbFbl5Fjsc= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SA0PR11MB4544.namprd11.prod.outlook.com (2603:10b6:806:92::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.32; Mon, 15 Mar 2021 13:26:04 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::41bc:5ce:dfa0:9701]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::41bc:5ce:dfa0:9701%7]) with mapi id 15.20.3933.032; Mon, 15 Mar 2021 13:26:04 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Cc: devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , devicetree@vger.kernel.org, Rob Herring , linux-mmc@vger.kernel.org, =?UTF-8?q?Pali=20Roh=C3=A1r?= , Ulf Hansson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH v5 15/24] wfx: add hif_rx.c/hif_rx.h Date: Mon, 15 Mar 2021 14:24:52 +0100 Message-Id: <20210315132501.441681-16-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210315132501.441681-1-Jerome.Pouiller@silabs.com> References: <20210315132501.441681-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-ClientProxiedBy: SN4PR0801CA0014.namprd08.prod.outlook.com (2603:10b6:803:29::24) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by SN4PR0801CA0014.namprd08.prod.outlook.com (2603:10b6:803:29::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.32 via Frontend Transport; Mon, 15 Mar 2021 13:26:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7d54c54b-8f4a-47e3-afa9-08d8e7b5e1f6 X-MS-TrafficTypeDiagnostic: SA0PR11MB4544: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1417; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1DEp2dSUJYBU5Mmq0FZyN5H7qiudjVtxVgmAhfwjreL/Gzdo/bYI8iyiLoRp5SXHBUuY8pLV5wF30FPubhNr3TZlhNvOUxhjHDmbZO6onRHV2pNLHKw4viwmoSc7g4D6sFNxGbHBxXS2K/kX5f3S/RzlH5chdXWcrTJGrAGCCZqEHPl8Yv+HtSd4C+GWPuraZwBkChS9IMK3UcZkVgQLvQY8YVBqyAbZRG39A7OkIH7rBLEgTaBlKPd1M/ORmMKBvI7+hTwqnKH3dFA8oI+aHe1jBGzFDaaOJ0kffCnUQdsksH52qSq/RPdmjXUYudxST+pXA8Uum0sQlrz69MLjFa/EK/b5xST937J+U5MV/ZlvlnjpkhRTrXPRgvRWxu+AfYv0PlPKCarCVRcHV8kIERUuO+grTjqH2th7v+yVl7dn5kdlNRY7cJFx6Pq+v8hCXI48XQnU0eHps3VNyRT29X0cYStRnNJKHKNfQ4LFRR7rKoN0DKtixobFYkJ5wyet+Wrrs7TqpBYffaNP/ki/e2iY2nMxjMUrw37G4q5GpzLE86BZnC96iFdxjYvhN8zC X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2718.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(396003)(366004)(376002)(39850400004)(136003)(66574015)(8676002)(186003)(52116002)(86362001)(5660300002)(6486002)(7696005)(2906002)(83380400001)(4326008)(66476007)(16526019)(2616005)(30864003)(107886003)(66946007)(8936002)(66556008)(1076003)(478600001)(6666004)(36756003)(7416002)(316002)(54906003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?cC8xcUNLVjNYU2V6aUdTcUZIeWZJYXdlbXd6V2I3NkliNzkxSEg0QUVEc0tX?= =?utf-8?B?VHdhOTBCSWxVMUxFTTdlQWNQVVVVaWZ5cjU3S3piZjIzaHQ0RHNvTmRrQitU?= =?utf-8?B?Tlk1RFlGT3cxYlBmbkFoODBkdjZuMExXWC9LeVJJTmswNjZ4aDdJV2ZiRXdD?= =?utf-8?B?Ly9LYzdUUzV1S21VclU0ZUxNVW1sOGhTN1BucmFMQWtMNmxSUGR2Z3k1VEVT?= =?utf-8?B?VjZOd1pZOVNTSXRNSE5HTC9sN1FUempVWmZZVTFQTUQxNVBoMzZnRDBvdllh?= =?utf-8?B?ZHBLTjZrcER5R3ZxaitHT3RGOWRaQ2NqanoxZlRobTRnU3c1OHVEdkdYb0lz?= =?utf-8?B?R2ZqQ1ZzSHFOcEppRUcrTXd4bldFenY5c2FnMWRsbjRaNjlURzR1Nkw4L2dr?= =?utf-8?B?aDdlTmxBMzJ0cW8yMXlYUmd3VG5jRmJwZ01mZzh0ekFjdnRoWmVBNDkvZFZj?= =?utf-8?B?TzRvWjBJQmprMm9oZWVCQkdVWUlvYkl3VjkyZWxsNGpncVM0YTFwaW1kZ0dN?= =?utf-8?B?NTFoZjhqOXlENHB3UEtEVnlwL3VtZFNaaEVZTkIyOWMreHppcTdlNm9aWTJi?= =?utf-8?B?ZzdQWVlhbmZWaGVFbk54cXdOalkrNFpXb2VMZ1Vhck9kOXVvc25MRzF1clFy?= =?utf-8?B?V2lXVkswbWcrd0c4dXNoSU8rOFBza1BET1pSaUo3SlRidlFhT3hmZUxMS3A1?= =?utf-8?B?RHZRaWsydmZTQ2lUdlA3eFNxVG5sTHB6MFhHZ241V082WHJBaDh1Y3kyMWF2?= =?utf-8?B?Q2lwOU5wQ2ZlZ1M3Q29VUXRlZTErdmMxODBlaDdnUE5CRXVpU0syUHRlYjA4?= =?utf-8?B?ZkxFY2kyTkZPMk5Qb01HR3Z6ZnVqdTV3U20yeE96a1daYW9KVFB2ZzJvSGha?= =?utf-8?B?Tk1BM0RBY0ZCRnJ2dWtDd216NzVNdTR4c0w1cUYxWjdDUUlkQlJFaUZNU2h2?= =?utf-8?B?SWRDbkcxNHF6R3A5aUFOYiticFg3WXo5Y0h3UDNKZ01oRHFXTnRBUUdaSXpp?= =?utf-8?B?K0toRlE4Y1ZFN2tiditGZnk2N0NJbWFKMDFpK1pOWGVWQkZwdXVJMjdja0hp?= =?utf-8?B?a1MwUmVpVVVtNGtXZTlpN0pEdTZjdTRwejZ4eVFRa2J4Ty9KbVN3TEJaMG9M?= =?utf-8?B?UStpRG1iTWlXaHpiVldYbmc2OFJLN0R5ZUhpSFZuWlZKRzZ3dUlqVnpTYUZK?= =?utf-8?B?dE1KeHJtTXhQbnVNeGlqYWhsS3RvcGk3Q0Fvd3dXajlKQk5rUWkrVDRSdjcr?= =?utf-8?B?TkNFUjljbjgvWWFxbzFVTnZuRCsyVDNndEIzU2NzZWxRb2JSZXJBaDB3bElC?= =?utf-8?B?OUVsSGNKUmQzUHBzMXdTQmZuakt6RVJ1ZEttTlRZNzJEa2Z3MG5JUzM3bE1G?= =?utf-8?B?c2dLYitPUTBJUHk0TmZXYnljdWFRaEQzcWpPZzRXUU03RVNkbGh2YmtMaGpy?= =?utf-8?B?VjBwL0xRU3I3K1F6azFqZHRjOTk0azBNSWt5QUpacHJmNEhJMmZoOUIrZERm?= =?utf-8?B?M2J3MXN1cnlsdWJHR1FPMm5VaFZwbU9BOVBzNnNZU0x6cEJiU2VQd3RkQVow?= =?utf-8?B?eFdicUdRdWl2RW9Md3l3NkZ0YWtybDM4SFB2alVZU0hVTzFja2dmUnRPc0ZO?= =?utf-8?B?MHlpQmQyNkJlSHVUd2x1TC9Fb0RxQXZNRnF3NFhUL1VINnFWZGJsMGNaYjZR?= =?utf-8?B?emNqQjdkc1NIb3F0MHhUaTNwMC94Umh4eGZqam84S1ZQWlA0MkxPN3JtbVlk?= =?utf-8?B?M1NwZWtEeHAzNDVZMnNNZzEzbUNSd3duYXFkTEoyRmVpME1LVHoyZ3F4NVJ0?= =?utf-8?B?eDFaK2xocGhaZDZ4dFFaMnlRZFR0WE9mY3E4NytBTGhydE5nUnpvbDR1dmdE?= =?utf-8?Q?M7sLNNN/Hny3v?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d54c54b-8f4a-47e3-afa9-08d8e7b5e1f6 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2021 13:26:04.1710 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UzFZm9zMurljIfB4XkdlAUvDXFlaqPToMiHt8M1XGk9Aa5897r31u2thO/8NocCsGQADxdu8fh+M9o+JldI3DQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4544 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMgfCA0MTYgKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlm X3J4LmggfCAgMTggKwogMiBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44Y2Q0OWFjYTM0YWIKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5jCkBAIC0wLDAgKzEsNDE2 IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogSW1w bGVtZW50YXRpb24gb2YgY2hpcC10by1ob3N0IGV2ZW50IChha2EgaW5kaWNhdGlvbnMpIG9mIFdG eHh4IFNwbGl0IE1hYworICogKFdTTSkgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0y MDIwLCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBT VC1Fcmljc3NvbgorICovCisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGlu dXgvZXRoZXJkZXZpY2UuaD4KKworI2luY2x1ZGUgImhpZl9yeC5oIgorI2luY2x1ZGUgIndmeC5o IgorI2luY2x1ZGUgInNjYW4uaCIKKyNpbmNsdWRlICJiaC5oIgorI2luY2x1ZGUgInN0YS5oIgor I2luY2x1ZGUgImRhdGFfcnguaCIKKyNpbmNsdWRlICJoaWZfYXBpX2NtZC5oIgorCitzdGF0aWMg aW50IGhpZl9nZW5lcmljX2NvbmZpcm0oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkgICAgICAg Y29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCS8qIEFsbCBj b25maXJtIG1lc3NhZ2VzIHN0YXJ0IHdpdGggc3RhdHVzICovCisJaW50IHN0YXR1cyA9IGxlMzJf dG9fY3B1cCgoX19sZTMyICopYnVmKTsKKwlpbnQgY21kID0gaGlmLT5pZDsKKwlpbnQgbGVuID0g bGUxNl90b19jcHUoaGlmLT5sZW4pIC0gNDsgLyogZHJvcCBoZWFkZXIgKi8KKworCVdBUk4oIW11 dGV4X2lzX2xvY2tlZCgmd2Rldi0+aGlmX2NtZC5sb2NrKSwgImRhdGEgbG9ja2luZyBlcnJvciIp OworCisJaWYgKCF3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kKSB7CisJCWRldl93YXJuKHdkZXYtPmRl diwgInVuZXhwZWN0ZWQgY29uZmlybWF0aW9uOiAweCUuMnhcbiIsIGNtZCk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCWlmIChjbWQgIT0gd2Rldi0+aGlmX2NtZC5idWZfc2VuZC0+aWQpIHsK KwkJZGV2X3dhcm4od2Rldi0+ZGV2LAorCQkJICJjaGlwIHJlc3BvbnNlIG1pc21hdGNoIHJlcXVl c3Q6IDB4JS4yeCB2cyAweCUuMnhcbiIsCisJCQkgY21kLCB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5k LT5pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICh3ZGV2LT5oaWZfY21kLmJ1Zl9y ZWN2KSB7CisJCWlmICh3ZGV2LT5oaWZfY21kLmxlbl9yZWN2ID49IGxlbiAmJiBsZW4gPiAwKQor CQkJbWVtY3B5KHdkZXYtPmhpZl9jbWQuYnVmX3JlY3YsIGJ1ZiwgbGVuKTsKKwkJZWxzZQorCQkJ c3RhdHVzID0gLUVJTzsKKwl9CisJd2Rldi0+aGlmX2NtZC5yZXQgPSBzdGF0dXM7CisKKwljb21w bGV0ZSgmd2Rldi0+aGlmX2NtZC5kb25lKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMg aW50IGhpZl90eF9jb25maXJtKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJICBjb25zdCBzdHJ1 Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9j bmZfdHggKmJvZHkgPSBidWY7CisKKwl3ZnhfdHhfY29uZmlybV9jYih3ZGV2LCBib2R5KTsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfbXVsdGlfdHhfY29uZmlybShzdHJ1Y3Qgd2Z4 X2RldiAqd2RldiwKKwkJCQljb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpi dWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9jbmZfbXVsdGlfdHJhbnNtaXQgKmJvZHkgPSBidWY7 CisJaW50IGk7CisKKwlXQVJOKGJvZHktPm51bV90eF9jb25mcyA8PSAwLCAiY29ycnVwdGVkIG1l c3NhZ2UiKTsKKwlmb3IgKGkgPSAwOyBpIDwgYm9keS0+bnVtX3R4X2NvbmZzOyBpKyspCisJCXdm eF90eF9jb25maXJtX2NiKHdkZXYsICZib2R5LT50eF9jb25mX3BheWxvYWRbaV0pOworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGhpZl9zdGFydHVwX2luZGljYXRpb24oc3RydWN0IHdmeF9k ZXYgKndkZXYsCisJCQkJICBjb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpi dWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9pbmRfc3RhcnR1cCAqYm9keSA9IGJ1ZjsKKworCWlm IChib2R5LT5zdGF0dXMgfHwgYm9keS0+ZmlybXdhcmVfdHlwZSA+IDQpIHsKKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJyZWNlaXZlZCBpbnZhbGlkIHN0YXJ0dXAgaW5kaWNhdGlvbiIpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisJbWVtY3B5KCZ3ZGV2LT5od19jYXBzLCBib2R5LCBzaXplb2Yoc3Ry dWN0IGhpZl9pbmRfc3RhcnR1cCkpOworCWxlMTZfdG9fY3B1cygoX19sZTE2ICopJndkZXYtPmh3 X2NhcHMuaGFyZHdhcmVfaWQpOworCWxlMTZfdG9fY3B1cygoX19sZTE2ICopJndkZXYtPmh3X2Nh cHMubnVtX2lucF9jaF9idWZzKTsKKwlsZTE2X3RvX2NwdXMoKF9fbGUxNiAqKSZ3ZGV2LT5od19j YXBzLnNpemVfaW5wX2NoX2J1Zik7CisJbGUzMl90b19jcHVzKChfX2xlMzIgKikmd2Rldi0+aHdf Y2Fwcy5zdXBwb3J0ZWRfcmF0ZV9tYXNrKTsKKworCWNvbXBsZXRlKCZ3ZGV2LT5maXJtd2FyZV9y ZWFkeSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX3dha2V1cF9pbmRpY2F0aW9u KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCSBjb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBj b25zdCB2b2lkICpidWYpCit7CisJaWYgKCF3ZGV2LT5wZGF0YS5ncGlvX3dha2V1cCB8fAorCSAg ICBncGlvZF9nZXRfdmFsdWUod2Rldi0+cGRhdGEuZ3Bpb193YWtldXApID09IDApIHsKKwkJZGV2 X3dhcm4od2Rldi0+ZGV2LCAidW5leHBlY3RlZCB3YWtlLXVwIGluZGljYXRpb25cbiIpOworCQly ZXR1cm4gLUVJTzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX3JlY2VpdmVf aW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgIGNvbnN0IHN0cnVjdCBoaWZf bXNnICpoaWYsCisJCQkJICBjb25zdCB2b2lkICpidWYsIHN0cnVjdCBza19idWZmICpza2IpCit7 CisJc3RydWN0IHdmeF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlmLT5pbnRlcmZh Y2UpOworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX3J4ICpib2R5ID0gYnVmOworCisJaWYgKCF3dmlm KSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiBpZ25vcmUgcnggZGF0YSBmb3Igbm9uLWV4 aXN0ZW50IHZpZiAlZFxuIiwKKwkJCSBfX2Z1bmNfXywgaGlmLT5pbnRlcmZhY2UpOworCQlyZXR1 cm4gLUVJTzsKKwl9CisJc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IGhpZl9tc2cpICsgc2l6 ZW9mKHN0cnVjdCBoaWZfaW5kX3J4KSk7CisJd2Z4X3J4X2NiKHd2aWYsIGJvZHksIHNrYik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfZXZlbnRfaW5kaWNhdGlvbihzdHJ1Y3Qg d2Z4X2RldiAqd2RldiwKKwkJCQljb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lk ICpidWYpCit7CisJc3RydWN0IHdmeF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlm LT5pbnRlcmZhY2UpOworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX2V2ZW50ICpib2R5ID0gYnVmOwor CWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+ZXZlbnRfaWQpOworCisJaWYgKCF3dmlmKSB7 CisJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiByZWNlaXZlZCBldmVudCBmb3Igbm9uLWV4aXN0 ZW50IHZpZlxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwlzd2l0Y2ggKHR5 cGUpIHsKKwljYXNlIEhJRl9FVkVOVF9JTkRfUkNQSV9SU1NJOgorCQl3ZnhfZXZlbnRfcmVwb3J0 X3Jzc2kod3ZpZiwgYm9keS0+ZXZlbnRfZGF0YS5yY3BpX3Jzc2kpOworCQlicmVhazsKKwljYXNl IEhJRl9FVkVOVF9JTkRfQlNTTE9TVDoKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZ3dmlmLT5i ZWFjb25fbG9zc193b3JrLCAwKTsKKwkJYnJlYWs7CisJY2FzZSBISUZfRVZFTlRfSU5EX0JTU1JF R0FJTkVEOgorCQljYW5jZWxfZGVsYXllZF93b3JrKCZ3dmlmLT5iZWFjb25fbG9zc193b3JrKTsK KwkJZGV2X2RiZyh3ZGV2LT5kZXYsICJpZ25vcmUgQlNTUkVHQUlORUQgaW5kaWNhdGlvblxuIik7 CisJCWJyZWFrOworCWNhc2UgSElGX0VWRU5UX0lORF9QU19NT0RFX0VSUk9SOgorCQlkZXZfd2Fy bih3ZGV2LT5kZXYsICJlcnJvciB3aGlsZSBwcm9jZXNzaW5nIHBvd2VyIHNhdmUgcmVxdWVzdDog JWRcbiIsCisJCQkgbGUzMl90b19jcHUoYm9keS0+ZXZlbnRfZGF0YS5wc19tb2RlX2Vycm9yKSk7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRldl93YXJuKHdkZXYtPmRldiwgInVuaGFuZGxlZCBl dmVudCBpbmRpY2F0aW9uOiAlLjJ4XG4iLAorCQkJIHR5cGUpOworCQlicmVhazsKKwl9CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX3BtX21vZGVfY29tcGxldGVfaW5kaWNhdGlvbihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJICAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwK KwkJCQkJICAgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB3ZnhfdmlmICp3dmlmID0gd2Rl dl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKworCWlmICghd3ZpZikgeworCQlkZXZf d2Fybih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQgZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2aWZc biIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWNvbXBsZXRlKCZ3dmlmLT5zZXRf cG1fbW9kZV9jb21wbGV0ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfc2Nh bl9jb21wbGV0ZV9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCQljb25zdCBz dHJ1Y3QgaGlmX21zZyAqaGlmLAorCQkJCQljb25zdCB2b2lkICpidWYpCit7CisJc3RydWN0IHdm eF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlmLT5pbnRlcmZhY2UpOworCisJaWYg KCF3dmlmKSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiByZWNlaXZlZCBldmVudCBmb3Ig bm9uLWV4aXN0ZW50IHZpZlxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwl3 Znhfc2Nhbl9jb21wbGV0ZSh3dmlmKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhp Zl9qb2luX2NvbXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJCWNv bnN0IHN0cnVjdCBoaWZfbXNnICpoaWYsCisJCQkJCWNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1 Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisK KwlpZiAoIXd2aWYpIHsKKwkJZGV2X3dhcm4od2Rldi0+ZGV2LCAiJXM6IHJlY2VpdmVkIGV2ZW50 IGZvciBub24tZXhpc3RlbnQgdmlmXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlPOworCX0K KwlkZXZfd2Fybih3ZGV2LT5kZXYsICJ1bmF0dGVuZGVkIEpvaW5Db21wbGV0ZUluZFxuIik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfc3VzcGVuZF9yZXN1bWVfaW5kaWNhdGlv bihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJIGNvbnN0IHN0cnVjdCBoaWZfbXNnICpoaWYs CisJCQkJCSBjb25zdCB2b2lkICpidWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9pbmRfc3VzcGVu ZF9yZXN1bWVfdHggKmJvZHkgPSBidWY7CisJc3RydWN0IHdmeF92aWYgKnd2aWY7CisKKwlpZiAo Ym9keS0+YmNfbWNfb25seSkgeworCQl3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50 ZXJmYWNlKTsKKwkJaWYgKCF3dmlmKSB7CisJCQlkZXZfd2Fybih3ZGV2LT5kZXYsICIlczogcmVj ZWl2ZWQgZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2aWZcbiIsIF9fZnVuY19fKTsKKwkJCXJldHVy biAtRUlPOworCQl9CisJCWlmIChib2R5LT5yZXN1bWUpCisJCQl3Znhfc3VzcGVuZF9yZXN1bWVf bWMod3ZpZiwgU1RBX05PVElGWV9BV0FLRSk7CisJCWVsc2UKKwkJCXdmeF9zdXNwZW5kX3Jlc3Vt ZV9tYyh3dmlmLCBTVEFfTk9USUZZX1NMRUVQKTsKKwl9IGVsc2UgeworCQlXQVJOKGJvZHktPnBl ZXJfc3RhX3NldCwgIm1pc3VuZGVyc3Rvb2QgaW5kaWNhdGlvbiIpOworCQlXQVJOKGhpZi0+aW50 ZXJmYWNlICE9IDIsICJtaXN1bmRlcnN0b29kIGluZGljYXRpb24iKTsKKwkJaWYgKGJvZHktPnJl c3VtZSkKKwkJCXdmeF9zdXNwZW5kX2hvdF9kZXYod2RldiwgU1RBX05PVElGWV9BV0FLRSk7CisJ CWVsc2UKKwkJCXdmeF9zdXNwZW5kX2hvdF9kZXYod2RldiwgU1RBX05PVElGWV9TTEVFUCk7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX2dlbmVyaWNfaW5kaWNhdGlvbihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgIGNvbnN0IHN0cnVjdCBoaWZfbXNnICpoaWYsIGNv bnN0IHZvaWQgKmJ1ZikKK3sKKwljb25zdCBzdHJ1Y3QgaGlmX2luZF9nZW5lcmljICpib2R5ID0g YnVmOworCWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+dHlwZSk7CisKKwlzd2l0Y2ggKHR5 cGUpIHsKKwljYXNlIEhJRl9HRU5FUklDX0lORElDQVRJT05fVFlQRV9SQVc6CisJCXJldHVybiAw OworCWNhc2UgSElGX0dFTkVSSUNfSU5ESUNBVElPTl9UWVBFX1NUUklORzoKKwkJZGV2X2luZm8o d2Rldi0+ZGV2LCAiZmlybXdhcmUgc2F5czogJXNcbiIsIChjaGFyICopJmJvZHktPmRhdGEpOwor CQlyZXR1cm4gMDsKKwljYXNlIEhJRl9HRU5FUklDX0lORElDQVRJT05fVFlQRV9SWF9TVEFUUzoK KwkJbXV0ZXhfbG9jaygmd2Rldi0+cnhfc3RhdHNfbG9jayk7CisJCS8qIE9sZGVyIGZpcm13YXJl IHNlbmQgYSBnZW5lcmljIGluZGljYXRpb24gYmVzaWRlIFJ4U3RhdHMgKi8KKwkJaWYgKCF3Znhf YXBpX29sZGVyX3RoYW4od2RldiwgMSwgNCkpCisJCQlkZXZfaW5mbyh3ZGV2LT5kZXYsICJSeCB0 ZXN0IG9uZ29pbmcuIFRlbXBlcmF0dXJlOiAlZCBkZWdyZWVzIENcbiIsCisJCQkJIGJvZHktPmRh dGEucnhfc3RhdHMuY3VycmVudF90ZW1wKTsKKwkJbWVtY3B5KCZ3ZGV2LT5yeF9zdGF0cywgJmJv ZHktPmRhdGEucnhfc3RhdHMsCisJCSAgICAgICBzaXplb2Yod2Rldi0+cnhfc3RhdHMpKTsKKwkJ bXV0ZXhfdW5sb2NrKCZ3ZGV2LT5yeF9zdGF0c19sb2NrKTsKKwkJcmV0dXJuIDA7CisJY2FzZSBI SUZfR0VORVJJQ19JTkRJQ0FUSU9OX1RZUEVfVFhfUE9XRVJfTE9PUF9JTkZPOgorCQltdXRleF9s b2NrKCZ3ZGV2LT50eF9wb3dlcl9sb29wX2luZm9fbG9jayk7CisJCW1lbWNweSgmd2Rldi0+dHhf cG93ZXJfbG9vcF9pbmZvLAorCQkgICAgICAgJmJvZHktPmRhdGEudHhfcG93ZXJfbG9vcF9pbmZv LAorCQkgICAgICAgc2l6ZW9mKHdkZXYtPnR4X3Bvd2VyX2xvb3BfaW5mbykpOworCQltdXRleF91 bmxvY2soJndkZXYtPnR4X3Bvd2VyX2xvb3BfaW5mb19sb2NrKTsKKwkJcmV0dXJuIDA7CisJZGVm YXVsdDoKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJnZW5lcmljX2luZGljYXRpb246IHVua25vd24g aW5kaWNhdGlvbiB0eXBlOiAlIy44eFxuIiwKKwkJCXR5cGUpOworCQlyZXR1cm4gLUVJTzsKKwl9 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCWludCB2YWw7CisJY29uc3QgY2hhciAqc3Ry OworCWJvb2wgaGFzX3BhcmFtOworfSBoaWZfZXJyb3JzW10gPSB7CisJeyBISUZfRVJST1JfRklS TVdBUkVfUk9MTEJBQ0ssCisJCSJyb2xsYmFjayBzdGF0dXMiIH0sCisJeyBISUZfRVJST1JfRklS TVdBUkVfREVCVUdfRU5BQkxFRCwKKwkJImRlYnVnIGZlYXR1cmUgZW5hYmxlZCIgfSwKKwl7IEhJ Rl9FUlJPUl9QRFNfUEFZTE9BRCwKKwkJIlBEUyB2ZXJzaW9uIGlzIG5vdCBzdXBwb3J0ZWQiIH0s CisJeyBISUZfRVJST1JfUERTX1RFU1RGRUFUVVJFLAorCQkiUERTIGFzayBmb3IgYW4gdW5rbm93 biB0ZXN0IG1vZGUiIH0sCisJeyBISUZfRVJST1JfT09SX1ZPTFRBR0UsCisJCSJvdXQtb2YtcmFu Z2UgcG93ZXIgc3VwcGx5IHZvbHRhZ2UiLCB0cnVlIH0sCisJeyBISUZfRVJST1JfT09SX1RFTVBF UkFUVVJFLAorCQkib3V0LW9mLXJhbmdlIHRlbXBlcmF0dXJlIiwgdHJ1ZSB9LAorCXsgSElGX0VS Uk9SX1NMS19SRVFfRFVSSU5HX0tFWV9FWENIQU5HRSwKKwkJInNlY3VyZSBsaW5rIGRvZXMgbm90 IGV4cGVjdCByZXF1ZXN0IGR1cmluZyBrZXkgZXhjaGFuZ2UiIH0sCisJeyBISUZfRVJST1JfU0xL X1NFU1NJT05fS0VZLAorCQkic2VjdXJlIGxpbmsgc2Vzc2lvbiBrZXkgaXMgaW52YWxpZCIgfSwK Kwl7IEhJRl9FUlJPUl9TTEtfT1ZFUkZMT1csCisJCSJzZWN1cmUgbGluayBvdmVyZmxvdyIgfSwK Kwl7IEhJRl9FUlJPUl9TTEtfV1JPTkdfRU5DUllQVElPTl9TVEFURSwKKwkJInNlY3VyZSBsaW5r IG1lc3NhZ2VzIGxpc3QgZG9lcyBub3QgbWF0Y2ggbWVzc2FnZSBlbmNyeXB0aW9uIiB9LAorCXsg SElGX0VSUk9SX1NMS19VTkNPTkZJR1VSRUQsCisJCSJzZWN1cmUgbGluayBub3QgeWV0IGNvbmZp Z3VyZWQiIH0sCisJeyBISUZfRVJST1JfSElGX0JVU19GUkVRVUVOQ1lfVE9PX0xPVywKKwkJImJ1 cyBjbG9jayBpcyB0b28gc2xvdyAoPDFrSHopIiB9LAorCXsgSElGX0VSUk9SX0hJRl9SWF9EQVRB X1RPT19MQVJHRSwKKwkJIkhJRiBtZXNzYWdlIHRvbyBsYXJnZSIgfSwKKwkvKiBGb2xsb3dpbmcg ZXJyb3JzIG9ubHkgZXhpc3RzIGluIG9sZCBmaXJtd2FyZSB2ZXJzaW9uczogKi8KKwl7IEhJRl9F UlJPUl9ISUZfVFhfUVVFVUVfRlVMTCwKKwkJIkhJRiBtZXNzYWdlcyBxdWV1ZSBpcyBmdWxsIiB9 LAorCXsgSElGX0VSUk9SX0hJRl9CVVMsCisJCSJISUYgYnVzIiB9LAorCXsgSElGX0VSUk9SX1NM S19NVUxUSV9UWF9VTlNVUFBPUlRFRCwKKwkJInNlY3VyZSBsaW5rIGRvZXMgbm90IHN1cHBvcnQg bXVsdGktdHggY29uZmlybWF0aW9ucyIgfSwKKwl7IEhJRl9FUlJPUl9TTEtfT1VUREFURURfU0VT U0lPTl9LRVksCisJCSJzZWN1cmUgbGluayBzZXNzaW9uIGtleSBpcyBvdXRkYXRlZCIgfSwKKwl7 IEhJRl9FUlJPUl9TTEtfREVDUllQVElPTiwKKwkJInNlY3VyZSBsaW5rIHBhcmFtcyAobm9uY2Ug b3IgdGFnKSBtaXNtYXRjaCIgfSwKK307CisKK3N0YXRpYyBpbnQgaGlmX2Vycm9yX2luZGljYXRp b24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwg Y29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX2Vycm9yICpib2R5ID0g YnVmOworCWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+dHlwZSk7CisJaW50IHBhcmFtID0g KHM4KWJvZHktPmRhdGFbMF07CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShoaWZfZXJyb3JzKTsgaSsrKQorCQlpZiAodHlwZSA9PSBoaWZfZXJyb3JzW2ldLnZhbCkKKwkJ CWJyZWFrOworCWlmIChpIDwgQVJSQVlfU0laRShoaWZfZXJyb3JzKSkKKwkJaWYgKGhpZl9lcnJv cnNbaV0uaGFzX3BhcmFtKQorCQkJZGV2X2Vycih3ZGV2LT5kZXYsICJhc3luY2hyb25vdXMgZXJy b3I6ICVzOiAlZFxuIiwKKwkJCQloaWZfZXJyb3JzW2ldLnN0ciwgcGFyYW0pOworCQllbHNlCisJ CQlkZXZfZXJyKHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjogJXNcbiIsCisJCQkJaGlm X2Vycm9yc1tpXS5zdHIpOworCWVsc2UKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJhc3luY2hyb25v dXMgZXJyb3I6IHVua25vd246ICUwOHhcbiIsIHR5cGUpOworCXByaW50X2hleF9kdW1wKEtFUk5f SU5GTywgImhpZjogIiwgRFVNUF9QUkVGSVhfT0ZGU0VULAorCQkgICAgICAgMTYsIDEsIGhpZiwg bGUxNl90b19jcHUoaGlmLT5sZW4pLCBmYWxzZSk7CisJd2Rldi0+Y2hpcF9mcm96ZW4gPSB0cnVl OworCisJcmV0dXJuIDA7Cit9OworCitzdGF0aWMgaW50IGhpZl9leGNlcHRpb25faW5kaWNhdGlv bihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhp ZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX2V4Y2VwdGlvbiAq Ym9keSA9IGJ1ZjsKKwlpbnQgdHlwZSA9IGxlMzJfdG9fY3B1KGJvZHktPnR5cGUpOworCisJaWYg KHR5cGUgPT0gNCkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJmaXJtd2FyZSBhc3NlcnQgJWRcbiIs CisJCQlsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWJvZHktPmRhdGEpKTsKKwllbHNlCisJCWRldl9l cnIod2Rldi0+ZGV2LCAiZmlybXdhcmUgZXhjZXB0aW9uXG4iKTsKKwlwcmludF9oZXhfZHVtcChL RVJOX0lORk8sICJoaWY6ICIsIERVTVBfUFJFRklYX09GRlNFVCwKKwkJICAgICAgIDE2LCAxLCBo aWYsIGxlMTZfdG9fY3B1KGhpZi0+bGVuKSwgZmFsc2UpOworCXdkZXYtPmNoaXBfZnJvemVuID0g dHJ1ZTsKKworCXJldHVybiAtMTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJaW50IG1z Z19pZDsKKwlpbnQgKCpoYW5kbGVyKShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJICAgICAgIGNv bnN0IHN0cnVjdCBoaWZfbXNnICpoaWYsIGNvbnN0IHZvaWQgKmJ1Zik7Cit9IGhpZl9oYW5kbGVy c1tdID0geworCS8qIENvbmZpcm1hdGlvbnMgKi8KKwl7IEhJRl9DTkZfSURfVFgsICAgICAgICAg ICAgICAgICAgIGhpZl90eF9jb25maXJtIH0sCisJeyBISUZfQ05GX0lEX01VTFRJX1RSQU5TTUlU LCAgICAgICBoaWZfbXVsdGlfdHhfY29uZmlybSB9LAorCS8qIEluZGljYXRpb25zICovCisJeyBI SUZfSU5EX0lEX1NUQVJUVVAsICAgICAgICAgICAgICBoaWZfc3RhcnR1cF9pbmRpY2F0aW9uIH0s CisJeyBISUZfSU5EX0lEX1dBS0VVUCwgICAgICAgICAgICAgICBoaWZfd2FrZXVwX2luZGljYXRp b24gfSwKKwl7IEhJRl9JTkRfSURfSk9JTl9DT01QTEVURSwgICAgICAgIGhpZl9qb2luX2NvbXBs ZXRlX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfU0VUX1BNX01PREVfQ01QTCwgICAgIGhp Zl9wbV9tb2RlX2NvbXBsZXRlX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfU0NBTl9DTVBM LCAgICAgICAgICAgIGhpZl9zY2FuX2NvbXBsZXRlX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRf SURfU1VTUEVORF9SRVNVTUVfVFgsICAgIGhpZl9zdXNwZW5kX3Jlc3VtZV9pbmRpY2F0aW9uIH0s CisJeyBISUZfSU5EX0lEX0VWRU5ULCAgICAgICAgICAgICAgICBoaWZfZXZlbnRfaW5kaWNhdGlv biB9LAorCXsgSElGX0lORF9JRF9HRU5FUklDLCAgICAgICAgICAgICAgaGlmX2dlbmVyaWNfaW5k aWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9FUlJPUiwgICAgICAgICAgICAgICAgaGlmX2Vycm9y X2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfRVhDRVBUSU9OLCAgICAgICAgICAgIGhpZl9l eGNlcHRpb25faW5kaWNhdGlvbiB9LAorCS8qIEZJWE1FOiBhbGxvY2F0ZSBza2JfcCBmcm9tIGhp Zl9yZWNlaXZlX2luZGljYXRpb24gYW5kIG1ha2UgaXQgZ2VuZXJpYyAqLworCS8veyBISUZfSU5E X0lEX1JYLCAgICAgICAgICAgICAgICAgaGlmX3JlY2VpdmVfaW5kaWNhdGlvbiB9LAorfTsKKwor dm9pZCB3ZnhfaGFuZGxlX3J4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQoreworCWludCBpOworCWNvbnN0IHN0cnVjdCBoaWZfbXNnICpoaWYgPSAoY29uc3Qgc3Ry dWN0IGhpZl9tc2cgKilza2ItPmRhdGE7CisJaW50IGhpZl9pZCA9IGhpZi0+aWQ7CisKKwlpZiAo aGlmX2lkID09IEhJRl9JTkRfSURfUlgpIHsKKwkJLyogaGlmX3JlY2VpdmVfaW5kaWNhdGlvbiB0 YWtlIGNhcmUgb2Ygc2tiIGxpZmV0aW1lICovCisJCWhpZl9yZWNlaXZlX2luZGljYXRpb24od2Rl diwgaGlmLCBoaWYtPmJvZHksIHNrYik7CisJCXJldHVybjsKKwl9CisJLyogTm90ZTogbXV0ZXhf aXNfbG9jayBjYXVzZSBhbiBpbXBsaWNpdCBtZW1vcnkgYmFycmllciB0aGF0IHByb3RlY3QKKwkg KiBidWZfc2VuZAorCSAqLworCWlmIChtdXRleF9pc19sb2NrZWQoJndkZXYtPmhpZl9jbWQubG9j aykgJiYKKwkgICAgd2Rldi0+aGlmX2NtZC5idWZfc2VuZCAmJgorCSAgICB3ZGV2LT5oaWZfY21k LmJ1Zl9zZW5kLT5pZCA9PSBoaWZfaWQpIHsKKwkJaGlmX2dlbmVyaWNfY29uZmlybSh3ZGV2LCBo aWYsIGhpZi0+Ym9keSk7CisJCWdvdG8gZnJlZTsKKwl9CisJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoaGlmX2hhbmRsZXJzKTsgaSsrKSB7CisJCWlmIChoaWZfaGFuZGxlcnNbaV0ubXNnX2lk ID09IGhpZl9pZCkgeworCQkJaWYgKGhpZl9oYW5kbGVyc1tpXS5oYW5kbGVyKQorCQkJCWhpZl9o YW5kbGVyc1tpXS5oYW5kbGVyKHdkZXYsIGhpZiwgaGlmLT5ib2R5KTsKKwkJCWdvdG8gZnJlZTsK KwkJfQorCX0KKwlpZiAoaGlmX2lkICYgMHg4MCkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJ1bnN1 cHBvcnRlZCBISUYgaW5kaWNhdGlvbjogSUQgJTAyeFxuIiwKKwkJCWhpZl9pZCk7CisJZWxzZQor CQlkZXZfZXJyKHdkZXYtPmRldiwgInVuZXhwZWN0ZWQgSElGIGNvbmZpcm1hdGlvbjogSUQgJTAy eFxuIiwKKwkJCWhpZl9pZCk7CitmcmVlOgorCWRldl9rZnJlZV9za2Ioc2tiKTsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmggYi9kcml2ZXJz L25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uZjA3YzEwYzhjNmJkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguaApAQCAtMCwwICsxLDE4IEBACisvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogSW1wbGVtZW50 YXRpb24gb2YgY2hpcC10by1ob3N0IGV2ZW50IChha2EgaW5kaWNhdGlvbnMpIG9mIFdGeHh4IFNw bGl0IE1hYworICogKFdTTSkgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBT aWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmlj c3NvbgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBTVC1Fcmljc3NvbiBTQQorICovCisjaWZuZGVm IFdGWF9ISUZfUlhfSAorI2RlZmluZSBXRlhfSElGX1JYX0gKKworc3RydWN0IHdmeF9kZXY7Citz dHJ1Y3Qgc2tfYnVmZjsKKwordm9pZCB3ZnhfaGFuZGxlX3J4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworI2VuZGlmCi0tIAoyLjMwLjIKCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D4DCAC433E0 for ; Mon, 15 Mar 2021 13:28:39 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8332F64ED2 for ; Mon, 15 Mar 2021 13:28:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8332F64ED2 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=driverdev-devel-bounces@linuxdriverproject.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id 23C834CE53; Mon, 15 Mar 2021 13:28:39 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QNczb2rq6wB4; Mon, 15 Mar 2021 13:28:37 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by smtp4.osuosl.org (Postfix) with ESMTP id 3F7D84D7DE; Mon, 15 Mar 2021 13:28:37 +0000 (UTC) Received: from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 18CBB1BF31D for ; Mon, 15 Mar 2021 13:26:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 154B1835A6 for ; Mon, 15 Mar 2021 13:26:07 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp1.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ixbXVOABbiyh for ; Mon, 15 Mar 2021 13:26:05 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.8.0 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2048.outbound.protection.outlook.com [40.107.94.48]) by smtp1.osuosl.org (Postfix) with ESMTPS id BC1FB834B6 for ; Mon, 15 Mar 2021 13:26:05 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XDmOzMxiUghLmQAi//6c/+UhcnciugF1glCnDguHI4l4SDthFwTczhSjuO6cnX1PZSqOf41ETEw+ElsXtE1wYYK9ZbxBFAPDgGzPfpjaM2xryef9AVUu4ifaH0sVWiSnaNh9pC6LJNdfCurxFaYyZPK8/MhKynGP+5wBEl8xmbnrT/hk3UAzGC0lVkjvE2LCCP0q3o8YMm8di59/ElA2fz1DplFxJLanTG+PaF0jgbe5r4ywd6gS5uyRIdS+eDF9aXpkxXPRZLztE7oGLwbTM2Skao8kj71JGPVbLdwPfKwtSNd6RCqjRABf4YJgqdNzj1igRM6QKq4YGSmoI3Ni8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ye2hPOexgr/w7y/yM+mmq30IJeyB4N82T+jMJi19m08=; b=gy05DSH6tr1W6EAUAWJLULHNHh2PHoRvzNJw6V34yboiLX+fzOCkUs3BN/uiAAVqBV7GU4ZedD4xHdTKVNo7d4mtcxJ60mSaqQiiybXVudx3nP7+LOQRDgWdhPDXavDhYMPD139R+wPc2YxTB7FVwM4sKa2xj3ndBBvNhalyXV16ZmFoVr01hq0muC9RHTNAAcxr++Ze+wRjiPbv8sBSJqNrkKC8p89lBTM0eouVwCfAzsFLbELsfoGszIFmZMGDjVqq4Z7f00cxNeFaTtEjtz3tXF8OyZWISAbw8T0WkyHUnRb+3tEl3NjihjlaACqXl9hGVmJd27uC30ytfRaURA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ye2hPOexgr/w7y/yM+mmq30IJeyB4N82T+jMJi19m08=; b=As6JzOLmoZRVzjRXeZ1o77MeLaJ72wA70lHiUZo8LaU8DiPHrtv/hwZy6VbFMdoKaNGVjLwKPPQ6ufw7WDT3B8RcDdP4SmZiqmXyjovZI3l7OgovPHwmlHQz6IxnVTXhWCvwDA6fXU6FGnZd86NhKyjBL2qQCHzfTgbFbl5Fjsc= Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SA0PR11MB4544.namprd11.prod.outlook.com (2603:10b6:806:92::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.32; Mon, 15 Mar 2021 13:26:04 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::41bc:5ce:dfa0:9701]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::41bc:5ce:dfa0:9701%7]) with mapi id 15.20.3933.032; Mon, 15 Mar 2021 13:26:04 +0000 From: Jerome Pouiller To: linux-wireless@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v5 15/24] wfx: add hif_rx.c/hif_rx.h Date: Mon, 15 Mar 2021 14:24:52 +0100 Message-Id: <20210315132501.441681-16-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210315132501.441681-1-Jerome.Pouiller@silabs.com> References: <20210315132501.441681-1-Jerome.Pouiller@silabs.com> X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-ClientProxiedBy: SN4PR0801CA0014.namprd08.prod.outlook.com (2603:10b6:803:29::24) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by SN4PR0801CA0014.namprd08.prod.outlook.com (2603:10b6:803:29::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3933.32 via Frontend Transport; Mon, 15 Mar 2021 13:26:01 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7d54c54b-8f4a-47e3-afa9-08d8e7b5e1f6 X-MS-TrafficTypeDiagnostic: SA0PR11MB4544: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1417; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1DEp2dSUJYBU5Mmq0FZyN5H7qiudjVtxVgmAhfwjreL/Gzdo/bYI8iyiLoRp5SXHBUuY8pLV5wF30FPubhNr3TZlhNvOUxhjHDmbZO6onRHV2pNLHKw4viwmoSc7g4D6sFNxGbHBxXS2K/kX5f3S/RzlH5chdXWcrTJGrAGCCZqEHPl8Yv+HtSd4C+GWPuraZwBkChS9IMK3UcZkVgQLvQY8YVBqyAbZRG39A7OkIH7rBLEgTaBlKPd1M/ORmMKBvI7+hTwqnKH3dFA8oI+aHe1jBGzFDaaOJ0kffCnUQdsksH52qSq/RPdmjXUYudxST+pXA8Uum0sQlrz69MLjFa/EK/b5xST937J+U5MV/ZlvlnjpkhRTrXPRgvRWxu+AfYv0PlPKCarCVRcHV8kIERUuO+grTjqH2th7v+yVl7dn5kdlNRY7cJFx6Pq+v8hCXI48XQnU0eHps3VNyRT29X0cYStRnNJKHKNfQ4LFRR7rKoN0DKtixobFYkJ5wyet+Wrrs7TqpBYffaNP/ki/e2iY2nMxjMUrw37G4q5GpzLE86BZnC96iFdxjYvhN8zC X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2718.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(346002)(396003)(366004)(376002)(39850400004)(136003)(66574015)(8676002)(186003)(52116002)(86362001)(5660300002)(6486002)(7696005)(2906002)(83380400001)(4326008)(66476007)(16526019)(2616005)(30864003)(107886003)(66946007)(8936002)(66556008)(1076003)(478600001)(6666004)(36756003)(7416002)(316002)(54906003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?cC8xcUNLVjNYU2V6aUdTcUZIeWZJYXdlbXd6V2I3NkliNzkxSEg0QUVEc0tX?= =?utf-8?B?VHdhOTBCSWxVMUxFTTdlQWNQVVVVaWZ5cjU3S3piZjIzaHQ0RHNvTmRrQitU?= =?utf-8?B?Tlk1RFlGT3cxYlBmbkFoODBkdjZuMExXWC9LeVJJTmswNjZ4aDdJV2ZiRXdD?= =?utf-8?B?Ly9LYzdUUzV1S21VclU0ZUxNVW1sOGhTN1BucmFMQWtMNmxSUGR2Z3k1VEVT?= =?utf-8?B?VjZOd1pZOVNTSXRNSE5HTC9sN1FUempVWmZZVTFQTUQxNVBoMzZnRDBvdllh?= =?utf-8?B?ZHBLTjZrcER5R3ZxaitHT3RGOWRaQ2NqanoxZlRobTRnU3c1OHVEdkdYb0lz?= =?utf-8?B?R2ZqQ1ZzSHFOcEppRUcrTXd4bldFenY5c2FnMWRsbjRaNjlURzR1Nkw4L2dr?= =?utf-8?B?aDdlTmxBMzJ0cW8yMXlYUmd3VG5jRmJwZ01mZzh0ekFjdnRoWmVBNDkvZFZj?= =?utf-8?B?TzRvWjBJQmprMm9oZWVCQkdVWUlvYkl3VjkyZWxsNGpncVM0YTFwaW1kZ0dN?= =?utf-8?B?NTFoZjhqOXlENHB3UEtEVnlwL3VtZFNaaEVZTkIyOWMreHppcTdlNm9aWTJi?= =?utf-8?B?ZzdQWVlhbmZWaGVFbk54cXdOalkrNFpXb2VMZ1Vhck9kOXVvc25MRzF1clFy?= =?utf-8?B?V2lXVkswbWcrd0c4dXNoSU8rOFBza1BET1pSaUo3SlRidlFhT3hmZUxMS3A1?= =?utf-8?B?RHZRaWsydmZTQ2lUdlA3eFNxVG5sTHB6MFhHZ241V082WHJBaDh1Y3kyMWF2?= =?utf-8?B?Q2lwOU5wQ2ZlZ1M3Q29VUXRlZTErdmMxODBlaDdnUE5CRXVpU0syUHRlYjA4?= =?utf-8?B?ZkxFY2kyTkZPMk5Qb01HR3Z6ZnVqdTV3U20yeE96a1daYW9KVFB2ZzJvSGha?= =?utf-8?B?Tk1BM0RBY0ZCRnJ2dWtDd216NzVNdTR4c0w1cUYxWjdDUUlkQlJFaUZNU2h2?= =?utf-8?B?SWRDbkcxNHF6R3A5aUFOYiticFg3WXo5Y0h3UDNKZ01oRHFXTnRBUUdaSXpp?= =?utf-8?B?K0toRlE4Y1ZFN2tiditGZnk2N0NJbWFKMDFpK1pOWGVWQkZwdXVJMjdja0hp?= =?utf-8?B?a1MwUmVpVVVtNGtXZTlpN0pEdTZjdTRwejZ4eVFRa2J4Ty9KbVN3TEJaMG9M?= =?utf-8?B?UStpRG1iTWlXaHpiVldYbmc2OFJLN0R5ZUhpSFZuWlZKRzZ3dUlqVnpTYUZK?= =?utf-8?B?dE1KeHJtTXhQbnVNeGlqYWhsS3RvcGk3Q0Fvd3dXajlKQk5rUWkrVDRSdjcr?= =?utf-8?B?TkNFUjljbjgvWWFxbzFVTnZuRCsyVDNndEIzU2NzZWxRb2JSZXJBaDB3bElC?= =?utf-8?B?OUVsSGNKUmQzUHBzMXdTQmZuakt6RVJ1ZEttTlRZNzJEa2Z3MG5JUzM3bE1G?= =?utf-8?B?c2dLYitPUTBJUHk0TmZXYnljdWFRaEQzcWpPZzRXUU03RVNkbGh2YmtMaGpy?= =?utf-8?B?VjBwL0xRU3I3K1F6azFqZHRjOTk0azBNSWt5QUpacHJmNEhJMmZoOUIrZERm?= =?utf-8?B?M2J3MXN1cnlsdWJHR1FPMm5VaFZwbU9BOVBzNnNZU0x6cEJiU2VQd3RkQVow?= =?utf-8?B?eFdicUdRdWl2RW9Md3l3NkZ0YWtybDM4SFB2alVZU0hVTzFja2dmUnRPc0ZO?= =?utf-8?B?MHlpQmQyNkJlSHVUd2x1TC9Fb0RxQXZNRnF3NFhUL1VINnFWZGJsMGNaYjZR?= =?utf-8?B?emNqQjdkc1NIb3F0MHhUaTNwMC94Umh4eGZqam84S1ZQWlA0MkxPN3JtbVlk?= =?utf-8?B?M1NwZWtEeHAzNDVZMnNNZzEzbUNSd3duYXFkTEoyRmVpME1LVHoyZ3F4NVJ0?= =?utf-8?B?eDFaK2xocGhaZDZ4dFFaMnlRZFR0WE9mY3E4NytBTGhydE5nUnpvbDR1dmdE?= =?utf-8?Q?M7sLNNN/Hny3v?= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d54c54b-8f4a-47e3-afa9-08d8e7b5e1f6 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Mar 2021 13:26:04.1710 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UzFZm9zMurljIfB4XkdlAUvDXFlaqPToMiHt8M1XGk9Aa5897r31u2thO/8NocCsGQADxdu8fh+M9o+JldI3DQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4544 X-BeenThere: driverdev-devel@linuxdriverproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Driver Project Developer List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devel@driverdev.osuosl.org, devicetree@vger.kernel.org, Ulf Hansson , Greg Kroah-Hartman , linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Herring , =?UTF-8?q?Pali=20Roh=C3=A1r?= , "David S . Miller" , Kalle Valo Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMgfCA0MTYgKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlm X3J4LmggfCAgMTggKwogMiBmaWxlcyBjaGFuZ2VkLCA0MzQgaW5zZXJ0aW9ucygrKQogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguYyBi L2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmMKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44Y2Q0OWFjYTM0YWIKLS0tIC9kZXYvbnVsbAorKysg Yi9kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5jCkBAIC0wLDAgKzEsNDE2 IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogSW1w bGVtZW50YXRpb24gb2YgY2hpcC10by1ob3N0IGV2ZW50IChha2EgaW5kaWNhdGlvbnMpIG9mIFdG eHh4IFNwbGl0IE1hYworICogKFdTTSkgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0y MDIwLCBTaWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBT VC1Fcmljc3NvbgorICovCisjaW5jbHVkZSA8bGludXgvc2tidWZmLmg+CisjaW5jbHVkZSA8bGlu dXgvZXRoZXJkZXZpY2UuaD4KKworI2luY2x1ZGUgImhpZl9yeC5oIgorI2luY2x1ZGUgIndmeC5o IgorI2luY2x1ZGUgInNjYW4uaCIKKyNpbmNsdWRlICJiaC5oIgorI2luY2x1ZGUgInN0YS5oIgor I2luY2x1ZGUgImRhdGFfcnguaCIKKyNpbmNsdWRlICJoaWZfYXBpX2NtZC5oIgorCitzdGF0aWMg aW50IGhpZl9nZW5lcmljX2NvbmZpcm0oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkgICAgICAg Y29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCS8qIEFsbCBj b25maXJtIG1lc3NhZ2VzIHN0YXJ0IHdpdGggc3RhdHVzICovCisJaW50IHN0YXR1cyA9IGxlMzJf dG9fY3B1cCgoX19sZTMyICopYnVmKTsKKwlpbnQgY21kID0gaGlmLT5pZDsKKwlpbnQgbGVuID0g bGUxNl90b19jcHUoaGlmLT5sZW4pIC0gNDsgLyogZHJvcCBoZWFkZXIgKi8KKworCVdBUk4oIW11 dGV4X2lzX2xvY2tlZCgmd2Rldi0+aGlmX2NtZC5sb2NrKSwgImRhdGEgbG9ja2luZyBlcnJvciIp OworCisJaWYgKCF3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5kKSB7CisJCWRldl93YXJuKHdkZXYtPmRl diwgInVuZXhwZWN0ZWQgY29uZmlybWF0aW9uOiAweCUuMnhcbiIsIGNtZCk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCWlmIChjbWQgIT0gd2Rldi0+aGlmX2NtZC5idWZfc2VuZC0+aWQpIHsK KwkJZGV2X3dhcm4od2Rldi0+ZGV2LAorCQkJICJjaGlwIHJlc3BvbnNlIG1pc21hdGNoIHJlcXVl c3Q6IDB4JS4yeCB2cyAweCUuMnhcbiIsCisJCQkgY21kLCB3ZGV2LT5oaWZfY21kLmJ1Zl9zZW5k LT5pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmICh3ZGV2LT5oaWZfY21kLmJ1Zl9y ZWN2KSB7CisJCWlmICh3ZGV2LT5oaWZfY21kLmxlbl9yZWN2ID49IGxlbiAmJiBsZW4gPiAwKQor CQkJbWVtY3B5KHdkZXYtPmhpZl9jbWQuYnVmX3JlY3YsIGJ1ZiwgbGVuKTsKKwkJZWxzZQorCQkJ c3RhdHVzID0gLUVJTzsKKwl9CisJd2Rldi0+aGlmX2NtZC5yZXQgPSBzdGF0dXM7CisKKwljb21w bGV0ZSgmd2Rldi0+aGlmX2NtZC5kb25lKTsKKwlyZXR1cm4gc3RhdHVzOworfQorCitzdGF0aWMg aW50IGhpZl90eF9jb25maXJtKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJICBjb25zdCBzdHJ1 Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpidWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9j bmZfdHggKmJvZHkgPSBidWY7CisKKwl3ZnhfdHhfY29uZmlybV9jYih3ZGV2LCBib2R5KTsKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfbXVsdGlfdHhfY29uZmlybShzdHJ1Y3Qgd2Z4 X2RldiAqd2RldiwKKwkJCQljb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpi dWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9jbmZfbXVsdGlfdHJhbnNtaXQgKmJvZHkgPSBidWY7 CisJaW50IGk7CisKKwlXQVJOKGJvZHktPm51bV90eF9jb25mcyA8PSAwLCAiY29ycnVwdGVkIG1l c3NhZ2UiKTsKKwlmb3IgKGkgPSAwOyBpIDwgYm9keS0+bnVtX3R4X2NvbmZzOyBpKyspCisJCXdm eF90eF9jb25maXJtX2NiKHdkZXYsICZib2R5LT50eF9jb25mX3BheWxvYWRbaV0pOworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGhpZl9zdGFydHVwX2luZGljYXRpb24oc3RydWN0IHdmeF9k ZXYgKndkZXYsCisJCQkJICBjb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lkICpi dWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9pbmRfc3RhcnR1cCAqYm9keSA9IGJ1ZjsKKworCWlm IChib2R5LT5zdGF0dXMgfHwgYm9keS0+ZmlybXdhcmVfdHlwZSA+IDQpIHsKKwkJZGV2X2Vycih3 ZGV2LT5kZXYsICJyZWNlaXZlZCBpbnZhbGlkIHN0YXJ0dXAgaW5kaWNhdGlvbiIpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisJbWVtY3B5KCZ3ZGV2LT5od19jYXBzLCBib2R5LCBzaXplb2Yoc3Ry dWN0IGhpZl9pbmRfc3RhcnR1cCkpOworCWxlMTZfdG9fY3B1cygoX19sZTE2ICopJndkZXYtPmh3 X2NhcHMuaGFyZHdhcmVfaWQpOworCWxlMTZfdG9fY3B1cygoX19sZTE2ICopJndkZXYtPmh3X2Nh cHMubnVtX2lucF9jaF9idWZzKTsKKwlsZTE2X3RvX2NwdXMoKF9fbGUxNiAqKSZ3ZGV2LT5od19j YXBzLnNpemVfaW5wX2NoX2J1Zik7CisJbGUzMl90b19jcHVzKChfX2xlMzIgKikmd2Rldi0+aHdf Y2Fwcy5zdXBwb3J0ZWRfcmF0ZV9tYXNrKTsKKworCWNvbXBsZXRlKCZ3ZGV2LT5maXJtd2FyZV9y ZWFkeSk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX3dha2V1cF9pbmRpY2F0aW9u KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCSBjb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBj b25zdCB2b2lkICpidWYpCit7CisJaWYgKCF3ZGV2LT5wZGF0YS5ncGlvX3dha2V1cCB8fAorCSAg ICBncGlvZF9nZXRfdmFsdWUod2Rldi0+cGRhdGEuZ3Bpb193YWtldXApID09IDApIHsKKwkJZGV2 X3dhcm4od2Rldi0+ZGV2LCAidW5leHBlY3RlZCB3YWtlLXVwIGluZGljYXRpb25cbiIpOworCQly ZXR1cm4gLUVJTzsKKwl9CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX3JlY2VpdmVf aW5kaWNhdGlvbihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgIGNvbnN0IHN0cnVjdCBoaWZf bXNnICpoaWYsCisJCQkJICBjb25zdCB2b2lkICpidWYsIHN0cnVjdCBza19idWZmICpza2IpCit7 CisJc3RydWN0IHdmeF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlmLT5pbnRlcmZh Y2UpOworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX3J4ICpib2R5ID0gYnVmOworCisJaWYgKCF3dmlm KSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiBpZ25vcmUgcnggZGF0YSBmb3Igbm9uLWV4 aXN0ZW50IHZpZiAlZFxuIiwKKwkJCSBfX2Z1bmNfXywgaGlmLT5pbnRlcmZhY2UpOworCQlyZXR1 cm4gLUVJTzsKKwl9CisJc2tiX3B1bGwoc2tiLCBzaXplb2Yoc3RydWN0IGhpZl9tc2cpICsgc2l6 ZW9mKHN0cnVjdCBoaWZfaW5kX3J4KSk7CisJd2Z4X3J4X2NiKHd2aWYsIGJvZHksIHNrYik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfZXZlbnRfaW5kaWNhdGlvbihzdHJ1Y3Qg d2Z4X2RldiAqd2RldiwKKwkJCQljb25zdCBzdHJ1Y3QgaGlmX21zZyAqaGlmLCBjb25zdCB2b2lk ICpidWYpCit7CisJc3RydWN0IHdmeF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlm LT5pbnRlcmZhY2UpOworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX2V2ZW50ICpib2R5ID0gYnVmOwor CWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+ZXZlbnRfaWQpOworCisJaWYgKCF3dmlmKSB7 CisJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiByZWNlaXZlZCBldmVudCBmb3Igbm9uLWV4aXN0 ZW50IHZpZlxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwlzd2l0Y2ggKHR5 cGUpIHsKKwljYXNlIEhJRl9FVkVOVF9JTkRfUkNQSV9SU1NJOgorCQl3ZnhfZXZlbnRfcmVwb3J0 X3Jzc2kod3ZpZiwgYm9keS0+ZXZlbnRfZGF0YS5yY3BpX3Jzc2kpOworCQlicmVhazsKKwljYXNl IEhJRl9FVkVOVF9JTkRfQlNTTE9TVDoKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZ3dmlmLT5i ZWFjb25fbG9zc193b3JrLCAwKTsKKwkJYnJlYWs7CisJY2FzZSBISUZfRVZFTlRfSU5EX0JTU1JF R0FJTkVEOgorCQljYW5jZWxfZGVsYXllZF93b3JrKCZ3dmlmLT5iZWFjb25fbG9zc193b3JrKTsK KwkJZGV2X2RiZyh3ZGV2LT5kZXYsICJpZ25vcmUgQlNTUkVHQUlORUQgaW5kaWNhdGlvblxuIik7 CisJCWJyZWFrOworCWNhc2UgSElGX0VWRU5UX0lORF9QU19NT0RFX0VSUk9SOgorCQlkZXZfd2Fy bih3ZGV2LT5kZXYsICJlcnJvciB3aGlsZSBwcm9jZXNzaW5nIHBvd2VyIHNhdmUgcmVxdWVzdDog JWRcbiIsCisJCQkgbGUzMl90b19jcHUoYm9keS0+ZXZlbnRfZGF0YS5wc19tb2RlX2Vycm9yKSk7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCWRldl93YXJuKHdkZXYtPmRldiwgInVuaGFuZGxlZCBl dmVudCBpbmRpY2F0aW9uOiAlLjJ4XG4iLAorCQkJIHR5cGUpOworCQlicmVhazsKKwl9CisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX3BtX21vZGVfY29tcGxldGVfaW5kaWNhdGlvbihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJICAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwK KwkJCQkJICAgY29uc3Qgdm9pZCAqYnVmKQoreworCXN0cnVjdCB3ZnhfdmlmICp3dmlmID0gd2Rl dl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKworCWlmICghd3ZpZikgeworCQlkZXZf d2Fybih3ZGV2LT5kZXYsICIlczogcmVjZWl2ZWQgZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2aWZc biIsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU87CisJfQorCWNvbXBsZXRlKCZ3dmlmLT5zZXRf cG1fbW9kZV9jb21wbGV0ZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfc2Nh bl9jb21wbGV0ZV9pbmRpY2F0aW9uKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LAorCQkJCQljb25zdCBz dHJ1Y3QgaGlmX21zZyAqaGlmLAorCQkJCQljb25zdCB2b2lkICpidWYpCit7CisJc3RydWN0IHdm eF92aWYgKnd2aWYgPSB3ZGV2X3RvX3d2aWYod2RldiwgaGlmLT5pbnRlcmZhY2UpOworCisJaWYg KCF3dmlmKSB7CisJCWRldl93YXJuKHdkZXYtPmRldiwgIiVzOiByZWNlaXZlZCBldmVudCBmb3Ig bm9uLWV4aXN0ZW50IHZpZlxuIiwgX19mdW5jX18pOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwl3 Znhfc2Nhbl9jb21wbGV0ZSh3dmlmKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGhp Zl9qb2luX2NvbXBsZXRlX2luZGljYXRpb24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJCWNv bnN0IHN0cnVjdCBoaWZfbXNnICpoaWYsCisJCQkJCWNvbnN0IHZvaWQgKmJ1ZikKK3sKKwlzdHJ1 Y3Qgd2Z4X3ZpZiAqd3ZpZiA9IHdkZXZfdG9fd3ZpZih3ZGV2LCBoaWYtPmludGVyZmFjZSk7CisK KwlpZiAoIXd2aWYpIHsKKwkJZGV2X3dhcm4od2Rldi0+ZGV2LCAiJXM6IHJlY2VpdmVkIGV2ZW50 IGZvciBub24tZXhpc3RlbnQgdmlmXG4iLCBfX2Z1bmNfXyk7CisJCXJldHVybiAtRUlPOworCX0K KwlkZXZfd2Fybih3ZGV2LT5kZXYsICJ1bmF0dGVuZGVkIEpvaW5Db21wbGV0ZUluZFxuIik7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoaWZfc3VzcGVuZF9yZXN1bWVfaW5kaWNhdGlv bihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkJIGNvbnN0IHN0cnVjdCBoaWZfbXNnICpoaWYs CisJCQkJCSBjb25zdCB2b2lkICpidWYpCit7CisJY29uc3Qgc3RydWN0IGhpZl9pbmRfc3VzcGVu ZF9yZXN1bWVfdHggKmJvZHkgPSBidWY7CisJc3RydWN0IHdmeF92aWYgKnd2aWY7CisKKwlpZiAo Ym9keS0+YmNfbWNfb25seSkgeworCQl3dmlmID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50 ZXJmYWNlKTsKKwkJaWYgKCF3dmlmKSB7CisJCQlkZXZfd2Fybih3ZGV2LT5kZXYsICIlczogcmVj ZWl2ZWQgZXZlbnQgZm9yIG5vbi1leGlzdGVudCB2aWZcbiIsIF9fZnVuY19fKTsKKwkJCXJldHVy biAtRUlPOworCQl9CisJCWlmIChib2R5LT5yZXN1bWUpCisJCQl3Znhfc3VzcGVuZF9yZXN1bWVf bWMod3ZpZiwgU1RBX05PVElGWV9BV0FLRSk7CisJCWVsc2UKKwkJCXdmeF9zdXNwZW5kX3Jlc3Vt ZV9tYyh3dmlmLCBTVEFfTk9USUZZX1NMRUVQKTsKKwl9IGVsc2UgeworCQlXQVJOKGJvZHktPnBl ZXJfc3RhX3NldCwgIm1pc3VuZGVyc3Rvb2QgaW5kaWNhdGlvbiIpOworCQlXQVJOKGhpZi0+aW50 ZXJmYWNlICE9IDIsICJtaXN1bmRlcnN0b29kIGluZGljYXRpb24iKTsKKwkJaWYgKGJvZHktPnJl c3VtZSkKKwkJCXdmeF9zdXNwZW5kX2hvdF9kZXYod2RldiwgU1RBX05PVElGWV9BV0FLRSk7CisJ CWVsc2UKKwkJCXdmeF9zdXNwZW5kX2hvdF9kZXYod2RldiwgU1RBX05PVElGWV9TTEVFUCk7CisJ fQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaGlmX2dlbmVyaWNfaW5kaWNhdGlvbihz dHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgIGNvbnN0IHN0cnVjdCBoaWZfbXNnICpoaWYsIGNv bnN0IHZvaWQgKmJ1ZikKK3sKKwljb25zdCBzdHJ1Y3QgaGlmX2luZF9nZW5lcmljICpib2R5ID0g YnVmOworCWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+dHlwZSk7CisKKwlzd2l0Y2ggKHR5 cGUpIHsKKwljYXNlIEhJRl9HRU5FUklDX0lORElDQVRJT05fVFlQRV9SQVc6CisJCXJldHVybiAw OworCWNhc2UgSElGX0dFTkVSSUNfSU5ESUNBVElPTl9UWVBFX1NUUklORzoKKwkJZGV2X2luZm8o d2Rldi0+ZGV2LCAiZmlybXdhcmUgc2F5czogJXNcbiIsIChjaGFyICopJmJvZHktPmRhdGEpOwor CQlyZXR1cm4gMDsKKwljYXNlIEhJRl9HRU5FUklDX0lORElDQVRJT05fVFlQRV9SWF9TVEFUUzoK KwkJbXV0ZXhfbG9jaygmd2Rldi0+cnhfc3RhdHNfbG9jayk7CisJCS8qIE9sZGVyIGZpcm13YXJl IHNlbmQgYSBnZW5lcmljIGluZGljYXRpb24gYmVzaWRlIFJ4U3RhdHMgKi8KKwkJaWYgKCF3Znhf YXBpX29sZGVyX3RoYW4od2RldiwgMSwgNCkpCisJCQlkZXZfaW5mbyh3ZGV2LT5kZXYsICJSeCB0 ZXN0IG9uZ29pbmcuIFRlbXBlcmF0dXJlOiAlZCBkZWdyZWVzIENcbiIsCisJCQkJIGJvZHktPmRh dGEucnhfc3RhdHMuY3VycmVudF90ZW1wKTsKKwkJbWVtY3B5KCZ3ZGV2LT5yeF9zdGF0cywgJmJv ZHktPmRhdGEucnhfc3RhdHMsCisJCSAgICAgICBzaXplb2Yod2Rldi0+cnhfc3RhdHMpKTsKKwkJ bXV0ZXhfdW5sb2NrKCZ3ZGV2LT5yeF9zdGF0c19sb2NrKTsKKwkJcmV0dXJuIDA7CisJY2FzZSBI SUZfR0VORVJJQ19JTkRJQ0FUSU9OX1RZUEVfVFhfUE9XRVJfTE9PUF9JTkZPOgorCQltdXRleF9s b2NrKCZ3ZGV2LT50eF9wb3dlcl9sb29wX2luZm9fbG9jayk7CisJCW1lbWNweSgmd2Rldi0+dHhf cG93ZXJfbG9vcF9pbmZvLAorCQkgICAgICAgJmJvZHktPmRhdGEudHhfcG93ZXJfbG9vcF9pbmZv LAorCQkgICAgICAgc2l6ZW9mKHdkZXYtPnR4X3Bvd2VyX2xvb3BfaW5mbykpOworCQltdXRleF91 bmxvY2soJndkZXYtPnR4X3Bvd2VyX2xvb3BfaW5mb19sb2NrKTsKKwkJcmV0dXJuIDA7CisJZGVm YXVsdDoKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJnZW5lcmljX2luZGljYXRpb246IHVua25vd24g aW5kaWNhdGlvbiB0eXBlOiAlIy44eFxuIiwKKwkJCXR5cGUpOworCQlyZXR1cm4gLUVJTzsKKwl9 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgeworCWludCB2YWw7CisJY29uc3QgY2hhciAqc3Ry OworCWJvb2wgaGFzX3BhcmFtOworfSBoaWZfZXJyb3JzW10gPSB7CisJeyBISUZfRVJST1JfRklS TVdBUkVfUk9MTEJBQ0ssCisJCSJyb2xsYmFjayBzdGF0dXMiIH0sCisJeyBISUZfRVJST1JfRklS TVdBUkVfREVCVUdfRU5BQkxFRCwKKwkJImRlYnVnIGZlYXR1cmUgZW5hYmxlZCIgfSwKKwl7IEhJ Rl9FUlJPUl9QRFNfUEFZTE9BRCwKKwkJIlBEUyB2ZXJzaW9uIGlzIG5vdCBzdXBwb3J0ZWQiIH0s CisJeyBISUZfRVJST1JfUERTX1RFU1RGRUFUVVJFLAorCQkiUERTIGFzayBmb3IgYW4gdW5rbm93 biB0ZXN0IG1vZGUiIH0sCisJeyBISUZfRVJST1JfT09SX1ZPTFRBR0UsCisJCSJvdXQtb2YtcmFu Z2UgcG93ZXIgc3VwcGx5IHZvbHRhZ2UiLCB0cnVlIH0sCisJeyBISUZfRVJST1JfT09SX1RFTVBF UkFUVVJFLAorCQkib3V0LW9mLXJhbmdlIHRlbXBlcmF0dXJlIiwgdHJ1ZSB9LAorCXsgSElGX0VS Uk9SX1NMS19SRVFfRFVSSU5HX0tFWV9FWENIQU5HRSwKKwkJInNlY3VyZSBsaW5rIGRvZXMgbm90 IGV4cGVjdCByZXF1ZXN0IGR1cmluZyBrZXkgZXhjaGFuZ2UiIH0sCisJeyBISUZfRVJST1JfU0xL X1NFU1NJT05fS0VZLAorCQkic2VjdXJlIGxpbmsgc2Vzc2lvbiBrZXkgaXMgaW52YWxpZCIgfSwK Kwl7IEhJRl9FUlJPUl9TTEtfT1ZFUkZMT1csCisJCSJzZWN1cmUgbGluayBvdmVyZmxvdyIgfSwK Kwl7IEhJRl9FUlJPUl9TTEtfV1JPTkdfRU5DUllQVElPTl9TVEFURSwKKwkJInNlY3VyZSBsaW5r IG1lc3NhZ2VzIGxpc3QgZG9lcyBub3QgbWF0Y2ggbWVzc2FnZSBlbmNyeXB0aW9uIiB9LAorCXsg SElGX0VSUk9SX1NMS19VTkNPTkZJR1VSRUQsCisJCSJzZWN1cmUgbGluayBub3QgeWV0IGNvbmZp Z3VyZWQiIH0sCisJeyBISUZfRVJST1JfSElGX0JVU19GUkVRVUVOQ1lfVE9PX0xPVywKKwkJImJ1 cyBjbG9jayBpcyB0b28gc2xvdyAoPDFrSHopIiB9LAorCXsgSElGX0VSUk9SX0hJRl9SWF9EQVRB X1RPT19MQVJHRSwKKwkJIkhJRiBtZXNzYWdlIHRvbyBsYXJnZSIgfSwKKwkvKiBGb2xsb3dpbmcg ZXJyb3JzIG9ubHkgZXhpc3RzIGluIG9sZCBmaXJtd2FyZSB2ZXJzaW9uczogKi8KKwl7IEhJRl9F UlJPUl9ISUZfVFhfUVVFVUVfRlVMTCwKKwkJIkhJRiBtZXNzYWdlcyBxdWV1ZSBpcyBmdWxsIiB9 LAorCXsgSElGX0VSUk9SX0hJRl9CVVMsCisJCSJISUYgYnVzIiB9LAorCXsgSElGX0VSUk9SX1NM S19NVUxUSV9UWF9VTlNVUFBPUlRFRCwKKwkJInNlY3VyZSBsaW5rIGRvZXMgbm90IHN1cHBvcnQg bXVsdGktdHggY29uZmlybWF0aW9ucyIgfSwKKwl7IEhJRl9FUlJPUl9TTEtfT1VUREFURURfU0VT U0lPTl9LRVksCisJCSJzZWN1cmUgbGluayBzZXNzaW9uIGtleSBpcyBvdXRkYXRlZCIgfSwKKwl7 IEhJRl9FUlJPUl9TTEtfREVDUllQVElPTiwKKwkJInNlY3VyZSBsaW5rIHBhcmFtcyAobm9uY2Ug b3IgdGFnKSBtaXNtYXRjaCIgfSwKK307CisKK3N0YXRpYyBpbnQgaGlmX2Vycm9yX2luZGljYXRp b24oc3RydWN0IHdmeF9kZXYgKndkZXYsCisJCQkJY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhpZiwg Y29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX2Vycm9yICpib2R5ID0g YnVmOworCWludCB0eXBlID0gbGUzMl90b19jcHUoYm9keS0+dHlwZSk7CisJaW50IHBhcmFtID0g KHM4KWJvZHktPmRhdGFbMF07CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShoaWZfZXJyb3JzKTsgaSsrKQorCQlpZiAodHlwZSA9PSBoaWZfZXJyb3JzW2ldLnZhbCkKKwkJ CWJyZWFrOworCWlmIChpIDwgQVJSQVlfU0laRShoaWZfZXJyb3JzKSkKKwkJaWYgKGhpZl9lcnJv cnNbaV0uaGFzX3BhcmFtKQorCQkJZGV2X2Vycih3ZGV2LT5kZXYsICJhc3luY2hyb25vdXMgZXJy b3I6ICVzOiAlZFxuIiwKKwkJCQloaWZfZXJyb3JzW2ldLnN0ciwgcGFyYW0pOworCQllbHNlCisJ CQlkZXZfZXJyKHdkZXYtPmRldiwgImFzeW5jaHJvbm91cyBlcnJvcjogJXNcbiIsCisJCQkJaGlm X2Vycm9yc1tpXS5zdHIpOworCWVsc2UKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJhc3luY2hyb25v dXMgZXJyb3I6IHVua25vd246ICUwOHhcbiIsIHR5cGUpOworCXByaW50X2hleF9kdW1wKEtFUk5f SU5GTywgImhpZjogIiwgRFVNUF9QUkVGSVhfT0ZGU0VULAorCQkgICAgICAgMTYsIDEsIGhpZiwg bGUxNl90b19jcHUoaGlmLT5sZW4pLCBmYWxzZSk7CisJd2Rldi0+Y2hpcF9mcm96ZW4gPSB0cnVl OworCisJcmV0dXJuIDA7Cit9OworCitzdGF0aWMgaW50IGhpZl9leGNlcHRpb25faW5kaWNhdGlv bihzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJCQkgICAgY29uc3Qgc3RydWN0IGhpZl9tc2cgKmhp ZiwgY29uc3Qgdm9pZCAqYnVmKQoreworCWNvbnN0IHN0cnVjdCBoaWZfaW5kX2V4Y2VwdGlvbiAq Ym9keSA9IGJ1ZjsKKwlpbnQgdHlwZSA9IGxlMzJfdG9fY3B1KGJvZHktPnR5cGUpOworCisJaWYg KHR5cGUgPT0gNCkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJmaXJtd2FyZSBhc3NlcnQgJWRcbiIs CisJCQlsZTMyX3RvX2NwdXAoKF9fbGUzMiAqKWJvZHktPmRhdGEpKTsKKwllbHNlCisJCWRldl9l cnIod2Rldi0+ZGV2LCAiZmlybXdhcmUgZXhjZXB0aW9uXG4iKTsKKwlwcmludF9oZXhfZHVtcChL RVJOX0lORk8sICJoaWY6ICIsIERVTVBfUFJFRklYX09GRlNFVCwKKwkJICAgICAgIDE2LCAxLCBo aWYsIGxlMTZfdG9fY3B1KGhpZi0+bGVuKSwgZmFsc2UpOworCXdkZXYtPmNoaXBfZnJvemVuID0g dHJ1ZTsKKworCXJldHVybiAtMTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB7CisJaW50IG1z Z19pZDsKKwlpbnQgKCpoYW5kbGVyKShzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwKKwkJICAgICAgIGNv bnN0IHN0cnVjdCBoaWZfbXNnICpoaWYsIGNvbnN0IHZvaWQgKmJ1Zik7Cit9IGhpZl9oYW5kbGVy c1tdID0geworCS8qIENvbmZpcm1hdGlvbnMgKi8KKwl7IEhJRl9DTkZfSURfVFgsICAgICAgICAg ICAgICAgICAgIGhpZl90eF9jb25maXJtIH0sCisJeyBISUZfQ05GX0lEX01VTFRJX1RSQU5TTUlU LCAgICAgICBoaWZfbXVsdGlfdHhfY29uZmlybSB9LAorCS8qIEluZGljYXRpb25zICovCisJeyBI SUZfSU5EX0lEX1NUQVJUVVAsICAgICAgICAgICAgICBoaWZfc3RhcnR1cF9pbmRpY2F0aW9uIH0s CisJeyBISUZfSU5EX0lEX1dBS0VVUCwgICAgICAgICAgICAgICBoaWZfd2FrZXVwX2luZGljYXRp b24gfSwKKwl7IEhJRl9JTkRfSURfSk9JTl9DT01QTEVURSwgICAgICAgIGhpZl9qb2luX2NvbXBs ZXRlX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfU0VUX1BNX01PREVfQ01QTCwgICAgIGhp Zl9wbV9tb2RlX2NvbXBsZXRlX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfU0NBTl9DTVBM LCAgICAgICAgICAgIGhpZl9zY2FuX2NvbXBsZXRlX2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRf SURfU1VTUEVORF9SRVNVTUVfVFgsICAgIGhpZl9zdXNwZW5kX3Jlc3VtZV9pbmRpY2F0aW9uIH0s CisJeyBISUZfSU5EX0lEX0VWRU5ULCAgICAgICAgICAgICAgICBoaWZfZXZlbnRfaW5kaWNhdGlv biB9LAorCXsgSElGX0lORF9JRF9HRU5FUklDLCAgICAgICAgICAgICAgaGlmX2dlbmVyaWNfaW5k aWNhdGlvbiB9LAorCXsgSElGX0lORF9JRF9FUlJPUiwgICAgICAgICAgICAgICAgaGlmX2Vycm9y X2luZGljYXRpb24gfSwKKwl7IEhJRl9JTkRfSURfRVhDRVBUSU9OLCAgICAgICAgICAgIGhpZl9l eGNlcHRpb25faW5kaWNhdGlvbiB9LAorCS8qIEZJWE1FOiBhbGxvY2F0ZSBza2JfcCBmcm9tIGhp Zl9yZWNlaXZlX2luZGljYXRpb24gYW5kIG1ha2UgaXQgZ2VuZXJpYyAqLworCS8veyBISUZfSU5E X0lEX1JYLCAgICAgICAgICAgICAgICAgaGlmX3JlY2VpdmVfaW5kaWNhdGlvbiB9LAorfTsKKwor dm9pZCB3ZnhfaGFuZGxlX3J4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAq c2tiKQoreworCWludCBpOworCWNvbnN0IHN0cnVjdCBoaWZfbXNnICpoaWYgPSAoY29uc3Qgc3Ry dWN0IGhpZl9tc2cgKilza2ItPmRhdGE7CisJaW50IGhpZl9pZCA9IGhpZi0+aWQ7CisKKwlpZiAo aGlmX2lkID09IEhJRl9JTkRfSURfUlgpIHsKKwkJLyogaGlmX3JlY2VpdmVfaW5kaWNhdGlvbiB0 YWtlIGNhcmUgb2Ygc2tiIGxpZmV0aW1lICovCisJCWhpZl9yZWNlaXZlX2luZGljYXRpb24od2Rl diwgaGlmLCBoaWYtPmJvZHksIHNrYik7CisJCXJldHVybjsKKwl9CisJLyogTm90ZTogbXV0ZXhf aXNfbG9jayBjYXVzZSBhbiBpbXBsaWNpdCBtZW1vcnkgYmFycmllciB0aGF0IHByb3RlY3QKKwkg KiBidWZfc2VuZAorCSAqLworCWlmIChtdXRleF9pc19sb2NrZWQoJndkZXYtPmhpZl9jbWQubG9j aykgJiYKKwkgICAgd2Rldi0+aGlmX2NtZC5idWZfc2VuZCAmJgorCSAgICB3ZGV2LT5oaWZfY21k LmJ1Zl9zZW5kLT5pZCA9PSBoaWZfaWQpIHsKKwkJaGlmX2dlbmVyaWNfY29uZmlybSh3ZGV2LCBo aWYsIGhpZi0+Ym9keSk7CisJCWdvdG8gZnJlZTsKKwl9CisJZm9yIChpID0gMDsgaSA8IEFSUkFZ X1NJWkUoaGlmX2hhbmRsZXJzKTsgaSsrKSB7CisJCWlmIChoaWZfaGFuZGxlcnNbaV0ubXNnX2lk ID09IGhpZl9pZCkgeworCQkJaWYgKGhpZl9oYW5kbGVyc1tpXS5oYW5kbGVyKQorCQkJCWhpZl9o YW5kbGVyc1tpXS5oYW5kbGVyKHdkZXYsIGhpZiwgaGlmLT5ib2R5KTsKKwkJCWdvdG8gZnJlZTsK KwkJfQorCX0KKwlpZiAoaGlmX2lkICYgMHg4MCkKKwkJZGV2X2Vycih3ZGV2LT5kZXYsICJ1bnN1 cHBvcnRlZCBISUYgaW5kaWNhdGlvbjogSUQgJTAyeFxuIiwKKwkJCWhpZl9pZCk7CisJZWxzZQor CQlkZXZfZXJyKHdkZXYtPmRldiwgInVuZXhwZWN0ZWQgSElGIGNvbmZpcm1hdGlvbjogSUQgJTAy eFxuIiwKKwkJCWhpZl9pZCk7CitmcmVlOgorCWRldl9rZnJlZV9za2Ioc2tiKTsKK30KZGlmZiAt LWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvaGlmX3J4LmggYi9kcml2ZXJz L25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L2hpZl9yeC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uZjA3YzEwYzhjNmJkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVy cy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9oaWZfcnguaApAQCAtMCwwICsxLDE4IEBACisvKiBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogSW1wbGVtZW50 YXRpb24gb2YgY2hpcC10by1ob3N0IGV2ZW50IChha2EgaW5kaWNhdGlvbnMpIG9mIFdGeHh4IFNw bGl0IE1hYworICogKFdTTSkgQVBJLgorICoKKyAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE5LCBT aWxpY29uIExhYm9yYXRvcmllcywgSW5jLgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBTVC1Fcmlj c3NvbgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBTVC1Fcmljc3NvbiBTQQorICovCisjaWZuZGVm IFdGWF9ISUZfUlhfSAorI2RlZmluZSBXRlhfSElGX1JYX0gKKworc3RydWN0IHdmeF9kZXY7Citz dHJ1Y3Qgc2tfYnVmZjsKKwordm9pZCB3ZnhfaGFuZGxlX3J4KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTsKKworI2VuZGlmCi0tIAoyLjMwLjIKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRldmVsIG1haWxpbmcgbGlzdApk ZXZlbEBsaW51eGRyaXZlcnByb2plY3Qub3JnCmh0dHA6Ly9kcml2ZXJkZXYubGludXhkcml2ZXJw cm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaXZlcmRldi1kZXZlbAo=