diff options
author | le <le@FreeBSD.org> | 2004-06-26 09:19:31 +0000 |
---|---|---|
committer | le <le@FreeBSD.org> | 2004-06-26 09:19:31 +0000 |
commit | 21a36330b410b4bc4b67ebb64182227996dfb557 (patch) | |
tree | 72abb4f5b1dff08d5f75bbde7b8e433705edf0d9 /sys | |
parent | 2e35fb1a4c7a968ba62b71e2e36f78abbf9f3ecc (diff) | |
download | FreeBSD-src-21a36330b410b4bc4b67ebb64182227996dfb557.zip FreeBSD-src-21a36330b410b4bc4b67ebb64182227996dfb557.tar.gz |
MFNetBSD.
ohci.c (1.147), author: mycroft
Failure to properly mask off UE_DIR_IN from the endpoint address
was causing OHCI_ED_FORMAT_ISO and EHCI_QH_HRECL to get set
spuriously, causing rather interesting lossage.
Suddenly I get MUCH better performance with ehci...
ohci.c (1.148), author: mycroft
Adjust a couple of comments to make it clear WTF is going on.
Obtained from: NetBSD
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/usb/ohci.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/usb/ohci.c b/sys/dev/usb/ohci.c index bf0e33f..a8dfe3f 100644 --- a/sys/dev/usb/ohci.c +++ b/sys/dev/usb/ohci.c @@ -8,6 +8,8 @@ * $NetBSD: ohci.c,v 1.144 2003/11/23 19:18:06 augustss Exp $ * $NetBSD: ohci.c,v 1.145 2003/11/23 19:20:25 augustss Exp $ * $NetBSD: ohci.c,v 1.146 2003/12/29 08:17:10 toshii Exp $ + * $NetBSD: ohci.c,v 1.147 2004/06/22 07:20:35 mycroft Exp $ + * $NetBSD: ohci.c,v 1.148 2004/06/22 18:27:46 mycroft Exp $ */ #include <sys/cdefs.h> @@ -1727,7 +1729,8 @@ ohci_device_request(usbd_xfer_handle xfer) sed = opipe->sed; opipe->u.ctl.length = len; - /* Update device address and length since they may have changed. */ + /* Update device address and length since they may have changed + during the setup of the control pipe in usbd_new_device(). */ /* XXX This only needs to be done once, but it's too early in open. */ /* XXXX Should not touch ED here! */ sed->ed.ed_flags = htole32( @@ -2123,7 +2126,7 @@ ohci_open(usbd_pipe_handle pipe) } sed->ed.ed_flags = htole32( OHCI_ED_SET_FA(addr) | - OHCI_ED_SET_EN(ed->bEndpointAddress) | + OHCI_ED_SET_EN(UE_GET_ADDR(ed->bEndpointAddress)) | (dev->speed == USB_SPEED_LOW ? OHCI_ED_SPEED : 0) | fmt | OHCI_ED_SET_MAXP(UGETW(ed->wMaxPacketSize))); |