wil6210: fix spurious interrupts in 3-msi
authorMaya Erez <merez@codeaurora.org>
Fri, 26 Apr 2019 15:43:29 +0000 (18:43 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Jul 2019 07:13:58 +0000 (09:13 +0200)
commitda153c0c57460313327864d13e1b4501c1678683
treea6fb3f3e23284258ea885f838953ba53588bebd2
parenta4bf4fecff16f30814922679a131331f2c3aabf8
wil6210: fix spurious interrupts in 3-msi

[ Upstream commit e10b0eddd5235aa5aef4e40b970e34e735611a80 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/ath/wil6210/interrupt.c