libertas: detect TX lockups and reset hardware
authorDaniel Drake <dsd@laptop.org>
Mon, 3 Oct 2011 10:33:02 +0000 (11:33 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 3 Oct 2011 19:22:41 +0000 (15:22 -0400)
commit8f641d93c38ae93c67263d4e03f793092d471b12
tree396a99a8dfa0d9fd56706b325ca10086cc0ff237
parent8a3a3c85e44d58f5af0adac74a0b866ba89a1978
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>
drivers/net/wireless/libertas/dev.h
drivers/net/wireless/libertas/main.c