@@ -1129,6 +1129,17 @@ static int cxacru_bind(struct usbatm_dat
struct cxacru_data *instance;
struct usb_device *usb_dev = interface_to_usbdev(intf);
int ret;
+ char buf[15];
+
+ /* avoid ADSL routers - abort if bDeviceClass is 0xff and iProduct is "USB NET CARD" */
+ if (usb_dev->descriptor.bDeviceClass == 0xff &&
+ usb_dev->descriptor.iProduct &&
+ usb_string(usb_dev, usb_dev->descriptor.iProduct, buf, sizeof(buf)) &&
+ !strcmp(buf, "USB NET CARD")) {
+ usb_err(usbatm_instance,
+ "probably an ADSL router, use cx82310_eth driver instead\n");
+ return -ENODEV;
+ }
/* instance init */
instance = kzalloc(sizeof(*instance), GFP_KERNEL);
Ignore ADSL routers, which can have the same vendor and product IDs as ADSL modems but should be driven by cx82310_eth driver. Signed-off-by: Ondrej Zary <linux@rainbow-software.org>