[usb] Include setup packet within I/O buffer for message transfers

The USB API currently assumes that host controllers will have
immediate data buffer space available in which to store the setup
packet.  This is true for xHCI, partially true for EHCI (which happens
to have 12 bytes of padding in each transfer descriptor due to
alignment requirements), and not true at all for UHCI.

Include the setup packet within the I/O buffer passed to the host
controller's message() method, thereby eliminating the requirement for
host controllers to provide immediate data buffers.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2015-05-01 16:28:45 +01:00
parent a25a16d4ad
commit 50e703a534
5 changed files with 41 additions and 49 deletions

View File

@@ -433,12 +433,10 @@ struct usb_endpoint_host_operations {
/** Enqueue message transfer
*
* @v ep USB endpoint
* @v packet Setup packet
* @v iobuf I/O buffer (if any)
* @v iobuf I/O buffer
* @ret rc Return status code
*/
int ( * message ) ( struct usb_endpoint *ep,
struct usb_setup_packet *setup,
struct io_buffer *iobuf );
/** Enqueue stream transfer
*