USB: make urb scatter-gather support more generic
The WHCI HCD will also support urbs with scatter-gather lists. Add a usb_bus field to indicated how many sg list elements are supported by the HCD. Use this to decide whether to pass the scatter-list to the HCD or not. Make the usb-storage driver use this new field. Signed-off-by: David Vrabel <david.vrabel@csr.com> Cc: Alan Stern <stern@rowland.harvard.edu> Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com> Cc: Matthew Dharm <mdharm-usb@one-eyed-alien.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
09ce497e79
commit
4c1bd3d7a7
@@ -843,6 +843,15 @@ static int usb_stor_scan_thread(void * __us)
|
||||
complete_and_exit(&us->scanning_done, 0);
|
||||
}
|
||||
|
||||
static unsigned int usb_stor_sg_tablesize(struct usb_interface *intf)
|
||||
{
|
||||
struct usb_device *usb_dev = interface_to_usbdev(intf);
|
||||
|
||||
if (usb_dev->bus->sg_tablesize) {
|
||||
return usb_dev->bus->sg_tablesize;
|
||||
}
|
||||
return SG_ALL;
|
||||
}
|
||||
|
||||
/* First part of general USB mass-storage probing */
|
||||
int usb_stor_probe1(struct us_data **pus,
|
||||
@@ -871,6 +880,7 @@ int usb_stor_probe1(struct us_data **pus,
|
||||
* Allow 16-byte CDBs and thus > 2TB
|
||||
*/
|
||||
host->max_cmd_len = 16;
|
||||
host->sg_tablesize = usb_stor_sg_tablesize(intf);
|
||||
*pus = us = host_to_us(host);
|
||||
memset(us, 0, sizeof(struct us_data));
|
||||
mutex_init(&(us->dev_mutex));
|
||||
|
Reference in New Issue
Block a user