openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

alloc_mngr_shr.h (22432B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        alloc_mngr_shr.h
      8  * Purpose:     Resource allocation shared between alloc and wb.
      9  */
     10 
     11 #ifndef  INCLUDE_ALLOC_MNGR_SHR_H
     12 #define  INCLUDE_ALLOC_MNGR_SHR_H
     13 
     14 #include <soc/dpp/PPD/ppd_api_general.h>
     15 #include <soc/dpp/drv.h>
     16 #include <shared/swstate/sw_state_resmgr.h>
     17 #include <shared/shr_template.h>
     18 #include <soc/dpp/SAND/Utils/sand_occupation_bitmap.h>
     19 #include <bcm_int/dpp/port.h>
     20 #include <bcm_int/dpp/vlan.h>
     21 #include <soc/dpp/PPD/ppd_api_eg_encap.h>
     22 #include <soc/dpp/PPD/ppd_api_trap_mgmt.h>
     23 
     24 /* Res managemr Defines and Structures. */
     25 typedef enum _dpp_am_res_e {
     26     /****************************************/
     27     /************   TM POOLS   **************/
     28     /****************************************/
     29     dpp_am_res_mc_dynamic = 0,
     30     dpp_am_res_trap_single_instance,
     31     dpp_am_res_trap_user_define,
     32     dpp_am_res_trap_virtual,
     33     dpp_am_res_trap_reserved_mc,
     34     dpp_am_res_trap_prog,
     35     dpp_am_res_trap_egress,
     36     dpp_am_res_snoop_cmd,
     37     dpp_am_res_qos_egr_pcp_vlan,
     38 
     39     /****************************************/
     40     /************   PP POOLS   **************/
     41     /****************************************/
     42     dpp_am_res_vsi_vlan,
     43     dpp_am_res_vsi_mstp,
     44     dpp_am_res_lif_pwe,
     45     dpp_am_res_lif_ip_tnl,
     46     dpp_am_res_lif_dynamic,
     47     dpp_am_res_fec_global,
     48     dpp_am_res_failover_common_id,
     49     dpp_am_res_failover_ingress_id,
     50     dpp_am_res_failover_fec_id,
     51     dpp_am_res_failover_egress_id,
     52     dpp_am_res_eep_global,
     53     dpp_am_res_eep_ip_tnl, /* used for ip tunnels*/
     54     dpp_am_res_eep_mpls_tunnel, /* used for mpls/pwe tunnels*/
     55     dpp_am_res_glbl_src_ip,
     56     dpp_am_res_glbl_ttl,
     57     dpp_am_res_glbl_tos,
     58     dpp_am_res_eg_out_ac,
     59     dpp_am_res_eg_out_rif,
     60     dpp_am_res_eg_data_erspan,
     61     dpp_am_res_ipv6_tunnel,
     62     dpp_am_res_eg_data_trill_invalid_entry,
     63     dpp_am_res_qos_ing_elsp,
     64     dpp_am_res_qos_ing_lif_cos,
     65     dpp_am_res_qos_ing_pcp_vlan,
     66     dpp_am_res_qos_ing_cos_opcode,
     67     dpp_am_res_qos_egr_remark_id,
     68     dpp_am_res_qos_egr_mpls_php_id,
     69     dpp_am_res_meter_a, /* must be directly before meter_b */
     70     dpp_am_res_meter_b, /* must be directly after meter_a */
     71     dpp_am_res_ether_policer,
     72 #ifdef BCM_ARAD_SUPPORT
     73     dpp_am_res_ecmp_id,
     74 #endif 
     75     dpp_am_res_qos_egr_l2_i_tag,
     76 #ifdef BCM_88660
     77     dpp_am_res_qos_egr_dscp_exp_marking,
     78 #endif /* BCM_88660 */
     79     dpp_am_res_rp_id, /* RPIDs for IPMC BIDIR*/
     80     dpp_am_res_oam_ma_index,
     81     dpp_am_res_oam_mep_id_short,
     82     dpp_am_res_oam_mep_id_long,
     83     dpp_am_res_oam_mep_id_long_non_48_maid,
     84     dpp_am_res_oam_mep_id_long_48_maid,
     85     dpp_am_res_oam_mep_id_jumbo_tlv,
     86     dpp_am_res_oam_mep_id_no_jumbo_tlv,
     87     dpp_am_res_oam_rmep_id,
     88     dpp_am_res_oam_trap_code_upmep_ftmh_header,
     89     dpp_am_res_pon_channel_profile,
     90     dpp_am_res_vlan_edit_action_ingress,
     91     dpp_am_res_vlan_edit_action_egress, 
     92     dpp_am_res_trill_virtual_nick_name,
     93     dpp_am_res_local_inlif_common,
     94     dpp_am_res_local_inlif_wide,
     95     dpp_am_res_local_outlif,
     96     dpp_am_res_eep_trill,
     97     dpp_am_res_global_inlif,
     98     dpp_am_res_global_outlif,
     99     dpp_am_res_obs_inlif,
    100     dpp_am_res_obs_eg_encap,
    101     dpp_am_res_vsq_src_port,
    102     dpp_am_res_vsq_pg,
    103     dpp_am_res_map_encap_intpri_color,
    104     dpp_am_res_field_entry_id,
    105     dpp_am_res_field_direct_extraction_entry_id,
    106     dpp_am_res_oam_mep_id,
    107     dpp_am_res_oam_mep_db_id,
    108     dpp_am_res_trap_etpp,
    109     dpp_am_res_global_sync_lif,
    110     dpp_am_res_oam_sd_sf_id,
    111     dpp_am_res_oam_y_1711_sd_sf_id,
    112     dpp_am_res_qos_ing_color,
    113     dpp_am_res_ipsec_sa_id,
    114     dpp_am_res_ipsec_tunnel_id,
    115     dpp_am_res_eg_data_l2tp,
    116     dpp_am_res_count /* MUST BE LAST -- NOT A VALID ID */
    117 } _dpp_am_res_t;
    118 
    119 /* 
    120  * Pool structure for all pools other than cosq. 
    121  * for cosq see bcm_dpp_am_cosq_pool_info_t
    122  * A pool_id represents mapping between resource_id and core_id.
    123  */
    124 typedef struct {
    125     int                 pool_id;        /* The pool on which the resource is allocated. */
    126     int                 res_id;         /* The resource using the pool. */
    127     int                 core_id;        /* The core using the pool.*/    
    128     sw_state_res_allocator_t res_type;       /* resource storage type */
    129     int                 start;          /* resource start */
    130     int                 count;          /* count of resources */
    131     int                 max_elements_per_allocation; /* required for wb storage */
    132 } bcm_dpp_am_pool_info_t;
    133 
    134 
    135 /* Template management Defines and Structures */
    136 typedef enum _dpp_am_template_e {
    137     /****************************************/
    138     /************ TM TEMPLATES **************/
    139     /****************************************/
    140     dpp_am_template_egress_thresh = 0,
    141     dpp_am_template_mirror_action_profile,
    142     dpp_am_template_egress_interface_unicast_thresh,
    143     dpp_am_template_egress_interface_multicast_thresh,
    144     dpp_am_template_user_defined_traps,
    145     dpp_am_template_snoop_cmd,
    146     dpp_am_template_trap_reserved_mc,
    147     dpp_am_template_prog_trap,
    148     dpp_am_template_queue_rate_cls,
    149     dpp_am_template_system_red_dp_pr,
    150     dpp_am_template_vsq_pg_tc_mapping,
    151     dpp_am_template_vsq_rate_cls_ct,
    152     dpp_am_template_vsq_rate_cls_cttc,
    153     dpp_am_template_vsq_rate_cls_ctcc,
    154     dpp_am_template_vsq_rate_cls_pp,
    155     dpp_am_template_vsq_rate_cls_src_port,
    156     dpp_am_template_vsq_rate_cls_pg,
    157     dpp_am_template_queue_discount_cls,
    158     dpp_am_template_pp_port_discount_cls,
    159     dpp_am_template_egress_port_discount_cls_type_raw,
    160     dpp_am_template_egress_port_discount_cls_type_cpu,
    161     dpp_am_template_egress_port_discount_cls_type_eth,
    162     dpp_am_template_egress_port_discount_cls_type_tm,
    163     dpp_am_template_cosq_port_hr_flow_control, /* e2e port hr flow control profile */
    164     dpp_am_template_cosq_sched_class,          /* scheduler (cl) class */
    165     dpp_am_template_fabric_tdm_link_ptr,       /* TDM Direct routing link pointer */
    166     dpp_am_template_ingress_flow_tc_mapping,    /* Ingress Flow TC Mapping Profiles */
    167     dpp_am_template_ingress_uc_tc_mapping,      /* Ingress UC TC Mapping Profiles */
    168     dpp_am_template_fc_generic_pfc_mapping,     /* Flow Control Generic PFC Profiles */
    169     dpp_am_template_fc_generic_pfc_mapping_c0,     /* Flow Control Generic PFC Profiles for priority 0 */
    170     dpp_am_template_fc_generic_pfc_mapping_c1,     /* Flow Control Generic PFC Profiles for priority 1 */
    171     dpp_am_template_fc_generic_pfc_mapping_c2,     /* Flow Control Generic PFC Profiles for priority 2 */
    172     dpp_am_template_fc_generic_pfc_mapping_c3,     /* Flow Control Generic PFC Profiles for priority 3 */
    173     dpp_am_template_fc_generic_pfc_mapping_c4,     /* Flow Control Generic PFC Profiles for priority 4 */
    174     dpp_am_template_fc_generic_pfc_mapping_c5,     /* Flow Control Generic PFC Profiles for priority 5 */
    175     dpp_am_template_fc_generic_pfc_mapping_c6,     /* Flow Control Generic PFC Profiles for priority 6 */
    176     dpp_am_template_fc_generic_pfc_mapping_c7,     /* Flow Control Generic PFC Profiles for priority 7 */
    177     dpp_am_template_cnm_queue_profile,
    178     dpp_am_template_tpid_profile,
    179     dpp_am_template_egress_queue_mapping,
    180     dpp_am_template_trap_egress,
    181     dpp_am_template_nrdy_threshold,
    182 
    183     /****************************************/
    184     /************   PP POOLS   **************/
    185     /****************************************/
    186     dpp_am_template_vlan_edit_profile_mapping,    /* VLAN Edit Profile */
    187     dpp_am_template_vlan_edit_profile_mapping_eg, /* Egress VLAN Edit Profile */      
    188     dpp_am_template_vsi_egress_profile,
    189     dpp_am_template_vsi_ingress_profile,
    190     dpp_am_template_reserved_mc,
    191     dpp_am_template_tpid_class,
    192     dpp_am_template_mpls_push_profile,
    193     dpp_am_template_lif_term_profile,
    194     dpp_am_template_lif_term_pw_with_cw_profile,
    195     dpp_am_template_port_mact_sa_drop_profile,
    196     dpp_am_template_port_mact_da_unknown_profile,
    197     /* don't separate between below 4 templates */
    198     dpp_am_template_meter_profile_a_low, 
    199     dpp_am_template_meter_profile_b_low, 
    200     /* don't separate between above 4 templates */
    201     dpp_am_template_l2_event_handle,            /* from even-profile, to <event x self/learn/shadow> */
    202     dpp_am_template_l2_vsi_learn_profile,       /* from learn-profile to <limit, event-profile, aging-profile> */
    203     dpp_am_template_l2_flooding_profile,        /* flooding by <port_profile,lif_profile> */
    204     dpp_am_template_vlan_port_protocol_profile, /* port protocol mapping. <port,profile> ->10ethertype,tc,vlan */
    205     dpp_am_template_ip_tunnel_src_ip,
    206     dpp_am_template_ip_tunnel_ttl,
    207     dpp_am_template_ip_tunnel_tos,
    208     dpp_am_template_ttl_scope_index, 
    209     dpp_am_template_oam_icc_map,
    210     dpp_am_template_oam_sa_mac,
    211     dpp_am_template_oam_punt_event_hendling_profile,
    212     dpp_am_template_oam_mep_profile_non_accelerated,
    213     dpp_am_template_oam_mep_profile_accelerated,
    214     dpp_am_template_bfd_mep_profile_non_accelerated,
    215     dpp_am_template_bfd_mep_profile_accelerated,
    216     dpp_am_template_oam_tx_priority,
    217     dpp_am_template_bfd_ip_dip,
    218     dpp_am_template_mpls_pwe_push_profile,
    219     dpp_am_template_bfd_req_interval_pointer,
    220     dpp_am_template_bfd_tos_ttl_profile,
    221     dpp_am_template_bfd_src_ip_profile,
    222     dpp_am_template_bfd_flags_profile,
    223     dpp_am_template_oam_lmm_nic_tables_profile,
    224     dpp_am_template_oam_lmm_oui_tables_profile,
    225     dpp_am_template_oam_eth1731_profile,
    226     dpp_am_template_oam_local_port_2_system_port,
    227     dpp_am_template_oam_oamp_pe_gen_mem,
    228     dpp_am_template_port_tpid_class_egress_acceptable_frame_type,
    229     dpp_am_template_ptp_port_profile,
    230     dpp_am_template_l3_vrrp,
    231     dpp_am_template_l3_rif_mac_termination_combination,
    232     dpp_am_template_eedb_roo_ll_format_eth_type_index,
    233     dpp_am_template_tpid_class_eg,
    234     dpp_am_template_out_rif_profile,
    235     dpp_am_template_oamp_pe_gen_mem_maid_48, 
    236     dpp_am_template_ip_tunnel_encapsulation_mode,
    237     dpp_am_template_crps_inpp_port_compensation_profile,
    238     dpp_am_template_crps_intm_port_compensation_profile,
    239     dpp_am_template_stat_interface_ing_port_compensation_profile,
    240     dpp_am_template_stat_interface_egr_port_compensation_profile,
    241     dpp_am_template_scheduler_adjust_size_final_delta, /* relevant for Jericho only */
    242     dpp_am_template_lif_mtu_profile, /*Relevant only for JB0 and above*/
    243     dpp_am_template_oamp_flex_ver_mask,
    244     dpp_am_template_oamp_cls_flex_crc,
    245     dpp_am_template_l2cp_egress_profile,
    246     dpp_am_template_oam_sd_sf_profile,
    247     dpp_am_template_bfd_sbfd_non_acc_src_ip_profile,
    248     dpp_am_template_count /* MUST BE LAST -- NOT A VALID ID */
    249 } _dpp_am_template_t;
    250 
    251 /* 
    252  * Template structure for templates other than those already supported by cosq
    253  * for warmboot.
    254  * A pool_id represents mapping between template id and core id.
    255  */
    256 typedef struct {
    257     int                    pool_id;         /* Pool id of the pool. */
    258     int                    template_id;     /* Template id using the pool. */
    259     int                    core_id;         /* Core id using the pool. */
    260     shr_template_manage_t  manager;
    261     int                    start;
    262     int                    count;
    263     int                    max_entities; /* max referring entities */
    264     uint32                 global_max;  /* Max referring entinties on all templates. */
    265     size_t                 data_size;
    266     shr_template_manage_hash_compare_extras_t hashExtra;
    267 } bcm_dpp_am_template_info_t;
    268 
    269 /* An array representing the various hash compare callbacks. */
    270 typedef enum _bcm_dpp_am_template_hash_compare_cb_idx_e {
    271     _bcm_dpp_am_template_hash_compare_cb_idx_memcpy,
    272     _bcm_dpp_am_template_hash_compare_cb_idx_user_defined_trap,
    273     _bcm_dpp_am_template_hash_compare_cb_idx_snoop_cmd,
    274     _bcm_dpp_am_template_hash_compare_cb_idx_discount_cls,
    275     _bcm_dpp_am_template_hash_compare_cb_idx_count
    276 } _bcm_dpp_am_template_hash_compare_cb_idx_t;
    277 
    278 extern shr_template_to_stream_t _bcm_dpp_am_template_to_stream_arr[_bcm_dpp_am_template_hash_compare_cb_idx_count];
    279 extern shr_template_from_stream_t _bcm_dpp_am_template_from_stream_arr[_bcm_dpp_am_template_hash_compare_cb_idx_count];
    280 
    281 
    282 /*Below is the global array of call back functions used to print the template data */
    283 extern shr_template_print_func_t _bcm_dpp_am_template_print_func[dpp_am_template_count];
    284 
    285 int
    286 _bcm_dpp_pp_resource_setup(int unit, int res_id, int core_id, int pool_id);
    287 
    288 int
    289 _bcm_dpp_template_setup(int unit, int template_id, int core_id, int pool_id);
    290 
    291 int
    292 _bcm_dpp_am_template_tinfo_get(int unit, int pool_idx, int template_id, bcm_dpp_am_template_info_t* t_info);
    293 
    294 int
    295 bcm_dpp_am_l2_vsi_vlan_alloc(int unit,
    296                              uint32 flags,
    297                              bcm_vlan_t *vsi);
    298 int
    299 bcm_dpp_am_l2_vpn_pwe_alloc(int unit,
    300                             uint32 lif_term_types,
    301                             uint32 flags,
    302                             int count,
    303                             SOC_PPC_LIF_ID *lif);
    304 int
    305 bcm_dpp_am_l3_lif_ip_tnl_alloc(int unit,
    306                                uint32 flags,
    307                                SOC_PPC_LIF_ID *lif);
    308 int
    309 bcm_dpp_am_l2_lif_mim_alloc(int unit);
    310 
    311 int
    312 bcm_dpp_am_mc_alloc(int unit,
    313                     uint32 flags, /* flags should be SHR_RES_ALLOC_WITH_ID; */
    314                     SOC_TMC_MULT_ID  *mc_id,
    315                     uint8 is_egress);
    316 
    317 
    318 typedef enum {
    319   /* Standard FEC */
    320   _BCM_DPP_AM_FEC_ALLOC_USAGE_STANDARD,
    321   /* L3 ECMP - DEPRECATED - DO NOT USE - only used by bcm_l3_egress_multipath_* */
    322   _BCM_DPP_AM_FEC_ALLOC_USAGE_ECMP,
    323   /* Group-B FEC (for Hierarchical FEC) */
    324   _BCM_DPP_AM_FEC_ALLOC_USAGE_CASCADED
    325 } _bcm_dpp_am_fec_alloc_usage;
    326 
    327 int
    328 bcm_dpp_am_fec_global_alloc(int unit,
    329                             uint32 flags,
    330                             _bcm_dpp_am_fec_alloc_usage usage,
    331                             int size,
    332                             int aligned,
    333                             int *elem); 
    334 int
    335 bcm_dpp_am_fec_alloc(int unit,
    336                      uint32 flags,
    337                      _bcm_dpp_am_fec_alloc_usage usage,
    338                      int size,/*non-zero for protection or ECMP*/
    339                      SOC_PPC_FEC_ID *fec_id);
    340 int
    341 bcm_dpp_am_failover_alloc(int unit,
    342                           uint32 flags,
    343                           int32 failover_type,
    344                           int32 nof_alloc_ids,
    345                           bcm_failover_t *failover_id);
    346 
    347 #define _BCM_DPP_AM_L3_EEP_TYPE_DEFAULT (0) /* Link-layer */
    348 #define _BCM_DPP_AM_L3_EEP_TYPE_ROO_LINKER_LAYER (1) /* ROO Linker-layer */
    349 
    350 
    351 int
    352 bcm_dpp_am_l3_eep_alloc(int unit,
    353                         uint32 types,
    354                         uint32 flags,
    355                         int *eep);
    356 
    357 #define _BCM_DPP_AM_IP_TUNNEL_EEP_TYPE_DEFAULT (0) /* IP tunnel  */
    358 #define _BCM_DPP_AM_IP_TUNNEL_EEP_TYPE_ROO     (1) /* ROO IP tunnel */
    359 int
    360 bcm_dpp_am_ip_tunnel_eep_alloc(int unit,
    361                                uint32 types, 
    362                                uint32 flags,
    363                                int *eep);
    364 
    365 int
    366 bcm_dpp_am_l2_encap_eep_alloc(int unit, uint32 flags,int *eep);
    367 int
    368 bcm_dpp_am_l2_encap_eep_is_alloced(int unit, int eep);
    369 int
    370 bcm_dpp_am_l2_encap_eep_dealloc(int unit, int eep);
    371 
    372 #define _BCM_DPP_AM_MPLS_EEP_TYPE_PWE                (0)
    373 #define _BCM_DPP_AM_MPLS_EEP_TYPE_SIMPLE_MPLS_TUNNEL (1)
    374 #define _BCM_DPP_AM_MPLS_EEP_TYPE_SECOND_MPLS_TUNNEL (2)
    375 /* This type is for creating PWE with EGRESS_ONLY flag. The functionality is the same as _BCM_DPP_AM_MPLS_EEP_TYPE_SECOND_MPLS_TUNNEL */
    376 #define _BCM_DPP_AM_MPLS_EEP_TYPE_PWE_EGRESS_ONLY    (3)
    377 int
    378 bcm_dpp_am_mpls_eep_alloc(int unit,
    379                           uint32 type,
    380                           uint32 flags,
    381                           int count,
    382                           int *eep);
    383 
    384 int
    385 bcm_dpp_am_ip_tunnel_glbl_src_ip_alloc(int unit,
    386                                        uint32 flags,
    387                                        int *idx);
    388 
    389 int
    390 bcm_dpp_am_ip_tunnel_glbl_ttl_alloc(int unit,
    391                                     uint32 flags,
    392                                     int *idx);
    393 int
    394 bcm_dpp_am_ip_tunnel_glbl_tos_alloc(int unit,
    395                                     uint32 flags,
    396                                     int *idx);
    397 
    398 #define _BCM_DPP_AM_OUT_AC_TYPE_DEFAULT           (0)
    399 #define _BCM_DPP_AM_OUT_AC_TYPE_PON_3_TAGS_DATA   (1)
    400 #define _BCM_DPP_AM_OUT_AC_TYPE_PON_3_TAGS_OUT_AC (2)
    401 #ifdef BCM_88660_A0
    402 #define _BCM_DPP_AM_OUT_AC_TYPE_BIG_OUT_AC        (3)
    403 #define _BCM_DPP_AM_OUT_AC_TYPE_DATA_MPLS_PHASE   (4)
    404 #endif
    405 
    406 int
    407 bcm_dpp_am_out_ac_alloc(int unit,
    408                         uint32 types,
    409                         uint32 flags,
    410                         SOC_PPC_AC_ID *out_ac);
    411 
    412 int
    413 bcm_dpp_am_qos_ing_elsp_alloc(int unit,
    414                               uint32 flags,
    415                               int *qos_id);
    416 
    417 int
    418 bcm_dpp_am_qos_ing_lif_cos_alloc(int unit,
    419                                  uint32 flags,
    420                                  int *qos_id);
    421 
    422 
    423 int
    424 bcm_dpp_am_qos_ing_pcp_vlan_alloc(int unit,
    425                                   uint32 flags,
    426                                   int *qos_id);
    427 
    428 int
    429 bcm_dpp_am_qos_ing_color_alloc(int unit,
    430                                   uint32 flags,
    431                                   int *qos_id);
    432 
    433 int
    434 bcm_dpp_am_qos_egr_remark_id_alloc(int unit,
    435                                    uint32 flags,
    436                                    int *qos_id);
    437 
    438 int
    439 bcm_dpp_am_qos_egr_mpls_php_id_alloc(int unit,
    440                                    uint32 flags,
    441                                    int *qos_id);
    442 
    443 int
    444 bcm_dpp_am_qos_egr_pcp_vlan_alloc(int unit,
    445                                   uint32 flags,
    446                                   int *qos_id);
    447 
    448 int
    449 bcm_dpp_am_qos_ing_cos_opcode_alloc(int unit,
    450                                     uint32 flags,
    451                                     int *qos_id);
    452 
    453 int
    454 bcm_dpp_am_qos_egr_l2_i_tag_alloc(int unit,
    455                                   uint32 flags,
    456                                   int *qos_id);
    457 
    458 #ifdef BCM_88660
    459 int
    460 bcm_dpp_am_qos_egr_dscp_exp_marking_alloc(int unit,
    461                                   uint32 flags,
    462                                   int *qos_id);
    463 #endif /* BCM_88660 */
    464 
    465 int
    466 bcm_dpp_am_meter_alloc(int unit,
    467 					   uint32 flags,
    468 					   int core,
    469 					   int meter_group,
    470 					   int nof_meters, 
    471 					   int *act_meter_core,
    472 					   int *act_meter_group,
    473 					   int *meter_id);
    474 
    475 int
    476 bcm_dpp_am_policer_alloc(int unit,
    477 						 int core_id,
    478                          uint32 flags,
    479                          int size,
    480                          int *policer_id);
    481 int
    482 bcm_dpp_am_vrf_alloc(int unit,
    483                      uint32 flags,
    484                      int *vrf_id);
    485 
    486 int
    487 bcm_dpp_am_vlan_edit_action_id_alloc(int unit,
    488                                      uint32 flags,
    489                                      int *action_id);
    490 
    491 int 
    492 _bcm_dpp_am_trap_alloc(int unit,
    493                        int flags,
    494                        int trap_id,
    495                        int *elem);
    496 int
    497 _bcm_dpp_am_trap_single_instance_alloc(int unit,
    498                                        int flags,
    499                                        int *elem);
    500 
    501 int
    502 _bcm_dpp_am_trap_single_instance_etpp_alloc(int unit,
    503                                        int flags,
    504                                        int *elem);
    505 int
    506 _bcm_dpp_am_trap_user_define_alloc(int unit,
    507                                    int flags,
    508                                    int *elem);
    509 int
    510 _bcm_dpp_am_trap_virtual_alloc(int unit,
    511                                int flags,
    512                                int *elem);
    513 
    514 int
    515 _bcm_dpp_am_trap_egress_alloc(int unit,
    516                               int flags,
    517                               int *elem);
    518 int
    519 _bcm_dpp_am_snoop_alloc(int unit,
    520                         int flags,
    521                         int snoop_cmnd,
    522                         int *elem);
    523 int
    524 _bcm_dpp_am_snoop_cmd_alloc(int unit,
    525                             int flags,
    526                             int *elem);
    527 
    528 int 
    529 _bcm_dpp_am_template_user_defined_trap_allocate(int unit,
    530                                                 uint32 flags,
    531                                                 int port,
    532                                                 const bcm_dpp_user_defined_traps_t* data,
    533                                                 int *is_allocated,
    534                                                 int *user_defined_trap);
    535 
    536 int 
    537 _bcm_dpp_am_template_tpid_profile_allocate_group(int unit, 
    538                                                  uint32 flags, 
    539                                                  uint32 *data, 
    540                                                  int ref_count, 
    541                                                  int *is_allocated, 
    542                                                  int *template_param);
    543 
    544 
    545 int 
    546 _bcm_dpp_am_template_vlan_edit_profile_mapping_alloc(int unit, 
    547                                                      int flags, 
    548                                                      SOC_PPC_LIF_ID lif_id, 
    549                                                      bcm_dpp_vlan_edit_profile_mapping_info_t* mapping_profile, 
    550                                                      int *template_param,
    551                                                      int *is_allocated);
    552 
    553 int 
    554 _bcm_dpp_am_template_vlan_edit_profile_eg_mapping_allocate(int unit, 
    555                                                            uint32 flags, 
    556                                                            bcm_dpp_vlan_egress_edit_profile_info_t *mapping_profile, 
    557                                                            uint32 *template_id, 
    558                                                            int *is_allocated);
    559 
    560 int _bcm_dpp_am_template_mpls_push_profile_alloc(int unit, 
    561                                                  int flags, 
    562                                                  int push_profile, 
    563                                                  SOC_PPC_EG_ENCAP_PUSH_PROFILE_INFO *push_profile_info, 
    564                                                  int *new_push_profile,
    565                                                  int *is_allocated);
    566 int
    567 _bcm_dpp_am_template_trap_egress_allocate(int unit,
    568                                           int flags,
    569                                           SOC_SAND_IN SOC_PPC_TRAP_EG_ACTION_PROFILE_INFO *data,
    570                                           int *template_param);
    571 
    572 #endif /* INCLUDE_ALLOC_MNGR_SHR_H */