diff options
| author | riastradh <riastradh@NetBSD.org> | 2022-01-29 21:36:12 +0000 |
|---|---|---|
| committer | riastradh <riastradh@NetBSD.org> | 2022-01-29 21:36:12 +0000 |
| commit | 23b36bdb27d23b4d7b96ba7cd68620aefbe3002c (patch) | |
| tree | 4955baf94c371d13ef2bd116fbed20ff8d20c0b8 /sys/dev/microcode/ral | |
| parent | d44205014dec3d5da92c2032ef232cac3f17e1d6 (diff) | |
xhci(4): Fix handling of endpoint reset/stop.
Use the same asynchronous task resetting a stalled/halted endpoint
and stopping a running endpoint -- either way we need to put the
endpoint back into a known state and, if there are transfers waiting
to run, start them up again.
- xhci_abortx must not drop the pipe (bus) lock -- usbdi(9) requires
this. So arrange to stop the endpoint and empty the queue
asynchronously.
- If the xhci softint claims an xfer for completion with
usbd_xfer_trycomplete, it must call usb_transfer_complete without
ever releasing the pipe (bus) lock -- it can't claim the xfer and
then defer the usb_transfer_complete to a task. So arrange to
reset the endpoint asynchronously, hold up new transfers until the
endpoint has been reset, and then do usb_transfer_complete
immediately.
Diffstat (limited to 'sys/dev/microcode/ral')
0 files changed, 0 insertions, 0 deletions
