From: Mat Martineau <mathewm@codeaurora.org>
To: linux-bluetooth@vger.kernel.org, gustavo@padovan.org,
Andrei.Emeltchenko.news@gmail.com
Cc: pkrystad@codeaurora.org
Subject: [RFCv0 01/21] Bluetooth: Add new l2cap_chan struct members for high speed channels
Date: Wed, 25 Jul 2012 16:50:53 -0700 [thread overview]
Message-ID: <1343260274-11953-2-git-send-email-mathewm@codeaurora.org> (raw)
In-Reply-To: <1343260274-11953-1-git-send-email-mathewm@codeaurora.org>
An L2CAP channel using high speed continues to be associated with a
BR/EDR l2cap_conn, while also tracking an additional hci_conn
(representing a physical link on a high speed controller) and hci_chan
(representing a logical link). There may only be one physical link
between two high speed controllers. Each physical link may contain
several logical links, with each logical link representing a channel
with specific quality of service.
During a channel move, the destination channel id, current move state,
and role (initiator vs. responder) are tracked and used by the channel
move state machine. The ident value associated with a move request
must also be stored in order to use it in later move responses.
The active channel is stored in chan_id.
Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
---
include/net/bluetooth/l2cap.h | 30 ++++++++++++++++++++++++++++++
net/bluetooth/l2cap_core.c | 6 ++++++
2 files changed, 36 insertions(+)
diff --git a/include/net/bluetooth/l2cap.h b/include/net/bluetooth/l2cap.h
index d206296..c585def 100644
--- a/include/net/bluetooth/l2cap.h
+++ b/include/net/bluetooth/l2cap.h
@@ -433,6 +433,8 @@ struct l2cap_chan {
struct sock *sk;
struct l2cap_conn *conn;
+ struct hci_conn *hs_hcon;
+ struct hci_chan *hs_hchan;
__u8 state;
@@ -477,6 +479,12 @@ struct l2cap_chan {
unsigned long conn_state;
unsigned long flags;
+ __u8 chan_id;
+ __u8 move_id;
+ __u8 move_state;
+ __u8 move_role;
+ __u8 move_cmd_ident;
+
__u16 next_tx_seq;
__u16 expected_ack_seq;
__u16 expected_tx_seq;
@@ -641,6 +649,9 @@ enum {
enum {
L2CAP_RX_STATE_RECV,
L2CAP_RX_STATE_SREJ_SENT,
+ L2CAP_RX_STATE_MOVE,
+ L2CAP_RX_STATE_WAIT_P,
+ L2CAP_RX_STATE_WAIT_F,
};
enum {
@@ -671,6 +682,25 @@ enum {
L2CAP_EV_RECV_FRAME,
};
+enum {
+ L2CAP_MOVE_ROLE_NONE,
+ L2CAP_MOVE_ROLE_INITIATOR,
+ L2CAP_MOVE_ROLE_RESPONDER,
+};
+
+enum {
+ L2CAP_MOVE_STABLE,
+ L2CAP_MOVE_WAIT_REQ,
+ L2CAP_MOVE_WAIT_RSP,
+ L2CAP_MOVE_WAIT_RSP_SUCCESS,
+ L2CAP_MOVE_WAIT_CONFIRM,
+ L2CAP_MOVE_WAIT_CONFIRM_RSP,
+ L2CAP_MOVE_WAIT_LOGICAL_COMP,
+ L2CAP_MOVE_WAIT_LOGICAL_CFM,
+ L2CAP_MOVE_WAIT_LOCAL_BUSY,
+ L2CAP_MOVE_WAIT_PREPARE,
+};
+
void l2cap_chan_hold(struct l2cap_chan *c);
void l2cap_chan_put(struct l2cap_chan *c);
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 9f8b29e..fd9a349 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -2746,6 +2746,12 @@ int l2cap_ertm_init(struct l2cap_chan *chan)
skb_queue_head_init(&chan->tx_q);
+ chan->chan_id = 0;
+ chan->move_id = 0;
+ chan->move_state = L2CAP_MOVE_STABLE;
+ chan->move_role = L2CAP_MOVE_ROLE_NONE;
+ chan->move_cmd_ident = 0;
+
if (chan->mode != L2CAP_MODE_ERTM)
return 0;
--
1.7.11.2
--
Mat Martineau
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum
next prev parent reply other threads:[~2012-07-25 23:50 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-25 23:50 [RFCv0 00/21] L2CAP signaling for AMP channel create/move Mat Martineau
2012-07-25 23:50 ` Mat Martineau [this message]
2012-07-25 23:50 ` [RFCv0 02/21] Bluetooth: Factor out common L2CAP connection code Mat Martineau
2012-07-25 23:50 ` [RFCv0 03/21] Bluetooth: Add L2CAP create channel request handling Mat Martineau
2012-07-26 13:13 ` Andrei Emeltchenko
2012-07-26 15:04 ` Mat Martineau
2012-07-26 19:43 ` Andrei Emeltchenko
2012-07-25 23:50 ` [RFCv0 04/21] Bluetooth: Process create response and connect response identically Mat Martineau
2012-08-14 10:12 ` Andrei Emeltchenko
2012-08-14 17:25 ` Mat Martineau
2012-07-25 23:50 ` [RFCv0 05/21] Bluetooth: Lookup channel id for channel move Mat Martineau
2012-07-26 13:30 ` Andrei Emeltchenko
2012-07-26 15:07 ` Mat Martineau
2012-07-25 23:50 ` [RFCv0 06/21] Bluetooth: Channel move request handling Mat Martineau
2012-07-26 13:59 ` Andrei Emeltchenko
2012-07-27 16:54 ` Mat Martineau
2012-08-06 8:44 ` Andrei Emeltchenko
2012-08-06 16:33 ` Mat Martineau
2012-08-07 8:31 ` Andrei Emeltchenko
2012-07-25 23:50 ` [RFCv0 07/21] Bluetooth: Add new ERTM receive states for channel move Mat Martineau
2012-07-25 23:51 ` [RFCv0 08/21] Bluetooth: Add move channel confirm handling Mat Martineau
2012-07-26 14:28 ` Andrei Emeltchenko
2012-07-26 15:16 ` Mat Martineau
2012-07-25 23:51 ` [RFCv0 09/21] Bluetooth: Move channel response Mat Martineau
2012-07-25 23:51 ` [RFCv0 10/21] Bluetooth: Add logical link confirm Mat Martineau
2012-07-26 14:41 ` Andrei Emeltchenko
2012-07-26 15:24 ` Mat Martineau
2012-07-25 23:51 ` [RFCv0 11/21] Bluetooth: Add move confirm response handling Mat Martineau
2012-07-26 14:45 ` Andrei Emeltchenko
2012-07-26 15:33 ` Mat Martineau
2012-07-25 23:51 ` [RFCv0 12/21] Bluetooth: Add state to hci_chan Mat Martineau
2012-07-26 19:54 ` Andrei Emeltchenko
2012-07-25 23:51 ` [RFCv0 13/21] Bluetooth: Indentation fixes Mat Martineau
2012-07-25 23:51 ` [RFCv0 14/21] Bluetooth: Handle physical link completion Mat Martineau
2012-08-15 13:51 ` Andrei Emeltchenko
2012-08-15 16:56 ` Mat Martineau
2012-08-16 7:23 ` Andrei Emeltchenko
2012-07-25 23:51 ` [RFCv0 15/21] Bluetooth: Enable data sends on AMP controller Mat Martineau
2012-07-25 23:51 ` [RFCv0 16/21] Bluetooth: Do not send data during channel move Mat Martineau
2012-07-25 23:51 ` [RFCv0 17/21] Bluetooth: Configure appropriate timeouts for AMP controllers Mat Martineau
2012-07-25 23:51 ` [RFCv0 18/21] Bluetooth: Ignore BR/EDR packet size constraints when fragmenting for AMP Mat Martineau
2012-07-25 23:51 ` [RFCv0 19/21] Bluetooth: Tie AMP link setup to connect/disconnect Mat Martineau
2012-07-25 23:51 ` [RFCv0 20/21] Bluetooth: Do not process ERTM reject during move Mat Martineau
2012-07-25 23:51 ` [RFCv0 21/21] Bluetooth: Start channel move when socket option is changed Mat Martineau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1343260274-11953-2-git-send-email-mathewm@codeaurora.org \
--to=mathewm@codeaurora.org \
--cc=Andrei.Emeltchenko.news@gmail.com \
--cc=gustavo@padovan.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=pkrystad@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).