Bluetooth: Set authentication requirement before requesting it

The authentication requirement got only updated when the security level
increased. This is a wrong behavior. The authentication requirement is
read by the Bluetooth daemon to make proper decisions when handling the
IO capabilities exchange. So set the value that is currently expected by
the higher layers like L2CAP and RFCOMM.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c
index 96281a1..efd5c92 100644
--- a/net/bluetooth/hci_conn.c
+++ b/net/bluetooth/hci_conn.c
@@ -397,12 +397,13 @@
 {
 	BT_DBG("conn %p", conn);
 
-	if (sec_level > conn->sec_level) {
+	if (sec_level > conn->sec_level)
 		conn->sec_level = sec_level;
-		conn->auth_type = auth_type;
-	} else if (conn->link_mode & HCI_LM_AUTH)
+	else if (conn->link_mode & HCI_LM_AUTH)
 		return 1;
 
+	conn->auth_type = auth_type;
+
 	if (!test_and_set_bit(HCI_CONN_AUTH_PEND, &conn->pend)) {
 		struct hci_cp_auth_requested cp;
 		cp.handle = cpu_to_le16(conn->handle);
@@ -418,9 +419,6 @@
 {
 	BT_DBG("conn %p", conn);
 
-	if (conn->auth_type == 0xff)
-		conn->auth_type = auth_type;
-
 	if (sec_level == BT_SECURITY_SDP)
 		return 1;