|
@@ -819,14 +819,17 @@ static int hci_conn_auth(struct hci_conn *conn, __u8 sec_level, __u8 auth_type)
|
|
|
if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) {
|
|
|
struct hci_cp_auth_requested cp;
|
|
|
|
|
|
- /* encrypt must be pending if auth is also pending */
|
|
|
- set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
|
|
|
-
|
|
|
cp.handle = cpu_to_le16(conn->handle);
|
|
|
hci_send_cmd(conn->hdev, HCI_OP_AUTH_REQUESTED,
|
|
|
sizeof(cp), &cp);
|
|
|
+
|
|
|
+ /* If we're already encrypted set the REAUTH_PEND flag,
|
|
|
+ * otherwise set the ENCRYPT_PEND.
|
|
|
+ */
|
|
|
if (conn->key_type != 0xff)
|
|
|
set_bit(HCI_CONN_REAUTH_PEND, &conn->flags);
|
|
|
+ else
|
|
|
+ set_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags);
|
|
|
}
|
|
|
|
|
|
return 0;
|