Message ID | 20221008011129.1906898-1-luiz.dentz@gmail.com |
---|---|
State | New |
Headers | show |
Series | [1/2] Bluetooth: hci_sync: Fix not setting static address | expand |
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
Hello: This series was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Fri, 7 Oct 2022 18:11:28 -0700 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > 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!
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; }