|
@@ -337,6 +337,7 @@ struct usb_bus {
|
|
|
* the ep queue on a short transfer
|
|
|
* with the URB_SHORT_NOT_OK flag set.
|
|
|
*/
|
|
|
+ unsigned no_sg_constraint:1; /* no sg constraint */
|
|
|
unsigned sg_tablesize; /* 0 or largest number of sg list entries */
|
|
|
|
|
|
int devnum_next; /* Next open device number in
|
|
@@ -684,6 +685,11 @@ static inline bool usb_device_supports_ltm(struct usb_device *udev)
|
|
|
return udev->bos->ss_cap->bmAttributes & USB_LTM_SUPPORT;
|
|
|
}
|
|
|
|
|
|
+static inline bool usb_device_no_sg_constraint(struct usb_device *udev)
|
|
|
+{
|
|
|
+ return udev && udev->bus && udev->bus->no_sg_constraint;
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
/*-------------------------------------------------------------------------*/
|
|
|
|
|
@@ -1253,7 +1259,7 @@ typedef void (*usb_complete_t)(struct urb *);
|
|
|
* transfer_buffer.
|
|
|
* @sg: scatter gather buffer list, the buffer size of each element in
|
|
|
* the list (except the last) must be divisible by the endpoint's
|
|
|
- * max packet size
|
|
|
+ * max packet size if no_sg_constraint isn't set in 'struct usb_bus'
|
|
|
* @num_mapped_sgs: (internal) number of mapped sg entries
|
|
|
* @num_sgs: number of entries in the sg list
|
|
|
* @transfer_buffer_length: How big is transfer_buffer. The transfer may
|