summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/libertas/dev.h
diff options
context:
space:
mode:
authorDaniel Drake2011-10-03 12:33:02 +0200
committerJohn W. Linville2011-10-03 21:22:41 +0200
commit8f641d93c38ae93c67263d4e03f793092d471b12 (patch)
tree396a99a8dfa0d9fd56706b325ca10086cc0ff237 /drivers/net/wireless/libertas/dev.h
parentmac80211: pass vif param to conf_tx() callback (diff)
downloadkernel-qcow2-linux-8f641d93c38ae93c67263d4e03f793092d471b12.tar.gz
kernel-qcow2-linux-8f641d93c38ae93c67263d4e03f793092d471b12.tar.xz
kernel-qcow2-linux-8f641d93c38ae93c67263d4e03f793092d471b12.zip
libertas: detect TX lockups and reset hardware
Recent patches added support for resetting the SD8686 hardware when commands time out, which seems to happen quite frequently soon after resuming the system from a Wake-on-WLAN-triggered resume. At http://dev.laptop.org/ticket/10969 we see the same thing happen with transmits. In this case, the hardware will fail to respond to a frame passed for transmission, and libertas (correctly) will block all further commands and transmissions as the hardware can only deal with one thing at a time. This results in a lockup while the system waits indefinitely for the dead card to respond. Hook up a TX lockup timer to detect this and reset the hardware. Signed-off-by: Daniel Drake <dsd@laptop.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/dev.h')
-rw-r--r--drivers/net/wireless/libertas/dev.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
index fb3e40bf5902..f3fd447131c2 100644
--- a/drivers/net/wireless/libertas/dev.h
+++ b/drivers/net/wireless/libertas/dev.h
@@ -158,6 +158,7 @@ struct lbs_private {
/* protected by hard_start_xmit serialization */
u8 txretrycount;
struct sk_buff *currenttxskb;
+ struct timer_list tx_lockup_timer;
/* Locks */
struct mutex lock;