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

Ajye Huang posted 1 patch 1 year, 6 months ago
net/bluetooth/hci_core.c | 1 +
1 file changed, 1 insertion(+)
[PATCH v1] bluetooth: Fix the bluetooth icon status after running hciconfig hci0 up
Posted by Ajye Huang 1 year, 6 months ago
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 <ajye_huang@compal.corp-partner.google.com>
---
 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
Re: [PATCH v1] bluetooth: Fix the bluetooth icon status after running hciconfig hci0 up
Posted by Luiz Augusto von Dentz 1 year, 6 months ago
Hi Ajye,

On Fri, Sep 30, 2022 at 7:07 AM Ajye Huang
<ajye_huang@compal.corp-partner.google.com> wrote:
>
> 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 <ajye_huang@compal.corp-partner.google.com>
> ---
>  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
Re: [PATCH v1] bluetooth: Fix the bluetooth icon status after running hciconfig hci0 up
Posted by Ajye Huang 1 year, 6 months ago
On Sat, Oct 1, 2022 at 3:57 AM Luiz Augusto von Dentz
<luiz.dentz@gmail.com> wrote:
>
> Hi Ajye,
>
> On Fri, Sep 30, 2022 at 7:07 AM Ajye Huang
> <ajye_huang@compal.corp-partner.google.com> wrote:
> >
> > 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 <ajye_huang@compal.corp-partner.google.com>
> > ---
> >  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 */
Re: [PATCH v1] bluetooth: Fix the bluetooth icon status after running hciconfig hci0 up
Posted by Luiz Augusto von Dentz 1 year, 6 months ago
Hi Ajye,

On Fri, Sep 30, 2022 at 3:30 PM Ajye Huang
<ajye_huang@compal.corp-partner.google.com> wrote:
>
> On Sat, Oct 1, 2022 at 3:57 AM Luiz Augusto von Dentz
> <luiz.dentz@gmail.com> wrote:
> >
> > Hi Ajye,
> >
> > On Fri, Sep 30, 2022 at 7:07 AM Ajye Huang
> > <ajye_huang@compal.corp-partner.google.com> wrote:
> > >
> > > 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 <ajye_huang@compal.corp-partner.google.com>
> > > ---
> > >  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 */

Ive submitted a change like that already:

https://patchwork.kernel.org/project/bluetooth/patch/20220930201920.225767-1-luiz.dentz@gmail.com/

-- 
Luiz Augusto von Dentz