@@ -236,6 +236,7 @@ static void nrf5_get_capabilities_at_boot(void)
236
236
((caps & NRF_802154_CAPABILITY_DELAYED_TX ) ? IEEE802154_HW_TXTIME : 0UL ) |
237
237
((caps & NRF_802154_CAPABILITY_DELAYED_RX ) ? IEEE802154_HW_RXTIME : 0UL ) |
238
238
IEEE802154_HW_SLEEP_TO_TX |
239
+ IEEE802154_RX_ON_WHEN_IDLE |
239
240
((caps & NRF_802154_CAPABILITY_SECURITY ) ? IEEE802154_HW_TX_SEC : 0UL )
240
241
#if defined(CONFIG_IEEE802154_NRF5_MULTIPLE_CCA )
241
242
| IEEE802154_OPENTHREAD_HW_MULTIPLE_CCA
@@ -987,6 +988,10 @@ static int nrf5_configure(const struct device *dev,
987
988
break ;
988
989
#endif /* CONFIG_IEEE802154_NRF5_MULTIPLE_CCA */
989
990
991
+ case IEEE802154_CONFIG_RX_ON_WHEN_IDLE :
992
+ nrf_802154_rx_on_when_idle_set (config -> rx_on_when_idle );
993
+ break ;
994
+
990
995
default :
991
996
return - EINVAL ;
992
997
}
@@ -1064,20 +1069,8 @@ void nrf_802154_receive_failed(nrf_802154_rx_error_t error, uint32_t id)
1064
1069
const struct device * dev = nrf5_get_device ();
1065
1070
1066
1071
#if defined(CONFIG_IEEE802154_CSL_ENDPOINT )
1067
- if (id == DRX_SLOT_RX ) {
1068
- __ASSERT_NO_MSG (nrf5_data .event_handler );
1069
- #if !defined(CONFIG_IEEE802154_CSL_DEBUG )
1070
- /* When CSL debug option is used we intentionally avoid notifying the higher layer
1071
- * about the finalization of a DRX slot, so that the radio stays in receive state
1072
- * for receiving "out of slot" frames.
1073
- * As a side effect, regular failure notifications would be reported with the
1074
- * incorrect ID.
1075
- */
1076
- nrf5_data .event_handler (dev , IEEE802154_EVENT_RX_OFF , NULL );
1077
- #endif
1078
- if (error == NRF_802154_RX_ERROR_DELAYED_TIMEOUT ) {
1079
- return ;
1080
- }
1072
+ if (id == DRX_SLOT_RX && error == NRF_802154_RX_ERROR_DELAYED_TIMEOUT ) {
1073
+ return ;
1081
1074
}
1082
1075
#else
1083
1076
ARG_UNUSED (id );
0 commit comments