Search Linux Wireless

Re: Question on flushing and deauth frames

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 06/14/2017 11:18 PM, Emmanuel Grumbach wrote:
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:

Well, the end effect is supposed to be the same, at least...

       /*
         * 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)

Not well, it seems.  I don't think it has a good way to flush (drop=false)
an individual vdev, though probably I could implement it.  And, I think that
the packets in the mac80211 txqs might be difficult to flush.

But, mac80211 gets a txstatus when the deauth is sent, so if it simply
waited on that, it would not matter how flush is implemented.  And, it might
try to re-send a time or two if getting the deauth through was worth the
wait and the initial attempt(s) got a false txstatus.

Thanks,
Ben

--
Ben Greear <greearb@xxxxxxxxxxxxxxx>
Candela Technologies Inc  http://www.candelatech.com



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux