From f6e333276b332ae9da75bcceb1f03ca22778a582 Mon Sep 17 00:00:00 2001 From: Takeshi Shibagaki Date: Wed, 5 Mar 2003 13:17:15 +0000 Subject: [PATCH] Fixed an issue which transfer no packets in combination with aue driver. Submitted by Hiroyuki Aizu (refer to [FreeBSD-users-jp 65061]) Tested by Hiroharu Tamaru (refer to [bsd-usb:689]) --- sys/dev/usb/ohci.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c index 5a5ae49515fa..cb44d4235599 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;