diff options
| author | augustss <augustss@NetBSD.org> | 1999-12-01 00:42:05 +0000 |
|---|---|---|
| committer | augustss <augustss@NetBSD.org> | 1999-12-01 00:42:05 +0000 |
| commit | b15fcce56ce09ea96cee3ee105237bb0dd04ae99 (patch) | |
| tree | 8424818def9c740894f6e8b111b4dd3f1248afd1 /sys/dev/usb | |
| parent | 66a51bd133d8993f3738c2e83c1965b45f3fa9f5 (diff) | |
Use vertical nscheduling for bulk traffic. It improves bulk thruput a lot.
From FreeBSD and Nick Hibma.
Diffstat (limited to 'sys/dev/usb')
| -rw-r--r-- | sys/dev/usb/uhci.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sys/dev/usb/uhci.c b/sys/dev/usb/uhci.c index 93c01bd9f54..eb962383377 100644 --- a/sys/dev/usb/uhci.c +++ b/sys/dev/usb/uhci.c @@ -1,4 +1,4 @@ -/* $NetBSD: uhci.c,v 1.68 1999/11/23 20:36:10 augustss Exp $ */ +/* $NetBSD: uhci.c,v 1.69 1999/12/01 00:42:05 augustss Exp $ */ /* $FreeBSD: src/sys/dev/usb/uhci.c,v 1.33 1999/11/17 22:33:41 n_hibma Exp $ */ /* @@ -1401,7 +1401,10 @@ uhci_alloc_std_chain(upipe, sc, len, rd, shortok, dma, sp, ep) return (USBD_NOMEM); } p->link.std = lastp; - p->td.td_link = LE(lastlink); + if (lastlink == UHCI_PTR_T) + p->td.td_link = LE(lastlink); + else + p->td.td_link = LE(lastlink|UHCI_PTR_VF); lastp = p; lastlink = p->physaddr; p->td.td_status = LE(status); @@ -1846,7 +1849,7 @@ uhci_device_request(xfer) return (err); next = data; dataend->link.std = stat; - dataend->td.td_link = LE(stat->physaddr); + dataend->td.td_link = LE(stat->physaddr | UHCI_PTR_VF); } else { next = stat; } @@ -1855,7 +1858,7 @@ uhci_device_request(xfer) memcpy(KERNADDR(&upipe->u.ctl.reqdma), req, sizeof *req); setup->link.std = next; - setup->td.td_link = LE(next->physaddr); + setup->td.td_link = LE(next->physaddr | UHCI_PTR_VF); setup->td.td_status = LE(UHCI_TD_SET_ERRCNT(3) | ls | UHCI_TD_ACTIVE); setup->td.td_token = LE(UHCI_TD_SETUP(sizeof *req, endpt, addr)); setup->td.td_buffer = LE(DMAADDR(&upipe->u.ctl.reqdma)); |
