• M
    Bluetooth: Use a stream-oriented recvmsg with SOCK_STREAM L2CAP sockets. · 6fdf482b
    Mat Martineau 提交于
    L2CAP ERTM sockets can be opened with the SOCK_STREAM socket type,
    which is a mandatory request for ERTM mode.
    
    However, these sockets still have SOCK_SEQPACKET read semantics when
    bt_sock_recvmsg() is used to pull data from the receive queue.  If the
    application is only reading part of a frame, then the unread portion
    of the frame is discarded.  If the application requests more bytes
    than are in the current frame, only the current frame's data is
    returned.
    
    This patch utilizes common code derived from RFCOMM's recvmsg()
    function to make L2CAP SOCK_STREAM reads behave like RFCOMM reads (and
    other SOCK_STREAM sockets in general).  The application may read one
    byte at a time from the input stream and not lose any data, and may
    also read across L2CAP frame boundaries.
    Signed-off-by: NMat Martineau <mathewm@codeaurora.org>
    Acked-by: NMarcel Holtmann <marcel@holtmann.org>
    Signed-off-by: NGustavo F. Padovan <padovan@profusion.mobi>
    6fdf482b
l2cap.c 108.8 KB