From d91ecc5cdd4d75423281e7fc3fe70282fb246f2f Mon Sep 17 00:00:00 2001 From: Lorenzo Rai Date: Wed, 28 Jun 2023 16:42:27 +0200 Subject: [PATCH] [message] remove child mask from message metadata in MTD (#9213) Saves a few bytes in MTD message metadata since they don't need the child mask. --- src/core/common/message.cpp | 2 ++ src/core/common/message.hpp | 4 ++++ src/core/thread/mesh_forwarder.cpp | 4 ++++ 3 files changed, 10 insertions(+) diff --git a/src/core/common/message.cpp b/src/core/common/message.cpp index e7727e21f..1ffc7215c 100644 --- a/src/core/common/message.cpp +++ b/src/core/common/message.cpp @@ -785,6 +785,7 @@ exit: return messageCopy; } +#if OPENTHREAD_FTD bool Message::GetChildMask(uint16_t aChildIndex) const { return GetMetadata().mChildMask.Get(aChildIndex); } void Message::ClearChildMask(uint16_t aChildIndex) { GetMetadata().mChildMask.Set(aChildIndex, false); } @@ -792,6 +793,7 @@ void Message::ClearChildMask(uint16_t aChildIndex) { GetMetadata().mChildMask.Se void Message::SetChildMask(uint16_t aChildIndex) { GetMetadata().mChildMask.Set(aChildIndex, true); } bool Message::IsChildPending(void) const { return GetMetadata().mChildMask.HasAny(); } +#endif void Message::SetLinkInfo(const ThreadLinkInfo &aLinkInfo) { diff --git a/src/core/common/message.hpp b/src/core/common/message.hpp index a40cb0503..d40bf08a2 100644 --- a/src/core/common/message.hpp +++ b/src/core/common/message.hpp @@ -203,7 +203,9 @@ protected: #if OPENTHREAD_CONFIG_MLE_LINK_METRICS_SUBJECT_ENABLE LqiAverager mLqiAverager; // The averager maintaining the Link quality indicator (LQI) average. #endif +#if OPENTHREAD_FTD ChildMask mChildMask; // ChildMask to indicate which sleepy children need to receive this. +#endif uint8_t mType : 3; // The message type. uint8_t mSubType : 4; // The message sub type. @@ -940,6 +942,7 @@ public: */ void SetDatagramTag(uint32_t aTag) { GetMetadata().mDatagramTag = aTag; } +#if OPENTHREAD_FTD /** * Returns whether or not the message forwarding is scheduled for the child. * @@ -975,6 +978,7 @@ public: * */ bool IsChildPending(void) const; +#endif // OPENTHREAD_FTD /** * Returns the RLOC16 of the mesh destination. diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index 8b799f6aa..0b07174c0 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -1268,7 +1268,11 @@ exit: void MeshForwarder::RemoveMessageIfNoPendingTx(Message &aMessage) { +#if OPENTHREAD_FTD VerifyOrExit(!aMessage.IsDirectTransmission() && !aMessage.IsChildPending()); +#else + VerifyOrExit(!aMessage.IsDirectTransmission()); +#endif if (mSendMessage == &aMessage) {