37
37
#define L2CAP_DEFAULT_MONITOR_TO 12000 /* 12 seconds */
38
38
#define L2CAP_DEFAULT_MAX_PDU_SIZE 1009 /* Sized for 3-DH5 packet */
39
39
#define L2CAP_DEFAULT_ACK_TO 200
40
#define L2CAP_LOCAL_BUSY_TRIES 12
41
40
#define L2CAP_LE_DEFAULT_MTU 23
43
#define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */
44
#define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */
42
#define L2CAP_DISC_TIMEOUT (100)
43
#define L2CAP_DISC_REJ_TIMEOUT (5000) /* 5 seconds */
44
#define L2CAP_ENC_TIMEOUT (5000) /* 5 seconds */
45
#define L2CAP_CONN_TIMEOUT (40000) /* 40 seconds */
46
#define L2CAP_INFO_TIMEOUT (4000) /* 4 seconds */
46
48
/* L2CAP socket address */
47
49
struct sockaddr_l2 {
332
357
__u8 retry_count;
335
__u16 partial_sdu_len;
336
360
struct sk_buff *sdu;
361
struct sk_buff *sdu_last_frag;
338
363
__u8 remote_tx_win;
339
364
__u8 remote_max_tx;
340
365
__u16 remote_mps;
367
struct timer_list chan_timer;
342
368
struct timer_list retrans_timer;
343
369
struct timer_list monitor_timer;
344
370
struct timer_list ack_timer;
345
371
struct sk_buff *tx_send_head;
346
372
struct sk_buff_head tx_q;
347
373
struct sk_buff_head srej_q;
348
struct sk_buff_head busy_q;
349
struct work_struct busy_work;
350
374
struct list_head srej_l;
352
376
struct list_head list;
353
377
struct list_head global_l;
380
struct l2cap_ops *ops;
386
struct l2cap_chan *(*new_connection) (void *data);
387
int (*recv) (void *data, struct sk_buff *skb);
388
void (*close) (void *data);
389
void (*state_change) (void *data, int state);
356
392
struct l2cap_conn {
384
423
#define L2CAP_INFO_FEAT_MASK_REQ_SENT 0x04
385
424
#define L2CAP_INFO_FEAT_MASK_REQ_DONE 0x08
426
#define L2CAP_CHAN_RAW 1
427
#define L2CAP_CHAN_CONN_LESS 2
428
#define L2CAP_CHAN_CONN_ORIENTED 3
387
430
/* ----- L2CAP socket info ----- */
388
431
#define l2cap_pi(sk) ((struct l2cap_pinfo *) sk)
390
433
struct l2cap_pinfo {
391
434
struct bt_sock bt;
392
435
struct l2cap_chan *chan;
436
struct sk_buff *rx_busy_skb;
395
#define L2CAP_CONF_REQ_SENT 0x01
396
#define L2CAP_CONF_INPUT_DONE 0x02
397
#define L2CAP_CONF_OUTPUT_DONE 0x04
398
#define L2CAP_CONF_MTU_DONE 0x08
399
#define L2CAP_CONF_MODE_DONE 0x10
400
#define L2CAP_CONF_CONNECT_PEND 0x20
401
#define L2CAP_CONF_NO_FCS_RECV 0x40
402
#define L2CAP_CONF_STATE2_DEVICE 0x80
404
450
#define L2CAP_CONF_MAX_CONF_REQ 2
405
451
#define L2CAP_CONF_MAX_CONF_RSP 2
407
#define L2CAP_CONN_SAR_SDU 0x0001
408
#define L2CAP_CONN_SREJ_SENT 0x0002
409
#define L2CAP_CONN_WAIT_F 0x0004
410
#define L2CAP_CONN_SREJ_ACT 0x0008
411
#define L2CAP_CONN_SEND_PBIT 0x0010
412
#define L2CAP_CONN_REMOTE_BUSY 0x0020
413
#define L2CAP_CONN_LOCAL_BUSY 0x0040
414
#define L2CAP_CONN_REJ_ACT 0x0080
415
#define L2CAP_CONN_SEND_FBIT 0x0100
416
#define L2CAP_CONN_RNR_SENT 0x0200
417
#define L2CAP_CONN_SAR_RETRY 0x0400
419
#define __mod_retrans_timer() mod_timer(&chan->retrans_timer, \
420
jiffies + msecs_to_jiffies(L2CAP_DEFAULT_RETRANS_TO));
421
#define __mod_monitor_timer() mod_timer(&chan->monitor_timer, \
422
jiffies + msecs_to_jiffies(L2CAP_DEFAULT_MONITOR_TO));
423
#define __mod_ack_timer() mod_timer(&chan->ack_timer, \
424
jiffies + msecs_to_jiffies(L2CAP_DEFAULT_ACK_TO));
465
#define __set_chan_timer(c, t) l2cap_set_timer(c, &c->chan_timer, (t))
466
#define __clear_chan_timer(c) l2cap_clear_timer(c, &c->chan_timer)
467
#define __set_retrans_timer(c) l2cap_set_timer(c, &c->retrans_timer, \
468
L2CAP_DEFAULT_RETRANS_TO);
469
#define __clear_retrans_timer(c) l2cap_clear_timer(c, &c->retrans_timer)
470
#define __set_monitor_timer(c) l2cap_set_timer(c, &c->monitor_timer, \
471
L2CAP_DEFAULT_MONITOR_TO);
472
#define __clear_monitor_timer(c) l2cap_clear_timer(c, &c->monitor_timer)
473
#define __set_ack_timer(c) l2cap_set_timer(c, &chan->ack_timer, \
474
L2CAP_DEFAULT_ACK_TO);
475
#define __clear_ack_timer(c) l2cap_clear_timer(c, &c->ack_timer)
426
477
static inline int l2cap_tx_window_full(struct l2cap_chan *ch)
446
497
int l2cap_init_sockets(void);
447
498
void l2cap_cleanup_sockets(void);
449
void l2cap_send_cmd(struct l2cap_conn *conn, u8 ident, u8 code, u16 len, void *data);
450
500
void __l2cap_connect_rsp_defer(struct l2cap_chan *chan);
451
501
int __l2cap_wait_ack(struct sock *sk);
453
struct sk_buff *l2cap_create_connless_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len);
454
struct sk_buff *l2cap_create_basic_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len);
455
struct sk_buff *l2cap_create_iframe_pdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len, u16 control, u16 sdulen);
456
int l2cap_sar_segment_sdu(struct l2cap_chan *chan, struct msghdr *msg, size_t len);
457
void l2cap_do_send(struct l2cap_chan *chan, struct sk_buff *skb);
458
void l2cap_streaming_send(struct l2cap_chan *chan);
459
int l2cap_ertm_send(struct l2cap_chan *chan);
461
503
int l2cap_add_psm(struct l2cap_chan *chan, bdaddr_t *src, __le16 psm);
462
504
int l2cap_add_scid(struct l2cap_chan *chan, __u16 scid);
464
void l2cap_sock_set_timer(struct sock *sk, long timeout);
465
void l2cap_sock_clear_timer(struct sock *sk);
466
void __l2cap_sock_close(struct sock *sk, int reason);
467
void l2cap_sock_kill(struct sock *sk);
468
void l2cap_sock_init(struct sock *sk, struct sock *parent);
469
struct sock *l2cap_sock_alloc(struct net *net, struct socket *sock,
470
int proto, gfp_t prio);
471
void l2cap_send_disconn_req(struct l2cap_conn *conn, struct l2cap_chan *chan, int err);
472
506
struct l2cap_chan *l2cap_chan_create(struct sock *sk);
473
void l2cap_chan_del(struct l2cap_chan *chan, int err);
507
void l2cap_chan_close(struct l2cap_chan *chan, int reason);
474
508
void l2cap_chan_destroy(struct l2cap_chan *chan);
475
509
int l2cap_chan_connect(struct l2cap_chan *chan);
510
int l2cap_chan_send(struct l2cap_chan *chan, struct msghdr *msg, size_t len);
511
void l2cap_chan_busy(struct l2cap_chan *chan, int busy);
477
513
#endif /* __L2CAP_H */