]> git.ipfire.org Git - thirdparty/ipxe.git/commit
[efi] Report any USB errors as EFI_USB_ERR_SYSTEM
authorMichael Brown <mcb30@ipxe.org>
Tue, 29 Sep 2020 13:32:57 +0000 (14:32 +0100)
committerMichael Brown <mcb30@ipxe.org>
Tue, 29 Sep 2020 13:32:57 +0000 (14:32 +0100)
commit627b0ba2a0ee6be1ebe863c54a6c3154d6c40e2e
tree5abff5caa5f54439c475a55e47160d255213f6f1
parentfbb776f2f2d6e7f510a985af55ee34eb963ba9a2
[efi] Report any USB errors as EFI_USB_ERR_SYSTEM

Some UEFI USB drivers (e.g. the UsbKbDxe driver in EDK2) will react to
a reported EFI_USB_ERR_STALL by attempting to clear the endpoint halt.
This is redundant with iPXE's EFI_USB_IO_PROTOCOL implementation,
since endpoint stalls are cleared automatically by the USB core as
needed.

The UEFI USB driver's attempt to clear the endpoint halt can introduce
an unwanted 5 second delay per endpoint if the USB error was the
result of a device being physically removed, since the control
transfer will always time out.

Fix by reporting all USB errors as EFI_USB_ERR_SYSTEM instead of
EFI_USB_ERR_STALL.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/interface/efi/efi_usb.c