freebsd-dev/sys/dev
Adrian Chadd 88b3d48316 Implement BAR TX.
A BAR frame must be transmitted when an frame in an A-MPDU session fails
to transmit - it's retried too often, or it can't be cloned for
re-transmission.  The BAR frame tells the remote side to advance the
left edge of the block-ack window (BAW) to a new value.

In order to do this:

* TX for that particular node/TID must be paused;
* The existing frames in the hardware queue needs to be completed, whether
  they're TXed successfully or otherwise;
* The new left edge of the BAW is then communicated to the remote side
  via a BAR frame;
* Once the BAR frame has been sucessfully TXed, aggregation can resume;
* If the BAR frame can't be successfully TXed, the aggregation session
  is torn down.

This is a first pass that implements the above.  What needs to be done/
tested:

* What happens during say, a channel reset / stuck beacon _and_ BAR
  TX.  It _should_ be correctly buffered and retried once the
  reset has completed.  But if a bgscan occurs (and they shouldn't,
  grr) the BAR frame will be forcibly failed and the aggregation session
  will be torn down.

  Yes, another reason to disable bgscan until I've figured this out.

* There's way too much locking going on here.  I'm going to do a couple
  of further passes of sanitising and refactoring so the (re) locking
  isn't so heavy.  Right now I'm going for correctness, not speed.

* The BAR TX can fail if the hardware TX queue is full.  Since there's
  no "free" space kept for management frames, a full TX queue (from eg
  an iperf test) can race with your ability to allocate ath_buf/mbufs
  and cause issues.  I'll knock this on the head with a subsequent
  commit.

* I need to do some _much_ more thorough testing in hostap mode to ensure
  that many concurrent traffic streams to different end nodes are correctly
  handled.  I'll find and squish whichever bugs show up here.

