Commit 7e99eeddb35cdaafb820676a57517b5e58685e4c
Committed by
Jeff Garzik
1 parent
7a2f53ee0b
Exists in
master
and in
7 other branches
rndis_host: support WM6 devices as modems
This patch allows Windows Mobile 6 devices to be used for tethering -- that is, used as modems. It was requested by AdamW in kernel bugzilla: http://bugzilla.kernel.org/show_bug.cgi?id=11119 and Mandriva kernel-discuss list. It is tested and confirmed to work by Peterl: http://forum.eeeuser.com/viewtopic.php?pid=323543#p323543 This patch is based on the patch in the above kernel bugzilla, which is from the usb-rndis-lite tree. [ dbrownell@users.sourceforge.net: misc fixes ] Signed-off-by: Thomas Backlund <tmb@mandriva.org> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Showing 2 changed files with 14 additions and 1 deletions Side-by-side Diff
drivers/net/usb/cdc_ether.c
... | ... | @@ -50,10 +50,18 @@ |
50 | 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 | 60 | #else |
54 | 61 | |
55 | 62 | #define is_rndis(desc) 0 |
56 | 63 | #define is_activesync(desc) 0 |
64 | +#define is_wireless_rndis(desc) 0 | |
57 | 65 | |
58 | 66 | #endif |
59 | 67 | |
... | ... | @@ -110,7 +118,8 @@ |
110 | 118 | * of cdc-acm, it'll fail RNDIS requests cleanly. |
111 | 119 | */ |
112 | 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 | 124 | memset(info, 0, sizeof *info); |
116 | 125 | info->control = intf; |
drivers/net/usb/rndis_host.c
... | ... | @@ -576,6 +576,10 @@ |
576 | 576 | /* "ActiveSync" is an undocumented variant of RNDIS, used in WM5 */ |
577 | 577 | USB_INTERFACE_INFO(USB_CLASS_MISC, 1, 1), |
578 | 578 | .driver_info = (unsigned long) &rndis_info, |
579 | +}, { | |
580 | + /* RNDIS for tethering */ | |
581 | + USB_INTERFACE_INFO(USB_CLASS_WIRELESS_CONTROLLER, 1, 3), | |
582 | + .driver_info = (unsigned long) &rndis_info, | |
579 | 583 | }, |
580 | 584 | { }, // END |
581 | 585 | }; |