Bluetooth: Add SCO fallback for eSCO connection attempts
authorMarcel Holtmann <marcel@holtmann.org>
Fri, 6 Feb 2009 08:13:37 +0000 (09:13 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 27 Feb 2009 05:14:37 +0000 (06:14 +0100)
commitefc7688b557dd1be10eead7399b315efcb1dbc74
treef51d32d047bbf27a106db679292c10a81b339836
parent255c76014af74165428e7aa16414b857e2bdccf2
Bluetooth: Add SCO fallback for eSCO connection attempts

When attempting to setup eSCO connections it can happen that some link
manager implementations fail to properly negotiate the eSCO parameters
and thus fail the eSCO setup. Normally the link manager is responsible
for the negotiation of the parameters and actually fallback to SCO if
no agreement can be reached. In cases where the link manager is just too
stupid, then at least try to establish a SCO link if eSCO fails.

For the Bluetooth devices with EDR support this includes handling packet
types of EDR basebands. This is particular tricky since for the EDR the
logic of enabling/disabling one specific packet type is turned around.
This fix contains an extra bitmask to disable eSCO EDR packet when
trying to fallback to a SCO connection.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/hci.h
net/bluetooth/hci_conn.c
net/bluetooth/hci_event.c