aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/usb/cdc_ether.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/usb/cdc_ether.c')
-rw-r--r--drivers/net/usb/cdc_ether.c10
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 }
208skip: 208skip:
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",