Re: Submitting urbs from disconnect callback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 17 Feb 2015 15:58:30 -0500 (EST), Alan Stern wrote:
> 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.

Thanks a lot!  

Looks like I should also set disable_hub_initiated_lpm to one, all USB
network devices do it after commit e1f12eb6 ("USB: Disable
hub-initiated LPM for comms devices.")...
--
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




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux