Bluetooth: Save connection interval parameters in hci_conn
authorAndre Guedes <andre.guedes@openbossa.org>
Thu, 30 Jan 2014 21:22:04 +0000 (18:22 -0300)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 13 Feb 2014 07:51:41 +0000 (09:51 +0200)
This patch creates two new fields in struct hci_conn to save the
minimum and maximum connection interval values used to establish
the connection this object represents.

This change is required in order to know what parameters the
connection is currently using.

Signed-off-by: Andre Guedes <andre.guedes@openbossa.org>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/bluetooth/hci_core.h
net/bluetooth/hci_conn.c

index 378e2f32cfa00ea969e3a42c17a1b62bbd231bfa..b9676cc1a59d5c79ed1b6d8942308db5876769c9 100644 (file)
@@ -334,6 +334,8 @@ struct hci_conn {
        __u8            passkey_entered;
        __u16           disc_timeout;
        __u16           setting;
+       __u16           le_conn_min_interval;
+       __u16           le_conn_max_interval;
        unsigned long   flags;
 
        __u8            remote_cap;
index 0266bd8e4913008bdfaf8627349c0863884d6217..7f148c975736d14aa779a18bfd97c52640377a55 100644 (file)
@@ -558,8 +558,8 @@ static int hci_create_le_conn(struct hci_conn *conn)
        bacpy(&cp.peer_addr, &conn->dst);
        cp.peer_addr_type = conn->dst_type;
        cp.own_address_type = conn->src_type;
-       cp.conn_interval_min = cpu_to_le16(hdev->le_conn_min_interval);
-       cp.conn_interval_max = cpu_to_le16(hdev->le_conn_max_interval);
+       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 = __constant_cpu_to_le16(0x002a);
        cp.min_ce_len = __constant_cpu_to_le16(0x0000);
        cp.max_ce_len = __constant_cpu_to_le16(0x0000);
@@ -624,6 +624,8 @@ static struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
        conn->sec_level = BT_SECURITY_LOW;
        conn->pending_sec_level = sec_level;
        conn->auth_type = auth_type;
+       conn->le_conn_min_interval = hdev->le_conn_min_interval;
+       conn->le_conn_max_interval = hdev->le_conn_max_interval;
 
        err = hci_create_le_conn(conn);
        if (err)