Hi, After digging around I've found what seems to be the problem with WMI Tx credit starvation and inability to properly flush Tx in ath10k_flush(). Long story short: if a client that was asleep (as per what firmware thinks) goes out of range (or just stops responding) then Tx rots in FW/HW queues for a few seconds before it's discarded. For WMI Tx credits this means management frames eat up Tx credits for a few seconds (causing other WMI commands to timeout and return -EAGAIN/-11). For HTT Tx this means NullFunc frames would get stuck for a few seconds before completion was received. @Ben: Can you check if this helps you? I tested this briefly and at least [1/4] seems fixes the WMI Tx starvation. I'm hoping patches 2-4 help with your ath10k_flush() failures which I haven't been successfull in reproducing (but have observed improvement with purging some frames out of FW/HW queues). Michal Kazior (4): ath10k: fix wmi-htc tx credit starvation ath10k: rework peer accounting ath10k: wait for mgmt tx when flushing too ath10k: improve tx flushing drivers/net/wireless/ath/ath10k/core.h | 7 +- drivers/net/wireless/ath/ath10k/mac.c | 254 +++++++++++++++++++++++++++++---- drivers/net/wireless/ath/ath10k/txrx.c | 29 ++-- drivers/net/wireless/ath/ath10k/wmi.c | 5 - drivers/net/wireless/ath/ath10k/wmi.h | 4 + 5 files changed, 253 insertions(+), 46 deletions(-) -- 1.8.5.3 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html