Skip to content

Commit

Permalink
Bluetooth: Check earlier for L2CAP ERTM frames to drop
Browse files Browse the repository at this point in the history
Even when the received tx_seq is expected, the frame still needs to be
dropped if the TX window is exceeded or the receiver is in the local
busy state.

Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
  • Loading branch information
Mat Martineau authored and Gustavo F. Padovan committed Jul 1, 2011
1 parent f8c1fbd commit 02f1b64
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions net/bluetooth/l2cap_core.c
Original file line number Diff line number Diff line change
Expand Up @@ -3522,9 +3522,6 @@ static inline int l2cap_data_channel_iframe(struct l2cap_chan *chan, u16 rx_cont
chan->expected_ack_seq = req_seq;
l2cap_drop_acked_frames(chan);

if (tx_seq == chan->expected_tx_seq)
goto expected;

tx_seq_offset = (tx_seq - chan->buffer_seq) % 64;
if (tx_seq_offset < 0)
tx_seq_offset += 64;
Expand All @@ -3538,6 +3535,9 @@ static inline int l2cap_data_channel_iframe(struct l2cap_chan *chan, u16 rx_cont
if (test_bit(CONN_LOCAL_BUSY, &chan->conn_state))
goto drop;

if (tx_seq == chan->expected_tx_seq)
goto expected;

if (test_bit(CONN_SREJ_SENT, &chan->conn_state)) {
struct srej_list *first;

Expand Down

0 comments on commit 02f1b64

Please sign in to comment.