diff options
| author | Michael Brown | 2015-03-23 16:05:28 +0100 |
|---|---|---|
| committer | Michael Brown | 2015-03-23 16:21:35 +0100 |
| commit | de6f4e3ede895b45325c5d062d25a94d1dd37e2e (patch) | |
| tree | 220b52023811b1c21c8c59855027e2f43a200a6f /src/include/sys | |
| parent | [xhci] Ring doorbell as part of endpoint reset (diff) | |
| download | ipxe-de6f4e3ede895b45325c5d062d25a94d1dd37e2e.tar.gz ipxe-de6f4e3ede895b45325c5d062d25a94d1dd37e2e.tar.xz ipxe-de6f4e3ede895b45325c5d062d25a94d1dd37e2e.zip | |
[usb] Reset endpoints without waiting for a new transfer to be enqueued
The current endpoint reset logic defers the reset until the caller
attempts to enqueue a new transfer to that endpoint. This is
insufficient when dealing with endpoints behind a transaction
translator, since the transaction translator is a resource shared
between multiple endpoints.
We cannot reset the endpoint as part of the completion handling, since
that would introduce recursive calls to usb_poll(). Instead, we
add the endpoint to a list of halted endpoints, and perform the reset
on the next call to usb_step().
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/sys')
0 files changed, 0 insertions, 0 deletions
