Message ID | 1447243286-22116-1-git-send-email-rmanohar@qti.qualcomm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Rajkumar Manoharan <rmanohar@qti.qualcomm.com> writes: > commit a70587b3389a ("ath10k: configure copy engine 5 for HTT messages") > moved send completion polling under HTT Rx (CE 5) service routine. For > QCA6174 based devices copy engine 1 (CE 1) is used for HTT Rx instead > of CE 5. So send completion never be called. This is causing "failed to > transmit packet, dropping: -105" errors. Fix this by processing send > completion from CE 1 service routine instead of CE 5. > > Tested-by: Ryan Hsu <ryanhsu@qca.qualcomm.com> > Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> Applied to ath-current, thanks. I had a trivial conflict, please review carefully my changes: https://git.kernel.org/cgit/linux/kernel/git/kvalo/ath.git/commit/?h=ath-current&id=6419fdbb6f90e147690f8833cba59d289d613da5
> > commit a70587b3389a ("ath10k: configure copy engine 5 for HTT messages") > > moved send completion polling under HTT Rx (CE 5) service routine. For > > QCA6174 based devices copy engine 1 (CE 1) is used for HTT Rx instead > > of CE 5. So send completion never be called. This is causing "failed to > > transmit packet, dropping: -105" errors. Fix this by processing send > > completion from CE 1 service routine instead of CE 5. > > > > Tested-by: Ryan Hsu <ryanhsu@qca.qualcomm.com> > > Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com> > > Applied to ath-current, thanks. I had a trivial conflict, please review > carefully my changes: > > https://git.kernel.org/cgit/linux/kernel/git/kvalo/ath.git/commit/?h=ath-current&id=6419fdbb6f90e147690f8833cba59d289d613da5 > Looks good. Thanks for fixing conflicts. -Rajkumar
diff --git a/drivers/net/wireless/ath/ath10k/pci.c b/drivers/net/wireless/ath/ath10k/pci.c index 5c91a67..698e669 100644 --- a/drivers/net/wireless/ath/ath10k/pci.c +++ b/drivers/net/wireless/ath/ath10k/pci.c @@ -112,6 +112,7 @@ static void ath10k_pci_htc_rx_cb(struct ath10k_ce_pipe *ce_state); static void ath10k_pci_htt_tx_cb(struct ath10k_ce_pipe *ce_state); static void ath10k_pci_htt_rx_cb(struct ath10k_ce_pipe *ce_state); static void ath10k_pci_pktlog_rx_cb(struct ath10k_ce_pipe *ce_state); +static void ath10k_pci_htt_htc_rx_cb(struct ath10k_ce_pipe *ce_state); static const struct ce_attr host_ce_config_wlan[] = { /* CE0: host->target HTC control and raw streams */ @@ -129,7 +130,7 @@ static const struct ce_attr host_ce_config_wlan[] = { .src_nentries = 0, .src_sz_max = 2048, .dest_nentries = 512, - .recv_cb = ath10k_pci_htc_rx_cb, + .recv_cb = ath10k_pci_htt_htc_rx_cb, }, /* CE2: target->host WMI */ @@ -1210,6 +1211,16 @@ static void ath10k_pci_htc_rx_cb(struct ath10k_ce_pipe *ce_state) ath10k_pci_process_rx_cb(ce_state, ath10k_htc_rx_completion_handler); } +static void ath10k_pci_htt_htc_rx_cb(struct ath10k_ce_pipe *ce_state) +{ + /* CE4 polling needs to be done whenever CE pipe which transports + * HTT Rx (target->host) is processed. + */ + ath10k_ce_per_engine_service(ce_state->ar, 4); + + ath10k_pci_process_rx_cb(ce_state, ath10k_htc_rx_completion_handler); +} + /* Called by lower (CE) layer when data is received from the Target. * Only 10.4 firmware uses separate CE to transfer pktlog data. */