View | Details | Raw Unified | Return to bug 192345 | Differences between
and this patch

Collapse All | Expand All

(-)/usr/src/sys/dev/usb/net/if_cdce.c (+3 lines)
Lines 284-289 Link Here
284
	{USB_VENDOR(USB_VENDOR_HUAWEI), USB_IFACE_CLASS(UICLASS_VENDOR),
284
	{USB_VENDOR(USB_VENDOR_HUAWEI), USB_IFACE_CLASS(UICLASS_VENDOR),
285
		USB_IFACE_SUBCLASS(0x02), USB_IFACE_PROTOCOL(0x76),
285
		USB_IFACE_SUBCLASS(0x02), USB_IFACE_PROTOCOL(0x76),
286
		USB_DRIVER_INFO(0)},
286
		USB_DRIVER_INFO(0)},
287
	{USB_VENDOR(USB_VENDOR_HUAWEI), USB_IFACE_CLASS(UICLASS_VENDOR),
288
		USB_IFACE_SUBCLASS(0x03), USB_IFACE_PROTOCOL(0x16),
289
		USB_DRIVER_INFO(0)},
287
};
290
};
288
291
289
static const STRUCT_USB_DUAL_ID cdce_dual_devs[] = {
292
static const STRUCT_USB_DUAL_ID cdce_dual_devs[] = {
(-)/usr/src/sys/dev/usb/serial/u3g.c (-1 / +21 lines)
Lines 306-312 Link Here
306
	U3G_DEV(HUAWEI, E173, 0),
306
	U3G_DEV(HUAWEI, E173, 0),
307
	U3G_DEV(HUAWEI, E173_INIT, U3GINIT_HUAWEISCSI),
307
	U3G_DEV(HUAWEI, E173_INIT, U3GINIT_HUAWEISCSI),
308
	U3G_DEV(HUAWEI, E3131, 0),
308
	U3G_DEV(HUAWEI, E3131, 0),
309
	U3G_DEV(HUAWEI, E3131_INIT, U3GINIT_HUAWEISCSI),
309
	U3G_DEV(HUAWEI, E3131_INIT, U3GINIT_HUAWEISCSI2),
310
	U3G_DEV(HUAWEI, E180V, U3GINIT_HUAWEI),
310
	U3G_DEV(HUAWEI, E180V, U3GINIT_HUAWEI),
311
	U3G_DEV(HUAWEI, E220, U3GINIT_HUAWEI),
311
	U3G_DEV(HUAWEI, E220, U3GINIT_HUAWEI),
312
	U3G_DEV(HUAWEI, E220BIS, U3GINIT_HUAWEI),
312
	U3G_DEV(HUAWEI, E220BIS, U3GINIT_HUAWEI),
Lines 324-329 Link Here
324
	U3G_DEV(HUAWEI, K3770_INIT, U3GINIT_HUAWEISCSI),
324
	U3G_DEV(HUAWEI, K3770_INIT, U3GINIT_HUAWEISCSI),
325
	U3G_DEV(HUAWEI, K4505, U3GINIT_HUAWEI),
325
	U3G_DEV(HUAWEI, K4505, U3GINIT_HUAWEI),
326
	U3G_DEV(HUAWEI, K4505_INIT, U3GINIT_HUAWEISCSI),
326
	U3G_DEV(HUAWEI, K4505_INIT, U3GINIT_HUAWEISCSI),
327
	U3G_DEV(HUAWEI, E3272_INIT, U3GINIT_HUAWEISCSI),
328
	U3G_DEV(HUAWEI, E3272, 0),
327
	U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI),
329
	U3G_DEV(HUAWEI, ETS2055, U3GINIT_HUAWEI),
328
	U3G_DEV(KYOCERA2, CDMA_MSM_K, 0),
330
	U3G_DEV(KYOCERA2, CDMA_MSM_K, 0),
329
	U3G_DEV(KYOCERA2, KPC680, 0),
331
	U3G_DEV(KYOCERA2, KPC680, 0),
Lines 590-595 Link Here
590
MODULE_VERSION(u3g, 1);
592
MODULE_VERSION(u3g, 1);
591
USB_PNP_HOST_INFO(u3g_devs);
593
USB_PNP_HOST_INFO(u3g_devs);
592
594
595
/* Huawei specific: see if_cdce.c for more ids. */
596
#define U3G_HUAWEI_IS_CDC(info, iface_descr)				\
597
	((info)->idVendor == USB_VENDOR_HUAWEI &&			\
598
	 (iface_descr)->bInterfaceClass == UICLASS_VENDOR &&		\
599
	 (((iface_descr)->bInterfaceSubClass == 0x02 &&			\
600
	   ((iface_descr)->bInterfaceProtocol == 0x16 ||		\
601
	    (iface_descr)->bInterfaceProtocol == 0x46 ||		\
602
	    (iface_descr)->bInterfaceProtocol == 0x76)) ||		\
603
	  ((iface_descr)->bInterfaceSubClass == 0x03 &&			\
604
	   (iface_descr)->bInterfaceProtocol == 0x16)))
605
593
static int
606
static int
594
u3g_sierra_init(struct usb_device *udev)
607
u3g_sierra_init(struct usb_device *udev)
595
{
608
{
Lines 839-844 Link Here
839
	if (uaa->info.bInterfaceClass != UICLASS_VENDOR) {
852
	if (uaa->info.bInterfaceClass != UICLASS_VENDOR) {
840
		return (ENXIO);
853
		return (ENXIO);
841
	}
854
	}
855
	/* Huawei specific: skip cdce devices. */
856
	if (U3G_HUAWEI_IS_CDC(&uaa->info, &uaa->info)) {
857
		return (ENXIO);
858
	}
842
	return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa));
859
	return (usbd_lookup_id_by_uaa(u3g_devs, sizeof(u3g_devs), uaa));
843
}
860
}
844
861
Lines 882-887 Link Here
882
		id = usbd_get_interface_descriptor(iface);
899
		id = usbd_get_interface_descriptor(iface);
883
		if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR)
900
		if (id == NULL || id->bInterfaceClass != UICLASS_VENDOR)
884
			continue;
901
			continue;
902
		/* Huawei specific: skip cdce devices. */
903
		if (U3G_HUAWEI_IS_CDC(&uaa->info, id))
904
			continue;
885
		usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex);
905
		usbd_set_parent_iface(uaa->device, i, uaa->info.bIfaceIndex);
886
		iface_valid |= (1<<i);
906
		iface_valid |= (1<<i);
887
	}
907
	}

Return to bug 192345