OSDN Git Service

L2cap shim: Send config callback before register dequeue
authorHansong Zhang <hsz@google.com>
Thu, 4 Feb 2021 23:33:12 +0000 (15:33 -0800)
committerHansong Zhang <hsz@google.com>
Sat, 6 Feb 2021 06:14:15 +0000 (06:14 +0000)
We want to let the client (AVCT) know the MTU first.  They might need to
send something without MTU available.

On AVCT side, initialize MTU as minimal L2cap MTU for now.

Bug: 179071567
Test: Speaker
Tag: #stability
Change-Id: I654c5fd302096876a3b6d245d173a735468ba949

main/shim/l2c_api.cc
stack/avct/avct_lcb.cc

index 4ef455e..f6b1cc2 100644 (file)
@@ -178,18 +178,10 @@ struct ClassicDynamicChannelHelper {
     channel->RegisterOnCloseCallback(GetGdShimHandler()->BindOnceOn(
         this, &ClassicDynamicChannelHelper::on_channel_close, cid_token));
 
-    channel->GetQueueUpEnd()->RegisterDequeue(
-        GetGdShimHandler(),
-        bluetooth::common::Bind(&ClassicDynamicChannelHelper::on_incoming_data,
-                                bluetooth::common::Unretained(this),
-                                cid_token));
-
     channel_enqueue_buffer_[cid_token] = std::make_unique<
         bluetooth::os::EnqueueBuffer<bluetooth::packet::BasePacketBuilder>>(
         channel->GetQueueUpEnd());
 
-    channels_[cid_token] = std::move(channel);
-
     if (initiator_local) {
       do_in_main_thread(
           FROM_HERE, base::Bind(appl_info_.pL2CA_ConnectCfm_Cb, cid_token, 0));
@@ -211,6 +203,14 @@ struct ClassicDynamicChannelHelper {
                                               cid_token, L2CAP_INITIATOR_LOCAL,
                                               base::Unretained(&cfg_info)));
     }
+
+    channel->GetQueueUpEnd()->RegisterDequeue(
+        GetGdShimHandler(),
+        bluetooth::common::Bind(&ClassicDynamicChannelHelper::on_incoming_data,
+                                bluetooth::common::Unretained(this),
+                                cid_token));
+
+    channels_[cid_token] = std::move(channel);
   }
 
   void on_incoming_data(uint16_t cid_token) {
index 8a9c8ee..1cd6219 100644 (file)
@@ -271,6 +271,7 @@ tAVCT_LCB* avct_lcb_alloc(const RawAddress& bd_addr) {
       p_lcb->peer_addr = bd_addr;
       AVCT_TRACE_DEBUG("avct_lcb_alloc %d", p_lcb->allocated);
       p_lcb->tx_q = fixed_queue_new(SIZE_MAX);
+      p_lcb->peer_mtu = L2CAP_LE_MIN_MTU;
       break;
     }
   }