Bluetooth: Use LE connection parameters if known
authorMarcel Holtmann <marcel@holtmann.org>
Sun, 29 Jun 2014 14:43:27 +0000 (16:43 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Jul 2014 15:42:50 +0000 (17:42 +0200)
When the LE connection parameters for connection latency and
supervision timeout are known, then use then. If they are not
know fallback to defaults.

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

index adb413d..e7ee726 100644 (file)
@@ -645,7 +645,8 @@ static void hci_req_add_le_create_conn(struct hci_request *req,
        cp.own_address_type = own_addr_type;
        cp.conn_interval_min = cpu_to_le16(conn->le_conn_min_interval);
        cp.conn_interval_max = cpu_to_le16(conn->le_conn_max_interval);
-       cp.supervision_timeout = cpu_to_le16(0x002a);
+       cp.conn_latency = cpu_to_le16(conn->le_conn_latency);
+       cp.supervision_timeout = cpu_to_le16(conn->le_supv_timeout);
        cp.min_ce_len = cpu_to_le16(0x0000);
        cp.max_ce_len = cpu_to_le16(0x0000);
 
@@ -767,9 +768,13 @@ struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
        if (params) {
                conn->le_conn_min_interval = params->conn_min_interval;
                conn->le_conn_max_interval = params->conn_max_interval;
+               conn->le_conn_latency = params->conn_latency;
+               conn->le_supv_timeout = params->supervision_timeout;
        } 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;
        }
 
        /* If controller is scanning, we stop it since some controllers are