[media] mceusb: RX -EPIPE (urb status = -32) lockup failure fix
authorA Sun <as1033x@comcast.net>
Sun, 26 Mar 2017 18:28:08 +0000 (15:28 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Jun 2017 11:56:33 +0000 (08:56 -0300)
commita06854a600f6ccb72f097d86a44688949b867906
tree96ccbc8fe5877f7da972f7acf9b570b6c00ebf27
parent2aa1bd1c1ca82f57f3e6967d34c8c985dcc22f48
[media] mceusb: RX -EPIPE (urb status = -32) lockup failure fix

RX -EPIPE failure with infinite loop and flooding of
[ 2851.966506] mceusb 1-1.2:1.0: Error: urb status = -32
log message at 8000 messages per second.
Bug trigger appears to be normal, but heavy, IR receiver use.
Driver and Linux host become unusable after error.
Also seen at https://sourceforge.net/p/lirc/mailman/message/34886165/

Fix:

Message reports RX usb halt (stall) condition requiring usb_clear_halt()
call in non-interrupt context to recover. Add driver workqueue call to
perform this recovery based on method in use for the usbnet device driver.

Signed-off-by: A Sun <as1033x@comcast.net>
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/rc/mceusb.c