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 create_prepare_cb(struct lll_prepare_param *p);
|
||||||
static int 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 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 abort_cb(struct lll_prepare_param *prepare_param, void *param);
|
||||||
static void isr_rx_estab(void *param);
|
static void isr_rx_estab(void *param);
|
||||||
static void isr_rx(void *param);
|
static void isr_rx(void *param);
|
||||||
|
@ -147,7 +148,7 @@ static void create_prepare_bh(void *param)
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* Invoke common pipeline handling of prepare */
|
/* 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);
|
param);
|
||||||
LL_ASSERT(!err || err == -EINPROGRESS);
|
LL_ASSERT(!err || err == -EINPROGRESS);
|
||||||
}
|
}
|
||||||
|
@ -157,7 +158,7 @@ static void prepare_bh(void *param)
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* Invoke common pipeline handling of prepare */
|
/* 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);
|
LL_ASSERT(!err || err == -EINPROGRESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -405,6 +406,20 @@ static int prepare_cb_common(struct lll_prepare_param *p)
|
||||||
return 0;
|
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)
|
static void abort_cb(struct lll_prepare_param *prepare_param, void *param)
|
||||||
{
|
{
|
||||||
struct event_done_extra *e;
|
struct event_done_extra *e;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue