Bluetooth: Use hci_conn_num() for checking number of LE connections
authorMarcel Holtmann <marcel@holtmann.org>
Thu, 10 Oct 2013 16:47:54 +0000 (09:47 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Thu, 10 Oct 2013 20:07:20 +0000 (22:07 +0200)
When checking for the current number of LE connections, use
hci_conn_num() function instead of a full blown lookup within
the connection hash or direct access of the counters.

In the case of re-enabling advertising, it is more useful to
check for any connection attempt or existing connection.

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

index 2793bfe48707ab6759b14eb05628f6094b7c712e..9a069b532bde7ca485e1fa419cdd2a92125bdcf9 100644 (file)
@@ -3286,7 +3286,7 @@ static int set_advertising(struct sock *sk, struct hci_dev *hdev, void *data,
         * necessary).
         */
        if (!hdev_is_powered(hdev) || val == enabled ||
-           hci_conn_hash_lookup_state(hdev, LE_LINK, BT_CONNECTED)) {
+           hci_conn_num(hdev, LE_LINK) > 0) {
                bool changed = false;
 
                if (val != test_bit(HCI_ADVERTISING, &hdev->dev_flags)) {
@@ -4683,7 +4683,7 @@ void mgmt_reenable_advertising(struct hci_dev *hdev)
 {
        struct hci_request req;
 
-       if (hdev->conn_hash.le_num)
+       if (hci_conn_num(hdev, LE_LINK) > 0)
                return;
 
        if (!test_bit(HCI_ADVERTISING, &hdev->dev_flags))