From: Johan Hedberg Date: Thu, 22 Oct 2015 06:38:31 +0000 (+0300) Subject: Bluetooth: Disable auto-connection parameters when unpairing X-Git-Tag: v4.4-rc1~141^2~43^2~17 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fc64361ac15318126c64193929616fc4832071a6;p=platform%2Fkernel%2Flinux-exynos.git Bluetooth: Disable auto-connection parameters when unpairing For connection parameters that are left around until a disconnection we should at least clear any auto-connection properties. This way a new Add Device call is required to re-set them after calling Unpair Device. Signed-off-by: Johan Hedberg Signed-off-by: Marcel Holtmann --- diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c index d56845a..3fa4caf 100644 --- a/net/bluetooth/mgmt.c +++ b/net/bluetooth/mgmt.c @@ -3052,6 +3052,7 @@ static int unpair_device(struct sock *sk, struct hci_dev *hdev, void *data, { struct mgmt_cp_unpair_device *cp = data; struct mgmt_rp_unpair_device rp; + struct hci_conn_params *params; struct hci_cp_disconnect dc; struct mgmt_pending_cmd *cmd; struct hci_conn *conn; @@ -3131,6 +3132,15 @@ static int unpair_device(struct sock *sk, struct hci_dev *hdev, void *data, */ set_bit(HCI_CONN_PARAM_REMOVAL_PEND, &conn->flags); + /* Disable auto-connection parameters if present */ + params = hci_conn_params_lookup(hdev, &cp->addr.bdaddr, addr_type); + if (params) { + if (params->explicit_connect) + params->auto_connect = HCI_AUTO_CONN_EXPLICIT; + else + params->auto_connect = HCI_AUTO_CONN_DISABLED; + } + /* If disconnection is not requested, then clear the connection * variable so that the link is not terminated. */