aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/bluetooth/l2cap.h29
-rw-r--r--net/bluetooth/l2cap_core.c5
2 files changed, 34 insertions, 0 deletions
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index 6e23afdf65c1..6d3615eed97c 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -434,6 +434,8 @@ struct l2cap_chan {
434 struct sock *sk; 434 struct sock *sk;
435 435
436 struct l2cap_conn *conn; 436 struct l2cap_conn *conn;
437 struct hci_conn *hs_hcon;
438 struct hci_chan *hs_hchan;
437 struct kref kref; 439 struct kref kref;
438 440
439 __u8 state; 441 __u8 state;
@@ -477,6 +479,11 @@ struct l2cap_chan {
477 unsigned long conn_state; 479 unsigned long conn_state;
478 unsigned long flags; 480 unsigned long flags;
479 481
482 __u8 local_amp_id;
483 __u8 move_id;
484 __u8 move_state;
485 __u8 move_role;
486
480 __u16 next_tx_seq; 487 __u16 next_tx_seq;
481 __u16 expected_ack_seq; 488 __u16 expected_ack_seq;
482 __u16 expected_tx_seq; 489 __u16 expected_tx_seq;
@@ -644,6 +651,9 @@ enum {
644enum { 651enum {
645 L2CAP_RX_STATE_RECV, 652 L2CAP_RX_STATE_RECV,
646 L2CAP_RX_STATE_SREJ_SENT, 653 L2CAP_RX_STATE_SREJ_SENT,
654 L2CAP_RX_STATE_MOVE,
655 L2CAP_RX_STATE_WAIT_P,
656 L2CAP_RX_STATE_WAIT_F,
647}; 657};
648 658
649enum { 659enum {
@@ -674,6 +684,25 @@ enum {
674 L2CAP_EV_RECV_FRAME, 684 L2CAP_EV_RECV_FRAME,
675}; 685};
676 686
687enum {
688 L2CAP_MOVE_ROLE_NONE,
689 L2CAP_MOVE_ROLE_INITIATOR,
690 L2CAP_MOVE_ROLE_RESPONDER,
691};
692
693enum {
694 L2CAP_MOVE_STABLE,
695 L2CAP_MOVE_WAIT_REQ,
696 L2CAP_MOVE_WAIT_RSP,
697 L2CAP_MOVE_WAIT_RSP_SUCCESS,
698 L2CAP_MOVE_WAIT_CONFIRM,
699 L2CAP_MOVE_WAIT_CONFIRM_RSP,
700 L2CAP_MOVE_WAIT_LOGICAL_COMP,
701 L2CAP_MOVE_WAIT_LOGICAL_CFM,
702 L2CAP_MOVE_WAIT_LOCAL_BUSY,
703 L2CAP_MOVE_WAIT_PREPARE,
704};
705
677void l2cap_chan_hold(struct l2cap_chan *c); 706void l2cap_chan_hold(struct l2cap_chan *c);
678void l2cap_chan_put(struct l2cap_chan *c); 707void l2cap_chan_put(struct l2cap_chan *c);
679 708
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 08efc256c931..c1b169f3ae0d 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -2788,6 +2788,11 @@ int l2cap_ertm_init(struct l2cap_chan *chan)
2788 2788
2789 skb_queue_head_init(&chan->tx_q); 2789 skb_queue_head_init(&chan->tx_q);
2790 2790
2791 chan->local_amp_id = 0;
2792 chan->move_id = 0;
2793 chan->move_state = L2CAP_MOVE_STABLE;
2794 chan->move_role = L2CAP_MOVE_ROLE_NONE;
2795
2791 if (chan->mode != L2CAP_MODE_ERTM) 2796 if (chan->mode != L2CAP_MODE_ERTM)
2792 return 0; 2797 return 0;
2793 2798