linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFCv1 0/6] AMP/BREDR initialization patches
@ 2011-11-24 12:51 Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 1/6] Bluetooth: remove old code Emeltchenko Andrei
                   ` (5 more replies)
  0 siblings, 6 replies; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:51 UTC (permalink / raw)
  To: linux-bluetooth

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

RFC for AMP init and block flow control code.

Resubmit "remove old code" patch as it seems that there is little
sense to copy it over.

Marcel is it OK? Otherwise I can copy-paste those commented lines to new
functions.

Andrei Emeltchenko (6):
  Bluetooth: remove old code
  Bluetooth: Split ctrl init to BREDR and AMP parts
  Bluetooth: Add HCI Read Flow Control Mode function
  Bluetooth: Initialize default flow control mode
  Bluetooth: Add HCI Read Data Block Size function
  Bluetooth: Recalculate sched for HCI block flow ctrl

 include/net/bluetooth/hci.h      |   18 +++++++
 include/net/bluetooth/hci_core.h |    4 ++
 net/bluetooth/hci_core.c         |  103 +++++++++++++++++++++++++------------
 net/bluetooth/hci_event.c        |   53 +++++++++++++++++++
 4 files changed, 144 insertions(+), 34 deletions(-)

-- 
1.7.4.1


^ permalink raw reply	[flat|nested] 13+ messages in thread

* [RFCv1 1/6] Bluetooth: remove old code
  2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
@ 2011-11-24 12:52 ` Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts Emeltchenko Andrei
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:52 UTC (permalink / raw)
  To: linux-bluetooth

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

Remove old code not touched for several years.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
---
 net/bluetooth/hci_core.c |   12 ------------
 1 files changed, 0 insertions(+), 12 deletions(-)

diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index ef0423e..bc71f96 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -230,18 +230,6 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
 	/* Read Buffer Size (ACL mtu, max pkt, etc.) */
 	hci_send_cmd(hdev, HCI_OP_READ_BUFFER_SIZE, 0, NULL);
 
-#if 0
-	/* Host buffer size */
-	{
-		struct hci_cp_host_buffer_size cp;
-		cp.acl_mtu = cpu_to_le16(HCI_MAX_ACL_SIZE);
-		cp.sco_mtu = HCI_MAX_SCO_SIZE;
-		cp.acl_max_pkt = cpu_to_le16(0xffff);
-		cp.sco_max_pkt = cpu_to_le16(0xffff);
-		hci_send_cmd(hdev, HCI_OP_HOST_BUFFER_SIZE, sizeof(cp), &cp);
-	}
-#endif
-
 	/* Read BD Address */
 	hci_send_cmd(hdev, HCI_OP_READ_BD_ADDR, 0, NULL);
 
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts
  2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 1/6] Bluetooth: remove old code Emeltchenko Andrei
