diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index 1ed3d8da8..c21914ff2 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -329,7 +329,7 @@ void Mac::SetRxOnWhenIdle(bool aRxOnWhenIdle) { mTimer.Stop(); FinishOperation(); - PerformNextOperation(); + mOperationTask.Post(); } #if OPENTHREAD_CONFIG_STAY_AWAKE_BETWEEN_FRAGMENTS @@ -1232,14 +1232,20 @@ void Mac::HandleTimer(void) PerformNextOperation(); break; - default: #if OPENTHREAD_CONFIG_STAY_AWAKE_BETWEEN_FRAGMENTS - otLogDebgMac("Sleep delay timeout expired"); - mDelayingSleep = false; - UpdateIdleMode(); -#else - assert(false); + case kOperationIdle: + if (mDelayingSleep) + { + otLogDebgMac("Sleep delay timeout expired"); + mDelayingSleep = false; + UpdateIdleMode(); + } + + break; #endif + + default: + assert(false); break; } }