diff options
-rw-r--r-- | drivers/net/wireless/ath/ath10k/ce.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/ce.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath10k/pci.c | 6 |
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 | ||
795 | void ath10k_ce_disable_interrupts(struct ath10k *ar) | 795 | int 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 | ||
813 | void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state, | 816 | void 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====================*/ |
235 | void ath10k_ce_per_engine_service_any(struct ath10k *ar); | 235 | void ath10k_ce_per_engine_service_any(struct ath10k *ar); |
236 | void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id); | 236 | void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id); |
237 | void ath10k_ce_disable_interrupts(struct ath10k *ar); | 237 | int 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 |