diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp index d759dbf8f..9dcfccea4 100644 --- a/src/core/mac/mac.cpp +++ b/src/core/mac/mac.cpp @@ -1852,7 +1852,8 @@ void Mac::HandleReceivedFrame(RxFrame *aFrame, Error aError) Address dstaddr; PanId panid; Neighbor *neighbor; - Error error = aError; + Error error = aError; + bool isFrameValidated = false; mCounters.mRxTotal++; @@ -1864,6 +1865,8 @@ void Mac::HandleReceivedFrame(RxFrame *aFrame, Error aError) // the buffer received from the radio. SuccessOrExit(error = aFrame->ValidatePsdu()); + isFrameValidated = true; + IgnoreError(aFrame->GetSrcAddr(srcaddr)); IgnoreError(aFrame->GetDstAddr(dstaddr)); neighbor = !srcaddr.IsNone() ? Get().FindNeighbor(srcaddr) : nullptr; @@ -2099,7 +2102,7 @@ exit: if (error != kErrorNone) { - LogFrameRxFailure(aFrame, error); + LogFrameRxFailure(isFrameValidated ? aFrame : nullptr, error); switch (error) {