On Mon, 25 Apr 2011, Sarah Sharp wrote: > On Mon, Apr 25, 2011 at 03:18:46PM -0400, Alan Stern wrote: > > On Mon, 25 Apr 2011, Sarah Sharp wrote: > > > > > Random question time. :) > > > > > > Do USB device drivers have to cancel all URBs that are pending for a > > > device before calling usb_reset_device? Will the drivers have to wait > > > for the URBs to complete before resetting the device? > > > > There is no requirement that drivers cancel all URBs before a reset > > occurs. Indeed, some drivers can't because they have no way to know > > when another driver bound to another interface on the same device wants > > to do a reset, i.e., they have no pre_reset callback. > > Ah, ok. Apparently Windows recommends canceling all outstanding > transfers before issuing a port reset, which was apparently what the > chipset folks were hoping Linux also suggested. Oh well. I don't know offhand of any drivers that leave URBs active while doing a reset. But there's no recommendation about it. > > Of course, an URB that remains active during a reset is quite likely to > > fail. > > Mmm, so the active URB's internal structures on the frame list and async > list would still be there during the reset? Correct. > I think that's what the > chipset folks are fishing for. > > > I trust these answers will dismay your chipset people... :-) > > Yes, probably. :) It's hard to see why this should concern them very much. Unless their hardware designs are buggy and crash when trying to send packets through a port that's being reset... 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