From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751836AbdBIMST (ORCPT ); Thu, 9 Feb 2017 07:18:19 -0500 Received: from mail-co1nam03on0088.outbound.protection.outlook.com ([104.47.40.88]:2400 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751014AbdBIMSQ (ORCPT ); Thu, 9 Feb 2017 07:18:16 -0500 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; arndb.de; dkim=none (message not signed) header.d=none;arndb.de; dmarc=bestguesspass action=none header.from=xilinx.com; From: Bharat Kumar Gogada To: Marc Zyngier , "bhelgaas@google.com" , "robh@kernel.org" , "paul.gortmaker@windriver.com" , "colin.king@canonical.com" , "linux-pci@vger.kernel.org" CC: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "michal.simek@xilinx.com" , "arnd@arndb.de" , "Ravikiran Gummaluri" Subject: RE: [PATCH v5] PCI: Xilinx NWL: Modifying irq chip for legacy interrupts Thread-Topic: [PATCH v5] PCI: Xilinx NWL: Modifying irq chip for legacy interrupts Thread-Index: AQHSgEcifCNeiQteakGfH2go1tHmGaFf3NeAgAC3aLA= Date: Thu, 9 Feb 2017 12:01:06 +0000 Message-ID: <8520D5D51A55D047800579B094147198263E68AA@XAP-PVEXMBX02.xlnx.xilinx.com> References: <1486364596-19699-1-git-send-email-bharatku@xilinx.com> <4b04e834-08b6-a728-8fe5-13106d50b3b2@arm.com> In-Reply-To: <4b04e834-08b6-a728-8fe5-13106d50b3b2@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.23.94.248] Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-22874.006 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(7916002)(39410400002)(39850400002)(39450400003)(39840400002)(2980300002)(438002)(199003)(24454002)(189002)(47776003)(7736002)(305945005)(55846006)(2201001)(55016002)(2906002)(54906002)(23726003)(189998001)(46406003)(76176999)(106466001)(106116001)(54356999)(50986999)(63266004)(5250100002)(50466002)(53546003)(6116002)(2501003)(102836003)(356003)(2920100001)(2900100001)(81156014)(81166006)(8746002)(3846002)(8936002)(8676002)(626004)(107886003)(33656002)(92566002)(5660300001)(6246003)(2950100002)(97756001)(38730400002)(229853002)(4326007)(7696004)(107986001)(5001870100001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1PR0201MB0755;H:xsj-pvapsmtpgw02;FPR:;SPF:Pass;PTR:xapps1.xilinx.com,unknown-60-100.xilinx.com;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1NAM02FT056;1:a8J4ZTfKswYNzaqHih/HzWUxLSIGv57jtLtv/BWYyNBglR9zo63Mzhjq3P5hdFR2X+UK9JlEYjVqNKpoMAD4yJZwIISQYoAn9vWB5c9F0HIXzm1O1HsP9cZlMC21+czEdbsmKiM+V4X5IqYCBdJdWGLbP6zGSq2ULD2U5xZv2rlKJUsKYRcNA6o63YLhviqHbT+gxla4qDe8v5YW1K6opJt1aNq/ExXFkbd30DNGV6Qcu5oOoU+tD67o5msGCjOfpAbYwXig9vGkKzkTYBfSshUV9MyJSOB2XNVaDVZFrsqUIQAF/8wUIvEyEabXb0i8OtbcMlAS0i6v67efNa0Es2S2XI3tGJJZ5bBwjPnR6HB/DZBajyCkRuhc8QBOtz0QnH9dMBC8cEo1ltrimhz0tIT6DHq+UsStw5hbeDX1f1q0kQm8KVWtKxWEaWQt4rENTBRsXSbAnNErvSh8rp2fQnokWVn3hm6wUZE0p0VI1/tJnr6Tf1rzpDRlMLO2b94Mbm0ib2kUzzKt0GfXZ+TE5Wd0vX337x8TIsSCzbPa6T3qbhuCRGEQLrJhKRY2Q+KuH/dTch4ed86YxYocz5vLuCsiZFWmYQRJuYzWnx2eqFQ= X-MS-Office365-Filtering-Correlation-Id: 7680909f-e936-4ac9-c241-08d450e35805 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(8251501002);SRVR:BN1PR0201MB0755; X-Microsoft-Exchange-Diagnostics: 1;BN1PR0201MB0755;3:NTznVckPme0qAxE2pqXVXdqCAf81NvFdq8rVnHAQ5GGbDbkDvsnR8+UTD5KDN2W77z10sNboE5fIwHu1TlbzXf2Q6/aYe2VT3gxIfwMtSatO0h+/jED3F/UrCC/zhYiDJpdRYai2TxbWyLfV9x9PKUeLyJ2bp/QSeC8CLovTrjo4f/932VXXnRFPnRI91+02NXpKF76HcAnsvmf4a9NAaxUCZUFGrBtsrNJVt8AYPLqNDEBqdnNebB9iQN0/PsOS+TDreACLwvFyZoezLa4KtpcPH1JcIDmMreXnODyvDIMd26kBhECvhogr9iF9uqCGteajS6PVbP/DA0lQYyoN2Z3ynH09VeuFA2dVZAwRL13y2sb2+oXM8eOcdcwcsiGXvmGFtK5/yTEgD4y9TgTfwQ==;25:dzY7ZtK5m0boRLX4NC6RDDIKZ2cGDmKxT+WFfGrda9lD+MJlkYGESnxiqow+Y+/r4NyVGPvHR/b/0SZzPJncXvLQJmBfYpVOdH31f02yXaEgFXMcivLPi0bYY83FoVZzJK4tI+aImU0RAaMTBAY/RCWJSU8L7qAZP16i0ya4sHOl3bBQbOSHog3MuYNr+hI2gBgqeOfYNZCIeOo0VOP+YZ+R2dZU4JfxxC3z0+9pFaTs/8RjfHmKN6rBF8jmq28JWaPGk4QVLVypCHVMR6Yrm0tDMfuNqVlOoH5VUt8QfBrTnzBQKqulErOXHb/YFbLpacEumbNxRX1/LadhU5xzkhOkEZhrFogmEgCHx8oXOv2Iy0f8M9tO++jFVaFzU0GKglOSFEG4PahLHbAT56Ivbl2dZFPqIjJZqcO2jhsV3u3w7PRCmZx1JUhjM//59YgE0Xl7GZ19DW3wNwH8x8OvVA== X-Microsoft-Exchange-Diagnostics: 1;BN1PR0201MB0755;31:A4H7RtUJ+KZC7Fo9v9l2B7etcvRkWWyZYc37408ky8imwaEXJDHWhlQJkjhzXCKkTUSMdqPkaHUTIn3Vwq7Wtgpd5R/DVQs3Kk4xb5oXvtsVLOeX7uK2I6JGKdDYIg4cGDXNhJx6eyrkKbdoZXqtylzHYnuEtqc4xagIqfwTcO5U108Lcnshcpqq+AYH5184Mk376DnozO6G4SCPandXDsQqcIbIhhdBss01KZydfsljNh4uDFYoFtHZJpaM+FPuCVa8ibg3Z9dIJ2qsG4kdmUlD/GPLX6YQf3m7SZDz0ws=;20:D6skQcO2QyiBu0q8NpR8eI2UgkTPUGjAEz8pwGEWB3dl8MVOQEjiDknVBMJZTBO8Tb8y8rbFUEEsVjh8SeAvV2/nVXb7evhU1a0dFLIwciYA2nURRN2lkSXGoJiHt5vzhOM9q4klvhdcS4zW2FukEtLE/gm3s2EMLBNxj8yBoCCaszTKYQ23NT1DJf1uDovUTEvIZGPb2R9Rr7coj+eBCYF/T83opOBNpzm7zM0ImTBuPK0Bh5KOECKNHcpN4GLH3uH5CsR+xno2bqjCREA2ZWi1xPCCrefg8kpa+iXyR7qkMYftnlAr3g1xAZLCa4kLD3WfkKtwg7dspdvFMSei1sMU07BWA3qT8LvjFaBRxjr71Oi8xQxtQbFvlWonzzRuuWx3uJ7Taw2PlcY1WGLMeDSMnq1F07OLG7t6rzhBd8Srni4jaOPl7WZNmPocrkK7wcIyRAE/dsqs/PiUzcaGGjx/KG/p3zgHng1EPZDN5Yk1qP3nQw2hVYZuC++t3U17 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592)(154291594099940); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(13024025)(13023025)(13017025)(13015025)(8121501046)(13018025)(5005006)(10201501046)(3002001)(6055026)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123558025)(20161123555025)(6072148);SRVR:BN1PR0201MB0755;BCL:0;PCL:0;RULEID:;SRVR:BN1PR0201MB0755; X-Microsoft-Exchange-Diagnostics: 1;BN1PR0201MB0755;4:lYpWaivDTz6HVJ2Eky0gyLl5Ke/oVir3UDxQQ4zW8wWbGy0wTFlL2TLUAnnEslevV82Bafo7UKQ90WriJKOM/HgA7uDQDMDepGiaqOQTlV+9ar4BIfC/1wy6IgxPTrE2P01d1Nl+O+k6AVgAgdUzMPkqnDoyUzHsvndXUYOSIIXfM4CiYXbaDEe2w+P9MK9a0mxbkw51GVz3sAk8HWwKX8Opfw+ty1mJ1bHOEUvttX8ix1ehdz7hOuCHKgo+z2fQt8LSidXo+Dd1VKGgazXRnakO5xd/Vqn2fuIaGFxVLMdMr9OwEcPQjc77fppe9Vmc6zuB6z1U9FubvggKFnDSB5AhJ+lPNp3inSfzSmESCAXI98fR6cgDUAxv/NUeXkT9yqX4aZwUo3RCDfuufrcfeqbZOa1TKBZz+ziYUaus2BMLC88LWyqskFsaZjaDZIUUKNU5i5JfOdU9170asEtrKS6E27IfyTwcXKTbxv5qsz4R7mTPhpyIpUItEB/wMyZFmO17E2RtVcR40yvDXDUmh2W3XpZM7f8eSGYH04bznnVDFfOnGOJ6b40AZz4aD7qnuca7eYomHgxOTzMJiSSerbTLOJhQ+7IDFEXLJKt/vxbR9I+mk58HdlQarwnASIxN6dRRTNdH+9yA8TD1sThTZhrJaGZknZr/g2wIM5BKKVfaKdayzG7A9Vq/8WMMF1uVYTurXAGIDzAEArD7ngv7uCk045EY3oyVZL19PuHPr8rbIzH5c4Xpq9bzB2nsCbBXmFMbsUHNJpML8lcm38f4EmGrB0IE4cn419j5xl22ujo= X-Forefront-PRVS: 02135EB356 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1PR0201MB0755;23:DZDVNRTUYGZoKLCqKqvdnqKe/ucFGe5jqRKxxkZ?= =?us-ascii?Q?L/nTY8IKzyBF8d/+TlBdzGE7CjSYfXlaSDw5yMBMnH5hFAyde26qOdvfK9x3?= =?us-ascii?Q?KQrq0xDovbcxnmn9n0JJhfdCyxWk3G9d7LR/IhWFDNZn9Gz9GFthDPzajwgU?= =?us-ascii?Q?ZEPh/wLBI40EVgs3PI3hzo74YvTwUEyoWqZ79v5Bg325ZS9TIQRIk/YkkCUa?= =?us-ascii?Q?RVstfcyZXtbdHIdlcNV8DN+nqzX/dvY5VmHQgpbXjW2WsXPM98sj0NfG7Dbc?= =?us-ascii?Q?FyfVUkeQFKWgHTbkjR3rAN2924yLIq+SQsrvulB8FIHyarr9nnfIqFWilupx?= =?us-ascii?Q?TFFsFY7LJ6KJCN7xKOuAxJjkvm7z+DY53Rz9XqQAoFExEtI+eiuV57OiMvB9?= =?us-ascii?Q?9feP9OrCS5hr8t3Y5eRPy/y4siqDoY8K2+dupD+GDOEAe/RpQV9BiyGLc8N6?= =?us-ascii?Q?A8L0xjUSdcMlh04OfJA0nTapTafFlmzq9qZG9ftPvDZyA2ceLB3sISy/1nap?= =?us-ascii?Q?zbvkQ54fSQYzAcws6kFXpDTmhYGSimuDJPOfQ77xzOtal+k/wDQQCW7/6Vbr?= =?us-ascii?Q?HbqELBQUrquT4lHyb/1l/oRDVYEPRZepQhEcjGIkT0duXMytfDnU1WNgfHIL?= =?us-ascii?Q?9KVk9f1VDh5ukAP/Do6Qz5ZX/gMY37xE3JzYbLD/Y/0CIGvjOC0yfSnzloiS?= =?us-ascii?Q?8iY5/AjExr4SqUJQ9Ljpuiywg2d3k3VrvdbRjA3FivjBLOvPP2tDk6lYyKl7?= =?us-ascii?Q?Dea2FWyuuiu38HuewIbFKVbKCvwYGiCeNRl61vHJtFpWZ2uu+X/mB0uXUJdo?= =?us-ascii?Q?OqMCXT7tQJaS1ZWQTuKSxLfhH1xoisKj6deW7XE6KjgdvyFTy3btrUQiIc+D?= =?us-ascii?Q?MLA8Xay9g7Zf3Y6kj0aFyfJ25iXRNW+9WFf9wljX7ltB2hhfeetBGYUbdkO8?= =?us-ascii?Q?shr19JHIyOVLOQ5nKS/ccOPnP0RN4YxX0xjxBZ/opAlE20umJpnHm/65ErAS?= =?us-ascii?Q?2Q+HV2GSFgyeCmG4LljiczlcEcgSbjwL9Eb63rxgYm+IbPACMIgfS12Ccrj+?= =?us-ascii?Q?gSYyIbFzSZEUaASBJFXQvp2JgQ9/JRXSo8lwEDsFljmnToYzZ18HZPOauY1i?= =?us-ascii?Q?FWIZMujU8LnAUkeVqs8VGGOHapXKWzXFP8KBR8TuAgZZDtK/YFXWFGplZdp7?= =?us-ascii?Q?WvQ8UFoKu6++udVtNxoc3AVfclbUmmXRqk+dLQhuHAswBflIsHGXnU/4ICji?= =?us-ascii?Q?0zceQqndMULRcTqhXKs1ssYDSmkD8xqPVz2EuKdoM1HBKrAiEz+/qdtqQhAW?= =?us-ascii?Q?aMHwEYLXNHswYfWGHiUh+wPP1gFKcgiU8vaLStaralnUpinlmFkJg2kRl2ut?= =?us-ascii?Q?LQ9zTTA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1PR0201MB0755;6:nK1Oh1gFJua4PJiEVvKOhALBsF0IoTIQr+YXAy3xLb7yusOTEniyK+U3cf43QBPcJCwMHTwBEsBtMIvEfDVBSP9Gdrk76yOmZ3HJYjKUvoBXfZD6m40YGRBWhNLrd/2izLJ5PsxK/wFuJXNsOB3eor1sla59tEnNGCdRP1uNOxYVj2iAm7kCHWp+m7nQRw8CGDOYZxnI6brflIJbW5Y9eCqlG7eOOECsWGhqfousnMmAEgCs0pi0zGvjVeP8BQgfikhkSNazzuTkP0QhTLrzz2q8fglnconafRLZqLVjXoBJYDbiDPUeAaOEKdPfINOo1ifjNgapOcGj0qqImFNpGWExyIas2K29pp/5wyzf2TuSi6eFmju1GRUCP8gzmJ5+dl7N/r4nrzoJM9/xEKiE0btOzAQuAhInHyW/ZwVgPvM=;5:TTxqRJjZADD567bRGINlXPnH2BDWaN+H/35TfEGWtXypyxjf/J/WnF2IkXJy0OTmzVIqVWBzmr6z/h2IPvXyT+J07VaWECOwzZ72md3uFWtqPazE5xRNihTYpMMWIqqmNkdDCeJ3zkyg+WH0zO7tKOHixzXj/Ww0Oxmav2tVo6M=;24:GAsNJEQncEQzUKt3JkcQMrgN6h1GIu5uO65Gjq01kg0ZA6zSEDcXLvvjaB9tCjQB3HTbu1hRN21tU1et3tYYWkwnQB1XfRJ8gAKMiRW5SWE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;BN1PR0201MB0755;7:oODtWWO30GgowfE4eWiB4Em75Iwm2oQgEG8DKQPsGKpTc8EBDXjduA6+DJ4aPgeTFPLgl6D0rBRJe9SEHgkUTDLQx+QykMfjm1Jti0yCmbUCL4XjHiegz0GVIUWKBZRmGRCkZ5/wkAxSjXlTELVAgO5Ur6sJwNpo4jp1Cm6oNFfJx8tqsPvfTyv9sCKEwZZT/vZTH14YxUaz8gM308cLnXxDxw76YUdaLiq4KBntp6hjM1Jr7SzNtfcIudBeIGkOeGtEiSna5pLOpZH2XUV51l0jFWmpPjtlJ8fhJoxNPd6IclwN3L9q3HXapBdF3uimVXd7TJN8aYdHe9j6a++weoGWsNxpBJEyb96oN7knQl58dBg0+TuG2EqrQqiMuDF+yfieAMLETkqzAkiynR4h/I80FXaPZzb7mkwp3rkcakKs60akDPPIkPFOmTJWXOjElPeZBii5FI696lhiubDtdsY+mfI5k36IKROlQlh/SgU2uYqaxH8ZHh0UCZ5taqlfFPusjzfqFpHrgYvprubfoQ== X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Feb 2017 12:01:12.4715 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.100];Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1PR0201MB0755 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id v19CIe3Z026584 > On 06/02/17 07:03, Bharat Kumar Gogada wrote: > > - Adding spinlock for protecting legacy mask register > > - Few wifi end points which only support legacy interrupts, > > performs hardware reset functionalities after disabling interrupts > > by invoking disable_irq and then re-enable using enable_irq, they > > enable hardware interrupts first and then virtual irq line later. > > - The legacy irq line goes low only after DEASSERT_INTx is > > received.As the legacy irq line is high immediately after hardware > > interrupts are enabled but virq of EP is still in disabled state > > and EP handler is never executed resulting no DEASSERT_INTx.If dummy > > irq chip is used, interrutps are not masked and system is > > hanging with CPU stall. > > - Adding irq chip functions instead of dummy irq chip for legacy > > interrupts. > > - Legacy interrupts are level sensitive, so using handle_level_irq > > is more appropriate as it is masks interrupts until End point handles > > interrupts and unmasks interrutps after End point handler is executed. > > - Legacy interrupts are level triggered, virtual irq line of End > > Point shows as edge in /proc/interrupts. > > - Setting irq flags of virtual irq line of EP to level triggered > > at the time of mapping. > > I'm now OK with the code (modulo the small nit below), but the commit > message is a complete mess. How about something like: > > The current handling of legacy interrupts in the Xilinx NWL driver is > completely dysfunctional: Interrupts are handled as edge instead of > level, and there is no way to mask an interrupt, leading to drivers > misbehaving. > > Let's address this by making it a full blown irqchip, implement > mask/unmask methods, and use handle_level_irq as the flow handler. Yes, will change the commit message. > > > > > Signed-off-by: Bharat Kumar Gogada > > --- > > drivers/pci/host/pcie-xilinx-nwl.c | 45 > +++++++++++++++++++++++++++++++++++++- > > 1 file changed, 44 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/pci/host/pcie-xilinx-nwl.c b/drivers/pci/host/pcie-xilinx- > nwl.c > > index 43eaa4a..36f4fb4 100644 > > --- a/drivers/pci/host/pcie-xilinx-nwl.c > > +++ b/drivers/pci/host/pcie-xilinx-nwl.c > > @@ -184,6 +184,7 @@ struct nwl_pcie { > > u8 root_busno; > > struct nwl_msi msi; > > struct irq_domain *legacy_irq_domain; > > + raw_spinlock_t leg_mask_lock; > > }; > > > > static inline u32 nwl_bridge_readl(struct nwl_pcie *pcie, u32 off) > > @@ -395,11 +396,52 @@ static void nwl_pcie_msi_handler_low(struct > irq_desc *desc) > > chained_irq_exit(chip, desc); > > } > > > > +static void nwl_mask_leg_irq(struct irq_data *data) > > +{ > > + struct irq_desc *desc = irq_to_desc(data->irq); > > + struct nwl_pcie *pcie; > > + unsigned long flags; > > + u32 mask; > > + u32 val; > > + > > + pcie = irq_desc_get_chip_data(desc); > > + mask = 1 << (data->hwirq - 1); > > + raw_spin_lock_irqsave(&pcie->leg_mask_lock, flags); > > + val = nwl_bridge_readl(pcie, MSGF_LEG_MASK); > > + nwl_bridge_writel(pcie, (val & (~mask)), MSGF_LEG_MASK); > > + raw_spin_unlock_irqrestore(&pcie->leg_mask_lock, flags); > > +} > > + > > +static void nwl_unmask_leg_irq(struct irq_data *data) > > +{ > > + struct irq_desc *desc = irq_to_desc(data->irq); > > + struct nwl_pcie *pcie; > > + unsigned long flags; > > + u32 mask; > > + u32 val; > > + > > + pcie = irq_desc_get_chip_data(desc); > > + mask = 1 << (data->hwirq - 1); > > + raw_spin_lock_irqsave(&pcie->leg_mask_lock, flags); > > + val = nwl_bridge_readl(pcie, MSGF_LEG_MASK); > > + nwl_bridge_writel(pcie, (val | mask), MSGF_LEG_MASK); > > + raw_spin_unlock_irqrestore(&pcie->leg_mask_lock, flags); > > +} > > + > > +static struct irq_chip nwl_leg_irq_chip = { > > + .name = "nwl_pcie:legacy", > > + .irq_enable = nwl_unmask_leg_irq, > > + .irq_disable = nwl_mask_leg_irq, > > You don't need these two if they are implemented in terms of mask/unmask. These are being invoked by some drivers other than interrupt flow. Ex: drivers/net/wireless/ath/ath9k/main.c static int ath_reset_internal(struct ath_softc *sc, struct ath9k_channel *hchan) { .... disable_irq(sc->irq); tasklet_disable(&sc->intr_tq); ... ... enable_irq(sc->irq); spin_unlock_bh(&sc->sc_pcu_lock); } For us masking/unmasking is the way to enable/disable interrupts. > > > + .irq_mask = nwl_mask_leg_irq, > > + .irq_unmask = nwl_unmask_leg_irq, > > +}; > > + Thanks & Regards, Bharat