mt7601u: process URBs in status EPROTO properly
authorZhi Han <z.han@gmx.net>
Thu, 17 Dec 2020 16:13:02 +0000 (17:13 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 14 Jan 2021 17:30:17 +0000 (19:30 +0200)
When the usb device being plugged out, before the usb_driver:disconnect
called by e.g workqueue, it is possible that some URBs are still in
processing, and being marked as EPROTO in host controller.

Those URBs should not be scheduled in complete_rx callback function to
get further processing.

Signed-off-by: Zhi Han <z.han@gmx.net>
Acked-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201217161302.GA12562@E480
drivers/net/wireless/mediatek/mt7601u/dma.c

index 5f99054f535b4d6ae3da175462136da2f4eb024b..98733c23d408b45717b5ae635f009bdeb9de3953 100644 (file)
@@ -192,6 +192,7 @@ static void mt7601u_complete_rx(struct urb *urb)
        case -ECONNRESET:
        case -ESHUTDOWN:
        case -ENOENT:
+       case -EPROTO:
                return;
        default:
                dev_err_ratelimited(dev->dev, "rx urb failed: %d\n",