freebsd-nq/sys
Adrian Chadd f0db652cf6 Break out the RX completion path into "FIFO check / refill" and
"complete RX frames."

The 128 entry RX FIFO is really easy to fill up and miss refilling
when it's done in the ath taskq - as that gets blocked up doing
RX completion, TX completion and other random things.

So the 128 entry RX FIFO now gets emptied and refilled in the ath_intr()
task (and it grabs / releases locks, so now ath_intr() can't just be
a FAST handler yet!) but the locks aren't held for very long. The
completion part is done in the ath taskqueue context.

Details:

* Create a new completed frame list - sc->sc_rx_rxlist;
* Split the EDMA RX process queue into two halves - one that
  processes the RX FIFO and refills it with new frames; another
  that completes the completed frame list;
* When tearing down the driver, flush whatever is in the deferred
  queue as well as what's in the FIFO;
* Create two new RX methods - one that processes all RX queues,
  one that processes the given RX queue.  When MSI is implemented,
  we get told which RX queue the interrupt came in on so we can
  specifically schedule that.  (And I can do that with the non-MSI
  path too; I'll figure that out later.)
* Convert the legacy code over to use these new RX methods;
* Replace all the instances of the RX taskqueue enqueue with a call
  to a relevant RX method to enqueue one or all RX queues.

Tested:

* AR9380, STA
* AR9580, STA
* AR5413, STA
2013-03-19 19:32:28 +00:00
..
amd64 Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
arm Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
boot Attach the elf section headers to the loaded kernel as metadata, so 2013-03-10 00:43:01 +00:00
bsm - Implement two new system calls: 2013-03-02 21:11:30 +00:00
cam Commit the removal of a whitespace to record the proper commit message 2013-03-19 15:05:21 +00:00
cddl Plug memory leak in dsl_check_snap_cb() 2013-03-19 07:47:51 +00:00
compat Use m_get/m_gethdr instead of compat macros. 2013-03-15 12:55:30 +00:00
conf Sync back vmcontention branch into HEAD: 2013-03-18 00:25:02 +00:00
contrib Simplify TAILQ usage and avoid additional memory allocations. 2013-03-05 08:08:16 +00:00
crypto When porting XTS-related code from OpenBSD I forgot to update copyright (only 2013-02-20 22:59:53 +00:00
ddb
dev Break out the RX completion path into "FIFO check / refill" and 2013-03-19 19:32:28 +00:00
fs Fix remainder calculation when biosize is not a power of 2 2013-03-19 13:06:11 +00:00
gdb
geom The geom_part provider supports unmapped bio iff the underlying 2013-03-19 14:50:24 +00:00
gnu/fs/reiserfs Garbage collect XFS bits which are now already completely disconnected 2013-03-02 15:33:54 +00:00
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 remap usermode pages into KVA for physio. 2013-03-19 14:43:57 +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 Fix style and comments. 2013-03-19 05:51:47 +00:00
net80211 Kill this, it's not needed at this point and (hopefully) the parent 2013-03-10 04:38:06 +00:00
netatalk
netgraph Fix compilation warning. 2013-02-15 07:58:51 +00:00
netinet In m_megapullup() instead of reserving some space at the end of packet, 2013-03-17 07:37:10 +00:00
netinet6 - Use m_getcl() instead of hand allocating. 2013-03-15 13:48:53 +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 Separate the locking macros that are used in the packet flow path 2013-03-19 06:04:17 +00:00
netsmb Call make_dev_credf() rather than using the couple make_dev()/dev_ref(). 2013-03-09 16:58:19 +00:00
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 Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
nlm
ofed Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
opencrypto When porting XTS-related code from OpenBSD I forgot to update copyright (only 2013-02-20 22:59:53 +00:00
pc98 Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
pci Fix build. 2013-02-21 12:52:18 +00:00
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 Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
sparc64 Implement the concept of the unmapped VMIO buffers, i.e. buffers which 2013-03-19 14:13:12 +00:00
sys Do not remap usermode pages into KVA for physio. 2013-03-19 14:43:57 +00:00
teken
tools Further refine the handling of stop signals in the NFS client. The 2013-02-21 19:02:50 +00:00
ufs UFS support of the unmapped i/o for the user data buffers. 2013-03-19 15:08:15 +00:00
vm Do not map the swap i/o pbufs if the geom provider for the swap 2013-03-19 14:39:27 +00:00
x86 MFcalloutng: 2013-02-28 13:46:03 +00:00
xdr Use m_get() and m_getcl() instead of compat macros. 2013-03-15 10:21:18 +00:00
xen
Makefile Remove netncp cscope entry missed in r248097 2013-03-12 14:21:52 +00:00