in fboss/agent/hw/switch_asics/Tomahawk4Asic.cpp [21:112]
bool Tomahawk4Asic::isSupported(Feature feature) const {
switch (feature) {
case HwAsic::Feature::SPAN:
case HwAsic::Feature::ERSPANv4:
case HwAsic::Feature::SFLOWv4:
case HwAsic::Feature::MPLS:
case HwAsic::Feature::MPLS_ECMP:
case HwAsic::Feature::ERSPANv6:
case HwAsic::Feature::SFLOWv6:
case HwAsic::Feature::HOT_SWAP:
case HwAsic::Feature::HASH_FIELDS_CUSTOMIZATION:
case HwAsic::Feature::QUEUE:
case HwAsic::Feature::ECN:
case HwAsic::Feature::L3_QOS:
case HwAsic::Feature::SCHEDULER_PPS:
case HwAsic::Feature::NEXTHOP_TTL_DECREMENT_DISABLE:
case HwAsic::Feature::DEBUG_COUNTER:
case HwAsic::Feature::RESOURCE_USAGE_STATS:
case HwAsic::Feature::HSDK:
case HwAsic::Feature::OBJECT_KEY_CACHE:
case HwAsic::Feature::L3_EGRESS_MODE_AUTO_ENABLED:
case HwAsic::Feature::PKTIO:
case HwAsic::Feature::ACL_COPY_TO_CPU:
case HwAsic::Feature::INGRESS_FIELD_PROCESSOR_FLEX_COUNTER:
case HwAsic::Feature::OBM_COUNTERS:
case HwAsic::Feature::BUFFER_POOL:
case HwAsic::Feature::EGRESS_QUEUE_FLEX_COUNTER:
case HwAsic::Feature::INGRESS_L3_INTERFACE:
case HwAsic::Feature::DETAILED_L2_UPDATE:
case HwAsic::Feature::TELEMETRY_AND_MONITORING:
case HwAsic::Feature::ALPM_ROUTE_PROJECTION:
case HwAsic::Feature::MAC_AGING:
case HwAsic::Feature::SAI_PORT_SPEED_CHANGE: // CS00011784917
case HwAsic::Feature::SFLOW_SHIM_VERSION_FIELD:
case HwAsic::Feature::EGRESS_MIRRORING:
case HwAsic::Feature::EGRESS_SFLOW:
case HwAsic::Feature::DEFAULT_VLAN:
case HwAsic::Feature::L2_LEARNING:
case HwAsic::Feature::SAI_ACL_ENTRY_SRC_PORT_QUALIFIER:
case HwAsic::Feature::TRAFFIC_HASHING:
case HwAsic::Feature::ACL_TABLE_GROUP:
case HwAsic::Feature::CPU_PORT:
case HwAsic::Feature::VRF:
case HwAsic::Feature::SAI_HASH_FIELDS_CLEAR_BEFORE_SET:
case HwAsic::Feature::ROUTE_COUNTERS:
case HwAsic::Feature::ROUTE_FLEX_COUNTERS:
case HwAsic::Feature::BRIDGE_PORT_8021Q:
case HwAsic::Feature::FEC_DIAG_COUNTERS:
case HwAsic::Feature::PTP_TC:
case HwAsic::Feature::PTP_TC_PCS:
case HwAsic::Feature::SAI_LAG_HASH:
return true;
// features only supported by B0 version, or any physical device
// where used chip is always B0.
case HwAsic::Feature::NON_UNICAST_HASH:
case HwAsic::Feature::WEIGHTED_NEXTHOPGROUP_MEMBER:
return getAsicMode() != AsicMode::ASIC_MODE_SIM || isSimB0();
// features not working well with bcmsim
case HwAsic::Feature::MIRROR_PACKET_TRUNCATION:
case HwAsic::Feature::SFLOW_SAMPLING:
return getAsicMode() != AsicMode::ASIC_MODE_SIM;
case HwAsic::Feature::HOSTTABLE_FOR_HOSTROUTES:
case HwAsic::Feature::QOS_MAP_GLOBAL:
case HwAsic::Feature::QCM:
case HwAsic::Feature::SMAC_EQUALS_DMAC_CHECK_ENABLED:
case HwAsic::Feature::PORT_TTL_DECREMENT_DISABLE:
case HwAsic::Feature::PORT_INTERFACE_TYPE:
case HwAsic::Feature::SAI_ECN_WRED:
case HwAsic::Feature::SWITCH_ATTR_INGRESS_ACL: // CS00011272352
case HwAsic::Feature::HOSTTABLE:
case HwAsic::Feature::PORT_TX_DISABLE:
case HwAsic::Feature::ZERO_SDK_WRITE_WARMBOOT:
case HwAsic::Feature::PENDING_L2_ENTRY:
case HwAsic::Feature::PFC:
case HwAsic::Feature::COUNTER_REFRESH_INTERVAL:
case HwAsic::Feature::WIDE_ECMP:
case HwAsic::Feature::REMOVE_PORTS_FOR_COLDBOOT: // CS00012066057
case HwAsic::Feature::MACSEC:
case HwAsic::Feature::SAI_MPLS_QOS:
case HwAsic::Feature::EMPTY_ACL_MATCHER:
case HwAsic::Feature::SAI_PORT_SERDES_FIELDS_RESET:
case HwAsic::Feature::MULTIPLE_ACL_TABLES:
case HwAsic::Feature::SAI_WEIGHTED_NEXTHOPGROUP_MEMBER:
case HwAsic::Feature::SAI_ACL_TABLE_UPDATE:
case HwAsic::Feature::PORT_EYE_VALUES:
case HwAsic::Feature::SAI_MPLS_TTL_1_TRAP:
case HwAsic::Feature::SAI_MPLS_LABEL_LOOKUP_FAIL_COUNTER:
case HwAsic::Feature::SAI_SAMPLEPACKET_TRAP:
return false;
}
return false;
}