From: Gustavo F. Padovan Date: Tue, 15 Dec 2009 22:13:27 +0000 (-0200) Subject: Bluetooth: Ack L2CAP I-frames before retransmit missing packet X-Git-Tag: v2.6.33-rc2~40^2~17 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=186ee8cf0130993dea8ab8867ff1af8a148f9ae6;p=~emulex%2Finfiniband.git 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 Signed-off-by: Marcel Holtmann --- diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c index 7db9a1f8f88..fb0f81d99f9 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;