• Gustavo F. Padovan's avatar
    Bluetooth: Fix spec error in the RemoteBusy Logic · 844c0972
    Gustavo F. Padovan authored
    On the receipt of an RR(P=1) under RemoteBusy set to TRUE(on the RECV
    state table) we have to call sendIorRRorRNR(F=1) and just after set
    RemoteBusy to False. This leads to a freeze in the sending process since
    it's not allowed send data with RemoteBusy set to true and no one
    call SendPending-I-Frames after set RemoteBusy to false(The last action
    for that event).
    
    Actually sendIorRRorRNR() calls SendPending-I-Frames but at that moment
    RemoteBusy is still True and we cannot send any frame, after, no one
    calls SendPending-I-Frames again and the sending process stops.
    
    The solution here is to set RemoteBusy to false inside
    SendPending-I-Frames just before call SendPending-I-Frames. That will
    make SendPending-I-Frames able to send frames. This solution is similar
    to what RR(P=0)(F=0) on the RECV table and RR(P=1) on the SREJ_SENT
    table do.
    
    Actually doesn't make any sense call SendPending-I-Frames if we can send
    any frame, i. e., RemoteBusy is True.
    Signed-off-by: default avatarGustavo F. Padovan <padovan@profusion.mobi>
    Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
    844c0972
l2cap.c 104 KB