All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Bluetooth: hci_core: program a public address set during auto off
@ 2026-10-11 22:08 Andrei-Alexandru Bleortu
  2026-10-12  2:00 ` bluez.test.bot
  0 siblings, 1 reply; 2+ messages in thread
From: Andrei-Alexandru Bleortu @ 2026-10-11 22:08 UTC (permalink / raw)
  To: Luiz Augusto von Dentz, Marcel Holtmann
  Cc: linux-bluetooth, linux-kernel, George Moussalem

When a controller with a set_bdaddr callback registers configured, it is
powered on, mgmt adds its index, and HCI_AUTO_OFF powers it off two
seconds later unless something powers it. Within that window mgmt counts
it as not powered, so Set Public Address is accepted: it sets HCI_CONFIG
and HCI_AUTO_OFF, removes the index and queues power_on. hci_power_on()
then finds the device up with HCI_AUTO_OFF set and takes the "already
up" path: it never opens the device again, so set_bdaddr() is never
called, and HCI_CONFIG is never cleared, so the index is never added
back. The controller stays up, invisible to mgmt, with its old address.

Close the device first when HCI_CONFIG is set, keeping HCI_AUTO_OFF, so
the open procedure programs the address and the configured index is
added as after any configuration change.

Seen on the IPQ5018 Bluetooth controller of a UniFi U6 Enterprise, whose
NVM carries a placeholder address: setting the board's address with
btmgmt right after boot left hci0 up with no mgmt index (bluetoothd saw
no controller); with this change the address is programmed and the
index comes back.

Assisted-by: LLM
Signed-off-by: Andrei-Alexandru Bleortu <me@andrei-z.com>
---
Transparency note: developed with an LLM coding assistant (Claude),
which traced the bug while bringing up Bluetooth on the board below and
wrote the change and this message. Tested on a UniFi U6 Enterprise
(IPQ5018 with George Moussalem's btqcomipc v5, Linux 7.2.8, BlueZ):
btmgmt public-addr right after boot now programs the address and the
mgmt index comes back. W=1 build of net/bluetooth and drivers/bluetooth
on next-20261009 is clean.

 net/bluetooth/hci_core.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/net/bluetooth/hci_core.c b/net/bluetooth/hci_core.c
index 3ea5ea726..f37f10936 100644
--- a/net/bluetooth/hci_core.c
+++ b/net/bluetooth/hci_core.c
@@ -908,6 +908,16 @@ static void hci_power_on(struct work_struct *work)
 
 	BT_DBG("%s", hdev->name);
 
+	/* A public address set while the controller was still up from its
+	 * initial power on, which mgmt counts as off until the auto off, is
+	 * only programmed by the open procedure: close it to open it again.
+	 */
+	if (test_bit(HCI_UP, &hdev->flags) &&
+	    hci_dev_test_flag(hdev, HCI_CONFIG)) {
+		hci_dev_do_close(hdev);
+		hci_dev_set_flag(hdev, HCI_AUTO_OFF);
+	}
+
 	if (test_bit(HCI_UP, &hdev->flags) &&
 	    hci_dev_test_flag(hdev, HCI_MGMT) &&
 	    hci_dev_test_and_clear_flag(hdev, HCI_AUTO_OFF)) {


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* RE: Bluetooth: hci_core: program a public address set during auto off
  2026-10-11 22:08 [PATCH] Bluetooth: hci_core: program a public address set during auto off Andrei-Alexandru Bleortu
@ 2026-10-12  2:00 ` bluez.test.bot
  0 siblings, 0 replies; 2+ messages in thread
From: bluez.test.bot @ 2026-10-12  2:00 UTC (permalink / raw)
  To: linux-bluetooth, me

[-- Attachment #1: Type: text/plain, Size: 1605 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1183485/

---Test result---

Test Summary:
CheckPatch                    PASS      0.56 seconds
VerifyFixes                   PASS      0.08 seconds
VerifySignedoff               PASS      0.08 seconds
GitLint                       PASS      8.82 seconds
SubjectPrefix                 PASS      0.07 seconds
BuildKernel                   PASS      33.63 seconds
CheckAllWarning               PASS      33.49 seconds
CheckSparse                   PASS      36.74 seconds
BuildKernel32                 PASS      30.47 seconds
CheckKernelLLVM               PASS      33.96 seconds
TestRunnerSetup               PASS      707.44 seconds
TestRunner_l2cap-tester       PASS      12.45 seconds
TestRunner_iso-tester         PASS      10.43 seconds
TestRunner_bnep-tester        PASS      2.86 seconds
TestRunner_mgmt-tester        PASS      59.78 seconds
TestRunner_rfcomm-tester      PASS      4.20 seconds
TestRunner_sco-tester         PASS      5.31 seconds
TestRunner_ioctl-tester       PASS      4.42 seconds
TestRunner_mesh-tester        PASS      5.22 seconds
TestRunner_smp-tester         PASS      4.08 seconds
TestRunner_userchan-tester    PASS      7.61 seconds
TestRunner_6lowpan-tester     PASS      4.13 seconds
IncrementalBuild              PASS      27.48 seconds



https://github.com/bluez/bluetooth-next/pull/898

---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-10-12  2:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-11 22:08 [PATCH] Bluetooth: hci_core: program a public address set during auto off Andrei-Alexandru Bleortu
2026-10-12  2:00 ` bluez.test.bot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.