freebsd-nq/sys
Adrian Chadd 3feffbd796 Add per-TXQ EDMA FIFO staging queue support.
Each set of frames pushed into a FIFO is represented by a list of
ath_bufs - the first ath_buf in the FIFO list is marked with
ATH_BUF_FIFOPTR; the last ath_buf in the FIFO list is marked with
ATH_BUF_FIFOEND.

Multiple lists of frames are just glued together in the TAILQ as per
normal - except that at the end of a FIFO list, the descriptor link
pointer will be NULL and it'll be tagged with ATH_BUF_FIFOEND.

For non-EDMA chipsets this is a no-op - the ath_txq frame list (axq_q)
stays the same and is treated the same.

For EDMA chipsets the frames are pushed into axq_q and then when
the FIFO is to be (re) filled, frames will be moved onto the FIFO
queue and then pushed into the FIFO.

So:

* Add a new queue in each hardware TXQ (ath_txq) for staging FIFO frame
  lists.  It's a TAILQ (like the normal hardware frame queue) rather than
  the ath9k list-of-lists to represent FIFO entries.

* Add new ath_buf flags - ATH_TX_FIFOPTR and ATH_TX_FIFOEND.

* When allocating ath_buf entries, clear out the flag value before
  returning it or it'll end up having stale flags.

* When cloning ath_buf entries, only clone ATH_BUF_MGMT.  Don't clone
  the FIFO related flags.

* Extend ath_tx_draintxq() to first drain the FIFO staging queue, _then_
  drain the normal hardware queue.

Tested:

* AR9280, hostap
* AR9280, STA
* AR9380/AR9580 - hostap

TODO:

* Test on other chipsets, just to be thorough.
2013-03-26 19:46:51 +00:00
..
amd64 Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
arm Don't check and warn about pmap mismatch on every call to busdma sync. 2013-03-23 17:17:06 +00:00
boot Integrate Efika MX project back to home. 2013-03-20 15:39:27 +00:00
bsm Implement chflagsat(2) system call, similar to fchmodat(2), but operates on 2013-03-21 22:59:01 +00:00
cam Remove two bzero()s that are erasing only few more bytes then set later. 2013-03-25 06:31:17 +00:00
cddl Dtrace: Add SUN MDB-like type-aware print() action. 2013-03-25 20:38:09 +00:00
compat Regenerate after r248599. 2013-03-21 23:02:19 +00:00
conf Fix kernel build with options ZFS after r24571 (libzfs_core). 2013-03-23 20:01:45 +00:00
contrib
crypto
ddb
dev Add per-TXQ EDMA FIFO staging queue support. 2013-03-26 19:46:51 +00:00
fs - Constify local path variable for chflagsat(). 2013-03-22 07:40:34 +00:00
gdb
geom geom_slice.c and its consumers like GEOM_LABEL are not touching the data 2013-03-26 07:55:24 +00:00
gnu/fs/reiserfs
i386 Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
ia64 Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
isa
kern Do not pass unmapped buffers to drivers that cannot handle them 2013-03-26 01:17:06 +00:00
kgssapi
libkern Add __aeabi_memset to libkern, implemented using memset, as clang may 2013-03-16 23:11:55 +00:00
mips Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
modules Fix the powerpc64 build. MACHINE_CPUARCH is common for powerpc/powerpc64, 2013-03-19 00:39:02 +00:00
net Remove __FreeBSD_version ifdefs. 2013-03-22 20:44:16 +00:00
net80211 Add VNET wrappers around the rest of the ieee80211 rtsock messages. 2013-03-20 02:42:52 +00:00
netatalk
netgraph Return ENOMEM if malloc() fails. 2013-03-26 14:08:14 +00:00
netinet Add ipfw support for setting/matching DiffServ codepoints (DSCP). 2013-03-20 10:35:33 +00:00
netinet6 Clean up some unused leftover code. 2013-03-22 01:45:54 +00:00
netipsec Use m_get2() + m_align() instead of hand made key_alloc_mbuf(). Code 2013-03-15 10:20:15 +00:00
netipx
netnatm
netpfil When we are removing a specific set, call ipfw_expire_dyn_rules only once. 2013-03-25 07:43:46 +00:00
netsmb
nfs Use m_get() and m_getcl() instead of compat macros. 2013-03-15 10:21:18 +00:00
nfsclient Fix remainder calculation when biosize is not a power of 2 2013-03-19 13:06:11 +00:00
nfsserver
nlm
ofed
opencrypto
pc98
pci
powerpc Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
rpc Revert 195703 and 195821 as this special stop handling in NFS is now 2013-03-13 21:06:03 +00:00
security
sparc64 Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
sys Do not pass unmapped buffers to drivers that cannot handle them 2013-03-26 01:17:06 +00:00
teken
tools
ufs The purpose of this change to the FFS layout policy is to reduce the 2013-03-22 21:45:28 +00:00
vm Introduce vm_radix_isleaf() and use it in a couple places. As compared to 2013-03-26 17:30:40 +00:00
x86
xdr Use m_get() and m_getcl() instead of compat macros. 2013-03-15 10:21:18 +00:00
xen
Makefile