diff mbox series

ath11k: fix target assert when unload driver

Message ID 1557326726-29837-1-git-send-email-vnaralas@codeaurora.org (mailing list archive)
State Accepted
Commit 25c08e7a8442291a5cac73e17c05196de0176a05
Delegated to: Kalle Valo
Headers show
Series ath11k: fix target assert when unload driver | expand

Commit Message

Venkateswara Naralasetty May 8, 2019, 2:45 p.m. UTC
Currently ath11k_ahb_ext_irq_disable() called before ath11k_mac_unregister
which will disable napi before mac_unregister and still we might receive
packets on all active devices which results reo_dest_ring full.

Fix this issue by moving ath11k_ahb_ext_irq_disable() after
ath11k_mac_unregister().

Signed-off-by: Venkateswara Naralasetty <vnaralas@codeaurora.org>
---
 drivers/net/wireless/ath/ath11k/core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Kalle Valo May 13, 2019, 2:50 p.m. UTC | #1
Venkateswara Naralasetty <vnaralas@codeaurora.org> wrote:

> Currently ath11k_ahb_ext_irq_disable() called before ath11k_mac_unregister
> which will disable napi before mac_unregister and still we might receive
> packets on all active devices which results reo_dest_ring full.
> 
> Fix this issue by moving ath11k_ahb_ext_irq_disable() after
> ath11k_mac_unregister().
> 
> Signed-off-by: Venkateswara Naralasetty <vnaralas@codeaurora.org>

Patch applied to ath.git, thanks.

25c08e7a8442 ath11k: fix target assert when unload driver
diff mbox series

Patch

diff --git a/drivers/net/wireless/ath/ath11k/core.c b/drivers/net/wireless/ath/ath11k/core.c
index dc56df5..e3e6b64 100644
--- a/drivers/net/wireless/ath/ath11k/core.c
+++ b/drivers/net/wireless/ath/ath11k/core.c
@@ -486,6 +486,7 @@  static int ath11k_core_pdev_create(struct ath11k_base *sc)
 static void ath11k_core_pdev_destroy(struct ath11k_base *sc)
 {
 	ath11k_mac_unregister(sc);
+	ath11k_ahb_ext_irq_disable(sc);
 	ath11k_dp_pdev_free(sc);
 }
 
@@ -781,7 +782,6 @@  void ath11k_core_deinit(struct ath11k_base *sc)
 {
 	mutex_lock(&sc->core_lock);
 
-	ath11k_ahb_ext_irq_disable(sc);
 	ath11k_core_pdev_destroy(sc);
 	ath11k_core_stop(sc);