linux/net/bluetooth
Marcel Holtmann 9499237a1c Bluetooth: Add workaround for wrong HCI event in eSCO setup
The Broadcom chips with 2.1 firmware handle the fallback case to a SCO
link wrongly when setting up eSCO connections.

  < HCI Command: Setup Synchronous Connection (0x01|0x0028) plen 17
      handle 11 voice setting 0x0060
  > HCI Event: Command Status (0x0f) plen 4
      Setup Synchronous Connection (0x01|0x0028) status 0x00 ncmd 1
  > HCI Event: Connect Complete (0x03) plen 11
      status 0x00 handle 1 bdaddr 00:1E:3A:xx:xx:xx type SCO encrypt 0x01

The Link Manager negotiates the fallback to SCO, but then sends out
a Connect Complete event. This is wrong and the Link Manager should
actually send a Synchronous Connection Complete event if the Setup
Synchronous Connection has been used. Only the remote side is allowed
to use Connect Complete to indicate the missing support for eSCO in
the host stack.

This patch adds a workaround for this which clearly should not be
needed, but reality is that broken Broadcom devices are deployed.

Based on a report by Ville Tervo <ville.tervo@nokia.com>

Signed-off-by: Marcel Holtman <marcel@holtmann.org>
2009-04-19 19:30:03 +02:00
..
bnep bluetooth: driver API update 2009-01-07 17:23:17 -08:00
cmtp Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:49 +01:00
hidp Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
rfcomm Bluetooth: Fix removing of RFCOMM DLC timer with DEFER_SETUP 2009-04-19 18:56:45 +02:00
af_bluetooth.c Bluetooth: Fix poll() misbehavior when using BT_DEFER_SETUP 2009-02-27 06:14:46 +01:00
hci_conn.c Bluetooth: Move hci_conn_del_sysfs() back to avoid device destruct too early 2009-02-27 06:14:49 +01:00
hci_core.c Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:49 +01:00
hci_event.c Bluetooth: Add workaround for wrong HCI event in eSCO setup 2009-04-19 19:30:03 +02:00
hci_sock.c Bluetooth: Enable per-module dynamic debug messages 2008-11-30 12:17:28 +01:00
hci_sysfs.c Driver core: Fix device_move() vs. dpm list ordering, v2 2009-03-24 16:38:26 -07:00
Kconfig [S390] Kconfig: unwanted menus for s390. 2007-05-10 15:46:07 +02:00
l2cap.c Bluetooth: Remove some pointless conditionals before kfree_skb() 2009-02-27 06:14:49 +01:00
lib.c
Makefile
sco.c Bluetooth: Ask upper layers for HCI disconnect reason 2009-02-27 06:14:43 +01:00