diff --git a/subsys/bluetooth/controller/ll_sw/ull_adv.c b/subsys/bluetooth/controller/ll_sw/ull_adv.c index a1fd6ca5e9f..0d873b025c0 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_adv.c +++ b/subsys/bluetooth/controller/ll_sw/ull_adv.c @@ -493,11 +493,11 @@ uint8_t ll_adv_enable(uint8_t enable) uint8_t const handle = 0; uint32_t ticks_anchor; #endif /* !CONFIG_BT_CTLR_ADV_EXT || !CONFIG_BT_HCI_MESH_EXT */ - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; uint32_t ticks_slot_overhead; + uint32_t ticks_slot_offset; + uint32_t volatile ret_cb; struct pdu_adv *pdu_scan; struct pdu_adv *pdu_adv; - uint32_t ticks_slot_offset; struct ll_adv_set *adv; struct lll_adv *lll; uint32_t ret; @@ -952,6 +952,7 @@ uint8_t ll_adv_enable(uint8_t enable) #if defined(CONFIG_BT_PERIPHERAL) lll->is_hdcd = !interval && (pdu_adv->type == PDU_ADV_TYPE_DIRECT_IND); if (lll->is_hdcd) { + ret_cb = TICKER_STATUS_BUSY; ret = ticker_start(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, (TICKER_ID_ADV_BASE + handle), @@ -961,7 +962,6 @@ uint8_t ll_adv_enable(uint8_t enable) (adv->evt.ticks_slot + ticks_slot_overhead), ticker_cb, adv, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret != TICKER_STATUS_SUCCESS) { goto failure_cleanup; @@ -1044,12 +1044,13 @@ uint8_t ll_adv_enable(uint8_t enable) if (ret) { goto failure_cleanup; } - ret_cb = TICKER_STATUS_BUSY; aux_is_started = 1U; } #endif /* (CONFIG_BT_CTLR_ADV_AUX_SET > 0) */ + ret_cb = TICKER_STATUS_BUSY; + #if defined(CONFIG_BT_TICKER_EXT) ll_adv_ticker_ext[handle].ticks_slot_window = ULL_ADV_RANDOM_DELAY + ticks_slot; @@ -1561,7 +1562,7 @@ static void conn_release(struct ll_adv_set *adv) static inline uint8_t disable(uint8_t handle) { - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; struct ll_adv_set *adv; void *mark; uint32_t ret; @@ -1592,6 +1593,7 @@ static inline uint8_t disable(uint8_t handle) #if defined(CONFIG_BT_PERIPHERAL) if (adv->lll.is_hdcd) { + ret_cb = TICKER_STATUS_BUSY; ret = ticker_stop(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_ADV_STOP, ull_ticker_status_give, (void *)&ret_cb); @@ -1602,14 +1604,13 @@ static inline uint8_t disable(uint8_t handle) return BT_HCI_ERR_CMD_DISALLOWED; } - ret_cb = TICKER_STATUS_BUSY; } #endif + ret_cb = TICKER_STATUS_BUSY; ret = ticker_stop(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_ADV_BASE + handle, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret) { mark = ull_disable_mark(adv); diff --git a/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c b/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c index 7dea120ddc5..38a2a0fac72 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c +++ b/subsys/bluetooth/controller/ll_sw/ull_adv_aux.c @@ -464,7 +464,7 @@ uint8_t ll_adv_aux_ad_data_set(uint8_t handle, uint8_t op, uint8_t frag_pref, ui if (adv->is_enabled && !aux->is_started) { uint32_t ticks_slot_overhead; - volatile uint32_t ret_cb; + uint32_t volatile ret_cb; uint32_t ticks_anchor; uint32_t ret; @@ -480,7 +480,6 @@ uint8_t ll_adv_aux_ad_data_set(uint8_t handle, uint8_t op, uint8_t frag_pref, ui ret = ull_adv_aux_start(aux, ticks_anchor, ticks_slot_overhead, &ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret != TICKER_STATUS_SUCCESS) { /* FIXME: Use a better error code */ @@ -646,7 +645,7 @@ uint32_t ull_adv_aux_start(struct ll_adv_aux_set *aux, uint32_t ticks_anchor, uint8_t ull_adv_aux_stop(struct ll_adv_aux_set *aux) { - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; uint8_t aux_handle; void *mark; uint32_t ret; @@ -656,10 +655,10 @@ uint8_t ull_adv_aux_stop(struct ll_adv_aux_set *aux) aux_handle = aux_handle_get(aux); + ret_cb = TICKER_STATUS_BUSY; ret = ticker_stop(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_ADV_AUX_BASE + aux_handle, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret) { mark = ull_disable_mark(aux); @@ -793,12 +792,13 @@ static void mfy_aux_offset_get(void *param) ticks_current = 0U; retry = 4U; do { - uint32_t volatile ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; uint32_t ticks_previous; uint32_t ret; ticks_previous = ticks_current; + ret_cb = TICKER_STATUS_BUSY; ret = ticker_next_slot_get(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_ULL_LOW, &id, diff --git a/subsys/bluetooth/controller/ll_sw/ull_adv_sync.c b/subsys/bluetooth/controller/ll_sw/ull_adv_sync.c index e92b7722260..d23f750fb16 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_adv_sync.c +++ b/subsys/bluetooth/controller/ll_sw/ull_adv_sync.c @@ -696,7 +696,7 @@ static inline uint16_t sync_handle_get(struct ll_adv_sync_set *sync) static inline uint8_t sync_stop(struct ll_adv_sync_set *sync) { - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; uint8_t sync_handle; void *mark; uint32_t ret; @@ -706,10 +706,10 @@ static inline uint8_t sync_stop(struct ll_adv_sync_set *sync) sync_handle = sync_handle_get(sync); + ret_cb = TICKER_STATUS_BUSY; ret = ticker_stop(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_ADV_SYNC_BASE + sync_handle, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret) { mark = ull_disable_mark(sync); @@ -746,12 +746,13 @@ static void mfy_sync_offset_get(void *param) ticks_current = 0U; retry = 4U; do { - uint32_t volatile ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; uint32_t ticks_previous; uint32_t ret; ticks_previous = ticks_current; + ret_cb = TICKER_STATUS_BUSY; ret = ticker_next_slot_get(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_ULL_LOW, &id, diff --git a/subsys/bluetooth/controller/ll_sw/ull_conn.c b/subsys/bluetooth/controller/ll_sw/ull_conn.c index d772ac65239..6a9f0cb7283 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_conn.c +++ b/subsys/bluetooth/controller/ll_sw/ull_conn.c @@ -1658,7 +1658,7 @@ static void ticker_op_stop_cb(uint32_t status, void *param) static inline void disable(uint16_t handle) { - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; struct ll_conn *conn; void *mark; uint32_t ret; @@ -1668,10 +1668,10 @@ static inline void disable(uint16_t handle) mark = ull_disable_mark(conn); LL_ASSERT(mark == conn); + ret_cb = TICKER_STATUS_BUSY; ret = ticker_stop(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_CONN_BASE + handle, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (!ret) { ret = ull_disable(&conn->lll); diff --git a/subsys/bluetooth/controller/ll_sw/ull_scan.c b/subsys/bluetooth/controller/ll_sw/ull_scan.c index c0df028ba89..44f1690ad77 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_scan.c +++ b/subsys/bluetooth/controller/ll_sw/ull_scan.c @@ -263,9 +263,9 @@ void ull_scan_params_set(struct lll_scan *lll, uint8_t type, uint16_t interval, uint8_t ull_scan_enable(struct ll_scan_set *scan) { - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; struct lll_scan *lll = &scan->lll; uint32_t ticks_slot_overhead; + uint32_t volatile ret_cb; uint32_t ticks_interval; uint32_t ticks_anchor; uint32_t ret; @@ -335,6 +335,7 @@ uint8_t ull_scan_enable(struct ll_scan_set *scan) uint8_t handle = ull_scan_handle_get(scan); + ret_cb = TICKER_STATUS_BUSY; ret = ticker_start(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_SCAN_BASE + handle, ticks_anchor, 0, ticks_interval, @@ -343,7 +344,6 @@ uint8_t ull_scan_enable(struct ll_scan_set *scan) (scan->evt.ticks_slot + ticks_slot_overhead), ticker_cb, scan, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret != TICKER_STATUS_SUCCESS) { return BT_HCI_ERR_CMD_DISALLOWED; @@ -365,17 +365,17 @@ uint8_t ull_scan_enable(struct ll_scan_set *scan) uint8_t ull_scan_disable(uint8_t handle, struct ll_scan_set *scan) { - volatile uint32_t ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; void *mark; uint32_t ret; mark = ull_disable_mark(scan); LL_ASSERT(mark == scan); + ret_cb = TICKER_STATUS_BUSY; ret = ticker_stop(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_THREAD, TICKER_ID_SCAN_BASE + handle, ull_ticker_status_give, (void *)&ret_cb); - ret = ull_ticker_status_take(ret, &ret_cb); if (ret) { mark = ull_disable_unmark(scan); diff --git a/subsys/bluetooth/controller/ll_sw/ull_sched.c b/subsys/bluetooth/controller/ll_sw/ull_sched.c index 7663c31a967..6facc445713 100644 --- a/subsys/bluetooth/controller/ll_sw/ull_sched.c +++ b/subsys/bluetooth/controller/ll_sw/ull_sched.c @@ -63,15 +63,15 @@ void ull_sched_after_mstr_slot_get(uint8_t user_id, uint32_t ticks_slot_abs, ticks_to_expire = ticks_to_expire_prev = *us_offset = 0U; ticks_slot_abs_prev = 0U; while (1) { - uint32_t volatile ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; struct ll_conn *conn; uint32_t ret; + ret_cb = TICKER_STATUS_BUSY; ret = ticker_next_slot_get(TICKER_INSTANCE_ID_CTLR, user_id, &ticker_id, ticks_anchor, &ticks_to_expire, ticker_op_cb, (void *)&ret_cb); - if (ret == TICKER_STATUS_BUSY) { while (ret_cb == TICKER_STATUS_BUSY) { ticker_job_sched(TICKER_INSTANCE_ID_CTLR, @@ -345,10 +345,11 @@ static void win_offset_calc(struct ll_conn *conn_curr, uint8_t is_select, ticks_anchor_prev = offset_index = offset = 0U; ticks_slot_abs_prev = 0U; do { - uint32_t volatile ret_cb = TICKER_STATUS_BUSY; + uint32_t volatile ret_cb; struct ll_conn *conn; uint32_t ret; + ret_cb = TICKER_STATUS_BUSY; ret = ticker_next_slot_get(TICKER_INSTANCE_ID_CTLR, TICKER_USER_ID_ULL_LOW, &ticker_id, &ticks_anchor,