Bluetooth: Provide defaults for LE connection latency and timeout
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 30 Jun 2014 10:34:36 +0000 (12:34 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Jul 2014 15:42:51 +0000 (17:42 +0200)
Store the connection latency and supervision timeout default values
with all the other controller defaults. And when needed use them
for new connections.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
include/net/bluetooth/hci_core.h
net/bluetooth/hci_conn.c
net/bluetooth/hci_core.c

index 182044824495ff58f8cc7fb8ca0ec2f25f516d4f..ed842c7e5cf1a5d9248113e5282acc9c85843805 100644 (file)
@@ -203,6 +203,8 @@ struct hci_dev {
        __u16           le_scan_window;
        __u16           le_conn_min_interval;
        __u16           le_conn_max_interval;
+       __u16           le_conn_latency;
+       __u16           le_supv_timeout;
        __u16           discov_interleaved_timeout;
        __u16           conn_info_min_age;
        __u16           conn_info_max_age;
index e7ee7267f84617ce47d7672be7241b2348b0d635..d00aaf976efc39d0e8951468c7a5e558dc04ca66 100644 (file)
@@ -773,8 +773,8 @@ struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
        } else {
                conn->le_conn_min_interval = hdev->le_conn_min_interval;
                conn->le_conn_max_interval = hdev->le_conn_max_interval;
-               conn->le_conn_latency = 0x0000;
-               conn->le_supv_timeout = 0x002a;
+               conn->le_conn_latency = hdev->le_conn_latency;
+               conn->le_supv_timeout = hdev->le_supv_timeout;
        }
 
        /* If controller is scanning, we stop it since some controllers are
index 8d972023196b80eb7be76d6db337593b56dd1de7..94551c33c4c6a3a57fc6af66da8b3e9717372aa8 100644 (file)
@@ -3439,8 +3439,8 @@ int hci_conn_params_add(struct hci_dev *hdev, bdaddr_t *addr, u8 addr_type,
 update:
        params->conn_min_interval = conn_min_interval;
        params->conn_max_interval = conn_max_interval;
-       params->conn_latency = 0x0000;
-       params->supervision_timeout = 0x002a;
+       params->conn_latency = hdev->le_conn_latency;
+       params->supervision_timeout = hdev->le_supv_timeout;
        params->auto_connect = auto_connect;
 
        switch (auto_connect) {
@@ -3706,6 +3706,8 @@ struct hci_dev *hci_alloc_dev(void)
        hdev->le_scan_window = 0x0030;
        hdev->le_conn_min_interval = 0x0028;
        hdev->le_conn_max_interval = 0x0038;
+       hdev->le_conn_latency = 0x0000;
+       hdev->le_supv_timeout = 0x002a;
 
        hdev->rpa_timeout = HCI_DEFAULT_RPA_TIMEOUT;
        hdev->discov_interleaved_timeout = DISCOV_INTERLEAVED_TIMEOUT;