freebsd-dev/sys/dev
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
..
aac Initialize count in order to appease clang. 2013-03-01 22:09:08 +00:00
acpi_support Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
acpica Fix a typo in a comment. 2013-03-17 07:28:17 +00:00
adb
adlink Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
advansys Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
ae
age Rework jumbo frame handling. QAC confirmed that the controller 2013-02-05 00:37:45 +00:00
agp Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
aha Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
ahb Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
ahci ahci(4) and siis(4) are ready to process the unmapped i/o requests 2013-03-19 15:09:32 +00:00
aic Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
aic7xxx Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
alc
ale
altera MFP4 change 219820 2013-01-22 18:51:14 +00:00
amdsbwd Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
amdtemp Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
amr Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
an
arcmsr Refresh vendor driver version which adds ARC-1224 support. 2013-02-28 04:16:47 +00:00
asmc
asr
ata Fix command timeout caused by data underrun during fetching ATAPI sense 2013-02-22 21:43:21 +00:00
ath Break out the RX completion path into "FIFO check / refill" and 2013-03-19 19:32:28 +00:00
atkbdc List TrackPoint device before generic model. 2013-03-18 23:31:22 +00:00
auxio Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
bce Initialize count in order to appease clang. 2013-03-01 22:05:20 +00:00
bfe
bge r241438 broke IPMI access on Sun Fire X2200 M2(BCM5715). 2013-03-13 01:40:01 +00:00
bktr Clean some 'svn:executable' properties in the tree. 2013-01-26 22:08:21 +00:00
bm
buslogic Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
bvm
bwi
bwn
bxe This fixes a out-of-order problem with several 2013-02-07 15:20:54 +00:00
cardbus
cas - Move reporting of failures to disable RX/TX MAC under bootverbose as at 2013-03-01 20:51:53 +00:00
ce Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
cesa
cfe
cfi Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
ciss The 5300 series ciss(4) board does not work in performant mode with our 2013-02-25 19:22:56 +00:00
cm
cmx
coretemp Mark the coretemp(4) sysctls as MPSAFE, ensuring that Giant won't be held 2013-02-18 22:47:16 +00:00
cp Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
cpuctl
cpufreq Add a quirk to disable this driver for certain older laptops with an ICH2 2013-02-26 18:30:47 +00:00
cs
ct
ctau Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
cx Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
cxgb
cxgbe cxgbe(4): Report unusual out of band errors from the firmware. 2013-02-26 21:25:17 +00:00
cy
dc
dcons MFcalloutng: 2013-02-19 18:22:25 +00:00
de
digi Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
dpms
dpt Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
drm Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
drm2 Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
e1000 Refresh on the shared code for the E1000 drivers. 2013-02-21 00:25:45 +00:00
ed
eisa
en
ep Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
esp
et
etherswitch
ex
exca
fatm
fb
fdc Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
fdt Return "start" and "end" to u_long world. Because rman handle addresses as 2013-03-19 14:15:41 +00:00
fe
filemon
firewire bus_dmamap_load_ccb doesn't exist on earlier versions of FreeBSD or 2013-02-21 17:50:21 +00:00
flash
fxp
gem
glxiic
glxsb
gpio
gxemul
hatm
hifn
hme
hpt27xx Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
hptiop Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
hptmv Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
hptrr Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
hwpmc Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
ic Add support for A10 uart. 2013-03-01 01:42:31 +00:00
ichsmb Add Intel Lynx Point PCH SMBus Device IDs 2013-01-02 22:01:26 +00:00
ichwd Don't log a message when the watchdog is reloaded. It's not useful to do so 2013-03-09 15:04:44 +00:00
ida
ie
ieee488
if_ndis
iicbus Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
iir Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
io
ipmi
ips
ipw
isci Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
iscsi/initiator Finish r243882: mechanically substitute flags from historic mbuf 2013-03-12 08:59:51 +00:00
isf Merge Perforce changeset 219952 to head: 2013-01-13 16:57:11 +00:00
isp Remove redundant xpt_alloc_ccb in isp_target_thread that was causing leakage. 2013-02-26 21:37:12 +00:00
ispfw
iwi
iwn
ixgb Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
ixgbe Fix a small, but important bug, a task drain was mistakenly 2013-03-04 23:15:07 +00:00
jme
joy
kbd
kbdmux
ksyms
le
led MFcalloutng: 2013-02-19 19:25:50 +00:00
lge
lindev
lmc
malo
mc146818
mca
mcd The other giant locked storage drivers have removed splbio(), for the 2013-02-21 02:34:04 +00:00
md Support unmapped i/o for the md(4). 2013-03-19 14:53:23 +00:00
mem
mfi Fix a typo in mfi_stp_cmd() that would give wrong assignment. 2013-03-01 23:18:20 +00:00
mge
mii
mk48txx
mlx
mly Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
mmc Fix highest voltage detection 2013-01-21 23:24:16 +00:00
mn Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
mps Replace the TDP_NOSLEEPING flag with a counter so that the 2013-03-01 22:03:31 +00:00
mpt Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
mse
msk RX checksum offloading on old Yukon controllers seem to cause more 2013-02-27 05:03:35 +00:00
mvs Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
mwl
mxge Several cleanups and fixes to mxge: 2013-02-25 16:22:40 +00:00
my Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
nand Add the chip used in recent GlobalScale Technologies *Plug computers 2013-01-27 00:16:36 +00:00
ncv
netmap Switch the vm_object mutex to be a rwlock. This will enable in the 2013-03-09 02:32:23 +00:00
nfe
nge
nmdm
nsp
null
nvd
nve
nvme Fix GCC build: 2013-03-07 22:54:28 +00:00
nvram
nvram2env Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
nxge Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
oce Eliminate excessive $FreeBSD$ headers. 2013-03-08 18:08:12 +00:00
ofw
patm
pbio
pccard
pccbb
pcf
pci - Complete r231621 by also blacklisting the bridge used by VMware for PCIe 2013-03-02 15:54:02 +00:00
pcn
pdq
powermac_nvram
ppbus
ppc Fix build. 2013-02-21 12:40:52 +00:00
pst
pty
puc Correct the definition for Exar XR17V258IV: we must use a config_function 2013-03-18 19:22:51 +00:00
qlxgb
quicc
ral
random MFcalloutng (r236314 by mav): 2013-03-04 16:16:23 +00:00
rc
re Disable TX IP header checksum offloading on RL_HWREV_8168CP. The 2013-03-13 02:11:45 +00:00
rndtest
rp
rt
safe
sbni
scc
scd
sdhci Add hooks for plugging platform-provided transfer backend. 2013-02-28 19:43:14 +00:00
sec
sf
sfxge
sge
si Remove incorrect comment about splsoftclock. 2013-02-21 07:19:50 +00:00
siba
siis ahci(4) and siis(4) are ready to process the unmapped i/o requests 2013-03-19 15:09:32 +00:00
sio
sis r119712 introduced SIS_TYPE_83816 but it was not actually set in 2013-03-18 04:46:17 +00:00
sk
smbus
smc
sn
snc
snp
sound Hide version string under verbose. 2013-03-16 17:57:00 +00:00
speaker
spibus
ste
stg
stge
streams
sym Don't try and negotiate sync mode if either period or offset are zero. 2013-02-25 14:06:24 +00:00
syscons MFcalloutng (r244249, r244306 by mav): 2013-03-04 14:00:58 +00:00
tdfx
terasic Merge Perforce changeset 219952 to head: 2013-01-13 16:57:11 +00:00
ti
tl
tpm
trm Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
tsec
twa Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
twe
tws Fix typo. 2013-03-01 15:48:31 +00:00
tx
txp
uart Add support for A10 uart. 2013-03-01 01:42:31 +00:00
ubsec
usb Add new USB ID. 2013-03-19 12:52:13 +00:00
utopia
vge
viawd
virtio Only set the barrier flag if the feature was negotiated 2013-03-05 07:00:05 +00:00
vkbd
vr
vte
vx Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
vxge Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
watchdog watchdogd(8) and watchdog(4) enhancements. 2013-02-27 19:03:31 +00:00
wb
wbwd Add ID for Nuvoton WPCM450RA0BX found on Supermicro X9SCA-F motherboards. 2013-01-11 10:22:09 +00:00
wds Reform the busdma API so that new types may be added without modifying 2013-02-12 16:57:20 +00:00
wi
wl
wpi
wtap
xe
xen Use DEVMETHOD_END macro defined in sys/bus.h instead of {0, 0} sentinel on device_method_t arrays 2013-01-30 18:01:20 +00:00
xl