All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address
@ 2022-10-10 20:35 Brian Gix
  2022-10-10 20:35 ` [PATCH 2/2] Bluetooth: hci_sync: Fix not able to set force_static_address Brian Gix
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Brian Gix @ 2022-10-10 20:35 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, brian.gix, Luiz Augusto von Dentz

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

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tested-by: Brian Gix <brian.gix@intel.com>
---
 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


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

* [PATCH 2/2] Bluetooth: hci_sync: Fix not able to set force_static_address
  2022-10-10 20:35 [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address Brian Gix
@ 2022-10-10 20:35 ` Brian Gix
  2022-10-10 21:00 ` [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address patchwork-bot+bluetooth
  2022-10-10 21:13 ` [1/2] " bluez.test.bot
  2 siblings, 0 replies; 6+ messages in thread
From: Brian Gix @ 2022-10-10 20:35 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: luiz.dentz, brian.gix, Luiz Augusto von Dentz

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

force_static_address shall be writable while hdev is initing but is not
considered powered yet since the static address is written only when
powered.

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Tested-by: Brian Gix <brian.gix@intel.com>
---
 net/bluetooth/hci_debugfs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/bluetooth/hci_debugfs.c b/net/bluetooth/hci_debugfs.c
index 3f401ec5bb0c..b7f682922a16 100644
--- a/net/bluetooth/hci_debugfs.c
+++ b/net/bluetooth/hci_debugfs.c
@@ -757,7 +757,7 @@ static ssize_t force_static_address_write(struct file *file,
 	bool enable;
 	int err;
 
-	if (test_bit(HCI_UP, &hdev->flags))
+	if (hdev_is_powered(hdev))
 		return -EBUSY;
 
 	err = kstrtobool_from_user(user_buf, count, &enable);
-- 
2.37.3


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

* Re: [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address
  2022-10-10 20:35 [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address Brian Gix
  2022-10-10 20:35 ` [PATCH 2/2] Bluetooth: hci_sync: Fix not able to set force_static_address Brian Gix
@ 2022-10-10 21:00 ` patchwork-bot+bluetooth
  2022-10-10 21:13 ` [1/2] " bluez.test.bot
  2 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+bluetooth @ 2022-10-10 21:00 UTC (permalink / raw)
  To: Brian Gix; +Cc: linux-bluetooth, luiz.dentz, luiz.von.dentz

Hello:

This series was applied to bluetooth/bluetooth-next.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Mon, 10 Oct 2022 13:35:21 -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!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* RE: [1/2] Bluetooth: hci_sync: Fix not setting static address
  2022-10-10 20:35 [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address Brian Gix
  2022-10-10 20:35 ` [PATCH 2/2] Bluetooth: hci_sync: Fix not able to set force_static_address Brian Gix
  2022-10-10 21:00 ` [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address patchwork-bot+bluetooth
@ 2022-10-10 21:13 ` bluez.test.bot
  2 siblings, 0 replies; 6+ messages in thread
From: bluez.test.bot @ 2022-10-10 21:13 UTC (permalink / raw)
  To: linux-bluetooth, brian.gix

[-- Attachment #1: Type: text/plain, Size: 1620 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/project/bluetooth/list/?series=684318

---Test result---

Test Summary:
CheckPatch                    PASS      2.59 seconds
GitLint                       PASS      1.52 seconds
SubjectPrefix                 PASS      1.31 seconds
BuildKernel                   PASS      34.07 seconds
BuildKernel32                 PASS      31.07 seconds
Incremental Build with patchesPASS      51.01 seconds
TestRunner: Setup             PASS      511.19 seconds
TestRunner: l2cap-tester      PASS      17.17 seconds
TestRunner: iso-tester        PASS      16.48 seconds
TestRunner: bnep-tester       PASS      6.24 seconds
TestRunner: mgmt-tester       FAIL      108.40 seconds
TestRunner: rfcomm-tester     PASS      10.01 seconds
TestRunner: sco-tester        PASS      9.54 seconds
TestRunner: ioctl-tester      PASS      10.59 seconds
TestRunner: mesh-tester       PASS      7.67 seconds
TestRunner: smp-tester        PASS      9.43 seconds
TestRunner: userchan-tester   PASS      6.46 seconds

Details
##############################
Test: TestRunner: mgmt-tester - FAIL - 108.40 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.669 seconds
Set Static Address - Success 2                       Timed out    2.002 seconds



---
Regards,
Linux Bluetooth


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

* Re: [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address
  2022-10-08  1:11 [PATCH 1/2] " Luiz Augusto von Dentz
@ 2022-10-10 21:00 ` patchwork-bot+bluetooth
  0 siblings, 0 replies; 6+ messages in thread
From: patchwork-bot+bluetooth @ 2022-10-10 21:00 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: 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!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

* [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address
@ 2022-10-08  1:11 Luiz Augusto von Dentz
  2022-10-10 21:00 ` patchwork-bot+bluetooth
  0 siblings, 1 reply; 6+ messages in thread
From: Luiz Augusto von Dentz @ 2022-10-08  1:11 UTC (permalink / raw)
  To: linux-bluetooth

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

Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
 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


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

end of thread, other threads:[~2022-10-10 21:13 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-10 20:35 [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address Brian Gix
2022-10-10 20:35 ` [PATCH 2/2] Bluetooth: hci_sync: Fix not able to set force_static_address Brian Gix
2022-10-10 21:00 ` [PATCH 1/2] Bluetooth: hci_sync: Fix not setting static address patchwork-bot+bluetooth
2022-10-10 21:13 ` [1/2] " bluez.test.bot
  -- strict thread matches above, loose matches on Subject: below --
2022-10-08  1:11 [PATCH 1/2] " Luiz Augusto von Dentz
2022-10-10 21:00 ` patchwork-bot+bluetooth

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.