Thread (4 messages) 4 messages, 2 authors, 2022-09-30

Re: [PATCH v1] bluetooth: Fix the bluetooth icon status after running hciconfig hci0 up

From: Ajye Huang <hidden>
Date: 2022-09-30 22:30:57
Also in: linux-bluetooth, lkml

On Sat, Oct 1, 2022 at 3:57 AM Luiz Augusto von Dentz
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
Hi Ajye,

On Fri, Sep 30, 2022 at 7:07 AM Ajye Huang
[off-list ref] wrote:
quoted
When "hciconfig hci0 up" command is used to bluetooth ON, but
the bluetooth UI icon in settings still not be turned ON.

Refer to commit 2ff13894cfb8 ("Bluetooth: Perform HCI update for power on synchronously")
Add back mgmt_power_on(hdev, ret) into function hci_dev_do_open(struct hci_dev *hdev)
in hci_core.c

Signed-off-by: Ajye Huang <redacted>
---
 net/bluetooth/hci_core.c | 1 +
 1 file changed, 1 insertion(+)
diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 0540555b3704..5061845c8fc2 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -481,6 +481,7 @@ static int hci_dev_do_open(struct hci_dev *hdev)
        hci_req_sync_lock(hdev);

        ret = hci_dev_open_sync(hdev);
+       mgmt_power_on(hdev, ret);

        hci_req_sync_unlock(hdev);
        return ret;
--
2.25.1

I believe the culprit is actually the following change:

git show cf75ad8b41d2a:
@@ -1489,8 +1488,7 @@ static int hci_dev_do_open(struct hci_dev *hdev)
                    !hci_dev_test_flag(hdev, HCI_USER_CHANNEL) &&
                    hci_dev_test_flag(hdev, HCI_MGMT) &&
                    hdev->dev_type == HCI_PRIMARY) {
-                       ret = __hci_req_hci_power_on(hdev);
-                       mgmt_power_on(hdev, ret);
+                       ret = hci_powered_update_sync(hdev);
So we should probably restore mgmt_power_on above.

--
Luiz Augusto von Dentz
Hi Luiz

Now, this code you mentioned in hci_dev_open_sync() was moved from
hci_core.c to hci_sync.c
The below modification is workable.
Do you agree?
If so, I will send you the v2 version. Thanks

index 15c75ef4c271..76c3107c9f91 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -4676,6 +4676,7 @@ int hci_dev_open_sync(struct hci_dev *hdev)
                    hci_dev_test_flag(hdev, HCI_MGMT) &&
                    hdev->dev_type == HCI_PRIMARY) {
                        ret = hci_powered_update_sync(hdev);
+                       mgmt_power_on(hdev, ret);
                }
        } else {
                /* Init failed, cleanup */
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help