All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrei Emeltchenko <Andrei.Emeltchenko.news@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [RFCv3 19/20] Bluetooth: AMP: Process Chan Selected event
Date: Mon, 13 Aug 2012 16:50:37 +0300	[thread overview]
Message-ID: <1344865838-9165-20-git-send-email-Andrei.Emeltchenko.news@gmail.com> (raw)
In-Reply-To: <1344865838-9165-1-git-send-email-Andrei.Emeltchenko.news@gmail.com>

From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>

Channel Selected event indicates that link information data is available.
Read it with Read Local AMP Assoc command. The data shall be sent in the
A2MP Create Physical Link Request.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
 include/net/bluetooth/a2mp.h     |    1 +
 include/net/bluetooth/amp.h      |    2 ++
 include/net/bluetooth/hci_core.h |    6 ++++
 net/bluetooth/a2mp.c             |    2 +-
 net/bluetooth/amp.c              |   71 ++++++++++++++++++++++++++++++++++----
 net/bluetooth/hci_core.c         |   14 ++++----
 net/bluetooth/hci_event.c        |   23 ++++++++++++
 7 files changed, 105 insertions(+), 14 deletions(-)

diff --git a/include/net/bluetooth/a2mp.h b/include/net/bluetooth/a2mp.h
index eaaa3e4..c8ecbe5 100644
--- a/include/net/bluetooth/a2mp.h
+++ b/include/net/bluetooth/a2mp.h
@@ -131,6 +131,7 @@ extern struct mutex amp_mgr_list_lock;
 
 void amp_mgr_get(struct amp_mgr *mgr);
 int amp_mgr_put(struct amp_mgr *mgr);
+u8 __next_ident(struct amp_mgr *mgr);
 struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn,
 				       struct sk_buff *skb);
 void a2mp_send(struct amp_mgr *mgr, u8 code, u8 ident, u16 len, void *data);
diff --git a/include/net/bluetooth/amp.h b/include/net/bluetooth/amp.h
index b376cc3..ab4e195 100644
--- a/include/net/bluetooth/amp.h
+++ b/include/net/bluetooth/amp.h
@@ -19,6 +19,8 @@
 void amp_read_loc_info(struct hci_dev *hdev, struct amp_mgr *mgr);
 void amp_read_loc_assoc_frag(struct hci_dev *hdev, u8 phy_handle);
 void amp_read_loc_assoc(struct hci_dev *hdev, struct amp_mgr *mgr);
+void amp_read_loc_assoc_final_data(struct hci_dev *hdev,
+				   struct phy_link *plink);
 void amp_create_phylink(struct hci_dev *hdev, struct amp_mgr *mgr,
 			struct phy_link *plink);
 
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index fbf929a..e106e17 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -1117,6 +1117,12 @@ int hci_cancel_le_scan(struct hci_dev *hdev);
 
 u8 bdaddr_to_le(u8 bdaddr_type);
 struct hci_cb_cmd *hci_callback_find(struct hci_dev *hdev, __u16 opcode);
+int hci_callback_add(struct hci_dev *hdev, __u16 opcode,
+		     void (*cb)(struct hci_dev *hdev, struct hci_cb_cmd *cmd),
+		     void *opt,
+		     void (*destructor)(struct hci_dev *hdev,
+					struct hci_cb_cmd *cmd),
+		     gfp_t flags);
 int hci_callback_send_cmd(struct hci_dev *hdev, __u16 opcode, __u32 plen,
 			  void *param,
 			  void (*cb)(struct hci_dev *hdev,
diff --git a/net/bluetooth/a2mp.c b/net/bluetooth/a2mp.c
index 4b6350f..c92ab54 100644
--- a/net/bluetooth/a2mp.c
+++ b/net/bluetooth/a2mp.c
@@ -70,7 +70,7 @@ void a2mp_send(struct amp_mgr *mgr, u8 code, u8 ident, u16 len, void *data)
 	kfree(cmd);
 }
 
-static u8 __next_ident(struct amp_mgr *mgr)
+u8 __next_ident(struct amp_mgr *mgr)
 {
 	if (++mgr->ident == 0)
 		mgr->ident = 1;
diff --git a/net/bluetooth/amp.c b/net/bluetooth/amp.c
index 409ca3d..72991c3 100644
--- a/net/bluetooth/amp.c
+++ b/net/bluetooth/amp.c
@@ -124,7 +124,59 @@ void amp_read_loc_assoc(struct hci_dev *hdev, struct amp_mgr *mgr)
 			      cb_destructor, GFP_KERNEL);
 }
 
