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. > 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. Alan Stern -- 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