diff options
Diffstat (limited to 'drivers/net/usb/cdc_ether.c')
-rw-r--r-- | drivers/net/usb/cdc_ether.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/net/usb/cdc_ether.c b/drivers/net/usb/cdc_ether.c index a934428a5890..0e061dfea78d 100644 --- a/drivers/net/usb/cdc_ether.c +++ b/drivers/net/usb/cdc_ether.c | |||
@@ -50,10 +50,18 @@ static int is_activesync(struct usb_interface_descriptor *desc) | |||
50 | && desc->bInterfaceProtocol == 1; | 50 | && desc->bInterfaceProtocol == 1; |
51 | } | 51 | } |
52 | 52 | ||
53 | static int is_wireless_rndis(struct usb_interface_descriptor *desc) | ||
54 | { | ||
55 | return desc->bInterfaceClass == USB_CLASS_WIRELESS_CONTROLLER | ||
56 | && desc->bInterfaceSubClass == 1 | ||
57 | && desc->bInterfaceProtocol == 3; | ||
58 | } | ||
59 | |||
53 | #else | 60 | #else |
54 | 61 | ||
55 | #define is_rndis(desc) 0 | 62 | #define is_rndis(desc) 0 |
56 | #define is_activesync(desc) 0 | 63 | #define is_activesync(desc) 0 |
64 | #define is_wireless_rndis(desc) 0 | ||
57 | 65 | ||
58 | #endif | 66 | #endif |
59 | 67 | ||
@@ -110,7 +118,8 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf) | |||
110 | * of cdc-acm, it'll fail RNDIS requests cleanly. | 118 | * of cdc-acm, it'll fail RNDIS requests cleanly. |
111 | */ | 119 | */ |
112 | rndis = is_rndis(&intf->cur_altsetting->desc) | 120 | rndis = is_rndis(&intf->cur_altsetting->desc) |
113 | || is_activesync(&intf->cur_altsetting->desc); | 121 | || is_activesync(&intf->cur_altsetting->desc) |
122 | || is_wireless_rndis(&intf->cur_altsetting->desc); | ||
114 | 123 | ||
115 | memset(info, 0, sizeof *info); | 124 | memset(info, 0, sizeof *info); |
116 | info->control = intf; | 125 | info->control = intf; |