zd1211rw: handle lost read-reg interrupts
authorJussi Kivilinna <jussi.kivilinna@mbnet.fi>
Mon, 20 Jun 2011 11:42:44 +0000 (14:42 +0300)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 22 Jun 2011 20:09:46 +0000 (16:09 -0400)
Device losses read-reg interrupts. By looking at usbmon it appears that
USB_INT_ID_RETRY_FAILED can override USB_INT_ID_REGS. This causes read
command to timeout, usually under heavy TX.

Fix by retrying read registers again if USB_INT_ID_RETRY_FAILED is received
while waiting for USB_INT_ID_REGS.

However USB_INT_ID_REGS is not always lost but is received after
USB_INT_ID_RETRY_FAILED and is usually received by the retried read
command. USB_INT_ID_REGS of the retry is then left unhandled and might
be received by next read command. Handle this by ignoring previous
USB_INT_ID_REGS that doesn't match current read command request.

Signed-off-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

No differences found