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>
This commit is contained in:
Родитель
7a2f53ee0b
Коммит
7e99eeddb3
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
};
|
||||
|
|
Загрузка…
Ссылка в новой задаче