diff --git a/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv.c b/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv.c index 91cc8ed9884..d7cf4149bb8 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv.c +++ b/subsys/bluetooth/controller/ll_sw/nordic/lll/lll_adv.c @@ -1372,10 +1372,10 @@ static void isr_done(void *param) #endif /* CONFIG_BT_CTLR_ADV_INDICATION */ #if defined(CONFIG_BT_CTLR_ADV_EXT) || defined(CONFIG_BT_CTLR_JIT_SCHEDULING) -#if defined(CONFIG_BT_CTLR_ADV_EXT) +#if defined(CONFIG_BT_CTLR_ADV_EXT) && !defined(CONFIG_BT_CTLR_JIT_SCHEDULING) /* If no auxiliary PDUs scheduled, generate primary radio event done */ if (!lll->aux) -#endif /* CONFIG_BT_CTLR_ADV_EXT */ +#endif /* CONFIG_BT_CTLR_ADV_EXT && !CONFIG_BT_CTLR_JIT_SCHEDULING */ { struct event_done_extra *extra; diff --git a/subsys/bluetooth/controller/ll_sw/ull_adv.c b/subsys/bluetooth/controller/ll_sw/ull_adv.c index 49fd54c2fcc..14eaf08d469 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_adv.c +++ b/subsys/bluetooth/controller/ll_sw/ull_adv.c @@ -1995,7 +1995,7 @@ void ull_adv_done(struct node_rx_event_done *done) lll = &adv->lll; #if defined(CONFIG_BT_CTLR_JIT_SCHEDULING) - if (done->extra.result != DONE_COMPLETED) { + if (done->extra.type == EVENT_DONE_EXTRA_TYPE_ADV && done->extra.result != DONE_COMPLETED) { /* Event aborted or too late - try to re-schedule */ uint32_t ticks_elapsed; uint32_t ticks_now; @@ -2061,6 +2061,12 @@ void ull_adv_done(struct node_rx_event_done *done) adv->lll.hdr.score -= 1; } } +#if defined(CONFIG_BT_CTLR_ADV_EXT) + if (done->extra.type == EVENT_DONE_EXTRA_TYPE_ADV && adv->lll.aux) { + /* Primary event of extended advertising done - wait for aux done */ + return; + } +#endif /* CONFIG_BT_CTLR_ADV_EXT */ #endif /* CONFIG_BT_CTLR_JIT_SCHEDULING */ #if defined(CONFIG_BT_CTLR_ADV_EXT)