1
linux/drivers/net/wireless/ath/ath5k
Bruno Randolf b3f194e54b ath5k: clean up rxlink handling
There were a few places where the sc->rxlink pointer was set to NULL "just in
case". This helps nothing - quite to the contrary it is problematic since it
can create self-linked rx descriptors in the middle of the list of receive
buffers.

Here is an example how this could happen (thanks Bob!):

cpu 0:                                      cpu 1:

ath5k_rx_stop
                                            ath5k_tasklet_rx
sc->rxlink = NULL;   /* just in case */
                                              // following doesn't link used
                                              // buffer to prev.
                                              ath5k_rxbuf_setup()

In the case of ath5k_rx_stop() and ath5k_stop_locked() buffers/descriptors are
not changed so rxlink should not be changed as well.

In ath5k_intr() we seem to  try to work around a hardware bug, as the comment
(which is copied 1:1 from the HAL) suggests. I don't see how this could help.
Also the HAL does not set rxlink in this case (So where does this code come
from? It has been there since the first import of ath5k). Changed to just
increment a statistics counter.

After this patch rxlink is only set to NULL before we initialize rx descriptors
and updated when the descriptors are linked together.

Signed-off-by: Bruno Randolf <br1@einfach.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-07-14 13:52:46 -04:00
..
ani.c
ani.h
ath5k.h ath5k: use direct function calls for descriptors when possible 2010-06-16 14:59:03 -04:00
attach.c Merge branch 'wireless-2.6' into wireless-next-2.6 2010-06-25 14:47:02 -07:00
base.c ath5k: clean up rxlink handling 2010-07-14 13:52:46 -04:00
base.h ath5k: clean up rxlink handling 2010-07-14 13:52:46 -04:00
caps.c
debug.c ath5k: move reset to mac80211 workqueue 2010-07-14 13:52:46 -04:00
debug.h ath5k: add debugfs file for queue debugging 2010-06-08 09:31:21 -04:00
desc.c ath5k: report PHY error frames only for chips which need it 2010-06-16 14:59:07 -04:00
desc.h ath5k: take descriptor differences between 5210 and 5211 into account 2010-06-16 14:59:06 -04:00
dma.c
eeprom.c
eeprom.h
gpio.c
initvals.c
Kconfig
led.c
Makefile
pcu.c
phy.c ath5k: fix antenna div gc for <= AR5K_SREV_PHY_2413 2010-06-28 15:16:19 -04:00
qcu.c
reg.h
reset.c ath5k: no need to save/restore the default antenna 2010-06-08 09:31:21 -04:00
rfbuffer.h
rfgain.h
rfkill.c
sysfs.c