fboss/agent/hw/bcm/BcmSdkInterface.h (897 lines of code) (raw):

/* * Copyright (c) 2004-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * */ #pragma once extern "C" { // // BCM // #include <bcm/collector.h> #include <bcm/cosq.h> #include <bcm/error.h> #include <bcm/field.h> #include <bcm/flexctr.h> #include <bcm/init.h> #include <bcm/l2.h> #include <bcm/l3.h> #include <bcm/mirror.h> #include <bcm/port.h> #include <bcm/qos.h> #include <bcm/rx.h> #include <bcm/stat.h> #include <bcm/switch.h> #include <bcm/time.h> #include <bcm/trunk.h> // Opennsl #include <bcm/types.h> // // Shared // #include <shared/error.h> } namespace facebook::fboss { class BcmSdkInterface { public: virtual ~BcmSdkInterface() = default; // // BCM // virtual int bcm_switch_pkt_trace_info_get( int unit, uint32 options, uint8 port, int len, uint8* data, bcm_switch_pkt_trace_info_t* pkt_trace_info) = 0; virtual int bcm_cosq_bst_stat_clear( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, bcm_bst_stat_id_t bid) = 0; virtual int bcm_field_range_get( int unit, bcm_field_range_t range, uint32* flags, bcm_l4_port_t* min, bcm_l4_port_t* max) = 0; virtual int bcm_port_phy_control_get( int unit, bcm_port_t port, bcm_port_phy_control_t type, uint32* value) = 0; #if (defined(IS_OPENNSA) || defined(BCM_SDK_VERSION_GTE_6_5_22)) virtual int bcm_pktio_txpmd_stat_attach(int unit, uint32 counter_id) = 0; virtual int bcm_pktio_txpmd_stat_detach(int unit) = 0; #endif virtual int bcm_cosq_gport_traverse( int unit, bcm_cosq_gport_traverse_cb cb, void* user_data) = 0; virtual int bcm_cosq_gport_sched_set( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, int mode, int weight) = 0; virtual int bcm_cosq_gport_sched_get( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, int* mode, int* weight) = 0; virtual int bcm_field_range_create( int unit, bcm_field_range_t* range, uint32 flags, bcm_l4_port_t min, bcm_l4_port_t max) = 0; virtual int bcm_cosq_init(int unit) = 0; virtual int bcm_field_entry_prio_set(int unit, bcm_field_entry_t entry, int prio) = 0; virtual int bcm_rx_cosq_mapping_size_get(int unit, int* size) = 0; virtual int bcm_field_action_add( int unit, bcm_field_entry_t entry, bcm_field_action_t action, uint32 param0, uint32 param1) = 0; virtual int bcm_field_action_delete( int unit, bcm_field_entry_t entry, bcm_field_action_t action, uint32 param0, uint32 param1) = 0; virtual int bcm_cosq_bst_profile_set( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, bcm_bst_stat_id_t bid, bcm_cosq_bst_profile_t* profile) = 0; virtual int bcm_field_qualify_DstIp6( int unit, bcm_field_entry_t entry, bcm_ip6_t data, bcm_ip6_t mask) = 0; virtual int bcm_field_qualify_InPorts( int unit, bcm_field_entry_t entry, bcm_pbmp_t data, bcm_pbmp_t mask) = 0; virtual int bcm_field_range_destroy(int unit, bcm_field_range_t range) = 0; virtual int bcm_rx_active(int unit) = 0; virtual int bcm_field_qualify_L4SrcPort( int unit, bcm_field_entry_t entry, bcm_l4_port_t data, bcm_l4_port_t mask) = 0; virtual int bcm_field_qualify_IcmpTypeCode( int unit, bcm_field_entry_t entry, uint16 data, uint16 mask) = 0; virtual int bcm_field_entry_create( int unit, bcm_field_group_t group, bcm_field_entry_t* entry) = 0; virtual int bcm_port_autoneg_set(int unit, bcm_port_t port, int autoneg) = 0; virtual int bcm_field_action_get( int unit, bcm_field_entry_t entry, bcm_field_action_t action, uint32* param0, uint32* param1) = 0; virtual int bcm_field_group_traverse( int unit, bcm_field_group_traverse_cb callback, void* user_data) = 0; virtual int bcm_switch_control_set(int unit, bcm_switch_control_t type, int arg) = 0; virtual int bcm_switch_control_get(int unit, bcm_switch_control_t type, int* arg) = 0; virtual int bcm_field_entry_create_id( int unit, bcm_field_group_t group, bcm_field_entry_t entry) = 0; virtual int bcm_port_ability_advert_set( int unit, bcm_port_t port, bcm_port_ability_t* ability_mask) = 0; virtual int bcm_field_qualify_SrcIp6( int unit, bcm_field_entry_t entry, bcm_ip6_t data, bcm_ip6_t mask) = 0; virtual int bcm_l2_traverse(int unit, bcm_l2_traverse_cb trav_fn, void* user_data) = 0; virtual int bcm_port_subsidiary_ports_get( int unit, bcm_port_t port, bcm_pbmp_t* pbmp) = 0; virtual int bcm_field_group_enable_get( int unit, bcm_field_group_t group, int* enable) = 0; virtual int bcm_l3_info(int unit, bcm_l3_info_t* l3info) = 0; virtual int bcm_field_qualify_SrcPort( int unit, bcm_field_entry_t entry, bcm_module_t data_modid, bcm_module_t mask_modid, bcm_port_t data_port, bcm_port_t mask_port) = 0; virtual int bcm_l3_egress_ecmp_add( int unit, bcm_l3_egress_ecmp_t* ecmp, bcm_if_t intf) = 0; virtual int bcm_field_qualify_RangeCheck( int unit, bcm_field_entry_t entry, bcm_field_range_t range, int invert) = 0; virtual int bcm_field_init(int unit) = 0; virtual int bcm_cosq_control_set( int unit, bcm_gport_t port, bcm_cos_queue_t cosq, bcm_cosq_control_t type, int arg) = 0; virtual void bcm_cosq_gport_discard_t_init( bcm_cosq_gport_discard_t* discard) = 0; virtual int bcm_cosq_gport_discard_set( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, bcm_cosq_gport_discard_t* discard) = 0; virtual int bcm_cosq_gport_mapping_set( int unit, bcm_gport_t ing_port, bcm_cos_t priority, uint32 flags, bcm_gport_t gport, bcm_cos_queue_t cosq) = 0; virtual int bcm_cosq_gport_mapping_get( int unit, bcm_gport_t ing_port, bcm_cos_t priority, uint32 flags, bcm_gport_t* gport, bcm_cos_queue_t* cosq) = 0; virtual int bcm_cosq_gport_discard_get( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, bcm_cosq_gport_discard_t* discard) = 0; virtual int bcm_qos_map_create(int unit, uint32 flags, int* map_id) = 0; virtual int bcm_qos_map_destroy(int unit, int map_id) = 0; virtual int bcm_qos_map_add(int unit, uint32 flags, bcm_qos_map_t* map, int map_id) = 0; virtual int bcm_qos_map_delete( int unit, uint32 flags, bcm_qos_map_t* map, int map_id) = 0; virtual int bcm_qos_map_multi_get( int unit, uint32 flags, int map_id, int array_size, bcm_qos_map_t* array, int* array_count) = 0; virtual int bcm_qos_port_map_set( int unit, bcm_gport_t gport, int ing_map, int egr_map) = 0; virtual int bcm_qos_port_map_get( int unit, bcm_gport_t gport, int* ing_map, int* egr_map) = 0; virtual int bcm_qos_port_map_type_get( int unit, bcm_gport_t gport, uint32 flags, int* map_id) = 0; virtual int bcm_port_dscp_map_mode_get(int unit, bcm_port_t port, int* mode) = 0; virtual int bcm_port_dscp_map_mode_set(int unit, bcm_port_t port, int mode) = 0; virtual int bcm_qos_multi_get( int unit, int array_size, int* map_ids_array, int* flags_array, int* array_count) = 0; virtual int bcm_field_qualify_DstPort( int unit, bcm_field_entry_t entry, bcm_module_t data_modid, bcm_module_t mask_modid, bcm_port_t data_port, bcm_port_t mask_port) = 0; virtual int bcm_field_qualify_DstMac( int unit, bcm_field_entry_t entry, bcm_mac_t mac, bcm_mac_t macMask) = 0; virtual int bcm_field_qualify_SrcMac( int unit, bcm_field_entry_t entry, bcm_mac_t mac, bcm_mac_t macMask) = 0; virtual void bcm_l3_egress_ecmp_t_init(bcm_l3_egress_ecmp_t* ecmp) = 0; virtual int bcm_port_phy_control_set( int unit, bcm_port_t port, bcm_port_phy_control_t type, uint32 value) = 0; virtual int bcm_field_qualify_L4DstPort( int unit, bcm_field_entry_t entry, bcm_l4_port_t data, bcm_l4_port_t mask) = 0; virtual int bcm_field_qualify_TcpControl( int unit, bcm_field_entry_t entry, uint8 data, uint8 mask) = 0; virtual int bcm_cosq_gport_bandwidth_set( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, uint32 kbits_sec_min, uint32 kbits_sec_max, uint32 flags) = 0; virtual int bcm_cosq_gport_bandwidth_get( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, uint32* kbits_sec_min, uint32* kbits_sec_max, uint32* flags) = 0; virtual int bcm_cosq_bst_profile_get( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, bcm_bst_stat_id_t bid, bcm_cosq_bst_profile_t* profile) = 0; virtual int bcm_field_entry_destroy(int unit, bcm_field_entry_t entry) = 0; virtual int bcm_field_group_create_id( int unit, bcm_field_qset_t qset, int pri, bcm_field_group_t group) = 0; virtual int bcm_field_group_config_create( int unit, bcm_field_group_config_t* group_config) = 0; virtual int bcm_port_pause_sym_set(int unit, bcm_port_t port, int pause) = 0; virtual int bcm_switch_object_count_multi_get( int unit, int object_size, bcm_switch_object_t* object_array, int* entries) = 0; virtual int bcm_switch_object_count_get( int unit, bcm_switch_object_t object, int* entries) = 0; // workaround to make 6.5.17 build work // flag will be removed once 6.5.17 is gone #if (defined(IS_OPENNSA) || defined(BCM_SDK_VERSION_GTE_6_5_19)) virtual int bcm_l3_alpm_resource_get( int unit, bcm_l3_route_group_t grp, bcm_l3_alpm_resource_t* resource) = 0; #endif virtual int bcm_field_entry_multi_get( int unit, bcm_field_group_t group, int entry_size, bcm_field_entry_t* entry_array, int* entry_count) = 0; virtual int bcm_rx_cosq_mapping_set( int unit, int index, bcm_rx_reasons_t reasons, bcm_rx_reasons_t reasons_mask, uint8 int_prio, uint8 int_prio_mask, uint32 packet_type, uint32 packet_type_mask, bcm_cos_queue_t cosq) = 0; virtual int bcm_rx_cosq_mapping_get( int unit, int index, bcm_rx_reasons_t* reasons, bcm_rx_reasons_t* reasons_mask, uint8* int_prio, uint8* int_prio_mask, uint32* packet_type, uint32* packet_type_mask, bcm_cos_queue_t* cosq) = 0; virtual int bcm_rx_cosq_mapping_delete(int unit, int index) = 0; virtual int bcm_rx_cosq_mapping_extended_add( int unit, int options, bcm_rx_cosq_mapping_t* cosqMap) = 0; virtual int bcm_rx_cosq_mapping_extended_delete( int unit, bcm_rx_cosq_mapping_t* cosqMap) = 0; virtual int bcm_rx_cosq_mapping_extended_set( int unit, uint32 options, bcm_rx_cosq_mapping_t* cosqMap) = 0; virtual int bcm_cosq_bst_stat_get( int unit, bcm_gport_t gport, bcm_cos_queue_t cosq, bcm_bst_stat_id_t bid, uint32 options, uint64* value) = 0; virtual int bcm_cosq_bst_stat_sync(int unit, bcm_bst_stat_id_t bid) = 0; virtual int bcm_stat_custom_add( int unit, bcm_port_t port, bcm_stat_val_t type, bcm_custom_stat_trigger_t trigger) = 0; virtual int bcm_field_qualify_IpFrag( int unit, bcm_field_entry_t entry, bcm_field_IpFrag_t frag_info) = 0; virtual int bcm_field_qualify_IpProtocol( int unit, bcm_field_entry_t entry, uint8 data, uint8 mask) = 0; virtual int bcm_rx_queue_max_get(int unit, bcm_cos_queue_t* cosq) = 0; virtual int bcm_field_group_get( int unit, bcm_field_group_t group, bcm_field_qset_t* qset) = 0; virtual int bcm_field_group_status_get( int unit, bcm_field_group_t group, bcm_field_group_status_t* status) = 0; virtual int bcm_field_stat_create( int unit, bcm_field_group_t group, int nstat, bcm_field_stat_t* stat_arr, int* stat_id) = 0; virtual int bcm_field_entry_stat_attach( int unit, bcm_field_entry_t entry, int stat_id) = 0; virtual int bcm_field_entry_stat_detach( int unit, bcm_field_entry_t entry, int stat_id) = 0; virtual int bcm_field_entry_stat_get(int unit, bcm_field_entry_t entry, int* stat_id) = 0; virtual int bcm_field_stat_destroy(int unit, int stat_id) = 0; virtual int bcm_field_stat_get( int unit, int stat_id, bcm_field_stat_t stat, uint64* value) = 0; virtual int bcm_field_stat_size(int unit, int stat_id, int* stat_size) = 0; virtual int bcm_field_stat_config_get( int unit, int stat_id, int nstat, bcm_field_stat_t* stat_arr) = 0; virtual int bcm_field_entry_reinstall(int unit, bcm_field_entry_t entry) = 0; virtual int bcm_field_qualify_RangeCheck_get( int unit, bcm_field_entry_t entry, int max_count, bcm_field_range_t* range, int* invert, int* count) = 0; virtual int bcm_field_entry_prio_get(int unit, bcm_field_entry_t entry, int* prio) = 0; virtual int bcm_field_qualify_SrcIp6_get( int unit, bcm_field_entry_t entry, bcm_ip6_t* data, bcm_ip6_t* mask) = 0; virtual int bcm_field_qualify_DstIp6_get( int unit, bcm_field_entry_t entry, bcm_ip6_t* data, bcm_ip6_t* mask) = 0; virtual int bcm_field_qualify_L4SrcPort_get( int unit, bcm_field_entry_t entry, bcm_l4_port_t* data, bcm_l4_port_t* mask) = 0; virtual int bcm_field_qualify_L4DstPort_get( int unit, bcm_field_entry_t entry, bcm_l4_port_t* data, bcm_l4_port_t* mask) = 0; virtual int bcm_field_qualify_TcpControl_get( int unit, bcm_field_entry_t entry, uint8* data, uint8* mask) = 0; virtual int bcm_field_qualify_SrcPort_get( int unit, bcm_field_entry_t entry, bcm_module_t* data_modid, bcm_module_t* mask_modid, bcm_port_t* data_port, bcm_port_t* mask_port) = 0; virtual int bcm_field_qualify_DstPort_get( int unit, bcm_field_entry_t entry, bcm_module_t* data_modid, bcm_module_t* mask_modid, bcm_port_t* data_port, bcm_port_t* mask_port) = 0; virtual int bcm_field_qualify_IpFrag_get( int unit, bcm_field_entry_t entry, bcm_field_IpFrag_t* frag_info) = 0; virtual int bcm_field_qualify_DSCP_get( int unit, bcm_field_entry_t entry, uint8* data, uint8* mask) = 0; virtual int bcm_field_qualify_IpProtocol_get( int unit, bcm_field_entry_t entry, uint8* data, uint8* mask) = 0; virtual int bcm_field_qualify_IpType_get( int unit, bcm_field_entry_t entry, bcm_field_IpType_t* type) = 0; virtual int bcm_field_qualify_EtherType_get( int unit, bcm_field_entry_t entry, uint16* data, uint16* mask) = 0; virtual int bcm_field_qualify_Ttl_get( int unit, bcm_field_entry_t entry, uint8* data, uint8* mask) = 0; virtual int bcm_field_entry_enable_get( int unit, bcm_field_entry_t entry, int* enable_flag) = 0; virtual int bcm_field_qualify_DstMac_get( int unit, bcm_field_entry_t entry, bcm_mac_t* data, bcm_mac_t* mask) = 0; virtual int bcm_field_qualify_SrcMac_get( int unit, bcm_field_entry_t entry, bcm_mac_t* data, bcm_mac_t* mask) = 0; virtual int bcm_field_qualify_Ttl( int unit, bcm_field_entry_t entry, uint8 data, uint8 mask) = 0; virtual int bcm_field_qualify_IpType( int unit, bcm_field_entry_t entry, bcm_field_IpType_t type) = 0; virtual int bcm_field_qualify_DSCP( int unit, bcm_field_entry_t entry, uint8 data, uint8 mask) = 0; virtual int bcm_field_qualify_DstClassL2_get( int unit, bcm_field_entry_t entry, uint32* data, uint32* mask) = 0; virtual int bcm_field_qualify_DstClassL2( int unit, bcm_field_entry_t entry, uint32 data, uint32 mask) = 0; virtual int bcm_field_qualify_DstClassL3_get( int unit, bcm_field_entry_t entry, uint32* data, uint32* mask) = 0; virtual int bcm_field_qualify_DstClassL3( int unit, bcm_field_entry_t entry, uint32 data, uint32 mask) = 0; virtual int bcm_field_qualify_PacketRes_get( int unit, bcm_field_entry_t entry, uint32* data, uint32* mask) = 0; virtual int bcm_field_qualify_PacketRes( int unit, bcm_field_entry_t entry, uint32 data, uint32 mask) = 0; virtual int bcm_field_qualify_OuterVlanId_get( int unit, bcm_field_entry_t entry, bcm_vlan_t* data, bcm_vlan_t* mask) = 0; virtual int bcm_field_qualify_OuterVlanId( int unit, bcm_field_entry_t entry, bcm_vlan_t data, bcm_vlan_t mask) = 0; virtual int bcm_field_qualify_EtherType( int unit, bcm_field_entry_t entry, uint16 data, uint16 mask) = 0; virtual int bcm_field_group_destroy(int unit, bcm_field_group_t) = 0; virtual int bcm_cosq_control_get( int unit, bcm_gport_t port, bcm_cos_queue_t cosq, bcm_cosq_control_t type, int* arg) = 0; virtual int bcm_l3_egress_get(int unit, bcm_if_t intf, bcm_l3_egress_t* egr) = 0; virtual int bcm_l3_egress_create( int unit, uint32 flags, bcm_l3_egress_t* egr, bcm_if_t* if_id) = 0; virtual int bcm_l3_egress_find(int unit, bcm_l3_egress_t* egr, bcm_if_t* intf) = 0; virtual int bcm_l3_egress_traverse( int unit, bcm_l3_egress_traverse_cb trav_fn, void* user_data) = 0; virtual int bcm_l3_egress_ecmp_delete( int unit, bcm_l3_egress_ecmp_t* ecmp, bcm_if_t intf) = 0; virtual int bcm_l3_egress_ecmp_get( int unit, bcm_l3_egress_ecmp_t* ecmp, int intf_size, bcm_if_t* intf_array, int* intf_count) = 0; virtual int bcm_l3_enable_set(int unit, int enable) = 0; virtual int bcm_field_entry_install(int unit, bcm_field_entry_t entry) = 0; virtual int bcm_field_qualify_DstIp( int unit, bcm_field_entry_t entry, bcm_ip_t data, bcm_ip_t mask) = 0; virtual int bcm_port_pause_get( int unit, bcm_port_t port, int* pause_tx, int* pause_rx) = 0; virtual int bcm_port_pause_set(int unit, bcm_port_t port, int pause_tx, int pause_rx) = 0; virtual int bcm_port_sample_rate_get( int unit, bcm_port_t port, int* ingress_rate, int* egress_rate) = 0; virtual int bcm_port_sample_rate_set( int unit, bcm_port_t port, int ingress_rate, int egress_rate) = 0; virtual int bcm_port_control_set( int unit, bcm_port_t port, bcm_port_control_t type, int value) = 0; virtual int bcm_port_control_get( int unit, bcm_port_t port, bcm_port_control_t type, int* value) = 0; virtual int bcm_info_get(int unit, bcm_info_t* info) = 0; virtual int bcm_linkscan_update(int unit, bcm_pbmp_t pbmp) = 0; virtual int bcm_trunk_bitmap_expand(int unit, bcm_pbmp_t* pbmp_ptr) = 0; virtual int bcm_port_loopback_get(int unit, bcm_port_t port, uint32* value) = 0; virtual int bcm_port_loopback_set(int unit, bcm_port_t port, uint32 value) = 0; virtual int bcm_mirror_init(int unit) = 0; virtual int bcm_mirror_mode_set(int unit, int mode) = 0; virtual int bcm_mirror_destination_create( int unit, bcm_mirror_destination_t* mirror_dest) = 0; virtual int bcm_mirror_destination_get( int unit, bcm_gport_t mirror_dest_id, bcm_mirror_destination_t* mirror_dest) = 0; virtual int bcm_mirror_destination_destroy( int unit, bcm_gport_t mirror_dest_id) = 0; virtual int bcm_mirror_port_dest_add( int unit, bcm_port_t port, uint32 flags, bcm_gport_t mirror_dest_id) = 0; virtual int bcm_mirror_port_dest_delete( int unit, bcm_port_t port, uint32 flags, bcm_gport_t mirror_dest_id) = 0; virtual int bcm_mirror_port_dest_delete_all(int unit, bcm_port_t port, uint32 flags) = 0; virtual int bcm_mirror_port_dest_get( int unit, bcm_port_t port, uint32 flags, int mirror_dest_size, bcm_gport_t* mirror_dest, int* mirror_dest_count) = 0; virtual int bcm_mirror_destination_traverse( int unit, bcm_mirror_destination_traverse_cb cb, void* user_data) = 0; virtual int sh_process_command(int unit, char* cmd) = 0; // mpls virtual int bcm_mpls_init(int unit) = 0; virtual int bcm_mpls_tunnel_switch_add( int unit, bcm_mpls_tunnel_switch_t* info) = 0; virtual int bcm_mpls_tunnel_switch_delete( int unit, bcm_mpls_tunnel_switch_t* info) = 0; virtual int bcm_mpls_tunnel_switch_get( int unit, bcm_mpls_tunnel_switch_t* info) = 0; virtual int bcm_mpls_tunnel_switch_traverse( int unit, bcm_mpls_tunnel_switch_traverse_cb cb, void* user_data) = 0; virtual int bcm_mpls_tunnel_initiator_set( int unit, bcm_if_t intf, int num_labels, bcm_mpls_egress_label_t* label_array) = 0; virtual int bcm_mpls_tunnel_initiator_clear(int unit, bcm_if_t intf) = 0; virtual int bcm_mpls_tunnel_initiator_get( int unit, bcm_if_t intf, int label_max, bcm_mpls_egress_label_t* label_array, int* label_count) = 0; // port resource APIs virtual int bcm_port_resource_speed_set( int unit, bcm_gport_t port, bcm_port_resource_t* resource) = 0; virtual int bcm_port_resource_speed_get( int unit, bcm_gport_t port, bcm_port_resource_t* resource) = 0; virtual int bcm_port_resource_multi_set( int unit, int nport, bcm_port_resource_t* resource) = 0; virtual int bcm_l2_addr_delete_by_port( int unit, bcm_module_t mod, bcm_port_t port, uint32 flags) = 0; virtual int bcm_l3_ingress_create( int unit, bcm_l3_ingress_t* ing_intf, bcm_if_t* intf_id) = 0; virtual int bcm_l3_ingress_destroy(int unit, bcm_if_t intf_id) = 0; virtual int bcm_vlan_control_vlan_set( int unit, bcm_vlan_t vlan, bcm_vlan_control_vlan_t control) = 0; virtual int bcm_vlan_control_vlan_get( int unit, bcm_vlan_t vlan, bcm_vlan_control_vlan_t* control) = 0; virtual int bcm_cosq_priority_group_mapping_profile_get( int unit, int profile_index, bcm_cosq_priority_group_mapping_profile_type_t type, int array_max, int* arg, int* array_count) = 0; virtual int bcm_cosq_priority_group_mapping_profile_set( int unit, int profile_index, bcm_cosq_priority_group_mapping_profile_type_t type, int array_count, int* arg) = 0; virtual int bcm_cosq_priority_group_pfc_priority_mapping_profile_set( int unit, int profile_index, int array_count, int* pg_array) = 0; virtual int bcm_cosq_priority_group_pfc_priority_mapping_profile_get( int unit, int profile_index, int array_max, int* pg_array, int* array_count) = 0; virtual int bcm_cosq_pfc_class_config_profile_set( int unit, int profile_index, int count, bcm_cosq_pfc_class_map_config_t* config_array) = 0; virtual int bcm_cosq_pfc_class_config_profile_get( int unit, int profile_index, int max_count, bcm_cosq_pfc_class_map_config_t* config_array, int* count) = 0; virtual int bcm_port_priority_group_config_set( int unit, bcm_gport_t gport, int priority_group, bcm_port_priority_group_config_t* prigrp_config) = 0; virtual int bcm_port_priority_group_config_get( int unit, bcm_gport_t gport, int priority_group, bcm_port_priority_group_config_t* prigrp_config) = 0; virtual int bcm_cosq_port_priority_group_property_get( int unit, bcm_port_t gport, int priority_group_id, bcm_cosq_port_prigroup_control_t type, int* arg) = 0; virtual int bcm_cosq_port_priority_group_property_set( int unit, bcm_port_t gport, int priority_group_id, bcm_cosq_port_prigroup_control_t type, int arg) = 0; virtual int bcm_collector_create( int unit, uint32 options, bcm_collector_t* collector_id, bcm_collector_info_t* collector_info) = 0; virtual int bcm_collector_destroy(int unit, bcm_collector_t id) = 0; virtual int bcm_collector_export_profile_create( int unit, uint32 options, int* export_profile_id, bcm_collector_export_profile_t* export_profile_info) = 0; virtual int bcm_collector_export_profile_destroy( int unit, int export_profile_id) = 0; virtual void bcm_collector_export_profile_t_init( bcm_collector_export_profile_t* export_profile_info) = 0; virtual void bcm_collector_info_t_init( bcm_collector_info_t* collector_info) = 0; virtual int bcm_port_phy_timesync_config_set( int unit, bcm_port_t port, bcm_port_phy_timesync_config_t* conf) = 0; virtual void bcm_port_phy_timesync_config_t_init( bcm_port_phy_timesync_config_t* conf) = 0; virtual int bcm_port_timesync_config_set( int unit, bcm_port_t port, int config_count, bcm_port_timesync_config_t* config_array) = 0; virtual void bcm_port_timesync_config_t_init( bcm_port_timesync_config_t* port_timesync_config) = 0; virtual int bcm_time_interface_add(int unit, bcm_time_interface_t* intf) = 0; virtual int bcm_time_interface_delete_all(int unit) = 0; virtual void bcm_time_interface_t_init(bcm_time_interface_t* intf) = 0; virtual int bcm_field_entry_flexctr_attach( int unit, bcm_field_entry_t entry, bcm_field_flexctr_config_t* flexctr_cfg) = 0; virtual int bcm_field_entry_flexctr_detach( int unit, bcm_field_entry_t entry, bcm_field_flexctr_config_t* flexctr_cfg) = 0; virtual int bcm_field_entry_remove(int unit, bcm_field_entry_t entry) = 0; virtual int bcm_cosq_pfc_deadlock_control_set( int unit, bcm_port_t port, int priority, bcm_cosq_pfc_deadlock_control_t type, int arg) = 0; virtual int bcm_cosq_pfc_deadlock_control_get( int unit, bcm_port_t port, int priority, bcm_cosq_pfc_deadlock_control_t type, int* arg) = 0; virtual int bcm_cosq_pfc_deadlock_recovery_event_register( int unit, bcm_cosq_pfc_deadlock_recovery_event_cb_t callback, void* userdata) = 0; virtual int bcm_cosq_pfc_deadlock_recovery_event_unregister( int unit, bcm_cosq_pfc_deadlock_recovery_event_cb_t callback, void* userdata) = 0; virtual int bcm_flexctr_action_create( int unit, int options, bcm_flexctr_action_t* action, uint32* stat_counter_id) = 0; virtual int bcm_flexctr_action_destroy(int unit, uint32 stat_counter_id) = 0; virtual int bcm_l3_route_stat_attach( int unit, bcm_l3_route_t* info, uint32 stat_counter_id) = 0; virtual int bcm_l3_route_stat_detach(int unit, bcm_l3_route_t* info) = 0; virtual int bcm_l3_route_flexctr_object_set( int unit, bcm_l3_route_t* info, uint32 value) = 0; virtual int bcm_stat_custom_group_create( int unit, uint32 mode_id, bcm_stat_object_t object, uint32* stat_counter_id, uint32* num_entries) = 0; virtual int bcm_stat_group_destroy(int unit, uint32 stat_counter_id) = 0; virtual int bcm_stat_group_mode_id_create( int unit, uint32 flags, uint32 total_counters, uint32 num_selectors, bcm_stat_group_mode_attr_selector_t* attr_selectors, uint32* mode_id) = 0; virtual int bcm_stat_group_mode_id_destroy(int unit, uint32 mode_id) = 0; virtual int bcm_port_stat_attach(int unit, bcm_port_t port, uint32 counterID) = 0; virtual int bcm_port_stat_detach_with_id( int unit, bcm_gport_t gPort, uint32 counterID) = 0; }; } // namespace facebook::fboss