From 1fdc26ec96d7bb1b356775f2c1ae10956f2bcd6f Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 31 Dec 2014 01:40:07 -0500 Subject: uhci: Enable "depth" tree traversal for bulk transfers Set the "depth" flag on bulk transactions. Since SeaBIOS doesn't use bandwidth reclamation, without the depth flag the uhci controller will only transfer one bulk packet per 1 ms frame. This results in a maximum of 64 bytes per millisecond, which severely limits the transfer rate. Signed-off-by: Kevin O'Connor --- src/hw/usb-uhci.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hw/usb-uhci.c b/src/hw/usb-uhci.c index 6dcc340..7ef50d1 100644 --- a/src/hw/usb-uhci.c +++ b/src/hw/usb-uhci.c @@ -537,9 +537,9 @@ uhci_send_bulk(struct usb_pipe *p, int dir, void *data, int datasize) int transfer = datasize; if (transfer > maxpacket) transfer = maxpacket; - struct uhci_td *nexttd_fl = MAKE_FLATPTR(GET_SEG(SS) - , &tds[tdpos % STACKTDS]); - td->link = (transfer==datasize ? UHCI_PTR_TERM : (u32)nexttd_fl); + u32 nexttd = (u32)MAKE_FLATPTR(GET_SEG(SS), &tds[tdpos % STACKTDS]); + td->link = (transfer==datasize + ? UHCI_PTR_TERM : (nexttd | UHCI_PTR_DEPTH)); td->token = (uhci_explen(transfer) | toggle | (devaddr << TD_TOKEN_DEVADDR_SHIFT) | (dir ? USB_PID_IN : USB_PID_OUT)); -- cgit v1.1