Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions meta/SaiSerialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3626,6 +3626,24 @@ std::string sai_serialize_macsec_post_status_ntf(
return j.dump();
}

// serialize OTN

std::string sai_serialize_otn_attenuator_attr(
Comment thread
jjin62 marked this conversation as resolved.
_In_ const sai_otn_attenuator_attr_t attr)
{
SWSS_LOG_ENTER();

return sai_serialize_enum(attr, &sai_metadata_enum_sai_otn_attenuator_attr_t);
}

std::string sai_serialize_otn_oa_attr(
_In_ const sai_otn_oa_attr_t attr)
{
SWSS_LOG_ENTER();

return sai_serialize_enum(attr, &sai_metadata_enum_sai_otn_oa_attr_t);
Comment thread
jjin62 marked this conversation as resolved.
}

// deserialize

void sai_deserialize_bool(
Expand Down Expand Up @@ -7213,3 +7231,23 @@ void sai_deserialize_macsec_post_status_ntf(
sai_deserialize_macsec_post_status(j["macsec_post_status"],
macsec_post_status);
}

// deserialize OTN

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

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

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

sai_deserialize_enum(s, &sai_metadata_enum_sai_otn_oa_attr_t, (int32_t&)attr);
}
14 changes: 14 additions & 0 deletions meta/sai_serialize.h
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,11 @@ std::string sai_serialize_macsec_post_status_ntf(
_In_ sai_object_id_t macsec_id,
_In_ const sai_macsec_post_status_t macsec_post_status);

// serialize OTN
std::string sai_serialize_otn_attenuator_attr(_In_ const sai_otn_attenuator_attr_t attr);

std::string sai_serialize_otn_oa_attr(_In_ const sai_otn_oa_attr_t attr);

// deserialize

