Submit #2725 » 00-rundis-umodem.diff
sys/bus/u4b/net/if_urndis.c | ||
---|---|---|
};
|
||
static const STRUCT_USB_HOST_ID urndis_host_devs[] = {
|
||
#if 0
|
||
/* XXX this entry has a conflict an entry the umodem driver XXX */
|
||
{USB_IFACE_CLASS(UICLASS_CDC), USB_IFACE_SUBCLASS(UISUBCLASS_ABSTRACT_CONTROL_MODEL),
|
||
USB_IFACE_PROTOCOL(0xff)},
|
||
#endif
|
||
{USB_IFACE_CLASS(UICLASS_WIRELESS), USB_IFACE_SUBCLASS(UISUBCLASS_RF),
|
||
USB_IFACE_PROTOCOL(UIPROTO_RNDIS)},
|
||
{USB_IFACE_CLASS(UICLASS_IAD), USB_IFACE_SUBCLASS(UISUBCLASS_SYNC),
|
||
USB_IFACE_PROTOCOL(UIPROTO_ACTIVESYNC)},
|
||
};
|
||
static const STRUCT_USB_HOST_ID urndis_host_not_huawei_devs[] = {
|
||
{USB_IFACE_CLASS(UICLASS_CDC), USB_IFACE_SUBCLASS(UISUBCLASS_ABSTRACT_CONTROL_MODEL),
|
||
USB_IFACE_PROTOCOL(0xff)},
|
||
};
|
||
static int
|
||
urndis_probe(device_t dev)
|
||
{
|
||
int res;
|
||
struct usb_attach_arg *uaa = device_get_ivars(dev);
|
||
return (usbd_lookup_id_by_uaa(urndis_host_devs, sizeof(urndis_host_devs), uaa));
|
||
res = usbd_lookup_id_by_uaa(urndis_host_devs, sizeof(urndis_host_devs), uaa);
|
||
if (res == 0) {
|
||
return(0);
|
||
}
|
||
if (uaa->info.idVendor == USB_VENDOR_HUAWEI) {
|
||
return(ENXIO);
|
||
}
|
||
return (usbd_lookup_id_by_uaa(urndis_host_devs, sizeof(urndis_host_not_huawei_devs), uaa));
|
||
}
|
||
static void
|
sys/bus/u4b/serial/umodem.c | ||
---|---|---|
USB_IFACE_SUBCLASS(UISUBCLASS_ABSTRACT_CONTROL_MODEL),
|
||
USB_IFACE_PROTOCOL(UIPROTO_CDC_AT)},
|
||
/* Huawei Modem class match */
|
||
{USB_IFACE_CLASS(UICLASS_CDC),
|
||
{USB_VENDOR(USB_VENDOR_HUAWEI),
|
||
USB_IFACE_CLASS(UICLASS_CDC),
|
||
USB_IFACE_SUBCLASS(UISUBCLASS_ABSTRACT_CONTROL_MODEL),
|
||
USB_IFACE_PROTOCOL(0xFF)},
|
||
/* Kyocera AH-K3001V */
|