Commit c4e0b508 authored by Alan Stern's avatar Alan Stern Committed by Greg Kroah-Hartman

USB: accept RNDIS configs if there's no alternative

This patch (as1410) makes a slight change to the strategy used for
choosing a default configuration.  Currently we skip configs whose
first interface is RNDIS, if the kernel wasn't built with the
corresponding driver.  This risks losing access to the other
interfaces in those configs.  In addition, if there is only one config
then we will end up not configuring the device at all.

This changes the logic; now such configurations will be skipped only
if there is at least one other config.
Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Tested-by: default avatarAdam Kropelin <akropel1@rochester.rr.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0372a754
...@@ -105,8 +105,10 @@ int usb_choose_configuration(struct usb_device *udev) ...@@ -105,8 +105,10 @@ int usb_choose_configuration(struct usb_device *udev)
/* When the first config's first interface is one of Microsoft's /* When the first config's first interface is one of Microsoft's
* pet nonstandard Ethernet-over-USB protocols, ignore it unless * pet nonstandard Ethernet-over-USB protocols, ignore it unless
* this kernel has enabled the necessary host side driver. * this kernel has enabled the necessary host side driver.
* But: Don't ignore it if it's the only config.
*/ */
if (i == 0 && desc && (is_rndis(desc) || is_activesync(desc))) { if (i == 0 && num_configs > 1 && desc &&
(is_rndis(desc) || is_activesync(desc))) {
#if !defined(CONFIG_USB_NET_RNDIS_HOST) && !defined(CONFIG_USB_NET_RNDIS_HOST_MODULE) #if !defined(CONFIG_USB_NET_RNDIS_HOST) && !defined(CONFIG_USB_NET_RNDIS_HOST_MODULE)
continue; continue;
#else #else
......
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