Question on ath10k_mgmt_tx_flush

Michal Kazior michal.kazior at
Thu Apr 10 22:21:32 PDT 2014

On 10 April 2014 15:41, Ben Greear <greearb at> wrote:
> Can we optimize this method to return early if the tx-credits
> are fully replenished (ie, == 2) instead of just sleeping the
> 2 x beacon-interval?  That would indicate all messages
> have been flushed, right?

Yeah. You're _almost_ right. Every odd mgmt frame will trigger tx
credit replenishment, even if you set NEEDS_CREDITS htc tx flag for
all packets. It seems that tx credits aren't replenished until you
submit an even number of mgmt tx:

 [tx credits =2]
 vdev create [-1, =1]
 [replenish +1, =2]
 mgmt tx [-1, =1]
 [frame is seen on air, means it left tx queue, but no replenishment]
 vdev set param [-1, =0]
 [replenish +1, =1]
 mgmt tx [-1, =0]
 [frame seen on air]
 [replenish +2, =2]

However once you flush peer tids you get the tx credit immediately.
This means you don't ever reach having 2 mgmt tx consuming 2 tx
credits (unless things go terribly terribly wrong at which point it's
probably already beyond help).

A very ugly hack would be to try and send out mgmt tx in pairs - a
requested frame and a dummy frame (such that firmware will not buffer
it) so that you use tx credit replenishment as tx completion


More information about the ath10k mailing list