From 26d82c51a7cf4ebaaf9be38461d1b2938d36b8f9 Mon Sep 17 00:00:00 2001 From: Ondrej Zary Date: Wed, 8 Sep 2010 21:29:20 -0700 Subject: [PATCH] --- yaml --- r: 214365 b: refs/heads/master c: 92e32eaee288ee2e838fe76680cbaeaea25643c6 h: refs/heads/master i: 214363: e917fa2f04065babcb29a757a1032402105431d7 v: v3 --- [refs] | 2 +- trunk/drivers/usb/atm/cxacru.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 42f132ff5087..24f4c7609156 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2b1b8edfe229b1832134827c6948d0b70029e965 +refs/heads/master: 92e32eaee288ee2e838fe76680cbaeaea25643c6 diff --git a/trunk/drivers/usb/atm/cxacru.c b/trunk/drivers/usb/atm/cxacru.c index 593fc5e2d2e6..1c320bfa6fb7 100644 --- a/trunk/drivers/usb/atm/cxacru.c +++ b/trunk/drivers/usb/atm/cxacru.c @@ -1324,8 +1324,24 @@ static struct usbatm_driver cxacru_driver = { .tx_padding = 11, }; -static int cxacru_usb_probe(struct usb_interface *intf, const struct usb_device_id *id) +static int cxacru_usb_probe(struct usb_interface *intf, + const struct usb_device_id *id) { + struct usb_device *usb_dev = interface_to_usbdev(intf); + char buf[15]; + + /* Avoid ADSL routers (cx82310_eth). + * Abort if bDeviceClass is 0xff and iProduct is "USB NET CARD". + */ + if (usb_dev->descriptor.bDeviceClass == USB_CLASS_VENDOR_SPEC + && usb_string(usb_dev, usb_dev->descriptor.iProduct, + buf, sizeof(buf)) > 0) { + if (!strcmp(buf, "USB NET CARD")) { + dev_info(&intf->dev, "ignoring cx82310_eth device\n"); + return -ENODEV; + } + } + return usbatm_usb_probe(intf, id, &cxacru_driver); }