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:
parent
642d4be940
commit
4dbfb22a7e
3 changed files with 11 additions and 4 deletions
|
@ -596,6 +596,7 @@ void radio_status_reset(void)
|
|||
* EVENT_* registers are not reset to save code and CPU time.
|
||||
*/
|
||||
nrf_radio_event_clear(NRF_RADIO, NRF_RADIO_EVENT_READY);
|
||||
nrf_radio_event_clear(NRF_RADIO, NRF_RADIO_EVENT_ADDRESS);
|
||||
nrf_radio_event_clear(NRF_RADIO, NRF_RADIO_EVENT_END);
|
||||
#if defined(CONFIG_BT_CTLR_DF_SUPPORT) && !defined(CONFIG_ZTEST)
|
||||
/* Clear it only for SoCs supporting DF extension */
|
||||
|
@ -616,6 +617,11 @@ uint32_t radio_is_ready(void)
|
|||
return (NRF_RADIO->EVENTS_READY != 0);
|
||||
}
|
||||
|
||||
uint32_t radio_is_address(void)
|
||||
{
|
||||
return (NRF_RADIO->EVENTS_ADDRESS != 0);
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_SW_SWITCH_SINGLE_TIMER)
|
||||
static uint32_t last_pdu_end_us;
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ void radio_disable(void);
|
|||
|
||||
void radio_status_reset(void);
|
||||
uint32_t radio_is_ready(void);
|
||||
uint32_t radio_is_address(void);
|
||||
uint32_t radio_is_done(void);
|
||||
uint32_t radio_has_disabled(void);
|
||||
uint32_t radio_is_idle(void);
|
||||
|
|
|
@ -397,10 +397,10 @@ void lll_conn_isr_rx(void *param)
|
|||
|
||||
/* assert if radio packet ptr is not set and radio started tx */
|
||||
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
|
||||
LL_ASSERT_MSG(!radio_is_ready(), "%s: Radio ISR latency: %u", __func__,
|
||||
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
|
||||
lll_prof_latency_get());
|
||||
} else {
|
||||
LL_ASSERT(!radio_is_ready());
|
||||
LL_ASSERT(!radio_is_address());
|
||||
}
|
||||
|
||||
lll_conn_isr_rx_exit:
|
||||
|
@ -576,10 +576,10 @@ void lll_conn_isr_tx(void *param)
|
|||
|
||||
/* assert if radio packet ptr is not set and radio started rx */
|
||||
if (IS_ENABLED(CONFIG_BT_CTLR_PROFILE_ISR)) {
|
||||
LL_ASSERT_MSG(!radio_is_ready(), "%s: Radio ISR latency: %u", __func__,
|
||||
LL_ASSERT_MSG(!radio_is_address(), "%s: Radio ISR latency: %u", __func__,
|
||||
lll_prof_latency_get());
|
||||
} else {
|
||||
LL_ASSERT(!radio_is_ready());
|
||||
LL_ASSERT(!radio_is_address());
|
||||
}
|
||||
|
||||
#if defined(CONFIG_BT_CTLR_DF_CONN_CTE_TX)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue