From 4e2d8cd3e29bc885567f61ff358f8c9459d621ce Mon Sep 17 00:00:00 2001 From: Hans Petter Selasky Date: Sat, 27 Aug 2022 08:50:51 +0200 Subject: [PATCH] usb(4): Quirk for non-compliant USB devices. Some non-compliant USB devices do not implement the clear endpoint halt feature. Silently ignore such failures, when they at least responded correctly passing up a valid STALL PID packet. Tested by: Doug Ambrisko MFC after: 1 week Sponsored by: NVIDIA Networking --- sys/dev/usb/usb_request.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/sys/dev/usb/usb_request.c b/sys/dev/usb/usb_request.c index a1781f3589a..c5b370ccd31 100644 --- a/sys/dev/usb/usb_request.c +++ b/sys/dev/usb/usb_request.c @@ -313,6 +313,16 @@ tr_setup: */ if (usb_no_cs_fail) goto tr_transferred; + + /* + * Some non-compliant USB devices do not implement the + * clear endpoint halt feature. Silently ignore such + * devices, when they at least respond correctly + * passing up a valid STALL PID packet. + */ + if (error == USB_ERR_STALLED) + goto tr_transferred; + if (udev->clear_stall_errors == USB_CS_RESET_LIMIT) goto tr_setup;