summaryrefslogtreecommitdiffstats
path: root/net/bluetooth/hci_core.c
diff options
context:
space:
mode:
authorAndre Guedes2014-02-27 00:21:51 +0100
committerMarcel Holtmann2014-02-27 04:41:35 +0100
commit6046dc3e0602256b9941241dfd6b2e4824999b01 (patch)
tree4afff3666f04427f71b6a84869d548837a1f7a75 /net/bluetooth/hci_core.c
parentBluetooth: Temporarily stop background scanning on discovery (diff)
downloadkernel-qcow2-linux-6046dc3e0602256b9941241dfd6b2e4824999b01.tar.gz
kernel-qcow2-linux-6046dc3e0602256b9941241dfd6b2e4824999b01.tar.xz
kernel-qcow2-linux-6046dc3e0602256b9941241dfd6b2e4824999b01.zip
Bluetooth: Auto connection and power on
When hdev is closed (e.g. Mgmt power off command, RFKILL or controller is reset), the ongoing active connections are silently dropped by the controller (no Disconnection Complete Event is sent to host). For that reason, the devices that require HCI_AUTO_CONN_ALWAYS are not added to hdev->pend_le_conns list and they won't auto connect. So to fix this issue, during hdev closing, we remove all pending LE connections. After adapter is powered on, we add a pending LE connection for each HCI_AUTO_CONN_ALWAYS address. This way, the auto connection mechanism works propely after a power off and power on sequence as well as RFKILL block/unblock. Signed-off-by: Andre Guedes <andre.guedes@openbossa.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/hci_core.c')
-rw-r--r--net/bluetooth/hci_core.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 507a137a584b..9470a9c14324 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -2266,6 +2266,7 @@ static int hci_dev_do_close(struct hci_dev *hdev)
hci_dev_lock(hdev);
hci_inquiry_cache_flush(hdev);
hci_conn_hash_flush(hdev);
+ hci_pend_le_conns_clear(hdev);
hci_dev_unlock(hdev);
hci_notify(hdev, HCI_DEV_DOWN);