-static void amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
+/* Read Local AMP Assoc final link information data callback */
+static void amp_read_loc_assoc_complete_final_cb(struct hci_dev *hdev,
+						 struct hci_cb_cmd *cmd)
+{
+	struct amp_mgr *mgr = cmd->opt;
+	struct amp_assoc *loc_assoc = &hdev->loc_assoc;
+	struct a2mp_physlink_req *req;
+	struct phy_link *plink;
+	size_t len;
+
+	len = sizeof(*req) + loc_assoc->len;
+
+	BT_DBG("%s mgr %p assoc_len %zu", hdev->name, mgr, len);
+
+	req = kzalloc(len, GFP_KERNEL);
+	if (!req)
+		return;
+
+	plink = phylink_lookup(mgr, hdev->id, 0);
+	if (!plink)
+		goto clean;
+
+	req->local_id = plink->local_id;
+	req->remote_id = plink->remote_id;
+	memcpy(req->amp_assoc, loc_assoc->data, loc_assoc->len);
+
+	phylink_put(plink);
+
+	a2mp_send(mgr, A2MP_CREATEPHYSLINK_REQ, __next_ident(mgr), len, req);
+
+clean:
+	kfree(req);
+}
+
+void amp_read_loc_assoc_final_data(struct hci_dev *hdev,
+				   struct phy_link *plink)
+{
+	struct hci_cp_read_local_amp_assoc cp;
+	struct amp_mgr *mgr = plink->mgr;
+
+	cp.phy_handle = plink->handle;
+	cp.len_so_far = cpu_to_le16(0);
+	cp.max_len = cpu_to_le16(hdev->amp_assoc_size);
+
+	amp_mgr_get(mgr);
+
+	/* Read Local AMP Assoc final link information data */
+	hci_callback_send_cmd(hdev, HCI_OP_READ_LOCAL_AMP_ASSOC, sizeof(cp),
+			      &cp, amp_read_loc_assoc_complete_final_cb,
+			      mgr, cb_destructor, GFP_KERNEL);
+}
+
+static bool amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
 				     struct phy_link *plink);
 
 static void amp_write_rem_assoc_cs_cb(struct hci_dev *hdev,
@@ -142,12 +194,16 @@ static void amp_write_rem_assoc_cs_cb(struct hci_dev *hdev,
 	if (!plink)
 		return;
 
-	amp_write_rem_assoc_frag(hdev, mgr, plink);
+	/* All fragments are written */
+	if (amp_write_rem_assoc_frag(hdev, mgr, plink)) {
+		/* Expect Channel Select event */
+	}
 
 	phylink_put(plink);
 }
 
-static void amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
+/* Write AMP Assoc data fragments, returns true with last fragment written*/
+static bool amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
 				     struct phy_link *plink)
 {
 	struct hci_cp_write_remote_amp_assoc *cp;
@@ -156,7 +212,7 @@ static void amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
 
 	ctrl = amp_ctrl_lookup(mgr, plink->remote_id);
 	if (!ctrl)
-		return;
+		return false;
 
 	if (!ctrl->assoc_rem_len) {
 		BT_DBG("all fragments are written");
@@ -164,7 +220,7 @@ static void amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
 		ctrl->assoc_len_so_far = 0;
 
 		amp_ctrl_put(ctrl);
-		return;
+		return true;
 	}
 
 	frag_len = min_t(u16, 248, ctrl->assoc_rem_len);
@@ -173,7 +229,7 @@ static void amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
 	cp = kzalloc(len, GFP_KERNEL);
 	if (!cp) {
 		amp_ctrl_put(ctrl);
-		return;
+		return false;
 	}
 
 	BT_DBG("plink %p ctrl %p frag_len %u assoc_len %u rem_len %u",
@@ -196,6 +252,8 @@ static void amp_write_rem_assoc_frag(struct hci_dev *hdev, struct amp_mgr *mgr,
 			      GFP_KERNEL);
 
 	kfree(cp);
+
+	return false;
 }
 
 static void amp_create_phylink_cs_cb(struct hci_dev *hdev,
@@ -209,6 +267,7 @@ static void amp_create_phylink_cs_cb(struct hci_dev *hdev,
 	/* Write Remote AMP Assoc */
 	plink = phylink_lookup(mgr, hdev->id, 0);
 	if (plink) {
+		hci_dev_hold(hdev);
 		amp_write_rem_assoc_frag(hdev, mgr, plink);
 		phylink_put(plink);
 	}
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 60ba01f..688ea40 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -2121,13 +2121,13 @@ int hci_send_cmd(struct hci_dev *hdev, __u16 opcode, __u32 plen, void *param)
 	return 0;
 }
 
-static int hci_callback_add(struct hci_dev *hdev, __u16 opcode,
-			    void (*cb)(struct hci_dev *hdev,
-				       struct hci_cb_cmd *cmd),
-			    void *opt,
-			    void (*destructor)(struct hci_dev *hdev,
-					       struct hci_cb_cmd *cmd),
-			    gfp_t flags)
+int hci_callback_add(struct hci_dev *hdev, __u16 opcode,
+		     void (*cb)(struct hci_dev *hdev,
+				struct hci_cb_cmd *cmd),
+		     void *opt,
+		     void (*destructor)(struct hci_dev *hdev,
+					struct hci_cb_cmd *cmd),
+		     gfp_t flags)
 {
 	struct hci_cb_cmd *cmd;
 
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 2f54e76..bb52a0e 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -3533,6 +3533,25 @@ static void hci_le_meta_evt(struct hci_dev *hdev, struct sk_buff *skb)
 	}
 }
 
+static void hci_chan_selected_evt(struct hci_dev *hdev, struct sk_buff *skb)
+{
+	struct hci_ev_channel_selected *ev = (void *) skb->data;
+	__u8 phy_handle = ev->phy_handle;
+	struct phy_link *plink;
+
+	BT_DBG("%s handle 0x%2.2x", hdev->name, phy_handle);
+
+	skb_pull(skb, sizeof(*ev));
+
+	plink = phylink_lookup_by_handle(phy_handle);
+	if (!plink)
+		return;
+
+	amp_read_loc_assoc_final_data(hdev, plink);
+
+	phylink_put(plink);
+}
+
 void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
 {
 	struct hci_event_hdr *hdr = (void *) skb->data;
@@ -3689,6 +3708,10 @@ void hci_event_packet(struct hci_dev *hdev, struct sk_buff *skb)
 		hci_le_meta_evt(hdev, skb);
 		break;
 
+	case HCI_EV_CHANNEL_SELECTED:
+		hci_chan_selected_evt(hdev, skb);
+		break;
+
 	case HCI_EV_REMOTE_OOB_DATA_REQUEST:
 		hci_remote_oob_data_request_evt(hdev, skb);
 		break;
-- 
1.7.9.5


  parent reply	other threads:[~2012-08-13 13:50 UTC|newest]

Thread overview: 267+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-29 14:46 [RFCv0 00/19] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 01/19] Bluetooth: Define AMP controller statuses Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 02/19] Bluetooth: Do not shadow hdr variable Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 03/19] Bluetooth: Fix processing A2MP chan in security_cfm Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 04/19] Bluetooth: General HCI callback implementation Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 05/19] Bluetooth: Process HCI callbacks in a workqueue Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 06/19] Bluetooth: Add callback clear to ops->teardown Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 07/19] Bluetooth: AMP: Use HCI callback for Read AMP Info Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 08/19] Bluetooth: AMP: Use HCI callback to Read Loc AMP Assoc Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 09/19] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 10/19] Bluetooth: AMP: Physical link struct definitions Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 11/19] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 12/19] Bluetooth: AMP: Use phylink in create/disc phylink req Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 13/19] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 14/19] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 15/19] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 16/19] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-07-12 14:30   ` Andrei Emeltchenko
2012-07-12 23:55     ` Mat Martineau
2012-07-13  7:11       ` Andrei Emeltchenko
2012-07-16 20:46         ` Mat Martineau
2012-06-29 14:46 ` [RFCv0 17/19] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 18/19] Bluetooth: AMP: Create phy link after A2MP Assoc rsp Andrei Emeltchenko
2012-06-29 14:46 ` [RFCv0 19/19] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-07-13 13:39 ` [RFCv1 00/20] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 01/20] Bluetooth: Define AMP controller statuses Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 02/20] Bluetooth: Do not shadow hdr variable Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 03/20] Bluetooth: Fix processing A2MP chan in security_cfm Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 04/20] Bluetooth: General HCI callback implementation Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 05/20] Bluetooth: Process HCI callbacks in a workqueue Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 06/20] Bluetooth: Add callback clear to ops->teardown Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 07/20] Bluetooth: AMP: Use HCI callback for Read AMP Info Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 08/20] Bluetooth: AMP: Use HCI callback to Read Loc AMP Assoc Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 09/20] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 10/20] Bluetooth: AMP: Physical link struct definitions Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 11/20] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 12/20] Bluetooth: AMP: Use phylink in create/disc phylink req Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 13/20] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 14/20] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 15/20] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 16/20] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 17/20] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 18/20] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 19/20] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-07-13 13:39   ` [RFCv1 20/20] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-07-24 13:21 ` [RFCv2 00/20] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 01/20] Bluetooth: General HCI callback implementation Andrei Emeltchenko
2012-07-24 19:44     ` Gustavo Padovan
2012-07-24 13:21   ` [RFCv2 02/20] Bluetooth: Process HCI callbacks in a workqueue Andrei Emeltchenko
2012-07-24 13:31     ` Oliver Neukum
2012-07-24 13:46       ` Andrei Emeltchenko
2012-07-24 14:15         ` Oliver Neukum
2012-07-24 14:25           ` Andrei Emeltchenko
2012-07-24 20:36     ` Gustavo Padovan
2012-08-13 13:51       ` Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 03/20] Bluetooth: Add callback clear to ops->teardown Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 04/20] Bluetooth: AMP: Use HCI callback for Read AMP Info Andrei Emeltchenko
2012-07-24 20:46     ` Gustavo Padovan
2012-07-25  9:16       ` Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 05/20] Bluetooth: AMP: Use HCI callback to Read Loc AMP Assoc Andrei Emeltchenko
2012-07-24 20:55     ` Gustavo Padovan
2012-07-25  8:49       ` Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 06/20] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 07/20] Bluetooth: AMP: Physical link struct definitions Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 08/20] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-07-24 21:13     ` Gustavo Padovan
2012-07-25 11:26       ` Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 09/20] Bluetooth: AMP: Use phylink in create/disc phylink req Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 10/20] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 11/20] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 12/20] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-07-24 21:10     ` Gustavo Padovan
2012-08-10 12:50       ` Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 13/20] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-07-24 21:16     ` Gustavo Padovan
2012-07-24 13:21   ` [RFCv2 14/20] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-07-24 21:29     ` Gustavo Padovan
2012-07-25  9:12       ` Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 15/20] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 16/20] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 17/20] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-07-24 13:21   ` [RFCv2 18/20] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-07-24 13:22   ` [RFCv2 19/20] Bluetooth: AMP: Process physical link complete event Andrei Emeltchenko
2012-07-24 13:22   ` [RFCv2 20/20] Bluetooth: AMP: Send Create Chan Req Andrei Emeltchenko
2012-08-13 13:50 ` [RFCv3 00/20] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 01/20] Bluetooth: General HCI callback implementation Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 02/20] Bluetooth: Add callback clear to ops->teardown Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 03/20] Bluetooth: AMP: Use HCI callback for Read AMP Info Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 04/20] Bluetooth: AMP: Use HCI callback to Read Loc AMP Assoc Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 05/20] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 06/20] Bluetooth: AMP: Physical link struct definitions Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 07/20] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 08/20] Bluetooth: AMP: Use phylink in create/disc phylink req Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 09/20] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 10/20] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 11/20] Bluetooth: A2MP: Create A2MP workqueue Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 12/20] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 13/20] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 14/20] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 15/20] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 16/20] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 17/20] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-08-13 13:50   ` [RFCv3 18/20] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-08-13 13:50   ` Andrei Emeltchenko [this message]
2012-08-13 13:50   ` [RFCv3 20/20] Bluetooth: AMP: Process physical link complete event Andrei Emeltchenko
2012-08-17 14:32 ` [PATCHv1 00/26] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-08-17 14:32   ` [PATCHv1 01/26] Bluetooth: debug: Print refcnt for hci_dev Andrei Emeltchenko
2012-08-17 14:32   ` [PATCHv1 02/26] Bluetooth: trivial: Remove empty line Andrei Emeltchenko
2012-08-17 14:32   ` [PATCHv1 03/26] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-08-17 14:32   ` [PATCHv1 04/26] Bluetooth: General HCI callback implementation Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 05/26] Bluetooth: Add callback clear to ops->teardown Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 06/26] Bluetooth: AMP: Use HCI callback for Read AMP Info Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 07/26] Bluetooth: AMP: Use HCI callback to Read Loc AMP Assoc Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 08/26] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 09/26] Bluetooth: AMP: Physical link struct definitions Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 10/26] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 11/26] Bluetooth: AMP: Use phylink in create/disc phylink req Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 12/26] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 13/26] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 14/26] Bluetooth: A2MP: Create A2MP workqueue Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 15/26] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 16/26] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 17/26] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 18/26] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 19/26] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 20/26] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 21/26] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 22/26] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 23/26] Bluetooth: AMP: Process physical link complete event Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 24/26] Bluetooth: AMP: Send Create Chan Req Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 25/26] Bluetooth: Set Exended Flowspec flag for HS chan Andrei Emeltchenko
2012-08-17 14:33   ` [PATCHv1 26/26] Bluetooth: Add logical link create function Andrei Emeltchenko
2012-08-24 13:59 ` [PATCHv2 00/22] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 01/22] Bluetooth: debug: Print refcnt for hci_dev Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 02/22] Bluetooth: trivial: Remove empty line Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 03/22] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 04/22] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 05/22] Bluetooth: AMP: Use HCI cmd to Read AMP Info Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 06/22] Bluetooth: AMP: Use HCI cmd to Read Loc AMP Assoc Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 07/22] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 08/22] Bluetooth: AMP: Physical link struct definitions Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 09/22] Bluetooth: Add phylink lookup helper function Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 10/22] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 11/22] Bluetooth: AMP: Use phylink in create/disc phylink req Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 12/22] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 13/22] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 14/22] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 15/22] Bluetooth: Close A2MP chan when deleting corr L2CAP chan Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 16/22] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 17/22] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 18/22] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 19/22] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 20/22] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 21/22] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-08-24 14:00   ` [PATCHv2 22/22] Bluetooth: AMP: Process physical link complete event Andrei Emeltchenko
2012-09-06 12:19 ` [PATCHv3 00/19] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 01/19] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 02/19] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 03/19] Bluetooth: AMP: Use HCI cmd to Read AMP Info Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 04/19] Bluetooth: AMP: Use HCI cmd to Read Loc AMP Assoc Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 05/19] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 06/19] Bluetooth: AMP: Physical link struct and heplers Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 07/19] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 08/19] Bluetooth: AMP: Handle create / disc phylink req Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 09/19] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 10/19] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 11/19] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 12/19] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 13/19] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 14/19] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 15/19] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 16/19] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 17/19] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 18/19] Bluetooth: AMP: Send Create Chan Req Andrei Emeltchenko
2012-09-06 12:19   ` [PATCHv3 19/19] Bluetooth: AMP: Process physical link complete event Andrei Emeltchenko
2012-09-11 18:23   ` [PATCHv3 00/19] Bluetooth: Create AMP physical link Mat Martineau
2012-09-12  8:06     ` [PATCHv4 00/17] " Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 01/17] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 02/17] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-09-13 15:02         ` Mat Martineau
2012-09-14  6:40           ` Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 03/17] Bluetooth: AMP: Use HCI cmd to Read AMP Info Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 04/17] Bluetooth: AMP: Use HCI cmd to Read Loc AMP Assoc Andrei Emeltchenko
2012-09-13 15:28         ` Mat Martineau
2012-09-14  6:58           ` Andrei Emeltchenko
2012-09-14 15:42             ` Mat Martineau
2012-09-12  8:06       ` [PATCHv4 05/17] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 06/17] Bluetooth: AMP: Physical link struct and heplers Andrei Emeltchenko
2012-09-13 15:40         ` Mat Martineau
2012-09-14  7:50           ` Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 07/17] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-09-13 15:50         ` Mat Martineau
2012-09-14  9:56           ` Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 08/17] Bluetooth: AMP: Handle create / disc phylink req Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 09/17] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 10/17] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 11/17] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-09-13 16:26         ` Mat Martineau
2012-09-14  9:57           ` Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 12/17] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 13/17] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 14/17] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 15/17] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 16/17] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-09-13 16:39         ` Mat Martineau
2012-09-14 10:29           ` Andrei Emeltchenko
2012-09-12  8:06       ` [PATCHv4 17/17] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-09-17 13:24       ` [PATCHv5 00/17] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 01/17] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 02/17] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-09-18  7:43           ` Marcel Holtmann
2012-09-18  8:45             ` Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 03/17] Bluetooth: AMP: Use HCI cmd to Read AMP Info Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 04/17] Bluetooth: AMP: Use HCI cmd to Read Loc AMP Assoc Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 05/17] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 06/17] Bluetooth: AMP: Physical link struct and heplers Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 07/17] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 08/17] Bluetooth: AMP: Handle create / disc phylink req Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 09/17] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 10/17] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 11/17] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 12/17] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 13/17] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 14/17] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 15/17] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 16/17] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-09-17 13:24         ` [PATCHv5 17/17] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-09-18 14:28       ` [PATCHv6 00/17] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 01/17] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 02/17] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 03/17] Bluetooth: AMP: Use HCI cmd to Read AMP Info Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 04/17] Bluetooth: AMP: Use HCI cmd to Read Loc AMP Assoc Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 05/17] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 06/17] Bluetooth: AMP: Physical link struct and heplers Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 07/17] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 08/17] Bluetooth: AMP: Handle create / disc phylink req Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 09/17] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 10/17] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 11/17] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 12/17] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 13/17] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 14/17] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 15/17] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 16/17] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-09-18 14:28         ` [PATCHv6 17/17] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-09-20 11:01         ` [PATCHv6 00/17] Bluetooth: Create AMP physical link Andrei Emeltchenko
2012-09-27 14:26       ` [PATCHv7 00/19] " Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 01/19] Bluetooth: Add HCI logical link cmds definitions Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 02/19] Bluetooth: A2MP: Create amp_mgr global list Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 03/19] Bluetooth: AMP: Use HCI cmd to Read AMP Info Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 04/19] Bluetooth: AMP: Use HCI cmd to Read Loc AMP Assoc Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 05/19] Bluetooth: A2MP: Process Discover Response Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 06/19] Bluetooth: AMP: Physical link struct and heplers Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 07/19] Bluetooth: AMP: Remote AMP ctrl definitions Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 08/19] Bluetooth: AMP: Handle create / disc phylink req Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 09/19] Bluetooth: A2MP: Process A2MP Getinfo Rsp Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 10/19] Bluetooth: A2MP: Process A2MP Get AMP Assoc Rsp Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 11/19] Bluetooth: Choose connection based on capabilities Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 12/19] Bluetooth: Add function to derive AMP key using hmac Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 13/19] Bluetooth: AMP: Add AMP key calculation Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 14/19] Bluetooth: AMP: Create Physical Link Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 15/19] Bluetooth: AMP: Write remote AMP Assoc Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 16/19] Bluetooth: A2MP: Add fallback to normal l2cap init sequence Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 17/19] Bluetooth: AMP: Process Chan Selected event Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 18/19] Bluetooth: AMP: Accept Physical Link Andrei Emeltchenko
2012-09-27 14:26         ` [PATCHv7 19/19] Bluetooth: AMP: Handle Accept phylink command status evt Andrei Emeltchenko
2012-09-27 20:44         ` [PATCHv7 00/19] Bluetooth: Create AMP physical link Gustavo Padovan

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=1344865838-9165-20-git-send-email-Andrei.Emeltchenko.news@gmail.com \
    --to=andrei.emeltchenko.news@gmail.com \
    --cc=linux-bluetooth@vger.kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.