Thread (2 messages) flat view 2 messages, 2 authors, 2011-10-19

Re: [PATCH] Bluetooth: Use miliseconds for L2CAP channel timeouts

From: Gustavo Padovan <hidden>
Date: 2011-10-19 16:41:06

Hi Andrzej,

* Andrzej Kaczmarek [off-list ref] [2011-10-19 14:38:56 +0200]:
quoted hunk ↗ jump to hunk
Timers set by __set_chan_timer() should use miliseconds instead of
jiffies. Commit 942ecc9c4643db5ce071562e0a23f99464d6b461 updated
l2cap_set_timer() so it expects timeout to be specified in msecs
instead of jiffies. This makes timeouts unreliable when CONFIG_HZ
is not set to 1000.

Signed-off-by: Andrzej Kaczmarek <redacted>
---
 include/net/bluetooth/l2cap.h |    8 ++++++--
 net/bluetooth/l2cap_core.c    |   25 +++++++++++++------------
 2 files changed, 19 insertions(+), 14 deletions(-)
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index fddc82a..9576b0a 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -45,8 +45,12 @@
 #define L2CAP_DEFAULT_SDU_ITIME		0xFFFFFFFF
 #define L2CAP_DEFAULT_ACC_LAT		0xFFFFFFFF
 
-#define L2CAP_CONN_TIMEOUT	(40000) /* 40 seconds */
-#define L2CAP_INFO_TIMEOUT	(4000)  /*  4 seconds */
+#define L2CAP_DISC_SEC_TIMEOUT		(100)
+#define L2CAP_DISC_OWNED_TIMEOUT	(200)
make these two 100 miliseconds and merge them under L2CAP_DISC_TIMEOUT
quoted hunk ↗ jump to hunk
+#define L2CAP_DISC_REJ_TIMEOUT		(5000)  /*  5 seconds */
+#define L2CAP_ENC_TIMEOUT		(5000)  /*  5 seconds */
+#define L2CAP_CONN_TIMEOUT		(40000) /* 40 seconds */
+#define L2CAP_INFO_TIMEOUT		(4000)  /*  4 seconds */
 
 /* L2CAP socket address */
 struct sockaddr_l2 {
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index bda6da7..13aa738 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -252,7 +252,7 @@ static void l2cap_chan_timeout(unsigned long arg)
 
 	if (sock_owned_by_user(sk)) {
 		/* sk is owned by user. Try again later */
-		__set_chan_timer(chan, HZ / 5);
+		__set_chan_timer(chan, L2CAP_DISC_OWNED_TIMEOUT);
 		bh_unlock_sock(sk);
 		chan_put(chan);
 		return;
@@ -444,7 +444,8 @@ void l2cap_chan_close(struct l2cap_chan *chan, int reason)
 		if (chan->chan_type == L2CAP_CHAN_CONN_ORIENTED &&
 					conn->hcon->type == ACL_LINK) {
 			__clear_chan_timer(chan);
-			__set_chan_timer(chan, sk->sk_sndtimeo);
+			__set_chan_timer(chan,
+					jiffies_to_msecs(sk->sk_sndtimeo));
sk->sk_sndtimeo is already in miliseconds.

	Gustavo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help