diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 76a397fdd..34cfaf904 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -1791,8 +1791,7 @@ Error Mle::SendChildIdRequest(void) VerifyOrExit((message = NewMleMessage(kCommandChildIdRequest)) != nullptr, error = kErrorNoBufs); SuccessOrExit(error = message->AppendResponseTlv(mParentCandidate.mRxChallenge)); - SuccessOrExit(error = message->AppendLinkFrameCounterTlv()); - SuccessOrExit(error = message->AppendMleFrameCounterTlv()); + SuccessOrExit(error = message->AppendLinkAndMleFrameCounterTlvs()); SuccessOrExit(error = message->AppendModeTlv(mDeviceMode)); SuccessOrExit(error = message->AppendTimeoutTlv(mTimeout)); SuccessOrExit(error = message->AppendVersionTlv()); @@ -4513,6 +4512,17 @@ Error Mle::TxMessage::AppendMleFrameCounterTlv(void) return Tlv::Append(*this, Get().GetMleFrameCounter()); } +Error Mle::TxMessage::AppendLinkAndMleFrameCounterTlvs(void) +{ + Error error; + + SuccessOrExit(error = AppendLinkFrameCounterTlv()); + error = AppendMleFrameCounterTlv(); + +exit: + return error; +} + Error Mle::TxMessage::AppendAddress16Tlv(uint16_t aRloc16) { return Tlv::Append(*this, aRloc16); } Error Mle::TxMessage::AppendLeaderDataTlv(void) diff --git a/src/core/thread/mle.hpp b/src/core/thread/mle.hpp index a13c5f594..ad1b5b448 100644 --- a/src/core/thread/mle.hpp +++ b/src/core/thread/mle.hpp @@ -1011,6 +1011,7 @@ private: Error AppendResponseTlv(const RxChallenge &aResponse); Error AppendLinkFrameCounterTlv(void); Error AppendMleFrameCounterTlv(void); + Error AppendLinkAndMleFrameCounterTlvs(void); Error AppendAddress16Tlv(uint16_t aRloc16); Error AppendNetworkDataTlv(NetworkData::Type aType); Error AppendTlvRequestTlv(const uint8_t *aTlvs, uint8_t aTlvsLength); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 7c12d8133..73e5e1563 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -786,8 +786,7 @@ Error MleRouter::SendLinkAccept(const RxInfo &aRxInfo, SuccessOrExit(error = message->AppendVersionTlv()); SuccessOrExit(error = message->AppendSourceAddressTlv()); SuccessOrExit(error = message->AppendResponseTlv(aChallenge)); - SuccessOrExit(error = message->AppendLinkFrameCounterTlv()); - SuccessOrExit(error = message->AppendMleFrameCounterTlv()); + SuccessOrExit(error = message->AppendLinkAndMleFrameCounterTlvs()); linkMargin = Get().ComputeLinkMargin(aRxInfo.mMessage.GetAverageRss()); SuccessOrExit(error = message->AppendLinkMarginTlv(linkMargin)); @@ -1698,8 +1697,7 @@ void MleRouter::SendParentResponse(Child *aChild, const RxChallenge &aChallenge, SuccessOrExit(error = message->AppendSourceAddressTlv()); SuccessOrExit(error = message->AppendLeaderDataTlv()); - SuccessOrExit(error = message->AppendLinkFrameCounterTlv()); - SuccessOrExit(error = message->AppendMleFrameCounterTlv()); + SuccessOrExit(error = message->AppendLinkAndMleFrameCounterTlvs()); SuccessOrExit(error = message->AppendResponseTlv(aChallenge)); #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE if (aChild->IsTimeSyncEnabled())