Fix LE buffer size for 0 length buffers
If the local chip reports 0 LE data buffers and 0 LE ACL data package
length, then the default ACL buffer length as returned byt the
Read_Buffer_Size command is to be used instead.
Change-Id: I953fabe426a98cc1b005d3b46c3e7f227c23a686
diff --git a/stack/btm/btm_devctl.c b/stack/btm/btm_devctl.c
index e893edf..8e883d7 100644
--- a/stack/btm/btm_devctl.c
+++ b/stack/btm/btm_devctl.c
@@ -784,6 +784,9 @@
STREAM_TO_UINT16 (btu_cb.hcit_ble_acl_data_size, p);
STREAM_TO_UINT8 (lm_num_le_bufs, p);
+ if (btu_cb.hcit_ble_acl_data_size == 0)
+ btu_cb.hcit_ble_acl_data_size = btu_cb.hcit_acl_data_size;
+
btu_cb.hcit_ble_acl_pkt_size = btu_cb.hcit_ble_acl_data_size + HCI_DATA_PREAMBLE_SIZE;
l2c_link_processs_ble_num_bufs (lm_num_le_bufs);
diff --git a/stack/l2cap/l2c_ble.c b/stack/l2cap/l2c_ble.c
index 0a296c8..e323587 100644
--- a/stack/l2cap/l2c_ble.c
+++ b/stack/l2cap/l2c_ble.c
@@ -622,6 +622,8 @@
*******************************************************************************/
void l2c_link_processs_ble_num_bufs (UINT16 num_lm_ble_bufs)
{
+ if (num_lm_ble_bufs == 0)
+ num_lm_ble_bufs = l2cb.num_lm_acl_bufs;
l2cb.num_lm_ble_bufs = l2cb.controller_le_xmit_window = num_lm_ble_bufs;
}