diff options
author | Gustavo F. Padovan <gustavo@las.ic.unicamp.br> | 2009-12-15 17:13:27 -0500 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-12-17 15:06:23 -0500 |
commit | 186ee8cf0130993dea8ab8867ff1af8a148f9ae6 (patch) | |
tree | dd65c1c454625194b85f6c458ccf96c1a7ef062a /net | |
parent | 186de9a33803c7ee20d9af75c9049b50e68a3a08 (diff) |
Bluetooth: Ack L2CAP I-frames before retransmit missing packet
Moving the Ack to before l2cap_retransmit_frame() we can avoid the
case where txWindow is full and the packet can't be retransmited.
Signed-off-by: Gustavo F. Padovan <gustavo@las.ic.unicamp.br>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/bluetooth/l2cap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 7db9a1f8f882..fb0f81d99f96 100644 --- a/net/bluetooth/l2cap.c +++ b/net/bluetooth/l2cap.c | |||
@@ -3471,9 +3471,9 @@ static inline int l2cap_data_channel_sframe(struct sock *sk, u16 rx_control, str | |||
3471 | pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; | 3471 | pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; |
3472 | 3472 | ||
3473 | if (rx_control & L2CAP_CTRL_POLL) { | 3473 | if (rx_control & L2CAP_CTRL_POLL) { |
3474 | l2cap_retransmit_frame(sk, tx_seq); | ||
3475 | pi->expected_ack_seq = tx_seq; | 3474 | pi->expected_ack_seq = tx_seq; |
3476 | l2cap_drop_acked_frames(sk); | 3475 | l2cap_drop_acked_frames(sk); |
3476 | l2cap_retransmit_frame(sk, tx_seq); | ||
3477 | l2cap_ertm_send(sk); | 3477 | l2cap_ertm_send(sk); |
3478 | if (pi->conn_state & L2CAP_CONN_WAIT_F) { | 3478 | if (pi->conn_state & L2CAP_CONN_WAIT_F) { |
3479 | pi->srej_save_reqseq = tx_seq; | 3479 | pi->srej_save_reqseq = tx_seq; |