K 10 svn:author V 6 adrian K 8 svn:date V 27 2011-08-28T03:05:16.267535Z K 7 svn:log V 1199 Migrate back to the locking structure the atheros reference driver and linux ath9k uses - hide the per-TID state behind the associated hardware TXQ. This is less fine grained than what I was doing before, but it results in: * The code being cleaner (ie, there's not a mess of locks everywhere); * The code being closer to what the reference/linux drivers do, making it easier to port code over; * A bunch of state changes become much more predictable - eg, the BAW window updates occur in one bunch rather than interleaved with other packet TX. This isn't yet complete, as there are a few things to fix: * recursive mutexes during ht node cleanup * remove the current txq drain which uses ieee80211_iterate_nodes() which grabs the IEEE80211_NODE_LOCK() and replace it with a similar setup to what Linux/Reference driver does. * Figure out how to properly halt the software TXQ (via ath_raw_xmit() and via ath_start()) during the reset process so frames aren't queued to the software queue whilst things are drained. * Investigate whether a STA which is going away can have traffic queued to its ieee80211_node, which is in the process of being freed or has already been freed. END