summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorshiba <shiba@FreeBSD.org>2003-03-05 13:17:15 +0000
committershiba <shiba@FreeBSD.org>2003-03-05 13:17:15 +0000
commit6b05eb1b3fa3232801d8c9240f4659b08fadeb18 (patch)
tree5a53c3e1bcc5d29da75e89f0be5d99b645dd1b03 /sys
parent951f32de97c9f4fd35f87be8a393f8b752a5a7d6 (diff)
downloadFreeBSD-src-6b05eb1b3fa3232801d8c9240f4659b08fadeb18.zip
FreeBSD-src-6b05eb1b3fa3232801d8c9240f4659b08fadeb18.tar.gz
Fixed an issue which transfer no packets in combination with aue driver.
Submitted by Hiroyuki Aizu <eyes@navi.org> (refer to [FreeBSD-users-jp 65061]) Tested by Hiroharu Tamaru <tamaru@myn.rcast.u-tokyo.ac.jp> (refer to [bsd-usb:689])
Diffstat (limited to 'sys')
-rw-r--r--sys/dev/usb/ohci.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c
index 5a5ae49..cb44d42 100644
--- a/sys/dev/usb/ohci.c
+++ b/sys/dev/usb/ohci.c
@@ -579,6 +579,10 @@ ohci_alloc_std_chain(struct ohci_pipe *opipe, ohci_softc_t *sc,
if ((flags & USBD_FORCE_SHORT_XFER) &&
alen % UGETW(opipe->pipe.endpoint->edesc->wMaxPacketSize) == 0) {
/* Force a 0 length transfer at the end. */
+
+ cur->td.td_flags = htole32(tdflags | OHCI_TD_NOINTR);
+ cur = next;
+
next = ohci_alloc_std(sc);
if (next == NULL)
goto nomem;
@@ -587,11 +591,10 @@ ohci_alloc_std_chain(struct ohci_pipe *opipe, ohci_softc_t *sc,
cur->td.td_cbp = 0; /* indicate 0 length packet */
cur->nexttd = next;
cur->td.td_nexttd = htole32(next->physaddr);
- cur->td.td_be = htole32(dataphys - 1);
+ cur->td.td_be = ~0;
cur->len = 0;
cur->flags = 0;
cur->xfer = xfer;
- cur = next;
DPRINTFN(2,("ohci_alloc_std_chain: add 0 xfer\n"));
}
cur->flags = OHCI_CALL_DONE | OHCI_ADD_LEN;
OpenPOWER on IntegriCloud