void ath10k_ce_recv_cb_register(struct ath10k_ce_pipe *ce_state, void (*recv_cb)(struct ath10k_ce_pipe *)) { struct ath10k *ar = ce_state->ar; struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); spin_lock_bh(&ar_pci->ce_lock); ce_state->recv_cb = recv_cb; ath10k_ce_per_engine_handler_adjust(ce_state, 0); spin_unlock_bh(&ar_pci->ce_lock); }
void ath10k_ce_enable_interrupts(struct ath10k *ar) { struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); int ce_id; /* Skip the last copy engine, CE7 the diagnostic window, as that * uses polling and isn't initialized for interrupts. */ for (ce_id = 0; ce_id < CE_COUNT - 1; ce_id++) ath10k_ce_per_engine_handler_adjust(&ar_pci->ce_states[ce_id]); }
void ath10k_ce_send_cb_register(struct ath10k_ce_pipe *ce_state, void (*send_cb)(struct ath10k_ce_pipe *), int disable_interrupts) { struct ath10k *ar = ce_state->ar; struct ath10k_pci *ar_pci = ath10k_pci_priv(ar); spin_lock_bh(&ar_pci->ce_lock); ce_state->send_cb = send_cb; ath10k_ce_per_engine_handler_adjust(ce_state, disable_interrupts); spin_unlock_bh(&ar_pci->ce_lock); }