From c38e2ee61a8851fca23f2f0d6cfe853ff168044e Mon Sep 17 00:00:00 2001 From: Vinayak Kariappa Chettimada Date: Mon, 30 Sep 2019 11:58:52 +0530 Subject: [PATCH] Bluetooth: controller: Fix refactored SWI regression Fix regression introduced in refactoring of use of SWI. Reduced use of SWI cannot be used in combination with CONFIG_BT_CTLR_LOW_LAT as additional SWI is required to split ticker WORKER and JOB contexts in order to disable JOB but keep WORKER enabled. Regression introduced in commit 78b461ae3eca ("Bluetooth: controller: Refactor use of SWI"). Signed-off-by: Vinayak Kariappa Chettimada --- .../bluetooth/controller/ll_sw/nordic/hal/nrf5/swi.h | 3 ++- subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c | 12 ++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/swi.h b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/swi.h index 1b8c084ea8f..0c107469700 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/swi.h +++ b/subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/swi.h @@ -17,7 +17,8 @@ static inline void hal_swi_init(void) #define HAL_SWI_RADIO_IRQ SWI4_IRQn #define HAL_SWI_WORKER_IRQ RTC0_IRQn -#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO) +#if !defined(CONFIG_BT_CTLR_LOW_LAT) && \ + (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO) #define HAL_SWI_JOB_IRQ HAL_SWI_WORKER_IRQ #else #define HAL_SWI_JOB_IRQ SWI5_IRQn diff --git a/subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c b/subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c index 66b9b323b0d..90d7a6a5bb1 100644 --- a/subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c +++ b/subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c @@ -90,7 +90,8 @@ static void rtc0_nrf5_isr(void *arg) mayfly_run(TICKER_USER_ID_ULL_HIGH); -#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO) +#if !defined(CONFIG_BT_CTLR_LOW_LAT) && \ + (CONFIG_BT_CTLR_ULL_HIGH_PRIO == CONFIG_BT_CTLR_ULL_LOW_PRIO) mayfly_run(TICKER_USER_ID_ULL_LOW); #endif @@ -106,7 +107,8 @@ static void swi_lll_nrf5_isr(void *arg) DEBUG_RADIO_ISR(0); } -#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO != CONFIG_BT_CTLR_ULL_LOW_PRIO) +#if defined(CONFIG_BT_CTLR_LOW_LAT) || \ + (CONFIG_BT_CTLR_ULL_HIGH_PRIO != CONFIG_BT_CTLR_ULL_LOW_PRIO) static void swi_ull_low_nrf5_isr(void *arg) { DEBUG_TICKER_JOB(1); @@ -161,7 +163,8 @@ int lll_init(void) rtc0_nrf5_isr, NULL, 0); IRQ_CONNECT(HAL_SWI_RADIO_IRQ, CONFIG_BT_CTLR_LLL_PRIO, swi_lll_nrf5_isr, NULL, 0); -#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO != CONFIG_BT_CTLR_ULL_LOW_PRIO) +#if defined(CONFIG_BT_CTLR_LOW_LAT) || \ + (CONFIG_BT_CTLR_ULL_HIGH_PRIO != CONFIG_BT_CTLR_ULL_LOW_PRIO) IRQ_CONNECT(HAL_SWI_JOB_IRQ, CONFIG_BT_CTLR_ULL_LOW_PRIO, swi_ull_low_nrf5_isr, NULL, 0); #endif @@ -170,7 +173,8 @@ int lll_init(void) irq_enable(RADIO_IRQn); irq_enable(RTC0_IRQn); irq_enable(HAL_SWI_RADIO_IRQ); -#if (CONFIG_BT_CTLR_ULL_HIGH_PRIO != CONFIG_BT_CTLR_ULL_LOW_PRIO) +#if defined(CONFIG_BT_CTLR_LOW_LAT) || \ + (CONFIG_BT_CTLR_ULL_HIGH_PRIO != CONFIG_BT_CTLR_ULL_LOW_PRIO) irq_enable(HAL_SWI_JOB_IRQ); #endif