On Thu, 2015-01-22 at 23:30 +0200, Emmanuel Grumbach wrote: > When mac80211 disconnects, it drops all the packets on the > queues. This happens after the net stack has been notified > that we have no link anymore (netif_carrier_off). > netif_carrier_off ensures that no new packets are sent to > xmit() callback, but we might have older packets in the > middle of the Tx path. These packets will land in the > driver's queues after the latter have been flushed. > Synchronize_net() between netif_carrier_off and drv_flush() > will fix this. > > Note that we can't call synchronize_net inside > ieee80211_flush_queues since there are flows that call > ieee80211_flush_queues and don't need synchronize_net() > which is an expensive operation. I'm -- with a heavy heart -- applying this for now. TI/wizery spent a lot of time optimising the time it takes to roam, and this single line will introduce a potential for hundreds of ms of latency into the roaming flow. You (we) really need to think about how to avoid that. johannes -- 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