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 <ambrisko@ambrisko.com>
MFC after:	1 week
Sponsored by:	NVIDIA Networking
This commit is contained in:
Hans Petter Selasky 2022-08-27 08:50:51 +02:00
parent 7ed3228323
commit 4e2d8cd3e2

View file

@ -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;