|
@@ -2634,6 +2634,12 @@ static int hci_dev_do_close(struct hci_dev *hdev)
|
|
|
drain_workqueue(hdev->workqueue);
|
|
|
|
|
|
hci_dev_lock(hdev);
|
|
|
+
|
|
|
+ if (!test_and_clear_bit(HCI_AUTO_OFF, &hdev->dev_flags)) {
|
|
|
+ if (hdev->dev_type == HCI_BREDR)
|
|
|
+ mgmt_powered(hdev, 0);
|
|
|
+ }
|
|
|
+
|
|
|
hci_inquiry_cache_flush(hdev);
|
|
|
hci_pend_le_actions_clear(hdev);
|
|
|
hci_conn_hash_flush(hdev);
|
|
@@ -2681,14 +2687,6 @@ static int hci_dev_do_close(struct hci_dev *hdev)
|
|
|
hdev->flags &= BIT(HCI_RAW);
|
|
|
hdev->dev_flags &= ~HCI_PERSISTENT_MASK;
|
|
|
|
|
|
- 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 */
|
|
|
hdev->amp_status = AMP_STATUS_POWERED_DOWN;
|
|
|
|