linux/drivers/net/wireless/rt2x00
Stanislaw Gruszka efd821182c rt2x00usb: fix indexes ordering on RX queue kick
On rt2x00_dmastart() we increase index specified by Q_INDEX and on
rt2x00_dmadone() we increase index specified by Q_INDEX_DONE. So entries
between Q_INDEX_DONE and Q_INDEX are those we currently process in the
hardware. Entries between Q_INDEX and Q_INDEX_DONE are those we can
submit to the hardware.

According to that fix rt2x00usb_kick_queue(), as we need to submit RX
entries that are not processed by the hardware. It worked before only
for empty queue, otherwise was broken.

Note that for TX queues indexes ordering are ok. We need to kick entries
that have filled skb, but was not submitted to the hardware, i.e.
started from Q_INDEX_DONE and have ENTRY_DATA_PENDING bit set.

From practical standpoint this fixes RX queue stall, usually reproducible
in AP mode, like for example reported here:
https://bugzilla.redhat.com/show_bug.cgi?id=828824

Reported-and-tested-by: Franco Miceli <fmiceli@plan.ceibal.edu.uy>
Reported-and-tested-by: Tom Horsley <horsley1953@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-07-09 15:01:02 -04:00
..
Kconfig
Makefile
rt2x00.h rt2x00: use atomic variable for seqno 2012-06-04 15:26:26 -04:00
rt2x00config.c rt2x00: configure different txdesc parameters for non HT channel 2012-04-11 16:23:44 -04:00
rt2x00crypto.c
rt2x00debug.c rt2x00: Add debugfs access for rfcsr register 2012-05-08 21:53:46 -04:00
rt2x00debug.h rt2x00: Add debugfs access for rfcsr register 2012-05-08 21:53:46 -04:00
rt2x00dev.c rt2x00: Use GFP_KERNEL for rx buffer allocation on USB devices 2012-04-23 15:35:29 -04:00
rt2x00dump.h
rt2x00firmware.c
rt2x00leds.c rt2x00: increase led's name buffer length 2012-04-09 16:09:34 -04:00
rt2x00leds.h
rt2x00lib.h rt2x00: Use GFP_KERNEL for rx buffer allocation on USB devices 2012-04-23 15:35:29 -04:00
rt2x00link.c
rt2x00mac.c rt2x00: use atomic variable for seqno 2012-06-04 15:26:26 -04:00
rt2x00pci.c rt2x00: Use GFP_KERNEL for rx buffer allocation on USB devices 2012-04-23 15:35:29 -04:00
rt2x00pci.h
rt2x00queue.c rt2x00: use atomic variable for seqno 2012-06-04 15:26:26 -04:00
rt2x00queue.h rt2x00: rt2800usb: rework txstatus code 2012-03-15 13:40:31 -04:00
rt2x00reg.h
rt2x00soc.c
rt2x00soc.h
rt2x00usb.c rt2x00usb: fix indexes ordering on RX queue kick 2012-07-09 15:01:02 -04:00
rt2x00usb.h
rt61pci.c net/wireless: use module_pci_driver 2012-04-16 14:38:50 -04:00
rt61pci.h
rt73usb.c USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
rt73usb.h
rt2400pci.c net/wireless: use module_pci_driver 2012-04-16 14:38:50 -04:00
rt2400pci.h
rt2500pci.c net/wireless: use module_pci_driver 2012-04-16 14:38:50 -04:00
rt2500pci.h
rt2500usb.c USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
rt2500usb.h
rt2800.h rt2x00: Add debugfs access for rfcsr register 2012-05-08 21:53:46 -04:00
rt2800lib.c rt2x00: Add debugfs access for rfcsr register 2012-05-08 21:53:46 -04:00
rt2800lib.h rt2800: introduce wpdma_disable function 2012-04-13 14:32:47 -04:00
rt2800pci.c rt2x00:Add RT539b chipset support 2012-05-16 12:46:37 -04:00
rt2800pci.h
rt2800usb.c USB 3.5-rc1 pull request 2012-05-22 15:50:46 -07:00
rt2800usb.h