Bluetooth: Refactor hci_connect_le
This patch does some code refactoring in hci_connect_le() by moving the exception code into if statements and letting the main flow in first level of function scope. It also adds extra comments to improve the code readability. Signed-off-by: Andre Guedes <andre.guedes@openbossa.org> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
This commit is contained in:
parent
1d399ae5c7
commit
620ad5219c
|
@ -594,8 +594,25 @@ static struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
|
||||||
if (test_bit(HCI_ADVERTISING, &hdev->flags))
|
if (test_bit(HCI_ADVERTISING, &hdev->flags))
|
||||||
return ERR_PTR(-ENOTSUPP);
|
return ERR_PTR(-ENOTSUPP);
|
||||||
|
|
||||||
|
/* Some devices send ATT messages as soon as the physical link is
|
||||||
|
* established. To be able to handle these ATT messages, the user-
|
||||||
|
* space first establishes the connection and then starts the pairing
|
||||||
|
* process.
|
||||||
|
*
|
||||||
|
* So if a hci_conn object already exists for the following connection
|
||||||
|
* attempt, we simply update pending_sec_level and auth_type fields
|
||||||
|
* and return the object found.
|
||||||
|
*/
|
||||||
conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, dst);
|
conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, dst);
|
||||||
if (!conn) {
|
if (conn) {
|
||||||
|
conn->pending_sec_level = sec_level;
|
||||||
|
conn->auth_type = auth_type;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Since the controller supports only one LE connection attempt at a
|
||||||
|
* time, we return -EBUSY if there is any connection attempt running.
|
||||||
|
*/
|
||||||
conn = hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT);
|
conn = hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECT);
|
||||||
if (conn)
|
if (conn)
|
||||||
return ERR_PTR(-EBUSY);
|
return ERR_PTR(-EBUSY);
|
||||||
|
@ -609,17 +626,15 @@ static struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
|
||||||
conn->out = true;
|
conn->out = true;
|
||||||
conn->link_mode |= HCI_LM_MASTER;
|
conn->link_mode |= HCI_LM_MASTER;
|
||||||
conn->sec_level = BT_SECURITY_LOW;
|
conn->sec_level = BT_SECURITY_LOW;
|
||||||
|
conn->pending_sec_level = sec_level;
|
||||||
|
conn->auth_type = auth_type;
|
||||||
|
|
||||||
err = hci_create_le_conn(conn);
|
err = hci_create_le_conn(conn);
|
||||||
if (err)
|
if (err)
|
||||||
return ERR_PTR(err);
|
return ERR_PTR(err);
|
||||||
}
|
|
||||||
|
|
||||||
conn->pending_sec_level = sec_level;
|
|
||||||
conn->auth_type = auth_type;
|
|
||||||
|
|
||||||
|
done:
|
||||||
hci_conn_hold(conn);
|
hci_conn_hold(conn);
|
||||||
|
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue