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 */