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 */