Skip to content

Commit 4dbfb22

Browse files
cvinayakfabiobaltieri
authored andcommitted
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 <[email protected]>
1 parent 642d4be commit 4dbfb22

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -596,6 +596,7 @@ void radio_status_reset(void)
596596
* EVENT_* registers are not reset to save code and CPU time.
597597
*/
598598
nrf_radio_event_clear(NRF_RADIO, NRF_RADIO_EVENT_READY);
599+
nrf_radio_event_clear(NRF_RADIO, NRF_RADIO_EVENT_ADDRESS);
599600
nrf_radio_event_clear(NRF_RADIO, NRF_RADIO_EVENT_END);
600601
#if defined(CONFIG_BT_CTLR_DF_SUPPORT) && !defined(CONFIG_ZTEST)
601602
/* Clear it only for SoCs supporting DF extension */
@@ -616,6 +617,11 @@ uint32_t radio_is_ready(void)
616617
return (NRF_RADIO->EVENTS_READY != 0);
617618
}
618619

620+
uint32_t radio_is_address(void)
621+
{
622+
return (NRF_RADIO->EVENTS_ADDRESS != 0);
623+
}
624+
619625
#if defined(CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER)
620626
static uint32_t last_pdu_end_us;
621627

subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ void radio_disable(void);
8484

8585
void radio_status_reset(void);
8686
uint32_t radio_is_ready(void);
87+
uint32_t radio_is_address(void);
8788
uint32_t radio_is_done(void);
8889
uint32_t radio_has_disabled(void);
8990
uint32_t radio_is_idle(void);

subsys/bluetooth/controller/ll_sw/nordic/lll/lll_conn.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -397,10 +397,10 @@ void lll_conn_isr_rx(void *param)
397397

398398
/* assert if radio packet ptr is not set and radio started tx */
399399
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
400-
LL_ASSERT_MSG(!radio_is_ready(), "%s: Radio ISR latency: %u", __func__,
400+
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
401401
lll_prof_latency_get());
402402
} else {
403-
LL_ASSERT(!radio_is_ready());
403+
LL_ASSERT(!radio_is_address());
404404
}
405405

406406
lll_conn_isr_rx_exit:
@@ -576,10 +576,10 @@ void lll_conn_isr_tx(void *param)
576576

577577
/* assert if radio packet ptr is not set and radio started rx */
578578
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
579-
LL_ASSERT_MSG(!radio_is_ready(), "%s: Radio ISR latency: %u", __func__,
579+
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
580580
lll_prof_latency_get());
581581
} else {
582-
LL_ASSERT(!radio_is_ready());
582+
LL_ASSERT(!radio_is_address());
583583
}
584584

585585
#if defined(CONFIG_BT_CTLR_DF_CONN_CTE_TX)

0 commit comments

Comments
 (0)