From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Fietkau Date: Mon, 03 Dec 2012 10:45:33 +0100 Subject: [ath9k-devel] ath9k_tasklet() can be interrupted by a hardware IRQ In-Reply-To: <1AA9BD91549CF94C901B05C32D2B081101E002B9@ES02Ch.wgti.net> References: <1AA9BD91549CF94C901B05C32D2B081101DFE512@ES02Ch.wgti.net> <1AA9BD91549CF94C901B05C32D2B081101DFE5D0@ES02Ch.wgti.net> <1AA9BD91549CF94C901B05C32D2B081101E002B9@ES02Ch.wgti.net> Message-ID: <50BC74BD.8020807@openwrt.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: ath9k-devel@lists.ath9k.org On 2012-11-20 11:05 AM, Felix Liao wrote: > Hi Felix F, I'm Felix Liao from WatchGuard, I think we should spin_lock_irqsave and spin_unlock_irqrestore on sc_pcu_lock > in the ath9k_tasklet() instead of spin_lock/spin_unlock, just to avoid the tasklet being interrupted by the hardware IRQ, > do you think so? Using an IRQ spinlock in the tasklet is not the correct solution. If the IRQ fires while the tasklet is running, it means that the driver does not properly disable IRQs in the handler. They're supposed to get disabled there and re-enabled only after the tasklet has completed. - Felix