aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/uapi/linux/usbdevice_fs.h
diff options
context:
space:
mode:
authorAlan Stern <stern@rowland.harvard.edu>2015-01-29 11:29:13 -0500
committerGreg Kroah-Hartman <greg@kroah.com>2015-01-31 09:05:06 -0800
commit3f2cee73b650921b2e214bf487b2061a1c266504 (patch)
treed1dddbfd38a52fc0b66b7fca36dc8ad8efb671ca /include/uapi/linux/usbdevice_fs.h
parentcdc-acm: kill unnecessary messages (diff)
downloadwireguard-linux-3f2cee73b650921b2e214bf487b2061a1c266504.tar.xz
wireguard-linux-3f2cee73b650921b2e214bf487b2061a1c266504.zip
USB: usbfs: allow URBs to be reaped after disconnection
The usbfs API has a peculiar hole: Users are not allowed to reap their URBs after the device has been disconnected. There doesn't seem to be any good reason for this; it is an ad-hoc inconsistency. The patch allows users to issue the USBDEVFS_REAPURB and USBDEVFS_REAPURBNDELAY ioctls (together with their 32-bit counterparts on 64-bit systems) even after the device is gone. If no URBs are pending for a disconnected device then the ioctls will return -ENODEV rather than -EAGAIN, because obviously no new URBs will ever be able to complete. The patch also adds a new capability flag for USBDEVFS_GET_CAPABILITIES to indicate that the reap-after-disconnect feature is supported. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Tested-by: Chris Dickens <christopher.a.dickens@gmail.com> Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
Diffstat (limited to 'include/uapi/linux/usbdevice_fs.h')
-rw-r--r--include/uapi/linux/usbdevice_fs.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/include/uapi/linux/usbdevice_fs.h b/include/uapi/linux/usbdevice_fs.h
index abe5f4bd4d82..019ba1e0799a 100644
--- a/include/uapi/linux/usbdevice_fs.h
+++ b/include/uapi/linux/usbdevice_fs.h
@@ -128,11 +128,12 @@ struct usbdevfs_hub_portinfo {
char port [127]; /* e.g. port 3 connects to device 27 */
};
-/* Device capability flags */
+/* System and bus capability flags */
#define USBDEVFS_CAP_ZERO_PACKET 0x01
#define USBDEVFS_CAP_BULK_CONTINUATION 0x02
#define USBDEVFS_CAP_NO_PACKET_SIZE_LIM 0x04
#define USBDEVFS_CAP_BULK_SCATTER_GATHER 0x08
+#define USBDEVFS_CAP_REAP_AFTER_DISCONNECT 0x10
/* USBDEVFS_DISCONNECT_CLAIM flags & struct */