Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28642f42 authored by Michal Kazior's avatar Michal Kazior Committed by Kalle Valo
Browse files

ath10k: propagate ath10k_ce_disable_interrupts() errors



This shouldn't be silenced. This will be necessary
for PCI init code reordering.

Signed-off-by: default avatarMichal Kazior <michal.kazior@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent 5b2589fc
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -792,13 +792,13 @@ static void ath10k_ce_per_engine_handler_adjust(struct ath10k_ce_pipe *ce_state,
	ath10k_pci_sleep(ar);
	ath10k_pci_sleep(ar);
}
}


void ath10k_ce_disable_interrupts(struct ath10k *ar)
int ath10k_ce_disable_interrupts(struct ath10k *ar)
{
{
	int ce_id, ret;
	int ce_id, ret;


	ret = ath10k_pci_wake(ar);
	ret = ath10k_pci_wake(ar);
	if (ret)
	if (ret)
		return;
		return ret;


	for (ce_id = 0; ce_id < CE_COUNT; ce_id++) {
	for (ce_id = 0; ce_id < CE_COUNT; ce_id++) {
		u32 ctrl_addr = ath10k_ce_base_address(ce_id);
		u32 ctrl_addr = ath10k_ce_base_address(ce_id);
@@ -807,7 +807,10 @@ void ath10k_ce_disable_interrupts(struct ath10k *ar)
		ath10k_ce_error_intr_disable(ar, ctrl_addr);
		ath10k_ce_error_intr_disable(ar, ctrl_addr);
		ath10k_ce_watermark_intr_disable(ar, ctrl_addr);
		ath10k_ce_watermark_intr_disable(ar, ctrl_addr);
	}
	}

	ath10k_pci_sleep(ar);
	ath10k_pci_sleep(ar);

	return 0;
}
}


void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state,
void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state,
+1 −1
Original line number Original line Diff line number Diff line
@@ -234,7 +234,7 @@ void ath10k_ce_deinit(struct ath10k_ce_pipe *ce_state);
/*==================CE Interrupt Handlers====================*/
/*==================CE Interrupt Handlers====================*/
void ath10k_ce_per_engine_service_any(struct ath10k *ar);
void ath10k_ce_per_engine_service_any(struct ath10k *ar);
void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id);
void ath10k_ce_per_engine_service(struct ath10k *ar, unsigned int ce_id);
void ath10k_ce_disable_interrupts(struct ath10k *ar);
int ath10k_ce_disable_interrupts(struct ath10k *ar);


/* ce_attr.flags values */
/* ce_attr.flags values */
/* Use NonSnooping PCIe accesses? */
/* Use NonSnooping PCIe accesses? */
+5 −1
Original line number Original line Diff line number Diff line
@@ -879,8 +879,12 @@ static void ath10k_pci_stop_ce(struct ath10k *ar)
	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
	struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
	struct ath10k_pci_compl *compl;
	struct ath10k_pci_compl *compl;
	struct sk_buff *skb;
	struct sk_buff *skb;
	int ret;

	ret = ath10k_ce_disable_interrupts(ar);
	if (ret)
		ath10k_warn("failed to disable CE interrupts: %d\n", ret);


	ath10k_ce_disable_interrupts(ar);
	ath10k_pci_kill_tasklet(ar);
	ath10k_pci_kill_tasklet(ar);


	/* Mark pending completions as aborted, so that upper layers free up
	/* Mark pending completions as aborted, so that upper layers free up