Message ID | 20241125204211.716883-1-luiz.dentz@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v1,1/3] Bluetooth: hci_sync: Fix not setting Random Address when required | expand |
Hello: This series was applied to bluetooth/bluetooth-next.git (master) by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>: On Mon, 25 Nov 2024 15:42:09 -0500 you wrote: > From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> > > This fixes errors such as the following when Own address type is set to > Random Address but it has not been programmed yet due to either be > advertising or connecting: > > < HCI Command: LE Set Exte.. (0x08|0x0041) plen 13 > Own address type: Random (0x03) > Filter policy: Ignore not in accept list (0x01) > PHYs: 0x05 > Entry 0: LE 1M > Type: Passive (0x00) > Interval: 60.000 msec (0x0060) > Window: 30.000 msec (0x0030) > Entry 1: LE Coded > Type: Passive (0x00) > Interval: 180.000 msec (0x0120) > Window: 90.000 msec (0x0090) > > HCI Event: Command Complete (0x0e) plen 4 > LE Set Extended Scan Parameters (0x08|0x0041) ncmd 1 > Status: Success (0x00) > < HCI Command: LE Set Exten.. (0x08|0x0042) plen 6 > Extended scan: Enabled (0x01) > Filter duplicates: Enabled (0x01) > Duration: 0 msec (0x0000) > Period: 0.00 sec (0x0000) > > HCI Event: Command Complete (0x0e) plen 4 > LE Set Extended Scan Enable (0x08|0x0042) ncmd 1 > Status: Invalid HCI Command Parameters (0x12) > > [...] Here is the summary with links: - [v1,1/3] Bluetooth: hci_sync: Fix not setting Random Address when required https://git.kernel.org/bluetooth/bluetooth-next/c/e8e5b0502559 - [v1,2/3] Bluetooth: MGMT: Fix Add Device to responding before completing https://git.kernel.org/bluetooth/bluetooth-next/c/fcd17fe2deb9 - [v1,3/3] Bluetooth: MGMT: Mark LL Privacy as stable https://git.kernel.org/bluetooth/bluetooth-next/c/514e14b1a7c3 You are awesome, thank you!
diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index c86f4e42e69c..7b2b04d6b856 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -1031,9 +1031,9 @@ static bool adv_use_rpa(struct hci_dev *hdev, uint32_t flags) static int hci_set_random_addr_sync(struct hci_dev *hdev, bdaddr_t *rpa) { - /* If we're advertising or initiating an LE connection we can't - * go ahead and change the random address at this time. This is - * because the eventual initiator address used for the + /* If a random_addr has been set we're advertising or initiating an LE + * connection we can't go ahead and change the random address at this + * time. This is because the eventual initiator address used for the * subsequently created connection will be undefined (some * controllers use the new address and others the one we had * when the operation started). @@ -1041,8 +1041,9 @@ static int hci_set_random_addr_sync(struct hci_dev *hdev, bdaddr_t *rpa) * In this kind of scenario skip the update and let the random * address be updated at the next cycle. */ - if (hci_dev_test_flag(hdev, HCI_LE_ADV) || - hci_lookup_le_connect(hdev)) { + if (bacmp(&hdev->random_addr, BDADDR_ANY) && + (hci_dev_test_flag(hdev, HCI_LE_ADV) || + hci_lookup_le_connect(hdev))) { bt_dev_dbg(hdev, "Deferring random address update"); hci_dev_set_flag(hdev, HCI_RPA_EXPIRED); return 0;