linux-uconsole/drivers/net/wireless
Stanislaw Gruszka 16f1a5d495 rt2x00usb: fix indexes ordering on RX queue kick
commit efd821182c upstream.

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>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2012-07-19 08:58:21 -07:00
..
ath ath9k: enable serialize_regmode for non-PCIE AR9287 2012-07-16 08:47:39 -07:00
b43 b43: refuse to load unsupported firmware 2011-11-21 14:31:22 -08:00
b43legacy Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-05-16 19:32:19 -04:00
hostap net: Audit drivers to identify those needing IFF_TX_SKB_SHARING cleared 2011-08-15 18:31:38 -07:00
ipw2x00 ipw2200: Fix race condition in the command completion acknowledge 2012-05-07 08:56:40 -07:00
iwlegacy iwl3945: fix possible il->txq NULL pointer dereference in delayed works 2012-03-23 11:20:52 -07:00
iwlwifi iwlwifi: don't mess up the SCD when removing a key 2012-06-17 11:23:12 -07:00
iwmc3200wifi Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem 2011-05-24 16:47:54 -04:00
libertas Net, libertas: Resolve memory leak in if_spi_host_to_card() 2011-11-26 09:09:54 -08:00
libertas_tf
mwifiex mwifiex: fix 11n rx packet drop issue 2012-07-16 08:47:49 -07:00
orinoco pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
p54 p54spi: Release GPIO lines and IRQ on error in p54spi_probe 2012-04-02 09:27:10 -07:00
prism54
rt2x00 rt2x00usb: fix indexes ordering on RX queue kick 2012-07-19 08:58:21 -07:00
rtl818x rtl8187: ->brightness_set can not sleep 2012-07-16 08:47:51 -07:00
rtlwifi rtlwifi: Fix oops on unload 2012-05-07 08:56:48 -07:00
wl12xx wl12xx: Check buffer bound when processing nvs data 2012-01-12 11:35:02 -08:00
wl1251 wl1251: fix oops on early interrupt 2012-06-10 00:33:05 +09:00
zd1211rw zd1211rw: fix to work on OHCI 2011-05-31 14:47:26 -04:00
adm8211.c
adm8211.h
airo.c net: Audit drivers to identify those needing IFF_TX_SKB_SHARING cleared 2011-08-15 18:31:38 -07:00
airo.h
airo_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
at76c50x-usb.c
at76c50x-usb.h
atmel.c
atmel.h
atmel_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
atmel_pci.c
Kconfig
mac80211_hwsim.c net: call dev_alloc_name from register_netdevice 2011-05-05 10:57:45 -07:00
Makefile
mwl8k.c mwl8k: Tell firmware to generate CCMP header 2011-06-15 08:13:03 -04:00
ray_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
ray_cs.h
rayctl.h
rndis_wlan.c cfg80211: Use consistent BSS matching between scan and sme 2011-05-19 10:37:18 -04:00
wl3501.h
wl3501_cs.c pcmcia: Convert pcmcia_device_id declarations to const 2011-05-06 07:46:22 +02:00
zd1201.c
zd1201.h