aboutsummaryrefslogtreecommitdiffstats
path: root/net/bluetooth/l2cap.c
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2010-06-16 16:21:44 -0400
committerMarcel Holtmann <marcel@holtmann.org>2010-07-21 13:39:06 -0400
commit2ece3684b4037ad2394de795d67abbe412ab5e2f (patch)
treeb06d7a5e57517068ce782864112e2de3cf4b3826 /net/bluetooth/l2cap.c
parent7fe9b298c98fdfecf3b0efb4c971b7696d091ae9 (diff)
Bluetooth: Update buffer_seq before retransmit frames
Updating buffer_seq first make us able to ack the last I-frame received. This is also a requirement of the Profile Tuning Suite software. Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth/l2cap.c')
-rw-r--r--net/bluetooth/l2cap.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 40cf67c11d20..ecf3e3dcefe3 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -3931,6 +3931,10 @@ expected:
3931 return 0; 3931 return 0;
3932 } 3932 }
3933 3933
3934 err = l2cap_push_rx_skb(sk, skb, rx_control);
3935 if (err < 0)
3936 return 0;
3937
3934 if (rx_control & L2CAP_CTRL_FINAL) { 3938 if (rx_control & L2CAP_CTRL_FINAL) {
3935 if (pi->conn_state & L2CAP_CONN_REJ_ACT) 3939 if (pi->conn_state & L2CAP_CONN_REJ_ACT)
3936 pi->conn_state &= ~L2CAP_CONN_REJ_ACT; 3940 pi->conn_state &= ~L2CAP_CONN_REJ_ACT;
@@ -3938,10 +3942,6 @@ expected:
3938 l2cap_retransmit_frames(sk); 3942 l2cap_retransmit_frames(sk);
3939 } 3943 }
3940 3944
3941 err = l2cap_push_rx_skb(sk, skb, rx_control);
3942 if (err < 0)
3943 return 0;
3944
3945 __mod_ack_timer(); 3945 __mod_ack_timer();
3946 3946
3947 pi->num_acked = (pi->num_acked + 1) % num_to_ack; 3947 pi->num_acked = (pi->num_acked + 1) % num_to_ack;