l2.h (21418B)
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: l2.h 8 * Purpose: L2 internal definitions to the BCM library. 9 */ 10 11 #ifndef _BCM_INT_DPP_L2_H_ 12 #define _BCM_INT_DPP_L2_H_ 13 14 #include <soc/dpp/PPD/ppd_api_general.h> 15 #include <soc/dpp/PPD/ppd_api_llp_trap.h> 16 #include <soc/dpp/PPD/ppd_api_llp_sa_auth.h> 17 #include <soc/dpp/PPD/ppd_api_vsi.h> 18 #include <bcm_int/dpp/port.h> 19 #include <bcm_int/dpp/alloc_mngr_local_lif.h> 20 #include <soc/dpp/ARAD/ARAD_PP/arad_pp_frwrd_mact.h> 21 22 #include <soc/dpp/PPD/ppd_api_frwrd_mact.h> 23 #include <bcm/l2.h> 24 25 #define DPP_AGING_PROFILE_FIRST_CONFIGURABLE (1) 26 #define DPP_AGING_PROFILE_LAST_CONFIGURABLE (3) 27 #define DPP_AGING_CYCLES_MAX (6) 28 #define DPP_AGING_CYCLES_IGNORE_VALUE (-1) 29 30 typedef struct bcm_dpp_user_defined_vsi_egress_profile_s { 31 uint32 mtu; 32 uint64 eve_da_lsbs_bitmap; 33 } bcm_dpp_vsi_egress_profile_t; 34 35 typedef struct bcm_dpp_user_defined_vsi_ingress_profile_s { 36 uint64 ive_da_lsbs_bitmap; 37 uint64 peer_da_lsbs_bitmap; 38 uint64 drop_da_lsbs_bitmap; 39 } bcm_dpp_vsi_ingress_profile_t; 40 41 typedef bcm_dpp_vsi_egress_profile_t bcm_dpp_l2cp_egress_profile_t; 42 43 #define L2CP_DA_LSBS_BITMAP_EGRESS_SET(egress_profile_data, da_lsbs, handle_type) \ 44 do { \ 45 uint32 hi=0; \ 46 uint32 low=0; \ 47 uint64 new_bitmap; \ 48 if (da_lsbs < 32) { \ 49 low = 1 << da_lsbs; \ 50 } \ 51 else { \ 52 hi = 1 << (da_lsbs - 32); \ 53 } \ 54 COMPILER_64_SET(new_bitmap, hi, low); \ 55 if (handle_type == SOC_PPC_VSI_L2CP_HANDLE_TYPE_TUNNEL) { \ 56 COMPILER_64_OR(egress_profile_data.eve_da_lsbs_bitmap, new_bitmap); \ 57 } \ 58 else { \ 59 COMPILER_64_NOT(new_bitmap); \ 60 COMPILER_64_AND(egress_profile_data.eve_da_lsbs_bitmap, new_bitmap); \ 61 } \ 62 } while (0); \ 63 64 #define L2CP_DA_LSBS_BITMAP_INGRESS_SET(ingress_profile_data, da_lsbs, handle_type) \ 65 do { \ 66 uint32 hi=0; \ 67 uint32 low=0; \ 68 uint64 new_bitmap; \ 69 uint64 empty_bitmap; \ 70 if (da_lsbs < 32) { \ 71 low = 1 << da_lsbs; \ 72 } \ 73 else { \ 74 hi = 1 << (da_lsbs - 32); \ 75 } \ 76 COMPILER_64_SET(new_bitmap, hi, low); \ 77 COMPILER_64_SET(empty_bitmap, hi, low); \ 78 COMPILER_64_NOT(empty_bitmap); \ 79 if (handle_type == SOC_PPC_VSI_L2CP_HANDLE_TYPE_TUNNEL) { \ 80 COMPILER_64_OR(ingress_profile_data.ive_da_lsbs_bitmap, new_bitmap); \ 81 COMPILER_64_AND(ingress_profile_data.peer_da_lsbs_bitmap, empty_bitmap); \ 82 COMPILER_64_AND(ingress_profile_data.drop_da_lsbs_bitmap, empty_bitmap); \ 83 } \ 84 else if (handle_type == SOC_PPC_VSI_L2CP_HANDLE_TYPE_PEER) { \ 85 COMPILER_64_OR(ingress_profile_data.peer_da_lsbs_bitmap, new_bitmap); \ 86 COMPILER_64_AND(ingress_profile_data.ive_da_lsbs_bitmap, empty_bitmap); \ 87 COMPILER_64_AND(ingress_profile_data.drop_da_lsbs_bitmap, empty_bitmap); \ 88 } \ 89 else if (handle_type == SOC_PPC_VSI_L2CP_HANDLE_TYPE_DROP) { \ 90 COMPILER_64_OR(ingress_profile_data.drop_da_lsbs_bitmap, new_bitmap); \ 91 COMPILER_64_AND(ingress_profile_data.peer_da_lsbs_bitmap, empty_bitmap); \ 92 COMPILER_64_AND(ingress_profile_data.ive_da_lsbs_bitmap, empty_bitmap); \ 93 } \ 94 else { \ 95 COMPILER_64_AND(ingress_profile_data.ive_da_lsbs_bitmap, empty_bitmap); \ 96 COMPILER_64_AND(ingress_profile_data.drop_da_lsbs_bitmap, empty_bitmap); \ 97 COMPILER_64_AND(ingress_profile_data.peer_da_lsbs_bitmap, empty_bitmap); \ 98 } \ 99 } while (0); 100 101 #define L2CP_DA_LSBS_BITMAP_INGRESS_GET(ingress_profile_data, da_lsbs, handle_type) \ 102 do { \ 103 uint32 hi=0; \ 104 uint32 low=0; \ 105 uint64 new_bitmap; \ 106 if (da_lsbs < 32) { \ 107 low = 1 << da_lsbs; \ 108 } \ 109 else { \ 110 hi = 1 << (da_lsbs - 32); \ 111 } \ 112 COMPILER_64_SET(new_bitmap, hi, low); \ 113 COMPILER_64_AND(new_bitmap, ingress_profile_data.ive_da_lsbs_bitmap); \ 114 if (!COMPILER_64_IS_ZERO(new_bitmap)) { \ 115 handle_type = SOC_PPC_VSI_L2CP_HANDLE_TYPE_TUNNEL; \ 116 } \ 117 else { \ 118 COMPILER_64_SET(new_bitmap, hi, low); \ 119 COMPILER_64_AND(new_bitmap, ingress_profile_data.peer_da_lsbs_bitmap); \ 120 if (!COMPILER_64_IS_ZERO(new_bitmap)) { \ 121 handle_type = SOC_PPC_VSI_L2CP_HANDLE_TYPE_PEER; \ 122 } \ 123 else { \ 124 COMPILER_64_SET(new_bitmap, hi, low); \ 125 COMPILER_64_AND(new_bitmap, ingress_profile_data.drop_da_lsbs_bitmap);\ 126 if (!COMPILER_64_IS_ZERO(new_bitmap)) { \ 127 handle_type = SOC_PPC_VSI_L2CP_HANDLE_TYPE_DROP; \ 128 } \ 129 else { \ 130 handle_type = SOC_PPC_VSI_L2CP_HANDLE_TYPE_NORMAL; \ 131 } \ 132 } \ 133 } \ 134 } while (0); 135 136 137 /* The following macros indicate if the egress layer two control packets are 138 * Trapped according to VSI or OUTLIF. 139 * On jericho_plus and above devices, l2cp_profile is mapped from outlif rather 140 * than the same with vsi profile. 141 */ 142 #define _BCM_L2_MC_RESERVED_EGRESS_PROFILE_TYPE_VSI (0) 143 #define _BCM_L2_MC_RESERVED_EGRESS_PROFILE_TYPE_L2CP (1) 144 #define _BCM_L2_NUM_OF_ETH_TYPE_INDEX_ENTRY (16) 145 146 147 /* mact freeze thaw status*/ 148 typedef struct _bcm_petra_l2_freeze_s { 149 int frozen; 150 int save_age_ena; 151 int save_learn_ena; 152 } _bcm_petra_l2_freeze_t; 153 154 /* SW DB */ 155 /* 156 * L2 Callback Message Registration 157 */ 158 #define _BCM_PETRA_L2_CB_MAX 3 /* Max registered callbacks per unit */ 159 160 /* call backs handling*/ 161 typedef struct _bcm_petra_l2_cb_entry_s { 162 bcm_l2_addr_callback_t fn; /* Callback routine */ 163 void *fn_data; /* User defined data */ 164 } _bcm_petra_l2_cb_entry_t; 165 166 typedef struct _l2_cb_s { 167 _bcm_petra_l2_cb_entry_t entry[_BCM_PETRA_L2_CB_MAX]; 168 int count; 169 } _bcm_petra_l2_cb_t; 170 171 typedef struct _l2_ether_type_index_entry_ref_s { 172 uint32 eth_type_ref; 173 uint32 outer_tpid_ref; 174 uint32 inner_tpid_ref; 175 } _l2_ether_type_index_entry_ref_t; 176 177 typedef struct l2_data_s { 178 uint8 mymac_msb_is_set; 179 int l2_initialized; 180 _bcm_petra_l2_freeze_t bcm_petra_l2_freeze_state; 181 uint16 mpls_extended_label_ether_type_index_table_is_set; 182 _l2_ether_type_index_entry_ref_t ether_type_index_table_ref_cnt[_BCM_L2_NUM_OF_ETH_TYPE_INDEX_ENTRY]; 183 } l2_data_t; 184 185 /* access macros */ 186 #define _BCM_PETRA_L2_CB_ENTRY(unit, i) (sw_state_cb_db[unit].dpp.l2_cb.entry[i]) 187 #define _BCM_PETRA_L2_CB_COUNT(unit) (sw_state_cb_db[unit].dpp.l2_cb.count) 188 189 /* 190 * L2 definition 191 */ 192 193 #define _BCM_PETRA_L2_ILLEGAL_AGE_STATUS (ARAD_PP_FRWRD_MACT_ILLEGAL_AGE_STATUS) 194 195 #define _BCM_DPP_SNOOP_CMD_TO_CPU (1) 196 197 #define _BCM_PETRA_L2_NOF_RSRV_MC (0x40) 198 199 #define _BCM_PETRA_L2_RM_BUF_NOF_U32 (16) 200 201 #define _BCM_PETRA_L2_RM_BUF_INDEX_OFFSET (8) 202 203 #define _BCM_PETRA_L2_RM_BUF_INDEX_LEN (8) 204 205 #define BCM_PETRA_L2_STATION_GLOBAL_MSB (0) 206 /* valid only flag MIM is set (so no change of TRILL)*/ 207 #define BCM_PETRA_L2_STATION_GLOBAL_LSB (1 << 16) 208 209 /* 210 * l2 station bit indications. Available bits are: 23-31 211 */ 212 213 /* bit 28: OAM CFM l2 station indication. */ 214 #define BCM_PETRA_L2_STATION_OAM_CFM_BIT (1 << 28) 215 216 /* bit 29: MIM l2 station indication. */ 217 #define BCM_PETRA_L2_STATION_MIM_BIT (1 << 29) 218 219 /* bit 30: Vrrp l2 station indication. */ 220 #define BCM_PETRA_L2_STATION_VRRP_BIT (1 << 30) 221 222 223 /* The following constants and macros are used to create the station_id for l2 stations using the oam cfm table. 224 The bit mapping is: 225 bits 0 - 12: port 226 bit 13 empty 227 bits 14-21: Mymac lsb 228 bits 22-27 empty 229 bit 28: OAM CFM l2 station indication. 230 bit 29-31: empty*/ 231 232 #define BCM_PETRA_L2_STATION_OAM_PORT_SHIFT (0) 233 #define BCM_PETRA_L2_STATION_OAM_PORT_MASK (0xfff) 234 #define BCM_PETRA_L2_STATION_OAM_MYMAC_LSB_SHIFT (14) 235 #define BCM_PETRA_L2_STATION_OAM_MYMAC_LSB_MASK (0xff) 236 237 238 /* The variable in _station_id will be assigned an oam cfm station id according to the format above. */ 239 #define BCM_PETRA_L2_STATION_OAM_CFM_SET(_station_id, _port, _lsb) \ 240 ((_station_id) = (((_port) << BCM_PETRA_L2_STATION_OAM_PORT_SHIFT) | \ 241 ((_lsb) << BCM_PETRA_L2_STATION_OAM_MYMAC_LSB_SHIFT) | \ 242 (BCM_PETRA_L2_STATION_OAM_CFM_BIT))) 243 244 /* Wether the station id is an oam cfm station */ 245 #define BCM_PETRA_L2_STATION_IS_OAM_CFM(_station_id) \ 246 ((_station_id) & BCM_PETRA_L2_STATION_OAM_CFM_BIT) 247 248 /* Gets the port from an oam cfm station id */ 249 #define BCM_PETRA_L2_STATION_OAM_PORT_GET(_port, _station_id) \ 250 ((_port) = ((_station_id) >> BCM_PETRA_L2_STATION_OAM_PORT_SHIFT) \ 251 & BCM_PETRA_L2_STATION_OAM_PORT_MASK ) 252 253 /* Gets the lsbs from an oam cfm station id */ 254 #define BCM_PETRA_L2_STATION_OAM_MYMAC_LSB_GET(_lsb, _station_id) \ 255 ((_lsb) = ((_station_id) >> BCM_PETRA_L2_STATION_OAM_MYMAC_LSB_SHIFT) \ 256 & BCM_PETRA_L2_STATION_OAM_MYMAC_LSB_MASK) 257 258 259 /* The following constants and macros are used to create the station_id for l2 stations using the vrrp table. 260 The bit mapping is: 261 bits 0 - 16: vsi 262 bit 17 empty 263 bit 18-22: Index in the vrrp cam table 264 bits 23-29 empty 265 bit 30: Vrrp l2 station indication. 266 bit 31: Empty */ 267 268 #define BCM_PETRA_L2_STATION_VRRP_VSI_SHIFT (0) 269 #define BCM_PETRA_L2_STATION_VRRP_VSI_MASK (0x1ffff) 270 #define BCM_PETRA_L2_STATION_VRRP_CAM_INDEX_SHIFT (18) 271 #define BCM_PETRA_L2_STATION_VRRP_CAM_INDEX_MASK (0x1f) 272 273 /* The variable in _station_id will be assigned a vrrp station id according to the format above. */ 274 #define BCM_PETRA_L2_STATION_VRRP_SET(_station_id, _vsi, _cam_index) \ 275 ((_station_id) = (((_vsi) << BCM_PETRA_L2_STATION_VRRP_VSI_SHIFT ) | \ 276 ((_cam_index) << BCM_PETRA_L2_STATION_VRRP_CAM_INDEX_SHIFT) | \ 277 (BCM_PETRA_L2_STATION_VRRP_BIT))) 278 279 /* Wether the station id is a vrrp station */ 280 #define BCM_PETRA_L2_STATION_IS_VRRP(_station_id) \ 281 ((_station_id) & BCM_PETRA_L2_STATION_VRRP_BIT) 282 283 /* Gets the vsi from a vrrp station id */ 284 #define BCM_PETRA_L2_STATION_VRRP_VSI_GET(_vsi, _station_id) \ 285 ((_vsi) = ((_station_id) >> BCM_PETRA_L2_STATION_VRRP_VSI_SHIFT) \ 286 & BCM_PETRA_L2_STATION_VRRP_VSI_MASK ) 287 288 /* Gets the cam table index from a vrrp station id */ 289 #define BCM_PETRA_L2_STATION_VRRP_CAM_INDEX_GET(_cam_index, _station_id) \ 290 ((_cam_index) = ((_station_id) >> BCM_PETRA_L2_STATION_VRRP_CAM_INDEX_SHIFT) \ 291 & BCM_PETRA_L2_STATION_VRRP_CAM_INDEX_MASK ) 292 293 /* Given the api's l3 protocol group flags, returns the soc ppc flags. */ 294 #define BCM_PETRA_L2_STATION_TRANSLATE_API_FLAGS_TO_INTERNAL_PROTOCOL_GROUP_FLAGS(_src, _target) \ 295 (_target) = 0; \ 296 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_IPV4 , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV4 );\ 297 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_IPV6 , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV6 );\ 298 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_ARP_RARP, _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_ARP );\ 299 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_MPLS , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MPLS );\ 300 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_MIM , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MIM );\ 301 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_TRILL , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_TRILL);\ 302 DPP_TRANSLATE_FLAG(_src, BCM_L2_STATION_FCOE , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_FCOE ); 303 304 /* Given the soc ppc l3 protocol group flags, returns the api flags. */ 305 #define BCM_PETRA_L2_STATION_TRANSLATE_PROTOCOL_GROUP_INTERNAL_FLAGS_TO_API(_src, _target) \ 306 (_target) = 0; \ 307 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV4 , _target, BCM_L2_STATION_IPV4 );\ 308 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV6 , _target, BCM_L2_STATION_IPV6 );\ 309 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_ARP , _target, BCM_L2_STATION_ARP_RARP);\ 310 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MPLS , _target, BCM_L2_STATION_MPLS );\ 311 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MIM , _target, BCM_L2_STATION_MIM );\ 312 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_TRILL, _target, BCM_L2_STATION_TRILL );\ 313 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_FCOE , _target, BCM_L2_STATION_FCOE ); 314 315 #define BCM_PETRA_L3_MULTIPLE_MYMAC_STATION_SUPPORTED_PROTOCOL_FLAGS \ 316 (BCM_L2_STATION_IPV4 \ 317 |BCM_L2_STATION_IPV6 \ 318 |BCM_L2_STATION_ARP_RARP \ 319 |BCM_L2_STATION_MPLS \ 320 |BCM_L2_STATION_MIM \ 321 |BCM_L2_STATION_TRILL \ 322 |BCM_L2_STATION_FCOE) 323 324 typedef struct bcm_dpp_prog_trap_s { 325 SOC_PPC_LLP_TRAP_PROG_TRAP_QUALIFIER qual; 326 bcm_dpp_user_defined_traps_t result; 327 } bcm_dpp_prog_trap_t; 328 329 330 typedef struct _bcm_petra_l2_rsrvd_mc_profile_info_s { 331 uint32 buff[_BCM_PETRA_L2_RM_BUF_NOF_U32]; 332 } _bcm_petra_l2_rsrvd_mc_profile_info_t; 333 334 335 typedef struct _bcm_l2_limit_llm_info_s 336 { 337 int rx_channel; /* Local RX DMA channel for BHH packets */ 338 int uc_num; /* uController number running BHH appl */ 339 int dma_buffer_len; /* DMA max buffer size */ 340 uint8* dma_buffer; /* DMA buffer */ 341 uint8* dmabuf_reply; /* DMA reply buffer */ 342 sal_thread_t event_thread_id; /* Event handler thread id */ 343 int event_thread_kill; /* Whether to stop event thread */ 344 uint32 event_enable; /* Event enable/disable */ 345 sal_mutex_t llm_mutex; /* mutex for LLM message */ 346 sal_mutex_t l2_mutex; /* arm restore */ 347 348 } _bcm_l2_limit_llm_info_t; 349 350 351 extern SOC_PPC_FRWRD_MACT_ENTRY_KEY 352 *_bcm_l2_traverse_mact_keys[BCM_LOCAL_UNITS_MAX]; 353 extern SOC_PPC_FRWRD_MACT_ENTRY_VALUE 354 *_bcm_l2_traverse_mact_vals[BCM_LOCAL_UNITS_MAX]; 355 extern SOC_SAND_PP_MAC_ADDRESS 356 *_bcm_l2_auth_traverse_mac_addrs[BCM_LOCAL_UNITS_MAX]; 357 extern SOC_PPC_LLP_SA_AUTH_MAC_INFO 358 *_bcm_l2_auth_traverse_mac_infos[BCM_LOCAL_UNITS_MAX]; 359 extern _bcm_petra_l2_freeze_t _bcm_petra_l2_freeze_state[BCM_LOCAL_UNITS_MAX]; 360 extern int l2_initialized[BCM_LOCAL_UNITS_MAX]; 361 extern l2_data_t l2_data[BCM_LOCAL_UNITS_MAX]; 362 363 int 364 bcm_petra_l2_cache_set_unset( 365 int unit, 366 int index, 367 bcm_l2_cache_addr_t *addr, 368 int *index_used, 369 int is_for_delete); 370 371 int _bcm_petra_l2_sw_traverse(int unit, 372 bcm_l2_traverse_cb trav_fn, 373 void *user_data); 374 375 int _bcm_petra_l2_to_petra_entry(int unit, bcm_l2_addr_t *l2addr, int key_only, 376 SOC_PPC_FRWRD_MACT_ENTRY_KEY *l2_entry_key, 377 SOC_PPC_FRWRD_MACT_ENTRY_VALUE *l2_entry_val); 378 379 380 381 int _bcm_petra_l2_freeze_set_no_wb(int unit, int frozen); 382 383 int _bcm_petra_l2_freeze_inc(int unit, int *frozen); 384 385 int _bcm_petra_l2_freeze_dec(int unit, int *frozen); 386 387 int _bcm_petra_l2_is_freezed(int unit, uint8 *is_freezed); 388 389 int _bcm_petra_l2_freeze_info_set(int unit, _bcm_petra_l2_freeze_t* freeze_info); 390 391 int _bcm_petra_l2_freeze_info_get(int unit, _bcm_petra_l2_freeze_t* freeze_info); 392 393 394 int 395 _bcm_petra_l2_mymac_msb_is_set_set(int unit, uint8 val); 396 397 int 398 _bcm_petra_l2_mymac_msb_is_set_get(int unit, uint8 *is_set); 399 400 int 401 _bcm_dpp_l2_vsi_profile_update( 402 int unit, 403 uint32 egress_profile, 404 uint32 egress_profile_type, 405 uint32 ingress_profile, 406 bcm_dpp_vsi_egress_profile_t egress_profile_data, 407 bcm_dpp_vsi_ingress_profile_t ingress_profile_data); 408 409 int _bcm_petra_l2_event_handle_profile_alloc( 410 int unit, int check, int vsi, int learn_flags, int trans_flags, 411 int del_flags, int refresh_flags, int *new_learn_profile, int *first_appear); 412 413 /* 414 * Purpose: process MACT_EVENT_FIFO interrupt. 415 * - read event-fifo 416 * - parse 417 * - call callback function to handle this event. 418 */ 419 int _bcm_dpp_l2_event_fifo_interrupt_handler(int unit, uint32 *buf); 420 /* 421 * Purpose: Mask or unmask MACT_EVENT_FIFO interrupt. 422 */ 423 int _bcm_dpp_mact_interrupts_mask(int unit, uint8 mask_interrupts); 424 425 /* Convert multicast id bcm typedef to soc ppd typedef */ 426 int 427 _bcm_petra_mc_id_to_ppd_val(int unit, int l2mc_index, SOC_TMC_MULT_ID *soc_ppd_mc_id); 428 429 /* Set the bit indicating whether ether type index table has been set for mpls extended configuration */ 430 int 431 _bcm_petra_l2_mpls_extended_label_ether_type_index_table_is_set_set(int unit, uint16 val); 432 433 /* Get the bit indicating whether ether type index table has been set for mpls extended configuration */ 434 int 435 _bcm_petra_l2_mpls_extended_label_ether_type_index_table_is_set_get(int unit, uint16 *is_set); 436 437 /* Fill the ether type index table for mpls extended configuration */ 438 int _bcm_petra_l2_mpls_extended_label_fill_ether_type_index_table(int unit,SOC_PPC_EG_ENCAP_ETHER_TYPE_INDEX_INFO eth_type_index_entry); 439 440 #endif /* _BCM_INT_DPP_L2_H_ */