wil6210: fix spurious interrupts in 3-msi
authorMaya Erez <merez@codeaurora.org>
Fri, 26 Apr 2019 15:43:29 +0000 (18:43 +0300)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 3 May 2019 05:03:30 +0000 (08:03 +0300)
commite10b0eddd5235aa5aef4e40b970e34e735611a80
tree87fc03c719aff3eecc8a9c768374642139948784
parent62acdcfa8b7ae921b70afff888e994df117022a6
wil6210: fix spurious interrupts in 3-msi

Interrupt is set in ICM (ICR & ~IMV) rising trigger.
As the driver masks the IRQ after clearing it, there can
be a race where an additional spurious interrupt is triggered
when the driver unmask the IRQ.
This can happen in case HW triggers an interrupt after the clear
and before the mask.

To prevent the second spurious interrupt the driver needs to mask the
IRQ before reading and clearing it.

Signed-off-by: Maya Erez <merez@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/wil6210/interrupt.c