diff options
author | Gustavo F. Padovan <gustavo@las.ic.unicamp.br> | 2009-12-15 20:13:27 -0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-12-17 12:06:23 -0800 |
commit | 186ee8cf0130993dea8ab8867ff1af8a148f9ae6 (patch) | |
tree | dd65c1c454625194b85f6c458ccf96c1a7ef062a /net/bluetooth/l2cap.c | |
parent | 186de9a33803c7ee20d9af75c9049b50e68a3a08 (diff) | |
download | lwn-186ee8cf0130993dea8ab8867ff1af8a148f9ae6.tar.gz lwn-186ee8cf0130993dea8ab8867ff1af8a148f9ae6.zip |
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/bluetooth/l2cap.c')
-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 pi->conn_state &= ~L2CAP_CONN_REMOTE_BUSY; if (rx_control & L2CAP_CTRL_POLL) { - l2cap_retransmit_frame(sk, tx_seq); pi->expected_ack_seq = tx_seq; l2cap_drop_acked_frames(sk); + l2cap_retransmit_frame(sk, tx_seq); l2cap_ertm_send(sk); if (pi->conn_state & L2CAP_CONN_WAIT_F) { pi->srej_save_reqseq = tx_seq; |