diff options
Diffstat (limited to 'drivers/net/usb/cdc_ether.c')
-rw-r--r-- | drivers/net/usb/cdc_ether.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index 8458e88c18e9..32f53de5b1fe 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c | |||
@@ -206,7 +206,15 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf) | |||
206 | goto bad_desc; | 206 | goto bad_desc; |
207 | } | 207 | } |
208 | skip: | 208 | skip: |
209 | if (rndis && header.usb_cdc_acm_descriptor && | 209 | /* Communcation class functions with bmCapabilities are not |
210 | * RNDIS. But some Wireless class RNDIS functions use | ||
211 | * bmCapabilities for their own purpose. The failsafe is | ||
212 | * therefore applied only to Communication class RNDIS | ||
213 | * functions. The rndis test is redundant, but a cheap | ||
214 | * optimization. | ||
215 | */ | ||
216 | if (rndis && is_rndis(&intf->cur_altsetting->desc) && | ||
217 | header.usb_cdc_acm_descriptor && | ||
210 | header.usb_cdc_acm_descriptor->bmCapabilities) { | 218 | header.usb_cdc_acm_descriptor->bmCapabilities) { |
211 | dev_dbg(&intf->dev, | 219 | dev_dbg(&intf->dev, |
212 | "ACM capabilities %02x, not really RNDIS?\n", | 220 | "ACM capabilities %02x, not really RNDIS?\n", |