-
Notifications
You must be signed in to change notification settings - Fork 6.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bluetooth: controller assertion when scanning with multiple active connections #35476
Comments
Revert the strict preempt ticker start failure check. Preempt ticker start can fail when enqueuing prepares into already filled pipeline which has preempt ticker already started for the first prepare that was added in the pipeline. Regression introduced in commit 5b75bdf ("Bluetooth: controller: nRF5: Check preempt event on timeout"). Fixes zephyrproject-rtos#35476. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
Thank you for reporting the bug.
This is how it was, before the offending commit. To avoid increased ticker operation structure memory allocations that is required (upto the amount of elements that could get enqueued in the prepare pipeline queue) to successfully enqueue ticker_start and then check for failure to start in callback is unnecessary hence for now ignoring the return value is good. In the future, I will try adding better check in a form of binary semaphore implementation that optimize out ticker_start from being called if it is already started. For now, please review the fix PR #35478 and provide your approval. |
Revert the strict preempt ticker start failure check. Preempt ticker start can fail when enqueuing prepares into already filled pipeline which has preempt ticker already started for the first prepare that was added in the pipeline. Regression introduced in commit 5b75bdf ("Bluetooth: controller: nRF5: Check preempt event on timeout"). Fixes #35476. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
...failure check Revert the strict preempt ticker start failure check. Preempt ticker start can fail when enqueuing prepares into already filled pipeline which has preempt ticker already started for the first prepare that was added in the pipeline. Regression introduced in commit 5b75bdf ("Bluetooth: controller: nRF5: Check preempt event on timeout"). Fixes zephyrproject-rtos#35476. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no> (cherry picked from commit 8cfbaf5) Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no>
...failure check Revert the strict preempt ticker start failure check. Preempt ticker start can fail when enqueuing prepares into already filled pipeline which has preempt ticker already started for the first prepare that was added in the pipeline. Regression introduced in commit 5b75bdf ("Bluetooth: controller: nRF5: Check preempt event on timeout"). Fixes zephyrproject-rtos#35476. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no> (cherry picked from commit 8cfbaf5) Signed-off-by: Trond Einar Snekvik <Trond.Einar.Snekvik@nordicsemi.no> (cherry picked from commit 09f395e)
Describe the bug
With the hci_usb sample, if more than one peripheral is connected, enableing scanning hits always the following assert:
The value is
ret == 1 == TICKER_STATUS_FAILURE
zephyr/subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c
Lines 713 to 715 in c71e2dc
To Reproduce
Steps to reproduce the behavior:
CONFIG_BT_MAX_CONN=5
What have you tried to diagnose or workaround this issue?
@cvinayak Looking through the history, the issue seems related to commit 8edc998
Impact
showstopper
Environment (please complete the following information):
Additional context
Reverting 8edc998 with the following (plain revert had conflicts), seems to work. But this just ignores the
TICKER_STATUS_FAILURE
return value. Additionally, my conflict resolution may not be correct.The text was updated successfully, but these errors were encountered: