Skip to content

Commit 35a7ab0

Browse files
authored
swss: Fix Invalid port oid messages generated because of voq counters. (sonic-net#2653)
* swss: Fix Invalid port oid messages generated because of voq counters. * Do not add Voq oids to CounterCheckOrch since CounterCheckOrch is not relevant for voqs.
1 parent baa302e commit 35a7ab0

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

orchagent/portsorch.cpp

+20-5
Original file line numberDiff line numberDiff line change
@@ -6169,6 +6169,10 @@ void PortsOrch::generateQueueMapPerPort(const Port& port, FlexCounterQueueStates
61696169
queueVector.emplace_back(name.str(), id);
61706170
if (voq)
61716171
{
6172+
// Install a flex counter for this voq to track stats. Voq counters do
6173+
// not have buffer queue config. So it does not get enabled through the
6174+
// flexcounter orch logic. Always enabled voq counters.
6175+
addQueueFlexCountersPerPortPerQueueIndex(port, queueIndex, true);
61726176
queuePortVector.emplace_back(id, sai_serialize_object_id(port.m_system_port_oid));
61736177
}
61746178
else
@@ -6184,12 +6188,12 @@ void PortsOrch::generateQueueMapPerPort(const Port& port, FlexCounterQueueStates
61846188
else
61856189
{
61866190
m_queueTable->set("", queueVector);
6191+
CounterCheckOrch::getInstance().addPort(port);
61876192
}
61886193
m_queuePortTable->set("", queuePortVector);
61896194
m_queueIndexTable->set("", queueIndexVector);
61906195
m_queueTypeTable->set("", queueTypeVector);
61916196

6192-
CounterCheckOrch::getInstance().addPort(port);
61936197
}
61946198

61956199
void PortsOrch::addQueueFlexCounters(map<string, FlexCounterQueueStates> queuesStateVector)
@@ -6230,19 +6234,30 @@ void PortsOrch::addQueueFlexCountersPerPort(const Port& port, FlexCounterQueueSt
62306234
continue;
62316235
}
62326236
// Install a flex counter for this queue to track stats
6233-
addQueueFlexCountersPerPortPerQueueIndex(port, queueIndex);
6237+
addQueueFlexCountersPerPortPerQueueIndex(port, queueIndex, false);
62346238
}
62356239
}
62366240
}
62376241

6238-
void PortsOrch::addQueueFlexCountersPerPortPerQueueIndex(const Port& port, size_t queueIndex)
6242+
void PortsOrch::addQueueFlexCountersPerPortPerQueueIndex(const Port& port, size_t queueIndex, bool voq)
62396243
{
62406244
std::unordered_set<string> counter_stats;
6245+
std::vector<sai_object_id_t> queue_ids;
6246+
62416247
for (const auto& it: queue_stat_ids)
62426248
{
62436249
counter_stats.emplace(sai_serialize_queue_stat(it));
62446250
}
6245-
queue_stat_manager.setCounterIdList(port.m_queue_ids[queueIndex], CounterType::QUEUE, counter_stats);
6251+
if (voq)
6252+
{
6253+
queue_ids = m_port_voq_ids[port.m_alias];
6254+
}
6255+
else
6256+
{
6257+
queue_ids = port.m_queue_ids;
6258+
}
6259+
6260+
queue_stat_manager.setCounterIdList(queue_ids[queueIndex], CounterType::QUEUE, counter_stats);
62466261
}
62476262

62486263

@@ -6350,7 +6365,7 @@ void PortsOrch::createPortBufferQueueCounters(const Port &port, string queues)
63506365
if (flexCounterOrch->getQueueCountersState())
63516366
{
63526367
// Install a flex counter for this queue to track stats
6353-
addQueueFlexCountersPerPortPerQueueIndex(port, queueIndex);
6368+
addQueueFlexCountersPerPortPerQueueIndex(port, queueIndex, false);
63546369
}
63556370
if (flexCounterOrch->getQueueWatermarkCountersState())
63566371
{

orchagent/portsorch.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ class PortsOrch : public Orch, public Subject
387387
void generateQueueMapPerPort(const Port& port, FlexCounterQueueStates& queuesState, bool voq);
388388
bool m_isQueueFlexCountersAdded = false;
389389
void addQueueFlexCountersPerPort(const Port& port, FlexCounterQueueStates& queuesState);
390-
void addQueueFlexCountersPerPortPerQueueIndex(const Port& port, size_t queueIndex);
390+
void addQueueFlexCountersPerPortPerQueueIndex(const Port& port, size_t queueIndex, bool voq);
391391

392392
bool m_isQueueWatermarkFlexCountersAdded = false;
393393
void addQueueWatermarkFlexCountersPerPort(const Port& port, FlexCounterQueueStates& queuesState);

0 commit comments

Comments
 (0)