Bluetooth: Fix missing update of conn params
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 2 Jul 2014 14:37:30 +0000 (17:37 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Jul 2014 15:42:57 +0000 (17:42 +0200)
We should update any stored connection parameters when we receive the LE
Remote Connection Parameter Request HCI event. This patch adds the
necessary code to the function that handles the event.

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

index ed49a065dd673ad72291d00d12f432766c256a94..3ad2576fd3f1d97c41897b76f7e75cf65d70d8dc 100644 (file)
@@ -4429,9 +4429,25 @@ static void hci_le_remote_conn_param_req_evt(struct hci_dev *hdev,
                return send_conn_param_neg_reply(hdev, handle,
                                                 HCI_ERROR_INVALID_LL_PARAMS);
 
-       if (test_bit(HCI_CONN_MASTER, &hcon->flags))
+       if (test_bit(HCI_CONN_MASTER, &hcon->flags)) {
+               struct hci_conn_params *params;
+
+               hci_dev_lock(hdev);
+
+               params = hci_conn_params_lookup(hdev, &hcon->dst,
+                                               hcon->dst_type);
+               if (params) {
+                       params->conn_min_interval = min;
+                       params->conn_max_interval = max;
+                       params->conn_latency = latency;
+                       params->supervision_timeout = timeout;
+               }
+
+               hci_dev_unlock(hdev);
+
                mgmt_new_conn_param(hdev, &hcon->dst, hcon->dst_type, min, max,
                                    latency, timeout);
+       }
 
        cp.handle = ev->handle;
        cp.interval_min = ev->interval_min;