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

hurricane3.h (8678B)


      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-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        hurricane3.h
      8  * Purpose:     Function declarations for Hurricane3  bcm functions
      9  */
     10 
     11 #ifndef _BCM_INT_HURRICANE3_H_
     12 #define _BCM_INT_HURRICANE3_H_
     13 #ifdef BCM_FIELD_SUPPORT 
     14 #include <bcm_int/esw/field.h>
     15 #endif /* BCM_FIELD_SUPPORT */
     16 
     17 #if defined(BCM_HURRICANE3_SUPPORT)
     18 #include <bcm_int/esw/mbcm.h>
     19 #include <bcm_int/esw/switch_match.h>
     20 
     21 /* HR3 specific HW index mask for L3_IIFm.TRUST_DSCP_PTRf 
     22  *  - L3_IIFm.TRUST_DSCP_PTRf is 6 bit length field.
     23  *  - value 63 means "Do not trust DSCP field"
     24  *  - other value must be mask to 0-31 as the index to DSCP_TABLEm
     25  *    -> this is different with other chips
     26  */
     27 #define _BCM_HR3_L3IIF_TRUST_DSCP_PTR_MAX     (63)
     28 #define _BCM_HR3_L3IIF_TRUST_DSCP_PTR_MASK    (0x1f)
     29 
     30 /* Switch Encap related definitions */
     31 #define _BCM_SWITCH_ENCAP_TYPE_MASK        0xfffffff
     32 #define _BCM_SWITCH_ENCAP_SHIFT            28
     33 
     34 /* Switch Encap Types (4-bit) */
     35 #define _BCM_SWITCH_ENCAP_TYPE_MIML             1
     36 #define _BCM_SWITCH_ENCAP_TYPE_CUSTOM_HEADER    2
     37 
     38 /* MiML encap id: type(4-bit), egr_header_encap_index(12-bit), nh_index(16-bit) */
     39 #define _BCM_SWITCH_ENCAP_MIML_NHI_MASK                0xffff
     40 #define _BCM_SWITCH_ENCAP_MIML_NHI_SHIFT               0
     41 #define _BCM_SWITCH_ENCAP_MIML_EGR_HEADER_ENCAP_MASK   0xfff
     42 #define _BCM_SWITCH_ENCAP_MIML_EGR_HEADER_ENCAP_SHIFT  16
     43 
     44 #define _BCM_SWITCH_ENCAP_MIML_PKT_TYPE_MASK    0xf
     45 #define _BCM_SWITCH_ENCAP_MIML_PKT_TYPE_SHIFT   28
     46 #define _BCM_SWITCH_ENCAP_MIML_IID_MASK         0xfff
     47 #define _BCM_SWITCH_ENCAP_MIML_IID_SHIFT        16
     48 #define _BCM_SWITCH_ENCAP_MIML_LENGTH_MASK      0x3fff
     49 #define _BCM_SWITCH_ENCAP_MIML_LENGTH_SHIFT     0
     50 
     51 /* Custom Header encap id: type(4-bit), egr_header_encap_index(12-bit) */
     52 #define _BCM_SWITCH_ENCAP_CUSTOM_HEADER_EGR_HEADER_ENCAP_MASK   0xfff
     53 #define _BCM_SWITCH_ENCAP_CUSTOM_HEADER_EGR_HEADER_ENCAP_SHIFT  0
     54 
     55 #ifdef BCM_FIELD_SUPPORT 
     56 extern int _bcm_field_hr3_init(int unit, _field_control_t *fc);
     57 #endif
     58 
     59 extern int bcm_hr3_cosq_drop_status_enable_set(int unit, bcm_port_t port, int enable);
     60 
     61 extern int bcm_hr3_port_init(int unit);
     62 extern int bcm_hr3_port_egress_set(int unit, bcm_port_t port, int modid,
     63                                   bcm_pbmp_t pbmp);
     64 extern int bcm_hr3_port_egress_get(int unit, bcm_port_t port, int modid,
     65                                   bcm_pbmp_t *pbmp);
     66 extern int _bcm_hr3_mod_port_tpid_enable_write(int unit, bcm_module_t mod,
     67                     bcm_port_t port, int tpid_enable);
     68 extern int _bcm_hr3_mod_port_tpid_enable_read(int unit, bcm_module_t mod,
     69                     bcm_port_t port, int *tpid_enable);
     70 extern int _bcm_hr3_mod_port_inner_tpid_enable_write(int unit, bcm_module_t mod,
     71                     bcm_port_t port, int tpid_enable);
     72 extern int _bcm_hr3_mod_port_inner_tpid_enable_read(int unit, bcm_module_t mod,
     73                     bcm_port_t port, int *tpid_enable);
     74 extern int _bcm_hr3_mod_port_tpid_set(int unit, bcm_module_t mod,
     75                     bcm_port_t port, uint16 tpid);
     76 extern int _bcm_hr3_mod_port_tpid_get(int unit, bcm_module_t mod,
     77                     bcm_port_t port, uint16 *tpid);
     78 extern int _bcm_hr3_mod_port_tpid_add(int unit, bcm_module_t mod,
     79                     bcm_port_t port, uint16 tpid);
     80 extern int _bcm_hr3_mod_port_tpid_delete(int unit, bcm_module_t mod,
     81                     bcm_port_t port, uint16 tpid);
     82 extern int _bcm_hr3_mod_port_tpid_delete_all(int unit, bcm_module_t mod,
     83                     bcm_port_t port);
     84 
     85 /* ################ VLAN related ################### */
     86 extern int _bcm_hr3_vlan_translate_stat_attach(int unit, bcm_gport_t port,
     87                 bcm_vlan_translate_key_t key_type, bcm_vlan_t outer_vlan,
     88                 bcm_vlan_t inner_vlan, uint32 stat_counter_id);
     89                 
     90 extern int _bcm_hr3_vlan_translate_stat_detach(int unit, bcm_gport_t port,
     91                 bcm_vlan_translate_key_t key_type, bcm_vlan_t outer_vlan,
     92                 bcm_vlan_t inner_vlan);
     93 
     94 extern int _bcm_hr3_vlan_translate_stat_counter_set(int unit, bcm_gport_t port,
     95                 bcm_vlan_translate_key_t key_type, bcm_vlan_t outer_vlan,
     96                 bcm_vlan_t inner_vlan, bcm_vlan_stat_t stat,
     97                 uint32 num_entries, uint32 *counter_indexes,
     98                 bcm_stat_value_t *counter_values);
     99                 
    100 extern int _bcm_hr3_vlan_translate_stat_counter_get(int unit, int sync_mode,
    101                 bcm_gport_t port, bcm_vlan_translate_key_t key_type,
    102                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    103                 bcm_vlan_stat_t stat, uint32 num_entries,
    104                 uint32 *counter_indexes, bcm_stat_value_t *counter_values);
    105 
    106 extern int _bcm_hr3_vlan_translate_stat_enable_set(int unit, bcm_gport_t port,
    107                 bcm_vlan_translate_key_t key_type,
    108                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    109                 int enable);
    110 
    111 extern int _bcm_hr3_vlan_translate_stat_id_get(int unit, bcm_gport_t port,
    112                 bcm_vlan_translate_key_t key_type, 
    113                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    114                 bcm_vlan_stat_t stat, uint32 *stat_counter_id);
    115 
    116 extern int _bcm_hr3_vlan_translate_egress_stat_attach(int unit, int port_class,
    117                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    118                 uint32 stat_counter_id);
    119 extern int _bcm_hr3_vlan_translate_egress_stat_counter_get(int unit, int sync_mode,
    120                 int port_class, bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    121                 bcm_vlan_stat_t stat, uint32 num_entries, uint32 *counter_indexes,
    122                 bcm_stat_value_t *counter_values);
    123 extern int _bcm_hr3_vlan_translate_egress_stat_counter_set(int unit, int port_class,
    124                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    125                 bcm_vlan_stat_t stat, uint32 num_entries,
    126                 uint32 *counter_indexes, bcm_stat_value_t *counter_values);
    127 extern int _bcm_hr3_vlan_translate_egress_stat_id_get(int unit, int port_class,
    128                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan,
    129                 bcm_vlan_stat_t stat, uint32 *stat_counter_id);
    130 extern int _bcm_hr3_vlan_translate_egress_stat_detach(int unit, int port_class,
    131                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan);
    132 extern int _bcm_hr3_vlan_translate_egress_stat_enable_set(int unit, int port_class, 
    133                 bcm_vlan_t outer_vlan, bcm_vlan_t inner_vlan, int enable);
    134 
    135 /* ################ Switch Encap related ################### */
    136 extern int _bcm_hr3_switch_encap_idx2id(int unit, 
    137                 int type, int index_count, int *index_array,  bcm_if_t *encap_id);
    138 extern int _bcm_hr3_switch_encap_id2idx(int unit, 
    139                 bcm_if_t encap_id, int index_count, int *index_array);
    140 extern int bcm_hr3_switch_encap_detach(int unit);
    141 extern int bcm_hr3_switch_encap_init(int unit);
    142 extern int bcm_hr3_switch_encap_create(int unit, 
    143                 bcm_switch_encap_info_t *encap_info, bcm_if_t *encap_id);
    144 extern int _bcm_hr3_switch_encap_create(int unit,
    145                 bcm_switch_encap_info_t *encap_info,
    146                 uint32 count, bcm_if_t *base_encap_id);
    147 extern int bcm_hr3_switch_encap_destroy(int unit, bcm_if_t encap_id);
    148 extern int bcm_hr3_switch_encap_destroy_all(int unit);
    149 extern int bcm_hr3_switch_encap_set(int unit, bcm_if_t encap_id, 
    150                 bcm_switch_encap_info_t *encap_info);
    151 extern int bcm_hr3_switch_encap_get(int unit, bcm_if_t encap_id, 
    152                 bcm_switch_encap_info_t *encap_info);
    153 extern int bcm_hr3_switch_encap_traverse(int unit, 
    154                 bcm_switch_encap_traverse_cb cb_fn, void *user_data);
    155 
    156 #ifdef BCM_WARM_BOOT_SUPPORT
    157 extern int _bcm_hr3_switch_encap_sync(int unit, uint8 **scache_ptr);
    158 extern int _bcm_hr3_switch_encap_reinit(int unit, uint8 **scache_ptr);
    159 extern int _bcm_hr3_switch_encap_wb_scache_size_get(int unit,
    160 	          int *req_scache_size);
    161 #endif /* BCM_WARM_BOOT_SUPPORT */
    162 
    163 #ifdef BCM_SWITCH_MATCH_SUPPORT
    164 /* ################ Switch Match related ################### */
    165 extern const bcmi_switch_match_service_info_t bcmi_hr3_miml_match_info;
    166 extern const bcmi_switch_match_service_info_t bcmi_hr3_custom_hdr_match_info;
    167 
    168 extern int
    169 bcmi_hr3_switch_match_dev_info_init(
    170     int unit,
    171     const bcmi_switch_match_dev_info_t **dev_info);
    172 #endif /* BCM_SWITCH_MATCH_SUPPORT */
    173 
    174 extern int bcmi_wh2_port_encap_set(int unit, bcm_port_t port, int mode);
    175 extern int bcmi_wh2_port_encap_get(int unit, bcm_port_t port, int *mode);
    176 #endif  /* BCM_HURRICANE3_SUPPORT */
    177 #endif  /* !_BCM_INT_HURRICANE3_H_ */