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=-12.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, 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 94D54C43457 for ; Mon, 12 Oct 2020 10:49:36 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 22B0C208FE for ; Mon, 12 Oct 2020 10:49:36 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.b="hPpAQuOj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388138AbgJLKtX (ORCPT ); Mon, 12 Oct 2020 06:49:23 -0400 Received: from mail-dm6nam11on2056.outbound.protection.outlook.com ([40.107.223.56]:10560 "EHLO NAM11-DM6-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2387997AbgJLKsh (ORCPT ); Mon, 12 Oct 2020 06:48:37 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bprbfiCyLItRy4whwf5QTTZ1iBLhXlzbMEqsQnjCZmd20xQutIYiA3sppA6TJBmHPPrX+oKMxvdvtRoJmC7F68gQROaLl80MakwKWVeXR7RUedy+2SZ7xvpRq8KlGRZJ5meNZiJ+tkvvLHiYBj5tZSPF1GZIAb6N0xEHUmF5yyx609BZ475cj0WWVgUeHFP+p4PSljcunLSlVIZFJGBqaIy1u9WCgAPPQpsIjFaeoKQ3ikKPRBeZ3GYJpYKUzlWFCdGXdJL3minZleQ9neUycHDxa+ESRLa/w0zHlGgMXGBltbgIGwdrqPv5M7JAiqncH68qsgcf8Gg8y7IdWwxyuA== 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=eIURbkR+WRTMa/ZE0179d5foWVXp3R5tOWbXD4yj7d0=; b=bty/glq/fBnFUAtZS1uUCHhEnHRgeF44UOK1Sz869CVd6G/jombuShVLdxZbcdBKv5eAiUIneCySsEQ8/9hPHUY8YcL4gh8ic7K15jolFklPPVeTOljCAK0fF+syEeytndB3BmLeq61ByHFOR2bnfiE1YoTzlbN4lSxANonFeO3M0i8edXAHOoogdRkeDGD9ClZ+p1HWr3SlPjLIWMzMmB0bZNxu6i2IyK2ndf260nWvgTStjtvf/F7yw5qt/l7EDaKl19jfvhcVDBEsvn6mMc2ttihGGnamgsuDjtvz3TTzqvCed2z4UJUJXncBsGLQCKISOLWHHVLqupeQSGxk/w== 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=eIURbkR+WRTMa/ZE0179d5foWVXp3R5tOWbXD4yj7d0=; b=hPpAQuOj+J6ANEbWfRjm9pnnwkqPc7VF9L1jZ9H29ZG/7JYGif0hdWjUpS1/PQAIdVMlb8acjMVRV4DzLWnU6X7OnjJwG+cIxpyWmcIRvbzXmLrq+UG9ZMmUPjAkchm9WfmjQuli2iT1zfZ+jvxGodZZA5nJMUKC+3WpmkdhFkY= 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 SA0PR11MB4734.namprd11.prod.outlook.com (2603:10b6:806:99::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.23; Mon, 12 Oct 2020 10:47:36 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::4f5:fbe5:44a7:cb8a]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::4f5:fbe5:44a7:cb8a%5]) with mapi id 15.20.3455.029; Mon, 12 Oct 2020 10:47:36 +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 , =?UTF-8?q?J=C3=A9r=C3=B4me=20Pouiller?= Subject: [PATCH 16/23] wfx: add queue.c/queue.h Date: Mon, 12 Oct 2020 12:46:41 +0200 Message-Id: <20201012104648.985256-17-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20201012104648.985256-1-Jerome.Pouiller@silabs.com> References: <20201012104648.985256-1-Jerome.Pouiller@silabs.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 X-Originating-IP: [82.67.86.106] X-ClientProxiedBy: PR3P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::10) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.home (82.67.86.106) by PR3P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:102:52::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3455.21 via Frontend Transport; Mon, 12 Oct 2020 10:47:34 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: dda3d1fe-a4e4-419d-364e-08d86e9c3afe X-MS-TrafficTypeDiagnostic: SA0PR11MB4734: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7MN8O//iB9XPxJLndgAbVygbbQJTXmYDVd/LLFQNpHNj0BkOPzDCHpX8cPQqp2n2hxuBFeMJAk2ZIWXxh+rfUKoF8QSRhAxRacu7q5IgHQt5/S0uOEFefj5vJI1svPhg5RwaC7u6MrlRsLArbYcG4SFv8vMSJRpW9Uqdhu9PvvzFIDoc4Nu3SdOsOsJ0djswgXh7ArLfLBUzqQiLLORmNoK/pqHdvArJavtuPttgGhR7EMCnBWAw4MHmENI++zS6PWn9DCuuEQQPju+IiFHzwO4uN9CHWDnZnZBc64OEZ4CYCIje4+4A2YiQXwn0sqJ0+PG4bf61C3w5LLMy57snGA== 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:(39850400004)(396003)(366004)(136003)(346002)(376002)(66556008)(66476007)(6512007)(26005)(36756003)(66946007)(16526019)(186003)(316002)(4326008)(2616005)(956004)(1076003)(30864003)(5660300002)(107886003)(6486002)(54906003)(86362001)(8676002)(83380400001)(8936002)(66574015)(52116002)(2906002)(6506007)(8886007)(6666004)(478600001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: d5+61rgsCY8Eb+53tKe8h1it1ij6JK88/lUnGahBwQWHaFmBkZbj6w82TJVcntIzM8Y8ElOop0K5lRnN/j6rj1zP9AnSdS8x5uTKg63l6pMWE0jZBXBSRucEBpVqxOZ/ns6/bi+l9XkN969BKBfKcKJeOVIgQMOt3WYrdkDrLM6n/ViKvPzABsE0O0zqYx85L0R6c/x8W+potyTtM/ieuEcbVUWKwBBj56jVqaqxgZSB8sXM636P/VSBSgddbhdRO4v311WJ5oH8BPH14vB6vKJXepM5aHqNESC+akZ3s8NbpwVZmaj/45Oo7S8mkqNTMW4PAmmFtmQ7xpOEg/+qjc3lCCCDkAWRAsN95t8Ns1MQMoq4tEHOEUPangBxQ95DV1RRpt9hR2qSkhsrM4B8xActPlAe98BmlHUIIFl9Hptb6fXEp5O4mIVRqL3CLectNrnpVCgnUAhUrUxEdtRQIOShlkz1+yG7OjYKQUztRB9D0lqUSPEc6zBoDJ6IgEvPTcbTpPVS2CPunvDjCHXs2fNfl9oGnl+Mird7yJPCFTVgzhcasa2GjE4nkZv+1nbZFTf/Spgo1lpHiConfMMyKJmiFnKl+6EO7SyQMZ6XitigLT/PgQATo+qn2R+w2yNWUWmx+AKXmjzSER3hhBphaA== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: dda3d1fe-a4e4-419d-364e-08d86e9c3afe X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2020 10:47:35.8316 (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: r64fV7vWR8kLJd0FGS8twSYT7pLixD5lzXCS5ON4UQiciXVagJhU/Gi4W/GyIkG5jFA0YErTbK42uQzxTs+aCA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4734 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RnJvbTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29tPgoKU2ln bmVkLW9mZi1ieTogSsOpcsO0bWUgUG91aWxsZXIgPGplcm9tZS5wb3VpbGxlckBzaWxhYnMuY29t PgotLS0KIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVldWUuYyB8IDMwNCArKysr KysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93ZngvcXVl dWUuaCB8ICA0NSArKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM0OSBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5o CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzFjMzdmNjljMjk1Ci0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9xdWV1ZS5jCkBAIC0wLDAgKzEsMzA0IEBA CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogTygxKSBU WCBxdWV1ZSB3aXRoIGJ1aWx0LWluIGFsbG9jYXRvci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIw MTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3JpZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAx MCwgU1QtRXJpY3Nzb24KKyAqLworI2luY2x1ZGUgPGxpbnV4L3NjaGVkLmg+CisjaW5jbHVkZSA8 bmV0L21hYzgwMjExLmg+CisKKyNpbmNsdWRlICJxdWV1ZS5oIgorI2luY2x1ZGUgIndmeC5oIgor I2luY2x1ZGUgInN0YS5oIgorI2luY2x1ZGUgImRhdGFfdHguaCIKKyNpbmNsdWRlICJ0cmFjZXMu aCIKKwordm9pZCB3ZnhfdHhfbG9jayhzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlhdG9taWNf aW5jKCZ3ZGV2LT50eF9sb2NrKTsKK30KKwordm9pZCB3ZnhfdHhfdW5sb2NrKHN0cnVjdCB3Znhf ZGV2ICp3ZGV2KQoreworCWludCB0eF9sb2NrID0gYXRvbWljX2RlY19yZXR1cm4oJndkZXYtPnR4 X2xvY2spOworCisJV0FSTih0eF9sb2NrIDwgMCwgImluY29uc2lzdGVudCB0eF9sb2NrIHZhbHVl Iik7CisJaWYgKCF0eF9sb2NrKQorCQl3ZnhfYmhfcmVxdWVzdF90eCh3ZGV2KTsKK30KKwordm9p ZCB3ZnhfdHhfZmx1c2goc3RydWN0IHdmeF9kZXYgKndkZXYpCit7CisJaW50IHJldDsKKworCS8v IERvIG5vdCB3YWl0IGZvciBhbnkgcmVwbHkgaWYgY2hpcCBpcyBmcm96ZW4KKwlpZiAod2Rldi0+ Y2hpcF9mcm96ZW4pCisJCXJldHVybjsKKworCXdmeF90eF9sb2NrKHdkZXYpOworCW11dGV4X2xv Y2soJndkZXYtPmhpZl9jbWQubG9jayk7CisJcmV0ID0gd2FpdF9ldmVudF90aW1lb3V0KHdkZXYt PmhpZi50eF9idWZmZXJzX2VtcHR5LAorCQkJCSAhd2Rldi0+aGlmLnR4X2J1ZmZlcnNfdXNlZCwK KwkJCQkgbXNlY3NfdG9famlmZmllcygzMDAwKSk7CisJaWYgKCFyZXQpIHsKKwkJZGV2X3dhcm4o d2Rldi0+ZGV2LCAiY2Fubm90IGZsdXNoIHR4IGJ1ZmZlcnMgKCVkIHN0aWxsIGJ1c3kpXG4iLAor CQkJIHdkZXYtPmhpZi50eF9idWZmZXJzX3VzZWQpOworCQl3ZnhfcGVuZGluZ19kdW1wX29sZF9m cmFtZXMod2RldiwgMzAwMCk7CisJCS8vIEZJWE1FOiBkcm9wIHBlbmRpbmcgZnJhbWVzIGhlcmUK KwkJd2Rldi0+Y2hpcF9mcm96ZW4gPSB0cnVlOworCX0KKwltdXRleF91bmxvY2soJndkZXYtPmhp Zl9jbWQubG9jayk7CisJd2Z4X3R4X3VubG9jayh3ZGV2KTsKK30KKwordm9pZCB3ZnhfdHhfbG9j a19mbHVzaChzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwl3ZnhfdHhfbG9jayh3ZGV2KTsKKwl3 ZnhfdHhfZmx1c2god2Rldik7Cit9CisKK3ZvaWQgd2Z4X3R4X3F1ZXVlc19pbml0KHN0cnVjdCB3 ZnhfdmlmICp3dmlmKQoreworCS8vIFRoZSBkZXZpY2UgaXMgaW4gY2hhcmdlIHRvIHJlc3BlY3Qg dGhlIGRldGFpbHMgb2YgdGhlIFFvUyBwYXJhbWV0ZXJzLgorCS8vIFRoZSBkcml2ZXIganVzdCBl bnN1cmUgdGhhdCBpdCByb3VnaHRseSByZXNwZWN0IHRoZSBwcmlvcml0aWVzIHRvCisJLy8gYXZv aWQgYW55IHNob3J0YWdlLgorCWNvbnN0IGludCBwcmlvcml0aWVzW0lFRUU4MDIxMV9OVU1fQUNT XSA9IHsgMSwgMiwgNjQsIDEyOCB9OworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IElFRUU4 MDIxMV9OVU1fQUNTOyArK2kpIHsKKwkJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmd3ZpZi0+dHhfcXVl dWVbaV0ubm9ybWFsKTsKKwkJc2tiX3F1ZXVlX2hlYWRfaW5pdCgmd3ZpZi0+dHhfcXVldWVbaV0u Y2FiKTsKKwkJd3ZpZi0+dHhfcXVldWVbaV0ucHJpb3JpdHkgPSBwcmlvcml0aWVzW2ldOworCX0K K30KKwordm9pZCB3ZnhfdHhfcXVldWVzX2NoZWNrX2VtcHR5KHN0cnVjdCB3ZnhfdmlmICp3dmlm KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IElFRUU4MDIxMV9OVU1fQUNTOyArK2kp IHsKKwkJV0FSTl9PTihhdG9taWNfcmVhZCgmd3ZpZi0+dHhfcXVldWVbaV0ucGVuZGluZ19mcmFt ZXMpKTsKKwkJV0FSTl9PTighc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZ3dmlmLT50eF9xdWV1 ZVtpXS5ub3JtYWwpKTsKKwkJV0FSTl9PTighc2tiX3F1ZXVlX2VtcHR5X2xvY2tsZXNzKCZ3dmlm LT50eF9xdWV1ZVtpXS5jYWIpKTsKKwl9Cit9CisKK2Jvb2wgd2Z4X3R4X3F1ZXVlX2VtcHR5KHN0 cnVjdCB3ZnhfdmlmICp3dmlmLCBzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZSkKK3sKKwlyZXR1cm4g c2tiX3F1ZXVlX2VtcHR5KCZxdWV1ZS0+bm9ybWFsKSAmJiBza2JfcXVldWVfZW1wdHkoJnF1ZXVl LT5jYWIpOworfQorCitzdGF0aWMgdm9pZCBfX3dmeF90eF9xdWV1ZV9kcm9wKHN0cnVjdCB3Znhf dmlmICp3dmlmLAorCQkJCXN0cnVjdCBza19idWZmX2hlYWQgKnNrYl9xdWV1ZSwKKwkJCQlzdHJ1 Y3Qgc2tfYnVmZl9oZWFkICpkcm9wcGVkKQoreworCXN0cnVjdCBza19idWZmICpza2IsICp0bXA7 CisKKwlzcGluX2xvY2tfYmgoJnNrYl9xdWV1ZS0+bG9jayk7CisJc2tiX3F1ZXVlX3dhbGtfc2Fm ZShza2JfcXVldWUsIHNrYiwgdG1wKSB7CisJCV9fc2tiX3VubGluayhza2IsIHNrYl9xdWV1ZSk7 CisJCXNrYl9xdWV1ZV9oZWFkKGRyb3BwZWQsIHNrYik7CisJfQorCXNwaW5fdW5sb2NrX2JoKCZz a2JfcXVldWUtPmxvY2spOworfQorCit2b2lkIHdmeF90eF9xdWV1ZV9kcm9wKHN0cnVjdCB3Znhf dmlmICp3dmlmLCBzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZSwKKwkJICAgICAgIHN0cnVjdCBza19i dWZmX2hlYWQgKmRyb3BwZWQpCit7CisJX193ZnhfdHhfcXVldWVfZHJvcCh3dmlmLCAmcXVldWUt PmNhYiwgZHJvcHBlZCk7CisJX193ZnhfdHhfcXVldWVfZHJvcCh3dmlmLCAmcXVldWUtPm5vcm1h bCwgZHJvcHBlZCk7CisJd2FrZV91cCgmd3ZpZi0+d2Rldi0+dHhfZGVxdWV1ZSk7Cit9CisKK3Zv aWQgd2Z4X3R4X3F1ZXVlc19wdXQoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBza19idWZm ICpza2IpCit7CisJc3RydWN0IHdmeF9xdWV1ZSAqcXVldWUgPSAmd3ZpZi0+dHhfcXVldWVbc2ti X2dldF9xdWV1ZV9tYXBwaW5nKHNrYildOworCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqdHhf aW5mbyA9IElFRUU4MDIxMV9TS0JfQ0Ioc2tiKTsKKworCWlmICh0eF9pbmZvLT5mbGFncyAmIElF RUU4MDIxMV9UWF9DVExfU0VORF9BRlRFUl9EVElNKQorCQlza2JfcXVldWVfdGFpbCgmcXVldWUt PmNhYiwgc2tiKTsKKwllbHNlCisJCXNrYl9xdWV1ZV90YWlsKCZxdWV1ZS0+bm9ybWFsLCBza2Ip OworfQorCit2b2lkIHdmeF9wZW5kaW5nX2Ryb3Aoc3RydWN0IHdmeF9kZXYgKndkZXYsIHN0cnVj dCBza19idWZmX2hlYWQgKmRyb3BwZWQpCit7CisJc3RydWN0IHdmeF9xdWV1ZSAqcXVldWU7CisJ c3RydWN0IHdmeF92aWYgKnd2aWY7CisJc3RydWN0IGhpZl9tc2cgKmhpZjsKKwlzdHJ1Y3Qgc2tf YnVmZiAqc2tiOworCisJV0FSTighd2Rldi0+Y2hpcF9mcm96ZW4sICIlcyBzaG91bGQgb25seSBi ZSB1c2VkIHRvIHJlY292ZXIgYSBmcm96ZW4gZGV2aWNlIiwKKwkgICAgIF9fZnVuY19fKTsKKwl3 aGlsZSAoKHNrYiA9IHNrYl9kZXF1ZXVlKCZ3ZGV2LT50eF9wZW5kaW5nKSkgIT0gTlVMTCkgewor CQloaWYgPSAoc3RydWN0IGhpZl9tc2cgKilza2ItPmRhdGE7CisJCXd2aWYgPSB3ZGV2X3RvX3d2 aWYod2RldiwgaGlmLT5pbnRlcmZhY2UpOworCQlpZiAod3ZpZikgeworCQkJcXVldWUgPSAmd3Zp Zi0+dHhfcXVldWVbc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYildOworCQkJV0FSTl9PTihza2Jf Z2V0X3F1ZXVlX21hcHBpbmcoc2tiKSA+IDMpOworCQkJV0FSTl9PTighYXRvbWljX3JlYWQoJnF1 ZXVlLT5wZW5kaW5nX2ZyYW1lcykpOworCQkJYXRvbWljX2RlYygmcXVldWUtPnBlbmRpbmdfZnJh bWVzKTsKKwkJfQorCQlza2JfcXVldWVfaGVhZChkcm9wcGVkLCBza2IpOworCX0KK30KKworc3Ry dWN0IHNrX2J1ZmYgKndmeF9wZW5kaW5nX2dldChzdHJ1Y3Qgd2Z4X2RldiAqd2RldiwgdTMyIHBh Y2tldF9pZCkKK3sKKwlzdHJ1Y3Qgd2Z4X3F1ZXVlICpxdWV1ZTsKKwlzdHJ1Y3QgaGlmX3JlcV90 eCAqcmVxOworCXN0cnVjdCB3ZnhfdmlmICp3dmlmOworCXN0cnVjdCBoaWZfbXNnICpoaWY7CisJ c3RydWN0IHNrX2J1ZmYgKnNrYjsKKworCXNwaW5fbG9ja19iaCgmd2Rldi0+dHhfcGVuZGluZy5s b2NrKTsKKwlza2JfcXVldWVfd2Fsaygmd2Rldi0+dHhfcGVuZGluZywgc2tiKSB7CisJCWhpZiA9 IChzdHJ1Y3QgaGlmX21zZyAqKXNrYi0+ZGF0YTsKKwkJcmVxID0gKHN0cnVjdCBoaWZfcmVxX3R4 ICopaGlmLT5ib2R5OworCQlpZiAocmVxLT5wYWNrZXRfaWQgIT0gcGFja2V0X2lkKQorCQkJY29u dGludWU7CisJCXNwaW5fdW5sb2NrX2JoKCZ3ZGV2LT50eF9wZW5kaW5nLmxvY2spOworCQl3dmlm ID0gd2Rldl90b193dmlmKHdkZXYsIGhpZi0+aW50ZXJmYWNlKTsKKwkJaWYgKHd2aWYpIHsKKwkJ CXF1ZXVlID0gJnd2aWYtPnR4X3F1ZXVlW3NrYl9nZXRfcXVldWVfbWFwcGluZyhza2IpXTsKKwkJ CVdBUk5fT04oc2tiX2dldF9xdWV1ZV9tYXBwaW5nKHNrYikgPiAzKTsKKwkJCVdBUk5fT04oIWF0 b21pY19yZWFkKCZxdWV1ZS0+cGVuZGluZ19mcmFtZXMpKTsKKwkJCWF0b21pY19kZWMoJnF1ZXVl LT5wZW5kaW5nX2ZyYW1lcyk7CisJCX0KKwkJc2tiX3VubGluayhza2IsICZ3ZGV2LT50eF9wZW5k aW5nKTsKKwkJcmV0dXJuIHNrYjsKKwl9CisJc3Bpbl91bmxvY2tfYmgoJndkZXYtPnR4X3BlbmRp bmcubG9jayk7CisJV0FSTigxLCAiY2Fubm90IGZpbmQgcGFja2V0IGluIHBlbmRpbmcgcXVldWUi KTsKKwlyZXR1cm4gTlVMTDsKK30KKwordm9pZCB3ZnhfcGVuZGluZ19kdW1wX29sZF9mcmFtZXMo c3RydWN0IHdmeF9kZXYgKndkZXYsIHVuc2lnbmVkIGludCBsaW1pdF9tcykKK3sKKwlrdGltZV90 IG5vdyA9IGt0aW1lX2dldCgpOworCXN0cnVjdCB3ZnhfdHhfcHJpdiAqdHhfcHJpdjsKKwlzdHJ1 Y3QgaGlmX3JlcV90eCAqcmVxOworCXN0cnVjdCBza19idWZmICpza2I7CisJYm9vbCBmaXJzdCA9 IHRydWU7CisKKwlzcGluX2xvY2tfYmgoJndkZXYtPnR4X3BlbmRpbmcubG9jayk7CisJc2tiX3F1 ZXVlX3dhbGsoJndkZXYtPnR4X3BlbmRpbmcsIHNrYikgeworCQl0eF9wcml2ID0gd2Z4X3NrYl90 eF9wcml2KHNrYik7CisJCXJlcSA9IHdmeF9za2JfdHhyZXEoc2tiKTsKKwkJaWYgKGt0aW1lX2Fm dGVyKG5vdywga3RpbWVfYWRkX21zKHR4X3ByaXYtPnhtaXRfdGltZXN0YW1wLAorCQkJCQkJICBs aW1pdF9tcykpKSB7CisJCQlpZiAoZmlyc3QpIHsKKwkJCQlkZXZfaW5mbyh3ZGV2LT5kZXYsICJm cmFtZXMgc3R1Y2sgaW4gZmlybXdhcmUgc2luY2UgJWRtcyBvciBtb3JlOlxuIiwKKwkJCQkJIGxp bWl0X21zKTsKKwkJCQlmaXJzdCA9IGZhbHNlOworCQkJfQorCQkJZGV2X2luZm8od2Rldi0+ZGV2 LCAiICAgaWQgJTA4eCBzZW50ICVsbGRtcyBhZ29cbiIsCisJCQkJIHJlcS0+cGFja2V0X2lkLAor CQkJCSBrdGltZV9tc19kZWx0YShub3csIHR4X3ByaXYtPnhtaXRfdGltZXN0YW1wKSk7CisJCX0K Kwl9CisJc3Bpbl91bmxvY2tfYmgoJndkZXYtPnR4X3BlbmRpbmcubG9jayk7Cit9CisKK3Vuc2ln bmVkIGludCB3ZnhfcGVuZGluZ19nZXRfcGt0X3VzX2RlbGF5KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 LAorCQkJCQkgIHN0cnVjdCBza19idWZmICpza2IpCit7CisJa3RpbWVfdCBub3cgPSBrdGltZV9n ZXQoKTsKKwlzdHJ1Y3Qgd2Z4X3R4X3ByaXYgKnR4X3ByaXYgPSB3Znhfc2tiX3R4X3ByaXYoc2ti KTsKKworCXJldHVybiBrdGltZV91c19kZWx0YShub3csIHR4X3ByaXYtPnhtaXRfdGltZXN0YW1w KTsKK30KKworYm9vbCB3ZnhfdHhfcXVldWVzX2hhc19jYWIoc3RydWN0IHdmeF92aWYgKnd2aWYp Cit7CisJaW50IGk7CisKKwlpZiAod3ZpZi0+dmlmLT50eXBlICE9IE5MODAyMTFfSUZUWVBFX0FQ KQorCQlyZXR1cm4gZmFsc2U7CisJZm9yIChpID0gMDsgaSA8IElFRUU4MDIxMV9OVU1fQUNTOyAr K2kpCisJCS8vIE5vdGU6IHNpbmNlIG9ubHkgQVAgY2FuIGhhdmUgbWNhc3QgZnJhbWVzIGluIHF1 ZXVlIGFuZCBvbmx5CisJCS8vIG9uZSB2aWYgY2FuIGJlIEFQLCBhbGwgcXVldWVkIGZyYW1lcyBo YXMgc2FtZSBpbnRlcmZhY2UgaWQKKwkJaWYgKCFza2JfcXVldWVfZW1wdHlfbG9ja2xlc3MoJnd2 aWYtPnR4X3F1ZXVlW2ldLmNhYikpCisJCQlyZXR1cm4gdHJ1ZTsKKwlyZXR1cm4gZmFsc2U7Cit9 CisKK3N0YXRpYyBpbnQgd2Z4X3R4X3F1ZXVlX2dldF93ZWlnaHQoc3RydWN0IHdmeF9xdWV1ZSAq cXVldWUpCit7CisJcmV0dXJuIGF0b21pY19yZWFkKCZxdWV1ZS0+cGVuZGluZ19mcmFtZXMpICog cXVldWUtPnByaW9yaXR5OworfQorCitzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKndmeF90eF9xdWV1 ZXNfZ2V0X3NrYihzdHJ1Y3Qgd2Z4X2RldiAqd2RldikKK3sKKwlzdHJ1Y3Qgd2Z4X3F1ZXVlICpx dWV1ZXNbSUVFRTgwMjExX05VTV9BQ1MgKiBBUlJBWV9TSVpFKHdkZXYtPnZpZildOworCWludCBp LCBqLCBudW1fcXVldWVzID0gMDsKKwlzdHJ1Y3Qgd2Z4X3ZpZiAqd3ZpZjsKKwlzdHJ1Y3QgaGlm X21zZyAqaGlmOworCXN0cnVjdCBza19idWZmICpza2I7CisKKwkvLyBzb3J0IHRoZSBxdWV1ZXMK Kwl3dmlmID0gTlVMTDsKKwl3aGlsZSAoKHd2aWYgPSB3dmlmX2l0ZXJhdGUod2Rldiwgd3ZpZikp ICE9IE5VTEwpIHsKKwkJZm9yIChpID0gMDsgaSA8IElFRUU4MDIxMV9OVU1fQUNTOyBpKyspIHsK KwkJCVdBUk5fT04obnVtX3F1ZXVlcyA+PSBBUlJBWV9TSVpFKHF1ZXVlcykpOworCQkJcXVldWVz W251bV9xdWV1ZXNdID0gJnd2aWYtPnR4X3F1ZXVlW2ldOworCQkJZm9yIChqID0gbnVtX3F1ZXVl czsgaiA+IDA7IGotLSkKKwkJCQlpZiAod2Z4X3R4X3F1ZXVlX2dldF93ZWlnaHQocXVldWVzW2pd KSA8CisJCQkJICAgIHdmeF90eF9xdWV1ZV9nZXRfd2VpZ2h0KHF1ZXVlc1tqIC0gMV0pKQorCQkJ CQlzd2FwKHF1ZXVlc1tqIC0gMV0sIHF1ZXVlc1tqXSk7CisJCQludW1fcXVldWVzKys7CisJCX0K Kwl9CisKKwl3dmlmID0gTlVMTDsKKwl3aGlsZSAoKHd2aWYgPSB3dmlmX2l0ZXJhdGUod2Rldiwg d3ZpZikpICE9IE5VTEwpIHsKKwkJaWYgKCF3dmlmLT5hZnRlcl9kdGltX3R4X2FsbG93ZWQpCisJ CQljb250aW51ZTsKKwkJZm9yIChpID0gMDsgaSA8IG51bV9xdWV1ZXM7IGkrKykgeworCQkJc2ti ID0gc2tiX2RlcXVldWUoJnF1ZXVlc1tpXS0+Y2FiKTsKKwkJCWlmICghc2tiKQorCQkJCWNvbnRp bnVlOworCQkJLy8gTm90ZTogc2luY2Ugb25seSBBUCBjYW4gaGF2ZSBtY2FzdCBmcmFtZXMgaW4g cXVldWUKKwkJCS8vIGFuZCBvbmx5IG9uZSB2aWYgY2FuIGJlIEFQLCBhbGwgcXVldWVkIGZyYW1l cyBoYXMKKwkJCS8vIHNhbWUgaW50ZXJmYWNlIGlkCisJCQloaWYgPSAoc3RydWN0IGhpZl9tc2cg Kilza2ItPmRhdGE7CisJCQlXQVJOX09OKGhpZi0+aW50ZXJmYWNlICE9IHd2aWYtPmlkKTsKKwkJ CVdBUk5fT04ocXVldWVzW2ldICE9CisJCQkJJnd2aWYtPnR4X3F1ZXVlW3NrYl9nZXRfcXVldWVf bWFwcGluZyhza2IpXSk7CisJCQlhdG9taWNfaW5jKCZxdWV1ZXNbaV0tPnBlbmRpbmdfZnJhbWVz KTsKKwkJCXRyYWNlX3F1ZXVlc19zdGF0cyh3ZGV2LCBxdWV1ZXNbaV0pOworCQkJcmV0dXJuIHNr YjsKKwkJfQorCQkvLyBObyBtb3JlIG11bHRpY2FzdCB0byBzZW50CisJCXd2aWYtPmFmdGVyX2R0 aW1fdHhfYWxsb3dlZCA9IGZhbHNlOworCQlzY2hlZHVsZV93b3JrKCZ3dmlmLT51cGRhdGVfdGlt X3dvcmspOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBudW1fcXVldWVzOyBpKyspIHsKKwkJc2ti ID0gc2tiX2RlcXVldWUoJnF1ZXVlc1tpXS0+bm9ybWFsKTsKKwkJaWYgKHNrYikgeworCQkJYXRv bWljX2luYygmcXVldWVzW2ldLT5wZW5kaW5nX2ZyYW1lcyk7CisJCQl0cmFjZV9xdWV1ZXNfc3Rh dHMod2RldiwgcXVldWVzW2ldKTsKKwkJCXJldHVybiBza2I7CisJCX0KKwl9CisJcmV0dXJuIE5V TEw7Cit9CisKK3N0cnVjdCBoaWZfbXNnICp3ZnhfdHhfcXVldWVzX2dldChzdHJ1Y3Qgd2Z4X2Rl diAqd2RldikKK3sKKwlzdHJ1Y3Qgd2Z4X3R4X3ByaXYgKnR4X3ByaXY7CisJc3RydWN0IHNrX2J1 ZmYgKnNrYjsKKworCWlmIChhdG9taWNfcmVhZCgmd2Rldi0+dHhfbG9jaykpCisJCXJldHVybiBO VUxMOworCXNrYiA9IHdmeF90eF9xdWV1ZXNfZ2V0X3NrYih3ZGV2KTsKKwlpZiAoIXNrYikKKwkJ cmV0dXJuIE5VTEw7CisJc2tiX3F1ZXVlX3RhaWwoJndkZXYtPnR4X3BlbmRpbmcsIHNrYik7CisJ d2FrZV91cCgmd2Rldi0+dHhfZGVxdWV1ZSk7CisJdHhfcHJpdiA9IHdmeF9za2JfdHhfcHJpdihz a2IpOworCXR4X3ByaXYtPnhtaXRfdGltZXN0YW1wID0ga3RpbWVfZ2V0KCk7CisJcmV0dXJuIChz dHJ1Y3QgaGlmX21zZyAqKXNrYi0+ZGF0YTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dp cmVsZXNzL3NpbGFicy93ZngvcXVldWUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93 ZngvcXVldWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjgwYmEx OTQ1NWVmMwotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93 ZngvcXVldWUuaApAQCAtMCwwICsxLDQ1IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5ICovCisvKgorICogTygxKSBUWCBxdWV1ZSB3aXRoIGJ1aWx0LWluIGFsbG9j YXRvci4KKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMCwgU2lsaWNvbiBMYWJvcmF0b3Jp ZXMsIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAxMCwgU1QtRXJpY3Nzb24KKyAqLworI2lmbmRl ZiBXRlhfUVVFVUVfSAorI2RlZmluZSBXRlhfUVVFVUVfSAorCisjaW5jbHVkZSA8bGludXgvc2ti dWZmLmg+CisjaW5jbHVkZSA8bGludXgvYXRvbWljLmg+CisKK3N0cnVjdCB3ZnhfZGV2Oworc3Ry dWN0IHdmeF92aWY7CisKK3N0cnVjdCB3ZnhfcXVldWUgeworCXN0cnVjdCBza19idWZmX2hlYWQJ bm9ybWFsOworCXN0cnVjdCBza19idWZmX2hlYWQJY2FiOyAvLyBDb250ZW50IEFmdGVyIChEVElN KSBCZWFjb24KKwlhdG9taWNfdAkJcGVuZGluZ19mcmFtZXM7CisJaW50CQkJcHJpb3JpdHk7Cit9 OworCit2b2lkIHdmeF90eF9sb2NrKHN0cnVjdCB3ZnhfZGV2ICp3ZGV2KTsKK3ZvaWQgd2Z4X3R4 X3VubG9jayhzdHJ1Y3Qgd2Z4X2RldiAqd2Rldik7Cit2b2lkIHdmeF90eF9mbHVzaChzdHJ1Y3Qg d2Z4X2RldiAqd2Rldik7Cit2b2lkIHdmeF90eF9sb2NrX2ZsdXNoKHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2KTsKKwordm9pZCB3ZnhfdHhfcXVldWVzX2luaXQoc3RydWN0IHdmeF92aWYgKnd2aWYpOwor dm9pZCB3ZnhfdHhfcXVldWVzX2NoZWNrX2VtcHR5KHN0cnVjdCB3ZnhfdmlmICp3dmlmKTsKK2Jv b2wgd2Z4X3R4X3F1ZXVlc19oYXNfY2FiKHN0cnVjdCB3ZnhfdmlmICp3dmlmKTsKK3ZvaWQgd2Z4 X3R4X3F1ZXVlc19wdXQoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVjdCBza19idWZmICpza2Ip Oworc3RydWN0IGhpZl9tc2cgKndmeF90eF9xdWV1ZXNfZ2V0KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2 KTsKKworYm9vbCB3ZnhfdHhfcXVldWVfZW1wdHkoc3RydWN0IHdmeF92aWYgKnd2aWYsIHN0cnVj dCB3ZnhfcXVldWUgKnF1ZXVlKTsKK3ZvaWQgd2Z4X3R4X3F1ZXVlX2Ryb3Aoc3RydWN0IHdmeF92 aWYgKnd2aWYsIHN0cnVjdCB3ZnhfcXVldWUgKnF1ZXVlLAorCQkgICAgICAgc3RydWN0IHNrX2J1 ZmZfaGVhZCAqZHJvcHBlZCk7CisKK3N0cnVjdCBza19idWZmICp3ZnhfcGVuZGluZ19nZXQoc3Ry dWN0IHdmeF9kZXYgKndkZXYsIHUzMiBwYWNrZXRfaWQpOwordm9pZCB3ZnhfcGVuZGluZ19kcm9w KHN0cnVjdCB3ZnhfZGV2ICp3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZl9oZWFkICpkcm9wcGVkKTsKK3Vu c2lnbmVkIGludCB3ZnhfcGVuZGluZ19nZXRfcGt0X3VzX2RlbGF5KHN0cnVjdCB3ZnhfZGV2ICp3 ZGV2LAorCQkJCQkgIHN0cnVjdCBza19idWZmICpza2IpOwordm9pZCB3ZnhfcGVuZGluZ19kdW1w X29sZF9mcmFtZXMoc3RydWN0IHdmeF9kZXYgKndkZXYsIHVuc2lnbmVkIGludCBsaW1pdF9tcyk7 CisKKyNlbmRpZiAvKiBXRlhfUVVFVUVfSCAqLwotLSAKMi4yOC4wCgo=