aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/bluetooth
diff options
context:
space:
mode:
authorGustavo F. Padovan <padovan@profusion.mobi>2010-05-01 15:15:39 -0400
committerMarcel Holtmann <marcel@holtmann.org>2010-05-10 03:28:48 -0400
commitc1b4f43be01c2a363be021485dd18cca33cfab8a (patch)
tree3244f14f00eb6a227e52b2a8ddd7063ef0961840 /include/net/bluetooth
parent05fbd89dd4153341717b33d9e8ae8bd29db6c1c8 (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.h4
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
386static inline int l2cap_tx_window_full(struct sock *sk) 390static inline int l2cap_tx_window_full(struct sock *sk)
387{ 391{