bondoptions.h (13842B)
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 * File for SOC Bond Options Info structures and routines 8 */ 9 10 #ifndef _SOC_BONDOPTIONS_H 11 #define _SOC_BONDOPTIONS_H 12 13 #include <soc/drv.h> 14 15 16 typedef enum { 17 18 /* Feature Enables */ 19 socBondInfoFeatureNoL3, /* L3 */ 20 socBondInfoFeatureNoEcmp, /* Ecmp */ 21 socBondInfoFeatureNoAlpm, /* Alpm */ 22 socBondInfoFeatureNoL3Tunnel, /* L3 Tunnel */ 23 socBondInfoFeatureNoStaticNat, /* NAT */ 24 socBondInfoFeatureIpmcDisabled, /* IPMC */ 25 socBondInfoFeatureNoMim, /* MIM */ 26 socBondInfoFeatureNoMpls, /* MPLS */ 27 socBondInfoFeatureNoTrill, /* TRILL */ 28 socBondInfoFeatureNoVxlan, /* Vxlan */ 29 socBondInfoFeatureNoVxlanLite, /* Vxlan Lite */ 30 socBondInfoFeatureNoL2Gre, /* L2GRE */ 31 socBondInfoFeatureNoRiot, /* RIOT */ 32 socBondInfoFeatureNoEtherTm, /* Ether TM */ 33 socBondInfoFeatureNoFcoe, /* FCOE */ 34 socBondInfoFeatureNoTimeSync, /* TimeSync */ 35 socBondInfoFeatureNoHgProxyCoe, /* TD2+ COE */ 36 socBondInfoFeatureNoCoeVlanPause, /* COE Vlan Pause */ 37 socBondInfoFeatureNoCoeSubtag8100, /* COE can use 0x8100 */ 38 socBondInfoFeatureNoFpOam, /* FP-Based OAM */ 39 socBondInfoFeatureNoOsubCT, /* OS+CT support */ 40 socBondInfoFeatureNoCutThru, /* Cut-thru support */ 41 socBondInfoFeatureNoSat, /* SAT */ 42 socBondInfoFeatureNoFpRouting, /* IFP Based Routing */ 43 socBondInfoFeatureNoOam, /* OAM */ 44 socBondInfoFeatureNoLinkPhy, /* Link PHY */ 45 socBondInfoFeatureNoSubTagCoe, /* Subtag COE */ 46 socBondInfoFeatureNoPTP, /* PTP */ 47 socBondInfoFeatureNoServiceMeter, /* Service meter */ 48 socBondInfoFeatureNoAvs, /* AVS */ 49 socBondInfoFeatureNoOamTrueUpMep, /* OAM TRUE UPMEP */ 50 socBondInfoFeatureNoEpRedirectV2, /* EP REDIRECT V2.0 */ 51 socBondInfoFeatureNoMultiLevelProt, /* MULTI LEVEL PROT */ 52 socBondInfoFeatureNoFpSat, /* FP-SAT (SAT Hooks) */ 53 socBondInfoFeatureNoSegmentRouting, /* Segment Routing */ 54 socBondInfoFeatureNoCAUI10Support, /* CAUI10 Support */ 55 socBondInfoFeatureHqos3Levels, /* HQOS 3 levels Support*/ 56 socBondInfoFeatureNoQCN, /* QCN */ 57 socBondInfoFeatureNoECN, /* ECN */ 58 socBondInfoFeatureNoDMVoq, /* DMVOQ */ 59 socBondInfoFeatureNoDPVoq, /* DPVOQ */ 60 socBondInfoFeatureNoPipe_2_3, /* PIPE2,3 */ 61 socBondInfoFeatureNoExactMatch, /* UFT ACL Match */ 62 socBondInfoFeatureNoEfp, /* EFP */ 63 socBondInfoFeatureNoIfp, /* IFP */ 64 socBondInfoFeatureNoVfp, /* VFP */ 65 socBondInfoFeatureNoLpm, /* LPM */ 66 socBondInfoFeatureNoUftBank0, /* UFT Bank 0 */ 67 socBondInfoFeatureNoUftBank1, /* UFT Bank 1 */ 68 socBondInfoFeatureNoUftBank2, /* UFT Bank 2 */ 69 socBondInfoFeatureNoUftBank3, /* UFT Bank 3 */ 70 socBondInfoFeatureNoMplsFrr, /* MPLS FRR */ 71 socBondInfoFeatureNoDynamicLoadBalancing, /* DLB */ 72 socBondInfoFeatureNoDynamicAlternatePath, /* Dynamic Alternate Path */ 73 socBondInfoFeatureNoPstats, /* Packetized Stats */ 74 socBondInfoFeatureNoTCB, /* TCB */ 75 socBondInfoFeatureNoTimestamp, /* Timestamp */ 76 socBondInfoFeatureNoRRCOE, /* RRCOE */ 77 socBondInfoFeatureNoPreemption, /* Preemption */ 78 socBondInfoFeatureNoTAS, /* TAS */ 79 socBondInfoFeatureNoHSR, /* HSR */ 80 socBondInfoFeatureNoPRP, /* PRP */ 81 socBondInfoFeatureNo8021CB, /* 802_1CB */ 82 socBondInfoFeatureNoMacsec, /* MACSEC */ 83 socBondInfoFeatureNoReserveTunnel, /* RESERVE TUNNEL */ 84 85 /* Table size updates */ 86 socBondInfoFeatureVrf1k, /* 1K VRF */ 87 socBondInfoFeatureVrf2k, /* 2K VRF */ 88 socBondInfoFeatureVrf4k, /* 4K VRF */ 89 socBondInfoFeatureL3Entry1k, /* L3_ENTRY */ 90 socBondInfoFeatureL3Iif8k, /* 8K IIF */ 91 socBondInfoFeatureL3Iif12k, /* 12K IIF */ 92 socBondInfoFeatureUft128k, /* Half UFT - 128K */ 93 socBondInfoFeatureUft256k, /* Full UFT - 256K */ 94 socBondInfoFeatureIpmc64, /* 64 IPMC */ 95 socBondInfoFeatureIpmc1k, /* 1K IPMC */ 96 socBondInfoFeatureIpmc4k, /* 4K IPMC */ 97 socBondInfoFeatureIpmc8k, /* 8K IPMC */ 98 socBondInfoFeatureMmu1Mb, /* 1MB Buffers */ 99 socBondInfoFeatureMmu2Mb, /* 2MB Buffers */ 100 socBondInfoFeatureMmu6Mb, /* 6MB Buffers */ 101 socBondInfoFeatureMmu9Mb, /* 9MB Buffers */ 102 socBondInfoFeatureMmu12Mb, /* 12MB Buffers */ 103 socBondInfoFeatureIfp64HalfSlice, /* IFP Half slice (64)*/ 104 socBondInfoFeatureIfpSliceHalf, /* IFP Half slice (512) */ 105 socBondInfoFeatureEfp64HalfSlice, /* EFP Half Slice (64) */ 106 socBondInfoFeatureEfp512HalfSlice,/* EFP Half Slice (512) */ 107 socBondInfoFeatureVfp64HalfSlice,/* VFP Half Slice (64) */ 108 socBondInfoFeatureVfp512HalfSlice,/* VFP Half Slice (512) */ 109 socBondInfoFeatureMpls1k, /* 1K MPLS Table*/ 110 socBondInfoFeatureMpls2k, /* 2K MPLS Table*/ 111 socBondInfoFeatureL2Entry4k, /* 4K L2_ENTRY Table*/ 112 socBondInfoFeatureL2Entry8k, /* 8K L2_ENTRY Table*/ 113 socBondInfoFeatureL2Entry16k, /* 16K L2_ENTRY Table*/ 114 socBondInfoFeatureL2Entry32k, /* 32K L2_ENTRY Table*/ 115 socBondInfoFeatureIpVlanXlate256, /* 256 IP VLAN_XLATE Table*/ 116 socBondInfoFeatureIpVlanXlate1k, /* 1K IP VLAN_XLATE Table*/ 117 socBondInfoFeatureIpVlanXlate4k, /* 4K IP VLAN_XLATE Table*/ 118 socBondInfoFeatureL3NextHop768, /* 768 L3_NEXT_HOP Table*/ 119 socBondInfoFeatureL3NextHop1k, /* 1K L3_NEXT_HOP Table*/ 120 socBondInfoFeatureL3NextHop2k, /* 2K L3_NEXT_HOP Table*/ 121 socBondInfoFeatureL3NextHop5k, /* 5K L3_NEXT_HOP Table*/ 122 socBondInfoFeatureL3DefIpDisable,/* L3_DEF_IP Table*/ 123 socBondInfoFeatureL2mc256, /* 256 L2MC */ 124 socBondInfoFeatureL2mc4k, /* 4K L2MC */ 125 socBondInfoFeatureSVP4k, /* 4K SVP */ 126 socBondInfoFeatureL3HostMax512, /* 512 L3 Max Host */ 127 socBondInfoFeatureL3HostMax4k, /* 4K L3 Max Host */ 128 socBondInfoFeatureVrf16, /* 16 VRFs */ 129 socBondInfoFeatureL3NHop8k, /* 8k NHOPs */ 130 socBondInfoFeatureL3NHop32k, /* 32k NHOPs */ 131 socBondInfoFeatureL3Intf8k, /* 8k L3_INTF */ 132 socBondInfoFeatureL3Intf12k, /* 12k L3_INTF */ 133 socBondInfoFeatureIfpSlice1k5, /* IFP Slice Depth 1.5k Entries */ 134 socBondInfoFeatureIfpSlice3k, /* IFP Slice Depth 3k Entries */ 135 socBondInfoFeatureIfpSlice6k, /* IFP Slice Depth 6k Entries */ 136 socBondInfoFeatureLpm64, /* 64 LPM */ 137 socBondInfoFeatureLpm1k, /* 1K LPM */ 138 socBondInfoFeatureLpm2k, /* 2K LPM */ 139 socBondInfoFeatureLpm8k, /* 8K LPM */ 140 socBondInfoFeatureLpm16k, /* 16K LPM */ 141 socBondInfoFeatureNextHop16k, /* 16K Next Hop */ 142 socBondInfoFeatureNextHop32k, /* 32K Next Hop */ 143 socBondInfoFeatureNextHop48k, /* 48K Next Hop */ 144 socBondInfoFeatureStg32, /* 32 span tree groups */ 145 socBondInfoFeatureStg256, /* 256 span tree groups */ 146 socBondInfoFeatureSRFlowId256, /* 256 Seamless Redundancy FlowID size */ 147 socBondInfoFeatureSRFlowId4k, /* 4k Seamless Redundancy FlowID size */ 148 149 /* iProc Related */ 150 socBondInfoFeatureUc0Active, /* UC0 Active */ 151 socBondInfoFeatureUc1Active, /* UC1 Active */ 152 socBondInfoFeatureSramPwrDwn, /* SRAM Powered Down */ 153 socBondInfoFeatureSpiCodeSize32KB, /* SPI - 32KB */ 154 socBondInfoFeatureSpiCodeSize64KB, /* SPI - 64KB */ 155 socBondInfoFeatureSpiCodeSize128KB,/* SPI - 128KB */ 156 socBondInfoFeatureTs1588, /* TS-1588 */ 157 socBondInfoNoIHost, /* iHost Disable */ 158 socBondInfoFeatureA72Frequency1Ghz, /* A72 Freq 1 Ghz */ 159 socBondInfoFeatureA72Frequency2Ghz, /* A72 Freq 2 Ghz */ 160 161 /* Chip Specific */ 162 socBondInfoFeatureFamilyApache, 163 socBondInfoFeatureFamilyMaverick, 164 socBondInfoFeatureFamilyFirebolt5, 165 socBondInfoFeatureFamilyRanger2Plus, 166 socBondInfoFeatureApacheCoSProfile0, 167 socBondInfoFeatureApacheCoSProfile1, 168 socBondInfoFeatureApacheCoSProfile2, 169 socBondInfoFeatureApachePkg42p5mm, 170 socBondInfoFeatureApachePkg50mmTDpCompat, 171 socBondInfoFeatureApachePkg50mmTD2pCompat, 172 socBondInfoFeatureMetroliteL1SyncE, 173 socBondInfoFeatureMetroliteTelecomDPLL, 174 175 /* Broadscan related */ 176 socBondInfoBskDisable, /* Broadscan Disable */ 177 socBondInfoBskNoPktSampling, /* BROADSCAN packet sampling disable */ 178 socBondInfoBskNoHWExportPktBuild, /* BROADSCAN HW export packet build disable */ 179 socBondInfoBskNoTCPBidir, /* BROADSCAN TCP bidir processing disable */ 180 socBondInfoBskNoDoSAttackVector, /* BROADSCAN DOS attack vector check disable */ 181 socBondInfoBskNoMicroFlowPolicer, /* BROADSCAN micro flow policer disable */ 182 socBondInfoBskNoALU32Inst2to11, /* BROADSCAN ALU32 inst 2_to_11 disable */ 183 socBondInfoBskSessionDepth8k, /* BROADSCAN Session table depth 8k */ 184 socBondInfoBskSessionDepth16k, /* BROADSCAN Session table depth 16k */ 185 socBondInfoBskSessionDepth32k, /* BROADSCAN Session table depth 32k */ 186 187 socBondInfoFeatureCount /* Alyways Last */ 188 } soc_bond_info_features_t; 189 190 191 /* 192 * Bond Options structure. 193 * 194 * New elements that cannot be fit into the 'features' definition should be 195 * defined as spearate elements in the structure. 196 */ 197 typedef struct soc_bond_info_s { 198 uint16 dev_id; /* 16b: DEVICE_ID */ 199 uint16 rev_id; /* 8b: REV_ID */ 200 201 uint32 device_skew; /* 4b: DEVICE_SKEW */ 202 uint32 max_core_freq; /* 3b: MAX_CORE_FREQUENCY */ 203 uint32 default_core_freq; /* 3b: DEFAULT_CORE_FREQUENCY */ 204 uint32 mb_bank_num; /* 4b: MMU_MB_NUM_BANKS */ 205 uint32 dpp_clk_ratio; /* 2b: DPP TO CORE RATIO */ 206 uint32 avs_status; /* 8b: AVS_STATUS */ 207 uint32 cbp_buffer_size; /* 2b: CBP_BUFFER_SIZE */ 208 uint32 max_xqs_number; /* 1b: MAX_XQS_NUMBER */ 209 210 uint32 defip_cam_map; /* 8b: DEFIP_CAM_ENABLE */ 211 uint32 ifp_slice_map; /* 12b: IFP_SLICE_ENABLE */ 212 uint32 efp_slice_map; /* 4b: EFP_SLICE_ENABLE */ 213 uint32 vfp_slice_map; /* 4b: VFP_SLICE_ENABLE */ 214 uint32 tsce_max_2p5g; /* 14b: FORCE_2P5G_MAX */ 215 uint32 tscf_max_11g; /* 4b: FORCE_11G_MAX */ 216 uint32 tsc_force_hg; /* 18b: FORCE_HG */ 217 uint32 tsc_enable; /* 18b: TSC_ENABLE */ 218 uint32 clmac_map; /* 6b: CLMAC_ENABLE */ 219 uint32 xlmac_map; /* 18b: XLMAC_ENABLE */ 220 221 SHR_BITDCL tsc_disabled[_SHR_BITDCLSIZE(65)]; /* 65b: TSC_DISABLE */ 222 SHR_BITDCL force_hg[_SHR_BITDCLSIZE(64)]; /* 64b: FORCE_HG */ 223 SHR_BITDCL tsc_max_speed[_SHR_BITDCLSIZE(128)]; /* 128b: TSC_MAX_LANE_SPEED */ 224 SHR_BITDCL tsc_sr_only[_SHR_BITDCLSIZE(64)]; /* 64b: TSC_SR_ONLY */ 225 SHR_BITDCL tsc_in_loop[_SHR_BITDCLSIZE(128)]; /* 128b: TSC_FORCE_LOOPBACK */ 226 SHR_BITDCL cpri_enable[_SHR_BITDCLSIZE(48)]; /* 48b: TSC_CPRI_ENABE */ 227 SHR_BITDCL ic_id[_SHR_BITDCLSIZE(64)]; /* 64b: ICID */ 228 229 /* Bitmap of bondoption features */ 230 SHR_BITDCL features[_SHR_BITDCLSIZE(socBondInfoFeatureCount)]; 231 } soc_bond_info_t; 232 233 extern soc_bond_info_t *soc_bond_info[SOC_MAX_NUM_DEVICES]; 234 235 #define SOC_BOND_INFO(unit) (soc_bond_info[unit]) 236 237 /* Bond Info Features cache - Access macros */ 238 #define SOC_BOND_INFO_FEATURE_GET(unit, feat) \ 239 SHR_BITGET(SOC_BOND_INFO(unit)->features, feat) 240 #define SOC_BOND_INFO_FEATURE_SET(unit, feat) \ 241 SHR_BITSET(SOC_BOND_INFO(unit)->features, feat) 242 #define SOC_BOND_INFO_FEATURE_CLEAR(unit, feat) \ 243 SHR_BITCLR(SOC_BOND_INFO(unit)->features, feat) 244 245 #define SOC_BOND_INFO_GET(unit, attrib) (SOC_BOND_INFO(unit)->attrib) 246 #define SOC_BOND_INFO_SET(unit, attrib) (SOC_BOND_INFO(unit)->attrib) 247 248 #define SOC_BOND_INFO_REG_MAX 16 249 #define SOC_BOND_INFO_REG_WIDTH 32 250 #define SOC_BOND_INFO_MAX_BITS (SOC_BOND_INFO_REG_MAX * SOC_BOND_INFO_REG_WIDTH) 251 252 #define SOC_BOND_OPTIONS_COPY(_toval_, __cast__, _fromval_, _sbit_, _ebit_) \ 253 do { \ 254 { \ 255 uint32 bitrange_val = 0; \ 256 SHR_BITCOPY_RANGE(&bitrange_val, 0, \ 257 (CONST SHR_BITDCL *)(_fromval_), \ 258 (_sbit_), ((_ebit_) - (_sbit_) + 1)); \ 259 _toval_ = (__cast__)bitrange_val; \ 260 } \ 261 } while (0) 262 263 264 extern int soc_bond_info_registers[SOC_BOND_INFO_REG_MAX]; 265 266 #endif /* !_SOC_BONDOPTIONS_H */