> ath10k is a bit weird about flushing frames, and at least my variant of the wave-2 > firmware does not always put the deauth frame on the air when deleting stations. > > It will likely not be much fun to fix this. I was wondering if the code below > from ieee80211_set_disassoc() could (easily?) be made to wait for a tx-status of the deauth frame > instead of trying to force a flush? That's exactly what it does: > > /* > * drop any frame before deauth/disassoc, this can be data or > * management frame. Since we are disconnecting, we should not > * insist sending these frames which can take time and delay > * the disconnection and possible the roaming. > */ > if (tx) > ieee80211_flush_queues(local, sdata, true); Remove all the pending data frames from the queues to clear the way for the deauth. Note the drop=true > > /* deauthenticate/disassociate now */ > if (tx || frame_buf) > ieee80211_send_deauth_disassoc(sdata, ifmgd->bssid, stype, > reason, tx, frame_buf); > Send the deauth. > /* flush out frame - make sure the deauth was actually sent */ > if (tx) > ieee80211_flush_queues(local, sdata, false); > Wait for the deauth (drop=false). The question here is how ath10k implements the flush(, drop=false)