Adrian Chadd af33d486ab Implement a separate, smaller pool of ath_buf entries for use by management
traffic.

* Create sc_mgmt_txbuf and sc_mgmt_txdesc, initialise/free them appropriately.
* Create an enum to represent buffer types in the API.
* Extend ath_getbuf() and _ath_getbuf_locked() to take the above enum.
* Right now anything sent via ic_raw_xmit() allocates via ATH_BUFTYPE_MGMT.
  This may not be very useful.
* Add ATH_BUF_MGMT flag (ath_buf.bf_flags) which indicates the current buffer
  is a mgmt buffer and should go back onto the mgmt free list.
* Extend 'txagg' to include debugging output for both normal and mgmt txbufs.
* When checking/clearing ATH_BUF_BUSY, do it on both TX pools.

Tested:

* STA mode, with heavy UDP injection via iperf.  This filled the TX queue
  however BARs were still going out successfully.

TODO:

* Initialise the mgmt buffers with ATH_BUF_MGMT and then ensure the right
  type is being allocated and freed on the appropriate list.  That'd save
  a write operation (to bf->bf_flags) on each buffer alloc/free.

* Test on AP mode, ensure that BAR TX and probe responses go out nicely
  when the main TX queue is filled (eg with paused traffic to a TID,
  awaiting a BAR to complete.)

PR:		kern/168170
2012-06-13 06:57:55 +00:00
..
2012-06-06 09:07:50 +00:00
2012-03-12 20:31:58 +00:00
2012-06-10 11:17:14 +00:00
2012-04-04 21:09:02 +00:00
2012-06-10 11:17:14 +00:00
2012-06-07 03:22:20 +00:00
2011-12-17 10:23:17 +00:00
2012-03-27 15:13:12 +00:00
2012-05-25 03:00:34 +00:00
2012-05-24 23:03:23 +00:00
2012-05-23 06:49:50 +00:00
2012-01-10 20:52:02 +00:00
2012-01-15 13:23:18 +00:00
2012-04-16 23:29:12 +00:00
2012-01-31 13:00:40 +00:00
2012-01-15 13:23:43 +00:00
2012-04-13 18:21:56 +00:00
2011-10-18 08:09:44 +00:00
2011-12-17 10:23:17 +00:00
2012-05-25 15:05:17 +00:00
2011-05-15 13:17:08 +00:00
2012-01-11 15:00:16 +00:00
2012-02-27 08:57:02 +00:00
2012-01-15 13:23:18 +00:00
2012-05-11 03:17:32 +00:00
2012-06-10 11:17:14 +00:00
2012-06-02 19:41:28 +00:00
2011-12-15 05:07:16 +00:00
2012-02-11 08:12:52 +00:00
2011-12-22 15:13:32 +00:00
2011-10-18 08:09:44 +00:00
2011-11-23 05:34:01 +00:00
2012-06-01 04:23:20 +00:00