pegasus: Add blacklist support to fix Belkin bluetooth dongle.
Subsystems (3)
PATCH 1/1 pegasus: Add blacklist support to fix Belkin bluetooth dongle.
Reference: https://launchpad.net/bugs/140511
The Belkin bluetooth dongle unfortunately shares the vendor and device id with the network adapter which causes lockups whenever the bluetooth dongle is inserted.
Signed-off-by Stefan Bader <[email protected]>
Signed-off-by Ben Collins <[email protected]>
drivers/net/usb/pegasus.c +21 -0
@@ -1285,6 +1285,21 @@ static void check_carrier(struct work_struct *work) } } +static int pegasus_blacklisted (struct usb_device *udev) +{ +struct usb_device_descriptor *udd = &udev->descriptor; + +/* Special quirk to keep the driver from handling the Belkin Bluetooth +* dongle which happens to have the same ID. +*/ +if ((udd->idVendor ==VENDOR_BELKIN && udd->idProduct ==0x0121 ) && + (udd->bDeviceClass ==USB_CLASS_WIRELESS_CONTROLLER ) && + (udd->bDeviceProtocol ==1 )) +return 1 ; + +return 0 ; +} +static int pegasus_probe (struct usb_interface *intf,const struct usb_device_id *id) {
@@ -1296,6 +1311,12 @@ static int pegasus_probe(struct usb_interface *intf,DECLARE_MAC_BUF (mac);usb_get_dev (dev); + +if (pegasus_blacklisted (dev)) { + res = -ENODEV ; + goto out; + } + net =alloc_etherdev (sizeof (struct pegasus ));if (!net) {dev_err (&intf->dev,"can't allocate %s\n" ,"device" );