diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index 71634147da7..a48ddc93a16 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -2329,6 +2329,8 @@ void Mac::ProcessCsl(const RxFrame &aFrame, const Address &aSrcAddr) VerifyOrExit(child != nullptr); csl = reinterpret_cast(cur + sizeof(HeaderIe)); + VerifyOrExit(csl->GetPeriod() >= kMinCslIePeriod); + child->SetCslPeriod(csl->GetPeriod()); child->SetCslPhase(csl->GetPhase()); child->SetCslSynchronized(true); diff --git a/src/core/mac/mac.hpp b/src/core/mac/mac.hpp index 8e218553fce..e14d436c845 100644 --- a/src/core/mac/mac.hpp +++ b/src/core/mac/mac.hpp @@ -73,7 +73,7 @@ namespace Mac { constexpr uint32_t kDataPollTimeout = OPENTHREAD_CONFIG_MAC_DATA_POLL_TIMEOUT; ///< Timeout for receiving Data Frame (in msec). -constexpr uint32_t kSleepDelay = 300; ///< Max sleep delay when frame is pending (in msec) +constexpr uint32_t kSleepDelay = 300; ///< Max sleep delay when frame is pending (in msec). constexpr uint16_t kScanDurationDefault = OPENTHREAD_CONFIG_MAC_SCAN_DURATION; ///< Duration per channel (in msec). @@ -87,6 +87,8 @@ constexpr uint8_t kMaxFrameRetriesCsl = 0; constexpr uint8_t kTxNumBcast = OPENTHREAD_CONFIG_MAC_TX_NUM_BCAST; ///< Num of times broadcast frame is tx. +constexpr uint16_t kMinCslIePeriod = OPENTHREAD_CONFIG_MAC_CSL_MIN_PERIOD; + /** * Defines the function pointer called on receiving an IEEE 802.15.4 Beacon during an Active Scan. *