Update short/extended address logic when adding src match table (#1499)

This commit is contained in:
rongli
2017-03-22 18:03:09 -07:00
committed by Jonathan Hui
parent 492bf1a409
commit e01e3c505e
2 changed files with 12 additions and 12 deletions
+7 -10
View File
@@ -1719,6 +1719,13 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame, ThreadError aError)
{
child->mIndirectSendInfo.mFragmentOffset = 0;
child->mIndirectSendInfo.mMessage = NULL;
// add short address for subsequent indirect messages after
// one indirect message to valid sleepy devices is sent out successfully
if (aError == kThreadError_None)
{
SetSrcMatchAsShort(*child, true);
}
}
childIndex = mNetif.GetMle().GetChildIndex(*child);
@@ -1841,7 +1848,6 @@ void MeshForwarder::HandleReceivedFrame(Mac::Frame &aFrame)
uint8_t *payload;
uint8_t payloadLength;
uint8_t commandId;
Child *child = NULL;
ThreadError error = kThreadError_None;
if (!mEnabled)
@@ -1854,15 +1860,6 @@ void MeshForwarder::HandleReceivedFrame(Mac::Frame &aFrame)
SuccessOrExit(error = aFrame.GetSrcAddr(macSource));
SuccessOrExit(aFrame.GetDstAddr(macDest));
if ((child = mNetif.GetMle().GetChild(macSource)) != NULL)
{
if (((child->mMode & Mle::ModeTlv::kModeRxOnWhenIdle) == 0) &&
macSource.mLength == sizeof(otShortAddress))
{
SetSrcMatchAsShort(*child, true);
}
}
aFrame.GetSrcPanId(messageInfo.mPanId);
messageInfo.mChannel = aFrame.GetChannel();
messageInfo.mRss = aFrame.GetPower();
+5 -2
View File
@@ -2270,7 +2270,6 @@ ThreadError MleRouter::HandleChildUpdateRequest(const Message &aMessage, const I
}
child->mLastHeard = Timer::GetNow();
mNetif.GetMeshForwarder().SetSrcMatchAsShort(*child, true);
SendChildUpdateResponse(child, aMessageInfo, tlvs, tlvslength, &challenge);
@@ -2361,7 +2360,6 @@ ThreadError MleRouter::HandleChildUpdateResponse(const Message &aMessage, const
child->mLastHeard = Timer::GetNow();
child->mKeySequence = aKeySequence;
child->mLinkInfo.AddRss(mNetif.GetMac().GetNoiseFloor(), threadMessageInfo->mRss);
mNetif.GetMeshForwarder().SetSrcMatchAsShort(*child, true);
exit:
return error;
@@ -2689,6 +2687,11 @@ ThreadError MleRouter::SendChildIdResponse(Child *aChild)
SuccessOrExit(error = AppendChildAddresses(*message, *aChild));
}
if ((aChild->mMode & ModeTlv::kModeRxOnWhenIdle) == 0)
{
mNetif.GetMeshForwarder().SetSrcMatchAsShort(*aChild, false);
}
SetChildStateToValid(aChild);
memset(&destination, 0, sizeof(destination));