[mle] avoid sending challenge when child is valid (#2129)

This commit optimizes the parent-initiated MLE Child Update Request when
the child is already valid by omitting the Challenge and TLV Request TLVs.
This commit is contained in:
Jonathan Hui
2017-08-24 14:03:03 -07:00
committed by GitHub
parent d4e6b8302e
commit 1e3f3d1830
+6 -4
View File
@@ -2839,11 +2839,13 @@ otError MleRouter::SendChildUpdateRequest(Child *aChild)
SuccessOrExit(error = AppendNetworkData(*message, !aChild->IsFullNetworkData()));
SuccessOrExit(error = AppendActiveTimestamp(*message));
SuccessOrExit(error = AppendPendingTimestamp(*message));
SuccessOrExit(error = AppendTlvRequest(*message, tlvs, sizeof(tlvs)));
aChild->GenerateChallenge();
SuccessOrExit(error = AppendChallenge(*message, aChild->GetChallenge(), aChild->GetChallengeSize()));
if (aChild->GetState() != Neighbor::kStateValid)
{
SuccessOrExit(error = AppendTlvRequest(*message, tlvs, sizeof(tlvs)));
aChild->GenerateChallenge();
SuccessOrExit(error = AppendChallenge(*message, aChild->GetChallenge(), aChild->GetChallengeSize()));
}
memset(&destination, 0, sizeof(destination));
destination.mFields.m16[0] = HostSwap16(0xfe80);