mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
Bluetooth: Fix conn_params list update in hci_connect_le_scan_cleanup
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> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
679d2b6f9d
commit
9ad3e6ffe1
1 changed files with 19 additions and 4 deletions
|
@ -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)
|
||||
|
|
Loading…
Reference in a new issue