Commit d9d4dc60 authored by Hans de Goede's avatar Hans de Goede Committed by Greg Kroah-Hartman

uas: Only complain about missing sg if all other checks succeed

commit cc4deafc upstream.

Don't complain about controllers without sg support if there are other
reasons why uas cannot be used anyways.
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 70e9e520
...@@ -9,32 +9,15 @@ static int uas_is_interface(struct usb_host_interface *intf) ...@@ -9,32 +9,15 @@ static int uas_is_interface(struct usb_host_interface *intf)
intf->desc.bInterfaceProtocol == USB_PR_UAS); intf->desc.bInterfaceProtocol == USB_PR_UAS);
} }
static int uas_isnt_supported(struct usb_device *udev)
{
struct usb_hcd *hcd = bus_to_hcd(udev->bus);
dev_warn(&udev->dev, "The driver for the USB controller %s does not "
"support scatter-gather which is\n",
hcd->driver->description);
dev_warn(&udev->dev, "required by the UAS driver. Please try an"
"alternative USB controller if you wish to use UAS.\n");
return -ENODEV;
}
static int uas_find_uas_alt_setting(struct usb_interface *intf) static int uas_find_uas_alt_setting(struct usb_interface *intf)
{ {
int i; int i;
struct usb_device *udev = interface_to_usbdev(intf);
int sg_supported = udev->bus->sg_tablesize != 0;
for (i = 0; i < intf->num_altsetting; i++) { for (i = 0; i < intf->num_altsetting; i++) {
struct usb_host_interface *alt = &intf->altsetting[i]; struct usb_host_interface *alt = &intf->altsetting[i];
if (uas_is_interface(alt)) { if (uas_is_interface(alt))
if (!sg_supported)
return uas_isnt_supported(udev);
return alt->desc.bAlternateSetting; return alt->desc.bAlternateSetting;
}
} }
return -ENODEV; return -ENODEV;
...@@ -92,5 +75,14 @@ static int uas_use_uas_driver(struct usb_interface *intf, ...@@ -92,5 +75,14 @@ static int uas_use_uas_driver(struct usb_interface *intf,
if (r < 0) if (r < 0)
return 0; return 0;
if (udev->bus->sg_tablesize == 0) {
dev_warn(&udev->dev,
"The driver for the USB controller %s does not support scatter-gather which is\n",
hcd->driver->description);
dev_warn(&udev->dev,
"required by the UAS driver. Please try an other USB controller if you wish to use UAS.\n");
return 0;
}
return 1; return 1;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment