Bluetooth: Controller: Only remove duplicate resume events
When events are placed back into pipeline as resume events, only remove duplicate resume events and not new prepare events that may have been enqueue between the start of the pre-empt ticker and its timeout. Due to new prepare events that was removed, extra done events generated cause the number of enqueued done events to overflow and assert. Fixes #36381. Fixes #37597. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
790a291e24
commit
190532bcc4
@ -939,7 +939,8 @@ static void preempt(void *param)
|
||||
iter = ull_prepare_dequeue_iter(&iter_idx);
|
||||
while (iter) {
|
||||
if (!iter->is_aborted &&
|
||||
event.curr.param == iter->prepare_param.param) {
|
||||
(event.curr.param == iter->prepare_param.param) &&
|
||||
iter->is_resume) {
|
||||
iter->is_aborted = 1;
|
||||
iter->abort_cb(&iter->prepare_param,
|
||||
iter->prepare_param.param);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user