if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags))
                return 0;
 
+       if (initiator)
+               set_bit(HCI_CONN_AUTH_INITIATOR, &conn->flags);
+
        if (!hci_conn_auth(conn, sec_level, auth_type))
                return 0;
 
 
        if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) {
                struct hci_cp_auth_requested auth_cp;
 
+               set_bit(HCI_CONN_AUTH_INITIATOR, &conn->flags);
+
                auth_cp.handle = __cpu_to_le16(conn->handle);
                hci_send_cmd(hdev, HCI_OP_AUTH_REQUESTED,
                             sizeof(auth_cp), &auth_cp);
 
        if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->flags)) {
                struct hci_cp_auth_requested cp;
+
+               set_bit(HCI_CONN_AUTH_INITIATOR, &conn->flags);
+
                cp.handle = __cpu_to_le16(conn->handle);
                hci_send_cmd(hdev, HCI_OP_AUTH_REQUESTED, sizeof(cp), &cp);
        }