diff --git a/stack/l2cap/l2c_utils.c b/stack/l2cap/l2c_utils.c index b911db21464fef8e645825d803ea32b396728e71..457ea2de0c1e7a016909ef43a25f5a1c5bb6c32d 100644 --- a/stack/l2cap/l2c_utils.c +++ b/stack/l2cap/l2c_utils.c @@ -136,6 +136,28 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) btm_remove_sco_links(p_lcb->remote_bd_addr); #endif + if (p_lcb->sent_not_acked > 0) + { +#if (BLE_INCLUDED == TRUE) + if (p_lcb->is_ble_link) + { + l2cb.controller_le_xmit_window += p_lcb->sent_not_acked; + if (l2cb.controller_le_xmit_window > l2cb.num_lm_ble_bufs) + { + l2cb.controller_le_xmit_window = l2cb.num_lm_ble_bufs; + } + } + else +#endif + { + l2cb.controller_xmit_window += p_lcb->sent_not_acked; + if (l2cb.controller_xmit_window > l2cb.num_lm_acl_bufs) + { + l2cb.controller_xmit_window = l2cb.num_lm_acl_bufs; + } + } + } + #if (BLE_INCLUDED == TRUE) p_lcb->is_ble_link = FALSE; l2cb.is_ble_connecting = FALSE; @@ -183,15 +205,6 @@ void l2cu_release_lcb (tL2C_LCB *p_lcb) if (l2cb.num_links_active >= 1) l2cb.num_links_active--; - if (p_lcb->sent_not_acked > 0) - { - l2cb.controller_xmit_window += p_lcb->sent_not_acked; - if (l2cb.controller_xmit_window > l2cb.num_lm_acl_bufs) - { - l2cb.controller_xmit_window = l2cb.num_lm_acl_bufs; - } - } - l2c_link_adjust_allocation(); /* Check for ping outstanding */