Re: [PATCH 4/4] Bluetooth: add a timer to L2CAP MSG_MORE code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Fri, 11 May 2012, Gustavo Padovan wrote:

* Mat Martineau <mathewm@xxxxxxxxxxxxxx> [2012-05-11 11:38:15 -0700]:


On Fri, 11 May 2012, Gustavo Padovan wrote:

There is now a 200 milliseconds limit for which L2CAP will wait for
which L2CAP will wait before send the already queued data to the
controller.

Signed-off-by: Gustavo Padovan <gustavo@xxxxxxxxxxx>

A timeout like this makes sense with a streaming protocol, but not
with a datagram protocol like L2CAP.  The application could be
waiting on file I/O (especially on a flash filesystem), be waiting
for another blocking call to return, or another resource-intensive
application could be hogging the processor for a short time.  If an
incomplete SDU gets sent out because of a timeout like this, the
profile on the other side will see it as corrupt.  Better to keep
the queued data indefinitely.

I don't think this would case problems, before this gets to the profile the ACL frame needs to be built and it won't be until we get the all pieces of the L2CAP frame.

This doesn't have anything to do with ACL fragments. When the timeout expires, you're sending an L2CAP frame that will get passed up to the remote profile right away. The remote L2CAP protocol will not wait for any more data before passing the frame up to the profile, because L2CAP doesn't know any more data is coming.

I'm following the TCP behaviour with MSG_MORE here.

TCP is a stream, like RFCOMM. UDP and L2CAP are based on datagrams. The 200ms timeout makes sense for a stream, because message boundaries have no meaning in a stream like TCP. Splitting up an L2CAP PDU like this breaks all kinds of profiles that depend on message boundaries.

--
Mat Martineau
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux