From bbc6d0bc1cebbfedf18ebf9cb8a47cc73194b073 Mon Sep 17 00:00:00 2001 From: Li Cao Date: Fri, 1 Dec 2023 03:11:19 +0800 Subject: [PATCH] [link-metrics] add Subject status check when getting link metrics data (#9665) This commit adds a check when returning Link Metrics data collected by the Link Metrics manager so that only subjects in 'active' or 'renew' state will return the data. This is to avoid showing N/A results for neighbors that don't support being a Link Metrics Subject. Based on current implementation, a 'Subject' object is created when the device is trying to register a Link Metrics probing at its neighbor. If the neighbor device doesn't support being a Subject, the device won't get a LinkMetricsManagement response. During this period (before timeout), the 'Subject' object is in 'kConfiguring' state. So it's unnecessary to return any value for Subject in such states. --- src/core/utils/link_metrics_manager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/utils/link_metrics_manager.cpp b/src/core/utils/link_metrics_manager.cpp index bbdac1b5d..ecb990ddc 100644 --- a/src/core/utils/link_metrics_manager.cpp +++ b/src/core/utils/link_metrics_manager.cpp @@ -85,6 +85,7 @@ Error LinkMetricsManager::GetLinkMetricsValueByExtAddr(const Mac::ExtAddress subject = mSubjectList.FindMatching(aExtAddress); VerifyOrExit(subject != nullptr, error = kErrorNotFound); + VerifyOrExit(subject->mState == kActive || subject->mState == kRenewing, error = kErrorInvalidState); aMetricsValues.mLinkMarginValue = subject->mData.mLinkMargin; aMetricsValues.mRssiValue = subject->mData.mRssi;