Revert "Bluetooth: Controller: Fix ull_prepare_dequeue for skipped events"
These change are reverted as part of fixing regression
failure in LL/DDI/SCN/BV-21-C and LL/DDI/SCN/BV-25-C.
This reverts commit 0d54ca8761
.
Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
a9750d4fea
commit
91781306e9
2 changed files with 21 additions and 33 deletions
|
@ -930,8 +930,8 @@ static uint32_t preempt_ticker_start(struct lll_event *first,
|
|||
TICKER_NULL_REMAINDER,
|
||||
TICKER_NULL_LAZY,
|
||||
TICKER_NULL_SLOT,
|
||||
preempt_ticker_cb, first->prepare_param.param,
|
||||
ticker_start_op_cb, NULL);
|
||||
preempt_ticker_cb, first,
|
||||
ticker_start_op_cb, first);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@ -1007,7 +1007,7 @@ static void preempt(void *param)
|
|||
}
|
||||
|
||||
/* Preemptor not in pipeline */
|
||||
if (next->prepare_param.param != param) {
|
||||
if (next != param) {
|
||||
uint32_t ret;
|
||||
|
||||
/* Start the preempt timeout */
|
||||
|
|
|
@ -2063,8 +2063,6 @@ void *ull_prepare_dequeue_iter(uint8_t *idx)
|
|||
|
||||
void ull_prepare_dequeue(uint8_t caller_id)
|
||||
{
|
||||
void *param_normal_head = NULL;
|
||||
void *param_normal_next = NULL;
|
||||
void *param_resume_head = NULL;
|
||||
void *param_resume_next = NULL;
|
||||
struct lll_event *next;
|
||||
|
@ -2105,41 +2103,31 @@ void ull_prepare_dequeue(uint8_t caller_id)
|
|||
/* The prepare element was not a resume event, it would
|
||||
* use the radio or was enqueued back into prepare
|
||||
* pipeline with a preempt timeout being set.
|
||||
*
|
||||
* Remember the first encountered and the next element
|
||||
* in the prepare pipeline so that we do not infinitely
|
||||
* loop through the resume events in prepare pipeline.
|
||||
*/
|
||||
if (!is_resume) {
|
||||
if (!param_normal_head) {
|
||||
param_normal_head = param;
|
||||
} else if (!param_normal_next) {
|
||||
param_normal_next = param;
|
||||
}
|
||||
} else {
|
||||
if (!param_resume_head) {
|
||||
param_resume_head = param;
|
||||
} else if (!param_resume_next) {
|
||||
param_resume_next = param;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
/* Remember the first encountered resume and the next
|
||||
* resume element in the prepare pipeline so that we do
|
||||
* not infinitely loop through the resume events in
|
||||
* prepare pipeline.
|
||||
*/
|
||||
if (!param_resume_head) {
|
||||
param_resume_head = param;
|
||||
} else if (!param_resume_next) {
|
||||
param_resume_next = param;
|
||||
}
|
||||
|
||||
/* Stop traversing the prepare pipeline when we reach
|
||||
* back to the first or next event where we
|
||||
* back to the first or next resume event where we
|
||||
* initially started processing the prepare pipeline.
|
||||
*/
|
||||
if (!next->is_aborted &&
|
||||
((!next->is_resume &&
|
||||
((next->prepare_param.param ==
|
||||
param_normal_head) ||
|
||||
(next->prepare_param.param ==
|
||||
param_normal_next))) ||
|
||||
(next->is_resume &&
|
||||
!param_normal_next &&
|
||||
((next->prepare_param.param ==
|
||||
param_resume_head) ||
|
||||
(next->prepare_param.param ==
|
||||
param_resume_next))))) {
|
||||
if (next->is_resume &&
|
||||
((next->prepare_param.param ==
|
||||
param_resume_head) ||
|
||||
(next->prepare_param.param ==
|
||||
param_resume_next))) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue