K 10 svn:author V 6 adrian K 8 svn:date V 27 2011-06-12T09:18:48.182727Z K 7 svn:log V 1402 Add code to flush the software queues whenever the interface is reset. * Add functionality to flush all software-queued packets for a TID. * Add a function to drain all software queued packets for the given node * Add a function that drains all software queued packets for the given interface - so, all nodes for all vaps. This is needed because now that packets are on the sw q as well as hw q, an interface reset, channel change, etc can result in software queued packets whose rate control bits now don't match what the channel is setup for. For example, during scan, the interface is in a non-ht40 mode and any ht/40 packets queued to it will end up annoying the baseband. ath_vap_delete() also deleted all entries from the hw and sw txq's; it's possible we could get away with only flushing entries for the given vap's sw tx queues. Maybe I'll do that later. Note: I've discovered no node locking is done, so the rate control code is likely still racy. Blah. Finally, I'm not sure if the ieee80211 common lock should be held when iterating like this over the nodes. It doesn't seem so - it isn't held at the moment. I'm still concerned about subtle race conditions with the TX path and other things such as scan and interface reset. I'll do some further digging later as it seems that breaking out the TX path into said software queue has made some racy stuff a little more .. obvious. END