switch.h (5170B)
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 * Switch Internal header 8 */ 9 10 #ifndef _BCM_INT_DPP_SWITCH_H_ 11 #define _BCM_INT_DPP_SWITCH_H_ 12 13 #include <bcm_int/petra_dispatch.h> 14 #include <sal/types.h> 15 #include <bcm/types.h> 16 #include <bcm_int/dpp/utils.h> 17 #include <bcm_int/dpp/l3.h> 18 #include <soc/dpp/PPC/ppc_api_mymac.h> 19 #include <soc/dpp/PPC/ppc_api_eg_encap.h> 20 21 22 #if (defined(BCM_PETRA_SUPPORT) && defined(BCM_WARM_BOOT_SUPPORT)) 23 extern int warmboot_test_mode[BCM_MAX_NUM_UNITS]; 24 extern int override_wb_test[BCM_MAX_NUM_UNITS]; 25 extern int disable_once_wb_test[BCM_MAX_NUM_UNITS]; 26 #endif 27 28 typedef struct { 29 int interrupts_event_storm_nominal; 30 } bcm_dpp_switch_info_t; 31 32 int 33 _bcm_dpp_switch_init(int unit); 34 int 35 _bcm_dpp_switch_detach(int unit); 36 37 int _bcm_dpp_trill_ethertype_set(int unit, int arg); 38 39 /** 40 * Defines for bcm_petra_switch_l3_protocol_group_* 41 */ 42 43 int 44 bcm_dpp_switch_l3_protocol_group_init(int unit); 45 46 int 47 bcm_dpp_switch_l3_protocol_group_get_members_by_group(int unit, uint32 group_id, uint32 group_mask, uint32 *group_members); 48 49 int 50 bcm_dpp_switch_l3_protocol_group_get_group_by_members(int unit, uint32 requested_flags, uint32 *group_id, uint32 *group_mask, uint8 exact_match); 51 52 int 53 bcm_dpp_switch_l3_protocol_group_change_count(int unit, uint32 group_id, uint32 group_mask, int diff); 54 55 int 56 _bcm_dpp_switch_control_get(int unit, bcm_switch_control_t bcm_type, int *arg); 57 58 #define DPP_SWITCH_L3_PROTOCOL_GROUP_MASK_EXACT 0x3 59 60 #define DPP_SWITCH_L3_PROTOCOL_GROUP_IPV4_DEFAULT 0X3 61 #define DPP_SWITCH_L3_PROTOCOL_GROUP_IPV6_DEFAULT 0X1 62 63 #define DPP_SWITCH_L3_PROTOCOL_GROUP_LOWEST_VALID 1 64 65 /* Defines for header compensation per packet. */ 66 #define BCM_SWITCH_HDR_COMP_PER_PACKET_MAX_INDEX (31) 67 #define BCM_SWITCH_HDR_COMP_PER_PACKET_MAX_ABS_VALUE ((1 << PPC_API_EG_ENCAP_PER_PKT_HDR_COMP_NOF_VALUE_LSBS) - 1) 68 69 70 /* Verifies required conditions for bcm_switch_l3_protocol_group_set/get (Jericho in multiple mymac mode 2 or above). */ 71 #define DPP_SWITCH_L3_PROTOCOL_GROUP_VERIFY(_unit) \ 72 BCM_DPP_UNIT_CHECK(unit); \ 73 if (!SOC_IS_JERICHO(_unit)) { \ 74 BCMDNX_ERR_EXIT_MSG(BCM_E_UNAVAIL, (_BSL_BCM_MSG("API is for jericho and above."))); \ 75 } \ 76 if (!_BCM_PETRA_L3_MULTIPLE_MYMAC_MODE_PROTOCOL_GROUP_IS_ACTIVE(_unit)) { \ 77 BCMDNX_ERR_EXIT_MSG(BCM_E_UNAVAIL, (_BSL_BCM_MSG("Multiple mymac mode must be 2 or above to use this api."))); \ 78 } 79 80 /* Given the api's l3 protocol group flags, returns the soc ppc flags. */ 81 #define DPP_SWITCH_L3_PROTOCOL_GROUP_TRANSLATE_API_FLAGS_TO_INTERNAL(_src, _target) \ 82 (_target) = 0; \ 83 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_IPV4 , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV4 );\ 84 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_IPV6 , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV6 );\ 85 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_ARP , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_ARP );\ 86 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_MPLS , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MPLS );\ 87 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_MIM , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MIM );\ 88 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_TRILL, _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_TRILL);\ 89 DPP_TRANSLATE_FLAG(_src, BCM_SWITCH_L3_PROTOCOL_GROUP_FCOE , _target, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_FCOE ); 90 91 92 /* Given the soc ppc l3 protocol group flags, returns the api flags. */ 93 #define DPP_SWITCH_L3_PROTOCOL_GROUP_TRANSLATE_INTERNAL_FLAGS_TO_API(_src, _target) \ 94 (_target) = 0; \ 95 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV4 , _target, BCM_SWITCH_L3_PROTOCOL_GROUP_IPV4 );\ 96 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_IPV6 , _target, BCM_SWITCH_L3_PROTOCOL_GROUP_IPV6 );\ 97 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_ARP , _target, BCM_SWITCH_L3_PROTOCOL_GROUP_ARP );\ 98 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MPLS , _target, BCM_SWITCH_L3_PROTOCOL_GROUP_MPLS );\ 99 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_MIM , _target, BCM_SWITCH_L3_PROTOCOL_GROUP_MIM );\ 100 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_TRILL, _target, BCM_SWITCH_L3_PROTOCOL_GROUP_TRILL);\ 101 DPP_TRANSLATE_FLAG(_src, SOC_PPC_L3_VRRP_PROTOCOL_GROUP_FCOE , _target, BCM_SWITCH_L3_PROTOCOL_GROUP_FCOE ); 102 103 #endif /* _BCM_INT_DPP_SWITCH_H_ */ 104 105