I sent a patch for this fix to Greg on Saturday. It hasn't made it into the master branch yet because Greg hasn't queued it yet. The patch is on the xhci-2.6.35-bugfixes branch if you need it. Sarah Sharp On Wed, Jul 14, 2010 at 07:54:52PM +0530, Ramya Desai wrote: > Dear Sarah, > > We found a small bug in the xhci-mem.c file which is related to the > setting of the MULT field in the Endpoint Context Data Structure. The > existing code sets the MULT field for all the SUPER SPEED endpoints. > However, according to the 6.2.3 section of the xHCI 0.96 > specification, the MULT field shall be “0” for all endpoint types > except for SS Isochronous. When we are testing the BULK endpoints with > MaxStreams value set to 5, we encountered this error. However, after > applying the patch, the device is working fine without any issues. > > Here is patch which fixes the error in xhci-mem.c file. > > diff -urNB drivers/usb/host/xhci-mem.c drivers/usb/host-modified/xhci-mem.c > --- drivers/usb/host/xhci-mem.c 2010-07-08 12:22:48.000000000 +0530 > +++ drivers/usb/host-modified/xhci-mem.c 2010-07-14 > 18:57:51.252160556 +0530 > @@ -1006,11 +1006,13 @@ > * High speed endpoint descriptors can define "the number of additional > * transaction opportunities per microframe", but that goes in the Max Burst > * endpoint context field. > + * According to 6.2.3 section of the xHCI_0.96 spec, the mult field (9:8 bits) > + * shall be "0" for all endpoint types except for SS Isochronous. > */ > static inline u32 xhci_get_endpoint_mult(struct usb_device *udev, > struct usb_host_endpoint *ep) > { > - if (udev->speed != USB_SPEED_SUPER) > + if ((udev->speed != USB_SPEED_SUPER) || > (!usb_endpoint_xfer_isoc(&ep->desc))) > return 0; > return ep->ss_ep_comp.bmAttributes; > } > > Please let me know, if there are any concerns. > > Thanks and Regards, > Ramya -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html