Scroll to navigation

USB_QUEUE_RESET_DEVI(9) USB Core APIs USB_QUEUE_RESET_DEVI(9)

NAME

usb_queue_reset_device - Reset a USB device from an atomic context

SYNOPSIS

void usb_queue_reset_device(struct usb_interface * iface);

ARGUMENTS

iface
USB interface belonging to the device to reset

DESCRIPTION

This function can be used to reset a USB device from an atomic context, where usb_reset_device won't work (as it blocks).
Doing a reset via this method is functionally equivalent to calling usb_reset_device, except for the fact that it is delayed to a workqueue. This means that any drivers bound to other interfaces might be unbound, as well as users from usbfs in user space.
Corner cases:
- Scheduling two resets at the same time from two different drivers attached to two different interfaces of the same device is possible; depending on how the driver attached to each interface handles -> pre_reset, the second reset might happen or not.
- If the reset is delayed so long that the interface is unbound from its driver, the reset will be skipped.
- This function can be called during . probe. It can also be called during . disconnect, but doing so is pointless because the reset will not occur. If you really want to reset the device during . disconnect, call usb_reset_device directly -- but watch out for nested unbinding issues!

COPYRIGHT

January 2017 Kernel Hackers Manual 4.8.