OpenCloudOS-Kernel/drivers/net/wireless/ath
Bruno Randolf 234132960d ath5k: Keep last descriptor in queue
If we return a TX descriptor to the pool of available descriptors, while a
queues TXDP still points to it we could potentially run into all sorts of
troube.

It has been suggested that there is hardware which can set the descriptors
done bit before it reads ds_link and moves on to the next descriptor. While the
documentation says this is not true for newer chipsets (the descriptor contents
are copied to some internal memory), we don't know about older hardware.

To be safe, we always keep the last descriptor in the queue, and avoid dangling
TXDP pointers. Unfortunately this does not fully resolve the problem - queues
still get stuck!

This is similar to what ath9k does.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-09-21 11:05:15 -04:00
..
ar9170 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-08-24 16:35:40 -04:00
ath5k ath5k: Keep last descriptor in queue 2010-09-21 11:05:15 -04:00
ath9k ath/ath5k/ath9k: Fix crypto capabilities merge issue 2010-09-21 11:05:05 -04:00
carl9170 carl9170: update AR9170 phy initvals 2010-09-21 11:05:04 -04:00
Kconfig carl9170: Makefile, Kconfig files and MAINTAINERS 2010-09-14 16:03:42 -04:00
Makefile ath: Copy key cache management functions from ath9k to ath 2010-09-16 15:19:45 -04:00
ath.h ath/ath5k/ath9k: Fix crypto capabilities merge issue 2010-09-21 11:05:05 -04:00
debug.c atheros: add common debug printing 2009-10-07 16:39:29 -04:00
debug.h ath9k: add a separate debug level for stuck beacons 2010-08-16 15:26:38 -04:00
hw.c Net: wireless: ath: fix macros coding style issue in hw.c 2010-04-06 16:51:04 -04:00
key.c ath/ath9k: Replace common->splitmic with a flag 2010-09-16 15:19:45 -04:00
main.c ath: add common ath_rxbuf_alloc() and make ath9k use it 2009-08-14 09:14:05 -04:00
reg.h ath: Copy key cache management functions from ath9k to ath 2010-09-16 15:19:45 -04:00
regd.c drivers/net: Remove unnecessary returns from void function()s 2010-05-14 00:19:28 -07:00
regd.h ath: Updates for regulatory and country codes. 2009-10-27 16:50:04 -04:00
regd_common.h ath: Updates for regulatory and country codes. 2009-10-27 16:50:04 -04:00