More on ath10k_flush.

Ben Greear greearb at
Mon Mar 31 20:24:09 EDT 2014

So, I tried adding lots of debug to the ath10k_flush,
and I think I might have found the issue.

My test case is:  create 32 stations, start TCP on all of them,
then reset (effectively ifdown;ifup) the station vifs.

I get lots of spews because the ath10k_flush call thinks it is
hanging.  But, based on the debug, I think the problem is that
the tx logic is continuing to accept packets while the flush
is trying to happen.

If my debugging stats are correct, the NIC managed to send around 4000
frames during the flush attempt, and the ath10k driver processed lots of
tx completions as well.  But there are still lots of pkts
pending tx and the tx queue was never empty.

ath10k: failed to flush transmit queue (skip 0 ar-state 1 pending_tx 1009  pre-pending-tx: 1045): 0
ath10k: pre: htc-send-tot: 3423  htt-tx 2545397  tx-compl 2544355  mgt-tx 0  mgt-compl 0
ath10k: post: htc-send-tot: 3424  htt-tx 2630981  tx-compl 2630156  mgt-tx 0  mgt-compl 0
ath10k: pre: hw-queued: 124395  hw-reaped: 124394
ath10k: post: hw-queued: 128418  hw-reaped: 128417

Do we need to somehow shut down all tx logic during the ath10k_flush
so that (other?) stations cannot transmit?


Ben Greear <greearb at>
Candela Technologies Inc

More information about the ath10k mailing list