aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/ath/ath10k/ce.c7
-rw-r--r--drivers/net/wireless/ath/ath10k/ce.h2
-rw-r--r--drivers/net/wireless/ath/ath10k/pci.c6
3 files changed, 11 insertions, 4 deletions
diff --git a/drivers/net/wireless/ath/ath10k/ce.c b/drivers/net/wireless/ath/ath10k/ce.c
index 657e8f2ee982..ab22d14f4569 100644
--- a/drivers/net/wireless/ath/ath10k/ce.c
+++ b/drivers/net/wireless/ath/ath10k/ce.c
@@ -792,13 +792,13 @@ static void ath10k_ce_per_engine_handler_adjust(struct ath10k_ce_pipe *ce_state,
792 ath10k_pci_sleep(ar); 792 ath10k_pci_sleep(ar);
793} 793}
794 794
795void ath10k_ce_disable_interrupts(struct ath10k *ar) 795int ath10k_ce_disable_interrupts(struct ath10k *ar)
796{ 796{
797 int ce_id, ret; 797 int ce_id, ret;
798 798
799 ret = ath10k_pci_wake(ar); 799 ret = ath10k_pci_wake(ar);
800 if (ret) 800 if (ret)
801 return; 801 return ret;
802 802
803 for (ce_id = 0; ce_id < CE_COUNT; ce_id++) { 803 for (ce_id = 0; ce_id < CE_COUNT; ce_id++) {
804 u32 ctrl_addr = ath10k_ce_base_address(ce_id); 804 u32 ctrl_addr = ath10k_ce_base_address(ce_id);
@@ -807,7 +807,10 @@ void ath10k_ce_disable_interrupts(struct ath10k *ar)
807 ath10k_ce_error_intr_disable(ar, ctrl_addr); 807 ath10k_ce_error_intr_disable(ar, ctrl_addr);
808 ath10k_ce_watermark_intr_disable(ar, ctrl_addr); 808 ath10k_ce_watermark_intr_disable(ar, ctrl_addr);
809 } 809 }
810
810 ath10k_pci_sleep(ar); 811 ath10k_pci_sleep(ar);
812
813 return 0;
811} 814}
812 815
813void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state, 816void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state,
diff --git a/drivers/net/wireless/ath/ath10k/ce.h b/drivers/net/wireless/ath/ath10k/ce.h
index 15d45b5b7615..67dbde6a5c74 100644
--- a/drivers/net/wireless/ath/ath10k/ce.h
+++ b/drivers/net/wireless/ath/ath10k/ce.h
@@ -234,7 +234,7 @@ void ath10k_ce_deinit(struct ath10k_ce_pipe *ce_state);
234/*==================CE Interrupt Handlers====================*/ 234/*==================CE Interrupt Handlers====================*/
235void ath10k_ce_per_engine_service_any(struct ath10k *ar); 235void ath10k_ce_per_engine_service_any(struct ath10k *ar);
236void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id); 236void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id);
237void ath10k_ce_disable_interrupts(struct ath10k *ar); 237int ath10k_ce_disable_interrupts(struct ath10k *ar);
238 238
239/* ce_attr.flags values */ 239/* ce_attr.flags values */
240/* Use NonSnooping PCIe accesses? */ 240/* Use NonSnooping PCIe accesses? */
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c
index 2b4f7d3969e1..e41665f7eb85 100644
--- a/drivers/net/wireless/ath/ath10k/pci.c
+++ b/drivers/net/wireless/ath/ath10k/pci.c
@@ -879,8 +879,12 @@ static void ath10k_pci_stop_ce(struct ath10k *ar)
879 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); 879 struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
880 struct ath10k_pci_compl *compl; 880 struct ath10k_pci_compl *compl;
881 struct sk_buff *skb; 881 struct sk_buff *skb;
882 int ret;
883
884 ret = ath10k_ce_disable_interrupts(ar);
885 if (ret)
886 ath10k_warn("failed to disable CE interrupts: %d\n", ret);
882 887
883 ath10k_ce_disable_interrupts(ar);
884 ath10k_pci_kill_tasklet(ar); 888 ath10k_pci_kill_tasklet(ar);
885 889
886 /* Mark pending completions as aborted, so that upper layers free up 890 /* Mark pending completions as aborted, so that upper layers free up