Bluetooth: Add common code for stream-oriented recvmsg()
authorMat Martineau <mathewm@codeaurora.org>
Wed, 8 Sep 2010 17:05:27 +0000 (10:05 -0700)
committerGustavo F. Padovan <padovan@profusion.mobi>
Tue, 12 Oct 2010 15:44:51 +0000 (12:44 -0300)
commit796c86eec84ddfd02281c5071838ed1fefda6b90
tree5b6c705846e46c39b4ddc233e5a1604d9fb9476d
parent0fba2558cbb3fae3a09147b7d6e18a6204204e0e
Bluetooth: Add common code for stream-oriented recvmsg()

This commit adds a bt_sock_stream_recvmsg() function for use by any
Bluetooth code that uses SOCK_STREAM sockets.  This code is copied
from rfcomm_sock_recvmsg() with minimal modifications to remove
RFCOMM-specific functionality and improve readability.

L2CAP (with the SOCK_STREAM socket type) and RFCOMM have common needs
when it comes to reading data.  Proper stream read semantics require
that applications can read from a stream one byte at a time and not
lose any data.  The RFCOMM code already operated on and pulled data
from the underlying L2CAP socket, so very few changes were required to
make the code more generic for use with non-RFCOMM data over L2CAP.

Applications that need more awareness of L2CAP frame boundaries are
still free to use SOCK_SEQPACKET sockets, and may verify that they
connection did not fall back to basic mode by calling getsockopt().

Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
include/net/bluetooth/bluetooth.h
net/bluetooth/af_bluetooth.c