diff options
Diffstat (limited to 'include/net/bluetooth/bluetooth.h')
-rw-r--r-- | include/net/bluetooth/bluetooth.h | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 262ebd1747d4..961669b648fd 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
@@ -163,6 +163,11 @@ typedef struct { | |||
163 | __u8 b[6]; | 163 | __u8 b[6]; |
164 | } __packed bdaddr_t; | 164 | } __packed bdaddr_t; |
165 | 165 | ||
166 | /* BD Address type */ | ||
167 | #define BDADDR_BREDR 0x00 | ||
168 | #define BDADDR_LE_PUBLIC 0x01 | ||
169 | #define BDADDR_LE_RANDOM 0x02 | ||
170 | |||
166 | #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) | 171 | #define BDADDR_ANY (&(bdaddr_t) {{0, 0, 0, 0, 0, 0}}) |
167 | #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}}) | 172 | #define BDADDR_LOCAL (&(bdaddr_t) {{0, 0, 0, 0xff, 0xff, 0xff}}) |
168 | 173 | ||
@@ -178,7 +183,6 @@ static inline void bacpy(bdaddr_t *dst, bdaddr_t *src) | |||
178 | 183 | ||
179 | void baswap(bdaddr_t *dst, bdaddr_t *src); | 184 | void baswap(bdaddr_t *dst, bdaddr_t *src); |
180 | char *batostr(bdaddr_t *ba); | 185 | char *batostr(bdaddr_t *ba); |
181 | bdaddr_t *strtoba(char *str); | ||
182 | 186 | ||
183 | /* Common socket structures and functions */ | 187 | /* Common socket structures and functions */ |
184 | 188 | ||
@@ -190,7 +194,12 @@ struct bt_sock { | |||
190 | bdaddr_t dst; | 194 | bdaddr_t dst; |
191 | struct list_head accept_q; | 195 | struct list_head accept_q; |
192 | struct sock *parent; | 196 | struct sock *parent; |
193 | u32 defer_setup; | 197 | unsigned long flags; |
198 | }; | ||
199 | |||
200 | enum { | ||
201 | BT_SK_DEFER_SETUP, | ||
202 | BT_SK_SUSPEND, | ||
194 | }; | 203 | }; |
195 | 204 | ||
196 | struct bt_sock_list { | 205 | struct bt_sock_list { |
@@ -215,14 +224,24 @@ void bt_accept_unlink(struct sock *sk); | |||
215 | struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock); | 224 | struct sock *bt_accept_dequeue(struct sock *parent, struct socket *newsock); |
216 | 225 | ||
217 | /* Skb helpers */ | 226 | /* Skb helpers */ |
227 | struct l2cap_ctrl { | ||
228 | unsigned int sframe : 1, | ||
229 | poll : 1, | ||
230 | final : 1, | ||
231 | fcs : 1, | ||
232 | sar : 2, | ||
233 | super : 2; | ||
234 | __u16 reqseq; | ||
235 | __u16 txseq; | ||
236 | __u8 retries; | ||
237 | }; | ||
238 | |||
218 | struct bt_skb_cb { | 239 | struct bt_skb_cb { |
219 | __u8 pkt_type; | 240 | __u8 pkt_type; |
220 | __u8 incoming; | 241 | __u8 incoming; |
221 | __u16 expect; | 242 | __u16 expect; |
222 | __u16 tx_seq; | ||
223 | __u8 retries; | ||
224 | __u8 sar; | ||
225 | __u8 force_active; | 243 | __u8 force_active; |
244 | struct l2cap_ctrl control; | ||
226 | }; | 245 | }; |
227 | #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) | 246 | #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) |
228 | 247 | ||
@@ -242,12 +261,10 @@ static inline struct sk_buff *bt_skb_send_alloc(struct sock *sk, | |||
242 | { | 261 | { |
243 | struct sk_buff *skb; | 262 | struct sk_buff *skb; |
244 | 263 | ||
245 | release_sock(sk); | ||
246 | if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { | 264 | if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { |
247 | skb_reserve(skb, BT_SKB_RESERVE); | 265 | skb_reserve(skb, BT_SKB_RESERVE); |
248 | bt_cb(skb)->incoming = 0; | 266 | bt_cb(skb)->incoming = 0; |
249 | } | 267 | } |
250 | lock_sock(sk); | ||
251 | 268 | ||
252 | if (!skb && *err) | 269 | if (!skb && *err) |
253 | return NULL; | 270 | return NULL; |