diff --git a/system/binder/android/bluetooth/IBluetoothGatt.aidl b/system/binder/android/bluetooth/IBluetoothGatt.aidl
index 72b0b2899323929d0da6d28cbacd053bb9559503..c9e1c4bc8904fa4880182a36e0e99a03aca8f6f0 100644
--- a/system/binder/android/bluetooth/IBluetoothGatt.aidl
+++ b/system/binder/android/bluetooth/IBluetoothGatt.aidl
@@ -96,7 +96,8 @@ interface IBluetoothGatt {
     void configureMTU(in int clientIf, in String address, in int mtu);
     void connectionParameterUpdate(in int clientIf, in String address, in int connectionPriority);
     void leConnectionUpdate(int clientIf, String address, int minInterval,
-                            int maxInterval, int slaveLatency, int supervisionTimeout);
+                            int maxInterval, int slaveLatency, int supervisionTimeout,
+                            int minConnectionEventLen, int maxConnectionEventLen);
 
     void registerServer(in ParcelUuid appId, in IBluetoothGattServerCallback callback);
     void unregisterServer(in int serverIf);
diff --git a/system/bta/dm/bta_dm_act.cc b/system/bta/dm/bta_dm_act.cc
index 9ec15ac98cd9e4bc9b7552080a5bf35cde61508c..b7a26bd947fdedd2132ee5c28dda55d613300591 100644
--- a/system/bta/dm/bta_dm_act.cc
+++ b/system/bta/dm/bta_dm_act.cc
@@ -3971,8 +3971,10 @@ void bta_dm_ble_set_conn_scan_params(uint32_t scan_interval,
 /** This function update LE connection parameters */
 void bta_dm_ble_update_conn_params(const RawAddress& bd_addr, uint16_t min_int,
                                    uint16_t max_int, uint16_t latency,
-                                   uint16_t timeout) {
-  if (!L2CA_UpdateBleConnParams(bd_addr, min_int, max_int, latency, timeout)) {
+                                   uint16_t timeout, uint16_t min_ce_len,
+                                   uint16_t max_ce_len) {
+  if (!L2CA_UpdateBleConnParams(bd_addr, min_int, max_int, latency, timeout,
+                                min_ce_len, max_ce_len)) {
     APPL_TRACE_ERROR("Update connection parameters failed!");
   }
 }
diff --git a/system/bta/dm/bta_dm_api.cc b/system/bta/dm/bta_dm_api.cc
index e1c0266230707884a303eb29ba7f35cb309692bf..e968bd1fc5ee6a0135ebb1fe4df8e7f3e78fcf73 100644
--- a/system/bta/dm/bta_dm_api.cc
+++ b/system/bta/dm/bta_dm_api.cc
@@ -727,9 +727,11 @@ void BTA_DmSearchExt(tBTA_DM_INQ* p_dm_inq, tBTA_SERVICE_MASK_EXT* p_services,
  ******************************************************************************/
 void BTA_DmBleUpdateConnectionParams(const RawAddress& bd_addr,
                                      uint16_t min_int, uint16_t max_int,
-                                     uint16_t latency, uint16_t timeout) {
-  do_in_bta_thread(FROM_HERE, base::Bind(bta_dm_ble_update_conn_params, bd_addr,
-                                         min_int, max_int, latency, timeout));
+                                     uint16_t latency, uint16_t timeout,
+                                     uint16_t min_ce_len, uint16_t max_ce_len) {
+  do_in_bta_thread(
+      FROM_HERE, base::Bind(bta_dm_ble_update_conn_params, bd_addr, min_int,
+                            max_int, latency, timeout, min_ce_len, max_ce_len));
 }
 
 /*******************************************************************************
diff --git a/system/bta/dm/bta_dm_int.h b/system/bta/dm/bta_dm_int.h
index b0ec483abcdb2cdcff5884f59a33cdf8c47c3d2c..6aafd7d4704f3fe2e1d8a82fc73af114d3abefba 100644
--- a/system/bta/dm/bta_dm_int.h
+++ b/system/bta/dm/bta_dm_int.h
@@ -507,7 +507,8 @@ extern void bta_dm_ble_set_conn_scan_params(uint32_t, uint32_t);
 extern void bta_dm_close_gatt_conn(tBTA_DM_MSG* p_data);
 extern void bta_dm_ble_observe(bool, uint8_t, tBTA_DM_SEARCH_CBACK*);
 extern void bta_dm_ble_update_conn_params(const RawAddress&, uint16_t, uint16_t,
-                                          uint16_t, uint16_t);
+                                          uint16_t, uint16_t, uint16_t,
+                                          uint16_t);
 extern void bta_dm_ble_config_local_privacy(bool);
 extern void bta_dm_ble_set_adv_params(uint16_t adv_int_min,
                                       uint16_t adv_int_max,
diff --git a/system/bta/include/bta_api.h b/system/bta/include/bta_api.h
index e8f46aff75beb3806b13cad5b2bfd41132ef4906..9d4693e0b76f5956ba3ee5b1faab5541103ef4be 100644
--- a/system/bta/include/bta_api.h
+++ b/system/bta/include/bta_api.h
@@ -1648,7 +1648,9 @@ extern void BTA_DmBleEnableRemotePrivacy(const RawAddress& bd_addr,
  ******************************************************************************/
 extern void BTA_DmBleUpdateConnectionParams(const RawAddress& bd_addr,
                                             uint16_t min_int, uint16_t max_int,
-                                            uint16_t latency, uint16_t timeout);
+                                            uint16_t latency, uint16_t timeout,
+                                            uint16_t min_ce_len,
+                                            uint16_t max_ce_len);
 
 /*******************************************************************************
  *
diff --git a/system/btif/src/btif_gatt_client.cc b/system/btif/src/btif_gatt_client.cc
index e49fee87e4b4c2268166c2122ee2c827c889abc0..0e06bbb908323f8bfdebf90cf0a2aa260b0cef0e 100644
--- a/system/btif/src/btif_gatt_client.cc
+++ b/system/btif/src/btif_gatt_client.cc
@@ -537,10 +537,11 @@ bt_status_t btif_gattc_configure_mtu(int conn_id, int mtu) {
 
 void btif_gattc_conn_parameter_update_impl(RawAddress addr, int min_interval,
                                            int max_interval, int latency,
-                                           int timeout) {
+                                           int timeout, uint16_t min_ce_len,
+                                           uint16_t max_ce_len) {
   if (BTA_DmGetConnectionState(addr))
     BTA_DmBleUpdateConnectionParams(addr, min_interval, max_interval, latency,
-                                    timeout);
+                                    timeout, min_ce_len, max_ce_len);
   else
     BTA_DmSetBlePrefConnParams(addr, min_interval, max_interval, latency,
                                timeout);
@@ -548,11 +549,13 @@ void btif_gattc_conn_parameter_update_impl(RawAddress addr, int min_interval,
 
 bt_status_t btif_gattc_conn_parameter_update(const RawAddress& bd_addr,
                                              int min_interval, int max_interval,
-                                             int latency, int timeout) {
+                                             int latency, int timeout,
+                                             uint16_t min_ce_len,
+                                             uint16_t max_ce_len) {
   CHECK_BTGATT_INIT();
-  return do_in_jni_thread(
-      Bind(base::IgnoreResult(&btif_gattc_conn_parameter_update_impl), bd_addr,
-           min_interval, max_interval, latency, timeout));
+  return do_in_jni_thread(Bind(
+      base::IgnoreResult(&btif_gattc_conn_parameter_update_impl), bd_addr,
+      min_interval, max_interval, latency, timeout, min_ce_len, max_ce_len));
 }
 
 bt_status_t btif_gattc_set_preferred_phy(const RawAddress& bd_addr,
diff --git a/system/include/hardware/bt_gatt_client.h b/system/include/hardware/bt_gatt_client.h
index 4c9d464eaa67f7321246c2ef12c41aeb0a6b6bf3..6ea1c89c635c0804059c0637ebd746ea9de7e4f0 100644
--- a/system/include/hardware/bt_gatt_client.h
+++ b/system/include/hardware/bt_gatt_client.h
@@ -288,7 +288,9 @@ typedef struct {
   /** Request a connection parameter update */
   bt_status_t (*conn_parameter_update)(const RawAddress& bd_addr,
                                        int min_interval, int max_interval,
-                                       int latency, int timeout);
+                                       int latency, int timeout,
+                                       uint16_t min_ce_len,
+                                       uint16_t max_ce_len);
 
   bt_status_t (*set_preferred_phy)(const RawAddress& bd_addr, uint8_t tx_phy,
                                    uint8_t rx_phy, uint16_t phy_options);
diff --git a/system/stack/l2cap/l2c_ble.cc b/system/stack/l2cap/l2c_ble.cc
index 51f81cfb23959dfe40066c4c32407a06bb521c29..839e5f01cc7b981d05d28387f6eff5193557d612 100644
--- a/system/stack/l2cap/l2c_ble.cc
+++ b/system/stack/l2cap/l2c_ble.cc
@@ -117,6 +117,10 @@ bool L2CA_UpdateBleConnParams(const RawAddress& rem_bda, uint16_t min_int,
     return (false);
   }
 
+  VLOG(2) << __func__ << ": BD_ADDR=" << rem_bda << ", min_int=" << min_int
+          << ", max_int=" << max_int << ", min_ce_len=" << min_ce_len
+          << ", max_ce_len=" << max_ce_len;
+
   p_lcb->min_interval = min_int;
   p_lcb->max_interval = max_int;
   p_lcb->latency = latency;