diff --git a/src/core/mac/sub_mac.cpp b/src/core/mac/sub_mac.cpp index dcd0f444b..94916f6d7 100644 --- a/src/core/mac/sub_mac.cpp +++ b/src/core/mac/sub_mac.cpp @@ -396,12 +396,13 @@ void SubMac::StartCsmaBackoff(void) { static constexpr uint32_t kAheadTime = kCcaSampleInterval + kCslTransmitTimeAhead + kRadioHeaderShrDuration; Time txStartTime = Time(mTransmitFrame.mInfo.mTxInfo.mTxDelayBaseTime); + Time radioNow = Time(static_cast(otPlatRadioGetNow(&GetInstance()))); txStartTime += (mTransmitFrame.mInfo.mTxInfo.mTxDelay - kAheadTime); - if (Time(static_cast(otPlatRadioGetNow(&GetInstance()))) < txStartTime) + if (radioNow < txStartTime) { - mTimer.FireAt(txStartTime); + StartTimer(txStartTime - radioNow); } else // Transmit without delay {