From 397161a07389a3056ab348577a8005ef4b9e3b75 Mon Sep 17 00:00:00 2001 From: Thomas Backlund Date: Tue, 22 Jul 2008 13:55:58 -0700 Subject: [PATCH] --- yaml --- r: 104939 b: refs/heads/master c: 7e99eeddb35cdaafb820676a57517b5e58685e4c h: refs/heads/master i: 104937: 113ceec9468a3ac8124848f04b3933bbdabeebda 104935: 34e06079176fef4a502435d3dc50c4284d03ff05 v: v3 --- [refs] | 2 +- trunk/drivers/net/usb/cdc_ether.c | 11 ++++++++++- trunk/drivers/net/usb/rndis_host.c | 4 ++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 39de95ffe495..d516edbb2226 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7a2f53ee0b56ff7e1c0c24404575cb62935d37d9 +refs/heads/master: 7e99eeddb35cdaafb820676a57517b5e58685e4c diff --git a/trunk/drivers/net/usb/cdc_ether.c b/trunk/drivers/net/usb/cdc_ether.c index a934428a5890..0e061dfea78d 100644 --- a/trunk/drivers/net/usb/cdc_ether.c +++ b/trunk/drivers/net/usb/cdc_ether.c @@ -50,10 +50,18 @@ static int is_activesync(struct usb_interface_descriptor *desc) && desc->bInterfaceProtocol == 1; } +static int is_wireless_rndis(struct usb_interface_descriptor *desc) +{ + return desc->bInterfaceClass == USB_CLASS_WIRELESS_CONTROLLER + && desc->bInterfaceSubClass == 1 + && desc->bInterfaceProtocol == 3; +} + #else #define is_rndis(desc) 0 #define is_activesync(desc) 0 +#define is_wireless_rndis(desc) 0 #endif @@ -110,7 +118,8 @@ int usbnet_generic_cdc_bind(struct usbnet *dev, struct usb_interface *intf) * of cdc-acm, it'll fail RNDIS requests cleanly. */ rndis = is_rndis(&intf->cur_altsetting->desc) - || is_activesync(&intf->cur_altsetting->desc); + || is_activesync(&intf->cur_altsetting->desc) + || is_wireless_rndis(&intf->cur_altsetting->desc); memset(info, 0, sizeof *info); info->control = intf; diff --git a/trunk/drivers/net/usb/rndis_host.c b/trunk/drivers/net/usb/rndis_host.c index 61c98beb4d17..bcd858c567e0 100644 --- a/trunk/drivers/net/usb/rndis_host.c +++ b/trunk/drivers/net/usb/rndis_host.c @@ -576,6 +576,10 @@ static const struct usb_device_id products [] = { /* "ActiveSync" is an undocumented variant of RNDIS, used in WM5 */ USB_INTERFACE_INFO(USB_CLASS_MISC, 1, 1), .driver_info = (unsigned long) &rndis_info, +}, { + /* RNDIS for tethering */ + USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3), + .driver_info = (unsigned long) &rndis_info, }, { }, // END };