trx.h (62767B)
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: trx.h 8 * Purpose: Function declarations for Triumph Micro Architecture 9 * based devices. 10 */ 11 12 #ifndef _BCM_INT_TRX_H_ 13 #define _BCM_INT_TRX_H_ 14 15 #if defined(BCM_TRX_SUPPORT) 16 #include <bcm_int/esw/firebolt.h> 17 18 #if defined(INCLUDE_L3) 19 #define BCM_TRX_DEFIP128_HASH_SZ (0x6) 20 #define BCM_TRX_DEFIP128(_unit_) l3_trx_defip_128[(_unit_)] 21 #define BCM_TRX_DEFIP128_ARR(_unit_) BCM_TRX_DEFIP128((_unit_))->entry_array 22 #define BCM_TRX_DEFIP128_IDX_MAX(_unit_) BCM_TRX_DEFIP128((_unit_))->idx_max 23 #define BCM_TRX_DEFIP128_USED_COUNT(_unit_) BCM_TRX_DEFIP128((_unit_))->used_count 24 #define BCM_TRX_DEFIP128_TOTAL(_unit_) BCM_TRX_DEFIP128((_unit_))->total_count 25 #define BCM_TRX_DEFIP128_URPF_OFFSET(_unit_) BCM_TRX_DEFIP128((_unit_))->urpf_offset 26 #define BCM_TRX_DEFIP128_ENTRY_SET(_unit_, _idx_, _plen_, _hash_) \ 27 BCM_TRX_DEFIP128_ARR((_unit_))[(_idx_)].prefix_len = (_plen_); \ 28 BCM_TRX_DEFIP128_ARR((_unit_))[(_idx_)].entry_hash = (_hash_) 29 30 /* Macro to know if L3 defip memories are enabled in external tcam.*/ 31 #define EXT_TCAM_IS_L3_ENABLED(_u_) ((SOC_MEM_IS_ENABLED(_u_, EXT_IPV4_DEFIPm) && \ 32 soc_mem_index_count(_u_, EXT_IPV4_DEFIPm)) || \ 33 (SOC_MEM_IS_ENABLED(_u_, EXT_IPV6_64_DEFIPm) && \ 34 soc_mem_index_count(_u_, EXT_IPV6_64_DEFIPm)) || \ 35 (SOC_MEM_IS_ENABLED(_u_, EXT_IPV6_128_DEFIPm) && \ 36 soc_mem_index_count(_u_, EXT_IPV6_128_DEFIPm))) 37 38 typedef struct _bcm_l3_defip_128_entry_s { 39 uint8 prefix_len; /* Route entry prefix length.*/ 40 uint8 entry_hash; /* Route entry key hash. */ 41 } _bcm_l3_defip_128_entry_t; 42 43 typedef struct _bcm_l3_defip_128_table_s { 44 _bcm_l3_defip_128_entry_t *entry_array; /* Cam entries array. */ 45 uint16 idx_max; /* Last cam entry index. */ 46 uint16 used_count; /* Used cam entry count. */ 47 uint16 total_count; /* Total number of available entries.*/ 48 uint16 urpf_offset; /* Src lookup start offset. */ 49 } _bcm_l3_defip_128_table_t; 50 51 extern int _bcm_trx_defip_128_init(int unit); 52 extern int _bcm_trx_defip_128_deinit(int unit); 53 extern int _bcm_trx_defip_128_get(int unit, _bcm_defip_cfg_t *lpm_cfg, 54 int *nh_ecmp_idx); 55 extern int _bcm_trx_defip_128_add(int unit, _bcm_defip_cfg_t *lpm_cfg, 56 int nh_ecmp_idx); 57 extern int _bcm_trx_defip_128_delete(int unit, _bcm_defip_cfg_t *lpm_cfg); 58 extern int _bcm_trx_defip_128_update_match(int unit, _bcm_l3_trvrs_data_t *trv_data); 59 extern int _bcm_trx_l3_defip_mem_get(int unit, uint32 flags, 60 int plen, soc_mem_t *mem); 61 extern int _bcm_trx_l3_defip_verify_internal_mem_usage(int unit); 62 extern int _bcm_trx_tnl_type_to_hw_code(int unit, bcm_tunnel_type_t tnl_type, 63 int *hw_code, int *entry_type); 64 extern int _bcm_trx_tnl_hw_code_to_type(int unit, int hw_tnl_type, 65 int entry_type, bcm_tunnel_type_t 66 *tunnel_type); 67 extern int _bcm_trx_tunnel_dscp_map_port_set(int unit, bcm_port_t port, 68 bcm_tunnel_dscp_map_t *dscp_map); 69 extern int _bcm_trx_tunnel_dscp_map_port_get(int unit, bcm_port_t port, 70 bcm_tunnel_dscp_map_t *dscp_map); 71 extern int bcm_trx_multicast_init(int unit); 72 extern int bcm_trx_multicast_detach(int unit); 73 extern int bcm_trx_multicast_group_get(int unit, bcm_multicast_t group, 74 uint32 *flags); 75 extern int bcm_trx_multicast_group_traverse(int unit, 76 bcm_multicast_group_traverse_cb_t trav_fn, 77 uint32 flags, void *user_data); 78 extern int _field_trx_meter_index_in_use(int unit, _field_stage_t *stage_fc, 79 _field_slice_t *fs, _field_meter_pool_t *f_mp, 80 uint32 meter_pair_mode, uint32 meter_offset, 81 int idx); 82 extern int _field_trx_meter_pool_resolve(int unit, _field_stage_t *stage_fc, 83 int meter_pair_idx, int *pool_num, 84 int *meter_idx); 85 86 87 #ifdef BCM_WARM_BOOT_SUPPORT 88 extern int _bcm_trx_multicast_sync(int unit); 89 #endif /* BCM_WARM_BOOT_SUPPORT */ 90 #endif /* INCLUDE_L3 */ 91 92 #define _BCM_TRX_INT_PRI_MAX 15 93 #define _BCM_TRX_INT_PRI_MIN 0 94 95 #define _BCM_TRX_TAG_ACTION_NONE 0 96 #define _BCM_TRX_TAG_ACTION_ADD 1 97 #define _BCM_TRX_TAG_ACTION_REPLACE 2 98 #define _BCM_TRX_TAG_ACTION_DELETE 3 99 #define _BCM_TRX_TAG_ACTION_COPY 4 100 #if defined(BCM_TRIDENT2_SUPPORT) 101 #define _BCM_TRX_TAG_ACTION_COPY_VSAN 5 102 #define _BCM_TRX_TAG_ACTION_REPLACE_VSAN 6 103 #endif 104 105 #define _BCM_TRX_PRI_CFI_ACTION_NONE 0 106 #define _BCM_TRX_PRI_CFI_ACTION_ADD 1 107 #define _BCM_TRX_PRI_CFI_ACTION_REPLACE 2 108 #define _BCM_TRX_PRI_CFI_ACTION_COPY 3 109 #if defined(BCM_TRIDENT2_SUPPORT) 110 #define _BCM_TRX_PRI_CFI_ACTION_COPY_VSAN 4 111 #define _BCM_TRX_PRI_CFI_ACTION_REPLACE_VSAN 5 112 #endif 113 114 /* Number of lookup types in bcm_vlan_block_t structure. */ 115 #define _BCM_VLAN_BLOCK_LOOKUP_TYPES (4) 116 117 #define _BCM_TRX_TAG_ACTION_ENCODE(_action_) \ 118 ((_action_) == bcmVlanActionNone ? _BCM_TRX_TAG_ACTION_NONE : \ 119 (_action_) == bcmVlanActionAdd ? _BCM_TRX_TAG_ACTION_ADD : \ 120 (_action_) == bcmVlanActionReplace ? _BCM_TRX_TAG_ACTION_REPLACE : \ 121 (_action_) == bcmVlanActionDelete ? _BCM_TRX_TAG_ACTION_DELETE : \ 122 _BCM_TRX_TAG_ACTION_COPY) 123 124 #define _BCM_TRX_TAG_ACTION_DECODE(_hw_action_) \ 125 ((_hw_action_) == _BCM_TRX_TAG_ACTION_NONE ? bcmVlanActionNone : \ 126 (_hw_action_) == _BCM_TRX_TAG_ACTION_ADD ? bcmVlanActionAdd : \ 127 (_hw_action_) == _BCM_TRX_TAG_ACTION_REPLACE ? bcmVlanActionReplace : \ 128 (_hw_action_) == _BCM_TRX_TAG_ACTION_DELETE ? bcmVlanActionDelete : \ 129 bcmVlanActionCopy) 130 131 #if defined(BCM_TRIDENT2_SUPPORT) 132 /* extended version for fcoe capable chips */ 133 134 #define _BCM_TRX_TAG_ACTION_ENCODE_EGR_FCOE_EXT(_action_) \ 135 ((_action_) == bcmVlanActionNone ? _BCM_TRX_TAG_ACTION_NONE : \ 136 (_action_) == bcmVlanActionAdd ? _BCM_TRX_TAG_ACTION_ADD : \ 137 (_action_) == bcmVlanActionReplace ? _BCM_TRX_TAG_ACTION_REPLACE : \ 138 (_action_) == bcmVlanActionDelete ? _BCM_TRX_TAG_ACTION_DELETE : \ 139 (_action_) == bcmVlanActionCopyVsan ? _BCM_TRX_TAG_ACTION_COPY_VSAN : \ 140 (_action_) == bcmVlanActionReplaceVsan ? _BCM_TRX_TAG_ACTION_REPLACE_VSAN : \ 141 _BCM_TRX_TAG_ACTION_COPY) 142 143 #define _BCM_TRX_TAG_ACTION_DECODE_EGR_FCOE_EXT(_hw_action_) \ 144 ((_hw_action_) == _BCM_TRX_TAG_ACTION_NONE ? bcmVlanActionNone : \ 145 (_hw_action_) == _BCM_TRX_TAG_ACTION_ADD ? bcmVlanActionAdd : \ 146 (_hw_action_) == _BCM_TRX_TAG_ACTION_REPLACE ? bcmVlanActionReplace : \ 147 (_hw_action_) == _BCM_TRX_TAG_ACTION_DELETE ? bcmVlanActionDelete : \ 148 (_hw_action_) == _BCM_TRX_TAG_ACTION_COPY_VSAN ? bcmVlanActionCopyVsan : \ 149 (_hw_action_) == _BCM_TRX_TAG_ACTION_REPLACE_VSAN ? bcmVlanActionReplaceVsan : \ 150 bcmVlanActionCopy) 151 152 #endif 153 154 155 #define _BCM_TRX_PRI_CFI_ACTION_ENCODE(_action_) \ 156 ((_action_) == bcmVlanActionNone ? _BCM_TRX_PRI_CFI_ACTION_NONE : \ 157 (_action_) == bcmVlanActionAdd ? _BCM_TRX_PRI_CFI_ACTION_ADD : \ 158 (_action_) == bcmVlanActionReplace ? _BCM_TRX_PRI_CFI_ACTION_REPLACE : \ 159 _BCM_TRX_PRI_CFI_ACTION_COPY) 160 161 #define _BCM_TRX_PRI_CFI_ACTION_DECODE(_hw_action_) \ 162 ((_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_NONE ? bcmVlanActionNone : \ 163 (_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_ADD ? bcmVlanActionAdd : \ 164 (_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_REPLACE ? bcmVlanActionReplace : \ 165 bcmVlanActionCopy) 166 167 #if defined(BCM_TRIDENT2_SUPPORT) 168 /* extended version for fcoe capable chips */ 169 #define _BCM_TRX_PRI_CFI_ACTION_ENCODE_FCOE_EXT(_action_) \ 170 ((_action_) == bcmVlanActionNone ? _BCM_TRX_PRI_CFI_ACTION_NONE : \ 171 (_action_) == bcmVlanActionAdd ? _BCM_TRX_PRI_CFI_ACTION_ADD : \ 172 (_action_) == bcmVlanActionReplace ? _BCM_TRX_PRI_CFI_ACTION_REPLACE : \ 173 (_action_) == bcmVlanActionCopyVsan ? _BCM_TRX_PRI_CFI_ACTION_COPY_VSAN : \ 174 (_action_) == bcmVlanActionReplaceVsan ? _BCM_TRX_PRI_CFI_ACTION_REPLACE_VSAN : \ 175 _BCM_TRX_PRI_CFI_ACTION_COPY) 176 177 #define _BCM_TRX_PRI_CFI_ACTION_DECODE_FCOE_EXT(_hw_action_) \ 178 ((_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_NONE ? bcmVlanActionNone : \ 179 (_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_ADD ? bcmVlanActionAdd : \ 180 (_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_REPLACE ? bcmVlanActionReplace : \ 181 (_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_COPY_VSAN ? bcmVlanActionCopyVsan : \ 182 (_hw_action_) == _BCM_TRX_PRI_CFI_ACTION_REPLACE_VSAN ? bcmVlanActionReplaceVsan : \ 183 bcmVlanActionCopy) 184 #endif 185 186 /* 187 * Vlan block profile structure. 188 * 189 * Purpose : Implement different block functionality per vlan. 190 */ 191 typedef struct _trx_vlan_block_s { 192 soc_pbmp_t first_mask; 193 soc_pbmp_t second_mask; 194 uint8 broadcast_mask_sel; 195 uint8 unknown_unicast_mask_sel; 196 uint8 unknown_mulitcast_mask_sel; 197 uint8 known_mulitcast_mask_sel; 198 } _trx_vlan_block_t; 199 200 /* Default Engress Vlan Translate Action Profile Table Index */ 201 #define BCM_TRX_EGR_VLAN_ACTION_PROFILE_DEFAULT 0 202 203 typedef union egr_qos_l2_map_entry_t_ { 204 egr_zone_1_dot1p_mapping_table_1_entry_t table_v2; 205 egr_pri_cng_map_entry_t table_v1; 206 }egr_qos_l2_map_entry_t; 207 208 typedef union egr_qos_l3_map_entry_t_ { 209 egr_zone_4_qos_mapping_table_entry_t table_v2; 210 egr_dscp_table_entry_t table_v1; 211 }egr_qos_l3_map_entry_t; 212 213 extern int _bcm_trx_vlan_action_verify(int unit, bcm_vlan_action_set_t *action); 214 #ifdef BCM_TRIDENT2PLUS_SUPPORT 215 extern int 216 _bcm_misc_port_profile_entry_add(int unit, void **entries, int entries_per_set, uint32 *index); 217 extern int _bcm_misc_port_profile_entry_get(int unit, int index, int count, void **entries); 218 extern int _bcm_misc_port_profile_entry_delete(int unit, int index); 219 extern int 220 _bcm_misc_port_profile_mem_reference(int unit, int index, int entries_per_set); 221 extern int _bcm_misc_port_profile_field32_modify(int unit, int table_id, 222 soc_field_t field, uint32 value); 223 #endif /* BCM_TRIDENT2PLUS_SUPPORT */ 224 extern int _bcm_trx_vlan_action_profile_init(int unit); 225 #if defined(BCM_TOMAHAWK_SUPPORT) || defined(BCM_TRIDENT3_SUPPORT) || \ 226 defined(BCM_KATANA2_SUPPORT) 227 extern int _bcm_th_port_vlan_action_profile_reinit(int unit); 228 #endif 229 extern int _bcm_trx_vlan_action_profile_entry_add(int unit, 230 bcm_vlan_action_set_t *action, 231 uint32 *index); 232 extern void _bcm_trx_vlan_action_profile_entry_increment(int unit, uint32 index); 233 extern void _bcm_trx_vlan_action_profile_entry_get(int unit, 234 bcm_vlan_action_set_t *action, 235 uint32 index); 236 extern int _bcm_trx_vlan_action_profile_entry_delete(int unit, uint32 index); 237 extern int _bcm_trx_vlan_action_profile_detach(int unit); 238 239 extern int _bcm_trx_vlan_range_profile_entry_delete(int unit, uint32 index); 240 extern void _bcm_trx_vlan_range_profile_entry_increment(int unit, uint32 index); 241 242 extern int _bcm_trx_egr_vlan_action_profile_entry_add(int unit, 243 bcm_vlan_action_set_t *action, 244 uint32 *index); 245 extern void _bcm_trx_egr_vlan_action_profile_entry_increment(int unit, uint32 index); 246 extern void _bcm_trx_egr_vlan_action_profile_entry_get(int unit, 247 bcm_vlan_action_set_t *action, 248 uint32 index); 249 extern int _bcm_trx_egr_vlan_action_profile_entry_delete(int unit, uint32 index); 250 251 extern int _bcm_trx_vlan_ip_action_add(int unit, bcm_vlan_ip_t *vlan_ip, 252 bcm_vlan_action_set_t *action); 253 extern int _bcm_trx_vlan_ip_action_get(int unit, bcm_vlan_ip_t *vlan_ip, 254 bcm_vlan_action_set_t *action); 255 extern int _bcm_trx_vlan_ip_action_traverse(int unit, 256 bcm_vlan_ip_action_traverse_cb cb, 257 void *user_data); 258 259 260 extern int _bcm_trx_vlan_ip_delete(int unit, bcm_vlan_ip_t *vlan_ip); 261 extern int _bcm_trx_vlan_ip_delete_all(int unit); 262 extern int _bcm_trx_vlan_mac_action_add(int unit, bcm_mac_t mac, 263 bcm_vlan_action_set_t *action); 264 extern int _bcm_trx_vlan_mac_delete(int unit, bcm_mac_t mac); 265 extern int _bcm_trx_vlan_mac_delete_all(int unit); 266 267 extern int _bcm_trx_vlan_port_prot_match_get(int unit, 268 bcm_port_frametype_t frame, 269 bcm_port_ethertype_t ether, 270 int *match_idx); 271 extern int _bcm_trx_vlan_port_prot_empty_get(int unit, int *empty_idx); 272 273 extern int _bcm_trx_lltag_vlan_translate_entry_assemble(int unit, void *vent, 274 bcm_gport_t port, 275 bcm_vlan_translate_key_t key_type, 276 bcm_vlan_t lltag_vlan, 277 bcm_vlan_t other_vlan); 278 279 extern int _bcm_trx_vlan_translate_entry_assemble(int unit, void *vent, 280 bcm_gport_t port, 281 bcm_vlan_translate_key_t key_type, 282 bcm_vlan_t inner_vlan, 283 bcm_vlan_t outer_vlan); 284 285 extern int _bcm_trx_vlan_translate_action_add(int unit, 286 bcm_gport_t port, 287 bcm_vlan_translate_key_t key_type, 288 bcm_vlan_t outer_vlan, 289 bcm_vlan_t inner_vlan, 290 bcm_vlan_action_set_t *action); 291 extern int _bcm_trx_vlan_translate_action_delete(int unit, 292 bcm_gport_t port, 293 bcm_vlan_translate_key_t key_type, 294 bcm_vlan_t outer_vlan, 295 bcm_vlan_t inner_vlan); 296 extern int _bcm_trx_vlan_translate_action_delete_all(int unit); 297 extern int _bcm_trx_vlan_translate_action_get (int unit, 298 bcm_gport_t port, 299 bcm_vlan_translate_key_t key_type, 300 bcm_vlan_t outer_vid, 301 bcm_vlan_t inner_vid, 302 bcm_vlan_action_set_t *action); 303 extern int _bcm_trx_vlan_translate_action_range_add(int unit, 304 bcm_gport_t port, 305 bcm_vlan_t outer_vlan_low, 306 bcm_vlan_t outer_vlan_high, 307 bcm_vlan_t inner_vlan_low, 308 bcm_vlan_t inner_vlan_high, 309 bcm_vlan_action_set_t *action); 310 extern int _bcm_trx_vlan_translate_action_range_get(int unit, 311 bcm_gport_t port, 312 bcm_vlan_t outer_vlan_low, 313 bcm_vlan_t outer_vlan_high, 314 bcm_vlan_t inner_vlan_low, 315 bcm_vlan_t inner_vlan_high, 316 bcm_vlan_action_set_t *action); 317 extern int _bcm_trx_vlan_translate_action_range_delete(int unit, 318 bcm_gport_t port, 319 bcm_vlan_t outer_vlan_low, 320 bcm_vlan_t outer_vlan_high, 321 bcm_vlan_t inner_vlan_low, 322 bcm_vlan_t inner_vlan_high); 323 extern int _bcm_trx_vlan_translate_action_range_delete_all(int unit); 324 extern int _bcm_trx_vlan_translate_action_range_traverse(int unit, 325 _bcm_vlan_translate_traverse_t *trvs_info); 326 327 extern int _bcm_trx_vlan_translate_parse(int unit, soc_mem_t mem, uint32 *vent, 328 _bcm_vlan_translate_traverse_t *trvs_info); 329 extern int _bcm_trx_vlan_translate_egress_entry_assemble(int unit, 330 void *vent, 331 int port_class, 332 bcm_vlan_t outer_vlan, 333 bcm_vlan_t inner_vlan, 334 bcm_vlan_translate_key_t key_type); 335 extern int _bcm_trx_vlan_translate_egress_action_add(int unit, int port_class, 336 bcm_vlan_t outer_vlan, 337 bcm_vlan_t inner_vlan, 338 bcm_vlan_translate_key_t key_type, 339 bcm_vlan_action_set_t *action); 340 extern int _bcm_trx_vlan_translate_egress_action_get(int unit, int port_class, 341 bcm_vlan_t outer_vlan, 342 bcm_vlan_t inner_vlan, 343 bcm_vlan_translate_key_t key_type, 344 bcm_vlan_action_set_t *action); 345 extern int _bcm_trx_vlan_translate_egress_action_delete(int unit, int port_class, 346 bcm_vlan_t outer_vlan, 347 bcm_vlan_t inner_vlan, 348 bcm_vlan_translate_key_t key_type); 349 extern int _bcm_trx_vlan_mac_action_traverse(int unit, 350 bcm_vlan_mac_action_traverse_cb cb, 351 void *user_data); 352 extern int _bcm_trx_vlan_mac_action_get(int unit, bcm_mac_t mac, 353 bcm_vlan_action_set_t *action); 354 extern int _bcm_trx_vlan_translate_egress_action_delete_all(int unit); 355 356 #ifndef BCM_SW_STATE_DUMP_DISABLE 357 extern void _bcm_trx_vlan_sw_dump(int unit); 358 #endif /* BCM_SW_STATE_DUMP_DISABLE */ 359 360 extern int bcm_trx_metro_l2_tunnel_add(int unit, bcm_mac_t mac, bcm_vlan_t vlan); 361 extern int bcm_trx_metro_l2_tunnel_delete(int unit, bcm_mac_t mac, bcm_vlan_t vlan); 362 extern int bcm_trx_metro_l2_tunnel_delete_all(int unit); 363 extern int _bcm_common_init(int unit); 364 extern int _bcm_common_cleanup(int unit); 365 extern int _bcm_common_scache_sync(int unit); 366 extern int _bcm_mac_da_profile_entry_add(int unit, void **entries, 367 int entries_per_set, uint32 *index); 368 extern int _bcm_mac_da_profile_entry_delete(int unit, int index); 369 370 /* LPORT Profile Table */ 371 extern int _bcm_lport_profile_mem_reference_unique(int unit, int index, 372 int entries_per_set, int pipe); 373 extern int _bcm_lport_profile_mem_reference(int unit, int index, 374 int entries_per_set); 375 extern int _bcm_lport_profile_entry_add_unique(int unit, void **entries, 376 int entries_per_set, int pipe, uint32 *index); 377 extern int _bcm_lport_profile_entry_add(int unit, void **entries, 378 int entries_per_set, uint32 *index); 379 extern int _bcm_lport_profile_entry_delete_unique(int unit, int index, int pipe); 380 extern int _bcm_lport_profile_entry_delete(int unit, int index); 381 extern int _bcm_lport_profile_entry_get(int unit, int index, int count, 382 void **entries); 383 extern int _bcm_lport_profile_fields32_modify(int unit, int table_id, 384 int field_count, 385 soc_field_t *fields, 386 uint32 *values); 387 extern int _bcm_lport_profile_field32_modify(int unit, int table_id, 388 soc_field_t field, 389 uint32 value); 390 391 /* LPORT_1 Profile Table */ 392 extern int _bcm_lport_ind_profile_mem_reference(int unit, int index, 393 int entries_per_set); 394 extern int _bcm_lport_ind_profile_entry_add(int unit, void **entries, 395 int entries_per_set, uint32 *index); 396 extern int _bcm_lport_ind_profile_entry_delete(int unit, int index); 397 extern int _bcm_lport_ind_profile_entry_get(int unit, int index, int count, 398 void **entries); 399 extern int _bcm_lport_ind_profile_fields32_modify(int unit, int table_id, 400 int field_count, 401 soc_field_t *fields, 402 uint32 *values); 403 extern int _bcm_lport_ind_profile_field32_modify(int unit, int table_id, 404 soc_field_t field, 405 uint32 value); 406 407 /* RTAG7_1 Profile Table */ 408 extern int _bcm_rtag7_ind_profile_mem_reference(int unit, int index, 409 int entries_per_set); 410 extern int _bcm_rtag7_ind_profile_entry_add(int unit, void **entries, 411 int entries_per_set, uint32 *index); 412 extern int _bcm_rtag7_ind_profile_entry_delete(int unit, int index); 413 extern int _bcm_rtag7_ind_profile_entry_get(int unit, int index, int count, 414 void **entries); 415 extern int _bcm_rtag7_ind_profile_fields32_modify(int unit, int table_id, 416 int field_count, 417 soc_field_t *fields, 418 uint32 *values); 419 extern int _bcm_rtag7_ind_profile_field32_modify(int unit, int table_id, 420 soc_field_t field, 421 uint32 value); 422 423 /* EGR LPORT Profile Table */ 424 #define _BCM_EGR_LPROF_MEM_COUNT 9 425 extern int _bcm_egr_lport_profile_mem_index_get(int unit, soc_mem_t mem, 426 int *index); 427 extern int _bcm_egr_lport_profile_mem_reference(int unit, int index, 428 int entries_per_set); 429 extern int _bcm_egr_lport_profile_entry_add(int unit, void **entries, 430 int entries_per_set, uint32 *index); 431 extern int _bcm_egr_lport_profile_entry_delete(int unit, int index); 432 extern int _bcm_egr_lport_profile_entry_get(int unit, int index, int count, 433 void **entries); 434 extern int _bcm_egr_lport_profile_fields32_modify(int unit, soc_mem_t mem, 435 int field_count, soc_field_t *fields, uint32 *values); 436 extern int _bcm_egr_lport_profile_field32_modify(int unit, soc_mem_t mem, 437 soc_field_t field, uint32 value); 438 439 #define _BCM_TR2_PRI_CNG_MAP_SIZE (16) 440 extern int _bcm_ing_pri_cng_map_entry_add(int unit, void **entries, 441 int entries_per_set, uint32 *index); 442 443 extern int _bcm_ing_vft_pri_map_entry_add(int unit, void **entries, 444 int entries_per_set, uint32 *index); 445 extern int _bcm_ing_l2_vlan_etag_map_entry_add(int unit, 446 void **entries, int entries_per_set, uint32 *index); 447 extern int _bcm_egr_l2_vlan_etag_map_entry_add(int unit, 448 void **entries, int entries_per_set, uint32 *index); 449 extern int _bcm_egr_vft_pri_map_entry_add(int unit, void **entries, 450 int entries_per_set, uint32 *index); 451 extern int _bcm_ing_vft_pri_map_entry_del(int unit, int index); 452 extern int _bcm_ing_l2_vlan_etag_map_entry_del(int unit, int index); 453 extern int _bcm_egr_l2_vlan_etag_map_entry_del(int unit, int index); 454 extern int _bcm_egr_vft_pri_map_entry_del(int unit, int index); 455 extern int _bcm_ing_vft_pri_map_entry_get(int unit, int index, int count, 456 void **entries); 457 extern int _bcm_ing_vft_pri_map_entry_reference(int unit, int index, 458 int entries_per_set_override); 459 extern int _bcm_ing_l2_vlan_etag_map_entry_get(int unit, int index, 460 int count, void **entries); 461 extern int _bcm_ing_l2_vlan_etag_map_entry_reference(int unit, int index, 462 int entries_per_set_override); 463 extern int _bcm_egr_vft_pri_map_entry_get(int unit, int index, int count, 464 void **entries); 465 extern int _bcm_egr_vft_pri_map_entry_reference(int unit, int index, 466 int entries_per_set_override); 467 extern int _bcm_egr_l2_vlan_etag_map_entry_get(int unit, int index, 468 int count, void **entries); 469 extern int _bcm_egr_l2_vlan_etag_map_entry_reference(int unit, int index, 470 int entries_per_set_override); 471 extern int _bcm_egr_vsan_intpri_map_entry_add(int unit, void **entries, 472 int entries_per_set, 473 uint32 *index); 474 extern int _bcm_egr_vsan_intpri_map_entry_del(int unit, int index); 475 extern int _bcm_egr_vsan_intpri_map_entry_get(int unit, int index, int count, 476 void **entries); 477 extern int _bcm_egr_vsan_intpri_map_entry_reference(int unit, int index, 478 int entries_per_set_override); 479 extern int _bcm_egr_vft_fields_entry_add(int unit, void **entries, 480 int entries_per_set, 481 uint32 *index); 482 extern int _bcm_egr_vft_fields_entry_del(int unit, int index); 483 extern int _bcm_egr_vft_fields_entry_get(int unit, int index, int count, 484 void **entries); 485 extern int _bcm_egr_vft_fields_entry_reference(int unit, int index, 486 int entries_per_set_override); 487 488 extern int _bcm_ing_pri_cng_map_entry_delete(int unit, int index); 489 extern int _bcm_ing_pri_cng_map_entry_get(int unit, int index, int count, 490 void **entries); 491 extern int _bcm_ing_pri_cng_map_entry_reference(int unit, int index, 492 int entries_per_set_override); 493 extern int _bcm_egr_mpls_combo_map_entry_add(int unit, void **entries, 494 int entries_per_set, 495 uint32 *index); 496 extern int _bcm_egr_mpls_combo_map_entry_update(int unit, void **entries, 497 uint32 index); 498 extern int _bcm_egr_mpls_combo_map_entry_delete(int unit, int index) ; 499 extern int _bcm_egr_mpls_combo_map_entry_reference(int unit, int index, 500 int entries_per_set_override); 501 extern int _bcm_egr_mpls_combo_map_entry_write_mode_get(int unit, 502 uint32 index, int *mode); 503 extern int _bcm_egr_qos_profile_mem_reference(int unit, int index, int entries_per_set); 504 extern int _bcm_egr_qos_profile_entry_add(int unit, void **entries, 505 int entries_per_set, uint32 *index); 506 extern int _bcm_egr_qos_profile_entry_delete(int unit, int index); 507 extern int _bcm_egr_qos_profile_entry_get(int unit, int index, int count, void **entries); 508 extern int _bcm_dscp_table_entry_add(int unit, void **entries, 509 int entries_per_set, uint32 *index); 510 extern int _bcm_dscp_table_entry_delete(int unit, int index); 511 extern int _bcm_dscp_table_entry_reference(int unit, int index, 512 int entries_per_set_override); 513 extern int _bcm_dscp_table_entry_ref_count_get(int unit, uint32 index, 514 int* ref_count); 515 extern int _bcm_dscp_table_entry_get(int unit, int index, int count, 516 void **entries); 517 extern int _bcm_dscp_table_entry_range(int unit, int *index_min, 518 int *index_max); 519 extern int 520 _bcm_egr_dscp_table_entry_ref_count_get(int unit, uint32 index, int *ref_count); 521 522 extern int 523 _bcm_egr_dscp_table_entry_get(int unit, int index, int count, void **entries); 524 525 extern int _bcm_egr_dscp_table_entry_set(int unit, void **entries, uint32 index); 526 527 extern int _bcm_egr_dscp_table_entry_add(int unit, void **entries, 528 int entries_per_set, uint32 *index, uint32 flags); 529 extern int _bcm_egr_dscp_table_entry_delete(int unit, int index); 530 extern int _bcm_egr_dscp_table_entry_reference(int unit, int index, 531 int entries_per_set_override); 532 extern int _bcm_prot_pkt_ctrl_add(int unit, uint32 prot_pkt_ctrl, 533 uint32 igmp_mld_pkt_ctrl, uint32 *index); 534 extern int _bcm_prot_pkt_ctrl_delete(int unit, uint32 index); 535 extern int _bcm_prot_pkt_ctrl_get(int unit, uint32 index, 536 uint32 *prot_pkt_ctrl, 537 uint32 *igmp_mld_pkt_ctrl); 538 extern int _bcm_prot_pkt_ctrl_reference(int unit, uint32 index); 539 extern int _bcm_prot_pkt_ctrl_ref_count_get(int unit, uint32 index, 540 int* ref_count); 541 extern int _bcm_ing_l3_nh_attrib_entry_add(int unit, void **entries, 542 int entries_per_set, uint32 *index); 543 extern int _bcm_ing_l3_nh_attrib_entry_delete(int unit, int index) ; 544 extern int _bcm_ing_l3_nh_attrib_entry_reference(int unit, int index, 545 int entries_per_set_override); 546 extern void _bcm_common_profile_mem_ref_cnt_update(int unit, soc_mem_t mem, 547 int profile_ptr, int count); 548 549 #ifdef BCM_TRIDENT2_SUPPORT 550 extern int _bcm_l3_iif_profile_entry_add(int unit, void **entries, 551 int entries_per_set, uint32 *index); 552 extern int _bcm_l3_iif_profile_entry_delete(int unit, int index); 553 extern int _bcm_l3_iif_profile_entry_get(int unit, int index, int count, 554 void **entries); 555 extern int _bcm_l3_iif_profile_entry_reference(int unit, int index, 556 int entries_per_set_override); 557 extern int _bcm_l3_iif_profile_entry_update(int unit, void **entries, 558 uint32 *index); 559 extern int 560 _bcm_l3_iif_profile_entry_reference_get(int unit, int index, 561 int *ref_count); 562 extern int _bcm_l3_ip4_options_profile_entry_add(int unit, void **entries, 563 int entries_per_set, uint32 *index); 564 extern int _bcm_l3_ip4_options_profile_entry_delete(int unit, int index); 565 extern int _bcm_l3_ip4_options_profile_entry_get(int unit, int index, 566 int count, void **entries); 567 extern int _bcm_l3_ip4_options_profile_entry_reference(int unit, int index, 568 int entries_per_set_override); 569 extern int _bcm_l3_ip4_options_profile_entry_update(int unit, void **entries, 570 uint32 index); 571 extern int _bcm_fc_map_profile_entry_add(int unit, void **entries, 572 int entries_per_set, uint32 *index); 573 extern int _bcm_fc_map_profile_entry_delete(int unit, int index); 574 extern int _bcm_fc_map_profile_entry_get(int unit, int index, int count, 575 void **entries); 576 extern int _bcm_fc_map_profile_entry_reference(int unit, int index, 577 int entries_per_set_override); 578 extern int _bcm_l3_iif_profile_sw_state_set(int unit, void **entries, 579 int entries_per_set, uint32 index); 580 581 #endif /* BCM_TRIDENT2_SUPPORT */ 582 583 #ifdef BCM_TRIDENT2PLUS_SUPPORT 584 extern int _bcm_vfi_profile_entry_add(int unit, void **entries, 585 int entries_per_set, uint32 *index); 586 extern int _bcm_vfi_profile_entry_delete(int unit, int index); 587 extern int _bcm_vfi_profile_entry_get(int unit, int index, int count, 588 void **entries); 589 extern int _bcm_vfi_profile_entry_reference(int unit, int index, 590 int entries_per_set_override); 591 #endif /* BCM_TRIDENT2PLUS_SUPPORT */ 592 593 #ifdef BCM_TRIDENT3_SUPPORT 594 #define _BCM_TD3_PRI_CNG_MAP_SIZE (64) 595 #endif /* BCM_TRIDENT3_SUPPORT */ 596 597 #ifdef BCM_KATANA_SUPPORT 598 extern int _bcm_offset_map_table_entry_add(int unit, void **entries, 599 int entries_per_set, uint32 *index); 600 extern int _bcm_offset_map_table_entry_delete(int unit, int index); 601 extern int _bcm_offset_map_table_entry_get(int unit, int index, 602 int count, void **entries); 603 extern int _bcm_offset_map_table_entry_reference(int unit, int index, 604 int entries_per_set_override); 605 #endif /*BCM_KATANA_SUPPORT */ 606 #if defined(BCM_KATANA2_SUPPORT) || defined(BCM_TOMAHAWK_SUPPORT) || defined(BCM_TRIDENT2PLUS_SUPPORT) 607 extern int _bcm_port_vlan_protocol_data_entry_add( 608 int unit, void **entries, int entries_per_set, uint32 *index); 609 extern int _bcm_port_vlan_protocol_data_entry_delete( 610 int unit, int index); 611 #endif 612 #if defined(BCM_KATANA2_SUPPORT) || defined(BCM_TOMAHAWK_SUPPORT) 613 extern int _bcm_port_vlan_protocol_data_entry_get( 614 int unit, int index, int count, void **entries); 615 extern int _bcm_port_vlan_protocol_data_entry_reference( 616 int unit, int index, int entries_per_set_override); 617 extern int 618 _bcm_trx_vlan_protocol_data_profile_update( 619 int unit, bcm_pbmp_t update_pbm, int prot_idx, 620 bcm_vlan_action_set_t *action); 621 622 extern int 623 _bcm_trx_vlan_port_default_action_profile_set(int unit, bcm_port_t port, 624 bcm_vlan_action_set_t *action); 625 626 extern int 627 _bcm_trx_vlan_port_default_action_profile_delete(int unit, bcm_port_t port); 628 #endif /*BCM_KATANA2_SUPPORT */ 629 #ifdef BCM_SABER2_SUPPORT 630 extern int 631 _bcm_service_pri_map_table_entry_add(int unit, void **entries, 632 int entries_per_set, uint32 *index); 633 extern int 634 _bcm_service_pri_map_table_entry_delete(int unit, int index); 635 extern int 636 _bcm_service_pri_map_table_entry_get(int unit, int index, int count, 637 void **entries); 638 extern int 639 _bcm_service_pri_map_table_entry_reference(int unit, int index, 640 int entries_per_set_override); 641 #endif 642 #ifdef BCM_HURRICANE3_SUPPORT 643 extern int _bcm_egr_header_encap_data_entry_add(int unit, void **entries, 644 int entries_per_set, uint32 *index); 645 extern int _bcm_egr_header_encap_data_entry_delete(int unit, int index); 646 extern int _bcm_egr_header_encap_data_entry_update(int unit, 647 void **entries, uint32 index); 648 extern int _bcm_egr_header_encap_data_entry_ref_count_get(int unit, 649 uint32 index, int *ref_count); 650 extern int _bcm_egr_header_encap_data_entry_search(int unit, void **entries, 651 int entries_per_set, uint32 *index); 652 extern int _bcm_custom_header_match_entry_add(int unit, void **entries, 653 int entries_per_set, uint32 *index); 654 extern int _bcm_custom_header_match_entry_delete(int unit, int index); 655 extern int _bcm_custom_header_match_entry_update(int unit, 656 void **entries, uint32 index); 657 extern int _bcm_custom_header_match_entry_get(int unit, int index, 658 int count, void **entries); 659 extern int _bcm_custom_header_match_entry_ref_count_get(int unit, 660 uint32 index, int *ref_count); 661 #endif /* BCM_HURRICANE3_SUPPORT */ 662 #ifdef BCM_TOMAHAWK_SUPPORT 663 extern int 664 _bcm_ing_tunnel_term_map_entry_add(int unit, void **entries, 665 int entries_per_set, uint32 *index); 666 extern int 667 _bcm_ing_tunnel_term_map_entry_delete(int unit, int index); 668 extern int 669 _bcm_ing_tunnel_term_map_entry_get(int unit, int index, int count, void **entries); 670 extern int 671 _bcm_ing_tunnel_term_map_entry_reference(int unit, int index, 672 int entries_per_set_override); 673 #endif 674 675 #if (defined(BCM_TOMAHAWK2_SUPPORT) || defined(BCM_TRIDENT3_SUPPORT)) 676 extern int 677 _bcm_ing_exp_to_ip_ecn_map_entry_add(int unit, void **entries, 678 int entries_per_set, uint32 *index); 679 extern int 680 _bcm_ing_exp_to_ip_ecn_map_entry_delete(int unit, int index); 681 extern int 682 _bcm_ing_exp_to_ip_ecn_map_entry_get(int unit, int index, int count, void **entries); 683 extern int 684 _bcm_ing_exp_to_ip_ecn_map_entry_reference(int unit, int index, 685 int entries_per_set_override); 686 extern int 687 _bcm_egr_ip_ecn_to_exp_map_entry_add(int unit, void **entries, 688 int entries_per_set, uint32 *index); 689 extern int 690 _bcm_egr_ip_ecn_to_exp_map_entry_delete(int unit, int index); 691 extern int 692 _bcm_egr_ip_ecn_to_exp_map_entry_get(int unit, int index, int count, void **entries); 693 extern int 694 _bcm_egr_ip_ecn_to_exp_map_entry_reference(int unit, int index, int entries_per_set_override); 695 extern int 696 _bcm_egr_int_cn_to_exp_map_entry_add(int unit, void **entries, 697 int entries_per_set, uint32 *index); 698 extern int 699 _bcm_egr_int_cn_to_exp_map_entry_delete(int unit, int index); 700 extern int 701 _bcm_egr_int_cn_to_exp_map_entry_get(int unit, int index, int count, void **entries); 702 extern int 703 _bcm_egr_int_cn_to_exp_map_entry_reference(int unit, int index, 704 int entries_per_set_override); 705 #endif /* BCM_TOMAHAWK2_SUPPORT */ 706 707 #ifdef BCM_WARM_BOOT_SUPPORT_SW_DUMP 708 extern void _bcm_common_sw_dump(int unit); 709 #endif /* BCM_WARM_BOOT_SUPPORT_SW_DUMP */ 710 711 extern int _bcm_trx_egr_src_port_outer_tpid_set(int unit, int tpid_index, 712 int enable); 713 extern int _bcm_trx_source_trunk_map_set(int unit, bcm_port_t port, 714 soc_field_t field, uint32 value); 715 extern int _bcm_trx_source_trunk_map_get(int unit, bcm_port_t port, 716 soc_field_t field, uint32 *value); 717 extern int _bcm_trx_port_force_vlan_set(int unit, bcm_port_t port, 718 bcm_vlan_t vlan, int pkt_prio, 719 uint32 flags); 720 721 extern int _bcm_trx_port_force_vlan_get(int unit, bcm_port_t port, 722 bcm_vlan_t *vlan, int *pkt_prio, 723 uint32 *flags); 724 extern int _bcm_trx_port_dtag_mode_set(int unit, bcm_port_t port, int mode); 725 extern int _bcm_trx_port_dtag_mode_get(int unit, bcm_port_t port, int *mode); 726 extern int _bcm_trx_lport_tab_default_entry_add(int unit, 727 soc_profile_mem_t *prof); 728 extern int _bcm_trx_egr_lport_tab_default_entry_add(int unit, 729 soc_profile_mem_t *prof); 730 extern int _bcm_trx_rtag7_tab_default_entry_add(int unit, 731 soc_profile_mem_t *prof); 732 extern int _bcm_trx_lport_tab_default_entry_index_get(int unit); 733 extern int _bcm_trx_rtag7_tab_default_entry_index_get(int unit); 734 extern int _bcm_trx_egr_lport_tab_default_entry_index_get(int unit); 735 extern int _bcm_trx_port_control_egress_class_select_set(int unit, 736 bcm_port_t port, 737 uint32 value); 738 extern int _bcm_trx_port_control_egress_class_select_get(int unit, 739 bcm_port_t port, 740 uint32 *value); 741 extern int _bcm_trx_port_control_higig_class_select_set(int unit, 742 bcm_port_t port, 743 uint32 value); 744 extern int _bcm_trx_port_control_higig_class_select_get(int unit, 745 bcm_port_t port, 746 uint32 *value); 747 748 extern int _bcm_trx_gport_to_nhi_set(int unit, int gport, 749 int nh_index); 750 751 extern int _bcm_trx_gport_to_nhi_get(int unit, int gport, 752 int* nh_index); 753 754 /* HW encodings */ 755 #define _BCM_TRX_PORT_FORCE_FORWARD_DISABLE 0 756 #define _BCM_TRX_PORT_FORCE_FORWARD_ALL 1 757 #define _BCM_TRX_PORT_FORCE_FORWARD_LOCAL 2 758 759 #if defined(BCM_FIELD_SUPPORT) 760 #define _BCM_FIELD_SC_INGRESS_SINGLE_WIDE_SLICE_SZ (128) 761 #define _BCM_FIELD_SC_INGRESS_DOUBLE_WIDE_SLICE_SZ (256) 762 #define _BCM_FIELD_SC_INGRESS_DOUBLE_WIDE_SLICE0 (8) 763 #define _BCM_FIELD_TD_INGRESS_SINGLE_WIDE_SLICE_SZ (128) 764 #define _BCM_FIELD_TD_INGRESS_DOUBLE_WIDE_SLICE_SZ (256) 765 #define _BCM_FIELD_TD_INGRESS_DOUBLE_WIDE_SLICE0 (4) 766 #define _BCM_FIELD_TD2_INGRESS_LARGE_SLICE_SZ (512) 767 #define _BCM_FIELD_TD2_INGRESS_SMALL_SLICE_SZ (256) 768 #define _BCM_FIELD_TD2_INGRESS_DOUBLE_WIDE_SLICE0 (4) 769 770 #define _FP_TRX_RANGE_CHECKER_LOWER_MAX (23) 771 extern int _bcm_field_trx_tcp_ttl_tos_init(int unit); 772 extern int _bcm_trx_range_checker_selcodes_update(int unit, 773 bcm_field_entry_t entry); 774 extern int _bcm_field_trx_write_slice_map_vfp(int unit, _field_stage_t *stage_fc); 775 extern int _bcm_field_trx_write_slice_map_egress(int unit, _field_stage_t *stage_fc); 776 extern int _bcm_field_trx_mirror_ingress_add(int unit, soc_mem_t mem, 777 _field_entry_t *f_ent, 778 _field_action_t *fa, uint32 *buf); 779 extern int _bcm_field_trx_mirror_egress_add(int unit, soc_mem_t mem, 780 _field_entry_t *f_ent, 781 _field_action_t *fa, uint32 *buf); 782 extern int _bcm_field_trx_mirror_ingress_delete(int unit, soc_mem_t mem, 783 _field_entry_t *f_ent, 784 bcm_gport_t *mirror_dest, 785 uint32 *buf); 786 extern int _bcm_field_trx_mirror_egress_delete(int unit, soc_mem_t mem, 787 _field_entry_t *f_ent, 788 bcm_gport_t *mirror_dest, 789 uint32 *buf); 790 extern int _bcm_field_trx_action_support_check(int unit, _field_entry_t *f_ent, 791 bcm_field_action_t action, 792 int *result); 793 extern int _bcm_field_trx_stage_action_support_check(int unit, 794 unsigned stage, 795 bcm_field_action_t action, 796 int *result 797 ); 798 extern int _bcm_field_trx_action_conflict_check(int unit, 799 _field_entry_t *f_ent, 800 bcm_field_action_t action1, 801 bcm_field_action_t action 802 ); 803 extern int _bcm_field_trx_qualify_ip_type(int unit, bcm_field_entry_t entry, 804 bcm_field_IpType_t type, 805 bcm_field_qualify_t qual); 806 extern int _bcm_field_trx_qualify_ip_type_get(int unit, bcm_field_entry_t entry, 807 bcm_field_IpType_t *type, 808 bcm_field_qualify_t qual); 809 extern int _bcm_field_trx_qualify_ip_type_encode_get(int unit, uint32 hw_data, 810 uint32 hw_mask, 811 bcm_field_IpType_t *type); 812 extern int _bcm_field_trx_egress_key_match_type_set(int unit, 813 _field_entry_t *f_ent); 814 extern int _bcm_field_trx_action_delete(int unit, _field_entry_t *f_ent, 815 _field_action_t *fa, int tcam_idx, 816 uint32 param0, uint32 param1); 817 extern int _bcm_field_trx_tcam_get(int unit, soc_mem_t mem, 818 _field_entry_t *f_ent, uint32 *buf); 819 extern int _bcm_field_trx_action_counter_update(int unit, soc_mem_t mem, 820 _field_entry_t *f_ent, 821 _field_action_t *fa, 822 uint32 *buf); 823 extern int _bcm_field_trx_action_get(int unit, soc_mem_t mem, 824 _field_entry_t *f_ent, 825 int tcam_idx, _field_action_t *fa, 826 uint32 *buf); 827 extern int _bcm_field_trx_range_check_set(int unit, int range, uint32 flags, 828 int enable, bcm_l4_port_t min, 829 bcm_l4_port_t max); 830 extern int _bcm_field_trx_redirect_profile_delete(int unit, int index); 831 extern int _bcm_field_trx_redirect_profile_alloc(int unit, _field_entry_t *f_ent, 832 _field_action_t *fa); 833 extern int _bcm_field_trx_redirect_profile_ref_count_get(int unit, int index, 834 int *ref_count); 835 extern int _bcm_field_trx_stat_hw_mode_to_bmap(int unit, uint16 mode, 836 _field_stage_id_t stage_id, 837 uint32 *hw_bmap, 838 uint8 *hw_entry_count); 839 extern int _bcm_field_trx_stat_index_get(int unit, _field_stat_t *f_st, 840 bcm_field_stat_t stat, 841 int *idx1, int *idx2, int *idx3, 842 uint32 *flags); 843 extern int _bcm_field_trx_stat_action_set(int unit, _field_entry_t *f_ent, 844 soc_mem_t mem, int tcam_idx, 845 uint32 *buf); 846 extern int _bcm_field_trx_selcodes_install(int unit, _field_group_t *fg, 847 uint8 slice_numb, bcm_pbmp_t pbmp, 848 int selcode_index); 849 extern int _bcm_field_trx_policer_install(int unit, _field_entry_t *f_ent, 850 _field_policer_t *f_pl); 851 extern int _field_entry_policer_update_actual_hw_rates(int unit, 852 soc_mem_t policer_mem, int instance, _field_entry_t *f_ent, _field_policer_t *f_pl); 853 extern int _bcm_field_trx_policer_packet_counter_get(int unit, 854 _field_policer_t *f_pl, uint32 *count); 855 extern int _bcm_field_trx_policer_packet_reset_counter_get(int unit, 856 _field_policer_t *f_pl, uint32 *count); 857 extern int _bcm_field_trx_policer_action_set(int unit, _field_entry_t *f_ent, 858 soc_mem_t mem, uint32 *buf); 859 extern int _bcm_field_trx_control_arp_set(int unit, 860 bcm_field_control_t control, 861 uint32 state); 862 extern int _bcm_field_trx_egress_selcode_get(int unit, _field_stage_t *stage_fc, 863 bcm_field_qset_t *qset_req, 864 _field_group_t *fg); 865 extern int _bcm_field_trx_slice_clear(int unit, _field_group_t *fg, _field_slice_t *fs); 866 extern int _bcm_field_trx_ingress_slice_clear(int unit, uint8 slice_numb); 867 extern int _bcm_field_trx_egress_slice_clear(int unit, uint8 slice_numb); 868 extern int _bcm_field_trx_action_params_check(int unit,_field_entry_t *f_ent, 869 _field_action_t *fa); 870 extern int 871 _bcm_field_trx_vlan_format_qualify_is_double_tagged(unsigned data, 872 unsigned mask 873 ); 874 extern int 875 _bcm_field_trx_action_depends_check(int unit, 876 _field_entry_t *f_ent, 877 _field_action_t *fa 878 ); 879 extern int _bcm_field_trx2_data_qualifier_ethertype_delete(int unit, int qual_id, 880 bcm_field_data_ethertype_t *etype); 881 extern int _bcm_field_trx2_data_qualifier_ethertype_add(int unit, int qual_id, 882 bcm_field_data_ethertype_t *etype); 883 extern int _bcm_field_trx2_data_qualifier_ip_protocol_add(int unit, int qual_id, 884 bcm_field_data_ip_protocol_t *ip_protocol); 885 extern int _bcm_field_trx2_data_qualifier_ip_protocol_delete(int unit, int qual_id, 886 bcm_field_data_ip_protocol_t *ip_protocol); 887 extern int _bcm_field_trx2_data_qualifier_packet_format_add(int unit,int qual_id, 888 bcm_field_data_packet_format_t *packet_format); 889 extern int _bcm_field_trx2_data_qualifier_packet_format_delete(int unit,int qual_id, 890 bcm_field_data_packet_format_t *packet_format); 891 extern int _bcm_field_trx2_l2_actions_hw_free(int unit, _field_entry_t *f_ent, 892 uint32 flags); 893 extern int _bcm_field_trx2_l2_actions_hw_alloc(int unit, _field_entry_t *f_ent); 894 extern int _bcm_field_trx2_udf_tcam_entry_parse(int unit, uint32 *hw_buf, uint32 *flags); 895 extern int _bcm_field_trx_ingress_pfs_bmap_get(int unit, 896 _field_group_t *fg, 897 bcm_pbmp_t *pbmp, 898 int selcode_index, 899 SHR_BITDCL *pfs_bmp 900 ); 901 extern int _bcm_field_trx_ingress_selcodes_install(int unit, 902 _field_group_t *fg, 903 uint8 slice_num, 904 bcm_pbmp_t *pbmp, 905 int selcode_idx 906 ); 907 extern int _bcm_field_trx_mode_set(int unit, 908 uint8 slice_numb, 909 _field_group_t *fg, 910 uint8 flags 911 ); 912 extern int _bcm_field_trx_egress_mode_set(int unit, 913 uint8 slice_numb, 914 _field_group_t *fg, 915 uint8 flags 916 ); 917 extern int _field_trx_group_qual_add(_bcm_field_group_qual_t *grp_qual, 918 unsigned qid, 919 _bcm_field_qual_offset_t *qual_offset 920 ); 921 922 extern int _bcm_field_trx_qset_get(int unit, bcm_field_qset_t *qset_in, 923 _field_stage_t *stage_fc, 924 int pri_sel_val_primary, 925 int pri_sel_val_secondary, 926 bcm_field_qset_t *qset_out, 927 _field_group_t *fg); 928 929 extern int _bcm_field_trx_egress_default_selcode_get(int unit, 930 _field_stage_t *stage_fc, 931 bcm_field_qset_t *qset_req, 932 uint8 key_pri, 933 uint8 key_sec, 934 _field_group_t *fg); 935 936 extern int _bcm_field_trx_lookup_selcodes_install(int unit, 937 _field_group_t *fg, 938 uint8 slice_numb, 939 int selcode_index); 940 941 extern int _bcm_field_trx_policer_hw_update(int unit, _field_entry_t *f_ent, 942 _field_policer_t *f_pl, uint8 index_mtr, 943 uint32 bucket_size, uint32 refresh_rate, 944 uint32 granularity, soc_mem_t meter_table); 945 946 extern const soc_field_t _bcm_trx2_aux_tag_1_field[], _bcm_trx2_aux_tag_2_field[]; 947 extern const soc_field_t _bcm_field_trx_vfp_double_wide_sel[]; 948 extern const soc_field_t _bcm_field_trx_vfp_field_sel[][2]; 949 extern const soc_field_t _bcm_field_trx_vfp_ip_header_sel[]; 950 extern const soc_field_t _bcm_field_trx_slice_pairing_field[]; 951 extern const soc_field_t _bcm_field_trx_dw_f4_sel[]; 952 extern const soc_field_t _bcm_field_trx_slice_wide_mode_field[16]; 953 extern const soc_field_t _bcm_field_trx_field_sel[16][3]; 954 extern const soc_field_t _bcm_field_trx_d_type_sel[]; 955 extern const soc_field_t _bcm_field_trx_s_type_sel[]; 956 extern const soc_field_t _trx_ifp_double_wide_key[]; 957 extern const soc_field_t _bcm_trx2_vrf_force_forwarding_enable_field[]; 958 extern const soc_field_t _bcm_ifp_normalize_fldtbl[][2]; 959 #endif /* BCM_FIELD_SUPPORT */ 960 extern int _bcm_trx_vlan_block_set (int unit, bcm_vlan_t vid, 961 bcm_vlan_block_t *block); 962 extern int _bcm_trx_vlan_block_get (int unit, bcm_vlan_t vid, 963 bcm_vlan_block_t *block); 964 extern int _bcm_trx_vp_tpid_add(int unit, bcm_gport_t vport, uint16 tpid, int color_select); 965 extern int _bcm_trx_vp_tpid_delete(int unit, bcm_gport_t vport, uint16 tpid); 966 extern int _bcm_trx_vp_tpid_delete_all(int unit, bcm_gport_t vport); 967 extern int _bcm_trx_vp_tpid_set(int unit, bcm_gport_t vport, uint16 tpid); 968 extern int _bcm_trx_vp_tpid_get(int unit, bcm_gport_t vport, uint16 *tpid); 969 extern int _bcm_trx_vp_tpid_get_all(int unit, bcm_gport_t vport, int size, 970 uint16 *tpid_array, int *color_array, int *count); 971 972 extern int _bcm_trx_port_cml_hw2flags(int unit, uint32 val, uint32 *flgas); 973 extern int _bcm_trx_port_cml_flags2hw(int unit, uint32 flags, uint32 *val); 974 975 extern int _bcm_trx_defip128_used_count_get(int unit); 976 extern int _bcm_trx_defip128_idx_max_get(int unit); 977 extern int _bcm_trx_defip128_array_idx_prefix_len_get(int unit, int arr_idx); 978 extern int _field_trx_meter_table_get(int unit, _field_stage_id_t stage_id, 979 soc_mem_t *mem_x, soc_mem_t *mem_y); 980 #endif /* BCM_TRX_SUPPORT */ 981 #if defined(BCM_TRIDENT_SUPPORT) 982 extern int _bcm_field_trident_stat_hw_mode_to_bmap(int unit, uint16 mode, 983 _field_stage_id_t stage_id, 984 uint32 *hw_bmap, 985 uint8 *hw_entry_count); 986 #endif /* BCM_TRIDENT_SUPPORT */ 987 988 #if defined(BCM_TRIDENT2_SUPPORT) 989 990 extern int _bcm_trx_ing_vlan_action_profile_entry_no_mod_add( 991 int unit, 992 ing_vlan_tag_action_profile_entry_t *entry, 993 uint32 *index); 994 extern int _bcm_trx_egr_vlan_action_profile_entry_no_mod_add( 995 int unit, 996 egr_vlan_tag_action_profile_entry_t *entry, 997 uint32 *index); 998 #endif /* BCM_TRIDENT2_SUPPORT */ 999 1000 1001 #ifdef BCM_FLOWTRACKER_SUPPORT 1002 extern int 1003 bcmi_ft_group_age_profile_entry_add(int unit, void **entries, 1004 int entries_per_set, uint32 *index); 1005 1006 extern int 1007 bcmi_ft_group_age_profile_entry_delete(int unit, int index); 1008 1009 extern int 1010 bcmi_ft_group_age_profile_refcount_set(int unit, uint32 index); 1011 1012 extern int 1013 bcmi_ft_group_flow_limit_profile_entry_add(int unit, void **entries, 1014 int entries_per_set, uint32 *index); 1015 1016 extern int 1017 bcmi_ft_group_flow_limit_profile_entry_delete(int unit, int index); 1018 1019 extern int 1020 bcmi_ft_group_flow_limit_profile_refcount_set(int unit, uint32 index); 1021 1022 extern int 1023 bcmi_ft_group_collector_copy_profile_entry_add(int unit, void **entries, 1024 int entries_per_set, uint32 *index); 1025 1026 extern int 1027 bcmi_ft_group_collector_copy_profile_entry_delete(int unit, int index); 1028 1029 extern int 1030 bcmi_ft_group_collector_copy_profile_refcount_set(int unit, uint32 index); 1031 1032 extern int 1033 bcmi_ft_group_alu_mask_profile_entry_add(int unit, int profile_idx, 1034 void **entries, int entries_per_set, uint32 *index); 1035 1036 extern int 1037 bcmi_ft_group_alu_mask_profile_entry_delete(int unit, int profile_idx, 1038 int index); 1039 1040 extern int 1041 bcmi_ft_group_alu_mask_profile_refcount_set(int unit, int profile_idx, 1042 uint32 index); 1043 1044 extern int 1045 bcmi_ft_group_alu_mask_profile_refcount_get(int unit, int profile_idx, 1046 int index, int *ref_cnt); 1047 1048 extern int 1049 bcmi_ft_group_pdd_profile_entry_add(int unit, void **entries, 1050 int entries_per_set, uint32 *index); 1051 1052 extern int 1053 bcmi_ft_group_pdd_profile_entry_delete(int unit, int index); 1054 1055 extern int 1056 bcmi_ft_group_pdd_profile_refcount_set(int unit, uint32 index); 1057 1058 extern int 1059 bcmi_ft_group_pdd_profile_refcount_get(int unit, 1060 int index, int *ref_cnt); 1061 1062 extern int 1063 bcmi_ft_group_meter_profile_entry_add(int unit, void **entries, 1064 int entries_per_set, uint32 *index); 1065 extern int 1066 bcmi_ft_group_meter_profile_entry_delete(int unit, int index); 1067 1068 extern int 1069 bcmi_ft_group_meter_profile_refcount_set(int unit, uint32 index); 1070 1071 1072 extern int 1073 bcmi_ft_group_timestamp_profile_entry_add(int unit, void **entries, 1074 int entries_per_set, uint32 *index); 1075 extern int 1076 bcmi_ft_group_timestamp_profile_entry_delete(int unit, int index); 1077 1078 extern int 1079 bcmi_ft_group_timestamp_profile_refcount_set(int unit, uint32 index); 1080 1081 #endif /* BCM_FLOWTRACKER_SUPPORT */ 1082 1083 extern int _bcm_trx_system_reserved_vlan_ing_set(int unit, int arg); 1084 extern int _bcm_trx_system_reserved_vlan_egr_set(int unit, int arg); 1085 extern int _bcm_trx_system_reserved_vlan_ing_get(int unit, int *arg); 1086 1087 extern int _vlan_block_bitmap_min(int unit, bcm_pbmp_t *array, 1088 int arr_size, bcm_pbmp_t *min_pbm); 1089 extern int _vlan_block_bitmap_clear(int unit, bcm_pbmp_t *array, 1090 int arr_size, bcm_pbmp_t mask); 1091 extern int _vlan_block_select_get(int unit, bcm_pbmp_t request, 1092 bcm_pbmp_t first, bcm_pbmp_t second, 1093 uint8 *sel); 1094 extern int _vlan_block_mask_create(int unit, bcm_pbmp_t first_mask, 1095 bcm_pbmp_t second_mask, uint8 select, 1096 bcm_pbmp_t *result_mask); 1097 1098 #if defined(BCM_TRX_SUPPORT) 1099 extern int _bcm_trx_vlan_match_action_add(int unit, uint32 options, 1100 bcm_gport_t svp_port, 1101 bcm_vlan_match_info_t *vlan_match_info, 1102 bcm_vlan_action_set_t *action_set); 1103 extern int _bcm_trx_vlan_match_action_get(int unit, bcm_gport_t svp_port, 1104 bcm_vlan_match_info_t *vlan_match_info, 1105 bcm_vlan_action_set_t *action_set); 1106 extern int _bcm_trx_vlan_match_action_delete(int unit, bcm_gport_t svp_port, 1107 bcm_vlan_match_info_t *vlan_match_info); 1108 extern int _bcm_trx_vlan_match_action_multi_get(int unit, 1109 bcm_vlan_match_t match, 1110 bcm_gport_t svp_port, int size, 1111 bcm_vlan_match_info_t *match_info_array, 1112 bcm_vlan_action_set_t *action_set, int *count); 1113 extern int _bcm_vlan_match_action_multi_get(int unit, bcm_gport_t port, 1114 int size, bcm_port_match_info_t *match_array, 1115 int start, int *count); 1116 extern int _bcm_trx_vlan_match_action_delete_all(int unit, 1117 bcm_vlan_match_t match, bcm_gport_t svp_port); 1118 #endif /* BCM_TRX_SUPPORT */ 1119 1120 extern int 1121 bcmi_subport_tunnel_pbmp_profile_entry_add(int unit, void **entries, 1122 int entries_per_set, uint32 *index); 1123 1124 extern int 1125 bcmi_subport_tunnel_pbmp_profile_entry_delete(int unit, int index); 1126 1127 extern int 1128 bcmi_subport_tunnel_pbmp_profile_refcount_set(int unit, int index); 1129 1130 extern int 1131 bcmi_subport_tunnel_pbmp_profile_refcount_get(int unit, int index, int *ref); 1132 1133 1134 #endif /* !_BCM_INT_TRX_H_ */