From 7b6ed715497cd10b0fa8e3fc49da454194afc784 Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Mon, 10 Aug 2026 23:37:26 -0700 Subject: [PATCH] [sub-mac] simplify CSL debug check handling (#13479) This commit simplifies and improves the readability of CSL debug checks in `SubMac`. 1. Improved Readability: Avoids placing primary operational code under negative preprocessor (`#if !OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE`). Instead, uses an early exit (`ExitNow()`) when the debug condition is enabled, keeping normal execution flow uncluttered. 2. Evaluates `MAC_CSL_DEBUG_ENABLE` only when CSL Receiver is enabled (`OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE`). If CSL Receiver support is disabled, `MAC_CSL_DEBUG_ENABLE` automatically becomes a safe no-op. --- src/core/mac/sub_mac.cpp | 32 ++++++++++++++++++--------- src/core/mac/sub_mac.hpp | 4 ---- src/core/mac/sub_mac_csl_receiver.cpp | 2 +- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/core/mac/sub_mac.cpp b/src/core/mac/sub_mac.cpp index 6e0c11bad..e8169f8f3 100644 --- a/src/core/mac/sub_mac.cpp +++ b/src/core/mac/sub_mac.cpp @@ -163,14 +163,18 @@ void SubMac::SetRxOnWhenIdle(bool aRxOnWhenIdle) { mRxOnWhenIdle = aRxOnWhenIdle; - if (RadioSupports(kCapRxOnWhenIdle)) - { -#if !OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE - Get().SetRxOnWhenIdle(mRxOnWhenIdle); -#endif - } + LogDebg("RxOnWhenIdle: %u", mRxOnWhenIdle); - LogDebg("RxOnWhenIdle: %d", mRxOnWhenIdle); +#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE + // Keep radio rx-on-when-idle enabled for debugging when `MAC_CSL_DEBUG_ENABLE`. + ExitNow(); +#endif + + VerifyOrExit(RadioSupports(kCapRxOnWhenIdle)); + Get().SetRxOnWhenIdle(mRxOnWhenIdle); + +exit: + return; } Error SubMac::Enable(void) @@ -981,12 +985,15 @@ void SubMac::RadioSample(void) ExitNow(); } -#if !OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE +#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE + // Don't sleep for debugging when `MAC_CSL_DEBUG_ENABLE`. + ExitNow(); +#endif + if (!RadioSupports(kCapRxOnWhenIdle)) { IgnoreError(Get().Sleep()); } -#endif exit: return; @@ -1056,10 +1063,13 @@ void SubMac::UpdateRadioSampleState(void) } #endif -#if !OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE - IgnoreError(Get().Sleep()); // Don't actually sleep for debugging +#if OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE && OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE + // Don't sleep for debugging when `MAC_CSL_DEBUG_ENABLE`. + ExitNow(); #endif + IgnoreError(Get().Sleep()); + exit: return; } diff --git a/src/core/mac/sub_mac.hpp b/src/core/mac/sub_mac.hpp index b728e4ccf..d3a286780 100644 --- a/src/core/mac/sub_mac.hpp +++ b/src/core/mac/sub_mac.hpp @@ -91,10 +91,6 @@ namespace Mac { #endif -#if OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE && !OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE -#error "OPENTHREAD_CONFIG_MAC_CSL_RECEIVER_ENABLE is required for OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE." -#endif - //---------------------------------------------------------------------------------------------------------------------- #if OPENTHREAD_RADIO || OPENTHREAD_CONFIG_LINK_RAW_ENABLE diff --git a/src/core/mac/sub_mac_csl_receiver.cpp b/src/core/mac/sub_mac_csl_receiver.cpp index 9a3643806..d165e3d51 100644 --- a/src/core/mac/sub_mac_csl_receiver.cpp +++ b/src/core/mac/sub_mac_csl_receiver.cpp @@ -360,7 +360,7 @@ void SubMac::LogReceived(RxFrame *aFrame) exit: return; } -#endif +#endif // OPENTHREAD_CONFIG_MAC_CSL_DEBUG_ENABLE } // namespace Mac } // namespace ot