diff options
Diffstat (limited to 'include/net/bluetooth')
-rw-r--r-- | include/net/bluetooth/l2cap.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h index 35334a0de070..c988df6f63bf 100644 --- a/include/net/bluetooth/l2cap.h +++ b/include/net/bluetooth/l2cap.h | |||
@@ -139,6 +139,8 @@ struct l2cap_conninfo { | |||
139 | 139 | ||
140 | #define L2CAP_CTRL_TXSEQ_SHIFT 1 | 140 | #define L2CAP_CTRL_TXSEQ_SHIFT 1 |
141 | #define L2CAP_CTRL_SUPER_SHIFT 2 | 141 | #define L2CAP_CTRL_SUPER_SHIFT 2 |
142 | #define L2CAP_CTRL_POLL_SHIFT 4 | ||
143 | #define L2CAP_CTRL_FINAL_SHIFT 7 | ||
142 | #define L2CAP_CTRL_REQSEQ_SHIFT 8 | 144 | #define L2CAP_CTRL_REQSEQ_SHIFT 8 |
143 | #define L2CAP_CTRL_SAR_SHIFT 14 | 145 | #define L2CAP_CTRL_SAR_SHIFT 14 |
144 | 146 | ||
@@ -152,9 +154,11 @@ struct l2cap_conninfo { | |||
152 | #define L2CAP_EXT_CTRL_FINAL 0x00000002 | 154 | #define L2CAP_EXT_CTRL_FINAL 0x00000002 |
153 | #define L2CAP_EXT_CTRL_FRAME_TYPE 0x00000001 /* I- or S-Frame */ | 155 | #define L2CAP_EXT_CTRL_FRAME_TYPE 0x00000001 /* I- or S-Frame */ |
154 | 156 | ||
157 | #define L2CAP_EXT_CTRL_FINAL_SHIFT 1 | ||
155 | #define L2CAP_EXT_CTRL_REQSEQ_SHIFT 2 | 158 | #define L2CAP_EXT_CTRL_REQSEQ_SHIFT 2 |
156 | #define L2CAP_EXT_CTRL_SAR_SHIFT 16 | 159 | #define L2CAP_EXT_CTRL_SAR_SHIFT 16 |
157 | #define L2CAP_EXT_CTRL_SUPER_SHIFT 16 | 160 | #define L2CAP_EXT_CTRL_SUPER_SHIFT 16 |
161 | #define L2CAP_EXT_CTRL_POLL_SHIFT 18 | ||
158 | #define L2CAP_EXT_CTRL_TXSEQ_SHIFT 18 | 162 | #define L2CAP_EXT_CTRL_TXSEQ_SHIFT 18 |
159 | 163 | ||
160 | /* L2CAP Supervisory Function */ | 164 | /* L2CAP Supervisory Function */ |
@@ -186,6 +190,8 @@ struct l2cap_hdr { | |||
186 | #define L2CAP_FCS_SIZE 2 | 190 | #define L2CAP_FCS_SIZE 2 |
187 | #define L2CAP_SDULEN_SIZE 2 | 191 | #define L2CAP_SDULEN_SIZE 2 |
188 | #define L2CAP_PSMLEN_SIZE 2 | 192 | #define L2CAP_PSMLEN_SIZE 2 |
193 | #define L2CAP_ENH_CTRL_SIZE 2 | ||
194 | #define L2CAP_EXT_CTRL_SIZE 4 | ||
189 | 195 | ||
190 | struct l2cap_cmd_hdr { | 196 | struct l2cap_cmd_hdr { |
191 | __u8 code; | 197 | __u8 code; |
@@ -446,6 +452,9 @@ struct l2cap_chan { | |||
446 | __u16 monitor_timeout; | 452 | __u16 monitor_timeout; |
447 | __u16 mps; | 453 | __u16 mps; |
448 | 454 | ||
455 | __u8 tx_state; | ||
456 | __u8 rx_state; | ||
457 | |||
449 | unsigned long conf_state; | 458 | unsigned long conf_state; |
450 | unsigned long conn_state; | 459 | unsigned long conn_state; |
451 | unsigned long flags; | 460 | unsigned long flags; |
@@ -456,9 +465,11 @@ struct l2cap_chan { | |||
456 | __u16 buffer_seq; | 465 | __u16 buffer_seq; |
457 | __u16 buffer_seq_srej; | 466 | __u16 buffer_seq_srej; |
458 | __u16 srej_save_reqseq; | 467 | __u16 srej_save_reqseq; |
468 | __u16 last_acked_seq; | ||
459 | __u16 frames_sent; | 469 | __u16 frames_sent; |
460 | __u16 unacked_frames; | 470 | __u16 unacked_frames; |
461 | __u8 retry_count; | 471 | __u8 retry_count; |
472 | __u16 srej_queue_next; | ||
462 | __u8 num_acked; | 473 | __u8 num_acked; |
463 | __u16 sdu_len; | 474 | __u16 sdu_len; |
464 | struct sk_buff *sdu; | 475 | struct sk_buff *sdu; |
@@ -600,6 +611,44 @@ enum { | |||
600 | FLAG_EFS_ENABLE, | 611 | FLAG_EFS_ENABLE, |
601 | }; | 612 | }; |
602 | 613 | ||
614 | enum { | ||
615 | L2CAP_TX_STATE_XMIT, | ||
616 | L2CAP_TX_STATE_WAIT_F, | ||
617 | }; | ||
618 | |||
619 | enum { | ||
620 | L2CAP_RX_STATE_RECV, | ||
621 | L2CAP_RX_STATE_SREJ_SENT, | ||
622 | }; | ||
623 | |||
624 | enum { | ||
625 | L2CAP_TXSEQ_EXPECTED, | ||
626 | L2CAP_TXSEQ_EXPECTED_SREJ, | ||
627 | L2CAP_TXSEQ_UNEXPECTED, | ||
628 | L2CAP_TXSEQ_UNEXPECTED_SREJ, | ||
629 | L2CAP_TXSEQ_DUPLICATE, | ||
630 | L2CAP_TXSEQ_DUPLICATE_SREJ, | ||
631 | L2CAP_TXSEQ_INVALID, | ||
632 | L2CAP_TXSEQ_INVALID_IGNORE, | ||
633 | }; | ||
634 | |||
635 | enum { | ||
636 | L2CAP_EV_DATA_REQUEST, | ||
637 | L2CAP_EV_LOCAL_BUSY_DETECTED, | ||
638 | L2CAP_EV_LOCAL_BUSY_CLEAR, | ||
639 | L2CAP_EV_RECV_REQSEQ_AND_FBIT, | ||
640 | L2CAP_EV_RECV_FBIT, | ||
641 | L2CAP_EV_RETRANS_TO, | ||
642 | L2CAP_EV_MONITOR_TO, | ||
643 | L2CAP_EV_EXPLICIT_POLL, | ||
644 | L2CAP_EV_RECV_IFRAME, | ||
645 | L2CAP_EV_RECV_RR, | ||
646 | L2CAP_EV_RECV_REJ, | ||
647 | L2CAP_EV_RECV_RNR, | ||
648 | L2CAP_EV_RECV_SREJ, | ||
649 | L2CAP_EV_RECV_FRAME, | ||
650 | }; | ||
651 | |||
603 | static inline void l2cap_chan_hold(struct l2cap_chan *c) | 652 | static inline void l2cap_chan_hold(struct l2cap_chan *c) |
604 | { | 653 | { |
605 | atomic_inc(&c->refcnt); | 654 | atomic_inc(&c->refcnt); |