2022-10-08 01:31:07

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address

From: Luiz Augusto von Dentz <[email protected]>

This attempts to program the address stored in hdev->static_addr after
the init sequence has been complete:

@ MGMT Command: Set Static A.. (0x002b) plen 6
Address: C0:55:44:33:22:11 (Static)
@ MGMT Event: Command Complete (0x0001) plen 7
Set Static Address (0x002b) plen 4
Status: Success (0x00)
Current settings: 0x00008200
Low Energy
Static Address
@ MGMT Event: New Settings (0x0006) plen 4
Current settings: 0x00008200
Low Energy
Static Address
< HCI Command: LE Set Random.. (0x08|0x0005) plen 6
Address: C0:55:44:33:22:11 (Static)
> HCI Event: Command Complete (0x0e) plen 4
LE Set Random Address (0x08|0x0005) ncmd 1
Status: Success (0x00)
@ MGMT Event: Command Complete (0x0001) plen 7
Set Powered (0x0005) plen 4
Status: Success (0x00)
Current settings: 0x00008201
Powered
Low Energy
Static Address
@ MGMT Event: New Settings (0x0006) plen 4
Current settings: 0x00008201
Powered
Low Energy
Static Address

Signed-off-by: Luiz Augusto von Dentz <[email protected]>
---
net/bluetooth/hci_sync.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)

diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c
index 76c3107c9f91..b53bb0ee9d39 100644
--- a/net/bluetooth/hci_sync.c
+++ b/net/bluetooth/hci_sync.c
@@ -3054,6 +3054,7 @@ int hci_update_name_sync(struct hci_dev *hdev)
* Enable Authentication
* lmp_bredr_capable(Set Fast Connectable -> Set Scan Type -> Set Class ->
* Set Name -> Set EIR)
+ * HCI_FORCE_STATIC_ADDR | BDADDR_ANY && !HCI_BREDR_ENABLED (Set Static Address)
*/
int hci_powered_update_sync(struct hci_dev *hdev)
{
@@ -3093,6 +3094,23 @@ int hci_powered_update_sync(struct hci_dev *hdev)
hci_update_eir_sync(hdev);
}

+ /* If forcing static address is in use or there is no public
+ * address use the static address as random address (but skip
+ * the HCI command if the current random address is already the
+ * static one.
+ *
+ * In case BR/EDR has been disabled on a dual-mode controller
+ * and a static address has been configured, then use that
+ * address instead of the public BR/EDR address.
+ */
+ if (hci_dev_test_flag(hdev, HCI_FORCE_STATIC_ADDR) ||
+ (!bacmp(&hdev->bdaddr, BDADDR_ANY) &&
+ !hci_dev_test_flag(hdev, HCI_BREDR_ENABLED))) {
+ if (bacmp(&hdev->static_addr, BDADDR_ANY))
+ return hci_set_random_addr_sync(hdev,
+ &hdev->static_addr);
+ }
+
return 0;
}

--
2.37.3


2022-10-08 03:21:42

by bluez.test.bot

[permalink] [raw]
Subject: RE: [1/2] Bluetooth: hci_sync: Fix not setting static address

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/project/bluetooth/list/?series=683863

---Test result---

Test Summary:
CheckPatch PASS 1.84 seconds
GitLint PASS 0.94 seconds
SubjectPrefix PASS 0.62 seconds
BuildKernel PASS 45.66 seconds
BuildKernel32 PASS 41.39 seconds
Incremental Build with patchesPASS 66.29 seconds
TestRunner: Setup PASS 682.30 seconds
TestRunner: l2cap-tester PASS 21.42 seconds
TestRunner: iso-tester PASS 22.47 seconds
TestRunner: bnep-tester PASS 8.46 seconds
TestRunner: mgmt-tester FAIL 140.62 seconds
TestRunner: rfcomm-tester PASS 13.03 seconds
TestRunner: sco-tester PASS 12.36 seconds
TestRunner: ioctl-tester PASS 14.33 seconds
TestRunner: mesh-tester PASS 10.32 seconds
TestRunner: smp-tester PASS 12.12 seconds
TestRunner: userchan-tester PASS 8.61 seconds

Details
##############################
Test: TestRunner: mgmt-tester - FAIL - 140.62 seconds
Run test-runner with mgmt-tester
Total: 494, Passed: 492 (99.6%), Failed: 2, Not Run: 0

Failed Test Cases
Set Static Address - Success 1 Timed out 2.396 seconds
Set Static Address - Success 2 Timed out 2.004 seconds



---
Regards,
Linux Bluetooth

2022-10-10 21:01:51

by patchwork-bot+bluetooth

[permalink] [raw]
Subject: Re: [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address

Hello:

This series was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <[email protected]>:

On Fri, 7 Oct 2022 18:11:28 -0700 you wrote:
> From: Luiz Augusto von Dentz <[email protected]>
>
> This attempts to program the address stored in hdev->static_addr after
> the init sequence has been complete:
>
> @ MGMT Command: Set Static A.. (0x002b) plen 6
> Address: C0:55:44:33:22:11 (Static)
> @ MGMT Event: Command Complete (0x0001) plen 7
> Set Static Address (0x002b) plen 4
> Status: Success (0x00)
> Current settings: 0x00008200
> Low Energy
> Static Address
> @ MGMT Event: New Settings (0x0006) plen 4
> Current settings: 0x00008200
> Low Energy
> Static Address
> < HCI Command: LE Set Random.. (0x08|0x0005) plen 6
> Address: C0:55:44:33:22:11 (Static)
> > HCI Event: Command Complete (0x0e) plen 4
> LE Set Random Address (0x08|0x0005) ncmd 1
> Status: Success (0x00)
> @ MGMT Event: Command Complete (0x0001) plen 7
> Set Powered (0x0005) plen 4
> Status: Success (0x00)
> Current settings: 0x00008201
> Powered
> Low Energy
> Static Address
> @ MGMT Event: New Settings (0x0006) plen 4
> Current settings: 0x00008201
> Powered
> Low Energy
> Static Address
>
> [...]

Here is the summary with links:
- [1/2] Bluetooth: hci_sync: Fix not setting static address
https://git.kernel.org/bluetooth/bluetooth-next/c/ca57023e7c49
- [2/2] Bluetooth: hci_sync: Fix not able to set force_static_address
https://git.kernel.org/bluetooth/bluetooth-next/c/8549542298e9

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html