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

fabric.h (13976B)


      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  * This file defines common network port parameters.
      8  *
      9  * Its contents are not used directly by applications; it is used only
     10  * by header files of parent APIs which need to define port parameters.
     11  */
     12 
     13 #ifndef _SHR_FABRIC_H
     14 #define _SHR_FABRIC_H
     15 
     16 #define _SHR_FABRIC_LINK_STATUS_CRC_ERROR    0x00000001 /* Non-zero CRC rate */
     17 #define _SHR_FABRIC_LINK_STATUS_SIZE_ERROR   0x00000002 /* Non-zero size
     18                                                           error-count */
     19 #define _SHR_FABRIC_LINK_STATUS_CODE_GROUP_ERROR 0x00000004 /* Non-zero code group
     20                                                           error-count */
     21 #define _SHR_FABRIC_LINK_STATUS_MISALIGN     0x00000008 /* Link down,
     22                                                           misalignment error */
     23 #define _SHR_FABRIC_LINK_STATUS_NO_SIG_LOCK  0x00000010 /* Link down, SerDes
     24                                                           signal lock error */
     25 #define _SHR_FABRIC_LINK_STATUS_NO_SIG_ACCEP 0x00000020 /* Link up, but not
     26                                                           accepting reachability
     27                                                           cells */
     28 #define _SHR_FABRIC_LINK_STATUS_ERRORED_TOKENS 0x00000040 /* Low value, indicates
     29                                                           bad link connectivity
     30                                                           or link down, based on
     31                                                           reachability cells */
     32 
     33 #define _SHR_FABRIC_LINK_NO_CONNECTIVITY (0xFFFFFFFF) /* FABRIC_LINK_NO_CONNECTIVITY */
     34 
     35 #define _SHR_FABRIC_FLAG_GET                 0x0
     36 #define _SHR_FABRIC_FLAG_SET                 0x1
     37 
     38 /* bcm_fabric_priority_* flags */
     39 #define _SHR_FABRIC_QUEUE_PRIORITY_HIGH_ONLY 0x1        
     40 #define _SHR_FABRIC_QUEUE_PRIORITY_LOW_ONLY  0x2             
     41 #define _SHR_FABRIC_PRIORITY_MULTICAST       0x8  
     42 #define _SHR_FABRIC_PRIORITY_TDM             0x10
     43 #define _SHR_FABRIC_PRIORITY_OCB_MIX_ONLY    0x20        
     44 #define _SHR_FABRIC_PRIORITY_OCB_ONLY_ONLY   0x40        
     45 
     46 /*bcm_fabric_multicast_* flgas*/
     47 #define _SHR_FABRIC_MULTICAST_SET_ONLY       0x1
     48 #define _SHR_FABRIC_MULTICAST_COMMIT_ONLY    0x2
     49 #define _SHR_FABRIC_MULTICAST_STATUS_ONLY    0x4
     50 
     51 /*bcm_fabric_profile_threshold_* valid flags*/
     52 #define _SHR_FABRIC_TH_FLAG_FE1_ONLY            0x01
     53 #define _SHR_FABRIC_TH_FLAG_FE3_ONLY            0x02
     54 #define _SHR_FABRIC_TH_FLAG_LR                  0x04
     55 #define _SHR_FABRIC_TH_FLAG_NLR                 0x08
     56 
     57 /* FabricLinkCellFormat flags */
     58 #define _SHR_FABRIC_LINK_CELL_FORMAT_VSC256_V1              (0)/* VS256_V1 cell format */
     59 #define _SHR_FABRIC_LINK_CELL_FORMAT_VSC128                 (1)/* VSC128 cell format */
     60 #define _SHR_FABRIC_LINK_CELL_FORMAT_VSC256_V2              (2)/* VS256_V2 cell format */
     61 
     62 /* bcm_fabric_profile_threshold_* threshold_id MACROS */
     63 
     64 #define _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT           (24)
     65 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_VAL             (0x1)
     66 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_VAL              (0x2)
     67 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_VAL   (0x3)
     68 #define _SHR_FABRIC_TH_INDEX_MASK                       (0xff)
     69 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_INDICATION      (_SHR_FABRIC_TH_INDEX_PIPE_LEVEL_VAL << _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT)
     70 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_INDICATION   (_SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_VAL << _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT)
     71 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_INDICATION       (_SHR_FABRIC_TH_INDEX_CAST_PRIO_VAL << _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT)
     72 
     73 /* number of bits + 1, in order to represent (-1). For example we need 2 bits to represent 4 values of priority + 1 bit to represent (-1) which will be all ones  */
     74 /*We also include a buffer space for each parameter of 3 bits for future use*/
     75 #define _SHR_FABRIC_TH_INDEX_BUFFER_SPACE              (3)
     76 
     77 #define _SHR_FABRIC_TH_INDEX_PIPE_NOF_BITS             (3 + _SHR_FABRIC_TH_INDEX_BUFFER_SPACE)
     78 #define _SHR_FABRIC_TH_INDEX_LEVEL_NOF_BITS            (3 + _SHR_FABRIC_TH_INDEX_BUFFER_SPACE)
     79 #define _SHR_FABRIC_TH_INDEX_FMC_NOF_BITS              (3 + _SHR_FABRIC_TH_INDEX_BUFFER_SPACE)
     80 #define _SHR_FABRIC_TH_INDEX_SLOW_START_PHASE_NOF_BITS (1 + _SHR_FABRIC_TH_INDEX_BUFFER_SPACE)
     81 #define _SHR_FABRIC_TH_INDEX_PRIO_NOF_BITS             (3 + _SHR_FABRIC_TH_INDEX_BUFFER_SPACE)
     82 #define _SHR_FABRIC_TH_INDEX_CAST_NOF_BITS             (2)
     83 
     84 #define _SHR_FABRIC_TH_INDEX_PRIO_MASK                 ((1<<_SHR_FABRIC_TH_INDEX_PRIO_NOF_BITS) - 1 )
     85 #define _SHR_FABRIC_TH_INDEX_CAST_MASK                 ((1<<_SHR_FABRIC_TH_INDEX_CAST_NOF_BITS) - 1 )
     86     
     87 #define _BCM_FABRIC_LINK_TH_LR_ONLY                 _SHR_FABRIC_TH_FLAG_LR
     88 #define _BCM_FABRIC_LINK_TH_NLR_ONLY                _SHR_FABRIC_TH_FLAG_NLR
     89 #define _BCM_FABRIC_LINK_TH_FE1_LINKS_ONLY          _SHR_FABRIC_TH_FLAG_FE1_ONLY
     90 #define _BCM_FABRIC_LINK_TH_FE3_LINKS_ONLY          _SHR_FABRIC_TH_FLAG_FE3_ONLY
     91 
     92 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_MASK     ((1 << _SHR_FABRIC_TH_INDEX_PIPE_NOF_BITS) - 1)
     93 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_MASK    ((1 << _SHR_FABRIC_TH_INDEX_LEVEL_NOF_BITS) - 1)
     94 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_SHIFT   (0)
     95 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_SHIFT    (_SHR_FABRIC_TH_INDEX_LEVEL_NOF_BITS)
     96 
     97 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_MASK                ((1 << _SHR_FABRIC_TH_INDEX_FMC_NOF_BITS) - 1)
     98 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_MASK   ((1 << _SHR_FABRIC_TH_INDEX_SLOW_START_PHASE_NOF_BITS) - 1)
     99 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_SHIFT  (0)
    100 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_SHIFT               (_SHR_FABRIC_TH_INDEX_SLOW_START_PHASE_NOF_BITS)
    101 
    102 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_MASK    ((1 << _SHR_FABRIC_TH_INDEX_CAST_NOF_BITS) - 1)
    103 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_MASK    ((1 << _SHR_FABRIC_TH_INDEX_PRIO_NOF_BITS) - 1)
    104 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_SHIFT   (0)
    105 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_SHIFT   (_SHR_FABRIC_TH_INDEX_PRIO_NOF_BITS)
    106 
    107 #define _SHR_FABRIC_TH_INDEX_IS_PIPE_LEVEL(th_index)     \
    108         (((th_index >> _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT) & _SHR_FABRIC_TH_INDEX_MASK) == \
    109          _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_VAL)
    110 
    111 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_SET(pipe, level) \
    112         (_SHR_FABRIC_TH_INDEX_PIPE_LEVEL_INDICATION | \
    113          (((pipe) & _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_MASK) << _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_SHIFT) | \
    114          (((level) & _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_MASK) << _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_SHIFT))
    115 
    116 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_GET(th_index) \
    117         ((((th_index) >> _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_SHIFT) & \
    118                         _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_MASK) == _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_MASK ? -1 : \
    119          (((th_index) >> _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_SHIFT) & \
    120                         _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_PIPE_MASK))
    121 
    122 #define _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_GET(th_index) \
    123         ((((th_index) >> _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_SHIFT) & \
    124                          _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_MASK) == _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_MASK ? -1 : \
    125          (((th_index) >> _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_SHIFT) & \
    126                          _SHR_FABRIC_TH_INDEX_PIPE_LEVEL_LEVEL_MASK))
    127 
    128 #define _SHR_FABRIC_TH_INDEX_IS_FMC_SLOW_START_PHASE(index)     \
    129         (((index >> _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT) & _SHR_FABRIC_TH_INDEX_MASK) == \
    130          _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_VAL)
    131 
    132 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SET(fmc_shaper, slow_start_phase) \
    133         (_SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_INDICATION | \
    134          (((fmc_shaper) & _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_MASK) << _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_SHIFT) | \
    135          (((slow_start_phase) & _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_MASK) << _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_SHIFT))
    136 
    137 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_GET(index) \
    138         ((((index) >> _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_SHIFT) & \
    139                         _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_MASK) == _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_MASK ? -1 : \
    140          (((index) >> _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_SHIFT) & \
    141                         _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_FMC_MASK))
    142 
    143 #define _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_GET(index) \
    144         ((((index) >> _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_SHIFT) & \
    145                          _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_MASK) == _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_MASK ? -1 : \
    146          (((index) >> _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_SHIFT) & \
    147                          _SHR_FABRIC_TH_INDEX_FMC_SLOW_START_PHASE_SLOW_START_PHASE_MASK))
    148 
    149 #define _SHR_FABRIC_TH_INDEX_IS_CAST_PRIO(index)     \
    150         (((index >> _SHR_FABRIC_TH_INDEX_INDICATION_SHIFT) & _SHR_FABRIC_TH_INDEX_MASK) == \
    151          _SHR_FABRIC_TH_INDEX_CAST_PRIO_VAL)
    152 
    153 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_SET(cast, prio) \
    154         (_SHR_FABRIC_TH_INDEX_CAST_PRIO_INDICATION | \
    155          (((cast) & _SHR_FABRIC_TH_INDEX_CAST_MASK) << _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_SHIFT) | \
    156          (((prio) & _SHR_FABRIC_TH_INDEX_PRIO_MASK) << _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_SHIFT))
    157 
    158 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_GET(index) \
    159         ((((index) >> _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_SHIFT) & \
    160                       _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_MASK) == _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_MASK ? -1 : \
    161          (((index) >> _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_SHIFT) & \
    162                       _SHR_FABRIC_TH_INDEX_CAST_PRIO_CAST_MASK))
    163 
    164 #define _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_GET(index) \
    165         ((((index) >> _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_SHIFT) & \
    166                       _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_MASK) == _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_MASK ? -1 : \
    167          (((index) >> _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_SHIFT) & \
    168                       _SHR_FABRIC_TH_INDEX_CAST_PRIO_PRIO_MASK))
    169 
    170 #define _SHR_FABRIC_TH_FLAG_SUPPORT_FE1_FE3     (_SHR_FABRIC_TH_FLAG_FE3_ONLY | _SHR_FABRIC_TH_FLAG_FE1_ONLY)
    171 #define _SHR_FABRIC_TH_FLAG_SUPPORT_NLR_LR      (_SHR_FABRIC_TH_FLAG_LR | _SHR_FABRIC_TH_FLAG_NLR)
    172 #define _SHR_FABRIC_TH_FLAG_SUPPORT_ALL         (_SHR_FABRIC_TH_FLAG_SUPPORT_NLR_LR | _SHR_FABRIC_TH_FLAG_SUPPORT_FE1_FE3)
    173 
    174 /* Bitmap of possible validity checks for each threshold*/
    175 #define _SHR_FABRIC_CGM_VALIDITY_NONE                     0x0
    176 #define _SHR_FABRIC_CGM_VALIDITY_NOT_PROFILE_DEPENDENT    0x1 /* Such thresholds cannot receive for a profile_id value different than 0*/
    177 #define _SHR_FABRIC_CGM_VALIDITY_ONLY_TWO_PIPES           0x2 /* Such thresholds cannot receive for a pipe value different than 0 or 1*/
    178 #define _SHR_FABRIC_CGM_VALIDITY_MODULO_4                 0x4 /* Such thresholds should receive values that don't have a remainder after devision by 4*/
    179 #define _SHR_FABRIC_CGM_DISABLE_NOT_SUPPORTED             0x8 /* Such thresholds should not receive values of -1*/
    180 
    181 /* DNXF types of CGM threshold indexes*/
    182 typedef enum _shr_dnxf_cgm_index_type_e {
    183     _shr_dnxf_cgm_index_type_cast_prio,
    184     _shr_dnxf_cgm_index_type_priority,
    185     _shr_dnxf_cgm_index_type_pipe,
    186     _shr_dnxf_cgm_index_type_pipe_level
    187 } _shr_dnxf_cgm_index_type_t;
    188 
    189 /* Fabric threshold ID */
    190 typedef uint32 _shr_dnxf_threshold_id_t;
    191 
    192 /* fabric_threshold_type */
    193 typedef enum _shr_dnxf_threshold_type_e {
    194     _SHR_FABRIC_MID_TAG_DROP_CLASS_TH = 0,     /* INGRESS ADMISSION THRESHOLDS */
    195     _SHR_FABRIC_TX_LINK_LOAD_DROP_PIPE_TH = 1,
    196     _SHR_FABRIC_TX_FRAG_GUARANTEED_PIPE_TH = 2,
    197     _SHR_FABRIC_SHARED_DROP_CLASS_TH = 3,
    198     _SHR_FABRIC_SHARED_MC_COPIES_DROP_PRIO_TH = 4,
    199     _SHR_FABRIC_MID_FRAG_DROP_CLASS_TH = 5,
    200     _SHR_FABRIC_SHARED_BANK_MC_DROP_PRIO_TH = 6, /* DTL ADMISSION THRESHOLDS */
    201     _SHR_FABRIC_TX_TAG_DROP_CLASS_TH = 7,
    202     _SHR_FABRIC_TX_FRAG_DROP_CLASS_TH = 8,
    203     _SHR_FABRIC_TX_TAG_GCI_PIPE_TH = 9,      /* GCI GENERATION */
    204     _SHR_FABRIC_TX_FRAG_GCI_PIPE_TH = 10, 
    205     _SHR_FABRIC_MID_TAG_GCI_PIPE_TH = 11,
    206     _SHR_FABRIC_MID_FRAG_GCI_PIPE_TH = 12,
    207     _SHR_FABRIC_SHARED_GCI_PIPE_TH = 13,
    208     _SHR_FABRIC_SHARED_FRAG_COPIES_GCI_PIPE_TH = 14,
    209     _SHR_FABRIC_TX_FRAG_GUARANTEED_RCI_PIPE_TH = 15, /* RCI GENERATION */
    210     _SHR_FABRIC_TX_LINK_LOAD_RCI_PIPE_TH = 16,
    211     _SHR_FABRIC_TX_TAG_RCI_PIPE_TH = 17,
    212     _SHR_FABRIC_TX_FRAG_RCI_PIPE_TH = 18,
    213     _SHR_FABRIC_MID_TAG_RCI_PIPE_TH = 19,
    214     _SHR_FABRIC_MID_FRAG_RCI_PIPE_TH = 20,
    215     _SHR_FABRIC_SHARED_RCI_PIPE_TH = 21,
    216     _SHR_FABRIC_MID_MC_COPIES_FC_PRIO_TH = 22,  /* FC GENERATION */
    217     _SHR_FABRIC_MID_TAG_FC_PIPE_TH = 23,
    218     _SHR_FABRIC_MID_FRAG_FC_PIPE_TH = 24,
    219     _SHR_FABRIC_SHARED_FC_PIPE_TH = 25,
    220     _SHR_FABRIC_TX_TAG_FC_PIPE_TH = 26,
    221     _SHR_FABRIC_TX_FRAG_FC_PIPE_TH = 27,
    222     _SHR_FABRIC_MID_MASK_FC_PIPE_TH = 28,
    223     _SHR_FABRIC_TX_FE1_BYPASS_LLFCFC_PIPE_TH = 29,
    224     _SHR_FABRIC_RX_FRAG_DROP_PIPE_TH = 30,     /* DCH LEGACY THRESHOLDS */
    225     _SHR_FABRIC_RX_MC_LOW_PRIO_DROP_PIPE_TH = 31,
    226     _SHR_FABRIC_RX_FRAG_GCI_PIPE_TH = 32,
    227     _SHR_FABRIC_RX_LLFCFC_PIPE_TH = 33,
    228     _SHR_FABRIC_RX_WFQ_DYNAMIC_WEIGHT_PIPE_TH = 34, /* Dynamic weights*/
    229     _SHR_FABRIC_MID_WFQ_DYNAMIC_WEIGHT_PIPE_TH = 35,
    230     _SHR_FABRIC_TX_WFQ_DYNAMIC_WEIGHT_PIPE_TH = 36,
    231     _SHR_FABRIC_THRESHOLDS_COUNT = 37 /*This value should always be last*/
    232 } _shr_dnxf_threshold_type_t;
    233 
    234 #define _SHR_FABRIC_PIPE_ALL (-1)
    235 
    236 #endif  /* !_SHR_FABRIC_H */