|
@@ -1146,7 +1146,7 @@ int hci_dev_open(__u16 dev)
|
|
|
goto done;
|
|
|
}
|
|
|
|
|
|
- if (hdev->rfkill && rfkill_blocked(hdev->rfkill)) {
|
|
|
+ if (test_bit(HCI_RFKILLED, &hdev->dev_flags)) {
|
|
|
ret = -ERFKILL;
|
|
|
goto done;
|
|
|
}
|
|
@@ -1566,10 +1566,12 @@ static int hci_rfkill_set_block(void *data, bool blocked)
|
|
|
|
|
|
BT_DBG("%p name %s blocked %d", hdev, hdev->name, blocked);
|
|
|
|
|
|
- if (!blocked)
|
|
|
- return 0;
|
|
|
-
|
|
|
- hci_dev_do_close(hdev);
|
|
|
+ if (blocked) {
|
|
|
+ set_bit(HCI_RFKILLED, &hdev->dev_flags);
|
|
|
+ hci_dev_do_close(hdev);
|
|
|
+ } else {
|
|
|
+ clear_bit(HCI_RFKILLED, &hdev->dev_flags);
|
|
|
+}
|
|
|
|
|
|
return 0;
|
|
|
}
|
|
@@ -2209,6 +2211,9 @@ int hci_register_dev(struct hci_dev *hdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if (hdev->rfkill && rfkill_blocked(hdev->rfkill))
|
|
|
+ set_bit(HCI_RFKILLED, &hdev->dev_flags);
|
|
|
+
|
|
|
set_bit(HCI_SETUP, &hdev->dev_flags);
|
|
|
|
|
|
if (hdev->dev_type != HCI_AMP)
|