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;