Effect of NRF_RADIO->POWER

Hello.

I have a setup in which two nrf52840_dk boards are communicating through BLE.
I'm using Zephyr 4.1.99.

Under heavy traffic. the board which holds the 'central' role suffered a situation in which the radio_nrf5_isr (defined in subsys/bluetooth/controller/ll_sw/nordic/lll/lll.c) stopped firing indefinitely,
which caused the BLE to disconnect.

After reading https://devzone.nordicsemi.com/f/nordic-q-a/76946/nrf52840-proprietary-radio-stops-receiving-after-some-data/319189 and other pages,
I've added the following code in the radio_reset function, which is defined in subsys/bluetooth/controller/ll_sw/nordic/hal/nrf5/radio/radio.c, line 198:

NRF_RADIO->POWER = (RADIO_POWER_POWER_Disabled << RADIO_POWER_POWER_Pos);
__DSB(); __ISB();
NRF_RADIO->POWER = (RADIO_POWER_POWER_Enabled << RADIO_POWER_POWER_Pos);

The radio_reset function is called from swi_lll_nrf5_isr (also defined in lll.c).

This code solved the issue without harming the throughput.

My questions are:
1. Is this solution considered a reasonable one?
    On the register description https://docs.nordicsemi.com/bundle/ps_nrf52840/page/radio.html#register.POWER,
    it says that these first line actually turns off power to the radio peripheral, which seems odd doing ~80 times per second.
    On the other hand, in RADIO Power Control for Register reset it says that "The Softdevice will power off the
    RADIO peripheral after every connection interval is finished, to ensure it starts from a known position on the next
    connection interval it should handle"

2. Is this problem specific to the nrf52840, or a more common problem in nrf devices?

Thanks

Related