On 2017-01-25 17:36, Felix Fietkau wrote: > The code currently relies on refcounting to disable IRQs from within the > IRQ handler and re-enabling them again after the tasklet has run. > > However, due to race conditions sometimes the IRQ handler might be > called twice, or the tasklet may not run at all (if interrupted in the > middle of a reset). > > This can cause nasty imbalances in the irq-disable refcount which will > get the driver permanently stuck until the entire radio has been stopped > and started again (ath_reset will not recover from this). > > Instead of using this fragile logic, change the code to ensure that > running the irq handler during tasklet processing is safe, and leave the > refcount untouched. > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Felix Fietkau <nbd@xxxxxxxx> Please don't apply this yet, it looks like it might cause some regressions on other devices. I will investigate. - Felix