···4242#define BT_DBG(D...)4343#endif44444545-#define VERSION "1.1"4646-4747-static int ignore = 0;4545+#define VERSION "1.2"48464947static struct usb_device_id bcm203x_table[] = {5048 /* Broadcom Blutonium (BCM2033) */···173175174176 BT_DBG("intf %p id %p", intf, id);175177176176- if (ignore || (intf->cur_altsetting->desc.bInterfaceNumber != 0))178178+ if (intf->cur_altsetting->desc.bInterfaceNumber != 0)177179 return -ENODEV;178180179181 data = kzalloc(sizeof(*data), GFP_KERNEL);···297299298300module_init(bcm203x_init);299301module_exit(bcm203x_exit);300300-301301-module_param(ignore, bool, 0644);302302-MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");303302304303MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");305304MODULE_DESCRIPTION("Broadcom Blutonium firmware driver ver " VERSION);
+1-9
drivers/bluetooth/bfusb.c
···4343#define BT_DBG(D...)4444#endif45454646-#define VERSION "1.1"4747-4848-static int ignore = 0;4646+#define VERSION "1.2"49475048static struct usb_driver bfusb_driver;5149···654656655657 BT_DBG("intf %p id %p", intf, id);656658657657- if (ignore)658658- return -ENODEV;659659-660659 /* Check number of endpoints */661660 if (intf->cur_altsetting->desc.bNumEndpoints < 2)662661 return -EIO;···789794790795module_init(bfusb_init);791796module_exit(bfusb_exit);792792-793793-module_param(ignore, bool, 0644);794794-MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");795797796798MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");797799MODULE_DESCRIPTION("BlueFRITZ! USB driver ver " VERSION);
+1-9
drivers/bluetooth/bpa10x.c
···4040#define BT_DBG(D...)4141#endif42424343-#define VERSION "0.9"4444-4545-static int ignore = 0;4343+#define VERSION "0.10"46444745static struct usb_device_id bpa10x_table[] = {4846 /* Tektronix BPA 100/105 (Digianswer) */···458460459461 BT_DBG("intf %p id %p", intf, id);460462461461- if (ignore)462462- return -ENODEV;463463-464463 if (intf->cur_altsetting->desc.bInterfaceNumber != 0)465464 return -ENODEV;466465···540545541546module_init(bpa10x_init);542547module_exit(bpa10x_exit);543543-544544-module_param(ignore, bool, 0644);545545-MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");546548547549MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");548550MODULE_DESCRIPTION("Digianswer Bluetooth USB driver ver " VERSION);
+161-2
drivers/bluetooth/btusb.c
···4141#define BT_DBG(D...)4242#endif43434444-#define VERSION "0.1"4444+#define VERSION "0.2"4545+4646+static int ignore_dga;4747+static int ignore_csr;4848+static int ignore_sniffer;4949+static int disable_scofix;5050+static int force_scofix;5151+static int reset;5252+5353+static struct usb_driver btusb_driver;5454+5555+#define BTUSB_IGNORE 0x015656+#define BTUSB_RESET 0x025757+#define BTUSB_DIGIANSWER 0x045858+#define BTUSB_CSR 0x085959+#define BTUSB_SNIFFER 0x106060+#define BTUSB_BCM92035 0x206161+#define BTUSB_BROKEN_ISOC 0x406262+#define BTUSB_WRONG_SCO_MTU 0x8045634664static struct usb_device_id btusb_table[] = {4765 /* Generic Bluetooth USB device */4866 { USB_DEVICE_INFO(0xe0, 0x01, 0x01) },6767+6868+ /* AVM BlueFRITZ! USB v2.0 */6969+ { USB_DEVICE(0x057c, 0x3800) },7070+7171+ /* Bluetooth Ultraport Module from IBM */7272+ { USB_DEVICE(0x04bf, 0x030a) },7373+7474+ /* ALPS Modules with non-standard id */7575+ { USB_DEVICE(0x044e, 0x3001) },7676+ { USB_DEVICE(0x044e, 0x3002) },7777+7878+ /* Ericsson with non-standard id */7979+ { USB_DEVICE(0x0bdb, 0x1002) },8080+8181+ /* Canyon CN-BTU1 with HID interfaces */8282+ { USB_DEVICE(0x0c10, 0x0000), .driver_info = BTUSB_RESET },49835084 { } /* Terminating entry */5185};···8753MODULE_DEVICE_TABLE(usb, btusb_table);88548955static struct usb_device_id blacklist_table[] = {5656+ /* CSR BlueCore devices */5757+ { USB_DEVICE(0x0a12, 0x0001), .driver_info = BTUSB_CSR },5858+5959+ /* Broadcom BCM2033 without firmware */6060+ { USB_DEVICE(0x0a5c, 0x2033), .driver_info = BTUSB_IGNORE },6161+6262+ /* Broadcom BCM2035 */6363+ { USB_DEVICE(0x0a5c, 0x2035), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },6464+ { USB_DEVICE(0x0a5c, 0x200a), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },6565+6666+ /* Broadcom BCM2045 */6767+ { USB_DEVICE(0x0a5c, 0x2039), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },6868+ { USB_DEVICE(0x0a5c, 0x2101), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },6969+7070+ /* Broadcom BCM2046 */7171+ { USB_DEVICE(0x0a5c, 0x2151), .driver_info = BTUSB_RESET },7272+7373+ /* IBM/Lenovo ThinkPad with Broadcom chip */7474+ { USB_DEVICE(0x0a5c, 0x201e), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },7575+ { USB_DEVICE(0x0a5c, 0x2110), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },7676+7777+ /* Targus ACB10US */7878+ { USB_DEVICE(0x0a5c, 0x2100), .driver_info = BTUSB_RESET },7979+8080+ /* ANYCOM Bluetooth USB-200 and USB-250 */8181+ { USB_DEVICE(0x0a5c, 0x2111), .driver_info = BTUSB_RESET },8282+8383+ /* HP laptop with Broadcom chip */8484+ { USB_DEVICE(0x03f0, 0x171d), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },8585+8686+ /* Dell laptop with Broadcom chip */8787+ { USB_DEVICE(0x413c, 0x8126), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },8888+8989+ /* Dell Wireless 370 */9090+ { USB_DEVICE(0x413c, 0x8156), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },9191+9292+ /* Dell Wireless 410 */9393+ { USB_DEVICE(0x413c, 0x8152), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },9494+9595+ /* Microsoft Wireless Transceiver for Bluetooth 2.0 */9696+ { USB_DEVICE(0x045e, 0x009c), .driver_info = BTUSB_RESET },9797+9898+ /* Kensington Bluetooth USB adapter */9999+ { USB_DEVICE(0x047d, 0x105d), .driver_info = BTUSB_RESET },100100+ { USB_DEVICE(0x047d, 0x105e), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },101101+102102+ /* ISSC Bluetooth Adapter v3.1 */103103+ { USB_DEVICE(0x1131, 0x1001), .driver_info = BTUSB_RESET },104104+105105+ /* RTX Telecom based adapters with buggy SCO support */106106+ { USB_DEVICE(0x0400, 0x0807), .driver_info = BTUSB_BROKEN_ISOC },107107+ { USB_DEVICE(0x0400, 0x080a), .driver_info = BTUSB_BROKEN_ISOC },108108+109109+ /* CONWISE Technology based adapters with buggy SCO support */110110+ { USB_DEVICE(0x0e5e, 0x6622), .driver_info = BTUSB_BROKEN_ISOC },111111+112112+ /* Belkin F8T012 and F8T013 devices */113113+ { USB_DEVICE(0x050d, 0x0012), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },114114+ { USB_DEVICE(0x050d, 0x0013), .driver_info = BTUSB_RESET | BTUSB_WRONG_SCO_MTU },115115+116116+ /* Digianswer devices */117117+ { USB_DEVICE(0x08fd, 0x0001), .driver_info = BTUSB_DIGIANSWER },118118+ { USB_DEVICE(0x08fd, 0x0002), .driver_info = BTUSB_IGNORE },119119+120120+ /* CSR BlueCore Bluetooth Sniffer */121121+ { USB_DEVICE(0x0a12, 0x0002), .driver_info = BTUSB_SNIFFER },122122+123123+ /* Frontline ComProbe Bluetooth Sniffer */124124+ { USB_DEVICE(0x16d3, 0x0002), .driver_info = BTUSB_SNIFFER },125125+90126 { } /* Terminating entry */91127};92128···537433538434 BT_DBG("intf %p id %p", intf, id);539435436436+ /* interface numbers are hardcoded in the spec */540437 if (intf->cur_altsetting->desc.bInterfaceNumber != 0)541438 return -ENODEV;542439···547442 if (match)548443 id = match;549444 }445445+446446+ if (id->driver_info == BTUSB_IGNORE)447447+ return -ENODEV;448448+449449+ if (ignore_dga && id->driver_info & BTUSB_DIGIANSWER)450450+ return -ENODEV;451451+452452+ if (ignore_csr && id->driver_info & BTUSB_CSR)453453+ return -ENODEV;454454+455455+ if (ignore_sniffer && id->driver_info & BTUSB_SNIFFER)456456+ return -ENODEV;550457551458 data = kzalloc(sizeof(*data), GFP_KERNEL);552459 if (!data)···620503621504 hdev->owner = THIS_MODULE;622505623623- set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);506506+ if (reset || id->driver_info & BTUSB_RESET)507507+ set_bit(HCI_QUIRK_RESET_ON_INIT, &hdev->quirks);508508+509509+ if (force_scofix || id->driver_info & BTUSB_WRONG_SCO_MTU) {510510+ if (!disable_scofix)511511+ set_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks);512512+ }513513+514514+ if (id->driver_info & BTUSB_SNIFFER) {515515+ struct usb_device *udev = interface_to_usbdev(intf);516516+517517+ if (le16_to_cpu(udev->descriptor.bcdDevice) > 0x997)518518+ set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);519519+ }520520+521521+ if (id->driver_info & BTUSB_BCM92035) {522522+ unsigned char cmd[] = { 0x3b, 0xfc, 0x01, 0x00 };523523+ struct sk_buff *skb;524524+525525+ skb = bt_skb_alloc(sizeof(cmd), GFP_KERNEL);526526+ if (skb) {527527+ memcpy(skb_put(skb, sizeof(cmd)), cmd, sizeof(cmd));528528+ skb_queue_tail(&hdev->driver_init, skb);529529+ }530530+ }624531625532 err = hci_register_dev(hdev);626533 if (err < 0) {···698557699558module_init(btusb_init);700559module_exit(btusb_exit);560560+561561+module_param(ignore_dga, bool, 0644);562562+MODULE_PARM_DESC(ignore_dga, "Ignore devices with id 08fd:0001");563563+564564+module_param(ignore_csr, bool, 0644);565565+MODULE_PARM_DESC(ignore_csr, "Ignore devices with id 0a12:0001");566566+567567+module_param(ignore_sniffer, bool, 0644);568568+MODULE_PARM_DESC(ignore_sniffer, "Ignore devices with id 0a12:0002");569569+570570+module_param(disable_scofix, bool, 0644);571571+MODULE_PARM_DESC(disable_scofix, "Disable fixup of wrong SCO buffer size");572572+573573+module_param(force_scofix, bool, 0644);574574+MODULE_PARM_DESC(force_scofix, "Force fixup of wrong SCO buffers size");575575+576576+module_param(reset, bool, 0644);577577+MODULE_PARM_DESC(reset, "Send HCI reset command on initialization");701578702579MODULE_AUTHOR("Marcel Holtmann <marcel@holtmann.org>");703580MODULE_DESCRIPTION("Generic Bluetooth USB driver ver " VERSION);
+2-6
drivers/bluetooth/hci_usb.c
···6262#define URB_ZERO_PACKET 06363#endif64646565-static int ignore;6665static int ignore_dga;6766static int ignore_csr;6867static int ignore_sniffer;···7374static int isoc = 2;7475#endif75767676-#define VERSION "2.9"7777+#define VERSION "2.10"77787879static struct usb_driver hci_usb_driver; 7980···800801 id = match;801802 }802803803803- if (ignore || id->driver_info & HCI_IGNORE)804804+ if (id->driver_info & HCI_IGNORE)804805 return -ENODEV;805806806807 if (ignore_dga && id->driver_info & HCI_DIGIANSWER)···1106110711071108module_init(hci_usb_init);11081109module_exit(hci_usb_exit);11091109-11101110-module_param(ignore, bool, 0644);11111111-MODULE_PARM_DESC(ignore, "Ignore devices from the matching table");1112111011131111module_param(ignore_dga, bool, 0644);11141112MODULE_PARM_DESC(ignore_dga, "Ignore devices with id 08fd:0001");
+12-3
net/bluetooth/bnep/core.c
···5757#define BT_DBG(D...)5858#endif59596060-#define VERSION "1.2"6060+#define VERSION "1.3"6161+6262+static int compress_src = 1;6363+static int compress_dst = 1;61646265static LIST_HEAD(bnep_session_list);6366static DECLARE_RWSEM(bnep_session_sem);···421418 iv[il++] = (struct kvec) { &type, 1 };422419 len++;423420424424- if (!compare_ether_addr(eh->h_dest, s->eh.h_source))421421+ if (compress_src && !compare_ether_addr(eh->h_dest, s->eh.h_source))425422 type |= 0x01;426423427427- if (!compare_ether_addr(eh->h_source, s->eh.h_dest))424424+ if (compress_dst && !compare_ether_addr(eh->h_source, s->eh.h_dest))428425 type |= 0x02;429426430427 if (type)···729726730727module_init(bnep_init);731728module_exit(bnep_exit);729729+730730+module_param(compress_src, bool, 0644);731731+MODULE_PARM_DESC(compress_src, "Compress sources headers");732732+733733+module_param(compress_dst, bool, 0644);734734+MODULE_PARM_DESC(compress_dst, "Compress destination headers");732735733736MODULE_AUTHOR("David Libault <david.libault@inventel.fr>, Maxim Krasnyansky <maxk@qualcomm.com>");734737MODULE_DESCRIPTION("Bluetooth BNEP ver " VERSION);