Bluetooth: Controller: Fix ISO Sync Receiver is_abort_cb
Fix ISO Sync Receiver implementation to correctly prevent subevent from pre-empted in the unreserve time space. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
396692c723
commit
7e74a046a1
1 changed files with 17 additions and 2 deletions
|
@ -46,6 +46,7 @@ static void prepare_bh(void *param);
|
|||
static int create_prepare_cb(struct lll_prepare_param *p);
|
||||
static int prepare_cb(struct lll_prepare_param *p);
|
||||
static int prepare_cb_common(struct lll_prepare_param *p);
|
||||
static int is_abort_cb(void *next, void *curr, lll_prepare_cb_t *resume_cb);
|
||||
static void abort_cb(struct lll_prepare_param *prepare_param, void *param);
|
||||
static void isr_rx_estab(void *param);
|
||||
static void isr_rx(void *param);
|
||||
|
@ -147,7 +148,7 @@ static void create_prepare_bh(void *param)
|
|||
int err;
|
||||
|
||||
/* Invoke common pipeline handling of prepare */
|
||||
err = lll_prepare(lll_is_abort_cb, abort_cb, create_prepare_cb, 0U,
|
||||
err = lll_prepare(is_abort_cb, abort_cb, create_prepare_cb, 0U,
|
||||
param);
|
||||
LL_ASSERT(!err || err == -EINPROGRESS);
|
||||
}
|
||||
|
@ -157,7 +158,7 @@ static void prepare_bh(void *param)
|
|||
int err;
|
||||
|
||||
/* Invoke common pipeline handling of prepare */
|
||||
err = lll_prepare(lll_is_abort_cb, abort_cb, prepare_cb, 0U, param);
|
||||
err = lll_prepare(is_abort_cb, abort_cb, prepare_cb, 0U, param);
|
||||
LL_ASSERT(!err || err == -EINPROGRESS);
|
||||
}
|
||||
|
||||
|
@ -405,6 +406,20 @@ static int prepare_cb_common(struct lll_prepare_param *p)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static int is_abort_cb(void *next, void *curr, lll_prepare_cb_t *resume_cb)
|
||||
{
|
||||
if (next != curr) {
|
||||
struct lll_sync_iso *lll;
|
||||
|
||||
lll = curr;
|
||||
if (lll->bn_curr <= lll->bn) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
return -ECANCELED;
|
||||
}
|
||||
|
||||
static void abort_cb(struct lll_prepare_param *prepare_param, void *param)
|
||||
{
|
||||
struct event_done_extra *e;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue