* [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series
@ 2015-10-16 7:07 Johan Hedberg
2015-10-16 7:07 ` [PATCH 1/6] Bluetooth: Fix double scan updates Johan Hedberg
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
Hi,
Here's the combined set of patches that should be considered for
bluetooth.git.
Johan
----------------------------------------------------------------
Jakub Pawlowski (2):
Bluetooth: Fix double scan updates
Bluetooth: Fix initializing conn_params in scan phase
Johan Hedberg (4):
Bluetooth: Fix reference counting for LE-scan based connections
Bluetooth: Fix LE reconnection logic
Bluetooth: Fix remove_device behavior for explicit connects
Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup
net/bluetooth/hci_conn.c | 99 +++++++++++++++++++++++++++++++++-------------
net/bluetooth/hci_core.c | 7 ----
net/bluetooth/hci_event.c | 11 ++++--
net/bluetooth/mgmt.c | 24 +++++++++--
4 files changed, 99 insertions(+), 42 deletions(-)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/6] Bluetooth: Fix double scan updates
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
@ 2015-10-16 7:07 ` Johan Hedberg
2015-10-16 7:07 ` [PATCH 2/6] Bluetooth: Fix reference counting for LE-scan based connections Johan Hedberg
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
From: Jakub Pawlowski <jpawlowski@google.com>
When disable/enable scan command is issued twice, some controllers
will return an error for the second request, i.e. requests with this
command will fail on some controllers, and succeed on others.
This patch makes sure that unnecessary scan disable/enable commands
are not issued.
When adding device to the auto connect whitelist when there is pending
connect attempt, there is no need to update scan.
hci_connect_le_scan_cleanup is conditionally executing
hci_conn_params_del, that is calling hci_update_background_scan. Make
the other case also update scan, and remove reduntand call from
hci_connect_le_scan_remove.
When stopping interleaved discovery the state should be set to stopped
only when both LE scanning and discovery has stopped.
Signed-off-by: Jakub Pawlowski <jpawlowski@google.com>
Acked-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/hci_conn.c | 7 ++++---
net/bluetooth/hci_event.c | 7 ++++++-
net/bluetooth/mgmt.c | 6 +++++-
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index b4548c739a64..2ebcaaa6b855 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -91,10 +91,12 @@ static void hci_connect_le_scan_cleanup(struct hci_conn *conn)
* autoconnect action, remove them completely. If they are, just unmark
* them as waiting for connection, by clearing explicit_connect field.
*/
- if (params->auto_connect == HCI_AUTO_CONN_EXPLICIT)
+ if (params->auto_connect == HCI_AUTO_CONN_EXPLICIT) {
hci_conn_params_del(conn->hdev, bdaddr, bdaddr_type);
- else
+ } else {
params->explicit_connect = false;
+ hci_update_background_scan(conn->hdev);
+ }
}
/* This function requires the caller holds hdev->lock */
@@ -103,7 +105,6 @@ static void hci_connect_le_scan_remove(struct hci_conn *conn)
hci_connect_le_scan_cleanup(conn);
hci_conn_hash_del(conn->hdev, conn);
- hci_update_background_scan(conn->hdev);
}
static void hci_acl_create_connection(struct hci_conn *conn)
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 186041866315..509e41575633 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -55,7 +55,12 @@ static void hci_cc_inquiry_cancel(struct hci_dev *hdev, struct sk_buff *skb)
wake_up_bit(&hdev->flags, HCI_INQUIRY);
hci_dev_lock(hdev);
- hci_discovery_set_state(hdev, DISCOVERY_STOPPED);
+ /* Set discovery state to stopped if we're not doing LE active
+ * scanning.
+ */
+ if (!hci_dev_test_flag(hdev, HCI_LE_SCAN) ||
+ hdev->le_scan_type != LE_SCAN_ACTIVE)
+ hci_discovery_set_state(hdev, DISCOVERY_STOPPED);
hci_dev_unlock(hdev);
hci_conn_check_pending(hdev);
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index ccaf5a436d8f..9a9bbc990d4f 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -6124,7 +6124,11 @@ static int hci_conn_params_set(struct hci_request *req, bdaddr_t *addr,
case HCI_AUTO_CONN_ALWAYS:
if (!is_connected(hdev, addr, addr_type)) {
list_add(¶ms->action, &hdev->pend_le_conns);
- __hci_update_background_scan(req);
+ /* If we are in scan phase of connecting, we were
+ * already added to pend_le_conns and scanning.
+ */
+ if (params->auto_connect != HCI_AUTO_CONN_EXPLICIT)
+ __hci_update_background_scan(req);
}
break;
}
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/6] Bluetooth: Fix reference counting for LE-scan based connections
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
2015-10-16 7:07 ` [PATCH 1/6] Bluetooth: Fix double scan updates Johan Hedberg
@ 2015-10-16 7:07 ` Johan Hedberg
2015-10-16 7:07 ` [PATCH 3/6] Bluetooth: Fix LE reconnection logic Johan Hedberg
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
The code should never directly call hci_conn_hash_del since many
cleanup & reference counting updates would be lost. Normally
hci_conn_del is the right thing to do, but in the case of a connection
doing LE scanning this could cause a deadlock due to doing a
cancel_delayed_work_sync() on the same work callback that we were
called from.
Connections in the LE scanning state actually need very little cleanup
- just a small subset of hci_conn_del. To solve the issue, refactor
out these essential pieces into a new hci_conn_cleanup() function and
call that from the two necessary places.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/hci_conn.c | 53 ++++++++++++++++++++++++++++++++----------------
1 file changed, 36 insertions(+), 17 deletions(-)
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 2ebcaaa6b855..4c240c1cb2cb 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -99,12 +99,41 @@ static void hci_connect_le_scan_cleanup(struct hci_conn *conn)
}
}
+static void hci_conn_cleanup(struct hci_conn *conn)
+{
+ struct hci_dev *hdev = conn->hdev;
+
+ if (test_bit(HCI_CONN_PARAM_REMOVAL_PEND, &conn->flags))
+ hci_conn_params_del(conn->hdev, &conn->dst, conn->dst_type);
+
+ hci_chan_list_flush(conn);
+
+ hci_conn_hash_del(hdev, conn);
+
+ if (hdev->notify)
+ hdev->notify(hdev, HCI_NOTIFY_CONN_DEL);
+
+ hci_conn_del_sysfs(conn);
+
+ debugfs_remove_recursive(conn->debugfs);
+
+ hci_dev_put(hdev);
+
+ hci_conn_put(conn);
+}
+
/* This function requires the caller holds hdev->lock */
static void hci_connect_le_scan_remove(struct hci_conn *conn)
{
hci_connect_le_scan_cleanup(conn);
- hci_conn_hash_del(conn->hdev, conn);
+ /* We can't call hci_conn_del here since that would deadlock
+ * with trying to call cancel_delayed_work_sync(&conn->disc_work).
+ * Instead, call just hci_conn_cleanup() which contains the bare
+ * minimum cleanup operations needed for a connection in this
+ * state.
+ */
+ hci_conn_cleanup(conn);
}
static void hci_acl_create_connection(struct hci_conn *conn)
@@ -582,27 +611,17 @@ int hci_conn_del(struct hci_conn *conn)
}
}
- hci_chan_list_flush(conn);
-
if (conn->amp_mgr)
amp_mgr_put(conn->amp_mgr);
- hci_conn_hash_del(hdev, conn);
- if (hdev->notify)
- hdev->notify(hdev, HCI_NOTIFY_CONN_DEL);
-
skb_queue_purge(&conn->data_q);
- hci_conn_del_sysfs(conn);
-
- debugfs_remove_recursive(conn->debugfs);
-
- if (test_bit(HCI_CONN_PARAM_REMOVAL_PEND, &conn->flags))
- hci_conn_params_del(conn->hdev, &conn->dst, conn->dst_type);
-
- hci_dev_put(hdev);
-
- hci_conn_put(conn);
+ /* Remove the connection from the list and cleanup its remaining
+ * state. This is a separate function since for some cases like
+ * BT_CONNECT_SCAN we *only* want the cleanup part without the
+ * rest of hci_conn_del.
+ */
+ hci_conn_cleanup(conn);
return 0;
}
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/6] Bluetooth: Fix LE reconnection logic
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
2015-10-16 7:07 ` [PATCH 1/6] Bluetooth: Fix double scan updates Johan Hedberg
2015-10-16 7:07 ` [PATCH 2/6] Bluetooth: Fix reference counting for LE-scan based connections Johan Hedberg
@ 2015-10-16 7:07 ` Johan Hedberg
2015-10-16 7:07 ` [PATCH 4/6] Bluetooth: Fix remove_device behavior for explicit connects Johan Hedberg
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
We can't use hci_explicit_connect_lookup() since that would only cover
explicit connections, leaving normal reconnections completely
untouched. Not using it in turn means leaving out entries in
pend_le_reports.
To fix this and simplify the logic move conn params from the reports
list to the pend_le_conns list for the duration of an explicit
connect. Once the connect is complete move the params back to the
pend_le_reports list. This also means that the explicit connect lookup
function only needs to look into the pend_le_conns list.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/hci_conn.c | 4 ++--
net/bluetooth/hci_core.c | 7 -------
net/bluetooth/hci_event.c | 4 ++--
net/bluetooth/mgmt.c | 5 ++++-
4 files changed, 8 insertions(+), 12 deletions(-)
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 4c240c1cb2cb..d5c06eeab4a3 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -1000,8 +1000,8 @@ static int hci_explicit_conn_params_set(struct hci_request *req,
/* If we created new params, or existing params were marked as disabled,
* mark them to be used just once to connect.
*/
- if (params->auto_connect == HCI_AUTO_CONN_DISABLED) {
- params->auto_connect = HCI_AUTO_CONN_EXPLICIT;
+ if (params->auto_connect == HCI_AUTO_CONN_DISABLED ||
+ params->auto_connect == HCI_AUTO_CONN_REPORT) {
list_del_init(¶ms->action);
list_add(¶ms->action, &hdev->pend_le_conns);
}
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index adcbc74c2432..e837539452fb 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -2861,13 +2861,6 @@ struct hci_conn_params *hci_explicit_connect_lookup(struct hci_dev *hdev,
return param;
}
- list_for_each_entry(param, &hdev->pend_le_reports, action) {
- if (bacmp(¶m->addr, addr) == 0 &&
- param->addr_type == addr_type &&
- param->explicit_connect)
- return param;
- }
-
return NULL;
}
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 509e41575633..bc31099d3b5b 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -4653,8 +4653,8 @@ static struct hci_conn *check_pending_le_conn(struct hci_dev *hdev,
/* If we're not connectable only connect devices that we have in
* our pend_le_conns list.
*/
- params = hci_explicit_connect_lookup(hdev, addr, addr_type);
-
+ params = hci_pend_le_action_lookup(&hdev->pend_le_conns, addr,
+ addr_type);
if (!params)
return NULL;
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 9a9bbc990d4f..4dbfe01546b3 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -6117,7 +6117,10 @@ static int hci_conn_params_set(struct hci_request *req, bdaddr_t *addr,
__hci_update_background_scan(req);
break;
case HCI_AUTO_CONN_REPORT:
- list_add(¶ms->action, &hdev->pend_le_reports);
+ if (params->explicit_connect)
+ list_add(¶ms->action, &hdev->pend_le_conns);
+ else
+ list_add(¶ms->action, &hdev->pend_le_reports);
__hci_update_background_scan(req);
break;
case HCI_AUTO_CONN_DIRECT:
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/6] Bluetooth: Fix remove_device behavior for explicit connects
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
` (2 preceding siblings ...)
2015-10-16 7:07 ` [PATCH 3/6] Bluetooth: Fix LE reconnection logic Johan Hedberg
@ 2015-10-16 7:07 ` Johan Hedberg
2015-10-16 7:07 ` [PATCH 5/6] Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup Johan Hedberg
2015-10-16 7:07 ` [PATCH 6/6] Bluetooth: Fix initializing conn_params in scan phase Johan Hedberg
5 siblings, 0 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
Devices undergoing an explicit connect should not have their
conn_params struct removed by the mgmt Remove Device command. This
patch fixes the necessary checks in the command handler to correct the
behavior.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/mgmt.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 4dbfe01546b3..0ed94e6f4de9 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -6386,7 +6386,8 @@ static int remove_device(struct sock *sk, struct hci_dev *hdev,
goto unlock;
}
- if (params->auto_connect == HCI_AUTO_CONN_DISABLED) {
+ if (params->auto_connect == HCI_AUTO_CONN_DISABLED ||
+ params->auto_connect == HCI_AUTO_CONN_EXPLICIT) {
err = cmd->cmd_complete(cmd,
MGMT_STATUS_INVALID_PARAMS);
mgmt_pending_remove(cmd);
@@ -6422,6 +6423,10 @@ static int remove_device(struct sock *sk, struct hci_dev *hdev,
if (p->auto_connect == HCI_AUTO_CONN_DISABLED)
continue;
device_removed(sk, hdev, &p->addr, p->addr_type);
+ if (p->explicit_connect) {
+ p->auto_connect = HCI_AUTO_CONN_EXPLICIT;
+ continue;
+ }
list_del(&p->action);
list_del(&p->list);
kfree(p);
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/6] Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
` (3 preceding siblings ...)
2015-10-16 7:07 ` [PATCH 4/6] Bluetooth: Fix remove_device behavior for explicit connects Johan Hedberg
@ 2015-10-16 7:07 ` Johan Hedberg
2015-10-16 7:07 ` [PATCH 6/6] Bluetooth: Fix initializing conn_params in scan phase Johan Hedberg
5 siblings, 0 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
From: Johan Hedberg <johan.hedberg@intel.com>
After clearing the params->explicit_connect variable the parameters
may need to be either added back to the right list or potentially left
absent from both the le_reports and the le_conns lists.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/hci_conn.c | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index d5c06eeab4a3..fe99025fb649 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -91,12 +91,27 @@ static void hci_connect_le_scan_cleanup(struct hci_conn *conn)
* autoconnect action, remove them completely. If they are, just unmark
* them as waiting for connection, by clearing explicit_connect field.
*/
- if (params->auto_connect == HCI_AUTO_CONN_EXPLICIT) {
+ params->explicit_connect = false;
+
+ list_del_init(¶ms->action);
+
+ switch (params->auto_connect) {
+ case HCI_AUTO_CONN_EXPLICIT:
hci_conn_params_del(conn->hdev, bdaddr, bdaddr_type);
- } else {
- params->explicit_connect = false;
- hci_update_background_scan(conn->hdev);
+ /* return instead of break to avoid duplicate scan update */
+ return;
+ case HCI_AUTO_CONN_DIRECT:
+ case HCI_AUTO_CONN_ALWAYS:
+ list_add(¶ms->action, &conn->hdev->pend_le_conns);
+ break;
+ case HCI_AUTO_CONN_REPORT:
+ list_add(¶ms->action, &conn->hdev->pend_le_reports);
+ break;
+ default:
+ break;
}
+
+ hci_update_background_scan(conn->hdev);
}
static void hci_conn_cleanup(struct hci_conn *conn)
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 6/6] Bluetooth: Fix initializing conn_params in scan phase
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
` (4 preceding siblings ...)
2015-10-16 7:07 ` [PATCH 5/6] Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup Johan Hedberg
@ 2015-10-16 7:07 ` Johan Hedberg
5 siblings, 0 replies; 7+ messages in thread
From: Johan Hedberg @ 2015-10-16 7:07 UTC (permalink / raw)
To: linux-bluetooth
From: Jakub Pawlowski <jpawlowski@google.com>
This patch makes sure that conn_params that were created just for
explicit_connect, will get properly deleted during cleanup.
Signed-off-by: Jakub Pawlowski <jpawlowski@google.com>
Acked-by: Johan Hedberg <johan.hedberg@intel.com>
---
net/bluetooth/hci_conn.c | 22 +++++++++++++++-------
net/bluetooth/mgmt.c | 6 +++++-
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index fe99025fb649..2dda439c8cb8 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -1008,15 +1008,23 @@ static int hci_explicit_conn_params_set(struct hci_request *req,
if (is_connected(hdev, addr, addr_type))
return -EISCONN;
- params = hci_conn_params_add(hdev, addr, addr_type);
- if (!params)
- return -EIO;
+ params = hci_conn_params_lookup(hdev, addr, addr_type);
+ if (!params) {
+ params = hci_conn_params_add(hdev, addr, addr_type);
+ if (!params)
+ return -ENOMEM;
+
+ /* If we created new params, mark them to be deleted in
+ * hci_connect_le_scan_cleanup. It's different case than
+ * existing disabled params, those will stay after cleanup.
+ */
+ params->auto_connect = HCI_AUTO_CONN_EXPLICIT;
+ }
- /* If we created new params, or existing params were marked as disabled,
- * mark them to be used just once to connect.
- */
+ /* We're trying to connect, so make sure params are at pend_le_conns */
if (params->auto_connect == HCI_AUTO_CONN_DISABLED ||
- params->auto_connect == HCI_AUTO_CONN_REPORT) {
+ params->auto_connect == HCI_AUTO_CONN_REPORT ||
+ params->auto_connect == HCI_AUTO_CONN_EXPLICIT) {
list_del_init(¶ms->action);
list_add(¶ms->action, &hdev->pend_le_conns);
}
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 0ed94e6f4de9..c4fe2fee753f 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -3545,6 +3545,7 @@ static int pair_device(struct sock *sk, struct hci_dev *hdev, void *data,
auth_type);
} else {
u8 addr_type;
+ struct hci_conn_params *p;
/* Convert from L2CAP channel address type to HCI address type
*/
@@ -3562,7 +3563,10 @@ static int pair_device(struct sock *sk, struct hci_dev *hdev, void *data,
* If connection parameters already exist, then they
* will be kept and this function does nothing.
*/
- hci_conn_params_add(hdev, &cp->addr.bdaddr, addr_type);
+ p = hci_conn_params_add(hdev, &cp->addr.bdaddr, addr_type);
+
+ if (p->auto_connect == HCI_AUTO_CONN_EXPLICIT)
+ p->auto_connect = HCI_AUTO_CONN_DISABLED;
conn = hci_connect_le_scan(hdev, &cp->addr.bdaddr,
addr_type, sec_level,
--
2.4.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-10-16 7:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-16 7:07 [PATCH 0/6] Bluetooth: Fixes for 4.3-rc series Johan Hedberg
2015-10-16 7:07 ` [PATCH 1/6] Bluetooth: Fix double scan updates Johan Hedberg
2015-10-16 7:07 ` [PATCH 2/6] Bluetooth: Fix reference counting for LE-scan based connections Johan Hedberg
2015-10-16 7:07 ` [PATCH 3/6] Bluetooth: Fix LE reconnection logic Johan Hedberg
2015-10-16 7:07 ` [PATCH 4/6] Bluetooth: Fix remove_device behavior for explicit connects Johan Hedberg
2015-10-16 7:07 ` [PATCH 5/6] Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup Johan Hedberg
2015-10-16 7:07 ` [PATCH 6/6] Bluetooth: Fix initializing conn_params in scan phase Johan Hedberg
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).