Author: thompsa
Date: Sun Feb  8 21:08:00 2009
New Revision: 188336
URL: http://svn.freebsd.org/changeset/base/188336

Log:
  The NRL value in the queue head must be zero for interrupt transfers. This was
  diagnosed using a USB analyser obtained through a FreeBSD Foundation grant.
  
  Thanks to:    FreeBSD Foundation

Modified:
  head/sys/dev/usb2/controller/ehci2.c

Modified: head/sys/dev/usb2/controller/ehci2.c
==============================================================================
--- head/sys/dev/usb2/controller/ehci2.c        Sun Feb  8 20:52:09 2009        
(r188335)
+++ head/sys/dev/usb2/controller/ehci2.c        Sun Feb  8 21:08:00 2009        
(r188336)
@@ -1892,7 +1892,9 @@ ehci_setup_standard_chain(struct usb2_xf
 
        if (usb2_get_speed(xfer->xroot->udev) == USB_SPEED_HIGH) {
                qh_endp |= (EHCI_QH_SET_EPS(EHCI_QH_SPEED_HIGH) |
-                   EHCI_QH_DTC | EHCI_QH_SET_NRL(8));
+                   EHCI_QH_DTC);
+               if (methods != &ehci_device_intr_methods)
+                       qh_endp |= EHCI_QH_SET_NRL(8);
        } else {
 
                if (usb2_get_speed(xfer->xroot->udev) == USB_SPEED_FULL) {
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to