diff options
author | Michael Brown | 2015-02-10 14:45:57 +0100 |
---|---|---|
committer | Michael Brown | 2015-02-10 14:49:27 +0100 |
commit | 58c3e7f74771dd4748983cc47ed53241ac1864f1 (patch) | |
tree | e5baedb5b58a1abadf5ea3811fa66e87d14d40d7 /src/drivers/usb/usbhub.c | |
parent | [usb] Parse endpoint descriptor bInterval field (diff) | |
download | ipxe-58c3e7f74771dd4748983cc47ed53241ac1864f1.tar.gz ipxe-58c3e7f74771dd4748983cc47ed53241ac1864f1.tar.xz ipxe-58c3e7f74771dd4748983cc47ed53241ac1864f1.zip |
[usb] Allow usb_stream() to enforce a terminating short packet
Some USB endpoints require that a short packet be used to terminate
transfers, since they have no other way to determine message
boundaries. If the message length happens to be an exact multiple of
the USB packet size, then this requires the use of an additional
zero-length packet.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/drivers/usb/usbhub.c')
-rw-r--r-- | src/drivers/usb/usbhub.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/drivers/usb/usbhub.c b/src/drivers/usb/usbhub.c index ecac460a..9c88531b 100644 --- a/src/drivers/usb/usbhub.c +++ b/src/drivers/usb/usbhub.c @@ -52,7 +52,7 @@ static void hub_refill ( struct usb_hub_device *hubdev ) { iob_put ( iobuf, ( mtu - iob_len ( iobuf ) ) ); /* Enqueue I/O buffer */ - if ( ( rc = usb_stream ( &hubdev->intr, iobuf ) ) != 0 ) { + if ( ( rc = usb_stream ( &hubdev->intr, iobuf, 0 ) ) != 0 ) { DBGC ( hubdev, "HUB %s could not enqueue interrupt: " "%s\n", hubdev->name, strerror ( rc ) ); /* Leave in available list and wait for next refill */ |