On Sat, Aug 29, 2009 at 12:02:20PM -0400, Alan Stern wrote: > On Fri, 28 Aug 2009, Sarah Sharp wrote: > > > Interrupt transfers are submitted to the xHCI hardware using the same TRB > > type as bulk transfers. Re-use the bulk transfer enqueueing code to > > enqueue interrupt transfers. > > > > Interrupt transfers are a bit different than bulk transfers. When the > > interrupt endpoint is to be serviced, the xHC will consume (at most) one > > TD. A TD (comprised of sg list entries) can take several service > > intervals to transmit. The important thing for device drivers to note is > > that if they use the scatter gather interface to submit interrupt > > requests, they will not get data sent from two different scatter gather > > lists in the same service interval. > > The scatter-gather interface is really meant to support bulk transfers > only, not interrupt transfers. Not that there's anything actually > _wrong_ with using it that way, but it would be an awfully strange > thing to do. David Vrabel submitted a patch to support scatter gather lists for all non-control transfer types, so I was only commenting that the xHCI driver is now ready for bulk and interrupt scatter gather lists. If you think it's strange you should probably bring it up with him. :) > > For now, the xHCI driver will use the service interval from the endpoint's > > descriptor (bInterval). Drivers will need a hook to poll at a more > > frequent interval. > > If you end up using an interval different from what was specified in > the URB, you must update urb->interval to value you actually used. > This is documented in include/linux/usb.h. Ah, ok, I'll respin this patch. Sarah -- 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