Bluetooth: Move check for ongoing connect earlier in hci_connect_le()
authorJohan Hedberg <johan.hedberg@intel.com>
Wed, 11 Nov 2015 12:44:58 +0000 (14:44 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Thu, 19 Nov 2015 16:50:32 +0000 (17:50 +0100)
This helps simplify the logic in further patches (less cleanups to do
in this failure branch).

Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/hci_conn.c

index 673c2254935be4698e376b824109cad16cee6759..08a291dd0f3a4619578fa341b24cc91f92d6058e 100644 (file)
@@ -798,6 +798,12 @@ struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
                return ERR_PTR(-EOPNOTSUPP);
        }
 
+       /* Since the controller supports only one LE connection attempt at a
+        * time, we return -EBUSY if there is any connection attempt running.
+        */
+       if (hci_lookup_le_connect(hdev))
+               return ERR_PTR(-EBUSY);
+
        /* Some devices send ATT messages as soon as the physical link is
         * established. To be able to handle these ATT messages, the user-
         * space first establishes the connection and then starts the pairing
@@ -821,12 +827,6 @@ struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
                }
        }
 
-       /* Since the controller supports only one LE connection attempt at a
-        * time, we return -EBUSY if there is any connection attempt running.
-        */
-       if (hci_lookup_le_connect(hdev))
-               return ERR_PTR(-EBUSY);
-
        /* When given an identity address with existing identity
         * resolving key, the connection needs to be established
         * to a resolvable random address.