mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-11 11:56:48 +00:00
Bluetooth: Differentiate LE User Pairing Responses
Low Energy (LE) pairing responses must be recognized and handled differently from BR/EDR pairing responses. BR/EDR responses are handled via HCI commands by the LMP layer, and LE responses are handled by the Host. Signed-off-by: Brian Gix <bgix@codeaurora.org> Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
This commit is contained in:
parent
0df4c185ed
commit
47c15e2b33
@ -1587,6 +1587,30 @@ static int user_pairing_resp(struct sock *sk, u16 index, bdaddr_t *bdaddr,
|
||||
goto done;
|
||||
}
|
||||
|
||||
/*
|
||||
* Check for an existing ACL link, if present pair via
|
||||
* HCI commands.
|
||||
*
|
||||
* If no ACL link is present, check for an LE link and if
|
||||
* present, pair via the SMP engine.
|
||||
*
|
||||
* If neither ACL nor LE links are present, fail with error.
|
||||
*/
|
||||
conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, bdaddr);
|
||||
if (!conn) {
|
||||
conn = hci_conn_hash_lookup_ba(hdev, LE_LINK, bdaddr);
|
||||
if (!conn) {
|
||||
err = cmd_status(sk, index, mgmt_op,
|
||||
MGMT_STATUS_NOT_CONNECTED);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Continue with pairing via SMP */
|
||||
|
||||
err = cmd_status(sk, index, mgmt_op, MGMT_STATUS_SUCCESS);
|
||||
goto done;
|
||||
}
|
||||
|
||||
cmd = mgmt_pending_add(sk, mgmt_op, hdev, bdaddr, sizeof(*bdaddr));
|
||||
if (!cmd) {
|
||||
err = -ENOMEM;
|
||||
|
Loading…
x
Reference in New Issue
Block a user