aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorAndrei Emeltchenko <andrei.emeltchenko@intel.com>2011-10-11 06:37:42 -0400
committerGustavo F. Padovan <padovan@profusion.mobi>2011-10-13 15:44:26 -0400
commit6327eb980d2ff0c96363b81cb0ce580165cb81b8 (patch)
treea6351655b16aa61dfa26543fb3a47b54f0321827 /include
parent669bb3962bd7f781879222eeb7263d527551dd5e (diff)
Bluetooth: EWS: extended window size option support
Adds support for extended window size (EWS) config option. We enable EWS feature in L2CAP Info RSP when hs enabled. EWS option is included in L2CAP Config Req if tx_win (which is set via socket) bigger then standard default value (63) && hs enabled && remote side supports EWS feature. Using EWS selects extended control field in L2CAP. Code partly based on Qualcomm and Atheros patches sent upstream a year ago. Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
Diffstat (limited to 'include')
-rw-r--r--include/net/bluetooth/l2cap.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index 08ad40bb5a46..51998ff6b8ca 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -32,6 +32,7 @@
32#define L2CAP_DEFAULT_MIN_MTU 48 32#define L2CAP_DEFAULT_MIN_MTU 48
33#define L2CAP_DEFAULT_FLUSH_TO 0xffff 33#define L2CAP_DEFAULT_FLUSH_TO 0xffff
34#define L2CAP_DEFAULT_TX_WINDOW 63 34#define L2CAP_DEFAULT_TX_WINDOW 63
35#define L2CAP_DEFAULT_EXT_WINDOW 0x3FFF
35#define L2CAP_DEFAULT_MAX_TX 3 36#define L2CAP_DEFAULT_MAX_TX 3
36#define L2CAP_DEFAULT_RETRANS_TO 2000 /* 2 seconds */ 37#define L2CAP_DEFAULT_RETRANS_TO 2000 /* 2 seconds */
37#define L2CAP_DEFAULT_MONITOR_TO 12000 /* 12 seconds */ 38#define L2CAP_DEFAULT_MONITOR_TO 12000 /* 12 seconds */
@@ -233,6 +234,7 @@ struct l2cap_conf_opt {
233#define L2CAP_CONF_QOS 0x03 234#define L2CAP_CONF_QOS 0x03
234#define L2CAP_CONF_RFC 0x04 235#define L2CAP_CONF_RFC 0x04
235#define L2CAP_CONF_FCS 0x05 236#define L2CAP_CONF_FCS 0x05
237#define L2CAP_CONF_EWS 0x07
236 238
237#define L2CAP_CONF_MAX_SIZE 22 239#define L2CAP_CONF_MAX_SIZE 22
238 240
@@ -333,7 +335,7 @@ struct l2cap_chan {
333 335
334 __u8 fcs; 336 __u8 fcs;
335 337
336 __u8 tx_win; 338 __u16 tx_win;
337 __u8 max_tx; 339 __u8 max_tx;
338 __u16 retrans_timeout; 340 __u16 retrans_timeout;
339 __u16 monitor_timeout; 341 __u16 monitor_timeout;
@@ -357,7 +359,7 @@ struct l2cap_chan {
357 struct sk_buff *sdu; 359 struct sk_buff *sdu;
358 struct sk_buff *sdu_last_frag; 360 struct sk_buff *sdu_last_frag;
359 361
360 __u8 remote_tx_win; 362 __u16 remote_tx_win;
361 __u8 remote_max_tx; 363 __u8 remote_max_tx;
362 __u16 remote_mps; 364 __u16 remote_mps;
363 365
@@ -442,6 +444,7 @@ enum {
442 CONF_CONNECT_PEND, 444 CONF_CONNECT_PEND,
443 CONF_NO_FCS_RECV, 445 CONF_NO_FCS_RECV,
444 CONF_STATE2_DEVICE, 446 CONF_STATE2_DEVICE,
447 CONF_EWS_RECV,
445}; 448};
446 449
447#define L2CAP_CONF_MAX_CONF_REQ 2 450#define L2CAP_CONF_MAX_CONF_REQ 2
@@ -465,6 +468,7 @@ enum {
465 FLAG_FORCE_ACTIVE, 468 FLAG_FORCE_ACTIVE,
466 FLAG_FORCE_RELIABLE, 469 FLAG_FORCE_RELIABLE,
467 FLAG_FLUSHABLE, 470 FLAG_FLUSHABLE,
471 FLAG_EXT_CTRL,
468}; 472};
469 473
470#define __set_chan_timer(c, t) l2cap_set_timer(c, &c->chan_timer, (t)) 474#define __set_chan_timer(c, t) l2cap_set_timer(c, &c->chan_timer, (t))