On Tue, Apr 28, 2009 at 11:45:23AM +0100, David Vrabel wrote: > Sarah Sharp wrote: > > Allow device drivers to submit URBs to bulk endpoints on devices under an > > xHCI host controller. Share code between the control and bulk enqueueing > > functions when it makes sense. > > > > To get the best performance out of bulk transfers, SuperSpeed devices must > > have the bMaxBurst size copied from their endpoint companion controller > > into the xHCI device context. This allows the host controller to "burst" > > up to 16 packets before it has to wait for the device to acknowledge the > > first packet. > > Your usb_hcd may need to provide a endpoint_reset method to reset the > sequence number. usb_hcd_reset_endpoint() is called after a > ClearFeature(Halt) etc. Can the endpoint_reset method be called in interrupt context? I need to issue a command to the xHCI host controller hardware and wait on that command to complete before a driver can successfully submit new URBs for that endpoint. There are a couple different entry points to the HCD endpoint_reset() function. One is in message.c, but that has a note that the function can't be called in interrupt context. It's obvious after a quick read that two other entry points (drivers/isdn/hisax/st5481_usb.c's usb_ctrl_complete() and usbfs' proc_resetep()) aren't called in interrupt context. That leaves the last entry points in the MSD driver and the UB driver. I'm not sure whether these functions can be called in interrupt context or not: - drivers/usb/storage/transport.c usb_stor_clear_halt() - drivers/block/ub.c ub_scsi_urb_compl() David and Pete, can you help me figure this out? Thanks, Sarah Sharp -- 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