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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 343E9C43334 for ; Fri, 3 Jun 2022 04:23:14 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234595AbiFCEXN (ORCPT ); Fri, 3 Jun 2022 00:23:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233753AbiFCEXL (ORCPT ); Fri, 3 Jun 2022 00:23:11 -0400 Received: from esa.hc3962-90.iphmx.com (esa.hc3962-90.iphmx.com [216.71.140.77]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9039835DC9 for ; Thu, 2 Jun 2022 21:23:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qccesdkim1; t=1654230188; x=1654834988; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dStWJwcehBp6j73duiTjy7YXEG+PPXSIpMVQvCoTpyk=; b=HjjwQjcDRaZoFA3378QOZ+KxHhNSYH+fpiAPqBLDTkTdEj4dpxBes/lC hPmxwdlCuCgI2M4IL2YYDNIpaX2Q47aNoDPTryTXPk6p00RXTpEGf+pm8 J7l8ciLjqTc3hzM6sunJxdcNeh2ytegCPohO2Zye/UaA46MMvO5z8TYXq U=; Received: from mail-dm6nam12lp2173.outbound.protection.outlook.com (HELO NAM12-DM6-obe.outbound.protection.outlook.com) ([104.47.59.173]) by ob1.hc3962-90.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jun 2022 04:23:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ncw4Qv+UINrUoLHffwXbFvQ6kYjFHQHBbi1JOMxsIYn9MYX4/uhU66T1xAX7TU4anh9mGJfqzM6yUEee7Tov71pyh0ke9EwpWnGfQIS6JWEEvZa9dBOmJebhWtA3Tsr+N++YF7+S7GZAmMjSO9n6Mdv9/zQjAd5Cjnr6aHzl1Zskw1hLdIPEOJhTdIkyhV6pXB2Epjk3rJ0znLeymi8q7iK52jCrVagVtgn16tfEC27d4AQjlsfrjArXO3IRkJ8fEIVESf5CpSfpkGOAwomTrCr09pVEZGyseI4RV9q4JwBUdMnvdICppFoTGYyo4t+EvYnGtr8PwgdOPsZ2XobnNQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dStWJwcehBp6j73duiTjy7YXEG+PPXSIpMVQvCoTpyk=; b=cgTxkGbJEJJG/RrqihkvbaBm3M/By0s+uqjlWYTZM3koiib/SGeZ262eZs8cXefOek8IlD9+eOZAQqcfu/6k+rSVOUjQoI28teJYsmto5OIAYyIC7EqWUHZ7JMmT1z+UieQHHDs6IBRozSP8XRxeJWIsfKCn3MOSe2gIuzqmFUr6CNFUrfYdUdHTbBPVE+w4Ywi2aZEjfSsM/83JDwIhV4GbnGLbWr+kcE1SSX0kuLQehcr7la4DwRVs5rH+T4jwV0J5iiRL7fdvs4DjbOmPVafzwAz/EjHOt+A3zm0ZHrBh3FDhbj/T+ANWM397ExU3wNzPTk1+FdfFT/SoVKJOTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=quicinc.com; dmarc=pass action=none header.from=quicinc.com; dkim=pass header.d=quicinc.com; arc=none Received: from DM5PR0201MB3589.namprd02.prod.outlook.com (2603:10b6:4:80::19) by BY5PR02MB6033.namprd02.prod.outlook.com (2603:10b6:a03:1ff::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Fri, 3 Jun 2022 04:23:04 +0000 Received: from DM5PR0201MB3589.namprd02.prod.outlook.com ([fe80::f5b9:2296:c8d4:764e]) by DM5PR0201MB3589.namprd02.prod.outlook.com ([fe80::f5b9:2296:c8d4:764e%7]) with mapi id 15.20.5293.019; Fri, 3 Jun 2022 04:23:04 +0000 From: "Aditya Kumar Singh (QUIC)" To: "Jeff Johnson (QUIC)" CC: "linux-wireless@vger.kernel.org" , "Aditya Kumar Singh (QUIC)" , "ath11k@lists.infradead.org" Subject: RE: [PATCH 1/2] ath11k: move firmware stats out of debugfs Thread-Topic: [PATCH 1/2] ath11k: move firmware stats out of debugfs Thread-Index: AQHYdj+uvGfmOr/9ekaKJGdgXcX7F608LtqAgADn4MA= Date: Fri, 3 Jun 2022 04:23:04 +0000 Message-ID: References: <20220602051425.9265-1-quic_adisi@quicinc.com> <20220602051425.9265-2-quic_adisi@quicinc.com> <07248432-bf0f-e2d5-6ada-61c66337f295@quicinc.com> In-Reply-To: <07248432-bf0f-e2d5-6ada-61c66337f295@quicinc.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=quicinc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 880bc43f-516f-4d40-b859-08da4518c0c3 x-ms-traffictypediagnostic: BY5PR02MB6033:EE_ x-ld-processed: 98e9ba89-e1a1-4e38-9007-8bdabc25de1d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WujfyL9gnmVChocXoziD02H33N6ZvZFYYpZtLTA+8dzz/+s9GE24SwXp5Trl5uAitHEGKTJF/yKZh9K1MgLiobaSHPxXb+8qk2P84dBEAViXMb0gyq5Sx0uqhPef3hcA/UtZEcCeWYdmoK8FgOcoApal1vqqhjHj8JefUMX8l7gtJycmUNlZB+3fji7R7B92AaXn0E05Be/vljZ1p/0rUSSqjauDcDT53vhbDNjER45CjmjASuzghjBKNrK2yglUPKQpnmhrok8ABnlHBlVtNTIZvjq35yISI3W1ETtUli79wYaRc6kwzxYqlH5cz/cE1P4ev33d37ySsRT4es+9ffzQ34sxjSzp1CINRXU4lnz1va2DftkibnGPeWOTvaVbO0xiLmaB14TYy+QkJmoo2OwEWOh36hSHSJVueNlNkx8WeSXSnqb/naNy7f4MJtk/ko0xLphc9yKVtoZy+tMNizVa39qqnx848BabkASiucensBHgA0hVQ4hVvJV9hP7SVbmnsWP2wamCCgHjsnbQ5AtmaeJzzdEaUiTMMm3V3DCm0zwlUgOGZBU01qGm5UXrW83mWnWBGL/t8Xy7B/ZqAiv25YYYTsQlC+S0u9xXw4R/tjJ9g2dFdWE6XVUXT9+0krNNLZhVS4l8JSVyzHohrxHfO8ZcZtxfOOfCDLjZ8lh0pX/p7Ye6LuMVikbAfYWd3Im1nCssL0tCTTsYXNh51g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR0201MB3589.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(55016003)(26005)(30864003)(38070700005)(8936002)(71200400001)(122000001)(6862004)(33656002)(5660300002)(508600001)(9686003)(186003)(83380400001)(2906002)(53546011)(52536014)(7696005)(6506007)(86362001)(8676002)(4326008)(38100700002)(66476007)(6636002)(316002)(66446008)(66556008)(66946007)(64756008)(54906003)(76116006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aUdULzlocmdRTmdPa0JxRnBjVFMwUkhvbytCa0U3OTIzQVpuR3FRajVad2lN?= =?utf-8?B?K0srcmJzV3NQNDlYakpmK3RCMEpqb3hZcmJKdE4zbGxvNkgyZ1NUcURvcXJM?= =?utf-8?B?dWN3SmxTdUxOTXlZVENpNmxuOVBGYURVdkNKdnFpVk5GdTAyeXk3WkhMM1pQ?= =?utf-8?B?ZFc0bEZRYTB1ck1ZR2tXVi8yMWw0OXhlVmdZTjNOMVIyTU1CMjFxUVVBT0t0?= =?utf-8?B?RSt4MXlqOFdNNHlodTNpYlV6ZHE5Rno5Y0FaMVZnKzZjTXVobHhWc1NxaTZU?= =?utf-8?B?VG5tMzc1NUdmTFNWQUFKRDRTTnFQSFVGR1NRMEh3Q2g0OVdyMjFvYU5VUS9K?= =?utf-8?B?UXdsdFQxMUg3K21obUt1c0FGbTg3ZDRoQUdnZkVBVnYzOGxrYzN3Wm5kL29E?= =?utf-8?B?a3RZT1RjSFdGWWNNTWM4NDc4QWtkRTE0YnFUSUFVd2h6NjQ3ZFJwNHVCeUF2?= =?utf-8?B?L2xNaVR3bWpNdDFnRXhHSE9lRlhkd052WXpZQVJIMWhGZG5LMG1HWjhZelho?= =?utf-8?B?WW1zT1ZaYjBTWE9PZUk3clNTYUo4THdPc3pPUkN2M0VyNkFTazBCdW95U0Z6?= =?utf-8?B?QmdsVzE3R3J1Rk9aVFNzYTlrc1hCRWEydFBiTzJOSzk0LzJwNlpJQnFEUXd6?= =?utf-8?B?SFVrVk90SmJxNVZZU2tQQ3FTQnBXcjM1SVEzMmp1YjVCUkY0ZDNRa3RsUlRD?= =?utf-8?B?SWN1a3V6TkZMUEpEb1BSLzhlT0dDcXZWL3hqNlRZRTRueW1FQXY3WUZqeFJQ?= =?utf-8?B?OFU3ejZwcmhiVVRiZDY1LzNqQk8xZkxlSTlxQ20wZEVHdVpEN0tHSmZTR256?= =?utf-8?B?dmtTL0E0RFQyOEduUlJRc1VsYWR0Tk85OFQ5UE9GWTZhRlBHaVdtSkxqS1ZJ?= =?utf-8?B?YkcwcW9lY0NPVlI1d2Jha2JTWC84Z3ZKSUdMNlY5bVp6cDg3ZVEvaDVsVXhY?= =?utf-8?B?QWp5RWhPcWYxMTJpMnFRRWJyVFNvSXZNcmtHSUJjVlBZVllOdHl2SHFsN3V4?= =?utf-8?B?UjkwYkg2dGpRd2lHY3ZxcVV6YjlrT2FpNFZKZTV5blJlUWhFSldMM3RHVG1W?= =?utf-8?B?Y2trbkdZUTkvSUp3Uk16R3YrdFRvVE1pTkIvTWpvY2orOHJLN0dZWXk2bmdG?= =?utf-8?B?ajV1NDQ0bnJnTmJ4TUNaS3hienB1dTJFNTYyeDYrSGlKZk5YRmFzSGZ0RFJk?= =?utf-8?B?bzJ2TWVsVWRoWDdyR0pDZEx0dTEzemFHNDdtZk1talFpdEgvMGhBd2l1NW1C?= =?utf-8?B?OVFEUjloR2N0QnpjMjZDR1l2aUFUVko0a1lzb1Rsd0puc0dQREJLM2I5dTNU?= =?utf-8?B?cHRqQmdwNzlFaVZNS1FTTDNJaTRIQXhwZW1YVFhiaDR4ZWlYU0FnbC85Z0li?= =?utf-8?B?a1NXNE9zMHdKTHk0MzdjN3pZeGkwQWtXUmpDUmI5ellvYVdlMnVUVEdGUDRK?= =?utf-8?B?blFVRkZwMWxrSDY2Q3JSQzVFVXZYdXRROGNwd0ZBdlBhVlovTkR1aEVQTTNw?= =?utf-8?B?Z0F4NzZ4Nml6bVh6b0k1RmtveXg1SWQ5Sy9TRFRvejNoajAzMEtiRDd1WThw?= =?utf-8?B?ZklxcWNWT0IrVTZTdGdERi9obHRLdEt2MFc1ekZqODQ1YXZRcVE2cTFnbXFv?= =?utf-8?B?aUNtNDNwd1ZZYzRaWUJ5QzFzU0dWSFhtVVJyUFhvUFl2SVJWUkd1S21vQWJ2?= =?utf-8?B?cWNlbFdKbmV6VUpoekRmak1PWWhsV212UFBtSkJiRXVYRG10eUlmanI4ek5Y?= =?utf-8?B?Rm9lWlcxbDRuUlhkSEo0Tk1LVkZzc2FFRDJZWGVBaEhTdHdla0pKUnptbWtu?= =?utf-8?B?STFDTzByeGJFOW0vak4weEE4cnErOTNuZ1ZpYjhqVnpnbG5Ib1NhdHlwN1J6?= =?utf-8?B?eEE3bkdhR0J2ZHA0cjUzSTVUeFNuTTZVQzNocEJUWmgyZGxHbnQrTnRLQ3gy?= =?utf-8?B?b1lpQTVUamQyZTlFUC9Pa3djcm42YUY1MTEyV0hqb3BSdkxxdm9EOFRxL0h0?= =?utf-8?B?Yk00UVJONFVvdmpEcmRBRVJGUDRocDZyTExuaXZ2ZHJkbTZzYWprblZVNlhH?= =?utf-8?B?OE1rMnZJRWFhZFVzUnV6SjloWmIrdm9JWml6Skd6MjY4UTl5ZGMzclhNN0hu?= =?utf-8?B?REo3T2oxTWNXZitxWnhwZGVZeGJ6NGdycnRTdUlqODRrWmpucXh4S3cvT0gx?= =?utf-8?B?SFlDUm9KdVNTa29hYXpnQ3hXcVM5d2lYMFdFcjJSM2F5QldJTUNoak1aR040?= =?utf-8?B?bFBFMXNKMjAvQkl3ekRwV3AxTVZvbTU0WkZtdXdKTVZ0RUFtajB2RWEva3VZ?= =?utf-8?B?bHlWS0xNUm9GcUpuQ0JsQWswOFBmeEdxcWdTV0VPV2J5OW9KSFIxUT09?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: quicinc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR0201MB3589.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 880bc43f-516f-4d40-b859-08da4518c0c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2022 04:23:04.1461 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 98e9ba89-e1a1-4e38-9007-8bdabc25de1d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BNcbSFcsEAItedTH1Rin29iYlXpgnbMH39hzfkWHY/GZLIZsZJd/68a40c95rsQ6gZLKSRwluC0X63SxJrXN5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR02MB6033 Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBKZWZmIEpvaG5zb24gKFFVSUMp IDxxdWljX2pqb2huc29uQHF1aWNpbmMuY29tPg0KPiBTZW50OiBUaHVyc2RheSwgSnVuZSAyLCAy MDIyIDIwOjAzDQo+IFRvOiBBZGl0eWEgS3VtYXIgU2luZ2ggKFFVSUMpIDxxdWljX2FkaXNpQHF1 aWNpbmMuY29tPjsNCj4gYXRoMTFrQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4gQ2M6IGxpbnV4LXdp cmVsZXNzQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDEvMl0gYXRoMTFr OiBtb3ZlIGZpcm13YXJlIHN0YXRzIG91dCBvZiBkZWJ1Z2ZzDQo+IA0KPiBPbiA2LzEvMjAyMiAx MDoxNCBQTSwgQWRpdHlhIEt1bWFyIFNpbmdoIHdyb3RlOg0KPiA+IEN1cnJlbnRseSwgZmlybXdh cmUgc3RhdHMsIGNvbXByaXNpbmcgcGRldiwgdmRldiBhbmQgYmVhY29uIHN0YXRzIGFyZQ0KPiA+ IHBhcnQgb2YgZGVidWdmcy4gSW4gZmlybXdhcmUgcGRldiBzdGF0cywgZmlybXdhcmUgcmVwb3J0 cyB0aGUgZmluYWwgVHgNCj4gPiBwb3dlciB1c2VkIHRvIHRyYW5zbWl0IGVhY2ggcGFja2V0LiBJ ZiBkcml2ZXIgd2FudHMgdG8ga25vdyB0aGUgZmluYWwNCj4gPiBUeCBwb3dlciBiZWluZyB1c2Vk IGF0IGZpcm13YXJlIGxldmVsLCBpdCBjYW4gbGV2ZXJhZ2UgZnJvbSBmaXJtd2FyZQ0KPiA+IHBk ZXYgc3RhdHMuDQo+ID4NCj4gPiBNb3ZlIGZpcm13YXJlIHN0YXRzIG91dCBvZiBkZWJ1Z2ZzIGNv bnRleHQgaW4gb3JkZXIgdG8gbGV2ZXJhZ2UgdGhlDQo+ID4gZmluYWwgVHggcG93ZXIgcmVwb3J0 ZWQgaW4gaXQgZXZlbiB3aGVuIGRlYnVnZnMgaXMgZGlzYWJsZWQuDQo+ID4NCj4gPiBUZXN0ZWQt b246IElQUTgwNzQgaHcyLjAgQUhCDQo+ID4gV0xBTi5ISy4yLjUuMC4xLTAxMTAwLVFDQUhLU1dQ TF9TSUxJQ09OWi0xDQo+ID4gVGVzdGVkLW9uOiBRQ045MDc0IGh3MS4wIFBDSQ0KPiA+IFdMQU4u SEsuMi41LjAuMS0wMTEwMC1RQ0FIS1NXUExfU0lMSUNPTlotMQ0KPiA+IFRlc3RlZC1vbjogV0NO Njg1NSBodzIuMCBQQ0kNCj4gPiBXTEFOLkhTUC4xLjEtMDMxMjUtUUNBSFNQU1dQTF9WMV9WMl9T SUxJQ09OWl9MSVRFLTMNCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IEFkaXR5YSBLdW1hciBTaW5n aCA8cXVpY19hZGlzaUBxdWljaW5jLmNvbT4NCj4gPiAtLS0NCj4gPiAgIGRyaXZlcnMvbmV0L3dp cmVsZXNzL2F0aC9hdGgxMWsvY29yZS5jICAgIHwgIDQ2ICsrKysrKysrDQo+ID4gICBkcml2ZXJz L25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaCAgICB8ICAxMiArLQ0KPiA+ICAgZHJpdmVy cy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmMgfCAxMzEgKysrKystLS0tLS0tLS0t LS0tLS0tLQ0KPiA+ICAgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmgg fCAgIDYgKy0NCj4gPiAgIGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMgICAg IHwgIDQ4ICsrKysrKystDQo+ID4gICA1IGZpbGVzIGNoYW5nZWQsIDEzNiBpbnNlcnRpb25zKCsp LCAxMDcgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ly ZWxlc3MvYXRoL2F0aDExay9jb3JlLmMNCj4gPiBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGgxMWsvY29yZS5jDQo+ID4gaW5kZXggY2E2ZmFkZDY0YjQzLi4wN2EyOTlhMmUyMTMgMTAwNjQ0 DQo+ID4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmMNCj4gPiAr KysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuYw0KPiA+IEBAIC01NzAs NiArNTcwLDUyIEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGF0aDExa19wZGV2DQo+ICphdGgxMWtf Y29yZV9nZXRfc2luZ2xlX3BkZXYoc3RydWN0IGF0aDExa19iYXNlDQo+ID4gICAJcmV0dXJuICZh Yi0+cGRldnNbMF07DQo+ID4gICB9DQo+ID4NCj4gPiArdm9pZCBhdGgxMWtfZndfc3RhdHNfcGRl dnNfZnJlZShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKSB7DQo+ID4gKwlzdHJ1Y3QgYXRoMTFrX2Z3 X3N0YXRzX3BkZXYgKmksICp0bXA7DQo+ID4gKw0KPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeV9z YWZlKGksIHRtcCwgaGVhZCwgbGlzdCkgew0KPiA+ICsJCWxpc3RfZGVsKCZpLT5saXN0KTsNCj4g PiArCQlrZnJlZShpKTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBhdGgxMWtf Zndfc3RhdHNfdmRldnNfZnJlZShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKSB7DQo+ID4gKwlzdHJ1 Y3QgYXRoMTFrX2Z3X3N0YXRzX3ZkZXYgKmksICp0bXA7DQo+ID4gKw0KPiA+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeV9zYWZlKGksIHRtcCwgaGVhZCwgbGlzdCkgew0KPiA+ICsJCWxpc3RfZGVsKCZp LT5saXN0KTsNCj4gPiArCQlrZnJlZShpKTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ICsNCj4gPiAr dm9pZCBhdGgxMWtfZndfc3RhdHNfYmNuX2ZyZWUoc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkgew0K PiA+ICsJc3RydWN0IGF0aDExa19md19zdGF0c19iY24gKmksICp0bXA7DQo+ID4gKw0KPiA+ICsJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGksIHRtcCwgaGVhZCwgbGlzdCkgew0KPiA+ICsJCWxp c3RfZGVsKCZpLT5saXN0KTsNCj4gPiArCQlrZnJlZShpKTsNCj4gPiArCX0NCj4gPiArfQ0KPiA+ ICsNCj4gPiArdm9pZCBhdGgxMWtfZndfc3RhdHNfaW5pdChzdHJ1Y3QgYXRoMTFrICphcikgew0K PiA+ICsJSU5JVF9MSVNUX0hFQUQoJmFyLT5md19zdGF0cy5wZGV2cyk7DQo+ID4gKwlJTklUX0xJ U1RfSEVBRCgmYXItPmZ3X3N0YXRzLnZkZXZzKTsNCj4gPiArCUlOSVRfTElTVF9IRUFEKCZhci0+ Zndfc3RhdHMuYmNuKTsNCj4gPiArDQo+ID4gKwlpbml0X2NvbXBsZXRpb24oJmFyLT5md19zdGF0 c19jb21wbGV0ZSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3ZvaWQgYXRoMTFrX2Z3X3N0YXRzX2Zy ZWUoc3RydWN0IGF0aDExa19md19zdGF0cyAqc3RhdHMpIHsNCj4gPiArCWF0aDExa19md19zdGF0 c19wZGV2c19mcmVlKCZzdGF0cy0+cGRldnMpOw0KPiA+ICsJYXRoMTFrX2Z3X3N0YXRzX3ZkZXZz X2ZyZWUoJnN0YXRzLT52ZGV2cyk7DQo+ID4gKwlhdGgxMWtfZndfc3RhdHNfYmNuX2ZyZWUoJnN0 YXRzLT5iY24pOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgaW50IGF0aDExa19jb3JlX3N1c3BlbmQo c3RydWN0IGF0aDExa19iYXNlICphYikNCj4gPiAgIHsNCj4gPiAgIAlpbnQgcmV0Ow0KPiA+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2NvcmUuaA0KPiA+IGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9jb3JlLmgNCj4gPiBpbmRleCA2NWQ1NGU5 YzE1ZDkuLjY3MjcwMWY0MGE2YiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVz cy9hdGgvYXRoMTFrL2NvcmUuaA0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9h dGgxMWsvY29yZS5oDQo+ID4gQEAgLTU0NSw5ICs1NDUsNiBAQCBzdHJ1Y3QgYXRoMTFrX2RlYnVn IHsNCj4gPiAgIAlzdHJ1Y3QgZGVudHJ5ICpkZWJ1Z2ZzX3BkZXY7DQo+ID4gICAJc3RydWN0IGF0 aDExa19kYmdfaHR0X3N0YXRzIGh0dF9zdGF0czsNCj4gPiAgIAl1MzIgZXh0ZF90eF9zdGF0czsN Cj4gPiAtCXN0cnVjdCBhdGgxMWtfZndfc3RhdHMgZndfc3RhdHM7DQo+ID4gLQlzdHJ1Y3QgY29t cGxldGlvbiBmd19zdGF0c19jb21wbGV0ZTsNCj4gPiAtCWJvb2wgZndfc3RhdHNfZG9uZTsNCj4g PiAgIAl1MzIgZXh0ZF9yeF9zdGF0czsNCj4gPiAgIAl1MzIgcGt0bG9nX2ZpbHRlcjsNCj4gPiAg IAl1MzIgcGt0bG9nX21vZGU7DQo+ID4gQEAgLTcxMiw2ICs3MDksOSBAQCBzdHJ1Y3QgYXRoMTFr IHsNCj4gPiAgIAl1OCB0d3RfZW5hYmxlZDsNCj4gPiAgIAlib29sIG5sb19lbmFibGVkOw0KPiA+ ICAgCXU4IGFscGhhMltSRUdfQUxQSEEyX0xFTiArIDFdOw0KPiA+ICsJc3RydWN0IGF0aDExa19m d19zdGF0cyBmd19zdGF0czsNCj4gPiArCXN0cnVjdCBjb21wbGV0aW9uIGZ3X3N0YXRzX2NvbXBs ZXRlOw0KPiA+ICsJYm9vbCBmd19zdGF0c19kb25lOw0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgc3Ry dWN0IGF0aDExa19iYW5kX2NhcCB7DQo+ID4gQEAgLTExMTcsNiArMTExNywxMiBAQCBzdHJ1Y3Qg YXRoMTFrX2Z3X3N0YXRzX2JjbiB7DQo+ID4gICAJdTMyIHR4X2Jjbl9vdXRhZ2VfY250Ow0KPiA+ ICAgfTsNCj4gPg0KPiA+ICt2b2lkIGF0aDExa19md19zdGF0c19pbml0KHN0cnVjdCBhdGgxMWsg KmFyKTsgdm9pZA0KPiA+ICthdGgxMWtfZndfc3RhdHNfcGRldnNfZnJlZShzdHJ1Y3QgbGlzdF9o ZWFkICpoZWFkKTsgdm9pZA0KPiA+ICthdGgxMWtfZndfc3RhdHNfdmRldnNfZnJlZShzdHJ1Y3Qg bGlzdF9oZWFkICpoZWFkKTsgdm9pZA0KPiA+ICthdGgxMWtfZndfc3RhdHNfYmNuX2ZyZWUoc3Ry dWN0IGxpc3RfaGVhZCAqaGVhZCk7IHZvaWQNCj4gPiArYXRoMTFrX2Z3X3N0YXRzX2ZyZWUoc3Ry dWN0IGF0aDExa19md19zdGF0cyAqc3RhdHMpOw0KPiA+ICsNCj4gPiAgIGV4dGVybiBjb25zdCBz dHJ1Y3QgY2VfcGlwZV9jb25maWcNCj4gYXRoMTFrX3RhcmdldF9jZV9jb25maWdfd2xhbl9pcHE4 MDc0W107DQo+ID4gICBleHRlcm4gY29uc3Qgc3RydWN0IHNlcnZpY2VfdG9fcGlwZQ0KPiBhdGgx MWtfdGFyZ2V0X3NlcnZpY2VfdG9fY2VfbWFwX3dsYW5faXBxODA3NFtdOw0KPiA+ICAgZXh0ZXJu IGNvbnN0IHN0cnVjdCBzZXJ2aWNlX3RvX3BpcGUNCj4gPiBhdGgxMWtfdGFyZ2V0X3NlcnZpY2Vf dG9fY2VfbWFwX3dsYW5faXBxNjAxOFtdOw0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93 aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuYw0KPiA+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv YXRoL2F0aDExay9kZWJ1Z2ZzLmMNCj4gPiBpbmRleCAwZDQ4NDNlZjlkZDEuLmU0YTJmZDNkYTQ4 MSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVn ZnMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5j DQo+ID4gQEAgLTkzLDkxICs5MywzNiBAQCB2b2lkIGF0aDExa19kZWJ1Z2ZzX2FkZF9kYnJpbmdf ZW50cnkoc3RydWN0DQo+IGF0aDExayAqYXIsDQo+ID4gICAJc3Bpbl91bmxvY2tfYmgoJmRicl9k YXRhLT5sb2NrKTsNCj4gPiAgIH0NCj4gPg0KPiA+IC1zdGF0aWMgdm9pZCBhdGgxMWtfZndfc3Rh dHNfcGRldnNfZnJlZShzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKSAtew0KPiA+IC0Jc3RydWN0IGF0 aDExa19md19zdGF0c19wZGV2ICppLCAqdG1wOw0KPiA+IC0NCj4gPiAtCWxpc3RfZm9yX2VhY2hf ZW50cnlfc2FmZShpLCB0bXAsIGhlYWQsIGxpc3QpIHsNCj4gPiAtCQlsaXN0X2RlbCgmaS0+bGlz dCk7DQo+ID4gLQkJa2ZyZWUoaSk7DQo+ID4gLQl9DQo+ID4gLX0NCj4gPiAtDQo+ID4gLXN0YXRp YyB2b2lkIGF0aDExa19md19zdGF0c192ZGV2c19mcmVlKHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQp IC17DQo+ID4gLQlzdHJ1Y3QgYXRoMTFrX2Z3X3N0YXRzX3ZkZXYgKmksICp0bXA7DQo+ID4gLQ0K PiA+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGksIHRtcCwgaGVhZCwgbGlzdCkgew0KPiA+ IC0JCWxpc3RfZGVsKCZpLT5saXN0KTsNCj4gPiAtCQlrZnJlZShpKTsNCj4gPiAtCX0NCj4gPiAt fQ0KPiA+IC0NCj4gPiAtc3RhdGljIHZvaWQgYXRoMTFrX2Z3X3N0YXRzX2Jjbl9mcmVlKHN0cnVj dCBsaXN0X2hlYWQgKmhlYWQpIC17DQo+ID4gLQlzdHJ1Y3QgYXRoMTFrX2Z3X3N0YXRzX2JjbiAq aSwgKnRtcDsNCj4gPiAtDQo+ID4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaSwgdG1wLCBo ZWFkLCBsaXN0KSB7DQo+ID4gLQkJbGlzdF9kZWwoJmktPmxpc3QpOw0KPiA+IC0JCWtmcmVlKGkp Ow0KPiA+IC0JfQ0KPiA+IC19DQo+ID4NCj4gPiAgIHN0YXRpYyB2b2lkIGF0aDExa19kZWJ1Z2Zz X2Z3X3N0YXRzX3Jlc2V0KHN0cnVjdCBhdGgxMWsgKmFyKQ0KPiA+ICAgew0KPiA+ICAgCXNwaW5f bG9ja19iaCgmYXItPmRhdGFfbG9jayk7DQo+ID4gLQlhci0+ZGVidWcuZndfc3RhdHNfZG9uZSA9 IGZhbHNlOw0KPiA+IC0JYXRoMTFrX2Z3X3N0YXRzX3BkZXZzX2ZyZWUoJmFyLT5kZWJ1Zy5md19z dGF0cy5wZGV2cyk7DQo+ID4gLQlhdGgxMWtfZndfc3RhdHNfdmRldnNfZnJlZSgmYXItPmRlYnVn LmZ3X3N0YXRzLnZkZXZzKTsNCj4gPiArCWFyLT5md19zdGF0c19kb25lID0gZmFsc2U7DQo+ID4g KwlhdGgxMWtfZndfc3RhdHNfcGRldnNfZnJlZSgmYXItPmZ3X3N0YXRzLnBkZXZzKTsNCj4gPiAr CWF0aDExa19md19zdGF0c192ZGV2c19mcmVlKCZhci0+Zndfc3RhdHMudmRldnMpOw0KPiA+ICAg CXNwaW5fdW5sb2NrX2JoKCZhci0+ZGF0YV9sb2NrKTsNCj4gPiAgIH0NCj4gPg0KPiA+IC12b2lk IGF0aDExa19kZWJ1Z2ZzX2Z3X3N0YXRzX3Byb2Nlc3Moc3RydWN0IGF0aDExa19iYXNlICphYiwg c3RydWN0DQo+ID4gc2tfYnVmZiAqc2tiKQ0KPiA+ICt2b2lkIGF0aDExa19kZWJ1Z2ZzX2Z3X3N0 YXRzX3Byb2Nlc3Moc3RydWN0IGF0aDExayAqYXIsIHN0cnVjdA0KPiA+ICthdGgxMWtfZndfc3Rh dHMgKnN0YXRzKQ0KPiA+ICAgew0KPiA+IC0Jc3RydWN0IGF0aDExa19md19zdGF0cyBzdGF0cyA9 IHt9Ow0KPiA+IC0Jc3RydWN0IGF0aDExayAqYXI7DQo+ID4gKwlzdHJ1Y3QgYXRoMTFrX2Jhc2Ug KmFiID0gYXItPmFiOw0KPiA+ICAgCXN0cnVjdCBhdGgxMWtfcGRldiAqcGRldjsNCj4gPiAgIAli b29sIGlzX2VuZDsNCj4gPiAgIAlzdGF0aWMgdW5zaWduZWQgaW50IG51bV92ZGV2LCBudW1fYmNu Ow0KPiA+ICAgCXNpemVfdCB0b3RhbF92ZGV2c19zdGFydGVkID0gMDsNCj4gPiAtCWludCBpLCBy ZXQ7DQo+ID4gLQ0KPiA+IC0JSU5JVF9MSVNUX0hFQUQoJnN0YXRzLnBkZXZzKTsNCj4gPiAtCUlO SVRfTElTVF9IRUFEKCZzdGF0cy52ZGV2cyk7DQo+ID4gLQlJTklUX0xJU1RfSEVBRCgmc3RhdHMu YmNuKTsNCj4gPiAtDQo+ID4gLQlyZXQgPSBhdGgxMWtfd21pX3B1bGxfZndfc3RhdHMoYWIsIHNr YiwgJnN0YXRzKTsNCj4gPiAtCWlmIChyZXQpIHsNCj4gPiAtCQlhdGgxMWtfd2FybihhYiwgImZh aWxlZCB0byBwdWxsIGZ3IHN0YXRzOiAlZFxuIiwgcmV0KTsNCj4gPiAtCQlnb3RvIGZyZWU7DQo+ ID4gLQl9DQo+ID4gLQ0KPiA+IC0JcmN1X3JlYWRfbG9jaygpOw0KPiA+IC0JYXIgPSBhdGgxMWtf bWFjX2dldF9hcl9ieV9wZGV2X2lkKGFiLCBzdGF0cy5wZGV2X2lkKTsNCj4gPiAtCWlmICghYXIp IHsNCj4gPiAtCQlyY3VfcmVhZF91bmxvY2soKTsNCj4gPiAtCQlhdGgxMWtfd2FybihhYiwgImZh aWxlZCB0byBnZXQgYXIgZm9yIHBkZXZfaWQgJWQ6ICVkXG4iLA0KPiA+IC0JCQkgICAgc3RhdHMu cGRldl9pZCwgcmV0KTsNCj4gPiAtCQlnb3RvIGZyZWU7DQo+ID4gLQl9DQo+ID4gLQ0KPiA+IC0J c3Bpbl9sb2NrX2JoKCZhci0+ZGF0YV9sb2NrKTsNCj4gPiArCWludCBpOw0KPiA+DQo+ID4gLQlp ZiAoc3RhdHMuc3RhdHNfaWQgPT0gV01JX1JFUVVFU1RfUERFVl9TVEFUKSB7DQo+ID4gLQkJbGlz dF9zcGxpY2VfdGFpbF9pbml0KCZzdGF0cy5wZGV2cywgJmFyLQ0KPiA+ZGVidWcuZndfc3RhdHMu cGRldnMpOw0KPiA+IC0JCWFyLT5kZWJ1Zy5md19zdGF0c19kb25lID0gdHJ1ZTsNCj4gPiAtCQln b3RvIGNvbXBsZXRlOw0KPiA+IC0JfQ0KPiA+ICsJLyogV01JX1JFUVVFU1RfUERFVl9TVEFUIHJl cXVlc3QgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWQNCj4gKi8NCj4gPg0KPiA+IC0JaWYgKHN0 YXRzLnN0YXRzX2lkID09IFdNSV9SRVFVRVNUX1JTU0lfUEVSX0NIQUlOX1NUQVQpIHsNCj4gPiAt CQlhci0+ZGVidWcuZndfc3RhdHNfZG9uZSA9IHRydWU7DQo+ID4gLQkJZ290byBjb21wbGV0ZTsN Cj4gPiArCWlmIChzdGF0cy0+c3RhdHNfaWQgPT0gV01JX1JFUVVFU1RfUlNTSV9QRVJfQ0hBSU5f U1RBVCkgew0KPiA+ICsJCWFyLT5md19zdGF0c19kb25lID0gdHJ1ZTsNCj4gPiArCQlyZXR1cm47 DQo+ID4gICAJfQ0KPiA+DQo+ID4gLQlpZiAoc3RhdHMuc3RhdHNfaWQgPT0gV01JX1JFUVVFU1Rf VkRFVl9TVEFUKSB7DQo+ID4gLQkJaWYgKGxpc3RfZW1wdHkoJnN0YXRzLnZkZXZzKSkgew0KPiA+ ICsJaWYgKHN0YXRzLT5zdGF0c19pZCA9PSBXTUlfUkVRVUVTVF9WREVWX1NUQVQpIHsNCj4gPiAr CQlpZiAobGlzdF9lbXB0eSgmc3RhdHMtPnZkZXZzKSkgew0KPiA+ICAgCQkJYXRoMTFrX3dhcm4o YWIsICJlbXB0eSB2ZGV2IHN0YXRzIik7DQo+ID4gLQkJCWdvdG8gY29tcGxldGU7DQo+ID4gKwkJ CXJldHVybjsNCj4gPiAgIAkJfQ0KPiA+ICAgCQkvKiBGVyBzZW5kcyBhbGwgdGhlIGFjdGl2ZSBW REVWIHN0YXRzIGlycmVzcGVjdGl2ZSBvZiBQREVWLA0KPiA+ICAgCQkgKiBoZW5jZSBsaW1pdCB1 bnRpbCB0aGUgY291bnQgb2YgYWxsIFZERVZzIHN0YXJ0ZWQgQEAgLTE5MCw0Mw0KPiA+ICsxMzUs MzQgQEAgdm9pZCBhdGgxMWtfZGVidWdmc19md19zdGF0c19wcm9jZXNzKHN0cnVjdCBhdGgxMWtf YmFzZQ0KPiA+ICphYiwgc3RydWN0IHNrX2J1ZmYgKnNrYg0KPiA+DQo+ID4gICAJCWlzX2VuZCA9 ICgoKytudW1fdmRldikgPT0gdG90YWxfdmRldnNfc3RhcnRlZCk7DQo+ID4NCj4gPiAtCQlsaXN0 X3NwbGljZV90YWlsX2luaXQoJnN0YXRzLnZkZXZzLA0KPiA+IC0JCQkJICAgICAgJmFyLT5kZWJ1 Zy5md19zdGF0cy52ZGV2cyk7DQo+ID4gKwkJbGlzdF9zcGxpY2VfdGFpbF9pbml0KCZzdGF0cy0+ dmRldnMsDQo+ID4gKwkJCQkgICAgICAmYXItPmZ3X3N0YXRzLnZkZXZzKTsNCj4gPg0KPiA+ICAg CQlpZiAoaXNfZW5kKSB7DQo+ID4gLQkJCWFyLT5kZWJ1Zy5md19zdGF0c19kb25lID0gdHJ1ZTsN Cj4gPiArCQkJYXItPmZ3X3N0YXRzX2RvbmUgPSB0cnVlOw0KPiA+ICAgCQkJbnVtX3ZkZXYgPSAw Ow0KPiA+ICAgCQl9DQo+ID4gLQkJZ290byBjb21wbGV0ZTsNCj4gPiArCQlyZXR1cm47DQo+ID4g ICAJfQ0KPiA+DQo+ID4gLQlpZiAoc3RhdHMuc3RhdHNfaWQgPT0gV01JX1JFUVVFU1RfQkNOX1NU QVQpIHsNCj4gPiAtCQlpZiAobGlzdF9lbXB0eSgmc3RhdHMuYmNuKSkgew0KPiA+ICsJaWYgKHN0 YXRzLT5zdGF0c19pZCA9PSBXTUlfUkVRVUVTVF9CQ05fU1RBVCkgew0KPiA+ICsJCWlmIChsaXN0 X2VtcHR5KCZzdGF0cy0+YmNuKSkgew0KPiA+ICAgCQkJYXRoMTFrX3dhcm4oYWIsICJlbXB0eSBi Y24gc3RhdHMiKTsNCj4gPiAtCQkJZ290byBjb21wbGV0ZTsNCj4gPiArCQkJcmV0dXJuOw0KPiA+ ICAgCQl9DQo+ID4gICAJCS8qIE1hcmsgZW5kIHVudGlsIHdlIHJlYWNoZWQgdGhlIGNvdW50IG9m IGFsbCBzdGFydGVkIFZERVZzDQo+ID4gICAJCSAqIHdpdGhpbiB0aGUgUERFVg0KPiA+ICAgCQkg Ki8NCj4gPiAgIAkJaXNfZW5kID0gKCgrK251bV9iY24pID09IGFyLT5udW1fc3RhcnRlZF92ZGV2 cyk7DQo+ID4NCj4gPiAtCQlsaXN0X3NwbGljZV90YWlsX2luaXQoJnN0YXRzLmJjbiwNCj4gPiAt CQkJCSAgICAgICZhci0+ZGVidWcuZndfc3RhdHMuYmNuKTsNCj4gPiArCQlsaXN0X3NwbGljZV90 YWlsX2luaXQoJnN0YXRzLT5iY24sDQo+ID4gKwkJCQkgICAgICAmYXItPmZ3X3N0YXRzLmJjbik7 DQo+ID4NCj4gPiAgIAkJaWYgKGlzX2VuZCkgew0KPiA+IC0JCQlhci0+ZGVidWcuZndfc3RhdHNf ZG9uZSA9IHRydWU7DQo+ID4gKwkJCWFyLT5md19zdGF0c19kb25lID0gdHJ1ZTsNCj4gPiAgIAkJ CW51bV9iY24gPSAwOw0KPiA+ICAgCQl9DQo+ID4gICAJfQ0KPiA+IC1jb21wbGV0ZToNCj4gPiAt CWNvbXBsZXRlKCZhci0+ZGVidWcuZndfc3RhdHNfY29tcGxldGUpOw0KPiA+IC0JcmN1X3JlYWRf dW5sb2NrKCk7DQo+ID4gLQlzcGluX3VubG9ja19iaCgmYXItPmRhdGFfbG9jayk7DQo+ID4gLQ0K PiA+IC1mcmVlOg0KPiA+IC0JYXRoMTFrX2Z3X3N0YXRzX3BkZXZzX2ZyZWUoJnN0YXRzLnBkZXZz KTsNCj4gPiAtCWF0aDExa19md19zdGF0c192ZGV2c19mcmVlKCZzdGF0cy52ZGV2cyk7DQo+ID4g LQlhdGgxMWtfZndfc3RhdHNfYmNuX2ZyZWUoJnN0YXRzLmJjbik7DQo+ID4gICB9DQo+ID4NCj4g PiAgIHN0YXRpYyBpbnQgYXRoMTFrX2RlYnVnZnNfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRo MTFrICphciwgQEANCj4gPiAtMjQ3LDcgKzE4Myw3IEBAIHN0YXRpYyBpbnQgYXRoMTFrX2RlYnVn ZnNfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QNCj4gPiBhdGgxMWsgKmFyLA0KPiA+DQo+ID4gICAJ YXRoMTFrX2RlYnVnZnNfZndfc3RhdHNfcmVzZXQoYXIpOw0KPiA+DQo+ID4gLQlyZWluaXRfY29t cGxldGlvbigmYXItPmRlYnVnLmZ3X3N0YXRzX2NvbXBsZXRlKTsNCj4gPiArCXJlaW5pdF9jb21w bGV0aW9uKCZhci0+Zndfc3RhdHNfY29tcGxldGUpOw0KPiA+DQo+ID4gICAJcmV0ID0gYXRoMTFr X3dtaV9zZW5kX3N0YXRzX3JlcXVlc3RfY21kKGFyLCByZXFfcGFyYW0pOw0KPiA+DQo+ID4gQEAg LTI1OCw3ICsxOTQsNyBAQCBzdGF0aWMgaW50IGF0aDExa19kZWJ1Z2ZzX2Z3X3N0YXRzX3JlcXVl c3Qoc3RydWN0DQo+IGF0aDExayAqYXIsDQo+ID4gICAJfQ0KPiA+DQo+ID4gICAJdGltZV9sZWZ0 ID0NCj4gPiAtCXdhaXRfZm9yX2NvbXBsZXRpb25fdGltZW91dCgmYXItPmRlYnVnLmZ3X3N0YXRz X2NvbXBsZXRlLA0KPiA+ICsJd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZhci0+Zndfc3Rh dHNfY29tcGxldGUsDQo+IA0KPiB0aGlzIGlzIGEgY2FzZSB3aGVyZSBpbW8gdGhlIGV4aXN0aW5n IGNvZGUgd2FzIG5vdCBjb21wbGlhbnQgd2l0aCB0aGUgY29kaW5nDQo+IHN0YW5kYXJkIChkZXNj ZW5kYW50IHdhcyBub3QgaW5kZW50ZWQgZnJvbSB0aGUgcGFyZW50KSBzbyBJJ2QgZGVmaW5pdGVs eQ0KPiB3YW50IHRvIGVpdGhlciBpbmRlbnQgdGhpcyBvciBjb21iaW5lIGl0IHdpdGggdGhlIHBy aW9yIGxpbmUNCj4gDQpTdXJlLCB3aWxsIGFkZHJlc3MgaW4gdjIuIFRoYW5rcyBmb3IgcG9pbnRp bmcgb3V0Lg0KDQo+ID4gICAJCQkJICAgIDEgKiBIWik7DQo+ID4gICAJaWYgKCF0aW1lX2xlZnQp DQo+ID4gICAJCXJldHVybiAtRVRJTUVET1VUOw0KPiA+IEBAIC0yNjgsNyArMjA0LDcgQEAgc3Rh dGljIGludCBhdGgxMWtfZGVidWdmc19md19zdGF0c19yZXF1ZXN0KHN0cnVjdA0KPiBhdGgxMWsg KmFyLA0KPiA+ICAgCQkJYnJlYWs7DQo+ID4NCj4gPiAgIAkJc3Bpbl9sb2NrX2JoKCZhci0+ZGF0 YV9sb2NrKTsNCj4gPiAtCQlpZiAoYXItPmRlYnVnLmZ3X3N0YXRzX2RvbmUpIHsNCj4gPiArCQlp ZiAoYXItPmZ3X3N0YXRzX2RvbmUpIHsNCj4gPiAgIAkJCXNwaW5fdW5sb2NrX2JoKCZhci0+ZGF0 YV9sb2NrKTsNCj4gPiAgIAkJCWJyZWFrOw0KPiA+ICAgCQl9DQo+ID4gQEAgLTM0MCw3ICsyNzYs NyBAQCBzdGF0aWMgaW50IGF0aDExa19vcGVuX3BkZXZfc3RhdHMoc3RydWN0IGlub2RlDQo+ICpp bm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpDQo+ID4gICAJCWdvdG8gZXJyX2ZyZWU7DQo+ID4gICAJ fQ0KPiA+DQo+ID4gLQlhdGgxMWtfd21pX2Z3X3N0YXRzX2ZpbGwoYXIsICZhci0+ZGVidWcuZndf c3RhdHMsDQo+IHJlcV9wYXJhbS5zdGF0c19pZCwNCj4gPiArCWF0aDExa193bWlfZndfc3RhdHNf ZmlsbChhciwgJmFyLT5md19zdGF0cywgcmVxX3BhcmFtLnN0YXRzX2lkLA0KPiA+ICAgCQkJCSBi dWYpOw0KPiANCj4gdGhlcmUgYXJlIG11bHRpcGxlIHBsYWNlcyBpbiB0aGlzIHBhdGNoIHdoZXJl LCBkdWUgdG8gdGhlIGZhY3QgeW91IGFyZQ0KPiByZW1vdmluZyA2IGNoYXJhY3RlcnMgZnJvbSBh biBleGlzdGluZyBsaW5lLCBhIGRlc2NlbmRhbnQgbWF5IG5vdyBmaXQgb24gdGhlDQo+IHByaW9y IGxpbmUgd2l0aG91dCBleGNlZWRpbmcgODAgY29sdW1ucy4gY29uc2lkZXIgcmVtb3ZpbmcgdGhl IGxpbmUgYnJlYWsgaW4NCj4gdGhvc2UgY2FzZXMuDQo+IA0KPiBpIHdhc24ndCBnb2luZyB0byBt ZW50aW9uIHRoZXNlIGJpa2VzaGVkIGNvbW1lbnRzIGJ1dCBJIHNlZSBzb21ldGhpbmcgaW4NCj4g dGhlIDJuZCBwYXRjaCB0aGF0IGltbyBzaG91bGQgYmUgYWRkcmVzc2VkLCBzbyB5b3UnbGwgcHJv YmFibHkgd2FudCB0bw0KPiB1cGxvYWQgYSB2MiBhbmQgdGhpcyB3b3VsZCBiZSBhIGdvb2QgY2xl YW51cCB0byBhcHBseSBhcyB3ZWxsDQo+IA0KWWVzIGNvcnJlY3QuIFdpbGwgYWRkcmVzcyB0aGVz ZSB2Mi4gVGhhbmtzLg0KDQo+ID4NCj4gPiAgIAlmaWxlLT5wcml2YXRlX2RhdGEgPSBidWY7DQo+ ID4gQEAgLTQxMiw3ICszNDgsNyBAQCBzdGF0aWMgaW50IGF0aDExa19vcGVuX3ZkZXZfc3RhdHMo c3RydWN0IGlub2RlDQo+ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpDQo+ID4gICAJCWdvdG8g ZXJyX2ZyZWU7DQo+ID4gICAJfQ0KPiA+DQo+ID4gLQlhdGgxMWtfd21pX2Z3X3N0YXRzX2ZpbGwo YXIsICZhci0+ZGVidWcuZndfc3RhdHMsDQo+IHJlcV9wYXJhbS5zdGF0c19pZCwNCj4gPiArCWF0 aDExa193bWlfZndfc3RhdHNfZmlsbChhciwgJmFyLT5md19zdGF0cywgcmVxX3BhcmFtLnN0YXRz X2lkLA0KPiA+ICAgCQkJCSBidWYpOw0KPiA+DQo+ID4gICAJZmlsZS0+cHJpdmF0ZV9kYXRhID0g YnVmOw0KPiA+IEBAIC00OTAsMTQgKzQyNiwxNCBAQCBzdGF0aWMgaW50IGF0aDExa19vcGVuX2Jj bl9zdGF0cyhzdHJ1Y3QgaW5vZGUNCj4gKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkNCj4gPiAg IAkJfQ0KPiA+ICAgCX0NCj4gPg0KPiA+IC0JYXRoMTFrX3dtaV9md19zdGF0c19maWxsKGFyLCAm YXItPmRlYnVnLmZ3X3N0YXRzLA0KPiByZXFfcGFyYW0uc3RhdHNfaWQsDQo+ID4gKwlhdGgxMWtf d21pX2Z3X3N0YXRzX2ZpbGwoYXIsICZhci0+Zndfc3RhdHMsIHJlcV9wYXJhbS5zdGF0c19pZCwN Cj4gPiAgIAkJCQkgYnVmKTsNCj4gPg0KPiA+ICAgCS8qIHNpbmNlIGJlYWNvbiBzdGF0cyByZXF1 ZXN0IGlzIGxvb3BlZCBmb3IgYWxsIGFjdGl2ZSBWREVWcywgc2F2ZWQgZncNCj4gPiAgIAkgKiBz dGF0cyBpcyBub3QgZnJlZWQgZm9yIGVhY2ggcmVxdWVzdCB1bnRpbCBkb25lIGZvciBhbGwgYWN0 aXZlIFZERVZzDQo+ID4gICAJICovDQo+ID4gICAJc3Bpbl9sb2NrX2JoKCZhci0+ZGF0YV9sb2Nr KTsNCj4gPiAtCWF0aDExa19md19zdGF0c19iY25fZnJlZSgmYXItPmRlYnVnLmZ3X3N0YXRzLmJj bik7DQo+ID4gKwlhdGgxMWtfZndfc3RhdHNfYmNuX2ZyZWUoJmFyLT5md19zdGF0cy5iY24pOw0K PiA+ICAgCXNwaW5fdW5sb2NrX2JoKCZhci0+ZGF0YV9sb2NrKTsNCj4gPg0KPiA+ICAgCWZpbGUt PnByaXZhdGVfZGF0YSA9IGJ1ZjsNCj4gPiBAQCAtMTA1NSw3ICs5OTEsNyBAQCB2b2lkIGF0aDEx a19kZWJ1Z2ZzX2Z3X3N0YXRzX2luaXQoc3RydWN0IGF0aDExaw0KPiAqYXIpDQo+ID4gICAJc3Ry dWN0IGRlbnRyeSAqZndzdGF0c19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImZ3X3N0YXRzIiwN Cj4gPiAgIAkJCQkJCQlhci0NCj4gPmRlYnVnLmRlYnVnZnNfcGRldik7DQo+ID4NCj4gPiAtCWFy LT5kZWJ1Zy5md19zdGF0cy5kZWJ1Z2ZzX2Z3c3RhdHMgPSBmd3N0YXRzX2RpcjsNCj4gPiArCWFy LT5md19zdGF0cy5kZWJ1Z2ZzX2Z3c3RhdHMgPSBmd3N0YXRzX2RpcjsNCj4gPg0KPiA+ICAgCS8q IGFsbCBzdGF0cyBkZWJ1Z2ZzIGZpbGVzIGNyZWF0ZWQgYXJlIHVuZGVyICJmd19zdGF0cyIgZGly ZWN0b3J5DQo+ID4gICAJICogY3JlYXRlZCBwZXIgUERFVg0KPiA+IEBAIC0xMDY3LDExICsxMDAz LDYgQEAgdm9pZCBhdGgxMWtfZGVidWdmc19md19zdGF0c19pbml0KHN0cnVjdA0KPiBhdGgxMWsg KmFyKQ0KPiA+ICAgCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImJlYWNvbl9zdGF0cyIsIDA2MDAsIGZ3 c3RhdHNfZGlyLCBhciwNCj4gPiAgIAkJCSAgICAmZm9wc19iY25fc3RhdHMpOw0KPiA+DQo+ID4g LQlJTklUX0xJU1RfSEVBRCgmYXItPmRlYnVnLmZ3X3N0YXRzLnBkZXZzKTsNCj4gPiAtCUlOSVRf TElTVF9IRUFEKCZhci0+ZGVidWcuZndfc3RhdHMudmRldnMpOw0KPiA+IC0JSU5JVF9MSVNUX0hF QUQoJmFyLT5kZWJ1Zy5md19zdGF0cy5iY24pOw0KPiA+IC0NCj4gPiAtCWluaXRfY29tcGxldGlv bigmYXItPmRlYnVnLmZ3X3N0YXRzX2NvbXBsZXRlKTsNCj4gPiAgIH0NCj4gPg0KPiA+ICAgc3Rh dGljIHNzaXplX3QgYXRoMTFrX3dyaXRlX3BrdGxvZ19maWx0ZXIoc3RydWN0IGZpbGUgKmZpbGUs IGRpZmYNCj4gPiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdm cy5oDQo+ID4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL2RlYnVnZnMuaA0KPiA+ IGluZGV4IDhmYzEyNWE3MTk0My4uZTQ1ZGM4NzRmZjIzIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZl cnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvZGVidWdmcy5oDQo+ID4gKysrIGIvZHJpdmVycy9u ZXQvd2lyZWxlc3MvYXRoL2F0aDExay9kZWJ1Z2ZzLmgNCj4gPiBAQCAtMjcxLDcgKzI3MSw3IEBA IGludCBhdGgxMWtfZGVidWdmc19wZGV2X2NyZWF0ZShzdHJ1Y3QNCj4gYXRoMTFrX2Jhc2UgKmFi KTsNCj4gPiAgIHZvaWQgYXRoMTFrX2RlYnVnZnNfcGRldl9kZXN0cm95KHN0cnVjdCBhdGgxMWtf YmFzZSAqYWIpOw0KPiA+ICAgaW50IGF0aDExa19kZWJ1Z2ZzX3JlZ2lzdGVyKHN0cnVjdCBhdGgx MWsgKmFyKTsNCj4gPiAgIHZvaWQgYXRoMTFrX2RlYnVnZnNfdW5yZWdpc3RlcihzdHJ1Y3QgYXRo MTFrICphcik7IC12b2lkDQo+ID4gYXRoMTFrX2RlYnVnZnNfZndfc3RhdHNfcHJvY2VzcyhzdHJ1 Y3QgYXRoMTFrX2Jhc2UgKmFiLCBzdHJ1Y3Qgc2tfYnVmZg0KPiA+ICpza2IpOw0KPiA+ICt2b2lk IGF0aDExa19kZWJ1Z2ZzX2Z3X3N0YXRzX3Byb2Nlc3Moc3RydWN0IGF0aDExayAqYXIsIHN0cnVj dA0KPiA+ICthdGgxMWtfZndfc3RhdHMgKnN0YXRzKTsNCj4gPg0KPiA+ICAgdm9pZCBhdGgxMWtf ZGVidWdmc19md19zdGF0c19pbml0KHN0cnVjdCBhdGgxMWsgKmFyKTsNCj4gPiAgIGludCBhdGgx MWtfZGVidWdmc19nZXRfZndfc3RhdHMoc3RydWN0IGF0aDExayAqYXIsIHUzMiBwZGV2X2lkLCBA QA0KPiA+IC0zNTIsOCArMzUyLDggQEAgc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kZWJ1Z2Zz X3VucmVnaXN0ZXIoc3RydWN0DQo+IGF0aDExayAqYXIpDQo+ID4gICB7DQo+ID4gICB9DQo+ID4N Cj4gPiAtc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kZWJ1Z2ZzX2Z3X3N0YXRzX3Byb2Nlc3Mo c3RydWN0IGF0aDExa19iYXNlDQo+ICphYiwNCj4gPiAtCQkJCQkJICAgc3RydWN0IHNrX2J1ZmYg KnNrYikNCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGF0aDExa19kZWJ1Z2ZzX2Z3X3N0YXRzX3By b2Nlc3Moc3RydWN0IGF0aDExayAqYXIsDQo+ID4gKwkJCQkJCSAgIHN0cnVjdCBhdGgxMWtfZndf c3RhdHMNCj4gKnN0YXRzKQ0KPiA+ICAgew0KPiA+ICAgfQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMNCj4gPiBiL2RyaXZlcnMvbmV0 L3dpcmVsZXNzL2F0aC9hdGgxMWsvd21pLmMNCj4gPiBpbmRleCA4NGQxYzcwNTQwMTMuLjljN2Ew YTQzOGIxMiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFr L3dtaS5jDQo+ID4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay93bWkuYw0K PiA+IEBAIC03NDEyLDcgKzc0MTIsNTMgQEAgc3RhdGljIHZvaWQNCj4gYXRoMTFrX3BlZXJfYXNz b2NfY29uZl9ldmVudChzdHJ1Y3QNCj4gPiBhdGgxMWtfYmFzZSAqYWIsIHN0cnVjdCBza19idWZm DQo+ID4NCj4gPiAgIHN0YXRpYyB2b2lkIGF0aDExa191cGRhdGVfc3RhdHNfZXZlbnQoc3RydWN0 IGF0aDExa19iYXNlICphYiwgc3RydWN0DQo+IHNrX2J1ZmYgKnNrYikNCj4gPiAgIHsNCj4gPiAt CWF0aDExa19kZWJ1Z2ZzX2Z3X3N0YXRzX3Byb2Nlc3MoYWIsIHNrYik7DQo+ID4gKwlzdHJ1Y3Qg YXRoMTFrX2Z3X3N0YXRzIHN0YXRzID0ge307DQo+ID4gKwlzdHJ1Y3QgYXRoMTFrICphcjsNCj4g PiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJSU5JVF9MSVNUX0hFQUQoJnN0YXRzLnBkZXZzKTsN Cj4gPiArCUlOSVRfTElTVF9IRUFEKCZzdGF0cy52ZGV2cyk7DQo+ID4gKwlJTklUX0xJU1RfSEVB RCgmc3RhdHMuYmNuKTsNCj4gPiArDQo+ID4gKwlyZXQgPSBhdGgxMWtfd21pX3B1bGxfZndfc3Rh dHMoYWIsIHNrYiwgJnN0YXRzKTsNCj4gPiArCWlmIChyZXQpIHsNCj4gPiArCQlhdGgxMWtfd2Fy bihhYiwgImZhaWxlZCB0byBwdWxsIGZ3IHN0YXRzOiAlZFxuIiwgcmV0KTsNCj4gPiArCQlnb3Rv IGZyZWU7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmN1X3JlYWRfbG9jaygpOw0KPiA+ICsJYXIg PSBhdGgxMWtfbWFjX2dldF9hcl9ieV9wZGV2X2lkKGFiLCBzdGF0cy5wZGV2X2lkKTsNCj4gPiAr CWlmICghYXIpIHsNCj4gPiArCQlyY3VfcmVhZF91bmxvY2soKTsNCj4gPiArCQlhdGgxMWtfd2Fy bihhYiwgImZhaWxlZCB0byBnZXQgYXIgZm9yIHBkZXZfaWQgJWQ6ICVkXG4iLA0KPiA+ICsJCQkg ICAgc3RhdHMucGRldl9pZCwgcmV0KTsNCj4gPiArCQlnb3RvIGZyZWU7DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJc3Bpbl9sb2NrX2JoKCZhci0+ZGF0YV9sb2NrKTsNCj4gPiArDQo+ID4gKwkvKiBX TUlfUkVRVUVTVF9QREVWX1NUQVQgY2FuIGJlIHJlcXVlc3RlZCB2aWEgLmdldF90eHBvd2VyDQo+ IG1hYyBvcHMgb3IgdmlhDQo+ID4gKwkgKiBkZWJ1Z2ZzIGZ3IHN0YXRzLiBUaGVyZWZvcmUsIHBy b2Nlc3NpbmcgaXQgc2VwYXJhdGVseS4NCj4gPiArCSAqLw0KPiA+ICsJaWYgKHN0YXRzLnN0YXRz X2lkID09IFdNSV9SRVFVRVNUX1BERVZfU1RBVCkgew0KPiA+ICsJCWxpc3Rfc3BsaWNlX3RhaWxf aW5pdCgmc3RhdHMucGRldnMsICZhci0+Zndfc3RhdHMucGRldnMpOw0KPiA+ICsJCWFyLT5md19z dGF0c19kb25lID0gdHJ1ZTsNCj4gPiArCQlnb3RvIGNvbXBsZXRlOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCS8qIFdNSV9SRVFVRVNUX1ZERVZfU1RBVCwgV01JX1JFUVVFU1RfQkNOX1NUQVQgYW5k DQo+IFdNSV9SRVFVRVNUX1JTU0lfUEVSX0NIQUlOX1NUQVQNCj4gPiArCSAqIGFyZSBjdXJyZW50 bHkgcmVxdWVzdGVkIG9ubHkgdmlhIGRlYnVnZnMgZncgc3RhdHMuIEhlbmNlLA0KPiBwcm9jZXNz aW5nIHRoZXNlDQo+ID4gKwkgKiBpbiBkZWJ1Z2ZzIGNvbnRleHQNCj4gPiArCSAqLw0KPiA+ICsJ YXRoMTFrX2RlYnVnZnNfZndfc3RhdHNfcHJvY2VzcyhhciwgJnN0YXRzKTsNCj4gPiArDQo+ID4g K2NvbXBsZXRlOg0KPiA+ICsJY29tcGxldGUoJmFyLT5md19zdGF0c19jb21wbGV0ZSk7DQo+ID4g KwlyY3VfcmVhZF91bmxvY2soKTsNCj4gPiArCXNwaW5fdW5sb2NrX2JoKCZhci0+ZGF0YV9sb2Nr KTsNCj4gPiArDQo+ID4gK2ZyZWU6DQo+ID4gKwlhdGgxMWtfZndfc3RhdHNfZnJlZSgmc3RhdHMp Ow0KPiA+ICAgfQ0KPiA+DQo+ID4gICAvKiBQREVWX0NUTF9GQUlMU0FGRV9DSEVDS19FVkVOVCBp cyByZWNlaXZlZCBmcm9tIEZXIHdoZW4gdGhlDQo+ID4gZnJlcXVlbmN5IHNjYW5uZWQNCg0K 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 337D7C433EF for ; Fri, 3 Jun 2022 04:23:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=27uSmrkPmn5uMweW3Urysuoe6LNrCpc9Opl7MG500s8=; b=ArbKglUR4nKdbx x5wcA9tKJjjcT7D+WmgBKrM5Gn67VmpWh1t/3aSfynRczawKSJPIkp/ZqPUjX1VlmtUIMnWXvz5p8 0S+8ipD0UkOLDG24haOmBq0ZuzSOAOCeleCiPUw5BzPO/tSGiZJ5FG4P8b3Q3uYScACm1ZOahPOeY jSQN4tbZ8oDu0gwLTG/itvxKY/xZR/4LDi4NKBruehXhPaFgWvZR6oQxQJ9r/vGp9Z6o4HzUbMDMy sdXmfXQyPJMIgGYejfq4ZDh/FrcK5cRzJkGIgPB0Y6qxe8V5ZRqie72wrRzXHl+fa2DxVpaOt2gwF o96PKnuL/9Ktg/ctI75g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nwyqA-005mBz-L2; Fri, 03 Jun 2022 04:23:14 +0000 Received: from esa.hc3962-90.iphmx.com ([216.71.140.77]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nwyq6-005mB3-Nc for ath11k@lists.infradead.org; Fri, 03 Jun 2022 04:23:13 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qccesdkim1; t=1654230190; x=1654834990; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=dStWJwcehBp6j73duiTjy7YXEG+PPXSIpMVQvCoTpyk=; b=CR50ao0cTq0WwQ6euuS8EgkF5xLStoimVJkXa77ydASCU01rl9EXxBrj H59LkdxEwehZiYpby3ThTwxhN8hubJZ8gCAKar/Bd81YKckHdUGPL5hvI gTe5AOgZ2Px4g+yg7QPXPLHUq3pte0v3oeFGkRCDkTuUCkmcIcK6QzvvA E=; Received: from mail-dm6nam12lp2173.outbound.protection.outlook.com (HELO NAM12-DM6-obe.outbound.protection.outlook.com) ([104.47.59.173]) by ob1.hc3962-90.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jun 2022 04:23:07 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ncw4Qv+UINrUoLHffwXbFvQ6kYjFHQHBbi1JOMxsIYn9MYX4/uhU66T1xAX7TU4anh9mGJfqzM6yUEee7Tov71pyh0ke9EwpWnGfQIS6JWEEvZa9dBOmJebhWtA3Tsr+N++YF7+S7GZAmMjSO9n6Mdv9/zQjAd5Cjnr6aHzl1Zskw1hLdIPEOJhTdIkyhV6pXB2Epjk3rJ0znLeymi8q7iK52jCrVagVtgn16tfEC27d4AQjlsfrjArXO3IRkJ8fEIVESf5CpSfpkGOAwomTrCr09pVEZGyseI4RV9q4JwBUdMnvdICppFoTGYyo4t+EvYnGtr8PwgdOPsZ2XobnNQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=dStWJwcehBp6j73duiTjy7YXEG+PPXSIpMVQvCoTpyk=; b=cgTxkGbJEJJG/RrqihkvbaBm3M/By0s+uqjlWYTZM3koiib/SGeZ262eZs8cXefOek8IlD9+eOZAQqcfu/6k+rSVOUjQoI28teJYsmto5OIAYyIC7EqWUHZ7JMmT1z+UieQHHDs6IBRozSP8XRxeJWIsfKCn3MOSe2gIuzqmFUr6CNFUrfYdUdHTbBPVE+w4Ywi2aZEjfSsM/83JDwIhV4GbnGLbWr+kcE1SSX0kuLQehcr7la4DwRVs5rH+T4jwV0J5iiRL7fdvs4DjbOmPVafzwAz/EjHOt+A3zm0ZHrBh3FDhbj/T+ANWM397ExU3wNzPTk1+FdfFT/SoVKJOTQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=quicinc.com; dmarc=pass action=none header.from=quicinc.com; dkim=pass header.d=quicinc.com; arc=none Received: from DM5PR0201MB3589.namprd02.prod.outlook.com (2603:10b6:4:80::19) by BY5PR02MB6033.namprd02.prod.outlook.com (2603:10b6:a03:1ff::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5314.12; Fri, 3 Jun 2022 04:23:04 +0000 Received: from DM5PR0201MB3589.namprd02.prod.outlook.com ([fe80::f5b9:2296:c8d4:764e]) by DM5PR0201MB3589.namprd02.prod.outlook.com ([fe80::f5b9:2296:c8d4:764e%7]) with mapi id 15.20.5293.019; Fri, 3 Jun 2022 04:23:04 +0000 From: "Aditya Kumar Singh (QUIC)" To: "Jeff Johnson (QUIC)" CC: "linux-wireless@vger.kernel.org" , "Aditya Kumar Singh (QUIC)" , "ath11k@lists.infradead.org" Subject: RE: [PATCH 1/2] ath11k: move firmware stats out of debugfs Thread-Topic: [PATCH 1/2] ath11k: move firmware stats out of debugfs Thread-Index: AQHYdj+uvGfmOr/9ekaKJGdgXcX7F608LtqAgADn4MA= Date: Fri, 3 Jun 2022 04:23:04 +0000 Message-ID: References: <20220602051425.9265-1-quic_adisi@quicinc.com> <20220602051425.9265-2-quic_adisi@quicinc.com> <07248432-bf0f-e2d5-6ada-61c66337f295@quicinc.com> In-Reply-To: <07248432-bf0f-e2d5-6ada-61c66337f295@quicinc.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=quicinc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 880bc43f-516f-4d40-b859-08da4518c0c3 x-ms-traffictypediagnostic: BY5PR02MB6033:EE_ x-ld-processed: 98e9ba89-e1a1-4e38-9007-8bdabc25de1d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WujfyL9gnmVChocXoziD02H33N6ZvZFYYpZtLTA+8dzz/+s9GE24SwXp5Trl5uAitHEGKTJF/yKZh9K1MgLiobaSHPxXb+8qk2P84dBEAViXMb0gyq5Sx0uqhPef3hcA/UtZEcCeWYdmoK8FgOcoApal1vqqhjHj8JefUMX8l7gtJycmUNlZB+3fji7R7B92AaXn0E05Be/vljZ1p/0rUSSqjauDcDT53vhbDNjER45CjmjASuzghjBKNrK2yglUPKQpnmhrok8ABnlHBlVtNTIZvjq35yISI3W1ETtUli79wYaRc6kwzxYqlH5cz/cE1P4ev33d37ySsRT4es+9ffzQ34sxjSzp1CINRXU4lnz1va2DftkibnGPeWOTvaVbO0xiLmaB14TYy+QkJmoo2OwEWOh36hSHSJVueNlNkx8WeSXSnqb/naNy7f4MJtk/ko0xLphc9yKVtoZy+tMNizVa39qqnx848BabkASiucensBHgA0hVQ4hVvJV9hP7SVbmnsWP2wamCCgHjsnbQ5AtmaeJzzdEaUiTMMm3V3DCm0zwlUgOGZBU01qGm5UXrW83mWnWBGL/t8Xy7B/ZqAiv25YYYTsQlC+S0u9xXw4R/tjJ9g2dFdWE6XVUXT9+0krNNLZhVS4l8JSVyzHohrxHfO8ZcZtxfOOfCDLjZ8lh0pX/p7Ye6LuMVikbAfYWd3Im1nCssL0tCTTsYXNh51g== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM5PR0201MB3589.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(55016003)(26005)(30864003)(38070700005)(8936002)(71200400001)(122000001)(6862004)(33656002)(5660300002)(508600001)(9686003)(186003)(83380400001)(2906002)(53546011)(52536014)(7696005)(6506007)(86362001)(8676002)(4326008)(38100700002)(66476007)(6636002)(316002)(66446008)(66556008)(66946007)(64756008)(54906003)(76116006);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aUdULzlocmdRTmdPa0JxRnBjVFMwUkhvbytCa0U3OTIzQVpuR3FRajVad2lN?= =?utf-8?B?K0srcmJzV3NQNDlYakpmK3RCMEpqb3hZcmJKdE4zbGxvNkgyZ1NUcURvcXJM?= =?utf-8?B?dWN3SmxTdUxOTXlZVENpNmxuOVBGYURVdkNKdnFpVk5GdTAyeXk3WkhMM1pQ?= =?utf-8?B?ZFc0bEZRYTB1ck1ZR2tXVi8yMWw0OXhlVmdZTjNOMVIyTU1CMjFxUVVBT0t0?= =?utf-8?B?RSt4MXlqOFdNNHlodTNpYlV6ZHE5Rno5Y0FaMVZnKzZjTXVobHhWc1NxaTZU?= =?utf-8?B?VG5tMzc1NUdmTFNWQUFKRDRTTnFQSFVGR1NRMEh3Q2g0OVdyMjFvYU5VUS9K?= =?utf-8?B?UXdsdFQxMUg3K21obUt1c0FGbTg3ZDRoQUdnZkVBVnYzOGxrYzN3Wm5kL29E?= =?utf-8?B?a3RZT1RjSFdGWWNNTWM4NDc4QWtkRTE0YnFUSUFVd2h6NjQ3ZFJwNHVCeUF2?= =?utf-8?B?L2xNaVR3bWpNdDFnRXhHSE9lRlhkd052WXpZQVJIMWhGZG5LMG1HWjhZelho?= =?utf-8?B?WW1zT1ZaYjBTWE9PZUk3clNTYUo4THdPc3pPUkN2M0VyNkFTazBCdW95U0Z6?= =?utf-8?B?QmdsVzE3R3J1Rk9aVFNzYTlrc1hCRWEydFBiTzJOSzk0LzJwNlpJQnFEUXd6?= =?utf-8?B?SFVrVk90SmJxNVZZU2tQQ3FTQnBXcjM1SVEzMmp1YjVCUkY0ZDNRa3RsUlRD?= =?utf-8?B?SWN1a3V6TkZMUEpEb1BSLzhlT0dDcXZWL3hqNlRZRTRueW1FQXY3WUZqeFJQ?= =?utf-8?B?OFU3ejZwcmhiVVRiZDY1LzNqQk8xZkxlSTlxQ20wZEVHdVpEN0tHSmZTR256?= =?utf-8?B?dmtTL0E0RFQyOEduUlJRc1VsYWR0Tk85OFQ5UE9GWTZhRlBHaVdtSkxqS1ZJ?= =?utf-8?B?YkcwcW9lY0NPVlI1d2Jha2JTWC84Z3ZKSUdMNlY5bVp6cDg3ZVEvaDVsVXhY?= =?utf-8?B?QWp5RWhPcWYxMTJpMnFRRWJyVFNvSXZNcmtHSUJjVlBZVllOdHl2SHFsN3V4?= =?utf-8?B?UjkwYkg2dGpRd2lHY3ZxcVV6YjlrT2FpNFZKZTV5blJlUWhFSldMM3RHVG1W?= =?utf-8?B?Y2trbkdZUTkvSUp3Uk16R3YrdFRvVE1pTkIvTWpvY2orOHJLN0dZWXk2bmdG?= =?utf-8?B?ajV1NDQ0bnJnTmJ4TUNaS3hienB1dTJFNTYyeDYrSGlKZk5YRmFzSGZ0RFJk?= =?utf-8?B?bzJ2TWVsVWRoWDdyR0pDZEx0dTEzemFHNDdtZk1talFpdEgvMGhBd2l1NW1C?= =?utf-8?B?OVFEUjloR2N0QnpjMjZDR1l2aUFUVko0a1lzb1Rsd0puc0dQREJLM2I5dTNU?= =?utf-8?B?cHRqQmdwNzlFaVZNS1FTTDNJaTRIQXhwZW1YVFhiaDR4ZWlYU0FnbC85Z0li?= =?utf-8?B?a1NXNE9zMHdKTHk0MzdjN3pZeGkwQWtXUmpDUmI5ellvYVdlMnVUVEdGUDRK?= =?utf-8?B?blFVRkZwMWxrSDY2Q3JSQzVFVXZYdXRROGNwd0ZBdlBhVlovTkR1aEVQTTNw?= =?utf-8?B?Z0F4NzZ4Nml6bVh6b0k1RmtveXg1SWQ5Sy9TRFRvejNoajAzMEtiRDd1WThw?= =?utf-8?B?ZklxcWNWT0IrVTZTdGdERi9obHRLdEt2MFc1ekZqODQ1YXZRcVE2cTFnbXFv?= =?utf-8?B?aUNtNDNwd1ZZYzRaWUJ5QzFzU0dWSFhtVVJyUFhvUFl2SVJWUkd1S21vQWJ2?= =?utf-8?B?cWNlbFdKbmV6VUpoekRmak1PWWhsV212UFBtSkJiRXVYRG10eUlmanI4ek5Y?= =?utf-8?B?Rm9lWlcxbDRuUlhkSEo0Tk1LVkZzc2FFRDJZWGVBaEhTdHdla0pKUnptbWtu?= =?utf-8?B?STFDTzByeGJFOW0vak4weEE4cnErOTNuZ1ZpYjhqVnpnbG5Ib1NhdHlwN1J6?= =?utf-8?B?eEE3bkdhR0J2ZHA0cjUzSTVUeFNuTTZVQzNocEJUWmgyZGxHbnQrTnRLQ3gy?= =?utf-8?B?b1lpQTVUamQyZTlFUC9Pa3djcm42YUY1MTEyV0hqb3BSdkxxdm9EOFRxL0h0?= =?utf-8?B?Yk00UVJONFVvdmpEcmRBRVJGUDRocDZyTExuaXZ2ZHJkbTZzYWprblZVNlhH?= =?utf-8?B?OE1rMnZJRWFhZFVzUnV6SjloWmIrdm9JWml6Skd6MjY4UTl5ZGMzclhNN0hu?= =?utf-8?B?REo3T2oxTWNXZitxWnhwZGVZeGJ6NGdycnRTdUlqODRrWmpucXh4S3cvT0gx?= =?utf-8?B?SFlDUm9KdVNTa29hYXpnQ3hXcVM5d2lYMFdFcjJSM2F5QldJTUNoak1aR040?= =?utf-8?B?bFBFMXNKMjAvQkl3ekRwV3AxTVZvbTU0WkZtdXdKTVZ0RUFtajB2RWEva3VZ?= =?utf-8?B?bHlWS0xNUm9GcUpuQ0JsQWswOFBmeEdxcWdTV0VPV2J5OW9KSFIxUT09?= MIME-Version: 1.0 X-OriginatorOrg: quicinc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM5PR0201MB3589.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 880bc43f-516f-4d40-b859-08da4518c0c3 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Jun 2022 04:23:04.1461 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 98e9ba89-e1a1-4e38-9007-8bdabc25de1d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: BNcbSFcsEAItedTH1Rin29iYlXpgnbMH39hzfkWHY/GZLIZsZJd/68a40c95rsQ6gZLKSRwluC0X63SxJrXN5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR02MB6033 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220602_212310_926131_65178E02 X-CRM114-Status: GOOD ( 19.55 ) X-BeenThere: ath11k@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "ath11k" Errors-To: ath11k-bounces+ath11k=archiver.kernel.org@lists.infradead.org > -----Original Message----- > From: Jeff Johnson (QUIC) > Sent: Thursday, June 2, 2022 20:03 > To: Aditya Kumar Singh (QUIC) ; > ath11k@lists.infradead.org > Cc: linux-wireless@vger.kernel.org > Subject: Re: [PATCH 1/2] ath11k: move firmware stats out of debugfs > > On 6/1/2022 10:14 PM, Aditya Kumar Singh wrote: > > Currently, firmware stats, comprising pdev, vdev and beacon stats are > > part of debugfs. In firmware pdev stats, firmware reports the final Tx > > power used to transmit each packet. If driver wants to know the final > > Tx power being used at firmware level, it can leverage from firmware > > pdev stats. > > > > Move firmware stats out of debugfs context in order to leverage the > > final Tx power reported in it even when debugfs is disabled. > > > > Tested-on: IPQ8074 hw2.0 AHB > > WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1 > > Tested-on: QCN9074 hw1.0 PCI > > WLAN.HK.2.5.0.1-01100-QCAHKSWPL_SILICONZ-1 > > Tested-on: WCN6855 hw2.0 PCI > > WLAN.HSP.1.1-03125-QCAHSPSWPL_V1_V2_SILICONZ_LITE-3 > > > > Signed-off-by: Aditya Kumar Singh > > --- > > drivers/net/wireless/ath/ath11k/core.c | 46 ++++++++ > > drivers/net/wireless/ath/ath11k/core.h | 12 +- > > drivers/net/wireless/ath/ath11k/debugfs.c | 131 +++++----------------- > > drivers/net/wireless/ath/ath11k/debugfs.h | 6 +- > > drivers/net/wireless/ath/ath11k/wmi.c | 48 +++++++- > > 5 files changed, 136 insertions(+), 107 deletions(-) > > > > diff --git a/drivers/net/wireless/ath/ath11k/core.c > > b/drivers/net/wireless/ath/ath11k/core.c > > index ca6fadd64b43..07a299a2e213 100644 > > --- a/drivers/net/wireless/ath/ath11k/core.c > > +++ b/drivers/net/wireless/ath/ath11k/core.c > > @@ -570,6 +570,52 @@ static inline struct ath11k_pdev > *ath11k_core_get_single_pdev(struct ath11k_base > > return &ab->pdevs[0]; > > } > > > > +void ath11k_fw_stats_pdevs_free(struct list_head *head) { > > + struct ath11k_fw_stats_pdev *i, *tmp; > > + > > + list_for_each_entry_safe(i, tmp, head, list) { > > + list_del(&i->list); > > + kfree(i); > > + } > > +} > > + > > +void ath11k_fw_stats_vdevs_free(struct list_head *head) { > > + struct ath11k_fw_stats_vdev *i, *tmp; > > + > > + list_for_each_entry_safe(i, tmp, head, list) { > > + list_del(&i->list); > > + kfree(i); > > + } > > +} > > + > > +void ath11k_fw_stats_bcn_free(struct list_head *head) { > > + struct ath11k_fw_stats_bcn *i, *tmp; > > + > > + list_for_each_entry_safe(i, tmp, head, list) { > > + list_del(&i->list); > > + kfree(i); > > + } > > +} > > + > > +void ath11k_fw_stats_init(struct ath11k *ar) { > > + INIT_LIST_HEAD(&ar->fw_stats.pdevs); > > + INIT_LIST_HEAD(&ar->fw_stats.vdevs); > > + INIT_LIST_HEAD(&ar->fw_stats.bcn); > > + > > + init_completion(&ar->fw_stats_complete); > > +} > > + > > +void ath11k_fw_stats_free(struct ath11k_fw_stats *stats) { > > + ath11k_fw_stats_pdevs_free(&stats->pdevs); > > + ath11k_fw_stats_vdevs_free(&stats->vdevs); > > + ath11k_fw_stats_bcn_free(&stats->bcn); > > +} > > + > > int ath11k_core_suspend(struct ath11k_base *ab) > > { > > int ret; > > diff --git a/drivers/net/wireless/ath/ath11k/core.h > > b/drivers/net/wireless/ath/ath11k/core.h > > index 65d54e9c15d9..672701f40a6b 100644 > > --- a/drivers/net/wireless/ath/ath11k/core.h > > +++ b/drivers/net/wireless/ath/ath11k/core.h > > @@ -545,9 +545,6 @@ struct ath11k_debug { > > struct dentry *debugfs_pdev; > > struct ath11k_dbg_htt_stats htt_stats; > > u32 extd_tx_stats; > > - struct ath11k_fw_stats fw_stats; > > - struct completion fw_stats_complete; > > - bool fw_stats_done; > > u32 extd_rx_stats; > > u32 pktlog_filter; > > u32 pktlog_mode; > > @@ -712,6 +709,9 @@ struct ath11k { > > u8 twt_enabled; > > bool nlo_enabled; > > u8 alpha2[REG_ALPHA2_LEN + 1]; > > + struct ath11k_fw_stats fw_stats; > > + struct completion fw_stats_complete; > > + bool fw_stats_done; > > }; > > > > struct ath11k_band_cap { > > @@ -1117,6 +1117,12 @@ struct ath11k_fw_stats_bcn { > > u32 tx_bcn_outage_cnt; > > }; > > > > +void ath11k_fw_stats_init(struct ath11k *ar); void > > +ath11k_fw_stats_pdevs_free(struct list_head *head); void > > +ath11k_fw_stats_vdevs_free(struct list_head *head); void > > +ath11k_fw_stats_bcn_free(struct list_head *head); void > > +ath11k_fw_stats_free(struct ath11k_fw_stats *stats); > > + > > extern const struct ce_pipe_config > ath11k_target_ce_config_wlan_ipq8074[]; > > extern const struct service_to_pipe > ath11k_target_service_to_ce_map_wlan_ipq8074[]; > > extern const struct service_to_pipe > > ath11k_target_service_to_ce_map_wlan_ipq6018[]; > > diff --git a/drivers/net/wireless/ath/ath11k/debugfs.c > > b/drivers/net/wireless/ath/ath11k/debugfs.c > > index 0d4843ef9dd1..e4a2fd3da481 100644 > > --- a/drivers/net/wireless/ath/ath11k/debugfs.c > > +++ b/drivers/net/wireless/ath/ath11k/debugfs.c > > @@ -93,91 +93,36 @@ void ath11k_debugfs_add_dbring_entry(struct > ath11k *ar, > > spin_unlock_bh(&dbr_data->lock); > > } > > > > -static void ath11k_fw_stats_pdevs_free(struct list_head *head) -{ > > - struct ath11k_fw_stats_pdev *i, *tmp; > > - > > - list_for_each_entry_safe(i, tmp, head, list) { > > - list_del(&i->list); > > - kfree(i); > > - } > > -} > > - > > -static void ath11k_fw_stats_vdevs_free(struct list_head *head) -{ > > - struct ath11k_fw_stats_vdev *i, *tmp; > > - > > - list_for_each_entry_safe(i, tmp, head, list) { > > - list_del(&i->list); > > - kfree(i); > > - } > > -} > > - > > -static void ath11k_fw_stats_bcn_free(struct list_head *head) -{ > > - struct ath11k_fw_stats_bcn *i, *tmp; > > - > > - list_for_each_entry_safe(i, tmp, head, list) { > > - list_del(&i->list); > > - kfree(i); > > - } > > -} > > > > static void ath11k_debugfs_fw_stats_reset(struct ath11k *ar) > > { > > spin_lock_bh(&ar->data_lock); > > - ar->debug.fw_stats_done = false; > > - ath11k_fw_stats_pdevs_free(&ar->debug.fw_stats.pdevs); > > - ath11k_fw_stats_vdevs_free(&ar->debug.fw_stats.vdevs); > > + ar->fw_stats_done = false; > > + ath11k_fw_stats_pdevs_free(&ar->fw_stats.pdevs); > > + ath11k_fw_stats_vdevs_free(&ar->fw_stats.vdevs); > > spin_unlock_bh(&ar->data_lock); > > } > > > > -void ath11k_debugfs_fw_stats_process(struct ath11k_base *ab, struct > > sk_buff *skb) > > +void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct > > +ath11k_fw_stats *stats) > > { > > - struct ath11k_fw_stats stats = {}; > > - struct ath11k *ar; > > + struct ath11k_base *ab = ar->ab; > > struct ath11k_pdev *pdev; > > bool is_end; > > static unsigned int num_vdev, num_bcn; > > size_t total_vdevs_started = 0; > > - int i, ret; > > - > > - INIT_LIST_HEAD(&stats.pdevs); > > - INIT_LIST_HEAD(&stats.vdevs); > > - INIT_LIST_HEAD(&stats.bcn); > > - > > - ret = ath11k_wmi_pull_fw_stats(ab, skb, &stats); > > - if (ret) { > > - ath11k_warn(ab, "failed to pull fw stats: %d\n", ret); > > - goto free; > > - } > > - > > - rcu_read_lock(); > > - ar = ath11k_mac_get_ar_by_pdev_id(ab, stats.pdev_id); > > - if (!ar) { > > - rcu_read_unlock(); > > - ath11k_warn(ab, "failed to get ar for pdev_id %d: %d\n", > > - stats.pdev_id, ret); > > - goto free; > > - } > > - > > - spin_lock_bh(&ar->data_lock); > > + int i; > > > > - if (stats.stats_id == WMI_REQUEST_PDEV_STAT) { > > - list_splice_tail_init(&stats.pdevs, &ar- > >debug.fw_stats.pdevs); > > - ar->debug.fw_stats_done = true; > > - goto complete; > > - } > > + /* WMI_REQUEST_PDEV_STAT request has been already processed > */ > > > > - if (stats.stats_id == WMI_REQUEST_RSSI_PER_CHAIN_STAT) { > > - ar->debug.fw_stats_done = true; > > - goto complete; > > + if (stats->stats_id == WMI_REQUEST_RSSI_PER_CHAIN_STAT) { > > + ar->fw_stats_done = true; > > + return; > > } > > > > - if (stats.stats_id == WMI_REQUEST_VDEV_STAT) { > > - if (list_empty(&stats.vdevs)) { > > + if (stats->stats_id == WMI_REQUEST_VDEV_STAT) { > > + if (list_empty(&stats->vdevs)) { > > ath11k_warn(ab, "empty vdev stats"); > > - goto complete; > > + return; > > } > > /* FW sends all the active VDEV stats irrespective of PDEV, > > * hence limit until the count of all VDEVs started @@ -190,43 > > +135,34 @@ void ath11k_debugfs_fw_stats_process(struct ath11k_base > > *ab, struct sk_buff *skb > > > > is_end = ((++num_vdev) == total_vdevs_started); > > > > - list_splice_tail_init(&stats.vdevs, > > - &ar->debug.fw_stats.vdevs); > > + list_splice_tail_init(&stats->vdevs, > > + &ar->fw_stats.vdevs); > > > > if (is_end) { > > - ar->debug.fw_stats_done = true; > > + ar->fw_stats_done = true; > > num_vdev = 0; > > } > > - goto complete; > > + return; > > } > > > > - if (stats.stats_id == WMI_REQUEST_BCN_STAT) { > > - if (list_empty(&stats.bcn)) { > > + if (stats->stats_id == WMI_REQUEST_BCN_STAT) { > > + if (list_empty(&stats->bcn)) { > > ath11k_warn(ab, "empty bcn stats"); > > - goto complete; > > + return; > > } > > /* Mark end until we reached the count of all started VDEVs > > * within the PDEV > > */ > > is_end = ((++num_bcn) == ar->num_started_vdevs); > > > > - list_splice_tail_init(&stats.bcn, > > - &ar->debug.fw_stats.bcn); > > + list_splice_tail_init(&stats->bcn, > > + &ar->fw_stats.bcn); > > > > if (is_end) { > > - ar->debug.fw_stats_done = true; > > + ar->fw_stats_done = true; > > num_bcn = 0; > > } > > } > > -complete: > > - complete(&ar->debug.fw_stats_complete); > > - rcu_read_unlock(); > > - spin_unlock_bh(&ar->data_lock); > > - > > -free: > > - ath11k_fw_stats_pdevs_free(&stats.pdevs); > > - ath11k_fw_stats_vdevs_free(&stats.vdevs); > > - ath11k_fw_stats_bcn_free(&stats.bcn); > > } > > > > static int ath11k_debugfs_fw_stats_request(struct ath11k *ar, @@ > > -247,7 +183,7 @@ static int ath11k_debugfs_fw_stats_request(struct > > ath11k *ar, > > > > ath11k_debugfs_fw_stats_reset(ar); > > > > - reinit_completion(&ar->debug.fw_stats_complete); > > + reinit_completion(&ar->fw_stats_complete); > > > > ret = ath11k_wmi_send_stats_request_cmd(ar, req_param); > > > > @@ -258,7 +194,7 @@ static int ath11k_debugfs_fw_stats_request(struct > ath11k *ar, > > } > > > > time_left = > > - wait_for_completion_timeout(&ar->debug.fw_stats_complete, > > + wait_for_completion_timeout(&ar->fw_stats_complete, > > this is a case where imo the existing code was not compliant with the coding > standard (descendant was not indented from the parent) so I'd definitely > want to either indent this or combine it with the prior line > Sure, will address in v2. Thanks for pointing out. > > 1 * HZ); > > if (!time_left) > > return -ETIMEDOUT; > > @@ -268,7 +204,7 @@ static int ath11k_debugfs_fw_stats_request(struct > ath11k *ar, > > break; > > > > spin_lock_bh(&ar->data_lock); > > - if (ar->debug.fw_stats_done) { > > + if (ar->fw_stats_done) { > > spin_unlock_bh(&ar->data_lock); > > break; > > } > > @@ -340,7 +276,7 @@ static int ath11k_open_pdev_stats(struct inode > *inode, struct file *file) > > goto err_free; > > } > > > > - ath11k_wmi_fw_stats_fill(ar, &ar->debug.fw_stats, > req_param.stats_id, > > + ath11k_wmi_fw_stats_fill(ar, &ar->fw_stats, req_param.stats_id, > > buf); > > there are multiple places in this patch where, due to the fact you are > removing 6 characters from an existing line, a descendant may now fit on the > prior line without exceeding 80 columns. consider removing the line break in > those cases. > > i wasn't going to mention these bikeshed comments but I see something in > the 2nd patch that imo should be addressed, so you'll probably want to > upload a v2 and this would be a good cleanup to apply as well > Yes correct. Will address these v2. Thanks. > > > > file->private_data = buf; > > @@ -412,7 +348,7 @@ static int ath11k_open_vdev_stats(struct inode > *inode, struct file *file) > > goto err_free; > > } > > > > - ath11k_wmi_fw_stats_fill(ar, &ar->debug.fw_stats, > req_param.stats_id, > > + ath11k_wmi_fw_stats_fill(ar, &ar->fw_stats, req_param.stats_id, > > buf); > > > > file->private_data = buf; > > @@ -490,14 +426,14 @@ static int ath11k_open_bcn_stats(struct inode > *inode, struct file *file) > > } > > } > > > > - ath11k_wmi_fw_stats_fill(ar, &ar->debug.fw_stats, > req_param.stats_id, > > + ath11k_wmi_fw_stats_fill(ar, &ar->fw_stats, req_param.stats_id, > > buf); > > > > /* since beacon stats request is looped for all active VDEVs, saved fw > > * stats is not freed for each request until done for all active VDEVs > > */ > > spin_lock_bh(&ar->data_lock); > > - ath11k_fw_stats_bcn_free(&ar->debug.fw_stats.bcn); > > + ath11k_fw_stats_bcn_free(&ar->fw_stats.bcn); > > spin_unlock_bh(&ar->data_lock); > > > > file->private_data = buf; > > @@ -1055,7 +991,7 @@ void ath11k_debugfs_fw_stats_init(struct ath11k > *ar) > > struct dentry *fwstats_dir = debugfs_create_dir("fw_stats", > > ar- > >debug.debugfs_pdev); > > > > - ar->debug.fw_stats.debugfs_fwstats = fwstats_dir; > > + ar->fw_stats.debugfs_fwstats = fwstats_dir; > > > > /* all stats debugfs files created are under "fw_stats" directory > > * created per PDEV > > @@ -1067,11 +1003,6 @@ void ath11k_debugfs_fw_stats_init(struct > ath11k *ar) > > debugfs_create_file("beacon_stats", 0600, fwstats_dir, ar, > > &fops_bcn_stats); > > > > - INIT_LIST_HEAD(&ar->debug.fw_stats.pdevs); > > - INIT_LIST_HEAD(&ar->debug.fw_stats.vdevs); > > - INIT_LIST_HEAD(&ar->debug.fw_stats.bcn); > > - > > - init_completion(&ar->debug.fw_stats_complete); > > } > > > > static ssize_t ath11k_write_pktlog_filter(struct file *file, diff > > --git a/drivers/net/wireless/ath/ath11k/debugfs.h > > b/drivers/net/wireless/ath/ath11k/debugfs.h > > index 8fc125a71943..e45dc874ff23 100644 > > --- a/drivers/net/wireless/ath/ath11k/debugfs.h > > +++ b/drivers/net/wireless/ath/ath11k/debugfs.h > > @@ -271,7 +271,7 @@ int ath11k_debugfs_pdev_create(struct > ath11k_base *ab); > > void ath11k_debugfs_pdev_destroy(struct ath11k_base *ab); > > int ath11k_debugfs_register(struct ath11k *ar); > > void ath11k_debugfs_unregister(struct ath11k *ar); -void > > ath11k_debugfs_fw_stats_process(struct ath11k_base *ab, struct sk_buff > > *skb); > > +void ath11k_debugfs_fw_stats_process(struct ath11k *ar, struct > > +ath11k_fw_stats *stats); > > > > void ath11k_debugfs_fw_stats_init(struct ath11k *ar); > > int ath11k_debugfs_get_fw_stats(struct ath11k *ar, u32 pdev_id, @@ > > -352,8 +352,8 @@ static inline void ath11k_debugfs_unregister(struct > ath11k *ar) > > { > > } > > > > -static inline void ath11k_debugfs_fw_stats_process(struct ath11k_base > *ab, > > - struct sk_buff *skb) > > +static inline void ath11k_debugfs_fw_stats_process(struct ath11k *ar, > > + struct ath11k_fw_stats > *stats) > > { > > } > > > > diff --git a/drivers/net/wireless/ath/ath11k/wmi.c > > b/drivers/net/wireless/ath/ath11k/wmi.c > > index 84d1c7054013..9c7a0a438b12 100644 > > --- a/drivers/net/wireless/ath/ath11k/wmi.c > > +++ b/drivers/net/wireless/ath/ath11k/wmi.c > > @@ -7412,7 +7412,53 @@ static void > ath11k_peer_assoc_conf_event(struct > > ath11k_base *ab, struct sk_buff > > > > static void ath11k_update_stats_event(struct ath11k_base *ab, struct > sk_buff *skb) > > { > > - ath11k_debugfs_fw_stats_process(ab, skb); > > + struct ath11k_fw_stats stats = {}; > > + struct ath11k *ar; > > + int ret; > > + > > + INIT_LIST_HEAD(&stats.pdevs); > > + INIT_LIST_HEAD(&stats.vdevs); > > + INIT_LIST_HEAD(&stats.bcn); > > + > > + ret = ath11k_wmi_pull_fw_stats(ab, skb, &stats); > > + if (ret) { > > + ath11k_warn(ab, "failed to pull fw stats: %d\n", ret); > > + goto free; > > + } > > + > > + rcu_read_lock(); > > + ar = ath11k_mac_get_ar_by_pdev_id(ab, stats.pdev_id); > > + if (!ar) { > > + rcu_read_unlock(); > > + ath11k_warn(ab, "failed to get ar for pdev_id %d: %d\n", > > + stats.pdev_id, ret); > > + goto free; > > + } > > + > > + spin_lock_bh(&ar->data_lock); > > + > > + /* WMI_REQUEST_PDEV_STAT can be requested via .get_txpower > mac ops or via > > + * debugfs fw stats. Therefore, processing it separately. > > + */ > > + if (stats.stats_id == WMI_REQUEST_PDEV_STAT) { > > + list_splice_tail_init(&stats.pdevs, &ar->fw_stats.pdevs); > > + ar->fw_stats_done = true; > > + goto complete; > > + } > > + > > + /* WMI_REQUEST_VDEV_STAT, WMI_REQUEST_BCN_STAT and > WMI_REQUEST_RSSI_PER_CHAIN_STAT > > + * are currently requested only via debugfs fw stats. Hence, > processing these > > + * in debugfs context > > + */ > > + ath11k_debugfs_fw_stats_process(ar, &stats); > > + > > +complete: > > + complete(&ar->fw_stats_complete); > > + rcu_read_unlock(); > > + spin_unlock_bh(&ar->data_lock); > > + > > +free: > > + ath11k_fw_stats_free(&stats); > > } > > > > /* PDEV_CTL_FAILSAFE_CHECK_EVENT is received from FW when the > > frequency scanned -- ath11k mailing list ath11k@lists.infradead.org http://lists.infradead.org/mailman/listinfo/ath11k