@ 2011-11-24 12:52 ` Emeltchenko Andrei
  2011-11-25 12:00   ` Marcel Holtmann
  2011-12-02 11:50   ` Gustavo Padovan
  2011-11-24 12:52 ` [RFCv1 3/6] Bluetooth: Add HCI Read Flow Control Mode function Emeltchenko Andrei
                   ` (3 subsequent siblings)
  5 siblings, 2 replies; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:52 UTC (permalink / raw)
  To: linux-bluetooth

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

Current controller initialization is moved tp bredr_init and new
function added amp_init to handle later AMP init sequence. Current
AMP init sequence include Reset and Read Local Version.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
 net/bluetooth/hci_core.c  |   64 ++++++++++++++++++++++++++++++++------------
 net/bluetooth/hci_event.c |    3 ++
 2 files changed, 49 insertions(+), 18 deletions(-)

diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index bc71f96..a0247d3 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -192,33 +192,18 @@ static void hci_reset_req(struct hci_dev *hdev, unsigned long opt)
 	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
 }
 
-static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
+static void bredr_init(struct hci_dev *hdev)
 {
 	struct hci_cp_delete_stored_link_key cp;
-	struct sk_buff *skb;
 	__le16 param;
 	__u8 flt_type;
 
-	BT_DBG("%s %ld", hdev->name, opt);
-
-	/* Driver initialization */
-
-	/* Special commands */
-	while ((skb = skb_dequeue(&hdev->driver_init))) {
-		bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
-		skb->dev = (void *) hdev;
-
-		skb_queue_tail(&hdev->cmd_q, skb);
-		tasklet_schedule(&hdev->cmd_task);
-	}
-	skb_queue_purge(&hdev->driver_init);
-
 	/* Mandatory initialization */
 
 	/* Reset */
 	if (!test_bit(HCI_QUIRK_NO_RESET, &hdev->quirks)) {
-			set_bit(HCI_RESET, &hdev->flags);
-			hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
+		set_bit(HCI_RESET, &hdev->flags);
+		hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
 	}
 
 	/* Read Local Supported Features */
@@ -257,6 +242,49 @@ static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
 	hci_send_cmd(hdev, HCI_OP_DELETE_STORED_LINK_KEY, sizeof(cp), &cp);
 }
 
+static void amp_init(struct hci_dev *hdev)
+{
+	/* Reset */
+	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
+
+	/* Read Local Version */
+	hci_send_cmd(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL);
+}
+
+static void hci_init_req(struct hci_dev *hdev, unsigned long opt)
+{
+	struct sk_buff *skb;
+
+	BT_DBG("%s %ld", hdev->name, opt);
+
+	/* Driver initialization */
+
+	/* Special commands */
+	while ((skb = skb_dequeue(&hdev->driver_init))) {
+		bt_cb(skb)->pkt_type = HCI_COMMAND_PKT;
+		skb->dev = (void *) hdev;
+
+		skb_queue_tail(&hdev->cmd_q, skb);
+		tasklet_schedule(&hdev->cmd_task);
+	}
+	skb_queue_purge(&hdev->driver_init);
+
+	switch (hdev->dev_type) {
+	case HCI_BREDR:
+		bredr_init(hdev);
+		break;
+
+	case HCI_AMP:
+		amp_init(hdev);
+		break;
+
+	default:
+		BT_ERR("Unknown device type %d", hdev->dev_type);
+		break;
+	}
+
+}
+
 static void hci_le_init_req(struct hci_dev *hdev, unsigned long opt)
 {
 	BT_DBG("%s", hdev->name);
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 60651fa..2e423eb 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -560,6 +560,9 @@ static void hci_set_le_support(struct hci_dev *hdev)
 
 static void hci_setup(struct hci_dev *hdev)
 {
+	if (hdev->dev_type != HCI_BREDR)
+		return;
+
 	hci_setup_event_mask(hdev);
 
 	if (hdev->hci_ver > BLUETOOTH_VER_1_1)
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFCv1 3/6] Bluetooth: Add HCI Read Flow Control Mode function
  2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 1/6] Bluetooth: remove old code Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts Emeltchenko Andrei
@ 2011-11-24 12:52 ` Emeltchenko Andrei
  2011-11-25 12:01   ` Marcel Holtmann
  2011-11-24 12:52 ` [RFCv1 4/6] Bluetooth: Initialize default flow control mode Emeltchenko Andrei
                   ` (2 subsequent siblings)
  5 siblings, 1 reply; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:52 UTC (permalink / raw)
  To: linux-bluetooth

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

Upstream Code Aurora function with minor trivial fixes.
Origin: git://codeaurora.org/kernel/msm.git

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
 include/net/bluetooth/hci.h      |    6 ++++++
 include/net/bluetooth/hci_core.h |    2 ++
 net/bluetooth/hci_event.c        |   19 +++++++++++++++++++
 3 files changed, 27 insertions(+), 0 deletions(-)

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 376c574..ee83c36 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -677,6 +677,12 @@ struct hci_rp_read_local_oob_data {
 
 #define HCI_OP_READ_INQ_RSP_TX_POWER	0x0c58
 
+#define HCI_OP_READ_FLOW_CONTROL_MODE	0x0c66
+struct hci_rp_read_flow_control_mode {
+	__u8     status;
+	__u8     mode;
+} __packed;
+
 #define HCI_OP_WRITE_LE_HOST_SUPPORTED	0x0c6d
 struct hci_cp_write_le_host_supported {
 	__u8 le;
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index 1795257..a7fd63a 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -170,6 +170,8 @@ struct hci_dev {
 	__u32		amp_max_flush_to;
 	__u32		amp_be_flush_to;
 
+	__u8		flow_ctl_mode;
+
 	unsigned int	auto_accept_delay;
 
 	unsigned long	quirks;
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 2e423eb..53e56b4 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -720,6 +720,21 @@ static void hci_cc_read_local_ext_features(struct hci_dev *hdev,
 	hci_req_complete(hdev, HCI_OP_READ_LOCAL_EXT_FEATURES, rp->status);
 }
 
+static void hci_cc_read_flow_control_mode(struct hci_dev *hdev,
+						struct sk_buff *skb)
+{
+	struct hci_rp_read_flow_control_mode *rp = (void *) skb->data;
+
+	BT_DBG("%s status 0x%x", hdev->name, rp->status);
+
+	if (rp->status)
+		return;
+
+	hdev->flow_ctl_mode = rp->mode;
+
+	hci_req_complete(hdev, HCI_OP_READ_FLOW_CONTROL_MODE, rp->status);
+}
+
 static void hci_cc_read_buffer_size(struct hci_dev *hdev, struct sk_buff *skb)
 {
 	struct hci_rp_read_buffer_size *rp = (void *) skb->data;
@@ -1970,6 +1985,10 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
 		hci_cc_write_ca_timeout(hdev, skb);
 		break;
 
+	case HCI_OP_READ_FLOW_CONTROL_MODE:
+		hci_cc_read_flow_control_mode(hdev, skb);
+		break;
+
 	case HCI_OP_READ_LOCAL_AMP_INFO:
 		hci_cc_read_local_amp_info(hdev, skb);
 		break;
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFCv1 4/6] Bluetooth: Initialize default flow control mode
  2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
                   ` (2 preceding siblings ...)
  2011-11-24 12:52 ` [RFCv1 3/6] Bluetooth: Add HCI Read Flow Control Mode function Emeltchenko Andrei
@ 2011-11-24 12:52 ` Emeltchenko Andrei
  2011-11-25 12:02   ` Marcel Holtmann
  2011-11-24 12:52 ` [RFCv1 5/6] Bluetooth: Add HCI Read Data Block Size function Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 6/6] Bluetooth: Recalculate sched for HCI block flow ctrl Emeltchenko Andrei
  5 siblings, 1 reply; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:52 UTC (permalink / raw)
  To: linux-bluetooth

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


Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
 include/net/bluetooth/hci.h |    4 ++++
 net/bluetooth/hci_core.c    |    4 ++++
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index ee83c36..67f7028 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -271,6 +271,10 @@ enum {
 #define HCI_ERROR_LOCAL_HOST_TERM	0x16
 #define HCI_ERROR_PAIRING_NOT_ALLOWED	0x18
 
+/* Flow control modes */
+#define HCI_PACKET_BASED_FLOW_CTL_MODE	0x00
+#define HCI_BLOCK_BASED_FLOW_CTL_MODE	0x01
+
 /* -----  HCI Commands ---- */
 #define HCI_OP_NOP			0x0000
 
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index a0247d3..2e4211e 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -198,6 +198,8 @@ static void bredr_init(struct hci_dev *hdev)
 	__le16 param;
 	__u8 flt_type;
 
+	hdev->flow_ctl_mode = HCI_PACKET_BASED_FLOW_CTL_MODE;
+
 	/* Mandatory initialization */
 
 	/* Reset */
@@ -244,6 +246,8 @@ static void bredr_init(struct hci_dev *hdev)
 
 static void amp_init(struct hci_dev *hdev)
 {
+	hdev->flow_ctl_mode = HCI_BLOCK_BASED_FLOW_CTL_MODE;
+
 	/* Reset */
 	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
 
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFCv1 5/6] Bluetooth: Add HCI Read Data Block Size function
  2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
                   ` (3 preceding siblings ...)
  2011-11-24 12:52 ` [RFCv1 4/6] Bluetooth: Initialize default flow control mode Emeltchenko Andrei
@ 2011-11-24 12:52 ` Emeltchenko Andrei
  2011-11-24 12:52 ` [RFCv1 6/6] Bluetooth: Recalculate sched for HCI block flow ctrl Emeltchenko Andrei
  5 siblings, 0 replies; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:52 UTC (permalink / raw)
  To: linux-bluetooth

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

Upstream Code Aurora function with minor trivial fixes.
Origin: git://codeaurora.org/kernel/msm.git

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
 include/net/bluetooth/hci.h      |    8 ++++++++
 include/net/bluetooth/hci_core.h |    2 ++
 net/bluetooth/hci_event.c        |   31 +++++++++++++++++++++++++++++++
 3 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
index 67f7028..86884b4 100644
--- a/include/net/bluetooth/hci.h
+++ b/include/net/bluetooth/hci.h
@@ -741,6 +741,14 @@ struct hci_rp_read_bd_addr {
 	bdaddr_t bdaddr;
 } __packed;
 
+#define HCI_OP_READ_DATA_BLOCK_SIZE	0x100a
+struct hci_rp_read_data_block_size {
+	__u8     status;
+	__le16   max_acl_len;
+	__le16   block_len;
+	__le16   num_blocks;
+} __packed;
+
 #define HCI_OP_WRITE_PAGE_SCAN_ACTIVITY	0x0c1c
 struct hci_cp_write_page_scan_activity {
 	__le16   interval;
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h
index a7fd63a..869ab72 100644
--- a/include/net/bluetooth/hci_core.h
+++ b/include/net/bluetooth/hci_core.h
@@ -172,6 +172,8 @@ struct hci_dev {
 
 	__u8		flow_ctl_mode;
 
+	__u16		block_len;
+
 	unsigned int	auto_accept_delay;
 
 	unsigned long	quirks;
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 53e56b4..dfea1c6 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -774,6 +774,33 @@ static void hci_cc_read_bd_addr(struct hci_dev *hdev, struct sk_buff *skb)
 	hci_req_complete(hdev, HCI_OP_READ_BD_ADDR, rp->status);
 }
 
+static void hci_cc_read_data_block_size(struct hci_dev *hdev,
+							struct sk_buff *skb)
+{
+	struct hci_rp_read_data_block_size *rp = (void *) skb->data;
+
+	BT_DBG("%s status 0x%x", hdev->name, rp->status);
+
+	if (rp->status)
+		return;
+
+	if (hdev->flow_ctl_mode == HCI_BLOCK_BASED_FLOW_CTL_MODE) {
+		hdev->acl_mtu  = __le16_to_cpu(rp->max_acl_len);
+		hdev->sco_mtu = 0;
+		hdev->block_len = __le16_to_cpu(rp->block_len);
+		/* acl_pkts indicates the number of blocks */
+		hdev->acl_pkts = __le16_to_cpu(rp->num_blocks);
+		hdev->sco_pkts = 0;
+		hdev->acl_cnt = hdev->acl_pkts;
+		hdev->sco_cnt = 0;
+	}
+
+	BT_DBG("%s acl mtu %d:%d, block len %d", hdev->name, hdev->acl_mtu,
+					hdev->acl_cnt, hdev->block_len);
+
+	hci_req_complete(hdev, HCI_OP_READ_DATA_BLOCK_SIZE, rp->status);
+}
+
 static void hci_cc_write_ca_timeout(struct hci_dev *hdev, struct sk_buff *skb)
 {
 	__u8 status = *((__u8 *) skb->data);
@@ -1981,6 +2008,10 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
 		hci_cc_read_bd_addr(hdev, skb);
 		break;
 
+	case HCI_OP_READ_DATA_BLOCK_SIZE:
+		hci_cc_read_data_block_size(hdev, skb);
+		break;
+
 	case HCI_OP_WRITE_CA_TIMEOUT:
 		hci_cc_write_ca_timeout(hdev, skb);
 		break;
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [RFCv1 6/6] Bluetooth: Recalculate sched for HCI block flow ctrl
  2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
                   ` (4 preceding siblings ...)
  2011-11-24 12:52 ` [RFCv1 5/6] Bluetooth: Add HCI Read Data Block Size function Emeltchenko Andrei
@ 2011-11-24 12:52 ` Emeltchenko Andrei
  5 siblings, 0 replies; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-11-24 12:52 UTC (permalink / raw)
  To: linux-bluetooth

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

Upstream Code Aurora code with trivial fixes.
Origin: git://codeaurora.org/kernel/msm.git

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
---
 net/bluetooth/hci_core.c |   25 ++++++++++++++++++++-----
 1 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 2e4211e..1b62041 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -2290,10 +2290,12 @@ static inline void hci_sched_acl(struct hci_dev *hdev)
 
 	cnt = hdev->acl_cnt;
 
-	while (hdev->acl_cnt &&
+	while (hdev->acl_cnt > 0 &&
 			(chan = hci_chan_sent(hdev, ACL_LINK, &quote))) {
 		u32 priority = (skb_peek(&chan->data_q))->priority;
-		while (quote-- && (skb = skb_peek(&chan->data_q))) {
+		while (quote > 0 && (skb = skb_peek(&chan->data_q))) {
+			int blocks = 1;
+
 			BT_DBG("chan %p skb %p len %d priority %u", chan, skb,
 					skb->len, skb->priority);
 
@@ -2303,15 +2305,28 @@ static inline void hci_sched_acl(struct hci_dev *hdev)
 
 			skb = skb_dequeue(&chan->data_q);
 
+			if (hdev->flow_ctl_mode ==
+					HCI_BLOCK_BASED_FLOW_CTL_MODE)
+				/* Calculate count of blocks used by
+				 * this packet
+				 */
+				blocks = DIV_ROUND_UP(skb->len -
+					HCI_ACL_HDR_SIZE, hdev->block_len);
+
+			if (blocks > hdev->acl_cnt)
+				return;
+
 			hci_conn_enter_active_mode(chan->conn,
 						bt_cb(skb)->force_active);
 
 			hci_send_frame(skb);
 			hdev->acl_last_tx = jiffies;
 
-			hdev->acl_cnt--;
-			chan->sent++;
-			chan->conn->sent++;
+			hdev->acl_cnt -= blocks;
+			quote -= blocks;
+
+			chan->sent += blocks;
+			chan->conn->sent += blocks;
 		}
 	}
 
-- 
1.7.4.1


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts
  2011-11-24 12:52 ` [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts Emeltchenko Andrei
@ 2011-11-25 12:00   ` Marcel Holtmann
  2011-12-02 11:50   ` Gustavo Padovan
  1 sibling, 0 replies; 13+ messages in thread
From: Marcel Holtmann @ 2011-11-25 12:00 UTC (permalink / raw)
  To: Emeltchenko Andrei; +Cc: linux-bluetooth

Hi Andrei,

> Current controller initialization is moved tp bredr_init and new
> function added amp_init to handle later AMP init sequence. Current
> AMP init sequence include Reset and Read Local Version.
> 
> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> ---
>  net/bluetooth/hci_core.c  |   64 ++++++++++++++++++++++++++++++++------------
>  net/bluetooth/hci_event.c |    3 ++
>  2 files changed, 49 insertions(+), 18 deletions(-)

so far so good.

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFCv1 3/6] Bluetooth: Add HCI Read Flow Control Mode function
  2011-11-24 12:52 ` [RFCv1 3/6] Bluetooth: Add HCI Read Flow Control Mode function Emeltchenko Andrei
@ 2011-11-25 12:01   ` Marcel Holtmann
  0 siblings, 0 replies; 13+ messages in thread
From: Marcel Holtmann @ 2011-11-25 12:01 UTC (permalink / raw)
  To: Emeltchenko Andrei; +Cc: linux-bluetooth

Hi Andrei,

> Upstream Code Aurora function with minor trivial fixes.
> Origin: git://codeaurora.org/kernel/msm.git
> 
> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> ---
>  include/net/bluetooth/hci.h      |    6 ++++++
>  include/net/bluetooth/hci_core.h |    2 ++
>  net/bluetooth/hci_event.c        |   19 +++++++++++++++++++
>  3 files changed, 27 insertions(+), 0 deletions(-)

just keep in mind that this command is not available on all controller
version.

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFCv1 4/6] Bluetooth: Initialize default flow control mode
  2011-11-24 12:52 ` [RFCv1 4/6] Bluetooth: Initialize default flow control mode Emeltchenko Andrei
@ 2011-11-25 12:02   ` Marcel Holtmann
  0 siblings, 0 replies; 13+ messages in thread
From: Marcel Holtmann @ 2011-11-25 12:02 UTC (permalink / raw)
  To: Emeltchenko Andrei; +Cc: linux-bluetooth

Hi Andrei,

>  include/net/bluetooth/hci.h |    4 ++++
>  net/bluetooth/hci_core.c    |    4 ++++
>  2 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h
> index ee83c36..67f7028 100644
> --- a/include/net/bluetooth/hci.h
> +++ b/include/net/bluetooth/hci.h
> @@ -271,6 +271,10 @@ enum {
>  #define HCI_ERROR_LOCAL_HOST_TERM	0x16
>  #define HCI_ERROR_PAIRING_NOT_ALLOWED	0x18
>  
> +/* Flow control modes */
> +#define HCI_PACKET_BASED_FLOW_CTL_MODE	0x00
> +#define HCI_BLOCK_BASED_FLOW_CTL_MODE	0x01

see my other email. You have the naming backwards here.

> +
>  /* -----  HCI Commands ---- */
>  #define HCI_OP_NOP			0x0000
>  
> diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
> index a0247d3..2e4211e 100644
> --- a/net/bluetooth/hci_core.c
> +++ b/net/bluetooth/hci_core.c
> @@ -198,6 +198,8 @@ static void bredr_init(struct hci_dev *hdev)
>  	__le16 param;
>  	__u8 flt_type;
>  
> +	hdev->flow_ctl_mode = HCI_PACKET_BASED_FLOW_CTL_MODE;
> +
>  	/* Mandatory initialization */
>  
>  	/* Reset */
> @@ -244,6 +246,8 @@ static void bredr_init(struct hci_dev *hdev)
>  
>  static void amp_init(struct hci_dev *hdev)
>  {
> +	hdev->flow_ctl_mode = HCI_BLOCK_BASED_FLOW_CTL_MODE;
> +
>  	/* Reset */
>  	hci_send_cmd(hdev, HCI_OP_RESET, 0, NULL);
>  

Otherwise this is fine.

Regards

Marcel



^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts
  2011-11-24 12:52 ` [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts Emeltchenko Andrei
  2011-11-25 12:00   ` Marcel Holtmann
@ 2011-12-02 11:50   ` Gustavo Padovan
  2011-12-02 11:56     ` Emeltchenko Andrei
  1 sibling, 1 reply; 13+ messages in thread
From: Gustavo Padovan @ 2011-12-02 11:50 UTC (permalink / raw)
  To: Emeltchenko Andrei; +Cc: linux-bluetooth

Hi Andrei,

* Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2011-11-24 14:52:01 +0200]:

> From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> 
> Current controller initialization is moved tp bredr_init and new
> function added amp_init to handle later AMP init sequence. Current
> AMP init sequence include Reset and Read Local Version.
> 
> Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> ---
>  net/bluetooth/hci_core.c  |   64 ++++++++++++++++++++++++++++++++------------
>  net/bluetooth/hci_event.c |    3 ++
>  2 files changed, 49 insertions(+), 18 deletions(-)

For some reason this patch doesn't apply, please rebase.

	Gustavo

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts
  2011-12-02 11:50   ` Gustavo Padovan
@ 2011-12-02 11:56     ` Emeltchenko Andrei
  2011-12-05  9:34       ` Emeltchenko Andrei
  0 siblings, 1 reply; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-12-02 11:56 UTC (permalink / raw)
  To: linux-bluetooth

Hi Gustavo,

On Fri, Dec 02, 2011 at 08:50:25PM +0900, Gustavo Padovan wrote:
> Hi Andrei,
> 
> * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2011-11-24 14:52:01 +0200]:
> 
> > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> > 
> > Current controller initialization is moved tp bredr_init and new
> > function added amp_init to handle later AMP init sequence. Current
> > AMP init sequence include Reset and Read Local Version.
> > 
> > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> > ---
> >  net/bluetooth/hci_core.c  |   64 ++++++++++++++++++++++++++++++++------------
> >  net/bluetooth/hci_event.c |    3 ++
> >  2 files changed, 49 insertions(+), 18 deletions(-)
> 
> For some reason this patch doesn't apply, please rebase.

Have you tried the more recent version:
PATCHv2 2/8] Bluetooth: Split ctrl init to BREDR and AMP parts

Best regards 
Andrei Emeltchenko 

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts
  2011-12-02 11:56     ` Emeltchenko Andrei
@ 2011-12-05  9:34       ` Emeltchenko Andrei
  0 siblings, 0 replies; 13+ messages in thread
From: Emeltchenko Andrei @ 2011-12-05  9:34 UTC (permalink / raw)
  To: linux-bluetooth

Hi Gustavo,

On Fri, Dec 02, 2011 at 01:56:39PM +0200, Emeltchenko Andrei wrote:
> Hi Gustavo,
> 
> On Fri, Dec 02, 2011 at 08:50:25PM +0900, Gustavo Padovan wrote:
> > Hi Andrei,
> > 
> > * Emeltchenko Andrei <Andrei.Emeltchenko.news@gmail.com> [2011-11-24 14:52:01 +0200]:
> > 
> > > From: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> > > 
> > > Current controller initialization is moved tp bredr_init and new
> > > function added amp_init to handle later AMP init sequence. Current
> > > AMP init sequence include Reset and Read Local Version.
> > > 
> > > Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
> > > ---
> > >  net/bluetooth/hci_core.c  |   64 ++++++++++++++++++++++++++++++++------------
> > >  net/bluetooth/hci_event.c |    3 ++
> > >  2 files changed, 49 insertions(+), 18 deletions(-)
> > 
> > For some reason this patch doesn't apply, please rebase.
> 
> Have you tried the more recent version:
> PATCHv2 2/8] Bluetooth: Split ctrl init to BREDR and AMP parts

One thought might be that the patch "Remove old code" which is 1/8 shall
be applied first. It is better to apply patches in order they are made.

Best regards 
Andrei Emeltchenko 


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2011-12-05  9:34 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-24 12:51 [RFCv1 0/6] AMP/BREDR initialization patches Emeltchenko Andrei
2011-11-24 12:52 ` [RFCv1 1/6] Bluetooth: remove old code Emeltchenko Andrei
2011-11-24 12:52 ` [RFCv1 2/6] Bluetooth: Split ctrl init to BREDR and AMP parts Emeltchenko Andrei
2011-11-25 12:00   ` Marcel Holtmann
2011-12-02 11:50   ` Gustavo Padovan
2011-12-02 11:56     ` Emeltchenko Andrei
2011-12-05  9:34       ` Emeltchenko Andrei
2011-11-24 12:52 ` [RFCv1 3/6] Bluetooth: Add HCI Read Flow Control Mode function Emeltchenko Andrei
2011-11-25 12:01   ` Marcel Holtmann
2011-11-24 12:52 ` [RFCv1 4/6] Bluetooth: Initialize default flow control mode Emeltchenko Andrei
2011-11-25 12:02   ` Marcel Holtmann
2011-11-24 12:52 ` [RFCv1 5/6] Bluetooth: Add HCI Read Data Block Size function Emeltchenko Andrei
2011-11-24 12:52 ` [RFCv1 6/6] Bluetooth: Recalculate sched for HCI block flow ctrl Emeltchenko Andrei

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).