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_ */