diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index 254c9e504..af20cc855 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -1553,8 +1553,8 @@ void MeshForwarder::AppendHeaderIe(const Message *aMessage, Mac::Frame &aFrame) { uint8_t index = 0; bool iePresent = false; - - OT_UNUSED_VARIABLE(aMessage); + bool payloadPresent = + (aFrame.GetType() == Mac::Frame::kFcfFrameMacCmd) || (aMessage != nullptr && aMessage->GetLength() != 0); #if OPENTHREAD_CONFIG_TIME_SYNC_ENABLE if (aMessage != nullptr && aMessage->IsTimeSync()) @@ -1571,8 +1571,9 @@ void MeshForwarder::AppendHeaderIe(const Message *aMessage, Mac::Frame &aFrame) } #endif - if (iePresent) + if (iePresent && payloadPresent) { + // Assume no Payload IE in current implementation IgnoreError(aFrame.AppendHeaderIeAt(index)); } }