From 8fd8d1e0f968467ab986e43215e2aaec63b65bb6 Mon Sep 17 00:00:00 2001 From: rongli Date: Wed, 17 Apr 2019 01:28:14 +0800 Subject: [PATCH] [mle] enter fast poll mode when dequeue delayed MLE Data Request (#3761) --- src/core/thread/mle.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 0ed752d3b..f59920e38 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -1840,6 +1840,16 @@ void Mle::HandleDelayedResponseTimer(void) if (SendMessage(*message, delayedResponse.GetDestination()) == OT_ERROR_NONE) { LogMleMessage("Send delayed message", delayedResponse.GetDestination()); + + // Here enters fast poll mode, as for Rx-Off-when-idle device, the enqueued msg should + // be Mle Data Reqeuest. + // Note: Finer-grade check (e.g. message subtype) might be required when deciding whether + // or not enters fast poll mode fast poll mode if there are other type of delayed message + // for Rx-Off-when-idle device. + if (!IsRxOnWhenIdle()) + { + Get().SendFastPolls(DataPollManager::kDefaultFastPolls); + } } else {