On Tue, 17 Feb 2015, Jakub Kicinski wrote: > Hi, > > I have a usb network device where part of functionality is implemented > in firmware. To communicate with the firmware I need to submit bulk > URBs to one of the EPs. Unfortunately when device is being unbound or > the driver is removed from the kernel EPs are disabled before > .disconnect() is called and I cannot tell the firmware to bring the > device down. As a result the device sometimes locks up on rebind. > > I suspect this is not an uncommon problem. I tried usb_reset_device() > and it seems to help but not with all sorts of hangs. I don't have any > documentation of the device - only a half-broken vendor driver which > doesn't deal with this case. > > Is there a way to submit bulk URBs from .disconnect() callback? > Are there any best practices on how to deal with such hardware? The way to do this is to set the .soft_unbind member of the usb_driver structure to 1. That will prevent the endpoints from being disabled when the disconnect routine is called during unbinding. 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