openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

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