Skip to content

Commit

Permalink
[watarmark] add watermark support (sonic-net#349)
Browse files Browse the repository at this point in the history
Signed-off-by: Mykola Faryma <mykolaf@mellanox.com>
  • Loading branch information
mykolaf authored and lguohan committed Oct 10, 2018
1 parent bc88348 commit 9408686
Show file tree
Hide file tree
Showing 5 changed files with 490 additions and 12 deletions.
7 changes: 7 additions & 0 deletions meta/sai_serialize.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ std::string sai_serialize_queue_stat(
std::string sai_serialize_ingress_priority_group_stat(
_In_ const sai_ingress_priority_group_stat_t counter);

std::string sai_serialize_ingress_priority_group_attr(
_In_ const sai_ingress_priority_group_attr_t attr);

std::string sai_serialize_tunnel_stat(
_In_ const sai_tunnel_stat_t counter);

Expand Down Expand Up @@ -239,6 +242,10 @@ void sai_deserialize_ingress_priority_group_stat(
_In_ const std::string& s,
_Out_ sai_ingress_priority_group_stat_t& stat);

void sai_deserialize_ingress_priority_group_attr(
_In_ const std::string& s,
_Out_ sai_ingress_priority_group_attr_t& attr);

void sai_deserialize_queue_attr(
_In_ const std::string& s,
_Out_ sai_queue_attr_t& attr);
Expand Down
17 changes: 17 additions & 0 deletions meta/saiserialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -755,6 +755,14 @@ std::string sai_serialize_ingress_priority_group_stat(
return sai_serialize_enum(counter, &sai_metadata_enum_sai_ingress_priority_group_stat_t);
}

std::string sai_serialize_ingress_priority_group_attr(
_In_ const sai_ingress_priority_group_attr_t attr)
{
SWSS_LOG_ENTER();

return sai_serialize_enum(attr, &sai_metadata_enum_sai_ingress_priority_group_attr_t);
}

std::string sai_serialize_tunnel_stat(
_In_ const sai_tunnel_stat_t counter)
{
Expand Down Expand Up @@ -2863,6 +2871,15 @@ void sai_deserialize_ingress_priority_group_stat(
sai_deserialize_enum(s, &sai_metadata_enum_sai_ingress_priority_group_stat_t, (int32_t&)stat);
}

void sai_deserialize_ingress_priority_group_attr(
_In_ const std::string& s,
_Out_ sai_ingress_priority_group_attr_t& attr)
{
SWSS_LOG_ENTER();

sai_deserialize_enum(s, &sai_metadata_enum_sai_ingress_priority_group_attr_t, (int32_t&)attr);
}

void sai_deserialize_queue_attr(
_In_ const std::string& s,
_Out_ sai_queue_attr_t& attr)
Expand Down
39 changes: 39 additions & 0 deletions syncd/syncd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2748,6 +2748,14 @@ void processFlexCounterGroupEvent(
FlexCounter::addQueueCounterPlugin(sha, groupName);
}
}
else if (field == PG_PLUGIN_FIELD)
{
auto shaStrings = swss::tokenize(value, ',');
for (const auto &sha : shaStrings)
{
FlexCounter::addPriorityGroupCounterPlugin(sha, groupName);
}
}
else if (field == PORT_PLUGIN_FIELD)
{
auto shaStrings = swss::tokenize(value, ',');
Expand All @@ -2760,6 +2768,10 @@ void processFlexCounterGroupEvent(
{
FlexCounter::updateFlexCounterStatus(value, groupName);
}
else if (field == STATS_MODE_FIELD)
{
FlexCounter::updateFlexCounterStatsMode(value, groupName);
}
else
{
SWSS_LOG_ERROR("Field is not supported %s", field.c_str());
Expand Down Expand Up @@ -2807,6 +2819,10 @@ void processFlexCounterEvent(
{
FlexCounter::removeQueue(vid, groupName);
}
else if (objectType == SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP)
{
FlexCounter::removePriorityGroup(vid, groupName);
}
else
{
SWSS_LOG_ERROR("Object type for removal not supported, %s", objectTypeStr.c_str());
Expand Down Expand Up @@ -2857,6 +2873,29 @@ void processFlexCounterEvent(

FlexCounter::setQueueAttrList(vid, rid, groupName, queueAttrIds);
}
else if (objectType == SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP && field == PG_COUNTER_ID_LIST)
{
std::vector<sai_ingress_priority_group_stat_t> pgCounterIds;
for (const auto &str : idStrings)
{
sai_ingress_priority_group_stat_t stat;
sai_deserialize_ingress_priority_group_stat(str, stat);
pgCounterIds.push_back(stat);
}
FlexCounter::setPriorityGroupCounterList(vid, rid, groupName, pgCounterIds);
}
else if (objectType == SAI_OBJECT_TYPE_INGRESS_PRIORITY_GROUP && field == PG_ATTR_ID_LIST)
{
std::vector<sai_ingress_priority_group_attr_t> pgAttrIds;
for (const auto &str : idStrings)
{
sai_ingress_priority_group_attr_t attr;
sai_deserialize_ingress_priority_group_attr(str, attr);
pgAttrIds.push_back(attr);
}

FlexCounter::setPriorityGroupAttrList(vid, rid, groupName, pgAttrIds);
}
else
{
SWSS_LOG_ERROR("Object type and field combination is not supported, object type %s, field %s", objectTypeStr.c_str(), field.c_str());
Expand Down
Loading

0 comments on commit 9408686

Please sign in to comment.