DO NOT MERGE sometime the BLE connection parameter isnot updated for the first time
When we receive the BLE connection parameter update
from remote device after smp_send_pair_req before
start BLE service discovery(bta_gattc_set_discover_st).
We will miss update this BLE connection parameter.
The reason is we call
L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, FALSE);
in smp_send_pair_req ,We change the state to UPD_DISABLED.
When we receive the new BLE connection parameter from
remote device, we will update the state to UPD_PENDING,
which will update the new connection parameter
when enable the connection parameter update.
when we start BLE service discovery
we call L2CA_EnableUpdateBleConnParams(p_srcb->server_bda, FALSE);
in bta_gattc_set_discover_st, We will update the state back to
UPD_DISABLED, which will cause we miss updating
the new connection parameter when enable the connection parameter update.
The fix is don't change the state to UPD_DISABLED
when the state is UPD_PENDING for disabling.
bug:11727252
Change-Id: I953b9ca669e3460e18b340e7779cc54e03d6305b
diff --git a/stack/l2cap/l2c_ble.c b/stack/l2cap/l2c_ble.c
index b8cddd7..3640687 100644
--- a/stack/l2cap/l2c_ble.c
+++ b/stack/l2cap/l2c_ble.c
@@ -190,7 +190,11 @@
(UINT16) ((p_dev_rec->conn_params.supervision_tout != BTM_BLE_CONN_PARAM_UNDEF) ? p_dev_rec->conn_params.supervision_tout : BTM_BLE_CONN_TIMEOUT_DEF),
0, 0);
}
- p_lcb->upd_disabled = UPD_DISABLED;
+
+ if (p_lcb->upd_disabled != UPD_PENDING)
+ {
+ p_lcb->upd_disabled = UPD_DISABLED;
+ }
}
return (TRUE);