diff options
author | Gustavo F. Padovan <padovan@profusion.mobi> | 2010-05-01 15:15:39 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-05-10 03:28:48 -0400 |
commit | c1b4f43be01c2a363be021485dd18cca33cfab8a (patch) | |
tree | 3244f14f00eb6a227e52b2a8ddd7063ef0961840 /include/net/bluetooth | |
parent | 05fbd89dd4153341717b33d9e8ae8bd29db6c1c8 (diff) |
Bluetooth: Add timer to Acknowledge I-frames
We ack I-frames on each txWindow/5 I-frames received, but if the sender
stop to send I-frames and it's not a txWindow multiple we can leave some
frames unacked.
So I added a timer to ack I-frames on this case. The timer expires in
200ms.
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Reviewed-by: João Paulo Rechi Vita <jprvita@profusion.mobi>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include/net/bluetooth')
-rw-r--r-- | include/net/bluetooth/l2cap.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index d9c20c3d6f3d..48f10f46c73d 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -35,6 +35,7 @@ | |||
35 | #define L2CAP_DEFAULT_RETRANS_TO 1000 /* 1 second */ | 35 | #define L2CAP_DEFAULT_RETRANS_TO 1000 /* 1 second */ |
36 | #define L2CAP_DEFAULT_MONITOR_TO 12000 /* 12 seconds */ | 36 | #define L2CAP_DEFAULT_MONITOR_TO 12000 /* 12 seconds */ |
37 | #define L2CAP_DEFAULT_MAX_PDU_SIZE 672 | 37 | #define L2CAP_DEFAULT_MAX_PDU_SIZE 672 |
38 | #define L2CAP_DEFAULT_ACK_TO 200 | ||
38 | 39 | ||
39 | #define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */ | 40 | #define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */ |
40 | #define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */ | 41 | #define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */ |
@@ -348,6 +349,7 @@ struct l2cap_pinfo { | |||
348 | 349 | ||
349 | struct timer_list retrans_timer; | 350 | struct timer_list retrans_timer; |
350 | struct timer_list monitor_timer; | 351 | struct timer_list monitor_timer; |
352 | struct timer_list ack_timer; | ||
351 | struct sk_buff_head tx_queue; | 353 | struct sk_buff_head tx_queue; |
352 | struct sk_buff_head srej_queue; | 354 | struct sk_buff_head srej_queue; |
353 | struct srej_list srej_l; | 355 | struct srej_list srej_l; |
@@ -382,6 +384,8 @@ struct l2cap_pinfo { | |||
382 | jiffies + msecs_to_jiffies(L2CAP_DEFAULT_RETRANS_TO)); | 384 | jiffies + msecs_to_jiffies(L2CAP_DEFAULT_RETRANS_TO)); |
383 | #define __mod_monitor_timer() mod_timer(&l2cap_pi(sk)->monitor_timer, \ | 385 | #define __mod_monitor_timer() mod_timer(&l2cap_pi(sk)->monitor_timer, \ |
384 | jiffies + msecs_to_jiffies(L2CAP_DEFAULT_MONITOR_TO)); | 386 | jiffies + msecs_to_jiffies(L2CAP_DEFAULT_MONITOR_TO)); |
387 | #define __mod_ack_timer() mod_timer(&l2cap_pi(sk)->ack_timer, \ | ||
388 | jiffies + msecs_to_jiffies(L2CAP_DEFAULT_ACK_TO)); | ||
385 | 389 | ||
386 | static inline int l2cap_tx_window_full(struct sock *sk) | 390 | static inline int l2cap_tx_window_full(struct sock *sk) |
387 | { | 391 | { |