Message ID | 20230214154104.kernel.v2.1.Ibe4d3a42683381c1e78b8c3aa67b53fc74437ae9@changeid |
---|---|
State | Superseded |
Headers | show |
Series | [kernel,v2] Bluetooth: hci_sync: Resume adv with no RPA when active scan | 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=721897 ---Test result--- Test Summary: CheckPatch PASS 0.60 seconds GitLint PASS 0.26 seconds SubjectPrefix PASS 0.06 seconds BuildKernel PASS 39.06 seconds CheckAllWarning PASS 42.41 seconds CheckSparse PASS 47.61 seconds CheckSmatch PASS 129.51 seconds BuildKernel32 PASS 37.67 seconds TestRunnerSetup PASS 537.95 seconds TestRunner_l2cap-tester PASS 18.94 seconds TestRunner_iso-tester PASS 20.48 seconds TestRunner_bnep-tester PASS 6.82 seconds TestRunner_mgmt-tester PASS 130.43 seconds TestRunner_rfcomm-tester PASS 10.84 seconds TestRunner_sco-tester PASS 9.82 seconds TestRunner_ioctl-tester PASS 11.65 seconds TestRunner_mesh-tester PASS 8.92 seconds TestRunner_smp-tester PASS 9.60 seconds TestRunner_userchan-tester PASS 7.18 seconds IncrementalBuild PASS 35.28 seconds --- Regards, Linux Bluetooth
diff --git a/net/bluetooth/hci_sync.c b/net/bluetooth/hci_sync.c index 117eedb6f709..edbf9faf7fa1 100644 --- a/net/bluetooth/hci_sync.c +++ b/net/bluetooth/hci_sync.c @@ -2402,7 +2402,7 @@ static u8 hci_update_accept_list_sync(struct hci_dev *hdev) u8 filter_policy; int err; - /* Pause advertising if resolving list can be used as controllers are + /* Pause advertising if resolving list can be used as controllers * cannot accept resolving list modifications while advertising. */ if (use_ll_privacy(hdev)) { @@ -5397,7 +5397,7 @@ static int hci_active_scan_sync(struct hci_dev *hdev, uint16_t interval) /* Pause advertising since active scanning disables address resolution * which advertising depend on in order to generate its RPAs. */ - if (use_ll_privacy(hdev) && hci_dev_test_flag(hdev, HCI_PRIVACY)) { + if (use_ll_privacy(hdev)) { err = hci_pause_advertising_sync(hdev); if (err) { bt_dev_err(hdev, "pause advertising failed: %d", err); @@ -5416,6 +5416,10 @@ static int hci_active_scan_sync(struct hci_dev *hdev, uint16_t interval) goto failed; } + // Resume paused advertising if the host is not using RPA + if (use_ll_privacy(hdev) && !hci_dev_test_flag(hdev, HCI_PRIVACY)) + hci_resume_advertising_sync(hdev); + /* All active scans will be done with either a resolvable private * address (when privacy feature has been enabled) or non-resolvable * private address.
The address resolution should be disabled during the active scan, so all the advertisements can reach the host. The advertising has to be paused before disabling the address resolution, because the advertising will prevent any changes to the resolving list and the address resolution status. Skipping this will cause the hci error and the discovery failure. If the host is using RPA, the controller needs to generate RPA for the advertising, so the advertising must remain paused during the active scan. If the host is not using RPA, the advertising can be resumed after disabling the address resolution. Fixes: 9afc675edeeb ("Bluetooth: hci_sync: allow advertise when scan without RPA") Signed-off-by: Zhengping Jiang <jiangzp@google.com> --- Changes in v2: - Commit message format Changes in v1: - With LL privacy, always pause advertising when active scan - Only resume the advertising if the host is not using RPA net/bluetooth/hci_sync.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)