diff --git a/src/core/mac/mac.cpp b/src/core/mac/mac.cpp
index ec6f791c0..21bc727c3 100644
--- a/src/core/mac/mac.cpp
+++ b/src/core/mac/mac.cpp
@@ -195,12 +195,11 @@ Mac::Mac(Instance &aInstance)
, mTxFrame(static_cast(otPlatRadioGetTransmitBuffer(&aInstance)))
, mOobFrame(NULL)
, mKeyIdMode2FrameCounter(0)
- , mCcaSuccessRateTracker()
, mCcaSampleCount(0)
, mEnabled(true)
{
GenerateExtAddress(&mExtAddress);
-
+ mCcaSuccessRateTracker.Reset();
memset(&mCounters, 0, sizeof(otMacCounters));
otPlatRadioEnable(&GetInstance());
diff --git a/src/core/thread/link_quality.cpp b/src/core/thread/link_quality.cpp
index 06675405c..c615b2c8c 100644
--- a/src/core/thread/link_quality.cpp
+++ b/src/core/thread/link_quality.cpp
@@ -140,18 +140,16 @@ exit:
return string;
}
-LinkQualityInfo::LinkQualityInfo(void)
- : mLastRss(OT_RADIO_RSSI_INVALID)
-{
- mRssAverager.Reset();
- SetLinkQuality(0);
-}
-
void LinkQualityInfo::Clear(void)
{
mRssAverager.Reset();
SetLinkQuality(0);
mLastRss = OT_RADIO_RSSI_INVALID;
+
+#if OPENTHREAD_CONFIG_ENABLE_TX_ERROR_RATE_TRACKING
+ mFrameErrorRate.Reset();
+ mMessageErrorRate.Reset();
+#endif
}
void LinkQualityInfo::AddRss(int8_t aNoiseFloor, int8_t aRss)
diff --git a/src/core/thread/link_quality.hpp b/src/core/thread/link_quality.hpp
index 0f905ed39..91a00c52d 100644
--- a/src/core/thread/link_quality.hpp
+++ b/src/core/thread/link_quality.hpp
@@ -67,17 +67,6 @@ public:
kMaxRateValue = 0xffff, ///< Indicates value corresponding to maximum (failure/success) rate of 100%.
};
- /**
- * This constructor initializes a `SuccessRateTracker` instance.
- *
- * After initialization the tracker starts with success rate 100% (failure rate 0%).
- *
- */
- SuccessRateTracker(void)
- : mFailureRate(0)
- {
- }
-
/**
* This method resets the tracker to its initialized state, setting success rate to 100%.
*
@@ -241,12 +230,6 @@ public:
*/
typedef String InfoString;
- /**
- * This constructor initializes the object.
- *
- */
- LinkQualityInfo(void);
-
/**
* This method clears the all the data in the object.
*
diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp
index cc7e9ac83..c93e466be 100644
--- a/src/core/thread/mle_router.cpp
+++ b/src/core/thread/mle_router.cpp
@@ -3504,6 +3504,7 @@ void MleRouter::RestoreChildren(void)
memset(child, 0, sizeof(*child));
child->SetExtAddress(*static_cast(&childInfo.mExtAddress));
+ child->GetLinkInfo().Clear();
child->SetRloc16(childInfo.mRloc16);
child->SetTimeout(childInfo.mTimeout);
child->SetDeviceMode(childInfo.mMode);
diff --git a/tests/unit/test_link_quality.cpp b/tests/unit/test_link_quality.cpp
index f9fa279e5..feeb73829 100644
--- a/tests/unit/test_link_quality.cpp
+++ b/tests/unit/test_link_quality.cpp
@@ -93,6 +93,7 @@ void TestLinkQualityData(RssTestData aRssData)
size_t i;
printf("- - - - - - - - - - - - - - - - - -\n");
+ linkInfo.Clear();
min = kMinRssValue;
max = kMaxRssValue;
@@ -387,6 +388,8 @@ void TestSuccessRateTracker(void)
printf("\nTesting SuccessRateTracker\n");
+ rateTracker.Reset();
+
VerifyOrQuit(rateTracker.GetSuccessRate() == kMaxRate, "SuccessRateTracker: Initial value incorrect");
VerifyOrQuit(rateTracker.GetFailureRate() == 0, "SuccessRateTracker: Initial value incorrect");