linux/drivers/net/wireless/rt2x00
Stanislaw Gruszka dfd00c4c8f rt2800pci: fix spurious interrupts generation
Same devices can generate interrupt without properly setting bit in
INT_SOURCE_CSR register (spurious interrupt), what will cause IRQ line
will be disabled by interrupts controller driver.

We discovered that clearing INT_MASK_CSR stops such behaviour. We
previously first read that register, and then clear all know interrupt
sources bits and do not touch reserved bits. After this patch, we write
to all register content (I believe writing to reserved bits on that
register will not cause any problems, I tested that on my rt2800pci
device).

This fix very bad performance problem, practically making device
unusable (since worked without interrupts), reported in:
https://bugzilla.redhat.com/show_bug.cgi?id=658451

We previously tried to workaround that issue in commit
4ba7d99978 "rt2800pci: handle spurious
interrupts", but it was reverted in commit
82e5fc2a34
as thing, that will prevent to detect real spurious interrupts.

Reported-and-tested-by: Amir Hedayaty <hedayaty@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-01-13 14:40:57 -05:00
..
Kconfig
Makefile
rt2x00.h rt2x00: RT3593 is also applicable to USB. 2012-01-04 14:31:46 -05:00
rt2x00config.c
rt2x00crypto.c rt2x00: Don't use queue entry as parameter when creating TX descriptor. 2011-07-07 13:20:58 -04:00
rt2x00debug.c
rt2x00debug.h
rt2x00dev.c rt2x00: Use kcalloc instead of kzalloc to allocate array 2011-12-06 16:02:51 -05:00
rt2x00dump.h
rt2x00firmware.c
rt2x00leds.c
rt2x00leds.h
rt2x00lib.h rt2x00: Fix compilation without CONFIG_RT2X00_LIB_CRYPTO 2011-08-02 13:48:14 -04:00
rt2x00link.c
rt2x00mac.c rt2x00: Make use of ieee80211_free_txskb in tx path 2011-12-14 14:50:11 -05:00
rt2x00pci.c
rt2x00pci.h
rt2x00queue.c rt2x00: Add WCID to HT TX descriptor 2011-09-14 13:56:56 -04:00
rt2x00queue.h rt2x00: Add WCID to HT TX descriptor 2011-09-14 13:56:56 -04:00
rt2x00reg.h
rt2x00soc.c
rt2x00soc.h
rt2x00usb.c rt2x00usb: Zero USB padding before sending URB 2012-01-04 14:31:46 -05:00
rt2x00usb.h
rt61pci.c module_param: make bool parameters really bool (net & drivers/net) 2011-12-19 22:27:29 -05:00
rt61pci.h
rt73usb.c Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
rt73usb.h
rt2400pci.c Revert "rt2x00: handle spurious pci interrupts" 2011-11-22 16:36:35 -05:00
rt2400pci.h
rt2500pci.c Revert "rt2x00: handle spurious pci interrupts" 2011-11-22 16:36:35 -05:00
rt2500pci.h
rt2500usb.c Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
rt2500usb.h
rt2800.h rt2x00: Change RF3853 to RF3053. 2012-01-04 14:31:46 -05:00
rt2800lib.c rt2x00: Convert big if-statements to switch-statements. 2012-01-04 14:31:45 -05:00
rt2800lib.h mac80211: pass vif param to conf_tx() callback 2011-10-03 15:22:41 -04:00
rt2800pci.c rt2800pci: fix spurious interrupts generation 2012-01-13 14:40:57 -05:00
rt2800pci.h
rt2800usb.c Merge branch 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core 2012-01-07 12:03:30 -08:00
rt2800usb.h