Skip to content

Commit a45c7b5

Browse files
mykolafqiluo-msft
authored andcommitted
[watermark] fix watermark clear not working for PG (sonic-net#729)
1 parent 25d16b3 commit a45c7b5

File tree

1 file changed

+44
-39
lines changed

1 file changed

+44
-39
lines changed

orchagent/watermarkorch.cpp

+44-39
Original file line numberDiff line numberDiff line change
@@ -107,41 +107,50 @@ void WatermarkOrch::doTask(NotificationConsumer &consumer)
107107

108108
consumer.pop(op, data, values);
109109

110-
if(&consumer == m_clearNotificationConsumer){
111-
string wm_name = "";
112-
vector<sai_object_id_t> &obj_ids = m_pg_ids;
113-
if(data == CLEAR_PG_HEADROOM_REQUEST)
114-
{
115-
wm_name = "SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES";
116-
obj_ids = m_pg_ids;
117-
}
118-
else if(data == CLEAR_PG_SHARED_REQUEST)
119-
{
120-
wm_name = "SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES";
121-
obj_ids = m_pg_ids;
122-
}
123-
else if(data == CLEAR_QUEUE_SHARED_UNI_REQUEST)
124-
{
125-
wm_name = "SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES";
126-
obj_ids = m_unicast_queue_ids;
127-
}
128-
else if(data == CLEAR_QUEUE_SHARED_MULTI_REQUEST)
129-
{
130-
wm_name = "SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES";
131-
obj_ids = m_multicast_queue_ids;
132-
}
133-
if(op == "USER")
134-
{
135-
clearSingleWm(m_userWatermarkTable.get(), wm_name, obj_ids);
136-
}
137-
else if (op == "PERSISTENT")
138-
{
139-
clearSingleWm(m_persistentWatermarkTable.get(), wm_name, obj_ids);
140-
}
141-
else
142-
{
143-
SWSS_LOG_WARN("Unknown watermark clear request op: %s", op.c_str());
144-
}
110+
Table * table = NULL;
111+
112+
if (op == "PERSISTENT")
113+
{
114+
table = m_persistentWatermarkTable.get();
115+
}
116+
else if (op == "USER")
117+
{
118+
table = m_userWatermarkTable.get();
119+
}
120+
else
121+
{
122+
SWSS_LOG_WARN("Unknown watermark clear request op: %s", op.c_str());
123+
return;
124+
}
125+
126+
if(data == CLEAR_PG_HEADROOM_REQUEST)
127+
{
128+
clearSingleWm(table,
129+
"SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES",
130+
m_pg_ids);
131+
}
132+
else if(data == CLEAR_PG_SHARED_REQUEST)
133+
{
134+
clearSingleWm(table,
135+
"SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES",
136+
m_pg_ids);
137+
}
138+
else if(data == CLEAR_QUEUE_SHARED_UNI_REQUEST)
139+
{
140+
clearSingleWm(table,
141+
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
142+
m_unicast_queue_ids);
143+
}
144+
else if(data == CLEAR_QUEUE_SHARED_MULTI_REQUEST)
145+
{
146+
clearSingleWm(table,
147+
"SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES",
148+
m_multicast_queue_ids);
149+
}
150+
else
151+
{
152+
SWSS_LOG_WARN("Unknown watermark clear request data: %s", data.c_str());
153+
return;
145154
}
146155
}
147156

@@ -162,14 +171,12 @@ void WatermarkOrch::doTask(SelectableTimer &timer)
162171
m_telemetryTimer->setInterval(intervT);
163172
m_telemetryTimer->reset();
164173

165-
/* TODO: replace with removing all PG and queue entries? */
166174
clearSingleWm(m_periodicWatermarkTable.get(), "SAI_INGRESS_PRIORITY_GROUP_STAT_XOFF_ROOM_WATERMARK_BYTES", m_pg_ids);
167175
clearSingleWm(m_periodicWatermarkTable.get(), "SAI_INGRESS_PRIORITY_GROUP_STAT_SHARED_WATERMARK_BYTES", m_pg_ids);
168176
clearSingleWm(m_periodicWatermarkTable.get(), "SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES", m_unicast_queue_ids);
169177
clearSingleWm(m_periodicWatermarkTable.get(), "SAI_QUEUE_STAT_SHARED_WATERMARK_BYTES", m_multicast_queue_ids);
170178
SWSS_LOG_INFO("Periodic watermark cleared by timer!");
171179
}
172-
173180
}
174181

175182
void WatermarkOrch::init_pg_ids()
@@ -220,5 +227,3 @@ void WatermarkOrch::clearSingleWm(Table *table, string wm_name, vector<sai_objec
220227
table->set(sai_serialize_object_id(id), vfvt);
221228
}
222229
}
223-
224-

0 commit comments

Comments
 (0)