linux/drivers/net/wireless
Luis R. Rodriguez f4709fdf68 ath9k: Fix maximum tx fifo settings for single stream devices
Atheros single stream AR9285 and AR9271 have half the PCU TX FIFO
buffer size of that of dual stream devices. Dual stream devices
have a max PCU TX FIFO size of 8 KB while single stream devices
have 4 KB. Single stream devices have an issue though and require
hardware only to use half of the amount of its capable PCU TX FIFO
size, 2 KB and this requires a change in software.

Technically a change would not have been required (except for frame
burst considerations of 128 bytes) if these devices would have been
able to use the full 4 KB of the PCU TX FIFO size but our systems
engineers recommend 2 KB to be used only. We enforce this through
software by reducing the max frame triggger level to 2 KB.

Fixing the max frame trigger level should then have a few benefits:

  * The PER will now be adjusted as designed for underruns when the
    max trigger level is reached. This should help alleviate the
    bus as the rate control algorithm chooses a slower rate which
    should ensure frames are transmitted properly under high system
    bus load.

  * The poll we use on our TX queues should now trigger and work
    as designed for single stream devices. The hardware passes
    data from each TX queue on the PCU TX FIFO queue respecting each
    queue's priority. The new trigger level ensures this seeding of
    the PCU TX FIFO queue occurs as designed which could mean avoiding
    false resets and actually reseting hw correctly when a TX queue
    is indeed stuck.

  * Some undocumented / unsupported behaviour could have been triggered
    when the max trigger level level was being set to 4 KB on single
    stream devices. Its not clear what this issue was to me yet.

Cc: Kyungwan Nam <kyungwan.nam@atheros.com>
Cc: Bennyam Malavazi <bennyam.malavazi@atheros.com>
Cc: Stephen Chen <stephen.chen@atheros.com>
Cc: Shan Palanisamy <shan.palanisamy@atheros.com>
Cc: Paul Shaw <paul.shaw@atheros.com>
Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com>
Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-11-28 15:04:52 -05:00
..
ath ath9k: Fix maximum tx fifo settings for single stream devices 2009-11-28 15:04:52 -05:00
b43 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2009-11-24 15:01:29 -08:00
b43legacy Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-18 22:19:03 -08:00
hostap Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-18 22:19:03 -08:00
ipw2x00 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2009-11-24 15:01:29 -08:00
iwlwifi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2009-11-24 15:01:29 -08:00
iwmc3200wifi iwmc3200wifi: Remove tx concatenation option 2009-11-28 15:04:46 -05:00
libertas Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-18 22:19:03 -08:00
libertas_tf libertas_tf_usb: declare MODULE_FIRMWARE 2009-11-11 15:23:53 -05:00
orinoco orinoco: declare MODULE_FIRMWARE 2009-11-11 15:23:53 -05:00
p54 cfg80211: convert bools into flags 2009-11-19 11:08:50 -05:00
prism54 drivers/net: request_irq - Remove unnecessary leading & from second arg 2009-11-18 23:29:17 -08:00
rt2x00 rt2x00: Centralize setting of extra TX headroom requested by rt2x00. 2009-11-28 15:04:38 -05:00
rtl818x drivers/net/wireless/rtl818x: remove exceptional & on function name 2009-11-18 10:48:57 -08:00
wl12xx wl1271: Remove REF_CLK hack 2009-11-28 15:04:32 -05:00
zd1211rw zd1211rw: declare MODULE_FIRMWARE 2009-11-11 15:23:55 -05:00
adm8211.c drivers/net/adm8211.c: remove exceptional & on function name 2009-11-18 10:48:52 -08:00
adm8211.h
airo_cs.c
airo.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-10-29 21:28:59 -07:00
airo.h
at76c50x-usb.c at76c50x-usb: Supply additional parameters to at76_start_monitor scan request 2009-11-11 17:09:17 -05:00
at76c50x-usb.h
atmel_cs.c
atmel_pci.c
atmel.c atmel: declare MODULE_FIRMWARE 2009-11-11 15:23:49 -05:00
atmel.h
Kconfig wireless: airo_cs needs WEXT_SPY 2009-10-30 16:50:38 -04:00
mac80211_hwsim.c cfg80211: convert bools into flags 2009-11-19 11:08:50 -05:00
Makefile netwave: move driver to staging 2009-10-30 16:50:34 -04:00
mwl8k.c drivers/net: request_irq - Remove unnecessary leading & from second arg 2009-11-18 23:29:17 -08:00
ray_cs.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-11-18 22:19:03 -08:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: disable stall workaround 2009-11-23 17:05:40 -05:00
wl3501_cs.c wl3501_cs: remove pedantic build warning 2009-11-18 17:09:25 -05:00
wl3501.h
zd1201.c zd1201: declare MODULE_FIRMWARE 2009-11-11 15:23:54 -05:00
zd1201.h