Bluetooth: Make mgmt power down notification for BR/EDR explicit
authorMarcel Holtmann <marcel@holtmann.org>
Mon, 7 Oct 2013 07:58:33 +0000 (00:58 -0700)
committerJohan Hedberg <johan.hedberg@intel.com>
Mon, 7 Oct 2013 08:08:39 +0000 (10:08 +0200)
The management interface only operates on BR/EDR controllers. The check
for the power down notification is a bit intermixed with the check if
controller auto power off is active. Since there are more than just
BR/EDR controllers supported, make this check explicit since the auto
power off check also applies to AMP controllers and it has to happen
in this exact order. Otherwise the bit will not be cleared.

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

index 2ee5a8ee75c5993882b997b96a1e88c3f01cf020..3572611c0297ae22227c4983560800c3035ce4cf 100644 (file)
@@ -1393,11 +1393,12 @@ static int hci_dev_do_close(struct hci_dev *hdev)
        hdev->flags = 0;
        hdev->dev_flags &= ~HCI_PERSISTENT_MASK;
 
-       if (!test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags) &&
-           hdev->dev_type == HCI_BREDR) {
-               hci_dev_lock(hdev);
-               mgmt_powered(hdev, 0);
-               hci_dev_unlock(hdev);
+       if (!test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
+               if (hdev->dev_type == HCI_BREDR) {
+                       hci_dev_lock(hdev);
+                       mgmt_powered(hdev, 0);
+                       hci_dev_unlock(hdev);
+               }
        }
 
        /* Controller radio is available but is currently powered down */