OSDN Git Service

Don't starve a BT ACL link with 0 xmit quota
authorPrerepa Viswanadham <dham@google.com>
Thu, 23 Oct 2014 20:50:57 +0000 (13:50 -0700)
committerPrerepa Viswanadham <dham@google.com>
Thu, 23 Oct 2014 20:51:49 +0000 (20:51 +0000)
With new link management of controller buffers between
different ACL connections, it is possible that a ACL
conn would get 0 buffers - thus no profile can run.
This affects classic and LE ACL connections.

This work around allows a floor of 1 buffer as the
floor for all connection, irrespective of controller
capability.

Bug: 17976311
Change-Id: I7cd0d34af47c441c5ea7f2b836b591a4fec62ad1

stack/l2cap/l2c_ble.c
stack/l2cap/l2c_link.c

index a132775..75a2bfb 100644 (file)
@@ -836,7 +836,7 @@ void l2c_ble_link_adjust_allocation (void)
     if (num_lowpri_links > low_quota)
     {
         l2cb.ble_round_robin_quota = low_quota;
-        qq = qq_remainder = 0;
+        qq = qq_remainder = 1;
     }
     /* If each low priority link can have at least one buffer */
     else if (num_lowpri_links > 0)
@@ -851,7 +851,7 @@ void l2c_ble_link_adjust_allocation (void)
     {
         l2cb.ble_round_robin_quota = 0;
         l2cb.ble_round_robin_unacked = 0;
-        qq = qq_remainder = 0;
+        qq = qq_remainder = 1;
     }
     L2CAP_TRACE_EVENT ("l2c_ble_link_adjust_allocation  num_hipri: %u  num_lowpri: %u  low_quota: %u  round_robin_quota: %u  qq: %u",
                         num_hipri_links, num_lowpri_links, low_quota,
index aa8f66c..5ee5faa 100644 (file)
@@ -743,7 +743,7 @@ void l2c_link_adjust_allocation (void)
     if (num_lowpri_links > low_quota)
     {
         l2cb.round_robin_quota = low_quota;
-        qq = qq_remainder = 0;
+        qq = qq_remainder = 1;
     }
     /* If each low priority link can have at least one buffer */
     else if (num_lowpri_links > 0)
@@ -758,7 +758,7 @@ void l2c_link_adjust_allocation (void)
     {
         l2cb.round_robin_quota = 0;
         l2cb.round_robin_unacked = 0;
-        qq = qq_remainder = 0;
+        qq = qq_remainder = 1;
     }
 
     L2CAP_TRACE_EVENT ("l2c_link_adjust_allocation  num_hipri: %u  num_lowpri: %u  low_quota: %u  round_robin_quota: %u  qq: %u",