diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2006-02-13 05:39:57 -0500 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2006-02-13 05:39:57 -0500 |
commit | 56f3a40a5e7586043260669cc794e56fa58339e1 (patch) | |
tree | a2a756d86f8ff9da8d5668d2dfbf51f5107c53ce /net/bluetooth | |
parent | e9bb4c9929a63b23dcc637fae312b36b038bdc61 (diff) |
[Bluetooth] Reduce L2CAP MTU for RFCOMM connections
This patch reduces the default L2CAP MTU for all RFCOMM connections
from 1024 to 1013 to improve the interoperability with some broken
RFCOMM implementations. To make this more flexible the L2CAP MTU
becomes also a module parameter and so it can changed at runtime.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'net/bluetooth')
-rw-r--r-- | net/bluetooth/rfcomm/core.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c index 0d89d6434136..5b4253c61f62 100644 --- a/net/bluetooth/rfcomm/core.c +++ b/net/bluetooth/rfcomm/core.c | |||
@@ -46,13 +46,15 @@ | |||
46 | #include <net/bluetooth/l2cap.h> | 46 | #include <net/bluetooth/l2cap.h> |
47 | #include <net/bluetooth/rfcomm.h> | 47 | #include <net/bluetooth/rfcomm.h> |
48 | 48 | ||
49 | #define VERSION "1.6" | ||
50 | |||
51 | #ifndef CONFIG_BT_RFCOMM_DEBUG | 49 | #ifndef CONFIG_BT_RFCOMM_DEBUG |
52 | #undef BT_DBG | 50 | #undef BT_DBG |
53 | #define BT_DBG(D...) | 51 | #define BT_DBG(D...) |
54 | #endif | 52 | #endif |
55 | 53 | ||
54 | #define VERSION "1.7" | ||
55 | |||
56 | static unsigned int l2cap_mtu = RFCOMM_MAX_L2CAP_MTU; | ||
57 | |||
56 | static struct task_struct *rfcomm_thread; | 58 | static struct task_struct *rfcomm_thread; |
57 | 59 | ||
58 | static DECLARE_MUTEX(rfcomm_sem); | 60 | static DECLARE_MUTEX(rfcomm_sem); |
@@ -623,7 +625,7 @@ static struct rfcomm_session *rfcomm_session_create(bdaddr_t *src, bdaddr_t *dst | |||
623 | /* Set L2CAP options */ | 625 | /* Set L2CAP options */ |
624 | sk = sock->sk; | 626 | sk = sock->sk; |
625 | lock_sock(sk); | 627 | lock_sock(sk); |
626 | l2cap_pi(sk)->imtu = RFCOMM_MAX_L2CAP_MTU; | 628 | l2cap_pi(sk)->imtu = l2cap_mtu; |
627 | release_sock(sk); | 629 | release_sock(sk); |
628 | 630 | ||
629 | s = rfcomm_session_add(sock, BT_BOUND); | 631 | s = rfcomm_session_add(sock, BT_BOUND); |
@@ -1868,7 +1870,7 @@ static int rfcomm_add_listener(bdaddr_t *ba) | |||
1868 | /* Set L2CAP options */ | 1870 | /* Set L2CAP options */ |
1869 | sk = sock->sk; | 1871 | sk = sock->sk; |
1870 | lock_sock(sk); | 1872 | lock_sock(sk); |
1871 | l2cap_pi(sk)->imtu = RFCOMM_MAX_L2CAP_MTU; | 1873 | l2cap_pi(sk)->imtu = l2cap_mtu; |
1872 | release_sock(sk); | 1874 | release_sock(sk); |
1873 | 1875 | ||
1874 | /* Start listening on the socket */ | 1876 | /* Start listening on the socket */ |
@@ -2070,6 +2072,9 @@ static void __exit rfcomm_exit(void) | |||
2070 | module_init(rfcomm_init); | 2072 | module_init(rfcomm_init); |
2071 | module_exit(rfcomm_exit); | 2073 | module_exit(rfcomm_exit); |
2072 | 2074 | ||
2075 | module_param(l2cap_mtu, uint, 0644); | ||
2076 | MODULE_PARM_DESC(l2cap_mtu, "Default MTU for the L2CAP connection"); | ||
2077 | |||
2073 | MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>"); | 2078 | MODULE_AUTHOR("Maxim Krasnyansky <maxk@qualcomm.com>, Marcel Holtmann <marcel@holtmann.org>"); |
2074 | MODULE_DESCRIPTION("Bluetooth RFCOMM ver " VERSION); | 2079 | MODULE_DESCRIPTION("Bluetooth RFCOMM ver " VERSION); |
2075 | MODULE_VERSION(VERSION); | 2080 | MODULE_VERSION(VERSION); |