[mesh-forwarder] update and simplify Counters tracking (#11419)

This commit is contained in:
Abtin Keshavarzian
2025-04-17 11:39:03 -06:00
committed by GitHub
parent 2918437bb8
commit 3efe1c2c41
3 changed files with 48 additions and 36 deletions
+1 -11
View File
@@ -516,17 +516,7 @@ void IndirectSender::HandleSentFrameToChild(const Mac::TxFrame &aFrame,
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessageTransmit, *message, txError, &macDest);
}
if (message->GetType() == Message::kTypeIp6)
{
if (aChild.GetIndirectTxSuccess())
{
Get<MeshForwarder>().mIpCounters.mTxSuccess++;
}
else
{
Get<MeshForwarder>().mIpCounters.mTxFailure++;
}
}
Get<MeshForwarder>().mCounters.UpdateOnTxDone(*message, aChild.GetIndirectTxSuccess());
if (message->GetIndirectTxChildMask().Has(childIndex))
{
+28 -22
View File
@@ -90,6 +90,30 @@ void ThreadLinkInfo::SetFrom(const Mac::RxFrame &aFrame)
#endif
}
void MeshForwarder::Counters::UpdateOnTxDone(const Message &aMessage, bool aTxSuccess)
{
if (aMessage.GetType() == Message::kTypeIp6)
{
aTxSuccess ? mTxSuccess++ : mTxFailure++;
}
}
void MeshForwarder::Counters::UpdateOnRx(const Message &aMessage)
{
if (aMessage.GetType() == Message::kTypeIp6)
{
mRxSuccess++;
}
}
void MeshForwarder::Counters::UpdateOnDrop(const Message &aMessage)
{
if (aMessage.GetType() == Message::kTypeIp6)
{
mRxFailure++;
}
}
MeshForwarder::MeshForwarder(Instance &aInstance)
: InstanceLocator(aInstance)
, mMessageNextOffset(0)
@@ -112,8 +136,6 @@ MeshForwarder::MeshForwarder(Instance &aInstance)
{
mFragTag = Random::NonCrypto::GetUint16();
ResetCounters();
#if OPENTHREAD_CONFIG_TX_QUEUE_STATISTICS_ENABLE
mTxQueueStats.Clear();
#endif
@@ -1303,10 +1325,7 @@ void MeshForwarder::FinalizeMessageDirectTx(Message &aMessage, Error aError)
aMessage.SetTxSuccess(false);
}
if (aMessage.GetType() == Message::kTypeIp6)
{
aMessage.GetTxSuccess() ? mIpCounters.mTxSuccess++ : mIpCounters.mTxFailure++;
}
mCounters.UpdateOnTxDone(aMessage, aMessage.GetTxSuccess());
if (aMessage.IsMleCommand(Mle::kCommandDiscoveryRequest))
{
@@ -1561,12 +1580,7 @@ void MeshForwarder::ClearReassemblyList(void)
for (Message &message : mReassemblyList)
{
LogMessage(kMessageReassemblyDrop, message, kErrorNoFrameReceived);
if (message.GetType() == Message::kTypeIp6)
{
mIpCounters.mRxFailure++;
}
mCounters.UpdateOnDrop(message);
mReassemblyList.DequeueAndFree(message);
}
}
@@ -1596,12 +1610,7 @@ bool MeshForwarder::UpdateReassemblyList(void)
if (now - message.GetTimestamp() >= TimeMilli::SecToMsec(kReassemblyTimeout))
{
LogMessage(kMessageReassemblyDrop, message, kErrorReassemblyTimeout);
if (message.GetType() == Message::kTypeIp6)
{
mIpCounters.mRxFailure++;
}
mCounters.UpdateOnDrop(message);
mReassemblyList.DequeueAndFree(message);
}
}
@@ -1669,10 +1678,7 @@ Error MeshForwarder::HandleDatagram(Message &aMessage, const Mac::Address &aMacS
LogMessage(kMessageReceive, aMessage, kErrorNone, &aMacSource);
if (aMessage.GetType() == Message::kTypeIp6)
{
mIpCounters.mRxSuccess++;
}
mCounters.UpdateOnRx(aMessage);
aMessage.SetLoopbackToHostAllowed(true);
aMessage.SetOrigin(Message::kOriginThreadNetif);
+19 -3
View File
@@ -163,6 +163,22 @@ class MeshForwarder : public InstanceLocator, private NonCopyable
friend class TimeTicker;
public:
/**
* Represents the IPv6 message counters, tracking the number IPv6 message TX and RX that succeeded or failed.
*/
class Counters : public otIpCounters, public Clearable<Counters>
{
friend class MeshForwarder;
friend class IndirectSender;
private:
Counters(void) { Clear(); }
void UpdateOnTxDone(const Message &aMessage, bool aTxSuccess);
void UpdateOnRx(const Message &aMessage);
void UpdateOnDrop(const Message &aMessage);
};
/**
* Initializes the object.
*
@@ -269,12 +285,12 @@ public:
*
* @returns A reference to the IP level counters.
*/
const otIpCounters &GetCounters(void) const { return mIpCounters; }
const Counters &GetCounters(void) const { return mCounters; }
/**
* Resets the IP level counters.
*/
void ResetCounters(void) { ClearAllBytes(mIpCounters); }
void ResetCounters(void) { mCounters.Clear(); }
#if OPENTHREAD_CONFIG_TX_QUEUE_STATISTICS_ENABLE
/**
@@ -642,7 +658,7 @@ private:
TxTask mScheduleTransmissionTask;
otIpCounters mIpCounters;
Counters mCounters;
#if OPENTHREAD_FTD || OPENTHREAD_CONFIG_MAC_CSL_TRANSMITTER_ENABLE
IndirectSender mIndirectSender;