in vslib/SwitchBCM81724.cpp [241:323]
sai_status_t SwitchBCM81724::refresh_read_only(
_In_ const sai_attr_metadata_t *meta,
_In_ sai_object_id_t object_id)
{
SWSS_LOG_ENTER();
if (meta->objecttype == SAI_OBJECT_TYPE_SWITCH)
{
switch (meta->attrid)
{
case SAI_SWITCH_ATTR_NUMBER_OF_ACTIVE_PORTS:
case SAI_SWITCH_ATTR_PORT_LIST:
return refresh_port_list(meta); // TODO should implement, override and call on init create_ports
case SAI_SWITCH_ATTR_DEFAULT_TRAP_GROUP:
case SAI_SWITCH_ATTR_FIRMWARE_MAJOR_VERSION:
return SAI_STATUS_SUCCESS;
case SAI_SWITCH_ATTR_ACL_ENTRY_MINIMUM_PRIORITY:
case SAI_SWITCH_ATTR_ACL_ENTRY_MAXIMUM_PRIORITY:
return SAI_STATUS_SUCCESS;
}
}
if (meta->objecttype == SAI_OBJECT_TYPE_PORT)
{
switch (meta->attrid)
{
//case SAI_PORT_ATTR_SUPPORTED_FEC_MODE:
//case SAI_PORT_ATTR_SUPPORTED_AUTO_NEG_MODE:
//case SAI_PORT_ATTR_REMOTE_ADVERTISED_FEC_MODE:
//case SAI_PORT_ATTR_ADVERTISED_FEC_MODE:
// // TODO where is code that is doing refresh for those?
// return SAI_STATUS_SUCCESS;
/*
* This status is based on hostif vEthernetX status.
*/
case SAI_PORT_ATTR_OPER_STATUS:
case SAI_PORT_ATTR_PORT_SERDES_ID:
return SAI_STATUS_SUCCESS;
case SAI_PORT_ATTR_OPER_SPEED:
return refresh_port_oper_speed(object_id);
}
}
if (meta->objecttype == SAI_OBJECT_TYPE_DEBUG_COUNTER && meta->attrid == SAI_DEBUG_COUNTER_ATTR_INDEX)
{
return SAI_STATUS_SUCCESS; // XXX not sure for gearbox
}
if (meta->objecttype == SAI_OBJECT_TYPE_MACSEC && meta->attrid == SAI_MACSEC_ATTR_SCI_IN_INGRESS_MACSEC_ACL)
{
return refresh_macsec_sci_in_ingress_macsec_acl(object_id);
}
if (meta->objecttype == SAI_OBJECT_TYPE_MACSEC_SA)
{
return refresh_macsec_sa_stat(object_id);
}
auto mmeta = m_meta.lock();
if (mmeta)
{
if (mmeta->meta_unittests_enabled())
{
SWSS_LOG_NOTICE("unittests enabled, SET could be performed on %s, not recalculating", meta->attridname);
return SAI_STATUS_SUCCESS;
}
}
else
{
SWSS_LOG_WARN("meta pointer expired");
}
SWSS_LOG_WARN("need to recalculate RO: %s", meta->attridname);
return SAI_STATUS_NOT_IMPLEMENTED;
}