linux/drivers/net/wireless
Michael Buesch 3e3ccb3d9b b43: Mask PHY TX error interrupt, if not debugging
This masks the PHY TX error interrupt, if debugging is disabled.

Currently we have a bug somewhere which triggers this interrupt once
in a while. (Depends on the network noise/quality). While this is nonfatal,
it scares the hell out of users and we frequently receive bugreports
that incorrectly identify this error message as the reason.

There's another problem with this. The PHY TX error interrupt is protected
with a watchdog that will restart the device if it keeps triggering very often.
This is used to fix interrupt storms from completely broken devices.

However, this watchdog might trigger in completely normal operation.
If the TX capacity of the card is saturated, the likeliness of the watchdog
triggering increases, as more TX errors occur. The current threshold
for the watchdog is 1000 errors in 15 seconds.

This patch adds a workaround for the issue by just enabling the interrupt
if debugging is disabled (by Kconfig or by modparam).

This has the downside that real fatal PHY TX errors are not caught anymore.
But this is nonfatal due to the following reasons:
* If the card is not able to transmit anymore, MLME will notice anyway.
* I did _never_ see a real fatal PHY TX error in a mainline b43 driver.
* It does _not_ result in interrupt storms or something like that.
  It will simply result in a stalled card. It can be debugged by enabling
  the debugging module parameter.

Signed-off-by: Michael Buesch <mb@bu3sch>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2009-03-27 20:13:03 -04:00
..
ath5k ath5k: Add tx power calibration support 2009-03-27 20:12:56 -04:00
ath9k ath9k: Fix rate control update for aggregated frames 2009-03-27 20:13:01 -04:00
b43 b43: Mask PHY TX error interrupt, if not debugging 2009-03-27 20:13:03 -04:00
b43legacy b43legacy: fix led naming 2009-02-09 15:03:47 -05:00
hostap hostap: convert to net_device_ops 2009-03-21 22:55:36 -07:00
ipw2x00 ipw2200: convert to net_device_ops 2009-03-21 22:55:32 -07:00
iwlwifi iwl3945: replace stations with stations_39 2009-03-27 20:13:00 -04:00
libertas wireless: radiotap updates 2009-03-27 20:12:52 -04:00
libertas_tf mac80211: constify ieee80211_if_conf.bssid 2009-01-29 16:01:07 -05:00
orinoco orinoco: firmware: consistently compile out fw cache support if not requested 2009-03-16 18:09:26 -04:00
p54 wireless/p54: P54_SPI should depend on GENERIC_HARDIRQS 2009-03-27 20:13:02 -04:00
prism54 prism54: convert to internal net_device_stats 2009-03-21 22:51:23 -07:00
rt2x00 Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-10 05:04:16 -07:00
rtl818x Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-02-25 00:02:05 -08:00
zd1211rw Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-03-17 15:01:30 -07:00
adm8211.c
adm8211.h
airo_cs.c airo_cs: checkpatch.pl cleanups 2009-03-16 18:09:35 -04:00
airo.c airo: convert to net_device_ops 2009-03-21 22:43:59 -07:00
airo.h
arlan-main.c wireless: convert arlan to net_device_ops 2009-03-27 00:46:45 -07:00
arlan-proc.c
arlan.h
at76c50x-usb.c at76c50x-usb: use dev_name() instead of struct device.bus_id 2009-02-27 14:53:05 -05:00
at76c50x-usb.h at76c50x-usb: add driver 2009-02-27 14:52:44 -05:00
atmel_cs.c
atmel_pci.c
atmel.c atmel: convert to net_device_ops 2009-03-21 22:44:01 -07:00
atmel.h
i82586.h
i82593.h
Kconfig mwl8k: Marvell TOPDOG wireless driver 2009-03-16 18:09:43 -04:00
mac80211_hwsim.c mac80211_hwsim: convert to net_device_ops 2009-03-21 22:51:21 -07:00
Makefile mwl8k: Marvell TOPDOG wireless driver 2009-03-16 18:09:43 -04:00
mwl8k.c mwl8k: Marvell TOPDOG wireless driver 2009-03-16 18:09:43 -04:00
netwave_cs.c netwave: convert to net_device_ops 2009-03-21 22:43:57 -07:00
ray_cs.c raylan: convert to net_device_ops 2009-03-21 22:51:19 -07:00
ray_cs.h
rayctl.h
rndis_wlan.c rndis_wlan: Fix build with netdev_ops compat disabled. 2009-03-25 00:03:16 -07:00
strip.c strip: convert to net_device_ops 2009-03-21 22:43:57 -07:00
wavelan_cs.c wavelan: convert to net_device_ops 2009-03-21 22:43:59 -07:00
wavelan_cs.h
wavelan_cs.p.h wavelan: convert to internal net_device_stats 2009-03-21 22:43:58 -07:00
wavelan.c wireless: convert wavelan to net_device_ops 2009-03-27 00:46:46 -07:00
wavelan.h
wavelan.p.h wireless: convert wavelan to net_device_ops 2009-03-27 00:46:46 -07:00
wl3501_cs.c wl3501: convert to net_device_ops 2009-03-21 22:51:20 -07:00
wl3501.h wl3501: convert to internal net_device_stats 2009-03-21 22:51:19 -07:00
zd1201.c zd1201: convert to net_device_ops 2009-03-21 22:51:21 -07:00
zd1201.h zd1201: convert to internal net_device_stats 2009-03-21 22:51:20 -07:00