diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-05-02 21:57:55 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-06-08 08:50:00 -0400 |
commit | 47ec1dcd696d56a7c396e5838516a566ecd4b03d (patch) | |
tree | bd730bf14a5f685c8fad4f84fe0aa434a960f06c /include | |
parent | af05b30bcb65da3ed488af54ee92e96bebe0be5e (diff) |
Bluetooth: Add basic constants for L2CAP ERTM support and use them
This adds the basic constants required to add support for L2CAP Enhanced
Retransmission feature.
Based on a patch from Nathan Holstein <nathan@lampreynetworks.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/net/bluetooth/l2cap.h | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index 300b63f0eec9..e919fca1072a 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -26,8 +26,13 @@ | |||
26 | #define __L2CAP_H | 26 | #define __L2CAP_H |
27 | 27 | ||
28 | /* L2CAP defaults */ | 28 | /* L2CAP defaults */ |
29 | #define L2CAP_DEFAULT_MTU 672 | 29 | #define L2CAP_DEFAULT_MTU 672 |
30 | #define L2CAP_DEFAULT_FLUSH_TO 0xFFFF | 30 | #define L2CAP_DEFAULT_FLUSH_TO 0xffff |
31 | #define L2CAP_DEFAULT_RX_WINDOW 1 | ||
32 | #define L2CAP_DEFAULT_MAX_RECEIVE 1 | ||
33 | #define L2CAP_DEFAULT_RETRANS_TO 300 /* 300 milliseconds */ | ||
34 | #define L2CAP_DEFAULT_MONITOR_TO 1000 /* 1 second */ | ||
35 | #define L2CAP_DEFAULT_MAX_RX_APDU 0xfff7 | ||
31 | 36 | ||
32 | #define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */ | 37 | #define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */ |
33 | #define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */ | 38 | #define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */ |
@@ -64,17 +69,29 @@ struct l2cap_conninfo { | |||
64 | #define L2CAP_LM_SECURE 0x0020 | 69 | #define L2CAP_LM_SECURE 0x0020 |
65 | 70 | ||
66 | /* L2CAP command codes */ | 71 | /* L2CAP command codes */ |
67 | #define L2CAP_COMMAND_REJ 0x01 | 72 | #define L2CAP_COMMAND_REJ 0x01 |
68 | #define L2CAP_CONN_REQ 0x02 | 73 | #define L2CAP_CONN_REQ 0x02 |
69 | #define L2CAP_CONN_RSP 0x03 | 74 | #define L2CAP_CONN_RSP 0x03 |
70 | #define L2CAP_CONF_REQ 0x04 | 75 | #define L2CAP_CONF_REQ 0x04 |
71 | #define L2CAP_CONF_RSP 0x05 | 76 | #define L2CAP_CONF_RSP 0x05 |
72 | #define L2CAP_DISCONN_REQ 0x06 | 77 | #define L2CAP_DISCONN_REQ 0x06 |
73 | #define L2CAP_DISCONN_RSP 0x07 | 78 | #define L2CAP_DISCONN_RSP 0x07 |
74 | #define L2CAP_ECHO_REQ 0x08 | 79 | #define L2CAP_ECHO_REQ 0x08 |
75 | #define L2CAP_ECHO_RSP 0x09 | 80 | #define L2CAP_ECHO_RSP 0x09 |
76 | #define L2CAP_INFO_REQ 0x0a | 81 | #define L2CAP_INFO_REQ 0x0a |
77 | #define L2CAP_INFO_RSP 0x0b | 82 | #define L2CAP_INFO_RSP 0x0b |
83 | |||
84 | /* L2CAP feature mask */ | ||
85 | #define L2CAP_FEAT_FLOWCTL 0x00000001 | ||
86 | #define L2CAP_FEAT_RETRANS 0x00000002 | ||
87 | #define L2CAP_FEAT_ERTM 0x00000008 | ||
88 | #define L2CAP_FEAT_STREAMING 0x00000010 | ||
89 | #define L2CAP_FEAT_FCS 0x00000020 | ||
90 | #define L2CAP_FEAT_FIXED_CHAN 0x00000080 | ||
91 | |||
92 | /* L2CAP checksum option */ | ||
93 | #define L2CAP_FCS_NONE 0x00 | ||
94 | #define L2CAP_FCS_CRC16 0x01 | ||
78 | 95 | ||
79 | /* L2CAP structures */ | 96 | /* L2CAP structures */ |
80 | struct l2cap_hdr { | 97 | struct l2cap_hdr { |
@@ -113,16 +130,16 @@ struct l2cap_conn_rsp { | |||
113 | #define L2CAP_CID_DYN_END 0xffff | 130 | #define L2CAP_CID_DYN_END 0xffff |
114 | 131 | ||
115 | /* connect result */ | 132 | /* connect result */ |
116 | #define L2CAP_CR_SUCCESS 0x0000 | 133 | #define L2CAP_CR_SUCCESS 0x0000 |
117 | #define L2CAP_CR_PEND 0x0001 | 134 | #define L2CAP_CR_PEND 0x0001 |
118 | #define L2CAP_CR_BAD_PSM 0x0002 | 135 | #define L2CAP_CR_BAD_PSM 0x0002 |
119 | #define L2CAP_CR_SEC_BLOCK 0x0003 | 136 | #define L2CAP_CR_SEC_BLOCK 0x0003 |
120 | #define L2CAP_CR_NO_MEM 0x0004 | 137 | #define L2CAP_CR_NO_MEM 0x0004 |
121 | 138 | ||
122 | /* connect status */ | 139 | /* connect status */ |
123 | #define L2CAP_CS_NO_INFO 0x0000 | 140 | #define L2CAP_CS_NO_INFO 0x0000 |
124 | #define L2CAP_CS_AUTHEN_PEND 0x0001 | 141 | #define L2CAP_CS_AUTHEN_PEND 0x0001 |
125 | #define L2CAP_CS_AUTHOR_PEND 0x0002 | 142 | #define L2CAP_CS_AUTHOR_PEND 0x0002 |
126 | 143 | ||
127 | struct l2cap_conf_req { | 144 | struct l2cap_conf_req { |
128 | __le16 dcid; | 145 | __le16 dcid; |
@@ -150,11 +167,13 @@ struct l2cap_conf_opt { | |||
150 | #define L2CAP_CONF_OPT_SIZE 2 | 167 | #define L2CAP_CONF_OPT_SIZE 2 |
151 | 168 | ||
152 | #define L2CAP_CONF_HINT 0x80 | 169 | #define L2CAP_CONF_HINT 0x80 |
170 | #define L2CAP_CONF_MASK 0x7f | ||
153 | 171 | ||
154 | #define L2CAP_CONF_MTU 0x01 | 172 | #define L2CAP_CONF_MTU 0x01 |
155 | #define L2CAP_CONF_FLUSH_TO 0x02 | 173 | #define L2CAP_CONF_FLUSH_TO 0x02 |
156 | #define L2CAP_CONF_QOS 0x03 | 174 | #define L2CAP_CONF_QOS 0x03 |
157 | #define L2CAP_CONF_RFC 0x04 | 175 | #define L2CAP_CONF_RFC 0x04 |
176 | #define L2CAP_CONF_FCS 0x05 | ||
158 | 177 | ||
159 | #define L2CAP_CONF_MAX_SIZE 22 | 178 | #define L2CAP_CONF_MAX_SIZE 22 |
160 | 179 | ||
@@ -170,6 +189,8 @@ struct l2cap_conf_rfc { | |||
170 | #define L2CAP_MODE_BASIC 0x00 | 189 | #define L2CAP_MODE_BASIC 0x00 |
171 | #define L2CAP_MODE_RETRANS 0x01 | 190 | #define L2CAP_MODE_RETRANS 0x01 |
172 | #define L2CAP_MODE_FLOWCTL 0x02 | 191 | #define L2CAP_MODE_FLOWCTL 0x02 |
192 | #define L2CAP_MODE_ERTM 0x03 | ||
193 | #define L2CAP_MODE_STREAM 0x04 | ||
173 | 194 | ||
174 | struct l2cap_disconn_req { | 195 | struct l2cap_disconn_req { |
175 | __le16 dcid; | 196 | __le16 dcid; |