if (!test_bit(HCI_CONN_AUTH, &conn->flags))
                goto auth;
 
-       /* An authenticated FIPS approved combination key has sufficient
-        * security for security level 4. */
-       if (conn->key_type == HCI_LK_AUTH_COMBINATION_P256 &&
-           sec_level == BT_SECURITY_FIPS)
-               goto encrypt;
-
-       /* An authenticated combination key has sufficient security for
-          security level 3. */
-       if ((conn->key_type == HCI_LK_AUTH_COMBINATION_P192 ||
-            conn->key_type == HCI_LK_AUTH_COMBINATION_P256) &&
-           sec_level == BT_SECURITY_HIGH)
-               goto encrypt;
-
-       /* An unauthenticated combination key has sufficient security for
-          security level 1 and 2. */
-       if ((conn->key_type == HCI_LK_UNAUTH_COMBINATION_P192 ||
-            conn->key_type == HCI_LK_UNAUTH_COMBINATION_P256) &&
-           (sec_level == BT_SECURITY_MEDIUM || sec_level == BT_SECURITY_LOW))
-               goto encrypt;
-
-       /* A combination key has always sufficient security for the security
-          levels 1 or 2. High security level requires the combination key
-          is generated using maximum PIN code length (16).
-          For pre 2.1 units. */
-       if (conn->key_type == HCI_LK_COMBINATION &&
-           (sec_level == BT_SECURITY_MEDIUM || sec_level == BT_SECURITY_LOW ||
-            conn->pin_length == 16))
-               goto encrypt;
+       switch (conn->key_type) {
+       case HCI_LK_AUTH_COMBINATION_P256:
+               /* An authenticated FIPS approved combination key has
+                * sufficient security for security level 4 or lower.
+                */
+               if (sec_level <= BT_SECURITY_FIPS)
+                       goto encrypt;
+               break;
+       case HCI_LK_AUTH_COMBINATION_P192:
+               /* An authenticated combination key has sufficient security for
+                * security level 3 or lower.
+                */
+               if (sec_level <= BT_SECURITY_HIGH)
+                       goto encrypt;
+               break;
+       case HCI_LK_UNAUTH_COMBINATION_P192:
+       case HCI_LK_UNAUTH_COMBINATION_P256:
+               /* An unauthenticated combination key has sufficient security
+                * for security level 2 or lower.
+                */
+               if (sec_level <= BT_SECURITY_MEDIUM)
+                       goto encrypt;
+               break;
+       case HCI_LK_COMBINATION:
+               /* A combination key has always sufficient security for the
+                * security levels 2 or lower. High security level requires the
+                * combination key is generated using maximum PIN code length
+                * (16). For pre 2.1 units.
+                */
+               if (sec_level <= BT_SECURITY_MEDIUM || conn->pin_length == 16)
+                       goto encrypt;
+               break;
+       default:
+               break;
+       }
 
 auth:
        if (test_bit(HCI_CONN_ENCRYPT_PEND, &conn->flags))