USB: usbfs: add USBDEVFS_URB_BULK_CONTINUATION flag
authorAlan Stern <stern@rowland.harvard.edu>
Tue, 1 Sep 2009 15:09:56 +0000 (11:09 -0400)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 23 Sep 2009 13:46:39 +0000 (06:46 -0700)
commit01c6460f968d7b57fc6f98adb587952628c6e099
tree7eb51548d2db9ced665af1a5def7748cad983e34
parente6929a9020acbeb04d9a3ad9a88234c15be808fd
USB: usbfs: add USBDEVFS_URB_BULK_CONTINUATION flag

This patch (as1283) adds a new flag, USBDEVFS_URB_BULK_CONTINUATION,
to usbfs.  It is intended for userspace libraries such as libusb and
openusb.  When they have to break up a single usbfs bulk transfer into
multiple URBs, they will set the flag on all but the first URB of the
series.

If an error other than an unlink occurs, the kernel will automatically
cancel all the following URBs for the same endpoint and refuse to
accept new submissions, until an URB is encountered that is not marked
as a BULK_CONTINUATION.  Such an URB would indicate the start of a new
transfer or the presence of an older library, so the kernel returns to
normal operation.

This enables libraries to delimit bulk transfers correctly, even in
the presence of early termination as indicated by short packets.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/core/devio.c
include/linux/usbdevice_fs.h