void sai_deserialize_enum(
Expand Down Expand Up @@ -820,3 +825,12 @@ void sai_deserialize_macsec_post_status_ntf(
_In_ const std::string& s,
_Out_ sai_object_id_t& macsec_id,
_Out_ sai_macsec_post_status_t& macsec_post_status);

// deserialize OTN
void sai_deserialize_otn_attenuator_attr(
_In_ const std::string& s,
_Out_ sai_otn_attenuator_attr_t& attr);

void sai_deserialize_otn_oa_attr(
_In_ const std::string& s,
_Out_ sai_otn_oa_attr_t& attr);
49 changes: 48 additions & 1 deletion syncd/FlexCounter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ static const std::string ATTR_TYPE_MACSEC_SA = "MACSEC SA Attribute";
static const std::string ATTR_TYPE_ACL_COUNTER = "ACL Counter Attribute";
static const std::string COUNTER_TYPE_WRED_ECN_QUEUE = "WRED Queue Counter";
static const std::string COUNTER_TYPE_WRED_ECN_PORT = "WRED Port Counter";
static const std::string ATTR_TYPE_OTN_ATTENUATOR_ATTR = "OTN Attenuator Attributes";
static const std::string ATTR_TYPE_OTN_OA_ATTR = "OTN OA Attributes";

static const std::unordered_map<std::string, bool> statusMap =
{
Expand All @@ -71,7 +73,10 @@ const std::map<std::string, std::string> FlexCounter::m_plugIn2CounterType = {
{TUNNEL_PLUGIN_FIELD, COUNTER_TYPE_TUNNEL},
{FLOW_COUNTER_PLUGIN_FIELD, COUNTER_TYPE_FLOW},
{WRED_QUEUE_PLUGIN_FIELD, COUNTER_TYPE_WRED_ECN_QUEUE},
{WRED_PORT_PLUGIN_FIELD, COUNTER_TYPE_WRED_ECN_PORT}};
{WRED_PORT_PLUGIN_FIELD, COUNTER_TYPE_WRED_ECN_PORT},
{OTN_ATTENUATOR_PLUGIN_FIELD, ATTR_TYPE_OTN_ATTENUATOR_ATTR},
{OTN_OA_PLUGIN_FIELD, ATTR_TYPE_OTN_OA_ATTR},
};

const std::map<std::tuple<sai_object_type_t, std::string>, std::string> FlexCounter::m_objectTypeField2CounterType = {
{{SAI_OBJECT_TYPE_PORT, PORT_COUNTER_ID_LIST}, COUNTER_TYPE_PORT},
Expand All @@ -96,6 +101,8 @@ const std::map<std::tuple<sai_object_type_t, std::string>, std::string> FlexCoun
{{(sai_object_type_t)SAI_OBJECT_TYPE_ENI, DASH_METER_COUNTER_ID_LIST}, COUNTER_TYPE_METER_BUCKET},
{{SAI_OBJECT_TYPE_COUNTER, SRV6_COUNTER_ID_LIST}, COUNTER_TYPE_SRV6},
{{SAI_OBJECT_TYPE_SWITCH, SWITCH_COUNTER_ID_LIST}, COUNTER_TYPE_SWITCH},
{{(sai_object_type_t)SAI_OBJECT_TYPE_OTN_ATTENUATOR, OTN_ATTENUATOR_ATTR_ID_LIST}, ATTR_TYPE_OTN_ATTENUATOR_ATTR},
{{(sai_object_type_t)SAI_OBJECT_TYPE_OTN_OA, OTN_OA_ATTR_ID_LIST}, ATTR_TYPE_OTN_OA_ATTR},
};

BaseCounterContext::BaseCounterContext(const std::string &name, const std::string &instance):
Expand Down Expand Up @@ -531,6 +538,24 @@ void deserializeAttr(
sai_deserialize_port_attr(name, attr);
}

template <>
void deserializeAttr(
_In_ const std::string& name,
_Out_ sai_otn_attenuator_attr_t &attr)
{
SWSS_LOG_ENTER();
sai_deserialize_otn_attenuator_attr(name, attr);
}

template <>
void deserializeAttr(
_In_ const std::string& name,
_Out_ sai_otn_oa_attr_t &attr)
{
SWSS_LOG_ENTER();
sai_deserialize_otn_oa_attr(name, attr);
}

template <typename StatType>
class CounterContext : public BaseCounterContext
{
Expand Down Expand Up @@ -3440,6 +3465,14 @@ std::shared_ptr<BaseCounterContext> FlexCounter::createCounterContext(
context->use_sai_stats_ext = m_vendorSai->isSwitchStatsExtSupported();
return context;
}
else if (context_name == ATTR_TYPE_OTN_ATTENUATOR_ATTR)
{
return std::make_shared<AttrContext<sai_otn_attenuator_attr_t>>(context_name, instance, (sai_object_type_t)SAI_OBJECT_TYPE_OTN_ATTENUATOR, m_vendorSai.get(), m_statsMode);
}
else if (context_name == ATTR_TYPE_OTN_OA_ATTR)
{
return std::make_shared<AttrContext<sai_otn_oa_attr_t>>(context_name, instance, (sai_object_type_t)SAI_OBJECT_TYPE_OTN_OA, m_vendorSai.get(), m_statsMode);
}

SWSS_LOG_THROW("Invalid counter type %s", context_name.c_str());
// GCC 8.3 requires a return value here
Expand Down Expand Up @@ -3769,6 +3802,20 @@ void FlexCounter::removeCounter(
getCounterContext(ATTR_TYPE_PORT_PHY_SERDES_ATTR)->removeObject(vid);
}
}
else if (objectType == (sai_object_type_t)SAI_OBJECT_TYPE_OTN_ATTENUATOR)
{
if (hasCounterContext(ATTR_TYPE_OTN_ATTENUATOR_ATTR))
{
getCounterContext(ATTR_TYPE_OTN_ATTENUATOR_ATTR)->removeObject(vid);
}
}
else if (objectType == (sai_object_type_t)SAI_OBJECT_TYPE_OTN_OA)
{
if (hasCounterContext(ATTR_TYPE_OTN_OA_ATTR))
{
getCounterContext(ATTR_TYPE_OTN_OA_ATTR)->removeObject(vid);
}
}
else
{
SWSS_LOG_ERROR("Object type for removal not supported, %s",
Expand Down
2 changes: 2 additions & 0 deletions syncd/scripts/syncd_init_common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -705,6 +705,8 @@ config_syncd()
config_syncd_pensando
elif [ "$SONIC_ASIC_TYPE" == "clounix" ]; then
config_syncd_clounix
elif [ "$SONIC_ASIC_TYPE" == "otn-kvm" ]; then
config_syncd_vs
else
echo "Unknown ASIC type $SONIC_ASIC_TYPE"
exit 1
Expand Down
26 changes: 26 additions & 0 deletions unittest/meta/TestSaiSerialize.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2527,3 +2527,29 @@ TEST(SaiDeserialize, sai_deserialize_enum)
sai_deserialize_enum("SAI_STATS_MODE_READ|SAI_STATS_MODE_WRITE", emd, value);
EXPECT_EQ(value, SAI_STATS_MODE_READ);
}

TEST(SaiSerialize, sai_serialize_otn_attenuator_attr)
{
EXPECT_EQ(sai_serialize_otn_attenuator_attr(SAI_OTN_ATTENUATOR_ATTR_ATTENUATION),
"SAI_OTN_ATTENUATOR_ATTR_ATTENUATION");
}

TEST(SaiSerialize, sai_serialize_otn_oa_attr)
{
EXPECT_EQ(sai_serialize_otn_oa_attr(SAI_OTN_OA_ATTR_TARGET_GAIN),
"SAI_OTN_OA_ATTR_TARGET_GAIN");
}

TEST(SaiSerialize, sai_deserialize_otn_attenuator_attr)
{
sai_otn_attenuator_attr_t attr;
sai_deserialize_otn_attenuator_attr("SAI_OTN_ATTENUATOR_ATTR_ATTENUATION", attr);
EXPECT_EQ(attr, SAI_OTN_ATTENUATOR_ATTR_ATTENUATION);
}

TEST(SaiSerialize, sai_deserialize_otn_oa_attr)
{
sai_otn_oa_attr_t attr;
sai_deserialize_otn_oa_attr("SAI_OTN_OA_ATTR_TARGET_GAIN", attr);
EXPECT_EQ(attr, SAI_OTN_OA_ATTR_TARGET_GAIN);
}
1 change: 1 addition & 0 deletions unittest/syncd/TestAttrVersionChecker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ TEST(AttrVersionChecker, reset)
.iscustom = false,\
.apiversion = (v),\
.nextrelease = (n),\
.valueprecision = 0,\
};\


Expand Down