On Thu, May 24, 2018 at 12:15:08AM +0200, Niklas Cassel wrote: > This problem cannot be reproduced on low-latency devices, e.g. pci, > since they call ath10k_mac_tx_push_pending() from > ath10k_htt_txrx_compl_task(). ath10k_htt_txrx_compl_task() is not called > on high-latency devices. > Fix the problem by calling ath10k_mac_tx_push_pending(), after > processing rx packets, just like for low-latency devices, also in the > SDIO case. Since we are calling ath10k_mac_tx_push_pending() directly, > we also need to export it. > Even if we are now calling ath10k_mac_tx_push_pending each time we process rx packets, the number of packets we actually queue from ath10k_mac_tx_push_pending are quite few: >From running iperf for 20 seconds: # grep ath10k_mac_tx_push_txq /sys/kernel/debug/tracing/trace | grep -v ath10k_mac_op_wake_tx_queue | wc -l 233 number of times ath10k_mac_tx_push_txq was called, but not from ath10k_mac_op_wake_tx_queue, i.e. number of times ath10k_mac_tx_push_txq was called from ath10k_mac_tx_push_pending. # grep ath10k_mac_tx_push_txq /sys/kernel/debug/tracing/trace | grep -v ath10k_mac_tx_push_pending | wc -l 28415 number of times ath10k_mac_tx_push_txq was called, but not from ath10k_mac_tx_push_pending, i.e number of times ath10k_mac_tx_push_txq was called from ath10k_mac_op_wake_tx_queue. Regards, Niklas