Bluetooth: Controller: Relax radio packet pointer assignment deadline

Relax the radio packet pointer assignment deadline assertion
until access address being transmitted. The PDU buffer is
probably only needed just after access address is being
transmitted or received by the radio. This will give some
more breathing room for slow CPUs like in nRF51x SoCs.

Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
Vinayak Kariappa Chettimada
2025-08-29 22:45:34 +02:00
committed by Benjamin Cabé
parent 4227016559
commit 230df77993
2 changed files with 20 additions and 4 deletions

View File

@@ -791,7 +791,12 @@ static void isr_tx(void *param)
radio_pkt_rx_set(node_rx->pdu);
/* assert if radio packet ptr is not set and radio started rx */
LL_ASSERT(!radio_is_ready());
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
lll_prof_latency_get());
} else {
LL_ASSERT(!radio_is_address());
}
#if defined(CONFIG_BT_CTLR_PRIVACY)
if (ull_filter_lll_rl_enabled()) {
@@ -1211,7 +1216,12 @@ static inline int isr_rx_pdu(struct lll_scan *lll, struct pdu_adv *pdu_adv_rx,
radio_pkt_tx_set(pdu_tx);
/* assert if radio packet ptr is not set and radio started tx */
LL_ASSERT(!radio_is_ready());
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
lll_prof_latency_get());
} else {
LL_ASSERT(!radio_is_address());
}
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
lll_prof_cputime_capture();
@@ -1343,7 +1353,12 @@ static inline int isr_rx_pdu(struct lll_scan *lll, struct pdu_adv *pdu_adv_rx,
radio_pkt_tx_set(pdu_tx);
/* assert if radio packet ptr is not set and radio started tx */
LL_ASSERT(!radio_is_ready());
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
lll_prof_latency_get());
} else {
LL_ASSERT(!radio_is_address());
}
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
lll_prof_cputime_capture();

View File

@@ -356,7 +356,8 @@ void lll_scan_aux_isr_aux_setup(void *param)
aux_start_us -= EVENT_JITTER_US;
start_us = radio_tmr_start_us(0, aux_start_us);
LL_ASSERT(start_us == (aux_start_us + 1U));
LL_ASSERT_MSG(start_us == (aux_start_us + 1U), "aux_offset %u us, start_us %u != %u",
aux_offset_us, start_us, (aux_start_us + 1U));
/* Setup header complete timeout */
hcto = start_us;