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