Bluetooth: Fix unset of SrejActioned flag
commit889a3ca466018ab68363c3168993793bc2d984f1
authorGustavo F. Padovan <gustavo@las.ic.unicamp.br>
Sat, 3 Oct 2009 05:34:37 +0000 (3 02:34 -0300)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 3 Dec 2009 18:34:23 +0000 (3 19:34 +0100)
treec3247c246d982546eb19328efff9253a8e2b5155
parent0565c1c24af94130b891f989fa608faddfadc52c
Bluetooth: Fix unset of SrejActioned flag

SrejActioned  is a flag that when set prevents local side to retransmit a
I-frame(the data frame) already retransmitted. The local entity can
retransmit again only when it receives a SREJ frame with the F-bit set.
SREJ frame - Selective Reject frame  - is sent when an entity wants the
retransmission of a specific I-frame that was lost or corrupted.
This bug can put ERTM in an unknown state once the entity can't
retransmit.
A frame with the Final bit set is expected when the local side sends a
frame with the Poll bit set due to a local busy condition or a
retransmission timer expired. (Receipt of P-bit shall always be replied by
a frame with the F-bit set).
pi->conn_state keeps informations about many ERTM flags including
SrejActioned.

Signed-off-by: Gustavo F. Padovan <gustavo@las.ic.unicamp.br>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/l2cap.c