But, this is an important step to being able to flip on 802.11n by default.
The last issue (besides bug fixes, of course) is HT frame protection and
I'll address that in a subsequent commit.
2012-04-04 23:45:15 +00:00
..
aac Use bus_get_dma_tag() to inherit the PCI bus' 4G boundary constraint. 2012-03-07 18:52:46 +00:00
acpi_support Add missing MODULE_DEPEND() so that acpi.ko and aibs.ko can be 2012-02-28 15:12:26 +00:00
acpica Use a more proper fix for enabling HT MSI mapping windows on Host-PCI 2012-03-29 19:03:22 +00:00
adb
adlink
advansys Final pass at having devices use their bus parent for dma tags. The 2012-03-12 19:29:35 +00:00
ae
age
agp
aha
ahb Remove a stale comment. 2012-03-12 20:31:58 +00:00
ahci Fix names of some Marvell SATA chips. It looks like chips with proprietary 2012-03-02 08:49:07 +00:00
aic
aic7xxx Follow non-BSD case when GNU/Hurd is detected. 2012-03-25 21:54:36 +00:00
alc
ale - Const'ify the device lookup-table. 2012-04-04 21:09:02 +00:00
amdsbwd
amdtemp - Add support for Family 12h, 14h and 15h processors. 2012-02-24 00:02:46 +00:00
amr Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
an Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
arcmsr Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
asmc
asr Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
ata - First pass at const'ifying ata(4) as appropriate. 2012-03-21 16:59:39 +00:00
ath Implement BAR TX. 2012-04-04 23:45:15 +00:00
atkbdc Add a PNP ID for Japanese 106-key keyboard. 2012-03-28 17:58:37 +00:00
auxio
bce
bfe
bge Make if_ierrors updated whenever any of the following counters are 2012-03-12 03:47:30 +00:00
bktr
bm
buslogic Remove comments about creating DMA tags as children of the DMA tags of their 2012-03-12 19:29:32 +00:00
bwi
bwn
bxe Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
cardbus - Add a bus_dma tag to each PCI bus that is a child of a Host-PCI bridge. 2012-03-02 20:38:04 +00:00
cas
ce
cesa Final pass at having devices use their bus parent for dma tags. The 2012-03-12 19:29:35 +00:00
cfe
cfi CFI fixes for big endian archs. 2012-03-27 15:13:12 +00:00
ciss Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
cm
cmx
coretemp
cp
cpuctl
cpufreq
cs
ct
ctau
cx
cxgb Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
cxgbe Use the non-sleeping variang of t4_wr_mbox in code that can be called 2012-02-13 18:41:32 +00:00
cy
dc
dcons
de More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
digi
dpms
dpt Remove comments about creating DMA tags as children of the DMA tags of their 2012-03-12 19:29:32 +00:00
drm
e1000 Fix a few issues with transmit handling in em(4) and igb(4): 2012-03-30 19:54:48 +00:00
ed
eisa
en Final pass at having devices use their bus parent for dma tags. The 2012-03-12 19:29:35 +00:00
ep
esp
et
ex
exca
fatm
fb Save and restore VGA display memory between suspend and resume. 2012-04-04 22:02:54 +00:00
fdc
fdt Respect phy-handle property in Ethernet nodes of the device tree. 2012-03-04 19:22:52 +00:00
fe
firewire
flash
fxp Remove unnecessary #if as the software workaround for PCI protocol 2012-03-28 01:52:38 +00:00
gem
glxiic
glxsb More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
gpio Remove extra semicolon which rendered condition useless 2012-04-02 00:11:26 +00:00
hatm More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
hifn Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
hme
hpt27xx
hptiop Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
hptmv Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
hptrr
hwpmc Add software PMC support. 2012-03-28 20:58:30 +00:00
ic
ichsmb
ichwd
ida Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
ie
ieee488
if_ndis Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
iicbus Driver for OpenCores I2C controller. 2012-03-27 10:44:32 +00:00
iir Remove comments about creating DMA tags as children of the DMA tags of their 2012-03-12 19:29:32 +00:00
io
ipmi
ips Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
ipw Use suspend/resume methods provided by net80211. This ensures that the 2012-03-23 19:32:30 +00:00
isci Fix the following compilation warning with clang trunk in isci(4): 2012-03-30 22:52:08 +00:00
iscsi/initiator Remove direct access to si_name. 2012-02-10 12:35:57 +00:00
isp Fix memset sizeof 2012-02-22 01:08:59 +00:00
ispfw
iwi Use suspend/resume methods provided by net80211. This ensures that the 2012-03-23 19:32:30 +00:00
iwn strip (R) to match manpage and pci_vendors 2012-03-27 18:27:45 +00:00
ixgb More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
ixgbe More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
jme
joy
kbd
kbdmux
ksyms
le
led
lge
lindev
lmc More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
malo
mc146818
mca
mcd
md
mem
mfi - Do not include machine/atomic.h. It is no longer necessary since r233768. 2012-04-04 16:15:40 +00:00
mge More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
mii Prefer RL_GMEDIASTAT register to RGEPHY_MII_SSR register to 2012-02-28 05:23:29 +00:00
mk48txx
mlx Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
mly Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
mmc
mn
mps Make the mps(4) module depend on the cam module. 2012-03-07 22:39:11 +00:00
mpt Refine r233827; as it turns out, controllers with a device ID of 0x0059 2012-04-04 20:42:45 +00:00
mse
msk
mvs
mwl
mxge More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
my
ncv
netmap A bunch of netmap fixes: 2012-02-27 19:05:01 +00:00
nfe
nge
nmdm
nsp
null
nve More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
nvram
nvram2env
nxge
oce Use pci_find_cap() instead of pci_find_extcap() to locate PCI 2012-03-03 18:03:50 +00:00
ofw Make ofw_bus_get_node() consistently return -1 when there is no associated 2012-03-15 22:53:39 +00:00
patm More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
pbio
pccard
pccbb
pcf Make ofw_bus_get_node() consistently return -1 when there is no associated 2012-03-15 22:53:39 +00:00
pci Fix couple of style nits. 2012-03-29 19:29:24 +00:00
pcn Fix logic error 2012-02-27 08:57:02 +00:00
pdq
powermac_nvram
ppbus
ppc
pst
pty
puc
qlxgb
quicc
ral
random
rc
re Prefer RL_GMEDIASTAT register to RGEPHY_MII_SSR register to 2012-02-28 05:23:29 +00:00
rndtest
rp
rt
safe More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
sbni
scc
scd
sdhci Add support for RICOH R5CE823 card reader, that can be found in 2012-02-09 10:20:41 +00:00
sec
sf Remove duplicate assignment of SF_IMR_RXDQ2_DMADONE bit 2012-02-27 08:55:32 +00:00
sfxge
sge
si
siba Expand the set of APIs available for locating PCI capabilities: 2012-03-03 18:08:57 +00:00
siis
sio
sis
sk
smbus
smc
sn
snc
snp
sound Fix compiler warnings, mostly signed issues, 2012-04-02 10:50:42 +00:00
speaker
spibus
ste
stg
stge
streams
sym
syscons Move tty_opened_ns() into syscons.c which is currently the 2012-03-29 15:47:29 +00:00
tdfx
ti
tl
tpm
trm More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
tsec Respect phy-handle property in Ethernet nodes of the device tree. 2012-03-04 19:22:52 +00:00
twa Use bus_get_dma_tag() to inherit the 4G boundary restriction from the 2012-03-07 18:53:56 +00:00
twe Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
tws Convert a number of drivers to obtaining their parent DMA tag from their 2012-03-12 08:03:51 +00:00
tx
txp
uart Add PCI Id for the AMT SOL UART on G4x series Intel chipsets. 2012-03-14 14:01:51 +00:00
ubsec More conversions of drivers to use the PCI parent DMA tag. 2012-03-12 18:15:08 +00:00
usb Fix compiler warnings, mostly signed issues, 2012-04-02 10:50:42 +00:00
utopia
vge Remove unused variable mii 2012-02-11 08:12:52 +00:00
viawd
virtio Use pci_find_cap() instead of pci_find_extcap() to locate PCI 2012-03-03 18:03:50 +00:00
vkbd
vr
vte
vx
vxge
watchdog
wb
wbwd Provide wbwd(4), a driver for the watchdog timer found on various 2012-03-06 18:44:52 +00:00
wds Final pass at having devices use their bus parent for dma tags. The 2012-03-12 19:29:35 +00:00
wi If an interrupt is received with no vap attached, just fail LINK events. 2012-02-25 08:01:29 +00:00
wl
wpi Use suspend/resume methods provided by net80211. This ensures that the 2012-03-23 19:32:30 +00:00
wtap Remove this - it's not needed as it's defined in ieee80211_freebsd.h. 2012-03-19 13:54:15 +00:00
xe
xen Correct failure to attach the PV block front device on Citrix 2012-03-25 14:20:43 +00:00
xl