summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHamad Kadmany <qca_hkadmany@qca.qualcomm.com>2017-01-20 13:49:49 +0200
committerKalle Valo <kvalo@qca.qualcomm.com>2017-01-27 19:49:43 +0200
commit3ee908dc3b48fa0a5be2883362d36e085b6b52f4 (patch)
treeb4bf02c0dd95769b236717a0bb01e79198a4d12f
parent4d4c4dc324b4444d40e9164834044feebaf2d72d (diff)
downloadlinux-3ee908dc3b48fa0a5be2883362d36e085b6b52f4.tar.bz2
wil6210: protect against false interrupt during reset sequence
During reset sequence it is seen that device is generating an interrupt eventhough interrupts are masked at device level. Add workaround to disable the interrupts from host side during reset and clear any pending interrupts before re-enabling the interrupt. Signed-off-by: Hamad Kadmany <qca_hkadmany@qca.qualcomm.com> Signed-off-by: Maya Erez <qca_merez@qca.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
-rw-r--r--drivers/net/wireless/ath/wil6210/main.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c
index 9b8fa6a182ec..85a795a87843 100644
--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -918,7 +918,10 @@ int wil_reset(struct wil6210_priv *wil, bool load_fw)
flush_workqueue(wil->wmi_wq);
wil_bl_crash_info(wil, false);
+ wil_disable_irq(wil);
rc = wil_target_reset(wil);
+ wil6210_clear_irq(wil);
+ wil_enable_irq(wil);
wil_rx_fini(wil);
if (rc) {
wil_bl_crash_info(wil, true);