field.c (263824B)
1 /* 2 * 3 * 4 * 5 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 6 * 7 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 8 * 9 * File: field.c 10 * Purpose: Field Processor module routines specific to BCM56980(Tomahawk3) 11 */ 12 #include <shared/bsl.h> 13 14 #include <soc/defs.h> 15 #include <bcm_int/esw/tomahawk.h> 16 17 #if defined(BCM_TOMAHAWK3_SUPPORT) && defined(BCM_FIELD_SUPPORT) 18 #include <bcm_int/esw/field.h> 19 #include <bcm/field.h> 20 #include <bcm_int/esw/tomahawk3.h> 21 #if defined(BCM_ESW_SUPPORT) 22 #include <bcm_int/esw/xgs4.h> 23 #endif 24 25 26 27 /* UDF Chunk to Qualifier Mapping */ 28 uint32 _bcm_th3_udf_chunk_to_qual_mapping[UDF_OFFSET_CHUNKS16] = 29 { 30 _bcmFieldQualifyData0, /* Chunk 0 */ 31 _bcmFieldQualifyData1, /* Chunk 1 */ 32 _bcmFieldQualifyData2, /* Chunk 2 */ 33 _bcmFieldQualifyData3, /* Chunk 3 */ 34 _bcmFieldQualifyData4, /* Chunk 4 */ 35 _bcmFieldQualifyData5, /* Chunk 5 */ 36 _bcmFieldQualifyData6, /* Chunk 6 */ 37 _bcmFieldQualifyData7, /* Chunk 7 */ 38 _bcmFieldQualifyData8, /* Chunk 8 */ 39 _bcmFieldQualifyData9, /* Chunk 9 */ 40 _bcmFieldQualifyData10, /* Chunk 10 */ 41 _bcmFieldQualifyData11, /* Chunk 11 */ 42 _bcmFieldQualifyData12, /* Chunk 12 */ 43 _bcmFieldQualifyData13, /* Chunk 13 */ 44 _bcmFieldQualifyData14, /* Chunk 14 */ 45 _bcmFieldQualifyData15 /* Chunk 15 */ 46 }; 47 48 /* 49 * Function: 50 * _field_th3_presel_qualifiers_init 51 * 52 * Purpose: 53 * Initialize Field Ingress Stage Preselector Qualifiers. 54 * 55 * Parameters: 56 * unit - (IN) BCM device number. 57 * stage_fc - (IN/OUT) Field Processor stage control structure. 58 * 59 * Returns: 60 * BCM_E_PARAM - Null field stage control structure. 61 * BCM_E_MEMORY - Allocation failure. 62 * BCM_E_INTERNAL - Invalid CAP Stage ID. 63 * BCM_E_NONE - Success. 64 */ 65 int 66 _field_th3_presel_qualifiers_init(int unit, _field_stage_t *stage_fc) 67 { 68 /* 69 * All the qualifiers offset mentioned are the actual individual HW field 70 * offset in IFP_LOGICAL_TABLE_SELECT Memory which are starting from bit 71 * position 1. "KEY" overlap field in the memory is used during write, 72 * hence to accomidate in the field, the offsets of the qualifiers has to 73 * be substracted by 1. 74 */ 75 uint8 mixed_src_class_offset = 0; 76 uint8 em_lt_id_offset = 0; 77 uint8 cpu_tx_offset = 0; 78 79 uint8 drop_offset = 0; 80 uint8 pkt_res_offset = 0; 81 uint8 fwd_type_offset = 0; 82 uint8 lookup_status_offset = 0; 83 uint8 mystation_hit_offset = 0; 84 uint8 tunnel_type_offset = 0; 85 uint8 lb_type_offset = 0; 86 uint8 lb_offset = 0; 87 uint8 l4pkt_offset = 0; 88 uint8 ip_type_offset = 0; 89 _FP_QUAL_DECL; 90 91 92 /* Exact match stage qualifier offset are not same as in IFP presel. 93 * Hence during init here need to take care of offset position 94 * accordingly. 95 */ 96 if (stage_fc->stage_id == _BCM_FIELD_STAGE_EXACTMATCH) { 97 mixed_src_class_offset = 0; 98 99 drop_offset = 33; 100 cpu_tx_offset = 34; 101 fwd_type_offset = 42; 102 lookup_status_offset = 46; 103 mystation_hit_offset = 65; 104 tunnel_type_offset = 66; 105 lb_type_offset = 66; 106 lb_offset = 69; 107 l4pkt_offset = 72; 108 ip_type_offset = 73; 109 } else if(stage_fc->stage_id == _BCM_FIELD_STAGE_INGRESS) { 110 mixed_src_class_offset = 0; 111 em_lt_id_offset = 32; 112 113 cpu_tx_offset = 36; 114 drop_offset = 47; 115 pkt_res_offset = 48; 116 fwd_type_offset = 54; 117 lookup_status_offset = 58; 118 mystation_hit_offset = 77; 119 tunnel_type_offset = 78; 120 lb_type_offset = 78; 121 lb_offset = 81; 122 l4pkt_offset = 84; 123 ip_type_offset = 85; 124 } else { 125 return BCM_E_NONE; 126 } 127 128 /* Allocated stage qualifiers configuration array. */ 129 _FP_XGS3_ALLOC(stage_fc->f_presel_qual_arr, 130 (_bcmFieldQualifyCount * sizeof(_bcm_field_qual_info_t *)), 131 "IFP Preselector qualifiers"); 132 if (stage_fc->f_presel_qual_arr == 0) { 133 return (BCM_E_MEMORY); 134 } 135 136 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyMixedSrcClassId, 137 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 138 mixed_src_class_offset, 32); 139 140 _FP_PRESEL_QUAL_ADD(unit, stage_fc, 141 _bcmFieldQualifyExactMatchGroupClassIdLookup0, 142 _BCM_FIELD_QUAL_OFFSET_NO_EM_SUPPORT, 143 _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 144 em_lt_id_offset, 4); 145 146 #if 0 147 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmfFieldQualifyCpuTxDestType, 148 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 149 cpu_tx_dest_type_offset, 4); 150 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmfFieldQualifyCpuTxFlowType, 151 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 152 cpu_tx_flow_type, 2); 153 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyCpuPktProfileCtrl, 154 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 155 cpu_pkt_prof_ctrl_offset, 1); 156 #endif 157 158 _FP_PRESEL_QUAL_ADD(unit, stage_fc, _bcmFieldQualifyCpuTxCtrl, 159 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 160 cpu_tx_offset, 6); 161 162 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyDrop, 163 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 164 drop_offset, 1); 165 166 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyPacketRes, 167 _BCM_FIELD_QUAL_OFFSET_NO_EM_SUPPORT, 168 _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 169 pkt_res_offset, 6); 170 171 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyForwardingType, 172 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 173 fwd_type_offset, 4); 174 175 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyMyStationHit, 176 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 177 mystation_hit_offset, 1); 178 179 180 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyLoopbackType, 181 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 182 tunnel_type_offset, 4); 183 184 185 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyTunnelType, 186 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 187 lb_type_offset, 4); 188 189 190 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyLoopback, 191 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 192 lb_offset, 1); 193 194 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyL4Ports, 195 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 196 l4pkt_offset, 1); 197 198 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyIpType, 199 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 200 ip_type_offset, 4); 201 202 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyIngressStpState, 203 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 204 lookup_status_offset, 2); 205 206 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyStpState, 207 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 208 lookup_status_offset, 2); 209 210 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyDosAttack, 211 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 212 lookup_status_offset + 2, 1); 213 214 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyForwardingVlanValid, 215 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 216 lookup_status_offset + 3, 1); 217 218 219 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyMplsLabel1Hit, 220 _BCM_FIELD_QUAL_OFFSET_NO_EM_SUPPORT, 221 _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 222 lookup_status_offset + 4, 1); 223 224 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyMplsLabel2Hit, 225 _BCM_FIELD_QUAL_OFFSET_NO_EM_SUPPORT, 226 _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 227 lookup_status_offset + 5, 1); 228 229 230 #if 0 231 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyMplsBosTerminated, 232 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 233 lookup_status_offset + 6, 1); 234 #endif 235 236 _FP_PRESEL_QUAL_ADD(unit, stage_fc, bcmFieldQualifyIpTunnelHit, 237 0, _bcmFieldSliceSelDisable, 0, _bcmFieldQualifierTypePresel, 238 lookup_status_offset + 7, 1); 239 240 return (BCM_E_NONE); 241 } 242 243 int 244 _bcm_field_th3_common_actions_init(int unit, _field_stage_t *stage_fc) 245 { 246 _FP_ACTION_DECL 247 uint32 offset = 0; /* General variable to carry offset. */ 248 uint32 profile_one_offset = 0; /* Offset of PROFILE_ONE_SET. */ 249 uint32 profile_two_offset = 0; /* Offset of PROFILE_TWO_SET. */ 250 uint32 redirect_offset = 0; /* Offset of REDIRECT_SET. */ 251 uint32 l3swl2change_offset = 0; /* Offset of L3SW_CHANGE_L2_SET. */ 252 uint32 mirror_offset = 0; /* Offset of MIRROR_SET. */ 253 uint32 lb_offset = 0; /* Offset of LB_CONTROL_SET. */ 254 uint32 copytocpu_offset = 0; /* Offset of COPY_TO_CPU_SET. */ 255 uint32 cutthrough_offset = 0; /* Offset of CUT_THRU_OVERRIDE_SET. */ 256 uint32 ttl_offset = 0; /* Offset of TTL_SET. */ 257 uint32 cpucos_offset = 0; /* Offset of CHANGE_CPU_COS_SET. */ 258 uint32 drop_offset = 0; /* Offset of DROP_SET. */ 259 uint32 mirror_override_offset = 0; /* Offset of MIRROR_OVERRIDE_SET. */ 260 uint32 sflow_offset = 0; /* Offset of SFLOW_SET. */ 261 uint32 debug_offset = 0; /* Offset of INSTRUMENTATION_TRIGGERS_ENABLE. */ 262 uint32 ddrop_offset = 0; /* Offset of DELAYED_DROP_SET. */ 263 uint32 dredirect_offset = 0; /* Offset of DELAYED_REDIRECT_SET. */ 264 uint32 dlb_alt_path_offset = 0; /* Offset of DLB_ALTERNATE_PATH_CONTROL_SET. */ 265 uint32 dlb_ecmp_offset = 0; /* Offset of DLB_ECMP_SET. */ 266 uint32 dlb_ecmp_monitor_offset = 0; /* Offset of DLB_ECMP_MONITOR_SET. */ 267 uint32 timestamp_offset = 0; /* Offset of TIMESTAMP_SET. */ 268 uint32 etrap_offset = 0; /* Offset of ELEPHANT_TRAP_SET. */ 269 uint32 int_offset = 0; /* Offset of INBAND_TELEMETRY_SET. */ 270 271 272 /* Input parameters check. */ 273 if (NULL == stage_fc) { 274 return (BCM_E_PARAM); 275 } 276 if (stage_fc->stage_id == _BCM_FIELD_STAGE_INGRESS) { 277 redirect_offset = 0; /* Start of the IFP_POLICY_TABLE */ 278 cpucos_offset = 38; /* REDIRECT_SET(38b) */ 279 copytocpu_offset = 46; /* REDIRECT_SET(38b) + 280 * CHANGE_CPU_COS_SET(8b) */ 281 cutthrough_offset = 88; /* REDIRECT_SET(38b) + 282 * CHANGE_CPU_COS_SET(8b) + 283 * COPY_TO_CPU_SET(17b) + 284 * COUNTER_SET(25b) */ 285 ddrop_offset = 89; /* REDIRECT_SET(38b) + 286 * CHANGE_CPU_COS_SET(8b) + 287 * COPY_TO_CPU_SET(17b) + 288 * COUNTER_SET(25b) + 289 * CUT_THRU_OVERRIDE_SET(1b) */ 290 dredirect_offset = 97; /* REDIRECT_SET(38b) + 291 * CHANGE_CPU_COS_SET(8b) + 292 * COPY_TO_CPU_SET(17b) + 293 * COUNTER_SET(25b) + 294 * CUT_THRU_OVERRIDE_SET(1b) + 295 * DELAYED_DROP_SET(8b) */ 296 dlb_alt_path_offset = 113; /* REDIRECT_SET(38b) + 297 * CHANGE_CPU_COS_SET(8b) + 298 * COPY_TO_CPU_SET(17b) + 299 * COUNTER_SET(25b) + 300 * CUT_THRU_OVERRIDE_SET(1b) + 301 * DELAYED_DROP_SET(8b) + 302 * DELAYED_REDIRECT_SET(16b) */ 303 dlb_ecmp_monitor_offset = 123; /* REDIRECT_SET(38b) + 304 * CHANGE_CPU_COS_SET(8b) + 305 * COPY_TO_CPU_SET(17b) + 306 * COUNTER_SET(25b) + 307 * CUT_THRU_OVERRIDE_SET(1b) + 308 * DELAYED_DROP_SET(8b) + 309 * DELAYED_REDIRECT_SET(16b) + 310 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) */ 311 dlb_ecmp_offset = 125; /* REDIRECT_SET(38b) + 312 * CHANGE_CPU_COS_SET(8b) + 313 * COPY_TO_CPU_SET(17b) + 314 * COUNTER_SET(25b) + 315 * CUT_THRU_OVERRIDE_SET(1b) + 316 * DELAYED_DROP_SET(8b) + 317 * DELAYED_REDIRECT_SET(16b) + 318 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 319 * DLB_ECMP_MONITOR_SET(2b) */ 320 drop_offset = 127; /* REDIRECT_SET(38b) + 321 * CHANGE_CPU_COS_SET(8b) + 322 * COPY_TO_CPU_SET(17b) + 323 * COUNTER_SET(25b) + 324 * CUT_THRU_OVERRIDE_SET(1b) + 325 * DELAYED_DROP_SET(8b) + 326 * DELAYED_REDIRECT_SET(16b) + 327 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 328 * DLB_ECMP_MONITOR_SET(2b) + 329 * DLB_ECMP_SET(2b) */ 330 etrap_offset = 133; /* REDIRECT_SET(38b) + 331 * CHANGE_CPU_COS_SET(8b) + 332 * COPY_TO_CPU_SET(17b) + 333 * COUNTER_SET(25b) + 334 * CUT_THRU_OVERRIDE_SET(1b) + 335 * DELAYED_DROP_SET(8b) + 336 * DELAYED_REDIRECT_SET(16b) + 337 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 338 * DLB_ECMP_MONITOR_SET(2b) + 339 * DLB_ECMP_SET(2b) + 340 * DROP_SET(6b) */ 341 int_offset = 140; /* REDIRECT_SET(38b) + 342 * CHANGE_CPU_COS_SET(8b) + 343 * COPY_TO_CPU_SET(17b) + 344 * COUNTER_SET(25b) + 345 * CUT_THRU_OVERRIDE_SET(1b) + 346 * DELAYED_DROP_SET(8b) + 347 * DELAYED_REDIRECT_SET(16b) + 348 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 349 * DLB_ECMP_MONITOR_SET(2b) + 350 * DLB_ECMP_SET(2b) + 351 * DROP_SET(6b) + 352 * ELEPHANT_TRAP_SET(6b) + 353 * GREEN_TO_PID_SET(1b) */ 354 debug_offset = 142; /* REDIRECT_SET(38b) + 355 * CHANGE_CPU_COS_SET(8b) + 356 * COPY_TO_CPU_SET(17b) + 357 * COUNTER_SET(25b) + 358 * CUT_THRU_OVERRIDE_SET(1b) + 359 * DELAYED_DROP_SET(8b) + 360 * DELAYED_REDIRECT_SET(16b) + 361 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 362 * DLB_ECMP_MONITOR_SET(2b) + 363 * DLB_ECMP_SET(2b) + 364 * DROP_SET(6b) + 365 * ELEPHANT_TRAP_SET(6b) + 366 * GREEN_TO_PID_SET(1b) + 367 * INBAND_TELEMETRY_SET(2b) */ 368 l3swl2change_offset = 143; /* REDIRECT_SET(38b) + 369 * CHANGE_CPU_COS_SET(8b) + 370 * COPY_TO_CPU_SET(17b) + 371 * COUNTER_SET(25b) + 372 * CUT_THRU_OVERRIDE_SET(1b) + 373 * DELAYED_DROP_SET(8b) + 374 * DELAYED_REDIRECT_SET(16b) + 375 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 376 * DLB_ECMP_MONITOR_SET(2b) + 377 * DLB_ECMP_SET(2b) + 378 * DROP_SET(6b) + 379 * ELEPHANT_TRAP_SET(6b) + 380 * GREEN_TO_PID_SET(1b) + 381 * INBAND_TELEMETRY_SET(2b) + 382 * INSTRUMENTATION_SET(1b) */ 383 lb_offset = 166; /* REDIRECT_SET(38b) + 384 * CHANGE_CPU_COS_SET(8b) + 385 * COPY_TO_CPU_SET(17b) + 386 * COUNTER_SET(25b) + 387 * CUT_THRU_OVERRIDE_SET(1b) + 388 * DELAYED_DROP_SET(8b) + 389 * DELAYED_REDIRECT_SET(16b) + 390 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 391 * DLB_ECMP_MONITOR_SET(2b) + 392 * DLB_ECMP_SET(2b) + 393 * DROP_SET(6b) + 394 * ELEPHANT_TRAP_SET(6b) + 395 * GREEN_TO_PID_SET(1b) + 396 * INBAND_TELEMETRY_SET(2b) + 397 * INSTRUMENTATION_SET(1b) + 398 * L3SW_CHANGE_L2_SET(23b) */ 399 mirror_override_offset = 184; /* REDIRECT_SET(38b) + 400 * CHANGE_CPU_COS_SET(8b) + 401 * COPY_TO_CPU_SET(17b) + 402 * COUNTER_SET(25b) + 403 * CUT_THRU_OVERRIDE_SET(1b) + 404 * DELAYED_DROP_SET(8b) + 405 * DELAYED_REDIRECT_SET(16b) + 406 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 407 * DLB_ECMP_MONITOR_SET(2b) + 408 * DLB_ECMP_SET(2b) + 409 * DROP_SET(6b) + 410 * ELEPHANT_TRAP_SET(6b) + 411 * GREEN_TO_PID_SET(1b) + 412 * INBAND_TELEMETRY_SET(2b) + 413 * INSTRUMENTATION_SET(1b) + 414 * L3SW_CHANGE_L2_SET(23b) + 415 * LB_CONTROLS_SET(2b) + 416 * METER_SET(16b) */ 417 mirror_offset = 185; /* REDIRECT_SET(38b) + 418 * CHANGE_CPU_COS_SET(8b) + 419 * COPY_TO_CPU_SET(17b) + 420 * COUNTER_SET(25b) + 421 * CUT_THRU_OVERRIDE_SET(1b) + 422 * DELAYED_DROP_SET(8b) + 423 * DELAYED_REDIRECT_SET(16b) + 424 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 425 * DLB_ECMP_MONITOR_SET(2b) + 426 * DLB_ECMP_SET(2b) + 427 * DROP_SET(6b) + 428 * ELEPHANT_TRAP_SET(6b) + 429 * GREEN_TO_PID_SET(1b) + 430 * INBAND_TELEMETRY_SET(2b) + 431 * INSTRUMENTATION_SET(1b) + 432 * L3SW_CHANGE_L2_SET(23b) + 433 * LB_CONTROLS_SET(2b) + 434 * METER_SET(16b) + 435 * MIRROR_OVERRIDE_SET(1b) */ 436 profile_one_offset = 200; /* REDIRECT_SET(38b) + 437 * CHANGE_CPU_COS_SET(8b) + 438 * COPY_TO_CPU_SET(17b) + 439 * COUNTER_SET(25b) + 440 * CUT_THRU_OVERRIDE_SET(1b) + 441 * DELAYED_DROP_SET(8b) + 442 * DELAYED_REDIRECT_SET(16b) + 443 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 444 * DLB_ECMP_MONITOR_SET(2b) + 445 * DLB_ECMP_SET(2b) + 446 * DROP_SET(6b) + 447 * ELEPHANT_TRAP_SET(6b) + 448 * GREEN_TO_PID_SET(1b) + 449 * INBAND_TELEMETRY_SET(2b) + 450 * INSTRUMENTATION_SET(1b) + 451 * L3SW_CHANGE_L2_SET(23b) + 452 * LB_CONTROLS_SET(2b) + 453 * METER_SET(16b) + 454 * MIRROR_OVERRIDE_SET(1b) + 455 * MIRROR_SET(15b) */ 456 profile_two_offset = 256; /* REDIRECT_SET(38b) + 457 * CHANGE_CPU_COS_SET(8b) + 458 * COPY_TO_CPU_SET(17b) + 459 * COUNTER_SET(25b) + 460 * CUT_THRU_OVERRIDE_SET(1b) + 461 * DELAYED_DROP_SET(8b) + 462 * DELAYED_REDIRECT_SET(16b) + 463 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 464 * DLB_ECMP_MONITOR_SET(2b) + 465 * DLB_ECMP_SET(2b) + 466 * DROP_SET(6b) + 467 * ELEPHANT_TRAP_SET(6b) + 468 * GREEN_TO_PID_SET(1b) + 469 * INBAND_TELEMETRY_SET(2b) + 470 * INSTRUMENTATION_SET(1b) + 471 * L3SW_CHANGE_L2_SET(23b) + 472 * LB_CONTROLS_SET(2b) + 473 * METER_SET(16b) + 474 * MIRROR_OVERRIDE_SET(1b) + 475 * MIRROR_SET(15b) + 476 * PROFILE_SET_1(56b) */ 477 sflow_offset = 313; /* REDIRECT_SET(38b) + 478 * CHANGE_CPU_COS_SET(8b) + 479 * COPY_TO_CPU_SET(17b) + 480 * COUNTER_SET(25b) + 481 * CUT_THRU_OVERRIDE_SET(1b) + 482 * DELAYED_DROP_SET(8b) + 483 * DELAYED_REDIRECT_SET(16b) + 484 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 485 * DLB_ECMP_MONITOR_SET(2b) + 486 * DLB_ECMP_SET(2b) + 487 * DROP_SET(6b) + 488 * ELEPHANT_TRAP_SET(6b) + 489 * GREEN_TO_PID_SET(1b) + 490 * INBAND_TELEMETRY_SET(2b) + 491 * INSTRUMENTATION_SET(1b) + 492 * L3SW_CHANGE_L2_SET(23b) + 493 * LB_CONTROLS_SET(2b) + 494 * METER_SET(16b) + 495 * MIRROR_OVERRIDE_SET(1b) + 496 * MIRROR_SET(15b) + 497 * PROFILE_SET_1(56b) + 498 * PROFILE_SET_2(52b) + 499 * PROTECTION_SWITCHING_SET(1b) + 500 * RESERVED_SET(4b) */ 501 502 timestamp_offset = 314; /* REDIRECT_SET(38b) + 503 * CHANGE_CPU_COS_SET(8b) + 504 * COPY_TO_CPU_SET(17b) + 505 * COUNTER_SET(25b) + 506 * CUT_THRU_OVERRIDE_SET(1b) + 507 * DELAYED_DROP_SET(8b) + 508 * DELAYED_REDIRECT_SET(16b) + 509 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 510 * DLB_ECMP_MONITOR_SET(2b) + 511 * DLB_ECMP_SET(2b) + 512 * DROP_SET(6b) + 513 * ELEPHANT_TRAP_SET(6b) + 514 * GREEN_TO_PID_SET(1b) + 515 * INBAND_TELEMETRY_SET(2b) + 516 * INSTRUMENTATION_SET(1b) + 517 * L3SW_CHANGE_L2_SET(23b) + 518 * LB_CONTROLS_SET(2b) + 519 * METER_SET(16b) + 520 * MIRROR_OVERRIDE_SET(1b) + 521 * MIRROR_SET(15b) + 522 * PROFILE_SET_1(56b) + 523 * PROFILE_SET_2(52b) + 524 * PROTECTION_SWITCHING_SET(1b) + 525 * RESERVED_SET(4b) + 526 * SFLOW_SET(1b) */ 527 528 ttl_offset = 318; /* REDIRECT_SET(38b) + 529 * CHANGE_CPU_COS_SET(8b) + 530 * COPY_TO_CPU_SET(17b) + 531 * COUNTER_SET(25b) + 532 * CUT_THRU_OVERRIDE_SET(1b) + 533 * DELAYED_DROP_SET(8b) + 534 * DELAYED_REDIRECT_SET(16b) + 535 * DLB_ALTERNATE_PATH_CONTROL_SET(10b) + 536 * DLB_ECMP_MONITOR_SET(2b) + 537 * DLB_ECMP_SET(2b) + 538 * DROP_SET(6b) + 539 * ELEPHANT_TRAP_SET(6b) + 540 * GREEN_TO_PID_SET(1b) + 541 * INBAND_TELEMETRY_SET(2b) + 542 * INSTRUMENTATION_SET(1b) + 543 * L3SW_CHANGE_L2_SET(23b) + 544 * LB_CONTROLS_SET(2b) + 545 * METER_SET(16b) + 546 * MIRROR_OVERRIDE_SET(1b) + 547 * MIRROR_SET(15b) + 548 * PROFILE_SET_1(56b) + 549 * PROFILE_SET_2(52b) + 550 * PROTECTION_SWITCHING_SET(1b) + 551 * RESERVED_SET(4b) + 552 * SFLOW_SET(1b) + 553 * TIMESTAMP_SET(4b) */ 554 } else if (stage_fc->stage_id == _BCM_FIELD_STAGE_EXACTMATCH) { 555 soc_field_info_t * f_info; 556 f_info = soc_mem_fieldinfo_get(unit, EXACT_MATCH_QOS_ACTIONS_PROFILEm, PROFILE_SET_2f); 557 profile_two_offset = f_info->bp; 558 } 559 560 offset = redirect_offset; 561 _FP_ACTION_WITH_ASET_ADD_FOUR(unit, stage_fc, 562 bcmFieldActionRedirect, 563 _BCM_FIELD_ACTION_REDIRECT_DGLP, 564 _FieldActionRedirectSet, 565 offset + 6, 8, -1, 566 offset + 14 , 1, 0, offset + 3, 3, 0, 567 offset + 0, 3, 1); 568 _FP_ACTION_WITH_ASET_ADD_FOUR(unit, stage_fc, 569 bcmFieldActionUnmodifiedPacketRedirectPort, 570 _BCM_FIELD_ACTION_REDIRECT_DGLP, 571 _FieldActionRedirectSet, 572 offset + 6, 8, -1, 573 offset + 14 , 1, 0, offset + 3, 3, 1, 574 offset + 0, 3, 1); 575 _FP_ACTION_WITH_ASET_ADD_FOUR(unit, stage_fc, bcmFieldActionRedirect, 576 _BCM_FIELD_ACTION_REDIRECT_TRUNK, 577 _FieldActionRedirectSet, 578 offset + 6, 8, -1, offset + 14, 1, 1, 579 offset + 3, 3, 0, offset + 0, 3, 1); 580 _FP_ACTION_WITH_ASET_ADD_FOUR(unit, stage_fc, 581 bcmFieldActionRedirectTrunk, 582 _BCM_FIELD_ACTION_REDIRECT_TRUNK, 583 _FieldActionRedirectSet, 584 offset + 6, 8, -1, offset + 14, 1, 1, 585 offset + 3, 3, 0, offset + 0, 3, 1); 586 587 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 588 bcmFieldActionRedirectEgrNextHop, 589 _BCM_FIELD_ACTION_REDIRECT_NEXT_HOP, 590 _FieldActionRedirectSet, 591 offset + 6, 16, -1, 592 offset + 3, 3, 2, offset + 0, 3, 1); 593 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 594 bcmFieldActionRedirectEgrNextHop, 595 _BCM_FIELD_ACTION_REDIRECT_ECMP, 596 _FieldActionRedirectSet, 597 offset + 6, 12, -1, 598 offset + 3, 3, 3, offset + 0, 3, 1); 599 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionRedirectCancel, 600 0, _FieldActionRedirectSet, offset + 0, 3, 2); 601 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 602 bcmFieldActionRedirectPbmp, 0, 603 _FieldActionRedirectSet, 604 offset + 6, 8, -1, offset + 23, 2, 0, 605 offset + 0, 3, 3); 606 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 607 bcmFieldActionRedirectVlan, 0, 608 _FieldActionRedirectSet, 609 offset + 17, 1, 0, offset + 23, 2, 1, 610 offset + 0, 3, 3); 611 _FP_ACTION_WITH_ASET_ADD_FOUR(unit, stage_fc, 612 bcmFieldActionRedirectBcastPbmp, 0, 613 _FieldActionRedirectSet, 614 offset + 6, 8, -1, offset + 17, 1, 1, 615 offset + 23, 2, 1, offset + 0, 3, 3); 616 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 617 bcmFieldActionRedirectMcast, 0, 618 _FieldActionRedirectSet, 619 offset + 6, 10, -1, offset + 23, 2, 2, 620 offset + 0, 3, 3); 621 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 622 bcmFieldActionRedirectIpmc, 0, 623 _FieldActionRedirectSet, 624 offset + 6, 9, -1, offset + 23, 2, 3, 625 offset + 0, 3, 3); 626 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, 627 bcmFieldActionEgressMask, 0, 628 _FieldActionRedirectSet, 629 offset + 6, 8, -1, offset + 0, 3, 4); 630 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, 631 bcmFieldActionEgressPortsAdd, 0, 632 _FieldActionRedirectSet, 633 offset + 6, 8, -1, offset + 0, 3, 5); 634 635 /* IFP_CHANGE_CPU_COS_SET(8b) */ 636 offset = cpucos_offset; 637 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, 638 bcmFieldActionCosQCpuNew, 0, 639 _FieldActionChangeCpuCosSet, 640 offset + 2, 6, -1, offset + 0, 2, 1); 641 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 642 bcmFieldActionServicePoolIdNew, 0, 643 _FieldActionChangeCpuCosSet, 644 offset + 4, 2, -1, offset + 6, 2, 2, 645 offset + 0, 2, 2); 646 _FP_ACTION_WITH_ASET_ADD_FOUR(unit, stage_fc, 647 bcmFieldActionServicePoolIdPrecedenceNew, 0, 648 _FieldActionChangeCpuCosSet, 649 offset + 4, 2, -1, offset + 2, 2, -1, 650 offset + 6, 2, 3, offset + 0, 2, 2); 651 652 /* IFP_COPY_TO_CPU_SET(17b) */ 653 offset = copytocpu_offset; 654 655 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionRpCopyToCpu, 656 0, _FieldActionCopyToCpuSet, 657 offset + 3, 8, -1, offset + 11, 3, 1); 658 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionRpCopyToCpuCancel, 659 0, _FieldActionCopyToCpuSet, 660 offset + 11, 3, 2); 661 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionRpSwitchToCpuCancel, 662 0, _FieldActionCopyToCpuSet, 663 offset + 11, 3, 3); 664 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionRpSwitchToCpuReinstate, 665 0, _FieldActionCopyToCpuSet, 666 offset + 11, 3, 4); 667 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionRpTimeStampToCpu, 668 0, _FieldActionCopyToCpuSet, 669 offset + 3, 8, -1, offset + 11, 3, 5); 670 671 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionYpCopyToCpu, 672 0, _FieldActionCopyToCpuSet, 673 offset + 3, 8, -1, offset + 14, 3, 1); 674 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionYpCopyToCpuCancel, 675 0, _FieldActionCopyToCpuSet, 676 offset + 14, 3, 2); 677 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionYpSwitchToCpuCancel, 678 0, _FieldActionCopyToCpuSet, 679 offset + 14, 3, 3); 680 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionYpSwitchToCpuReinstate, 681 0, _FieldActionCopyToCpuSet, 682 offset + 14, 3, 4); 683 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionYpTimeStampToCpu, 684 0, _FieldActionCopyToCpuSet, 685 offset + 3, 8, -1, offset + 14, 3, 5); 686 687 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionGpCopyToCpu, 688 0, _FieldActionCopyToCpuSet, 689 offset + 3, 8, -1, offset + 0, 3, 1); 690 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionGpCopyToCpuCancel, 691 0, _FieldActionCopyToCpuSet, 692 offset + 0, 3, 2); 693 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionGpSwitchToCpuCancel, 694 0, _FieldActionCopyToCpuSet, 695 offset + 0, 3, 3); 696 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionGpSwitchToCpuReinstate, 697 0, _FieldActionCopyToCpuSet, 698 offset + 0, 3, 4); 699 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionGpTimeStampToCpu, 700 0, _FieldActionCopyToCpuSet, 701 offset + 3, 8, -1, offset + 0, 3, 5); 702 703 /* IFP_CUT_THRU_OVERRIDE_SET(1b) */ 704 offset = cutthrough_offset; 705 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDoNotCutThrough, 706 0, _FieldActionCutThrOverrideSet, offset + 0, 1, 1); 707 708 709 /* DLB_ALTERNATE_PATH_CONTROL_SET(10b) */ 710 offset = dlb_alt_path_offset; 711 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDgm, 712 0, _FieldActionIfpDlbAlternatePathControlSet, 713 offset + 0, 1, 1); 714 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDgmThreshold, 715 0, _FieldActionIfpDlbAlternatePathControlSet, 716 offset + 7, 3, -1); 717 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDgmCost, 718 0, _FieldActionIfpDlbAlternatePathControlSet, 719 offset + 4, 3, -1); 720 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDgmBias, 721 0, _FieldActionIfpDlbAlternatePathControlSet, 722 offset + 1, 3, -1); 723 724 /* DLB_ECMP_MONITOR_SET(2b) */ 725 offset = dlb_ecmp_monitor_offset; 726 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDlbEcmpMonitorEnable, 727 0, _FieldActionEcmpDlbMonitorSet, 728 offset + 0, 2, 0); 729 730 /* DLB_ECMP_SET(2b) */ 731 offset = dlb_ecmp_offset; 732 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDynamicEcmpCancel, 733 0, _FieldActionEcmpDlbActionSet, offset + 0, 1, 1); 734 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDynamicEcmpEnable, 735 0, _FieldActionEcmpDlbActionSet, offset + 1, 1, 1); 736 737 /* IFP_DROP_SET(6b) */ 738 offset = drop_offset; 739 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionRpDrop, 740 0, _FieldActionDropSet, offset + 2, 2, 1); 741 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionRpDropCancel, 742 0, _FieldActionDropSet, offset + 2, 2, 2); 743 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionYpDrop, 744 0, _FieldActionDropSet, offset + 4, 2, 1); 745 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionYpDropCancel, 746 0, _FieldActionDropSet, offset + 4, 2, 2); 747 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionGpDrop, 748 0, _FieldActionDropSet, offset + 0, 2, 1); 749 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionGpDropCancel, 750 0, _FieldActionDropSet, offset + 0, 2, 2); 751 752 /* IFP_INSTRUMENTATION_TRIGGERS_ENABLE_SET(1b)*/ 753 offset = debug_offset; 754 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionPacketTraceEnable, 755 _BCM_FIELD_ACTION_NO_EM_SUPPORT, 756 _FieldActionInstrumentationSet, 757 offset + 0, 1, 1); 758 759 /* IFP_L3SW_CHANGE_L2_SET(23b) */ 760 offset = l3swl2change_offset; 761 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionChangeL2Fields, 762 0, _FieldActionL3SwChangeL2Set, 763 offset + 0, 16, -1, offset + 19, 4, 1); 764 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, 765 bcmFieldActionChangeL2FieldsCancel, 766 0, _FieldActionL3SwChangeL2Set, 767 offset + 19, 4, 2); 768 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, bcmFieldActionL3Switch, 769 _BCM_FIELD_ACTION_L3SWITCH_NEXT_HOP, 770 _FieldActionL3SwChangeL2Set, 771 offset + 0, 16, -1, offset + 17, 1, 0, 772 offset + 19, 4, 6); 773 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, bcmFieldActionL3Switch, 774 _BCM_FIELD_ACTION_L3SWITCH_ECMP, 775 _FieldActionL3SwChangeL2Set, 776 offset + 0, 12, -1, offset + 17, 1, 1, 777 offset + 19, 4, 6); 778 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionMultipathHash, 779 0, _FieldActionL3SwChangeL2Set, 780 offset + 12, 3, -1, offset + 19, 4, 6); 781 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionL3SwitchCancel, 782 0, _FieldActionL3SwChangeL2Set, 783 offset + 19, 4, 7); 784 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, 785 bcmFieldActionEgressClassSelect, 786 0, _FieldActionL3SwChangeL2Set, 787 offset + 0, 4, -1, offset + 19, 4, 8); 788 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, 789 bcmFieldActionNewClassId, 0, 790 _FieldActionL3SwChangeL2Set, 791 offset + 7, 9, -1, offset + 19, 4, 8); 792 793 794 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, 795 bcmFieldActionBFDSessionIdNew, 0, 796 _FieldActionL3SwChangeL2Set, 797 offset + 0, 12, -1, offset + 19, 4, 9); 798 799 /* IFP_LB_CONTROLS_SET(3b) */ 800 offset = lb_offset; 801 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, 802 bcmFieldActionTrunkRandomRoundRobinHashCancel, 803 0, _FieldActionLbControlSet, 804 offset + 0, 1, 1); 805 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, 806 bcmFieldActionEcmpRandomRoundRobinHashCancel, 807 0, _FieldActionLbControlSet, 808 offset + 1, 1, 1); 809 810 /* IFP_MIRROR_OVERRIDE_SET(1b) */ 811 offset = mirror_override_offset; 812 813 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionMirrorOverride, 814 0, _FieldActionMirrorOverrideSet, offset + 0, 1, 1); 815 816 /* IFP_MIRROR_SET(12b) */ 817 offset = mirror_offset; 818 819 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionMirrorIngress, 820 0, _FieldActionMirrorSet, 821 offset, 4, 0, offset + 7 , 8, 0); 822 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionMirrorEgress, 823 0, _FieldActionMirrorSet, 824 offset, 4, 0, offset + 7, 8, 0); 825 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionMirrorZeroingEnable, 826 0, _FieldActionMirrorSet, 827 offset + 4, 3, 0); 828 829 /* ExactMatch Action Class Id (12b) */ 830 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionExactMatchClassId, 831 _BCM_FIELD_ACTION_NO_IFP_SUPPORT, 0, 12, 0); 832 833 /* IFP_PROFILE_SET_1(56b) */ 834 offset = profile_one_offset; 835 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionUntaggedPacketPriorityNew, 836 0, offset + 18, 4, -1, offset + 0, 1, 1); 837 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpDropPrecedence, 838 0, offset + 35, 2, -1); 839 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpDropPrecedence, 840 0, offset + 52, 2, -1); 841 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpDropPrecedence, 842 0, offset + 14, 2, -1); 843 844 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpCosQNew, 845 0, offset + 27, 8, -1, offset + 22, 4, 1); 846 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpCosMapNew, 847 0, offset + 27, 2, -1, offset + 22, 4, 2); 848 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpPrioIntNew, 849 0, offset + 27, 8, -1, offset + 22, 4, 5); 850 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpPrioIntTos, 851 0, offset + 22, 4, 6); 852 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpPrioIntCancel, 853 0, offset + 22, 4, 7); 854 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpUcastCosQNew, 855 0, offset + 27, 4, -1, offset + 22, 4, 8); 856 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpMcastCosQNew, 857 0, offset + 31, 4, -1, offset + 22, 4, 9); 858 859 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpCosQNew, 860 0, offset + 44, 8, -1, offset + 39, 4, 1); 861 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpCosMapNew, 862 0, offset + 44, 2, -1, offset + 39, 4, 2); 863 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpPrioIntNew, 864 0, offset + 44, 8, -1, offset + 39, 4, 5); 865 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpPrioIntTos, 866 0, offset + 39, 4, 6); 867 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpPrioIntCancel, 868 0, offset + 39, 4, 7); 869 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpUcastCosQNew, 870 0, offset + 44, 4, -1, offset + 39, 4, 8); 871 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpMcastCosQNew, 872 0, offset + 48, 4, -1, offset + 39, 4, 9); 873 874 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpCosQNew, 875 0, offset + 6, 8, -1, offset + 1, 4, 1); 876 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpCosMapNew, 877 0, offset + 6, 2, -1, offset + 1, 4, 2); 878 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpPrioIntNew, 879 0, offset + 6, 8, -1, offset + 1, 4, 5); 880 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpPrioIntTos, 881 0, offset + 1, 4, 6); 882 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpPrioIntCancel, 883 0, offset + 1, 4, 7); 884 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpUcastCosQNew, 885 0, offset + 6, 4, -1, offset + 1, 4, 8); 886 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpMcastCosQNew, 887 0, offset + 10, 4, -1, offset + 1, 4, 9); 888 889 if (soc_feature(unit, soc_feature_ecn_wred)) { 890 _FP_ACTION_ADD_TWO(unit, stage_fc, 891 bcmFieldActionGpIntCongestionNotificationNew, 892 _BCM_FIELD_ACTION_NO_EM_SUPPORT, 893 offset + 16, 2, -1, offset + 5, 1, 1); 894 _FP_ACTION_ADD_TWO(unit, stage_fc, 895 bcmFieldActionYpIntCongestionNotificationNew, 896 _BCM_FIELD_ACTION_NO_EM_SUPPORT, 897 offset + 54, 2, -1, offset + 43, 1, 1); 898 _FP_ACTION_ADD_TWO(unit, stage_fc, 899 bcmFieldActionRpIntCongestionNotificationNew, 900 _BCM_FIELD_ACTION_NO_EM_SUPPORT, 901 offset + 37, 2, -1, offset + 26, 1, 1); 902 } 903 904 if (soc_feature(unit, soc_feature_field_action_pfc_class)) { 905 _FP_ACTION_ADD_TWO(unit, stage_fc, 906 bcmFieldActionPfcClassNew, 907 0, offset + 18, 4, -1, offset + 0, 1, 1); 908 } 909 910 /* IFP_PROFILE_SET_2(52b) */ 911 offset = profile_two_offset; 912 913 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpEcnNew, 914 0, offset + 30, 2, -1, offset + 20, 1, 1); 915 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpEcnNew, 916 0, offset + 47, 2, -1, offset + 37, 1, 1); 917 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpEcnNew, 918 0, offset + 13, 2, -1, offset + 3, 1, 1); 919 920 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpDot1pPreserve, 921 0, offset + 21, 3, 3); 922 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpPrioPktNew, 923 0, offset + 32, 3, -1, offset + 21, 3, 5); 924 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpPrioPktTos, 925 0, offset + 21, 3, 6); 926 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpPrioPktCancel, 927 0, offset + 21, 3, 7); 928 929 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpDot1pPreserve, 930 0, offset + 38, 3, 3); 931 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpPrioPktNew, 932 0, offset + 49, 3, -1, offset + 38, 3, 5); 933 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpPrioPktTos, 934 0, offset + 38, 3, 6); 935 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpPrioPktCancel, 936 0, offset + 38, 3, 7); 937 938 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpDot1pPreserve, 939 0, offset + 4, 3, 3); 940 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpPrioPktNew, 941 0, offset + 15, 3, -1, offset + 4, 3, 5); 942 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpPrioPktTos, 943 0, offset + 4, 3, 6); 944 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpPrioPktCancel, 945 0, offset + 4, 3, 7); 946 947 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionRpDscpNew, 948 0, offset + 24, 6, -1, offset + 18, 2, 1); 949 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpDscpCancel, 950 0, offset + 18, 2, 2); 951 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionRpDscpPreserve, 952 0, offset + 18, 2, 3); 953 954 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionYpDscpNew, 955 0, offset + 41, 6, -1, offset + 35, 2, 1); 956 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpDscpCancel, 957 0, offset + 35, 2, 2); 958 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionYpDscpPreserve, 959 0, offset + 35, 2, 3); 960 961 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpDscpNew, 962 0, offset + 7, 6, -1, offset + 0, 3, 3); 963 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpDscpCancel, 964 0, offset + 0, 3, 4); 965 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpDscpPreserve, 966 0, offset + 0, 3, 5); 967 968 _FP_ACTION_ADD_TWO(unit, stage_fc, bcmFieldActionGpTosPrecedenceNew, 969 0, offset + 7, 6, -1, offset + 0, 3, 1); 970 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionGpTosPrecedenceCopy, 971 0, offset + 0, 3, 2); 972 /* IFP_SFLOW_SET(1b) */ 973 offset = sflow_offset; 974 975 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionIngSampleEnable, 976 0, _FieldActionSflowSet, offset + 0, 1, 1); 977 978 /* TIMESTAMP_SET(4b) */ 979 offset = timestamp_offset; 980 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionIngressTimeStampInsert, 981 0, _FieldActionTimestampInsertionSet, 982 offset + 0, 2, 1); 983 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionIngressTimeStampInsertCancel, 984 0, _FieldActionTimestampInsertionSet, 985 offset + 0, 2, 2); 986 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionEgressTimeStampInsert, 987 0, _FieldActionTimestampInsertionSet, 988 offset + 2, 2, 1); 989 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionEgressTimeStampInsertCancel, 990 0, _FieldActionTimestampInsertionSet, 991 offset + 2, 2, 2); 992 993 /* IFP_TTL_SET(1b) */ 994 offset = ttl_offset; 995 996 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDoNotChangeTtl, 997 0, _FieldActionTtlOverrideSet, offset + 0, 1, 1); 998 999 1000 /* All actions which have corresponding Colored(Gp/Yp/Rp) Actions needs to be 1001 * initialized with some default configuration(offset = 0, width = 0, value = 0). 1002 */ 1003 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionCosQNew, 0, 0, 0, 0); 1004 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionPrioIntNew, 0, 0, 0, 0); 1005 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionPrioIntTos, 0, 0, 0, 0); 1006 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionPrioIntCancel, 0, 0, 0, 0); 1007 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionUcastCosQNew, 0, 0, 0, 0); 1008 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionMcastCosQNew, 0, 0, 0, 0); 1009 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionDropPrecedence, 0, 0, 0, 0); 1010 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionColorIndependent, 1011 0, _FieldActionGreenToPidSet, 0, 0, 0); 1012 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionEcnNew, 0, 0, 0, 0); 1013 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionPrioPktNew, 0, 0, 0, 0); 1014 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionPrioPktTos, 0, 0, 0, 0); 1015 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionPrioPktCancel, 0, 0, 0, 0); 1016 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionDscpNew, 0, 0, 0, 0); 1017 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionDscpCancel, 0, 0, 0, 0); 1018 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionCopyToCpu, 1019 0, _FieldActionCopyToCpuSet, 0, 0, 0); 1020 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionCopyToCpuCancel, 1021 0, _FieldActionCopyToCpuSet, 0, 0, 0); 1022 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionSwitchToCpuCancel, 1023 0, _FieldActionCopyToCpuSet, 0, 0, 0); 1024 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionSwitchToCpuReinstate, 1025 0, _FieldActionCopyToCpuSet, 0, 0, 0); 1026 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionTimeStampToCpu, 1027 0, _FieldActionCopyToCpuSet, 0, 0, 0); 1028 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDrop, 1029 0, _FieldActionDropSet, 0, 0, 0); 1030 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionDropCancel, 1031 0, _FieldActionDropSet, 0, 0, 0); 1032 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionCosMapNew, 0, 0, 0, 0); 1033 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionDscpPreserve, 0, 0, 0, 0); 1034 _FP_ACTION_ADD_ONE(unit, stage_fc, bcmFieldActionDot1pPreserve, 0, 0, 0, 0); 1035 1036 /* ELEPHANT_TRAP_SET */ 1037 offset = etrap_offset; 1038 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionElephantColorDisable, 1039 0, _FieldActionElephantTrapSet, 1040 offset + 0, 1, 1); 1041 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionElephantColorEnable, 1042 0, _FieldActionElephantTrapSet, 1043 offset + 1, 1, 1); 1044 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionElephantLookupDisable, 1045 0, _FieldActionElephantTrapSet, 1046 offset + 2, 1, 1); 1047 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionElephantLookupEnable, 1048 0, _FieldActionElephantTrapSet, 1049 offset + 3, 1, 1); 1050 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionElephantQueueDisable, 1051 0, _FieldActionElephantTrapSet, 1052 offset + 4, 1, 1); 1053 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionElephantQueueEnable, 1054 0, _FieldActionElephantTrapSet, 1055 offset + 5, 1, 1); 1056 /* INBAND_TELEMETRY_SET */ 1057 offset = int_offset; 1058 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionIntEncapDisable, 1059 0, _FieldActionInbandTelemetrySet, 1060 offset + 0, 1, 1); 1061 _FP_ACTION_WITH_ASET_ADD_ONE(unit, stage_fc, bcmFieldActionIntEncapEnable, 1062 0, _FieldActionInbandTelemetrySet, 1063 offset + 1, 1, 1); 1064 1065 /* DELAYED ACTIONS */ 1066 offset = ddrop_offset; 1067 _FP_ACTION_WITH_ASET_ADD_TWO(unit, stage_fc, bcmFieldActionMatchPbmpDrop, 1068 0, _FieldActionDelayedDropSet, 1069 offset + 0, 7, -1, offset + 7, 1, 1); 1070 offset = dredirect_offset; 1071 _FP_ACTION_WITH_ASET_ADD_THREE(unit, stage_fc, 1072 bcmFieldActionMatchPbmpRedirect, 1073 0, _FieldActionDelayedRedirectSet, 1074 offset + 0, 7, -1, offset + 8, 8, -1, 1075 offset + 7, 1, 1); 1076 1077 return BCM_E_NONE; 1078 } 1079 1080 int 1081 _bcm_field_th3_extractors_init(int unit, _field_stage_t *stage_fc) 1082 { 1083 int level = 0; /* Extractor hierarchy level. */ 1084 int gran = 0; /* Extractor granularity. */ 1085 int ext_num = 0; /* Extractor number. */ 1086 int part; /* Entry part number. */ 1087 bcmi_keygen_ext_attrs_t ext_attrs; 1088 bcmi_keygen_ext_attrs_t temp_attrs; 1089 bcmi_keygen_ext_attrs_t *attrs = &temp_attrs; 1090 uint32 ext_attrs_size = 0; 1091 BCMI_KEYGEN_EXT_CFG_DECL; /* Extractors config declaration. */ 1092 bcmi_keygen_ext_cfg_db_t *ext_cfg_db = NULL; 1093 BCMI_KEYGEN_FUNC_ENTER(unit); 1094 1095 BCMI_KEYGEN_NULL_CHECK(stage_fc, BCM_E_PARAM); 1096 1097 ext_attrs_size = sizeof(bcmi_keygen_ext_attrs_t); 1098 sal_memset(attrs, 0, ext_attrs_size); 1099 1100 _FP_XGS3_ALLOC(stage_fc->ext_cfg_db_arr, 1101 (BCMI_KEYGEN_MODE_COUNT * sizeof(bcmi_keygen_ext_cfg_db_t *)), 1102 "Field Extractors Data base Array"); 1103 if (NULL == stage_fc->ext_cfg_db_arr) { 1104 return (BCM_E_MEMORY); 1105 } 1106 1107 _FP_XGS3_ALLOC(ext_cfg_db, 1108 sizeof(bcmi_keygen_ext_cfg_db_t), "Field Extractors DB"); 1109 if (NULL == ext_cfg_db) { 1110 return (BCM_E_MEMORY); 1111 } 1112 stage_fc->ext_cfg_db_arr[BCMI_KEYGEN_MODE_DBLINTRA] = ext_cfg_db; 1113 /* Initialize Level_1 32-bit extractor section. */ 1114 level = 1; 1115 gran = 32; 1116 ext_num = 0; 1117 part = 0; 1118 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1119 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2S1, 0, attrs); 1120 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1121 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2S1, 32, attrs); 1122 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1123 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2S2, 0, attrs); 1124 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1125 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2S2, 32, attrs); 1126 1127 /* Initialize Level_1 16-bit extractors section. */ 1128 level = 1; 1129 gran = 16; 1130 ext_num = 0; 1131 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1132 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S1, 64, attrs); 1133 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1134 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S1, 80, attrs); 1135 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1136 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S1, 96, attrs); 1137 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1138 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S1, 112, attrs); 1139 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1140 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S1, 128, attrs); 1141 1142 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1143 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S2, 64, attrs); 1144 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1145 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S2, 80, attrs); 1146 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1147 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S2, 96, attrs); 1148 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1149 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S2, 112, attrs); 1150 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1151 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2S2, 128, attrs); 1152 1153 /* Initialize Level_1 8-bit extractors section. */ 1154 level = 1; 1155 gran = 8; 1156 ext_num = 0; 1157 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1158 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2S2, 144, attrs); 1159 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1160 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2S2, 152, attrs); 1161 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1162 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2S2, 160, attrs); 1163 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1164 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2S2, 168, attrs); 1165 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1166 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2S2, 176, attrs); 1167 sal_memset(&ext_attrs, 0, ext_attrs_size); 1168 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LTID); 1169 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1170 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2S2, 1171 184, &ext_attrs); 1172 1173 /* Initialize Level_1 4-bit extractors section. */ 1174 level = 1; 1175 gran = 4; 1176 ext_num = 0; 1177 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1178 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 192, attrs); 1179 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1180 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 196, attrs); 1181 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1182 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 200, attrs); 1183 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1184 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 204, attrs); 1185 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1186 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 208, attrs); 1187 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1188 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 212, attrs); 1189 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1190 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 216, attrs); 1191 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1192 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 220, attrs); 1193 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1194 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 224, attrs); 1195 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1196 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2S2, 228, attrs); 1197 1198 /* Initialize Level_2 16-bit extractors section. */ 1199 level = 2; 1200 gran = 16; 1201 ext_num = 0; 1202 sal_memset(&ext_attrs, 0, ext_attrs_size); 1203 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IPBM); 1204 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1205 BCMI_KEYGEN_EXT_SECTION_L2S1, BCMI_KEYGEN_EXT_SECTION_L3S1, 0, &ext_attrs); 1206 sal_memset(&ext_attrs, 0, ext_attrs_size); 1207 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1208 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_MODE_SINGLE_ASET_WIDE); 1209 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1210 BCMI_KEYGEN_EXT_SECTION_L2S1, BCMI_KEYGEN_EXT_SECTION_L3S1, 20, &ext_attrs); 1211 sal_memset(&ext_attrs, 0, ext_attrs_size); 1212 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1213 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_MODE_SINGLE_ASET_WIDE); 1214 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1215 BCMI_KEYGEN_EXT_SECTION_L2S1, BCMI_KEYGEN_EXT_SECTION_L3S1, 36, &ext_attrs); 1216 sal_memset(&ext_attrs, 0, ext_attrs_size); 1217 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_C); 1218 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1219 BCMI_KEYGEN_EXT_SECTION_L2S1, BCMI_KEYGEN_EXT_SECTION_L3S1, 52, &ext_attrs); 1220 sal_memset(&ext_attrs, 0, ext_attrs_size); 1221 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_D); 1222 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1223 BCMI_KEYGEN_EXT_SECTION_L2S1, BCMI_KEYGEN_EXT_SECTION_L3S1, 68, attrs); 1224 1225 /* Initialize Level_2 4-bit extractors section. */ 1226 level = 2; 1227 gran = 4; 1228 ext_num = 0; 1229 sal_memset(&ext_attrs, 0, ext_attrs_size); 1230 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IPBM); 1231 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1232 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 16, &ext_attrs); 1233 sal_memset(&ext_attrs, 0, ext_attrs_size); 1234 SHR_BITSET(ext_attrs.w, 1235 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_0_3); 1236 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1237 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 84, &ext_attrs); 1238 sal_memset(&ext_attrs, 0, ext_attrs_size); 1239 SHR_BITSET(ext_attrs.w, 1240 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_4_7); 1241 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1242 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 88, &ext_attrs); 1243 sal_memset(&ext_attrs, 0, ext_attrs_size); 1244 SHR_BITSET(ext_attrs.w, 1245 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_8_11); 1246 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1247 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 92, &ext_attrs); 1248 sal_memset(&ext_attrs, 0, ext_attrs_size); 1249 SHR_BITSET(ext_attrs.w, 1250 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LOOKUP_STATUS_VECTOR_BITS_0_3); 1251 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1252 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 96, &ext_attrs); 1253 sal_memset(&ext_attrs, 0, ext_attrs_size); 1254 SHR_BITSET(ext_attrs.w, 1255 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LOOKUP_STATUS_VECTOR_BITS_4_7); 1256 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1257 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 100, &ext_attrs); 1258 sal_memset(&ext_attrs, 0, ext_attrs_size); 1259 SHR_BITSET(ext_attrs.w, 1260 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_PKT_RESOLUTION); 1261 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1262 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 104, &ext_attrs); 1263 sal_memset(&ext_attrs, 0, ext_attrs_size); 1264 SHR_BITSET(ext_attrs.w, 1265 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_PKT_RESOLUTION); 1266 SHR_BITSET(ext_attrs.w, 1267 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1268 SHR_BITSET(ext_attrs.w, 1269 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1270 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1271 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 108, &ext_attrs); 1272 sal_memset(&ext_attrs, 0, ext_attrs_size); 1273 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IFP_DROP_VECTOR); 1274 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1275 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 112, &ext_attrs); 1276 sal_memset(&ext_attrs, 0, ext_attrs_size); 1277 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_INT_PRI); 1278 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1279 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 116, &ext_attrs); 1280 sal_memset(&ext_attrs, 0, ext_attrs_size); 1281 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_MH_OPCODE); 1282 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 10), 1283 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 120, &ext_attrs); 1284 sal_memset(&ext_attrs, 0, ext_attrs_size); 1285 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LTID); 1286 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num +11), 1287 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 124, &ext_attrs); 1288 sal_memset(&ext_attrs, 0, ext_attrs_size); 1289 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 12), 1290 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 128, &ext_attrs); 1291 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 13), 1292 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 132, &ext_attrs); 1293 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 14), 1294 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 136, &ext_attrs); 1295 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 15), 1296 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 140, &ext_attrs); 1297 1298 /* Initialize Level2 2-bit extractors section. */ 1299 level = 2; 1300 gran = 2; 1301 ext_num = 0; 1302 sal_memset(&ext_attrs, 0, ext_attrs_size); 1303 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1304 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 144, &ext_attrs); 1305 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1306 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 146, &ext_attrs); 1307 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1308 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 148, &ext_attrs); 1309 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1310 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 150, &ext_attrs); 1311 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1312 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 152, &ext_attrs); 1313 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1314 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 154, &ext_attrs); 1315 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1316 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 156, &ext_attrs); 1317 1318 /* Initialize Level2 1-bit extractors section. */ 1319 gran = 1; 1320 ext_num = 0; 1321 sal_memset(&ext_attrs, 0, ext_attrs_size); 1322 SHR_BITSET(ext_attrs.w, 1323 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_HIT); 1324 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1325 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 158, &ext_attrs); 1326 1327 sal_memset(&ext_attrs, 0, ext_attrs_size); 1328 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DROP); 1329 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1330 BCMI_KEYGEN_EXT_SECTION_L2S2, BCMI_KEYGEN_EXT_SECTION_L3S1, 159, &ext_attrs); 1331 1332 level = 3; 1333 gran = 160; 1334 sal_memset(&ext_attrs, 0, ext_attrs_size); 1335 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, 0, 1336 BCMI_KEYGEN_EXT_SECTION_L3S1, BCMI_KEYGEN_EXT_SECTION_DISABLE, 0, attrs); 1337 1338 /* 320 bits mode - Initialize Level_1 32-bit extractor section. */ 1339 ext_cfg_db = NULL; 1340 _FP_XGS3_ALLOC(ext_cfg_db, 1341 sizeof(bcmi_keygen_ext_cfg_db_t), "Field Extractors DB"); 1342 if (NULL == ext_cfg_db) { 1343 return (BCM_E_MEMORY); 1344 } 1345 stage_fc->ext_cfg_db_arr[BCMI_KEYGEN_MODE_DBLINTER] = ext_cfg_db; 1346 1347 /* Initialize Level_1 32-bit extractor section. */ 1348 level = 1; 1349 gran = 32; 1350 ext_num = 0; 1351 part = 0; 1352 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1353 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS1, 0, attrs); 1354 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1355 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS1, 32, attrs); 1356 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1357 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS2, 0, attrs); 1358 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1359 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS2, 32, attrs); 1360 1361 /* Initialize Level_1 16-bit extractors section. */ 1362 level = 1; 1363 gran = 16; 1364 ext_num = 0; 1365 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1366 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 64, attrs); 1367 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1368 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 80, attrs); 1369 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1370 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 96, attrs); 1371 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1372 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 112, attrs); 1373 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1374 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 128, attrs); 1375 1376 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1377 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 64, attrs); 1378 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1379 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 80, attrs); 1380 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1381 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 96, attrs); 1382 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1383 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 112, attrs); 1384 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1385 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 128, attrs); 1386 1387 /* Initialize Level_1 8-bit extractors section. */ 1388 level = 1; 1389 gran = 8; 1390 ext_num = 0; 1391 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1392 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 144, attrs); 1393 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1394 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 152, attrs); 1395 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1396 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 160, attrs); 1397 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1398 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 168, attrs); 1399 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1400 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 176, attrs); 1401 sal_memset(&ext_attrs, 0, ext_attrs_size); 1402 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LTID); 1403 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1404 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 1405 184, &ext_attrs); 1406 1407 /* Initialize Level_1 4-bit extractors section. */ 1408 level = 1; 1409 gran = 4; 1410 ext_num = 0; 1411 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1412 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 192, attrs); 1413 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1414 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 196, attrs); 1415 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1416 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 200, attrs); 1417 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1418 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 204, attrs); 1419 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1420 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 208, attrs); 1421 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1422 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 212, attrs); 1423 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1424 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 216, attrs); 1425 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1426 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 220, attrs); 1427 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1428 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 224, attrs); 1429 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1430 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 228, attrs); 1431 1432 /* Initialize Level_2 16-bit extractors section. */ 1433 level = 2; 1434 gran = 16; 1435 ext_num = 0; 1436 sal_memset(&ext_attrs, 0, ext_attrs_size); 1437 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IPBM); 1438 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1439 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 0, &ext_attrs); 1440 sal_memset(&ext_attrs, 0, ext_attrs_size); 1441 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1442 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1443 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 20, &ext_attrs); 1444 sal_memset(&ext_attrs, 0, ext_attrs_size); 1445 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1446 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1447 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 36, &ext_attrs); 1448 sal_memset(&ext_attrs, 0, ext_attrs_size); 1449 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_C); 1450 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1451 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 52, &ext_attrs); 1452 sal_memset(&ext_attrs, 0, ext_attrs_size); 1453 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_D); 1454 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1455 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 68, attrs); 1456 1457 /* Initialize Level_2 4-bit extractors section. */ 1458 level = 2; 1459 gran = 4; 1460 ext_num = 0; 1461 sal_memset(&ext_attrs, 0, ext_attrs_size); 1462 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IPBM); 1463 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1464 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 16, &ext_attrs); 1465 sal_memset(&ext_attrs, 0, ext_attrs_size); 1466 SHR_BITSET(ext_attrs.w, 1467 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_0_3); 1468 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1469 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 84, &ext_attrs); 1470 sal_memset(&ext_attrs, 0, ext_attrs_size); 1471 SHR_BITSET(ext_attrs.w, 1472 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_4_7); 1473 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1474 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 88, &ext_attrs); 1475 sal_memset(&ext_attrs, 0, ext_attrs_size); 1476 SHR_BITSET(ext_attrs.w, 1477 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_8_11); 1478 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1479 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 92, &ext_attrs); 1480 sal_memset(&ext_attrs, 0, ext_attrs_size); 1481 SHR_BITSET(ext_attrs.w, 1482 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LOOKUP_STATUS_VECTOR_BITS_0_3); 1483 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1484 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 96, &ext_attrs); 1485 sal_memset(&ext_attrs, 0, ext_attrs_size); 1486 SHR_BITSET(ext_attrs.w, 1487 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LOOKUP_STATUS_VECTOR_BITS_4_7); 1488 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1489 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 100, &ext_attrs); 1490 sal_memset(&ext_attrs, 0, ext_attrs_size); 1491 SHR_BITSET(ext_attrs.w, 1492 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_PKT_RESOLUTION); 1493 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1494 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 104, &ext_attrs); 1495 sal_memset(&ext_attrs, 0, ext_attrs_size); 1496 SHR_BITSET(ext_attrs.w, 1497 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_PKT_RESOLUTION); 1498 SHR_BITSET(ext_attrs.w, 1499 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1500 SHR_BITSET(ext_attrs.w, 1501 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1502 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1503 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 108, &ext_attrs); 1504 sal_memset(&ext_attrs, 0, ext_attrs_size); 1505 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IFP_DROP_VECTOR); 1506 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1507 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 112, &ext_attrs); 1508 sal_memset(&ext_attrs, 0, ext_attrs_size); 1509 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_INT_PRI); 1510 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1511 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 116, &ext_attrs); 1512 sal_memset(&ext_attrs, 0, ext_attrs_size); 1513 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_MH_OPCODE); 1514 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 10), 1515 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 120, &ext_attrs); 1516 sal_memset(&ext_attrs, 0, ext_attrs_size); 1517 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LTID); 1518 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 11) , 1519 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 124, &ext_attrs); 1520 sal_memset(&ext_attrs, 0, ext_attrs_size); 1521 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 12), 1522 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 128, &ext_attrs); 1523 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 13), 1524 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 132, &ext_attrs); 1525 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 14), 1526 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 136, &ext_attrs); 1527 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 15), 1528 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 140, &ext_attrs); 1529 1530 /* Initialize Level2 2-bit extractors section. */ 1531 level = 2; 1532 gran = 2; 1533 ext_num = 0; 1534 sal_memset(&ext_attrs, 0, ext_attrs_size); 1535 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1536 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 144, &ext_attrs); 1537 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1538 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 146, &ext_attrs); 1539 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1540 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 148, &ext_attrs); 1541 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1542 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 150, &ext_attrs); 1543 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1544 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 152, &ext_attrs); 1545 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1546 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 154, &ext_attrs); 1547 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1548 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 156, &ext_attrs); 1549 1550 /* Initialize Level2 1-bit extractors section. */ 1551 gran = 1; 1552 ext_num = 0; 1553 sal_memset(&ext_attrs, 0, ext_attrs_size); 1554 SHR_BITSET(ext_attrs.w, 1555 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_HIT); 1556 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1557 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 158, &ext_attrs); 1558 1559 sal_memset(&ext_attrs, 0, ext_attrs_size); 1560 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DROP); 1561 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1562 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 159, &ext_attrs); 1563 1564 1565 /* Initialize Level_1 32-bit extractor section. */ 1566 level = 1; 1567 gran = 32; 1568 ext_num = 0; 1569 part = 1; 1570 sal_memset(&ext_attrs, 0, ext_attrs_size); 1571 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1572 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS1, 0, attrs); 1573 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1574 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS1, 32, attrs); 1575 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1576 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS2, 0, attrs); 1577 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1578 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS2, 32, attrs); 1579 1580 /* Initialize Level_1 16-bit extractors section. */ 1581 level = 1; 1582 gran = 16; 1583 ext_num = 0; 1584 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1585 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 64, attrs); 1586 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1587 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 80, attrs); 1588 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1589 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 96, attrs); 1590 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1591 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 112, attrs); 1592 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1593 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 128, attrs); 1594 1595 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1596 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 64, attrs); 1597 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1598 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 80, attrs); 1599 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1600 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 96, attrs); 1601 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1602 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 112, attrs); 1603 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1604 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 128, attrs); 1605 1606 /* Initialize Level_1 8-bit extractors section. */ 1607 level = 1; 1608 gran = 8; 1609 ext_num = 0; 1610 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1611 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 144, attrs); 1612 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1613 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 152, attrs); 1614 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1615 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 160, attrs); 1616 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1617 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 168, attrs); 1618 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1619 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 176, attrs); 1620 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1621 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 184, attrs); 1622 1623 /* Initialize Level_1 4-bit extractors section. */ 1624 level = 1; 1625 gran = 4; 1626 ext_num = 0; 1627 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1628 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 192, attrs); 1629 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1630 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 196, attrs); 1631 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1632 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 200, attrs); 1633 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1634 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 204, attrs); 1635 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1636 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 208, attrs); 1637 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1638 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 212, attrs); 1639 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1640 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 216, attrs); 1641 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1642 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 220, attrs); 1643 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1644 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 224, attrs); 1645 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1646 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 228, attrs); 1647 1648 /* Initialize Level_2 16-bit extractors section. */ 1649 level = 2; 1650 gran = 16; 1651 ext_num = 0; 1652 sal_memset(&ext_attrs, 0, ext_attrs_size); 1653 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1654 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 0, &ext_attrs); 1655 sal_memset(&ext_attrs, 0, ext_attrs_size); 1656 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1657 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1658 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 20, &ext_attrs); 1659 sal_memset(&ext_attrs, 0, ext_attrs_size); 1660 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1661 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1662 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 36, &ext_attrs); 1663 sal_memset(&ext_attrs, 0, ext_attrs_size); 1664 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_C); 1665 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1666 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 52, &ext_attrs); 1667 sal_memset(&ext_attrs, 0, ext_attrs_size); 1668 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_D); 1669 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1670 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 68, attrs); 1671 1672 /* Initialize Level_2 4-bit extractors section. */ 1673 level = 2; 1674 gran = 4; 1675 ext_num = 0; 1676 sal_memset(&ext_attrs, 0, ext_attrs_size); 1677 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1678 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 16, &ext_attrs); 1679 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1680 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 84, &ext_attrs); 1681 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1682 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 88, &ext_attrs); 1683 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1684 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 92, &ext_attrs); 1685 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1686 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 96, &ext_attrs); 1687 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1688 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 100, &ext_attrs); 1689 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1690 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 104, &ext_attrs); 1691 sal_memset(&ext_attrs, 0, ext_attrs_size); 1692 SHR_BITSET(ext_attrs.w, 1693 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1694 SHR_BITSET(ext_attrs.w, 1695 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1696 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1697 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 108, &ext_attrs); 1698 sal_memset(&ext_attrs, 0, ext_attrs_size); 1699 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1700 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 112, &ext_attrs); 1701 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1702 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 116, &ext_attrs); 1703 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 10), 1704 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 120, &ext_attrs); 1705 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 11), 1706 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 124, &ext_attrs); 1707 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 12), 1708 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 128, &ext_attrs); 1709 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 13), 1710 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 132, &ext_attrs); 1711 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 14), 1712 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 136, &ext_attrs); 1713 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 15), 1714 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 140, &ext_attrs); 1715 1716 /* Initialize Level2 2-bit extractors section. */ 1717 level = 2; 1718 gran = 2; 1719 ext_num = 0; 1720 sal_memset(&ext_attrs, 0, ext_attrs_size); 1721 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1722 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 144, &ext_attrs); 1723 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1724 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 146, &ext_attrs); 1725 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1726 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 148, &ext_attrs); 1727 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1728 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 150, &ext_attrs); 1729 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1730 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 152, &ext_attrs); 1731 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1732 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 154, &ext_attrs); 1733 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1734 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 156, &ext_attrs); 1735 1736 /* Initialize Level2 1-bit extractors section. */ 1737 gran = 1; 1738 ext_num = 0; 1739 sal_memset(&ext_attrs, 0, ext_attrs_size); 1740 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1741 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 158, &ext_attrs); 1742 1743 sal_memset(&ext_attrs, 0, ext_attrs_size); 1744 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1745 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 159, &ext_attrs); 1746 1747 1748 level = 3; 1749 gran = 160; 1750 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, 0, level, gran, 0, 1751 BCMI_KEYGEN_EXT_SECTION_L3AS1, BCMI_KEYGEN_EXT_SECTION_DISABLE, 0, attrs); 1752 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, 1, level, gran, 0, 1753 BCMI_KEYGEN_EXT_SECTION_L3BS1, BCMI_KEYGEN_EXT_SECTION_DISABLE, 0, attrs); 1754 1755 1756 /* 480 bit mode - Initialize Level_1 32-bit extractor section. */ 1757 ext_cfg_db = NULL; 1758 _FP_XGS3_ALLOC(ext_cfg_db, 1759 sizeof(bcmi_keygen_ext_cfg_db_t), "Field Extractors DB"); 1760 if (NULL == ext_cfg_db) { 1761 return (BCM_E_MEMORY); 1762 } 1763 stage_fc->ext_cfg_db_arr[BCMI_KEYGEN_MODE_TRIPLE] = ext_cfg_db; 1764 1765 /* Initialize Level_1 32-bit extractor section. */ 1766 level = 1; 1767 gran = 32; 1768 ext_num = 0; 1769 part = 0; 1770 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1771 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS1, 0, attrs); 1772 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1773 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS1, 32, attrs); 1774 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1775 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS2, 0, attrs); 1776 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1777 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2AS2, 32, attrs); 1778 1779 /* Initialize Level_1 16-bit extractors section. */ 1780 level = 1; 1781 gran = 16; 1782 ext_num = 0; 1783 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1784 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 64, attrs); 1785 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1786 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 80, attrs); 1787 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1788 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 96, attrs); 1789 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1790 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 112, attrs); 1791 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1792 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS1, 128, attrs); 1793 1794 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1795 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 64, attrs); 1796 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1797 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 80, attrs); 1798 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1799 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 96, attrs); 1800 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1801 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 112, attrs); 1802 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1803 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2AS2, 128, attrs); 1804 1805 /* Initialize Level_1 8-bit extractors section. */ 1806 level = 1; 1807 gran = 8; 1808 ext_num = 0; 1809 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1810 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 144, attrs); 1811 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1812 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 152, attrs); 1813 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1814 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 160, attrs); 1815 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1816 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 168, attrs); 1817 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1818 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 176, attrs); 1819 sal_memset(&ext_attrs, 0, ext_attrs_size); 1820 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LTID); 1821 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1822 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2AS2, 1823 184, &ext_attrs); 1824 1825 /* Initialize Level_1 4-bit extractors section. */ 1826 level = 1; 1827 gran = 4; 1828 ext_num = 0; 1829 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1830 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 192, attrs); 1831 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1832 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 196, attrs); 1833 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1834 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 200, attrs); 1835 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1836 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 204, attrs); 1837 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1838 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 208, attrs); 1839 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1840 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 212, attrs); 1841 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1842 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 216, attrs); 1843 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1844 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 220, attrs); 1845 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1846 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 224, attrs); 1847 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1848 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2AS2, 228, attrs); 1849 1850 /* Initialize Level_2 16-bit extractors section. */ 1851 level = 2; 1852 gran = 16; 1853 ext_num = 0; 1854 sal_memset(&ext_attrs, 0, ext_attrs_size); 1855 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IPBM); 1856 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1857 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 0, &ext_attrs); 1858 sal_memset(&ext_attrs, 0, ext_attrs_size); 1859 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1860 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1861 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 20, &ext_attrs); 1862 sal_memset(&ext_attrs, 0, ext_attrs_size); 1863 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1864 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1865 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 36, &ext_attrs); 1866 sal_memset(&ext_attrs, 0, ext_attrs_size); 1867 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_C); 1868 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1869 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 52, &ext_attrs); 1870 sal_memset(&ext_attrs, 0, ext_attrs_size); 1871 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_D); 1872 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1873 BCMI_KEYGEN_EXT_SECTION_L2AS1, BCMI_KEYGEN_EXT_SECTION_L3AS1, 68, attrs); 1874 1875 /* Initialize Level_2 4-bit extractors section. */ 1876 level = 2; 1877 gran = 4; 1878 ext_num = 0; 1879 sal_memset(&ext_attrs, 0, ext_attrs_size); 1880 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IPBM); 1881 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1882 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 16, &ext_attrs); 1883 sal_memset(&ext_attrs, 0, ext_attrs_size); 1884 SHR_BITSET(ext_attrs.w, 1885 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_0_3); 1886 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1887 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 84, &ext_attrs); 1888 sal_memset(&ext_attrs, 0, ext_attrs_size); 1889 SHR_BITSET(ext_attrs.w, 1890 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_4_7); 1891 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1892 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 88, &ext_attrs); 1893 sal_memset(&ext_attrs, 0, ext_attrs_size); 1894 SHR_BITSET(ext_attrs.w, 1895 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_CLASSID_BITS_8_11); 1896 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1897 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 92, &ext_attrs); 1898 sal_memset(&ext_attrs, 0, ext_attrs_size); 1899 SHR_BITSET(ext_attrs.w, 1900 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LOOKUP_STATUS_VECTOR_BITS_0_3); 1901 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1902 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 96, &ext_attrs); 1903 sal_memset(&ext_attrs, 0, ext_attrs_size); 1904 SHR_BITSET(ext_attrs.w, 1905 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LOOKUP_STATUS_VECTOR_BITS_4_7); 1906 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1907 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 100, &ext_attrs); 1908 sal_memset(&ext_attrs, 0, ext_attrs_size); 1909 SHR_BITSET(ext_attrs.w, 1910 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_PKT_RESOLUTION); 1911 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1912 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 104, &ext_attrs); 1913 sal_memset(&ext_attrs, 0, ext_attrs_size); 1914 SHR_BITSET(ext_attrs.w, 1915 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_PKT_RESOLUTION); 1916 SHR_BITSET(ext_attrs.w, 1917 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 1918 SHR_BITSET(ext_attrs.w, 1919 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 1920 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 1921 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 108, &ext_attrs); 1922 sal_memset(&ext_attrs, 0, ext_attrs_size); 1923 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_IFP_DROP_VECTOR); 1924 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 1925 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 112, &ext_attrs); 1926 sal_memset(&ext_attrs, 0, ext_attrs_size); 1927 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_INT_PRI); 1928 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 1929 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 116, &ext_attrs); 1930 sal_memset(&ext_attrs, 0, ext_attrs_size); 1931 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_MH_OPCODE); 1932 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 10), 1933 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 120, &ext_attrs); 1934 sal_memset(&ext_attrs, 0, ext_attrs_size); 1935 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_LTID); 1936 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 11), 1937 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 1938 124, &ext_attrs); 1939 sal_memset(&ext_attrs, 0, ext_attrs_size); 1940 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 12), 1941 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 128, &ext_attrs); 1942 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 13), 1943 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 132, &ext_attrs); 1944 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 14), 1945 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 136, &ext_attrs); 1946 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 15), 1947 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 140, &ext_attrs); 1948 1949 /* Initialize Level2 2-bit extractors section. */ 1950 level = 2; 1951 gran = 2; 1952 ext_num = 0; 1953 sal_memset(&ext_attrs, 0, ext_attrs_size); 1954 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1955 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 144, &ext_attrs); 1956 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1957 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 146, &ext_attrs); 1958 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1959 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 148, &ext_attrs); 1960 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1961 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 150, &ext_attrs); 1962 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 1963 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 152, &ext_attrs); 1964 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 1965 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 154, &ext_attrs); 1966 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 1967 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 156, &ext_attrs); 1968 1969 /* Initialize Level2 1-bit extractors section. */ 1970 gran = 1; 1971 ext_num = 0; 1972 sal_memset(&ext_attrs, 0, ext_attrs_size); 1973 SHR_BITSET(ext_attrs.w, 1974 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_EM_FIRST_LOOKUP_HIT); 1975 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1976 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 158, &ext_attrs); 1977 1978 sal_memset(&ext_attrs, 0, ext_attrs_size); 1979 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DROP); 1980 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1981 BCMI_KEYGEN_EXT_SECTION_L2AS2, BCMI_KEYGEN_EXT_SECTION_L3AS1, 159, &ext_attrs); 1982 1983 /* Initialize Level_1 32-bit extractor section. */ 1984 level = 1; 1985 gran = 32; 1986 ext_num = 0; 1987 part = 1; 1988 sal_memset(&ext_attrs, 0, ext_attrs_size); 1989 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 1990 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS1, 0, attrs); 1991 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 1992 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS1, 32, attrs); 1993 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 1994 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS2, 0, attrs); 1995 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 1996 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2BS2, 32, attrs); 1997 1998 /* Initialize Level_1 16-bit extractors section. */ 1999 level = 1; 2000 gran = 16; 2001 ext_num = 0; 2002 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2003 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 64, attrs); 2004 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2005 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 80, attrs); 2006 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2007 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 96, attrs); 2008 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2009 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 112, attrs); 2010 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2011 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS1, 128, attrs); 2012 2013 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2014 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 64, attrs); 2015 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2016 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 80, attrs); 2017 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 2018 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 96, attrs); 2019 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 2020 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 112, attrs); 2021 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 2022 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2BS2, 128, attrs); 2023 2024 /* Initialize Level_1 8-bit extractors section. */ 2025 level = 1; 2026 gran = 8; 2027 ext_num = 0; 2028 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2029 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 144, attrs); 2030 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2031 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 152, attrs); 2032 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2033 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 160, attrs); 2034 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2035 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 168, attrs); 2036 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2037 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 176, attrs); 2038 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2039 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2BS2, 184, attrs); 2040 2041 /* Initialize Level_1 4-bit extractors section. */ 2042 level = 1; 2043 gran = 4; 2044 ext_num = 0; 2045 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2046 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 192, attrs); 2047 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2048 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 196, attrs); 2049 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2050 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 200, attrs); 2051 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2052 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 204, attrs); 2053 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2054 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 208, attrs); 2055 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2056 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 212, attrs); 2057 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2058 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 216, attrs); 2059 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 2060 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 220, attrs); 2061 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 2062 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 224, attrs); 2063 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 2064 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2BS2, 228, attrs); 2065 2066 /* Initialize Level_2 16-bit extractors section. */ 2067 level = 2; 2068 gran = 16; 2069 ext_num = 0; 2070 sal_memset(&ext_attrs, 0, ext_attrs_size); 2071 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2072 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 0, &ext_attrs); 2073 sal_memset(&ext_attrs, 0, ext_attrs_size); 2074 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 2075 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2076 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 20, &ext_attrs); 2077 sal_memset(&ext_attrs, 0, ext_attrs_size); 2078 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 2079 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2080 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 36, &ext_attrs); 2081 sal_memset(&ext_attrs, 0, ext_attrs_size); 2082 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_C); 2083 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2084 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 52, &ext_attrs); 2085 sal_memset(&ext_attrs, 0, ext_attrs_size); 2086 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_D); 2087 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2088 BCMI_KEYGEN_EXT_SECTION_L2BS1, BCMI_KEYGEN_EXT_SECTION_L3BS1, 68, attrs); 2089 2090 /* Initialize Level_2 4-bit extractors section. */ 2091 level = 2; 2092 gran = 4; 2093 ext_num = 0; 2094 sal_memset(&ext_attrs, 0, ext_attrs_size); 2095 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2096 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 16, &ext_attrs); 2097 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2098 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 84, &ext_attrs); 2099 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2100 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 88, &ext_attrs); 2101 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2102 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 92, &ext_attrs); 2103 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2104 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 96, &ext_attrs); 2105 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2106 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 100, &ext_attrs); 2107 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2108 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 104, &ext_attrs); 2109 sal_memset(&ext_attrs, 0, ext_attrs_size); 2110 SHR_BITSET(ext_attrs.w, 2111 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 2112 SHR_BITSET(ext_attrs.w, 2113 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 2114 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 2115 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 108, &ext_attrs); 2116 sal_memset(&ext_attrs, 0, ext_attrs_size); 2117 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 2118 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 112, &ext_attrs); 2119 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 2120 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 116, &ext_attrs); 2121 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 10), 2122 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 120, &ext_attrs); 2123 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 11), 2124 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 124, &ext_attrs); 2125 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 12), 2126 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 128, &ext_attrs); 2127 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 13), 2128 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 132, &ext_attrs); 2129 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 14), 2130 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 136, &ext_attrs); 2131 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 15), 2132 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 140, &ext_attrs); 2133 2134 /* Initialize Level2 2-bit extractors section. */ 2135 level = 2; 2136 gran = 2; 2137 ext_num = 0; 2138 sal_memset(&ext_attrs, 0, ext_attrs_size); 2139 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2140 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 144, &ext_attrs); 2141 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2142 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 146, &ext_attrs); 2143 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2144 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 148, &ext_attrs); 2145 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2146 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 150, &ext_attrs); 2147 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2148 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 152, &ext_attrs); 2149 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2150 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 154, &ext_attrs); 2151 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2152 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 156, &ext_attrs); 2153 2154 /* Initialize Level2 1-bit extractors section. */ 2155 gran = 1; 2156 ext_num = 0; 2157 sal_memset(&ext_attrs, 0, ext_attrs_size); 2158 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2159 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 158, &ext_attrs); 2160 2161 sal_memset(&ext_attrs, 0, ext_attrs_size); 2162 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2163 BCMI_KEYGEN_EXT_SECTION_L2BS2, BCMI_KEYGEN_EXT_SECTION_L3BS1, 159, &ext_attrs); 2164 2165 2166 /* Initialize Level_1 32-bit extractor section. */ 2167 level = 1; 2168 gran = 32; 2169 ext_num = 0; 2170 part = 2; 2171 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2172 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2CS1, 0, attrs); 2173 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2174 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2CS1, 32, attrs); 2175 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2176 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2CS2, 0, attrs); 2177 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2178 BCMI_KEYGEN_EXT_SECTION_L1E32, BCMI_KEYGEN_EXT_SECTION_L2CS2, 32, attrs); 2179 2180 /* Initialize Level_1 16-bit extractors section. */ 2181 level = 1; 2182 gran = 16; 2183 ext_num = 0; 2184 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2185 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS1, 64, attrs); 2186 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2187 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS1, 80, attrs); 2188 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2189 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS1, 96, attrs); 2190 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2191 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS1, 112, attrs); 2192 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2193 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS1, 128, attrs); 2194 2195 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2196 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS2, 64, attrs); 2197 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2198 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS2, 80, attrs); 2199 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 2200 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS2, 96, attrs); 2201 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 2202 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS2, 112, attrs); 2203 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 2204 BCMI_KEYGEN_EXT_SECTION_L1E16, BCMI_KEYGEN_EXT_SECTION_L2CS2, 128, attrs); 2205 2206 /* Initialize Level_1 8-bit extractors section. */ 2207 level = 1; 2208 gran = 8; 2209 ext_num = 0; 2210 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2211 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2CS2, 144, attrs); 2212 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2213 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2CS2, 152, attrs); 2214 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2215 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2CS2, 160, attrs); 2216 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2217 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2CS2, 168, attrs); 2218 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2219 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2CS2, 176, attrs); 2220 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2221 BCMI_KEYGEN_EXT_SECTION_L1E8, BCMI_KEYGEN_EXT_SECTION_L2CS2, 184, attrs); 2222 2223 /* Initialize Level_1 4-bit extractors section. */ 2224 level = 1; 2225 gran = 4; 2226 ext_num = 0; 2227 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2228 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 192, attrs); 2229 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2230 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 196, attrs); 2231 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2232 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 200, attrs); 2233 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2234 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 204, attrs); 2235 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2236 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 208, attrs); 2237 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2238 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 212, attrs); 2239 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2240 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 216, attrs); 2241 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 2242 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 220, attrs); 2243 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 2244 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 224, attrs); 2245 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 2246 BCMI_KEYGEN_EXT_SECTION_L1E4, BCMI_KEYGEN_EXT_SECTION_L2CS2, 228, attrs); 2247 2248 /* Initialize Level_2 16-bit extractors section. */ 2249 level = 2; 2250 gran = 16; 2251 ext_num = 0; 2252 sal_memset(&ext_attrs, 0, ext_attrs_size); 2253 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2254 BCMI_KEYGEN_EXT_SECTION_L2CS1, BCMI_KEYGEN_EXT_SECTION_L3CS1, 0, &ext_attrs); 2255 sal_memset(&ext_attrs, 0, ext_attrs_size); 2256 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 2257 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2258 BCMI_KEYGEN_EXT_SECTION_L2CS1, BCMI_KEYGEN_EXT_SECTION_L3CS1, 20, &ext_attrs); 2259 sal_memset(&ext_attrs, 0, ext_attrs_size); 2260 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 2261 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2262 BCMI_KEYGEN_EXT_SECTION_L2CS1, BCMI_KEYGEN_EXT_SECTION_L3CS1, 36, &ext_attrs); 2263 sal_memset(&ext_attrs, 0, ext_attrs_size); 2264 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_C); 2265 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2266 BCMI_KEYGEN_EXT_SECTION_L2CS1, BCMI_KEYGEN_EXT_SECTION_L3CS1, 52, &ext_attrs); 2267 sal_memset(&ext_attrs, 0, ext_attrs_size); 2268 SHR_BITSET(ext_attrs.w, BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_CLASS_ID_D); 2269 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2270 BCMI_KEYGEN_EXT_SECTION_L2CS1, BCMI_KEYGEN_EXT_SECTION_L3CS1, 68, attrs); 2271 2272 /* Initialize Level_2 4-bit extractors section. */ 2273 level = 2; 2274 gran = 4; 2275 ext_num = 0; 2276 sal_memset(&ext_attrs, 0, ext_attrs_size); 2277 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2278 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 16, &ext_attrs); 2279 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2280 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 84, &ext_attrs); 2281 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2282 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 88, &ext_attrs); 2283 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2284 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 92, &ext_attrs); 2285 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2286 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 96, &ext_attrs); 2287 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2288 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 100, &ext_attrs); 2289 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2290 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 104, &ext_attrs); 2291 sal_memset(&ext_attrs, 0, ext_attrs_size); 2292 SHR_BITSET(ext_attrs.w, 2293 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_A); 2294 SHR_BITSET(ext_attrs.w, 2295 BCMI_KEYGEN_EXT_ATTR_NOT_WITH_PMUX_DST_CONTAINER_B); 2296 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 7), 2297 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 108, &ext_attrs); 2298 sal_memset(&ext_attrs, 0, ext_attrs_size); 2299 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 8), 2300 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 112, &ext_attrs); 2301 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 9), 2302 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 116, &ext_attrs); 2303 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 10), 2304 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 120, &ext_attrs); 2305 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 11), 2306 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 124, &ext_attrs); 2307 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 12), 2308 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 128, &ext_attrs); 2309 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 13), 2310 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 132, &ext_attrs); 2311 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 14), 2312 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 136, &ext_attrs); 2313 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 15), 2314 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 140, &ext_attrs); 2315 2316 /* Initialize Level2 2-bit extractors section. */ 2317 level = 2; 2318 gran = 2; 2319 ext_num = 0; 2320 sal_memset(&ext_attrs, 0, ext_attrs_size); 2321 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2322 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 144, &ext_attrs); 2323 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2324 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 146, &ext_attrs); 2325 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 2), 2326 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 148, &ext_attrs); 2327 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 3), 2328 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 150, &ext_attrs); 2329 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 4), 2330 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 152, &ext_attrs); 2331 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 5), 2332 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 154, &ext_attrs); 2333 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 6), 2334 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 156, &ext_attrs); 2335 2336 /* Initialize Level2 1-bit extractors section. */ 2337 gran = 1; 2338 ext_num = 0; 2339 sal_memset(&ext_attrs, 0, ext_attrs_size); 2340 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, ext_num, 2341 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 158, &ext_attrs); 2342 2343 sal_memset(&ext_attrs, 0, ext_attrs_size); 2344 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, part, level, gran, (ext_num + 1), 2345 BCMI_KEYGEN_EXT_SECTION_L2CS2, BCMI_KEYGEN_EXT_SECTION_L3CS1, 159, &ext_attrs); 2346 2347 level = 3; 2348 gran = 160; 2349 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, 0, level, gran, 0, 2350 BCMI_KEYGEN_EXT_SECTION_L3AS1, BCMI_KEYGEN_EXT_SECTION_DISABLE, 0, attrs); 2351 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, 1, level, gran, 0, 2352 BCMI_KEYGEN_EXT_SECTION_L3BS1, BCMI_KEYGEN_EXT_SECTION_DISABLE, 0, attrs); 2353 BCMI_KEYGEN_EXT_CFG_ADD(unit, ext_cfg_db, 2, level, gran, 0, 2354 BCMI_KEYGEN_EXT_SECTION_L3CS1, BCMI_KEYGEN_EXT_SECTION_DISABLE, 0, attrs); 2355 exit: 2356 BCMI_KEYGEN_FUNC_EXIT(); 2357 } 2358 2359 /* 2360 * Function: 2361 * _bcm_field_th3_em_key_attributes_init 2362 * Purpose: 2363 * Initialize Exact Match Key Attribute memory. 2364 * Parameters: 2365 * unit - (IN) BCM device number. 2366 * stage_fc - (IN) Field Processor stage control structure. 2367 * Returns: 2368 * BCM_E_XXX 2369 * Notes: 2370 */ 2371 int 2372 _bcm_field_th3_em_key_attributes_init(int unit, _field_stage_t *stage_fc, 2373 _field_control_t *fc) 2374 { 2375 exact_match_key_attributes_entry_t em_entry; 2376 /* key attributes Entry buffer. */ 2377 uint32 *em_key_attr_entry = NULL; /* Hardware Buffer Ptr. */ 2378 int idx; 2379 soc_mem_t mem; /* Memory Identifier. */ 2380 int mem_inst = 0; 2381 static soc_mem_t em_key_attributes_mem; 2382 2383 mem = EXACT_MATCH_KEY_ATTRIBUTESm; 2384 2385 /* Assign exact match key attribute entry buffer. */ 2386 em_key_attr_entry = (uint32 *)&em_entry; 2387 2388 for (idx = 0; idx < stage_fc->num_instances; idx++) { 2389 if (!(fc->pipe_map & (1 << idx))) { 2390 continue; 2391 } 2392 if (stage_fc->oper_mode == bcmFieldGroupOperModeGlobal) { 2393 mem_inst = _FP_GLOBAL_INST; 2394 } else if (stage_fc->oper_mode == bcmFieldGroupOperModePipeLocal) { 2395 mem_inst = idx; 2396 } else { 2397 return BCM_E_INTERNAL; 2398 } 2399 2400 BCM_IF_ERROR_RETURN(_bcm_field_mem_instance_get(unit, 2401 EXACT_MATCH_KEY_ATTRIBUTESm, 2402 mem_inst, &em_key_attributes_mem)); 2403 2404 /* Initialize buffer to 0 */ 2405 sal_memcpy(em_key_attr_entry, soc_mem_entry_null(unit, mem), 2406 soc_mem_entry_words(unit, mem) * sizeof(uint32)); 2407 2408 /* Mode 128: entry 0 */ 2409 /* Read entry into SW buffer. */ 2410 BCM_IF_ERROR_RETURN(soc_mem_read(unit, em_key_attributes_mem, 2411 MEM_BLOCK_ANY, 0, em_key_attr_entry)); 2412 2413 /* Mode 128: Set BUCKET_MODE. */ 2414 soc_mem_field32_set(unit, em_key_attributes_mem, 2415 em_key_attr_entry, BUCKET_MODEf, 0); 2416 /* Mode 128: Set KEY_BASE_WIDTH. */ 2417 soc_mem_field32_set(unit, em_key_attributes_mem, 2418 em_key_attr_entry, KEY_BASE_WIDTHf, 1); 2419 /* Mode 128: Set KEY_WIDTH. */ 2420 soc_mem_field32_set(unit, em_key_attributes_mem, 2421 em_key_attr_entry, KEY_WIDTHf, 3); 2422 /* Mode 128: Set DATA_BASE_WIDTH. */ 2423 soc_mem_field32_set(unit, em_key_attributes_mem, 2424 em_key_attr_entry, DATA_BASE_WIDTHf, 0); 2425 2426 /* Install entry in hardware. */ 2427 BCM_IF_ERROR_RETURN(soc_mem_write(unit, em_key_attributes_mem, 2428 MEM_BLOCK_ALL, 0, em_key_attr_entry)); 2429 2430 /* Initialize buffer to 0 */ 2431 sal_memcpy(em_key_attr_entry, soc_mem_entry_null(unit, mem), 2432 soc_mem_entry_words(unit, mem) * sizeof(uint32)); 2433 /* Mode 160: entry 1 */ 2434 /* Read entry into SW buffer. */ 2435 BCM_IF_ERROR_RETURN(soc_mem_read(unit, em_key_attributes_mem, 2436 MEM_BLOCK_ANY, 1, em_key_attr_entry)); 2437 2438 /* Mode 160: Set BUCKET_MODE. */ 2439 soc_mem_field32_set(unit, em_key_attributes_mem, 2440 em_key_attr_entry, BUCKET_MODEf, 0); 2441 /* Mode 160: Set KEY_BASE_WIDTH. */ 2442 soc_mem_field32_set(unit, em_key_attributes_mem, 2443 em_key_attr_entry, KEY_BASE_WIDTHf, 1); 2444 /* Mode 160: Set KEY_WIDTH. */ 2445 soc_mem_field32_set(unit, em_key_attributes_mem, 2446 em_key_attr_entry, KEY_WIDTHf, 11); 2447 /* Mode 160: Set DATA_BASE_WIDTH. */ 2448 soc_mem_field32_set(unit, em_key_attributes_mem, 2449 em_key_attr_entry, DATA_BASE_WIDTHf, 0); 2450 /* Install entry in hardware. */ 2451 BCM_IF_ERROR_RETURN(soc_mem_write(unit, em_key_attributes_mem, 2452 MEM_BLOCK_ALL, 1, em_key_attr_entry)); 2453 2454 /* Initialize buffer to 0 */ 2455 sal_memcpy(em_key_attr_entry, soc_mem_entry_null(unit, mem), 2456 soc_mem_entry_words(unit, mem) * sizeof(uint32)); 2457 /* Mode 320: entry 2 */ 2458 /* Read entry into SW buffer. */ 2459 BCM_IF_ERROR_RETURN(soc_mem_read(unit, em_key_attributes_mem, 2460 MEM_BLOCK_ANY, 2, em_key_attr_entry)); 2461 2462 /* Mode 320: Set BUCKET_MODE. */ 2463 soc_mem_field32_set(unit, em_key_attributes_mem, 2464 em_key_attr_entry, BUCKET_MODEf, 0); 2465 /* Mode 320: Set KEY_BASE_WIDTH. */ 2466 soc_mem_field32_set(unit, em_key_attributes_mem, 2467 em_key_attr_entry, KEY_BASE_WIDTHf, 2); 2468 /* Mode 320: Set KEY_WIDTH. */ 2469 soc_mem_field32_set(unit, em_key_attributes_mem, 2470 em_key_attr_entry, KEY_WIDTHf, 21); 2471 /* Mode 320: Set DATA_BASE_WIDTH. */ 2472 soc_mem_field32_set(unit, em_key_attributes_mem, 2473 em_key_attr_entry, DATA_BASE_WIDTHf, 1); 2474 2475 /* Install entry in hardware. */ 2476 BCM_IF_ERROR_RETURN(soc_mem_write(unit, em_key_attributes_mem, 2477 MEM_BLOCK_ALL, 2, em_key_attr_entry)); 2478 } 2479 return BCM_E_NONE; 2480 } 2481 2482 int 2483 _bcm_field_th3_qualifiers_init(int unit, _field_stage_t *stage_fc) 2484 { 2485 bcmi_keygen_qual_flags_bmp_t qual_flags; 2486 bcmi_keygen_qual_cfg_info_db_t *db = NULL; 2487 BCMI_KEYGEN_QUAL_CFG_DECL; 2488 2489 BCMI_KEYGEN_FUNC_ENTER(unit); 2490 2491 /* L0 BUS extractor sections offset: 2492 * - 32bit extractor = 0 2493 * - 16bit extractor = 608 2494 * - 8bit extractor = 1120 2495 * - 4bit extractor = 1280 2496 * - 2bit extractor = 1400 2497 */ 2498 2499 /* Input parameters check. */ 2500 if (NULL == stage_fc) { 2501 return (BCM_E_PARAM); 2502 } 2503 2504 _FP_XGS3_ALLOC(stage_fc->qual_cfg_info_db, 2505 sizeof(bcmi_keygen_qual_cfg_info_db_t), 2506 "IFP qualifiers"); 2507 if (NULL == stage_fc->qual_cfg_info_db) { 2508 return (BCM_E_MEMORY); 2509 } 2510 db = stage_fc->qual_cfg_info_db; 2511 sal_memset(&qual_flags, 0, sizeof(bcmi_keygen_qual_flags_bmp_t)); 2512 2513 /* Pseudo qualifiers */ 2514 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2515 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyStage, qual_flags); 2516 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2517 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyStageIngress, qual_flags); 2518 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2519 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyStageIngressExactMatch, qual_flags); 2520 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2521 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyExactMatchHitStatus, qual_flags); 2522 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2523 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyExactMatchActionClassId, qual_flags); 2524 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2525 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyExactMatchGroupClassId, qual_flags); 2526 2527 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2528 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 2, 64, 32); 2529 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E16, 19, 304, 16); 2530 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcMac, qual_flags); 2531 2532 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2533 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 3, 96, 32); 2534 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E16, 20, 320, 16); 2535 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstMac, qual_flags); 2536 2537 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2538 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 4, 128, 32); 2539 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcIp, qual_flags); 2540 2541 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2542 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 8, 256, 32); 2543 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstIp, qual_flags); 2544 2545 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2546 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 4, 128, 32); 2547 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 5, 160, 32); 2548 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(2, BCMI_KEYGEN_EXT_SECTION_L1E32, 6, 192, 32); 2549 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(3, BCMI_KEYGEN_EXT_SECTION_L1E32, 7, 224, 32); 2550 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcIp6, qual_flags); 2551 2552 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2553 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 4, 128, 32); 2554 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 5, 160, 32); 2555 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcIp6Low, qual_flags); 2556 2557 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2558 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 6, 192, 32); 2559 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 7, 224, 32); 2560 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcIp6High, qual_flags); 2561 2562 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2563 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 8, 256, 32); 2564 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 9, 288, 32); 2565 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(2, BCMI_KEYGEN_EXT_SECTION_L1E32, 10, 320, 32); 2566 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(3, BCMI_KEYGEN_EXT_SECTION_L1E32, 11, 352, 32); 2567 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstIp6, qual_flags); 2568 2569 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2570 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 8, 256, 32); 2571 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 9, 288, 32); 2572 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstIp6Low, qual_flags); 2573 2574 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2575 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 10, 320, 32); 2576 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 11, 352, 32); 2577 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstIp6High, qual_flags); 2578 2579 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2580 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 11, 352, 32); 2581 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 10, 320, 32); 2582 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(2, BCMI_KEYGEN_EXT_SECTION_L1E32, 9, 288, 32); 2583 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(3, BCMI_KEYGEN_EXT_SECTION_L1E32, 8, 256, 32); 2584 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(4, BCMI_KEYGEN_EXT_SECTION_L1E32, 7, 224, 32); 2585 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(5, BCMI_KEYGEN_EXT_SECTION_L1E32, 6, 192, 32); 2586 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(6, BCMI_KEYGEN_EXT_SECTION_L1E32, 5, 160, 32); 2587 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(7, BCMI_KEYGEN_EXT_SECTION_L1E32, 4, 128, 32); 2588 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL2PayLoad, qual_flags); 2589 2590 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2591 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 11, 352, 32); 2592 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E32, 10, 320, 32); 2593 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, 2594 bcmFieldQualifyL2PayloadFirstEightBytes, qual_flags); 2595 2596 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2597 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 8); 2598 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 3); 2599 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelTtl, qual_flags); 2600 2601 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2602 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 40, 1); 2603 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 3); 2604 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelBos, qual_flags); 2605 2606 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2607 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 41, 3); 2608 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 3); 2609 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelExp, qual_flags); 2610 2611 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2612 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 44, 20); 2613 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 3); 2614 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelId, qual_flags); 2615 2616 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2617 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 32); 2618 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 3); 2619 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabel, qual_flags); 2620 2621 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2622 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 8); 2623 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 3); 2624 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelTtl, qual_flags); 2625 2626 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2627 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 8, 1); 2628 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 3); 2629 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelBos, qual_flags); 2630 2631 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2632 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 9, 3); 2633 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 3); 2634 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelExp, qual_flags); 2635 2636 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2637 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 12, 20); 2638 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 3); 2639 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelId, qual_flags); 2640 2641 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2642 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 32); 2643 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 3); 2644 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabel, qual_flags); 2645 2646 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2647 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 32); 2648 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 4); 2649 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsControlWord, qual_flags); 2650 2651 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2652 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 32); 2653 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 4); 2654 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsControlWord, qual_flags); 2655 2656 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2657 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 16, 16); 2658 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 5); 2659 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7AHashUpper, qual_flags); 2660 2661 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2662 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 48, 16); 2663 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 5); 2664 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7AHashUpper, qual_flags); 2665 2666 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2667 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 16); 2668 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 5); 2669 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7AHashLower, qual_flags); 2670 2671 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2672 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 16); 2673 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 5); 2674 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7AHashLower, qual_flags); 2675 2676 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2677 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 16, 16); 2678 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 6); 2679 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7BHashUpper, qual_flags); 2680 2681 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2682 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 48, 16); 2683 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 6); 2684 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7BHashUpper, qual_flags); 2685 2686 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2687 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 16); 2688 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 6); 2689 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7BHashLower, qual_flags); 2690 2691 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2692 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 16); 2693 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 6); 2694 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRtag7BHashLower, qual_flags); 2695 2696 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2697 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 20); 2698 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 9); 2699 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIp6FlowLabel, qual_flags); 2700 2701 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2702 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 20); 2703 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 9); 2704 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIp6FlowLabel, qual_flags); 2705 2706 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2707 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 32); 2708 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 10); 2709 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyBfdYourDiscriminator, qual_flags); 2710 2711 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2712 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 32); 2713 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 10); 2714 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyBfdYourDiscriminator, qual_flags); 2715 2716 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2717 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 16); 2718 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 11); 2719 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyPacketLength, qual_flags); 2720 2721 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2722 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 16); 2723 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 11); 2724 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyPacketLength, qual_flags); 2725 2726 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2727 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 32); 2728 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 12); 2729 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOpaqueTagLow, qual_flags); 2730 2731 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2732 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 32); 2733 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 12); 2734 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOpaqueTagLow, qual_flags); 2735 2736 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2737 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 0, 0, 32); 2738 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_B, 13); 2739 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOpaqueTagHigh, qual_flags); 2740 2741 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2742 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E32, 1, 32, 32); 2743 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_AUX_TAG_A, 13); 2744 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOpaqueTagHigh, qual_flags); 2745 2746 /* UDF1 Qualifiers. */ 2747 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2748 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 0, 0, 16); 2749 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2750 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData7, qual_flags); 2751 2752 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2753 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 1, 16, 16); 2754 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2755 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData6, qual_flags); 2756 2757 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2758 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 2, 32, 16); 2759 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2760 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData5, qual_flags); 2761 2762 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2763 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 3, 48, 16); 2764 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2765 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData4, qual_flags); 2766 2767 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2768 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 4, 64, 16); 2769 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2770 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData3, qual_flags); 2771 2772 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2773 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 5, 80, 16); 2774 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2775 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData2, qual_flags); 2776 2777 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2778 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 6, 96, 16); 2779 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2780 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData1, qual_flags); 2781 2782 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2783 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 7, 112, 16); 2784 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 0); 2785 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData0, qual_flags); 2786 2787 /* UDF2 Qualifiers. */ 2788 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2789 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 0, 0, 16); 2790 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2791 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData15, qual_flags); 2792 2793 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2794 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 1, 16, 16); 2795 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2796 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData14, qual_flags); 2797 2798 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2799 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 2, 32, 16); 2800 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2801 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData13, qual_flags); 2802 2803 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2804 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 3, 48, 16); 2805 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2806 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData12, qual_flags); 2807 2808 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2809 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 4, 64, 16); 2810 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2811 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData11, qual_flags); 2812 2813 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2814 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 5, 80, 16); 2815 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2816 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData10, qual_flags); 2817 2818 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2819 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 6, 96, 16); 2820 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2821 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData9, qual_flags); 2822 2823 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2824 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 7, 112, 16); 2825 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_UDF, 1); 2826 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyData8, qual_flags); 2827 2828 2829 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2830 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 8, 128, 9); 2831 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_A, 0); 2832 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcPort, qual_flags); 2833 2834 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2835 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 8, 128, 9); 2836 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_A, 0); 2837 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcTrunkMemberGport, qual_flags); 2838 2839 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2840 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 8, 128, 9); 2841 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_A, 0); 2842 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcModPortGport, qual_flags); 2843 2844 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2845 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 8, 128, 9); 2846 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_A, 0); 2847 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcModPortGports, qual_flags); 2848 2849 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2850 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 9, 144, 9); 2851 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_B, 0); 2852 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcPort, qual_flags); 2853 2854 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2855 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 9, 144, 9); 2856 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_B, 0); 2857 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcTrunkMemberGport, qual_flags); 2858 2859 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2860 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 9, 144, 9); 2861 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_B, 0); 2862 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcModPortGport, qual_flags); 2863 2864 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2865 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 9, 144, 9); 2866 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_B, 0); 2867 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcModPortGports, qual_flags); 2868 2869 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2870 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 8, 128, 9); 2871 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_A, 1); 2872 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcTrunk, qual_flags); 2873 2874 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2875 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 9, 144, 9); 2876 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_SRC_B, 1); 2877 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcTrunk, qual_flags); 2878 2879 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2880 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 12); 2881 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 0); 2882 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassPort, qual_flags); 2883 2884 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2885 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 12); 2886 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 1); 2887 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL3, qual_flags); 2888 2889 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2890 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 8); 2891 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 2); 2892 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 2893 2894 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2895 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 168, 8); 2896 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 2); 2897 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 2898 2899 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2900 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 12); 2901 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 3); 2902 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL2, qual_flags); 2903 2904 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2905 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 10); 2906 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 4); 2907 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 2908 2909 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2910 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 10); 2911 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 5); 2912 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 2913 2914 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2915 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 8); 2916 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 6); 2917 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceIngressKeySelectClassPort, qual_flags); 2918 2919 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2920 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 168, 8); 2921 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 6); 2922 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceLookupClassPort, qual_flags); 2923 2924 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2925 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 10, 160, 8); 2926 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 7); 2927 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyUdfClass, qual_flags); 2928 2929 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2930 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 12); 2931 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 0); 2932 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassPort, qual_flags); 2933 2934 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2935 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 12); 2936 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 1); 2937 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL3, qual_flags); 2938 2939 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2940 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 8); 2941 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 2); 2942 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 2943 2944 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2945 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 184, 8); 2946 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 2); 2947 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 2948 2949 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2950 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 12); 2951 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 3); 2952 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL2, qual_flags); 2953 2954 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2955 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 10); 2956 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 4); 2957 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 2958 2959 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2960 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 10); 2961 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 5); 2962 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 2963 2964 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2965 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 8); 2966 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 6); 2967 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceIngressKeySelectClassPort, qual_flags); 2968 2969 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2970 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 184, 8); 2971 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 6); 2972 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceLookupClassPort, qual_flags); 2973 2974 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2975 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 11, 176, 8); 2976 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 7); 2977 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyUdfClass, qual_flags); 2978 2979 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2980 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 12, 192, 12); 2981 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyForwardingVlanId, qual_flags); 2982 2983 2984 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2985 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 12, 192, 12); 2986 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyVrf, qual_flags); 2987 2988 2989 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2990 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 12, 192, 14); 2991 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyVpn, qual_flags); 2992 2993 2994 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2995 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 13, 208, 13); 2996 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL3Ingress, qual_flags); 2997 2998 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 2999 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 14, 224, 16); 3000 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOuterVlan, qual_flags); 3001 3002 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3003 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 14, 224, 12); 3004 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOuterVlanId, qual_flags); 3005 3006 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3007 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 14, 236, 1); 3008 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOuterVlanCfi, qual_flags); 3009 3010 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3011 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 14, 237, 3); 3012 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOuterVlanPri, qual_flags); 3013 3014 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3015 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 16, 256, 16); 3016 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL4DstPort, qual_flags); 3017 3018 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3019 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 17, 272, 16); 3020 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL4SrcPort, qual_flags); 3021 3022 /* Overlay on same region as L4SrcPort */ 3023 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3024 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 17, 272, 16); 3025 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIcmpTypeCode, qual_flags); 3026 3027 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3028 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 18, 288, 16); 3029 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyEtherType, qual_flags); 3030 3031 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3032 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 21, 336, 16); 3033 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E16, 22, 352, 16); 3034 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(2, BCMI_KEYGEN_EXT_SECTION_L1E16, 23, 368, 16); 3035 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(3, BCMI_KEYGEN_EXT_SECTION_L1E16, 24, 384, 16); 3036 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRangeCheck, qual_flags); 3037 3038 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3039 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 0, 0, 8); 3040 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInPort, qual_flags); 3041 3042 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3043 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 1, 8, 8); 3044 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E4, 13, 52, 4); 3045 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyVrf, qual_flags); 3046 3047 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3048 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 2, 16, 8); 3049 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E4, 3, 12, 4); 3050 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOuterVlanId, qual_flags); 3051 3052 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3053 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3054 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 0); 3055 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassPort, qual_flags); 3056 3057 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3058 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3059 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 1); 3060 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL3, qual_flags); 3061 3062 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3063 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3064 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 2); 3065 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 3066 3067 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3068 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3069 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 2); 3070 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 3071 3072 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3073 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3074 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 3); 3075 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL2, qual_flags); 3076 3077 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3078 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3079 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 4); 3080 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 3081 3082 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3083 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3084 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 5); 3085 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 3086 3087 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3088 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3089 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 6); 3090 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceIngressKeySelectClassPort, qual_flags); 3091 3092 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3093 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3094 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 6); 3095 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceLookupClassPort, qual_flags); 3096 3097 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3098 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 3, 24, 8); 3099 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_B, 7); 3100 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyUdfClass, qual_flags); 3101 3102 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3103 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3104 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 0); 3105 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassPort, qual_flags); 3106 3107 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3108 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3109 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 1); 3110 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL3, qual_flags); 3111 3112 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3113 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3114 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 2); 3115 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 3116 3117 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3118 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3119 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 2); 3120 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 3121 3122 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3123 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3124 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 3); 3125 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceClassL2, qual_flags); 3126 3127 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3128 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3129 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 4); 3130 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstClassField, qual_flags); 3131 3132 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3133 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3134 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 5); 3135 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifySrcClassField, qual_flags); 3136 3137 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3138 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3139 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 6); 3140 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceIngressKeySelectClassPort, qual_flags); 3141 3142 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3143 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3144 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 6); 3145 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInterfaceLookupClassPort, qual_flags); 3146 3147 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3148 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 4, 32, 8); 3149 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_A, 7); 3150 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyUdfClass, qual_flags); 3151 3152 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3153 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E16, 12, 192, 12); 3154 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyForwardingVlanId, qual_flags); 3155 3156 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3157 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 6, 48, 8); 3158 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TOS_FN, 2); 3159 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTos, qual_flags); 3160 3161 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3162 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 6, 48, 8); 3163 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TOS_FN, 0); 3164 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTosClassZero, qual_flags); 3165 3166 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3167 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 6, 48, 8); 3168 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TOS_FN, 1); 3169 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTosClassOne, qual_flags); 3170 3171 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3172 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 7, 56, 8); 3173 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TTL_FN, 2); 3174 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTtl, qual_flags); 3175 3176 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3177 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 7, 56, 8); 3178 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TTL_FN, 0); 3179 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTtlClassZero, qual_flags); 3180 3181 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3182 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 7, 56, 8); 3183 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TTL_FN, 1); 3184 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTtlClassOne, qual_flags); 3185 3186 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3187 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 8, 64, 8); 3188 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpProtocol, qual_flags); 3189 3190 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3191 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 9, 72, 8); 3192 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyExtensionHeader2Type, qual_flags); 3193 3194 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3195 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 10, 80, 8); 3196 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyExtensionHeaderType, qual_flags); 3197 3198 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3199 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 11, 88, 8); 3200 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyExtensionHeaderSubCode, qual_flags); 3201 3202 /* ltid is assigned fixed offset to avoid issues 3203 * with matching on ltid with value 0 3204 */ 3205 3206 if (soc_feature(unit, soc_feature_fp_ltid_match_all_parts) && 3207 (stage_fc->stage_id == _BCM_FIELD_STAGE_INGRESS)) { 3208 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3209 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 12, 96, 4); 3210 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_LTID, 1); 3211 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyPreLogicalTableId1, qual_flags); 3212 3213 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3214 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 12, 96, 4); 3215 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_LTID, 2); 3216 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyPreLogicalTableId2, qual_flags); 3217 } 3218 3219 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3220 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 12, 101, 2); 3221 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyGroupClass, qual_flags); 3222 3223 /* EM_LOOKUP_CONTROL */ 3224 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3225 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 13, 104, 4); 3226 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, _bcmFieldQualifyExactMatchGroupClassIdLookup0, qual_flags); 3227 3228 3229 3230 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3231 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 15, 120, 8); 3232 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TCP_FN, 2); 3233 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTcpControl, qual_flags); 3234 3235 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3236 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 15, 120, 8); 3237 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TCP_FN, 0); 3238 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTcpClassZero, qual_flags); 3239 3240 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3241 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 15, 120, 8); 3242 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_TCP_FN, 1); 3243 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTcpClassOne, qual_flags); 3244 3245 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3246 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 16, 128, 8); 3247 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_ALT_TTL_FN, 1); 3248 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpTunnelTtl, qual_flags); 3249 3250 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3251 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 16, 128, 8); 3252 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_ALT_TTL_FN, 0); 3253 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpTunnelTtlClassZero, qual_flags); 3254 3255 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3256 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E8, 17, 136, 8); 3257 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(1, BCMI_KEYGEN_EXT_SECTION_L1E8, 18, 144, 8); 3258 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyRangeCheckGroup, qual_flags); 3259 3260 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3261 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 0, 0, 4); 3262 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpType, qual_flags); 3263 3264 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3265 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 4, 16, 2); 3266 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIngressStpState, qual_flags); 3267 3268 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3269 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 4, 16, 2); 3270 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyStpState, qual_flags); 3271 3272 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3273 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 4, 18, 1); 3274 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDosAttack, qual_flags); 3275 3276 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3277 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 4, 19, 1); 3278 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyForwardingVlanValid, qual_flags); 3279 3280 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3281 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 5, 23, 1); 3282 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpTunnelHit, qual_flags); 3283 3284 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3285 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 5, 22, 1); 3286 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsTerminated, qual_flags); 3287 3288 3289 SHR_BITSET(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_NOT_IN_EM); 3290 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3291 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 5, 20, 1); 3292 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsLabel1Hit, qual_flags); 3293 3294 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3295 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 5, 21, 1); 3296 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsLabel2Hit, qual_flags); 3297 SHR_BITCLR(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_NOT_IN_EM); 3298 3299 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3300 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 6, 24, 4); 3301 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyForwardingType, qual_flags); 3302 3303 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3304 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 7, 28, 4); 3305 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyEtherTypeClass, qual_flags); 3306 3307 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3308 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 8, 32, 4); 3309 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpProtocolClass, qual_flags); 3310 3311 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3312 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 11, 44, 4); 3313 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMplsForwardingLabelAction, qual_flags); 3314 3315 3316 3317 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3318 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 16, 64, 2); 3319 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpFlags, qual_flags); 3320 3321 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3322 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 16, 66, 2); 3323 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpFrag, qual_flags); 3324 3325 SHR_BITSET(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_NOT_IN_EM); 3326 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3327 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 17, 68, 2); 3328 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyColor, qual_flags); 3329 3330 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3331 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 17, 70, 2); 3332 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIntCongestionNotification, qual_flags); 3333 SHR_BITCLR(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_NOT_IN_EM); 3334 3335 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3336 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 18, 72, 1); 3337 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpFragNonOrFirst, qual_flags); 3338 3339 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3340 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 18, 73, 1); 3341 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL4Ports, qual_flags); 3342 3343 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3344 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 18, 74, 1); 3345 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIpInfo, qual_flags); 3346 3347 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3348 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 18, 75, 1); 3349 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyIcmpError, qual_flags); 3350 3351 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3352 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 19, 76, 2); 3353 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL2Format, qual_flags); 3354 3355 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3356 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 20, 81, 1); 3357 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL3Routable, qual_flags); 3358 3359 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3360 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 20, 80, 1); 3361 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMyStationHit, qual_flags); 3362 3363 3364 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3365 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 21, 84, 2); 3366 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInnerTpid, qual_flags); 3367 3368 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3369 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 21, 86, 2); 3370 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyOuterTpid, qual_flags); 3371 3372 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3373 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 22, 88, 4); 3374 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTunnelType, qual_flags); 3375 3376 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3377 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 22, 88, 4); 3378 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyLoopbackType, qual_flags); 3379 3380 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3381 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 22, 91, 1); 3382 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyLoopback, qual_flags); 3383 3384 3385 3386 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3387 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 24, 96, 2); 3388 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyVlanFormat, qual_flags); 3389 3390 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3391 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_L1E4, 24, 98, 2); 3392 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyTranslatedVlanFormat, qual_flags); 3393 3394 /********************** Post Mux Qualifiers. **********************/ 3395 /******************************************************************/ 3396 SHR_BITSET(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_PMUX); 3397 3398 /* ltid is assigned fixed offset to avoid 3399 * issues with matching on ltid with value 0 3400 */ 3401 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3402 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_LTID, 3403 0, 124, 4); 3404 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, 3405 _bcmFieldQualifyPreLogicalTableId, qual_flags); 3406 3407 /* 3408 * Exact-Match doesn't support Post-Mux qualifiers. 3409 * Set the flag NOT_IN_EM to avoid initilization. 3410 */ 3411 SHR_BITSET(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_NOT_IN_EM); 3412 3413 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3414 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_DROP, 0, 159, 1); 3415 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDrop, qual_flags); 3416 3417 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3418 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3419 (0, BCMI_KEYGEN_EXT_SECTION_EM_FIRST_LOOKUP_HIT, 1, 158, 1); 3420 BCMI_KEYGEN_QUAL_CFG_INSERT 3421 (unit, db, _bcmFieldQualifyExactMatchHitStatusLookup0, qual_flags); 3422 3423 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3424 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3425 (0, BCMI_KEYGEN_EXT_SECTION_EM_FIRST_LOOKUP_CLASSID_BITS_0_3, 2, 84, 4); 3426 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3427 (1, BCMI_KEYGEN_EXT_SECTION_EM_FIRST_LOOKUP_CLASSID_BITS_4_7, 3, 88, 4); 3428 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(2, 3429 BCMI_KEYGEN_EXT_SECTION_EM_FIRST_LOOKUP_CLASSID_BITS_8_11, 4, 91, 4); 3430 BCMI_KEYGEN_QUAL_CFG_INSERT 3431 (unit, db, _bcmFieldQualifyExactMatchActionClassIdLookup0, qual_flags); 3432 3433 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3434 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3435 (0, BCMI_KEYGEN_EXT_SECTION_INT_PRI, 13, 116, 4); 3436 BCMI_KEYGEN_QUAL_CFG_INSERT 3437 (unit, db, bcmFieldQualifyIntPriority, qual_flags); 3438 3439 /* Class Id C */ 3440 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3441 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3442 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 52, 16); 3443 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 0); 3444 BCMI_KEYGEN_QUAL_CFG_INSERT 3445 (unit, db, bcmFieldQualifySrcClassL2, qual_flags); 3446 3447 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3448 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3449 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 52, 16); 3450 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 1); 3451 BCMI_KEYGEN_QUAL_CFG_INSERT 3452 (unit, db, bcmFieldQualifyDstClassL2, qual_flags); 3453 3454 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3455 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3456 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 52, 16); 3457 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 2); 3458 BCMI_KEYGEN_QUAL_CFG_INSERT 3459 (unit, db, bcmFieldQualifySrcClassL3, qual_flags); 3460 3461 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3462 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3463 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 52, 16); 3464 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 3); 3465 BCMI_KEYGEN_QUAL_CFG_INSERT 3466 (unit, db, bcmFieldQualifyDstClassL3, qual_flags); 3467 3468 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3469 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3470 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 60, 8); 3471 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 5); 3472 BCMI_KEYGEN_QUAL_CFG_INSERT 3473 (unit, db, bcmFieldQualifySrcClassL2, qual_flags); 3474 3475 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3476 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3477 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 52, 8); 3478 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 5); 3479 BCMI_KEYGEN_QUAL_CFG_INSERT 3480 (unit, db, bcmFieldQualifyDstClassL2, qual_flags); 3481 3482 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3483 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3484 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 60, 8); 3485 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 6); 3486 BCMI_KEYGEN_QUAL_CFG_INSERT 3487 (unit, db, bcmFieldQualifySrcClassL3, qual_flags); 3488 3489 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3490 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3491 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_C, 10, 52, 8); 3492 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_C, 6); 3493 BCMI_KEYGEN_QUAL_CFG_INSERT 3494 (unit, db, bcmFieldQualifyDstClassL3, qual_flags); 3495 3496 /* Class Id D */ 3497 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3498 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3499 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 68, 16); 3500 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 0); 3501 BCMI_KEYGEN_QUAL_CFG_INSERT 3502 (unit, db, bcmFieldQualifySrcClassL2, qual_flags); 3503 3504 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3505 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3506 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 68, 16); 3507 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 1); 3508 BCMI_KEYGEN_QUAL_CFG_INSERT 3509 (unit, db, bcmFieldQualifyDstClassL2, qual_flags); 3510 3511 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3512 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3513 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 68, 16); 3514 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 2); 3515 BCMI_KEYGEN_QUAL_CFG_INSERT 3516 (unit, db, bcmFieldQualifySrcClassL3, qual_flags); 3517 3518 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3519 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3520 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 68, 16); 3521 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 3); 3522 BCMI_KEYGEN_QUAL_CFG_INSERT 3523 (unit, db, bcmFieldQualifyDstClassL3, qual_flags); 3524 3525 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3526 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3527 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 76, 8); 3528 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 5); 3529 BCMI_KEYGEN_QUAL_CFG_INSERT 3530 (unit, db, bcmFieldQualifySrcClassL2, qual_flags); 3531 3532 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3533 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3534 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 68, 8); 3535 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 5); 3536 BCMI_KEYGEN_QUAL_CFG_INSERT 3537 (unit, db, bcmFieldQualifyDstClassL2, qual_flags); 3538 3539 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3540 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3541 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 76, 8); 3542 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 6); 3543 BCMI_KEYGEN_QUAL_CFG_INSERT 3544 (unit, db, bcmFieldQualifySrcClassL3, qual_flags); 3545 3546 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3547 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3548 (0, BCMI_KEYGEN_EXT_SECTION_CLASS_ID_D, 11, 68, 8); 3549 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_CLASSID_D, 6); 3550 BCMI_KEYGEN_QUAL_CFG_INSERT 3551 (unit, db, bcmFieldQualifyDstClassL3, qual_flags); 3552 3553 /* Destination Container 0 */ 3554 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3555 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3556 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 9); 3557 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 1); 3558 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstPort, qual_flags); 3559 3560 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3561 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3562 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 9); 3563 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 1); 3564 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyDstTrunk, qual_flags); 3565 3566 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3567 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3568 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 16); 3569 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3570 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 110, 1); 3571 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 2); 3572 BCMI_KEYGEN_QUAL_CFG_INSERT 3573 (unit, db, bcmFieldQualifyDstMultipath, qual_flags); 3574 3575 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3576 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3577 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 16); 3578 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3579 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 110, 1); 3580 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 2); 3581 BCMI_KEYGEN_QUAL_CFG_INSERT 3582 (unit, db, bcmFieldQualifyDstL3EgressNextHops, qual_flags); 3583 3584 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3585 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3586 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 16); 3587 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3588 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 110, 1); 3589 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 2); 3590 BCMI_KEYGEN_QUAL_CFG_INSERT 3591 (unit, db, bcmFieldQualifyDstL3Egress, qual_flags); 3592 3593 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3594 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3595 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 16); 3596 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3597 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 110, 1); 3598 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 4); 3599 BCMI_KEYGEN_QUAL_CFG_INSERT 3600 (unit, db, bcmFieldQualifyDstL3MulticastGroup, qual_flags); 3601 3602 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3603 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3604 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 20, 16); 3605 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3606 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_A, 7, 110, 1); 3607 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_A, 5); 3608 BCMI_KEYGEN_QUAL_CFG_INSERT 3609 (unit, db, bcmFieldQualifyDstL2MulticastGroup, qual_flags); 3610 3611 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3612 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3613 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 9); 3614 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 1); 3615 BCMI_KEYGEN_QUAL_CFG_INSERT 3616 (unit, db, bcmFieldQualifyDstPort, qual_flags); 3617 3618 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3619 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3620 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 9); 3621 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 1); 3622 BCMI_KEYGEN_QUAL_CFG_INSERT 3623 (unit, db, bcmFieldQualifyDstTrunk, qual_flags); 3624 3625 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3626 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3627 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 16); 3628 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3629 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 111, 1); 3630 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 2); 3631 BCMI_KEYGEN_QUAL_CFG_INSERT 3632 (unit, db, bcmFieldQualifyDstMultipath, qual_flags); 3633 3634 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3635 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3636 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 16); 3637 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3638 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 111, 1); 3639 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 2); 3640 BCMI_KEYGEN_QUAL_CFG_INSERT 3641 (unit, db, bcmFieldQualifyDstL3EgressNextHops, qual_flags); 3642 3643 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3644 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3645 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 16); 3646 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3647 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 111, 1); 3648 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 2); 3649 BCMI_KEYGEN_QUAL_CFG_INSERT 3650 (unit, db, bcmFieldQualifyDstL3Egress, qual_flags); 3651 3652 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3653 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3654 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 16); 3655 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3656 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 111, 1); 3657 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 4); 3658 BCMI_KEYGEN_QUAL_CFG_INSERT 3659 (unit, db, bcmFieldQualifyDstL3MulticastGroup, qual_flags); 3660 3661 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3662 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3663 (0, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 36, 16); 3664 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3665 (1, BCMI_KEYGEN_EXT_SECTION_DST_CONTAINER_B, 8, 111, 1); 3666 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_DST_B, 5); 3667 BCMI_KEYGEN_QUAL_CFG_INSERT 3668 (unit, db, bcmFieldQualifyDstL2MulticastGroup, qual_flags); 3669 3670 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3671 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3672 (0, BCMI_KEYGEN_EXT_SECTION_MH_OPCODE, 14, 120, 3); 3673 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyMHOpcode, qual_flags); 3674 3675 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3676 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3677 (0, BCMI_KEYGEN_EXT_SECTION_PKT_RESOLUTION, 9, 104, 6); 3678 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyPacketRes, qual_flags); 3679 3680 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3681 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3682 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_0_3, 5, 98, 1); 3683 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL2SrcHit, qual_flags); 3684 3685 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3686 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3687 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_0_3, 5, 99, 1); 3688 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyL2DestHit, qual_flags); 3689 3690 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3691 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3692 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_4_7, 6, 102, 1); 3693 BCMI_KEYGEN_QUAL_CFG_INSERT 3694 (unit, db, bcmFieldQualifyL3SrcHostHit, qual_flags); 3695 3696 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3697 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3698 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_4_7, 6, 102, 1); 3699 BCMI_KEYGEN_QUAL_CFG_INSERT 3700 (unit, db, bcmFieldQualifyIpmcStarGroupHit, qual_flags); 3701 3702 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3703 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3704 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_4_7, 6, 101, 1); 3705 BCMI_KEYGEN_QUAL_CFG_INSERT 3706 (unit, db, bcmFieldQualifyL3DestHostHit, qual_flags); 3707 3708 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3709 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3710 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_4_7, 6, 103, 1); 3711 BCMI_KEYGEN_QUAL_CFG_INSERT 3712 (unit, db, bcmFieldQualifyL3DestRouteHit, qual_flags); 3713 3714 #if 0 3715 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3716 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3717 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_4_7, 6, 100, 1); 3718 BCMI_KEYGEN_QUAL_CFG_INSERT 3719 (unit, db, bcmFieldQualifyL2StationMove, qual_flags); 3720 #endif 3721 3722 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3723 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3724 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_0_3, 5, 97, 1); 3725 BCMI_KEYGEN_QUAL_CFG_INSERT 3726 (unit, db, bcmFieldQualifyL2CacheHit, qual_flags); 3727 3728 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3729 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD 3730 (0, BCMI_KEYGEN_EXT_SECTION_LOOKUP_STATUS_VECTOR_BITS_0_3, 5, 96, 1); 3731 BCMI_KEYGEN_QUAL_CFG_INSERT 3732 (unit, db, bcmFieldQualifyL2CacheHit, qual_flags); 3733 3734 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3735 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_IPBM, 0, 0, 20); 3736 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_IPBM_PRESENT, 0); 3737 BCMI_KEYGEN_QUAL_CFG_INSERT(unit, db, bcmFieldQualifyInPorts, qual_flags); 3738 3739 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3740 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_IPBM, 0, 0, 20); 3741 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_IPBM_PRESENT, 1); 3742 BCMI_KEYGEN_QUAL_CFG_INSERT 3743 (unit, db, bcmFieldQualifySystemPortBitmap, qual_flags); 3744 3745 BCMI_KEYGEN_QUAL_CFG_INIT(unit); 3746 BCMI_KEYGEN_QUAL_CFG_OFFSET_ADD(0, BCMI_KEYGEN_EXT_SECTION_IPBM, 0, 0, 20); 3747 BCMI_KEYGEN_QUAL_CFG_PRI_CTRL_SEL_ADD(BCMI_KEYGEN_EXT_CTRL_SEL_IPBM_PRESENT, 3); 3748 BCMI_KEYGEN_QUAL_CFG_INSERT 3749 (unit, db, bcmFieldQualifyDevicePortBitmap, qual_flags); 3750 3751 SHR_BITCLR(qual_flags.w, BCMI_KEYGEN_QUAL_FLAGS_NOT_IN_EM); 3752 /********************** END Of Post Mux Qualifiers. **********************/ 3753 3754 3755 3756 exit: 3757 BCMI_KEYGEN_FUNC_EXIT(); 3758 } 3759 3760 int 3761 _bcm_field_th3_keygen_profile1_entry_pack(int unit, _field_stage_t *stage_fc, 3762 _field_group_t *fg, int part, soc_mem_t mem, 3763 ifp_key_gen_program_profile_entry_t *prof1_entry) 3764 { 3765 int idx; /* Iterator index. */ 3766 static const soc_field_t l1_32_sel[] = /* 32 bit extractors. */ 3767 { 3768 L1_C_E32_SEL_0f, 3769 L1_C_E32_SEL_1f, 3770 L1_B_E32_SEL_0f, 3771 L1_B_E32_SEL_1f 3772 }; 3773 static const soc_field_t l1_16_sel[] = /* 16 bit extractors. */ 3774 { 3775 L1_C_E16_SEL_0f, 3776 L1_C_E16_SEL_1f, 3777 L1_C_E16_SEL_2f, 3778 L1_C_E16_SEL_3f, 3779 L1_C_E16_SEL_4f, 3780 L1_B_E16_SEL_0f, 3781 L1_B_E16_SEL_1f, 3782 L1_B_E16_SEL_2f, 3783 L1_B_E16_SEL_3f, 3784 L1_B_E16_SEL_4f, 3785 }; 3786 static const soc_field_t l1_8_sel[] = /* 8 bit extractors. */ 3787 { 3788 L1_A_E8_SEL_0f, 3789 L1_A_E8_SEL_1f, 3790 L1_A_E8_SEL_2f, 3791 L1_A_E8_SEL_3f, 3792 L1_A_E8_SEL_4f, 3793 L1_A_E8_SEL_5f, 3794 }; 3795 static const soc_field_t l1_4_sel[] = /* 4 bit extractors. */ 3796 { 3797 L1_A_E4_SEL_0f, 3798 L1_A_E4_SEL_1f, 3799 L1_A_E4_SEL_2f, 3800 L1_A_E4_SEL_3f, 3801 L1_A_E4_SEL_4f, 3802 L1_A_E4_SEL_5f, 3803 L1_A_E4_SEL_6f, 3804 L1_A_E4_SEL_7f, 3805 L1_A_E4_SEL_8f, 3806 L1_A_E4_SEL_9f 3807 }; 3808 3809 static const soc_field_t l2_16_sel[] = /* 16 bit extractors. */ 3810 { 3811 L2_E16_SEL_0f, 3812 L2_E16_SEL_1f, 3813 L2_E16_SEL_2f, 3814 L2_E16_SEL_3f, 3815 L2_E16_SEL_4f, 3816 }; 3817 static const soc_field_t l2_4_sel[] = /* 4 bit extractors. */ 3818 { 3819 L2_E4_SEL_0f, 3820 L2_E4_SEL_1f, 3821 L2_E4_SEL_2f, 3822 L2_E4_SEL_3f, 3823 L2_E4_SEL_4f, 3824 L2_E4_SEL_5f, 3825 L2_E4_SEL_6f, 3826 L2_E4_SEL_7f, 3827 L2_E4_SEL_8f, 3828 L2_E4_SEL_9f, 3829 L2_E4_SEL_10f, 3830 L2_E4_SEL_11f, 3831 L2_E4_SEL_12f, 3832 L2_E4_SEL_13f, 3833 L2_E4_SEL_14f, 3834 L2_E4_SEL_15f, 3835 }; 3836 static const soc_field_t l2_2_sel[] = /* 2 bit extractors. */ 3837 { 3838 L2_E2_SEL_0f, 3839 L2_E2_SEL_1f, 3840 L2_E2_SEL_2f, 3841 L2_E2_SEL_3f, 3842 L2_E2_SEL_4f, 3843 L2_E2_SEL_5f, 3844 L2_E2_SEL_6f 3845 }; 3846 static const soc_field_t l2_1_sel[] = /* 1 bit extractors. */ 3847 { 3848 L2_E1_SEL_0f, 3849 L2_E1_SEL_1f, 3850 }; 3851 3852 /* Input parameters check. */ 3853 if ((NULL == stage_fc) || (NULL == fg) || (NULL == prof1_entry)) { 3854 return (BCM_E_PARAM); 3855 } 3856 3857 /* Set 32bit extractor selcode values. */ 3858 for (idx = 0; idx < 4; idx++) { 3859 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e32_sel[idx]) { 3860 soc_mem_field32_set(unit, mem, prof1_entry, l1_32_sel[idx], 3861 fg->ext_codes[part].l1_e32_sel[idx]); 3862 } 3863 } 3864 3865 /* Set 16bit extractor selcode values. */ 3866 for (idx = 0; idx < 10; idx++) { 3867 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e16_sel[idx]) { 3868 soc_mem_field32_set(unit, mem, prof1_entry, l1_16_sel[idx], 3869 fg->ext_codes[part].l1_e16_sel[idx]); 3870 } 3871 } 3872 3873 /* Set 8bit extractor selcode values. */ 3874 for (idx = 0; idx < 6; idx++) { 3875 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e8_sel[idx]) { 3876 soc_mem_field32_set(unit, mem, prof1_entry, l1_8_sel[idx], 3877 fg->ext_codes[part].l1_e8_sel[idx]); 3878 } 3879 } 3880 3881 /* Set 4bit extractor selcode values. */ 3882 for (idx = 0; idx < 10; idx++) { 3883 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e4_sel[idx]) { 3884 soc_mem_field32_set(unit, mem, prof1_entry, l1_4_sel[idx], 3885 fg->ext_codes[part].l1_e4_sel[idx]); 3886 } 3887 } 3888 3889 /* Set 16bit extractor selcode values. */ 3890 for (idx = 0; idx < 5; idx++) { 3891 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e16_sel[idx]) { 3892 soc_mem_field32_set(unit, mem, prof1_entry, l2_16_sel[idx], 3893 fg->ext_codes[part].l2_e16_sel[idx]); 3894 } 3895 } 3896 3897 /* Set 4bit extractor selcode values. */ 3898 for (idx = 0; idx < 16; idx++) { 3899 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e4_sel[idx]) { 3900 soc_mem_field32_set(unit, mem, prof1_entry, l2_4_sel[idx], 3901 fg->ext_codes[part].l2_e4_sel[idx]); 3902 } 3903 } 3904 3905 /* Set 2bit extractor selcode values. */ 3906 for (idx = 0; idx < 7; idx++) { 3907 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e2_sel[idx]) { 3908 soc_mem_field32_set(unit, mem, prof1_entry, l2_2_sel[idx], 3909 fg->ext_codes[part].l2_e2_sel[idx]); 3910 } 3911 } 3912 3913 /* Set 1bit extractor selcode values. */ 3914 for (idx = 0; idx < 2; idx++) { 3915 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e1_sel[idx]) { 3916 soc_mem_field32_set(unit, mem, prof1_entry, l2_1_sel[idx], 3917 fg->ext_codes[part].l2_e1_sel[idx]); 3918 } 3919 } 3920 3921 return (BCM_E_NONE); 3922 } 3923 3924 int 3925 _bcm_field_th3_keygen_em_profile_entry_pack(int unit, _field_stage_t *stage_fc, 3926 _field_group_t *fg, int part, soc_mem_t mem, 3927 exact_match_key_gen_program_profile_entry_t *prof_entry) 3928 { 3929 int idx; /* Iterator index. */ 3930 static const soc_field_t l1_32_sel[] = /* 32 bit extractors. */ 3931 { 3932 L1_C_E32_SEL_0f, 3933 L1_C_E32_SEL_1f, 3934 L1_B_E32_SEL_0f, 3935 L1_B_E32_SEL_1f 3936 }; 3937 static const soc_field_t l1_16_sel[] = /* 16 bit extractors. */ 3938 { 3939 L1_C_E16_SEL_0f, 3940 L1_C_E16_SEL_1f, 3941 L1_C_E16_SEL_2f, 3942 L1_C_E16_SEL_3f, 3943 L1_C_E16_SEL_4f, 3944 L1_B_E16_SEL_0f, 3945 L1_B_E16_SEL_1f, 3946 L1_B_E16_SEL_2f, 3947 L1_B_E16_SEL_3f, 3948 L1_B_E16_SEL_4f, 3949 }; 3950 static const soc_field_t l1_8_sel[] = /* 8 bit extractors. */ 3951 { 3952 L1_A_E8_SEL_0f, 3953 L1_A_E8_SEL_1f, 3954 L1_A_E8_SEL_2f, 3955 L1_A_E8_SEL_3f, 3956 L1_A_E8_SEL_4f, 3957 L1_A_E8_SEL_5f, 3958 }; 3959 static const soc_field_t l1_4_sel[] = /* 4 bit extractors. */ 3960 { 3961 L1_A_E4_SEL_0f, 3962 L1_A_E4_SEL_1f, 3963 L1_A_E4_SEL_2f, 3964 L1_A_E4_SEL_3f, 3965 L1_A_E4_SEL_4f, 3966 L1_A_E4_SEL_5f, 3967 L1_A_E4_SEL_6f, 3968 L1_A_E4_SEL_7f, 3969 L1_A_E4_SEL_8f, 3970 L1_A_E4_SEL_9f 3971 }; 3972 3973 static const soc_field_t l2_16_sel[] = /* 16 bit extractors. */ 3974 { 3975 L2_E16_SEL_0f, 3976 L2_E16_SEL_1f, 3977 L2_E16_SEL_2f, 3978 L2_E16_SEL_3f, 3979 L2_E16_SEL_4f, 3980 }; 3981 static const soc_field_t l2_4_sel[] = /* 4 bit extractors. */ 3982 { 3983 L2_E4_SEL_0f, 3984 L2_E4_SEL_1f, 3985 L2_E4_SEL_2f, 3986 L2_E4_SEL_3f, 3987 L2_E4_SEL_4f, 3988 L2_E4_SEL_5f, 3989 L2_E4_SEL_6f, 3990 L2_E4_SEL_7f, 3991 L2_E4_SEL_8f, 3992 L2_E4_SEL_9f, 3993 L2_E4_SEL_10f, 3994 L2_E4_SEL_11f, 3995 L2_E4_SEL_12f, 3996 L2_E4_SEL_13f, 3997 L2_E4_SEL_14f, 3998 L2_E4_SEL_15f, 3999 }; 4000 static const soc_field_t l2_2_sel[] = /* 2 bit extractors. */ 4001 { 4002 L2_E2_SEL_0f, 4003 L2_E2_SEL_1f, 4004 L2_E2_SEL_2f, 4005 L2_E2_SEL_3f, 4006 L2_E2_SEL_4f, 4007 L2_E2_SEL_5f, 4008 L2_E2_SEL_6f 4009 }; 4010 4011 static const soc_field_t l2_1_sel[] = /* 1 bit extractors. */ 4012 { 4013 L2_E1_SEL_0f, 4014 L2_E1_SEL_1f, 4015 }; 4016 4017 /* Input parameters check. */ 4018 if ((NULL == stage_fc) || (NULL == fg) || (NULL == prof_entry)) { 4019 return (BCM_E_PARAM); 4020 } 4021 4022 /* Set 32bit extractor selcode values. */ 4023 for (idx = 0; idx < 4; idx++) { 4024 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e32_sel[idx]) { 4025 soc_mem_field32_set(unit, mem, prof_entry, l1_32_sel[idx], 4026 fg->ext_codes[part].l1_e32_sel[idx]); 4027 } 4028 } 4029 4030 /* Set 16bit extractor selcode values. */ 4031 for (idx = 0; idx < 10; idx++) { 4032 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e16_sel[idx]) { 4033 soc_mem_field32_set(unit, mem, prof_entry, l1_16_sel[idx], 4034 fg->ext_codes[part].l1_e16_sel[idx]); 4035 } 4036 } 4037 4038 /* Set 8bit extractor selcode values. */ 4039 for (idx = 0; idx < 6; idx++) { 4040 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e8_sel[idx]) { 4041 soc_mem_field32_set(unit, mem, prof_entry, l1_8_sel[idx], 4042 fg->ext_codes[part].l1_e8_sel[idx]); 4043 } 4044 } 4045 4046 /* Set 4bit extractor selcode values. */ 4047 for (idx = 0; idx < 10; idx++) { 4048 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l1_e4_sel[idx]) { 4049 soc_mem_field32_set(unit, mem, prof_entry, l1_4_sel[idx], 4050 fg->ext_codes[part].l1_e4_sel[idx]); 4051 } 4052 } 4053 4054 /* Set 16bit extractor selcode values. */ 4055 for (idx = 0; idx < 5; idx++) { 4056 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e16_sel[idx]) { 4057 soc_mem_field32_set(unit, mem, prof_entry, l2_16_sel[idx], 4058 fg->ext_codes[part].l2_e16_sel[idx]); 4059 } 4060 } 4061 4062 /* Set 4bit extractor selcode values. */ 4063 for (idx = 0; idx < 16; idx++) { 4064 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e4_sel[idx]) { 4065 soc_mem_field32_set(unit, mem, prof_entry, l2_4_sel[idx], 4066 fg->ext_codes[part].l2_e4_sel[idx]); 4067 } 4068 } 4069 4070 /* Set 2bit extractor selcode values. */ 4071 for (idx = 0; idx < 5; idx++) { 4072 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e2_sel[idx]) { 4073 soc_mem_field32_set(unit, mem, prof_entry, l2_2_sel[idx], 4074 fg->ext_codes[part].l2_e2_sel[idx]); 4075 } 4076 } 4077 4078 /* Set 1bit extractor selcode values. */ 4079 for (idx = 0; idx < 2; idx++) { 4080 if (_FP_EXT_SELCODE_DONT_CARE != fg->ext_codes[part].l2_e1_sel[idx]) { 4081 soc_mem_field32_set(unit, mem, prof_entry, l2_1_sel[idx], 4082 fg->ext_codes[part].l2_e1_sel[idx]); 4083 } 4084 } 4085 4086 return (BCM_E_NONE); 4087 } 4088 4089 /* 4090 * Function: 4091 * _bcm_field_th_udf_chunks_to_int_qset 4092 * Purpose: 4093 * Sets internal data qualifiers corrspeonding to the 4094 * offset chunks used by the UDF. 4095 * Parameters: 4096 * unit - (IN) Unit number. 4097 * udf_chunks_bmap - (IN) UDF offsets chunks map 4098 * qset - (OUT) Qualifier set 4099 * Returns: 4100 * BCM_E_NONE 4101 * Notes: 4102 */ 4103 int 4104 _bcm_field_th3_udf_chunks_to_int_qset(int unit, uint32 udf_chunks_bmap, 4105 bcm_field_qset_t *qset) 4106 { 4107 int idx, max_chunks = 0; 4108 4109 max_chunks = BCMI_XGS4_UDF_CTRL_MAX_UDF_CHUNKS(unit); 4110 4111 4112 for (idx = 0; idx < max_chunks; idx++) { 4113 if (udf_chunks_bmap & (1 << idx)) { 4114 BCM_FIELD_QSET_ADD_INTERNAL(*qset, _bcm_th3_udf_chunk_to_qual_mapping[idx]); 4115 } 4116 } 4117 return BCM_E_NONE; 4118 } 4119 4120 /* 4121 * Function: 4122 * _bcm_field_th3_qualify_udf 4123 * Purpose: 4124 * Add UDF data that the packet must match to trigger qualifier. 4125 * Parameters: 4126 * unit - (IN) Unit number. 4127 * eid - (IN) Field Entry. 4128 * udf_id - (IN) UDF ID. 4129 * length - (IN) Number of bytes to match in field entry. 4130 * data - (IN) Input data to qualify the entry. 4131 * mask - (IN) Input mask to qualify the entry. 4132 * Returns: 4133 * BCM_E_xxx 4134 * Notes: 4135 */ 4136 int 4137 _bcm_field_th3_qualify_udf( 4138 int unit, 4139 bcm_field_entry_t eid, 4140 bcm_udf_id_t udf_id, 4141 int length, 4142 uint8 *data, 4143 uint8 *mask) 4144 { 4145 int rv; 4146 int gran; 4147 int chunk; 4148 int bytes; 4149 int len = 0; 4150 int bits = 8; 4151 uint32 q_data, q_mask; 4152 uint32 chunk_bmap = 0; 4153 _bcm_field_internal_qualify_t qual; 4154 bcmi_xgs4_udf_offset_info_t *offset_info = NULL; 4155 int byte_offset; /* Byte offset in the word. */ 4156 4157 /* Get UDF info. */ 4158 rv = bcmi_xgs4_udf_offset_node_get(unit, udf_id, &offset_info); 4159 if (BCM_FAILURE(rv)) { 4160 return rv; 4161 } 4162 /* If provided entry data length is greater than UDF width */ 4163 if ((length > offset_info->width) || (length <= 0)) { 4164 return (BCM_E_PARAM); 4165 } 4166 4167 /* Chunk Granularity */ 4168 gran = BCMI_XGS4_UDF_CTRL_OFFSET_GRAN(unit); 4169 4170 chunk_bmap = offset_info->hw_bmap; 4171 byte_offset = offset_info->byte_offset; 4172 4173 /* Update udf_chuks bmap with qset */ 4174 for (chunk = 0; chunk < BCMI_XGS4_UDF_CTRL_MAX_UDF_CHUNKS(unit); chunk++) { 4175 if(chunk_bmap & (1 << chunk)) { 4176 qual = _bcm_th3_udf_chunk_to_qual_mapping[chunk]; 4177 q_data = q_mask = 0; 4178 for (bytes = byte_offset; bytes < gran; bytes++) { 4179 if (len >= length) { 4180 break; 4181 } 4182 q_data |= data[len] << ((gran - 1 - bytes) * bits); 4183 q_mask |= mask[len] << ((gran - 1 - bytes) * bits); 4184 len++; 4185 } 4186 byte_offset = 0; 4187 rv = _field_qualify32(unit, eid, qual, q_data, q_mask); 4188 BCM_IF_ERROR_RETURN(rv); 4189 } 4190 } 4191 return BCM_E_NONE; 4192 } 4193 4194 int 4195 _bcm_field_th3_qualify_udf_get( 4196 int unit, 4197 bcm_field_entry_t eid, 4198 bcm_udf_id_t udf_id, 4199 int max_length, 4200 uint8 *data, 4201 uint8 *mask, 4202 int *actual_length) 4203 { 4204 int rv; 4205 int gran; 4206 int chunk; 4207 int bytes; 4208 int len = 0; 4209 int bits = 8; 4210 uint32 q_data, q_mask; 4211 uint32 chunk_bmap = 0; 4212 _bcm_field_internal_qualify_t qual; 4213 bcmi_xgs4_udf_offset_info_t *offset_info = NULL; 4214 int byte_offset; /* Byte offset in the word. */ 4215 4216 /* Input parameters check. */ 4217 if ((NULL == data) || (NULL == mask) || 4218 (NULL == actual_length) || (max_length == 0)) { 4219 return (BCM_E_PARAM); 4220 } 4221 4222 /* Get UDF info. */ 4223 rv = bcmi_xgs4_udf_offset_node_get(unit, udf_id, &offset_info); 4224 if (BCM_FAILURE(rv)) { 4225 return rv; 4226 } 4227 4228 /* 4229 * If provided entry data length is less than data length used 4230 * to create qualifier then return error 4231 */ 4232 if (max_length < offset_info->width) { 4233 return (BCM_E_PARAM); 4234 } 4235 4236 4237 /* Chunk Granularity */ 4238 gran = BCMI_XGS4_UDF_CTRL_OFFSET_GRAN(unit); 4239 4240 chunk_bmap = offset_info->hw_bmap; 4241 byte_offset = offset_info->byte_offset; 4242 4243 /* Update udf_chuks bmap with qset */ 4244 for (chunk = 0; chunk < BCMI_XGS4_UDF_CTRL_MAX_UDF_CHUNKS(unit); chunk++) { 4245 if(chunk_bmap & (1 << chunk)) { 4246 qual = _bcm_th3_udf_chunk_to_qual_mapping[chunk]; 4247 q_data = q_mask = 0; 4248 rv = _bcm_field_entry_qualifier_uint32_get(unit, eid, qual, 4249 &q_data, &q_mask); 4250 BCM_IF_ERROR_RETURN(rv); 4251 4252 for (bytes = byte_offset; bytes < gran; bytes++) { 4253 if (len >= max_length) { 4254 break; 4255 } 4256 4257 data[len] = q_data >> ((gran - 1 - bytes) * bits); 4258 mask[len] = q_mask >> ((gran - 1 - bytes) * bits); 4259 len++; 4260 } 4261 byte_offset = 0; 4262 } 4263 } 4264 *actual_length = len; 4265 return BCM_E_NONE; 4266 } 4267 4268 /* 4269 * Function: _bcm_field_th3_ForwardingType_set 4270 * 4271 * Purpose: 4272 * Add qualification data to an entry for IP Type. 4273 * 4274 * Parameters: 4275 * unit - (IN) BCM unit number. 4276 * stage_id - (IN) Stage ID. 4277 * entry - (IN) Entry ID. 4278 * type - (IN) Forwarding type. 4279 * data - (OUT) Data. 4280 * mask - (OUT) Mask. 4281 * 4282 * Returns: 4283 * BCM_E_XXX 4284 */ 4285 int 4286 _bcm_field_th3_forwardingType_set(int unit, _field_stage_id_t stage_id, 4287 bcm_field_entry_t entry, 4288 bcm_field_ForwardingType_t type, 4289 uint32 *data, uint32 *mask) 4290 { 4291 4292 if (NULL == data || NULL == mask) { 4293 return BCM_E_PARAM; 4294 } 4295 4296 switch (stage_id) { 4297 case _BCM_FIELD_STAGE_INGRESS: 4298 case _BCM_FIELD_STAGE_EXACTMATCH: 4299 switch (type) { 4300 case bcmFieldForwardingTypeAny: 4301 *data = 0; 4302 *mask = 0; 4303 break; 4304 case bcmFieldForwardingTypeL2: 4305 *data = 0; 4306 *mask = 0xE; 4307 break; 4308 case bcmFieldForwardingTypeL2Independent: 4309 *data = 0; 4310 *mask = 0xF; 4311 break; 4312 case bcmFieldForwardingTypeL2Shared: 4313 *data = 1; 4314 *mask = 0xF; 4315 break; 4316 case bcmFieldForwardingTypeL3Direct: 4317 *data = 4; 4318 *mask = 0xF; 4319 break; 4320 case bcmFieldForwardingTypeL3: 4321 *data = 5; 4322 *mask = 0xF; 4323 break; 4324 case bcmFieldForwardingTypeMpls: 4325 *data = 7; 4326 *mask = 0xF; 4327 break; 4328 default: 4329 return (BCM_E_PARAM); 4330 } 4331 break; 4332 default: 4333 return BCM_E_INTERNAL; 4334 } 4335 4336 return BCM_E_NONE; 4337 } 4338 4339 /* 4340 * Function: 4341 * _bcm_field_th3_forwardingType_get 4342 * Purpose: 4343 * Get match criteria for bcmFieildQualifyForwardingType 4344 * qualifier from the field entry. 4345 * Parameters: 4346 * unit - (IN) Unit number. 4347 * stage_id - (IN) Stage ID. 4348 * entry - (IN) BCM field entry id. 4349 * type - (OUT) Qualifier match forwarding type. 4350 * Returns: 4351 * BCM_E_XXX 4352 * Notes: 4353 */ 4354 int 4355 _bcm_field_th3_forwardingType_get(int unit, _field_stage_id_t stage_id, 4356 bcm_field_entry_t entry, 4357 uint32 data, uint32 mask, 4358 bcm_field_ForwardingType_t *type) 4359 { 4360 if (NULL == type) { 4361 return BCM_E_PARAM; 4362 } 4363 4364 switch (stage_id) { 4365 case _BCM_FIELD_STAGE_INGRESS: 4366 case _BCM_FIELD_STAGE_EXACTMATCH: 4367 if ((0 == data) && (mask == 0)) { 4368 *type = bcmFieldForwardingTypeAny; 4369 } else if ((0 == data) && (mask == 0xE)) { 4370 *type = bcmFieldForwardingTypeL2; 4371 } else if ((0 == data) && (mask == 0xF)) { 4372 *type = bcmFieldForwardingTypeL2Independent; 4373 } else if ((1 == data) && (mask == 0xF)) { 4374 *type = bcmFieldForwardingTypeL2Shared; 4375 } else if ((4 == data) && (mask == 0xF)) { 4376 *type = bcmFieldForwardingTypeL3Direct; 4377 } else if ((5 == data) && (mask == 0xF)) { 4378 *type = bcmFieldForwardingTypeL3; 4379 } else if ((7 == data) && (mask == 0xF)) { 4380 *type = bcmFieldForwardingTypeMpls; 4381 } else { 4382 return (BCM_E_INTERNAL); 4383 } 4384 break; 4385 default: 4386 return BCM_E_INTERNAL; 4387 } 4388 4389 return BCM_E_NONE; 4390 } 4391 4392 4393 /* 4394 * Function: 4395 * _bcm_field_th3_qualify_ip_type 4396 * Purpose: 4397 * Install ip type qualifier into TCAM 4398 * Parameters: 4399 * unit - (IN) BCM device number 4400 * entry - (IN) Field entry index 4401 * type - (IN) Ip Type. 4402 * qual - (IN) Qualifier(IpType/InnerIpType) 4403 * Returns: 4404 * BCM_E_XXX 4405 * Notes: 4406 */ 4407 4408 4409 int 4410 _bcm_field_th3_qualify_ip_type(int unit, bcm_field_entry_t entry, 4411 bcm_field_IpType_t type, 4412 bcm_field_qualify_t qual) 4413 { 4414 4415 uint32 data = 0, 4416 mask = 0; 4417 4418 switch (type) { 4419 case bcmFieldIpTypeAny: 4420 data = 0x0; 4421 mask = 0x0; 4422 break; 4423 case bcmFieldIpTypeNonIp: 4424 data = 0xf; 4425 mask = 0xf; 4426 break; 4427 case bcmFieldIpTypeIp: 4428 data = 0x0; 4429 mask = 0x8; 4430 break; 4431 break; 4432 case bcmFieldIpTypeIpv4NoOpts: 4433 data = 0x0; 4434 mask = 0xf; 4435 break; 4436 case bcmFieldIpTypeIpv4WithOpts: 4437 data = 0x1; 4438 mask = 0xf; 4439 break; 4440 case bcmFieldIpTypeIpv4Any: 4441 data = 0x0; 4442 mask = 0xe; 4443 break; 4444 case bcmFieldIpTypeIpv6NoExtHdr: 4445 data = 0x4; 4446 mask = 0xf; 4447 break; 4448 case bcmFieldIpTypeIpv6OneExtHdr: 4449 data = 0x5; 4450 mask = 0xf; 4451 break; 4452 case bcmFieldIpTypeIpv6TwoExtHdr: 4453 data = 0x6; 4454 mask = 0xf; 4455 break; 4456 case bcmFieldIpTypeIpv6: 4457 data = 0x4; 4458 mask = 0xc; 4459 break; 4460 case bcmFieldIpTypeArp: 4461 data = 0x8; 4462 mask = 0xe; 4463 break; 4464 case bcmFieldIpTypeArpRequest: 4465 data = 0x8; 4466 mask = 0xf; 4467 break; 4468 case bcmFieldIpTypeArpReply: 4469 data = 0x9; 4470 mask = 0xf; 4471 break; 4472 case bcmFieldIpTypeTrill: 4473 data = 0xa; 4474 mask = 0xf; 4475 break; 4476 case bcmFieldIpTypeMplsUnicast: 4477 data = 0xc; 4478 mask = 0xf; 4479 break; 4480 case bcmFieldIpTypeMplsMulticast: 4481 data = 0xd; 4482 mask = 0xf; 4483 break; 4484 case bcmFieldIpTypeMim: 4485 data = 0xe; 4486 mask = 0xf; 4487 break; 4488 default: 4489 LOG_DEBUG(BSL_LS_BCM_FP, 4490 (BSL_META_U(unit, 4491 "FP(unit %d) vverb: entry=%d qualifying" 4492 " on Invalid Iptype=%#x\n))"), 4493 unit, entry, type)); 4494 return (BCM_E_UNAVAIL); 4495 } 4496 LOG_DEBUG(BSL_LS_BCM_FP, 4497 (BSL_META_U(unit, 4498 "FP(unit %d) vverb: entry=%d qualifying on Iptype, " 4499 "data=%#x, mask=%#x\n))"), 4500 unit, entry, data, mask)); 4501 4502 return _field_qualify32(unit, entry, qual, 4503 data, mask); 4504 } 4505 4506 4507 /* 4508 * Function: 4509 * _bcm_field_th3_qualify_ip_type_encode_get 4510 * Purpose: 4511 * Get ip type qualifier encode value for given data and mask. 4512 * Parameters: 4513 * unit - (IN) BCM device number 4514 * data - (IN) qualifier data. 4515 * mask - (IN) qualifier mask. 4516 * type - (OUT) Ip Type. 4517 * Returns: 4518 * BCM_E_XXX 4519 * Notes: 4520 */ 4521 int 4522 _bcm_field_th3_qualify_ip_type_encode_get(int unit, 4523 uint32 hw_data, 4524 uint32 hw_mask, 4525 bcm_field_IpType_t *type) 4526 { 4527 4528 if ((0 == hw_data) && (0 == hw_mask)) { 4529 *type = bcmFieldIpTypeAny; 4530 } else if ((0x0 == hw_data) && (0x8 == hw_mask)) { 4531 *type = bcmFieldIpTypeIp; 4532 } else if ((0xf == hw_data) && (0xf == hw_mask)) { 4533 *type = bcmFieldIpTypeNonIp; 4534 } else if ((0x0 == hw_data) && (0xf == hw_mask)) { 4535 *type = bcmFieldIpTypeIpv4NoOpts; 4536 } else if ((0x1 == hw_data) && (0xf == hw_mask)) { 4537 *type = bcmFieldIpTypeIpv4WithOpts; 4538 } else if ((0x0 == hw_data) && (0xe == hw_mask)) { 4539 *type = bcmFieldIpTypeIpv4Any; 4540 } else if ((0x4 == hw_data) && (0xf == hw_mask)) { 4541 *type = bcmFieldIpTypeIpv6NoExtHdr; 4542 } else if ((0x5 == hw_data) && (0xf == hw_mask)) { 4543 *type = bcmFieldIpTypeIpv6OneExtHdr; 4544 } else if ((0x6 == hw_data) && (0xf == hw_mask)) { 4545 *type = bcmFieldIpTypeIpv6TwoExtHdr; 4546 } else if ((0x4 == hw_data) && (0xc == hw_mask)) { 4547 *type = bcmFieldIpTypeIpv6; 4548 } else if ((0x8 == hw_data) && (0xe == hw_mask)) { 4549 *type = bcmFieldIpTypeArp; 4550 } else if ((0x8 == hw_data) && (0xf == hw_mask)) { 4551 *type = bcmFieldIpTypeArpRequest; 4552 } else if ((0x9 == hw_data) && (0xf == hw_mask)) { 4553 *type = bcmFieldIpTypeArpReply; 4554 } else if ((0xa == hw_data) && (0xf == hw_mask)) { 4555 *type = bcmFieldIpTypeTrill; 4556 } else if ((0xc == hw_data) && (0xf == hw_mask)) { 4557 *type = bcmFieldIpTypeMplsUnicast; 4558 } else if ((0xd == hw_data) && (0xf == hw_mask)) { 4559 *type = bcmFieldIpTypeMplsMulticast; 4560 } else if ((0xe == hw_data) && (0xf == hw_mask)) { 4561 *type = bcmFieldIpTypeMim; 4562 } else 4563 { 4564 return (BCM_E_INTERNAL); 4565 } 4566 return (BCM_E_NONE); 4567 } 4568 4569 /* 4570 * Function: 4571 * _field_th3_stage_action_support_check 4572 * Purpose: 4573 * Check if action is supported by tomahawk for the given stage. 4574 * Parameters: 4575 * unit - (IN) BCM device number. 4576 * stage - (IN) Field processor stage. 4577 * action - (IN) Action to check(bcmFieldActionXXX) 4578 * result - (OUT) 4579 * TRUE - action is supported by device 4580 * FALSE - action is NOT supported by device 4581 * Returns: 4582 * BCM_E_XXX 4583 */ 4584 4585 int 4586 _field_th3_stage_action_support_check(int unit, 4587 unsigned stage, 4588 bcm_field_action_t action, 4589 int *result) 4590 { 4591 if (NULL == result) { 4592 return BCM_E_PARAM; 4593 } 4594 4595 switch (stage) { 4596 case _BCM_FIELD_STAGE_INGRESS: 4597 switch (action) { 4598 case bcmFieldActionIntEncapEnable: 4599 case bcmFieldActionIntEncapDisable: 4600 case bcmFieldActionElephantColorEnable: 4601 case bcmFieldActionElephantColorDisable: 4602 case bcmFieldActionElephantQueueEnable: 4603 case bcmFieldActionElephantQueueDisable: 4604 case bcmFieldActionElephantLookupEnable: 4605 case bcmFieldActionElephantLookupDisable: 4606 case bcmFieldActionMatchPbmpDrop: 4607 case bcmFieldActionMatchPbmpRedirect: 4608 case bcmFieldActionDlbEcmpMonitorEnable: 4609 case bcmFieldActionMirrorZeroingEnable: 4610 *result = TRUE; 4611 return BCM_E_NONE; 4612 default: 4613 break; 4614 } 4615 break; 4616 case _BCM_FIELD_STAGE_LOOKUP: 4617 switch (action) { 4618 case bcmFieldActionOuterVlanCfiCopyInner: 4619 case bcmFieldActionOuterVlanPrioCopyInner: 4620 case bcmFieldActionOuterVlanCopyInner: 4621 case bcmFieldActionInnerVlanAdd: 4622 case bcmFieldActionInnerVlanNew: 4623 case bcmFieldActionInnerVlanDelete: 4624 case bcmFieldActionInnerVlanCopyOuter: 4625 case bcmFieldActionInnerVlanPrioNew: 4626 case bcmFieldActionInnerVlanPrioCopyOuter: 4627 case bcmFieldActionInnerVlanCfiNew: 4628 case bcmFieldActionInnerVlanCfiCopyOuter: 4629 case bcmFieldActionIngressGportSet: 4630 case bcmFieldActionIncomingMplsPortSet: 4631 *result = FALSE; 4632 return BCM_E_NONE; 4633 case bcmFieldActionMplsLookupEnable: 4634 case bcmFieldActionTerminationAllowed: 4635 case bcmFieldActionVisibilityEnable: 4636 case bcmFieldActionL3IngressStrengthSet: 4637 *result = TRUE; 4638 return BCM_E_NONE; 4639 default: 4640 break; 4641 } 4642 break; 4643 case _BCM_FIELD_STAGE_EGRESS: 4644 switch (action) { 4645 case bcmFieldActionLoopbackSrcModuleGportNew: 4646 case bcmFieldActionLoopbackSrcGportNew: 4647 case bcmFieldActionHiGigDstModuleGportNew: 4648 case bcmFieldActionHiGigDstPortGportNew: 4649 case bcmFieldActionHiGigDstGportNew: 4650 case bcmFieldActionGpHiGigDropPrecedenceNew: 4651 case bcmFieldActionYpHiGigDropPrecedenceNew: 4652 case bcmFieldActionRpHiGigDropPrecedenceNew: 4653 case bcmFieldActionHiGigDropPrecedenceNew: 4654 case bcmFieldActionGpHiGigIntPriNew: 4655 case bcmFieldActionYpHiGigIntPriNew: 4656 case bcmFieldActionRpHiGigIntPriNew: 4657 case bcmFieldActionHiGigIntPriNew: 4658 case bcmFieldActionGpHGCongestionClassNew: 4659 case bcmFieldActionYpHGCongestionClassNew: 4660 case bcmFieldActionRpHGCongestionClassNew: 4661 case bcmFieldActionVxlanHeaderFlags: 4662 case bcmFieldActionVxlanHeaderBits8_31_Set: 4663 case bcmFieldActionVxlanHeaderBits56_63_Set: 4664 case bcmFieldActionIpFix: 4665 case bcmFieldActionIpFixCancel: 4666 case bcmFieldActionInnerVlanNew: 4667 case bcmFieldActionYpEcnNew: 4668 case bcmFieldActionGpEcnNew: 4669 case bcmFieldActionRpEcnNew: 4670 case bcmFieldActionRpDscpNew: 4671 case bcmFieldActionYpDscpNew: 4672 case bcmFieldActionGpDscpNew: 4673 case bcmFieldActionInnerVlanPrioNew: 4674 case bcmFieldActionRpInnerVlanPrioNew: 4675 case bcmFieldActionGpInnerVlanPrioNew: 4676 case bcmFieldActionYpInnerVlanPrioNew: 4677 case bcmFieldActionYpDrop: 4678 case bcmFieldActionRpDrop: 4679 case bcmFieldActionGpDrop: 4680 case bcmFieldActionYpOuterVlanPrioNew: 4681 case bcmFieldActionRpOuterVlanPrioNew: 4682 case bcmFieldActionGpOuterVlanPrioNew: 4683 case bcmFieldActionInnerVlanCfiNew: 4684 case bcmFieldActionGpInnerVlanCfiNew: 4685 case bcmFieldActionRpInnerVlanCfiNew: 4686 case bcmFieldActionYpInnerVlanCfiNew: 4687 case bcmFieldActionYpOuterVlanCfiNew: 4688 case bcmFieldActionRpOuterVlanCfiNew: 4689 case bcmFieldActionGpOuterVlanCfiNew: 4690 *result = FALSE; 4691 return BCM_E_NONE; 4692 case bcmFieldActionLatencyMonitorEnable: 4693 case bcmFieldActionLatencyMonitorDisable: 4694 *result = TRUE; 4695 return BCM_E_NONE; 4696 default: 4697 break; 4698 } 4699 default: 4700 break; 4701 } 4702 4703 return (_field_th_stage_action_support_check(unit, stage, 4704 action, result)); 4705 } 4706 4707 4708 /* 4709 * Function: 4710 * _bcm_field_th3_qualify_LoopbackType 4711 * Purpose: 4712 * Encode the loopback type qualifier 4713 * Parameters: 4714 * loopback_type - (IN) Loopback Type 4715 * tcam_data - (OUT) Qualifier data 4716 * tcam_mask - (OUT) Qualifier mask 4717 * Returns: 4718 * BCM_E_XXX 4719 */ 4720 int _bcm_field_th3_qualify_LoopbackType( 4721 bcm_field_LoopbackType_t loopback_type, 4722 uint32 *tcam_data, 4723 uint32 *tcam_mask) 4724 { 4725 switch (loopback_type) { 4726 case bcmFieldLoopbackTypeAny: 4727 *tcam_data = 0xf; 4728 *tcam_mask = 0xf; 4729 break; 4730 default: 4731 return (BCM_E_UNAVAIL); 4732 } 4733 4734 return (BCM_E_NONE); 4735 4736 } 4737 4738 /* 4739 * Function: 4740 * _bcm_field_th3_qualify_LoopbackType_get 4741 * Purpose: 4742 * Decode the loopback type qualifier 4743 * Parameters: 4744 * unit - (IN) BCM device number 4745 * tcam_data - (IN) Qualifier data 4746 * tcam_mask - (IN) Qualifier mask 4747 * loopback_type - (OUT) Loopback Type 4748 * Returns: 4749 * BCM_E_XXX 4750 */ 4751 int 4752 _bcm_field_th3_qualify_LoopbackType_get( 4753 uint8 tcam_data, 4754 uint8 tcam_mask, 4755 bcm_field_LoopbackType_t *loopback_type) 4756 { 4757 switch (tcam_data & tcam_mask) { 4758 case 0xf: 4759 *loopback_type = bcmFieldLoopbackTypeAny; 4760 break; 4761 default: 4762 return (BCM_E_INTERNAL); 4763 } 4764 4765 return (BCM_E_NONE); 4766 } 4767 4768 4769 int 4770 _bcm_field_th3_qualify_TunnelType(bcm_field_TunnelType_t tunnel_type, 4771 uint32 *tcam_data, 4772 uint32 *tcam_mask 4773 ) 4774 { 4775 switch (tunnel_type) { 4776 case bcmFieldTunnelTypeAny: 4777 *tcam_data = 0x0; 4778 *tcam_mask = 0x0; 4779 break; 4780 case bcmFieldTunnelTypeNone: 4781 *tcam_data = 0x0; 4782 *tcam_mask = 0xf; 4783 break; 4784 case bcmFieldTunnelTypeIp: 4785 *tcam_data = 0x1; 4786 *tcam_mask = 0xf; 4787 break; 4788 case bcmFieldTunnelTypeMpls: 4789 *tcam_data = 0x2; 4790 *tcam_mask = 0xf; 4791 break; 4792 default: 4793 return (BCM_E_UNAVAIL); 4794 } 4795 return (BCM_E_NONE); 4796 } 4797 4798 int 4799 _bcm_field_th3_qualify_TunnelType_get(uint8 tcam_data, 4800 uint8 tcam_mask, 4801 bcm_field_TunnelType_t *tunnel_type 4802 ) 4803 { 4804 switch (tcam_data & tcam_mask) { 4805 case 0x1: 4806 *tunnel_type = bcmFieldTunnelTypeIp; 4807 break; 4808 case 0x2: 4809 *tunnel_type = bcmFieldTunnelTypeMpls; 4810 break; 4811 case 0x0: 4812 if(tcam_mask) { 4813 *tunnel_type = bcmFieldTunnelTypeNone; 4814 break; 4815 } 4816 default: 4817 return (BCM_E_INTERNAL); 4818 } 4819 4820 return (BCM_E_NONE); 4821 } 4822 4823 4824 /* 4825 * Function: 4826 * _bcm_field_th3_tcam_idx_to_slice_offset 4827 * 4828 * Purpose: 4829 * Given stage and tcam_index, 4830 * calculate slice and entry offset in the 4831 * 4832 * Parameters: 4833 * unit - (IN) BCM device number. 4834 * stage_fc - (IN) Pointer to field stage structure. 4835 * f_ent - (IN) Reference to field entry structure. 4836 * tcam_idx - (IN) Entry tcam index. 4837 * slice - (OUT) Entry slice number. 4838 * slice_idx -(OUT) Entry offset in the slice. 4839 * Returns: 4840 * BCM_E_XXX 4841 */ 4842 int 4843 _bcm_field_th3_tcam_idx_to_slice_offset(int unit, _field_stage_t *stage_fc, 4844 _field_entry_t *f_ent, int tcam_idx, 4845 int *slice, int *slice_idx) 4846 { 4847 _field_slice_t *fs; /* Field Slice number. */ 4848 int idx; /* Slice iterator. */ 4849 4850 /* Input parameters check. */ 4851 if ((NULL == stage_fc) || (NULL == slice_idx) || (NULL == slice) 4852 || (NULL == f_ent)) { 4853 return (BCM_E_PARAM); 4854 } 4855 4856 for (idx = 0; idx < stage_fc->tcam_slices; idx++) { 4857 fs = stage_fc->slices[f_ent->group->instance] + idx; 4858 4859 if (tcam_idx <(fs->start_tcam_idx + fs->entry_count)) { 4860 *slice = idx; 4861 *slice_idx = tcam_idx - fs->start_tcam_idx; 4862 break; 4863 } 4864 } 4865 4866 /* TCAM index sanity check. */ 4867 if (idx == stage_fc->tcam_slices) { 4868 return (BCM_E_PARAM); 4869 } 4870 4871 return (BCM_E_NONE); 4872 } 4873 4874 4875 /* Function : _field_th3_qualify_IpFrag 4876 * Description : qualify on Ip Frag Info. 4877 * Parameters : (IN) unit BCM device number 4878 * (IN) entry Field entry to qualify 4879 * (IN) qual_id Field qualifier id. 4880 * (IN) frag_info bcm_field_IpFrag_t to qualify 4881 * Returns : BCM_E_XXX 4882 */ 4883 int 4884 _field_th3_qualify_IpFrag(int unit, bcm_field_entry_t entry, 4885 bcm_field_qualify_t qual_id, 4886 bcm_field_IpFrag_t frag_info) 4887 { 4888 int rv; 4889 uint32 data; 4890 uint32 mask; 4891 4892 /* 4893 * 01 : Whole packet 4894 * 10 : First fragment 4895 */ 4896 switch(frag_info) { 4897 case bcmFieldIpFragNonOrFirst: 4898 /* Non-fragmented packet */ 4899 data = 0x02; 4900 mask = 0x02; 4901 break; 4902 case bcmFieldIpFragFirst: 4903 /* First fragment of fragmented packet*/ 4904 data = 0x02; 4905 mask = 0x03; 4906 break; 4907 case bcmFieldIpFragNon: 4908 /* Non-fragmented packet */ 4909 data = 0x01; 4910 mask = 0x01; 4911 break; 4912 case bcmFieldIpFragAny: 4913 /* Any fragment of fragmented packet */ 4914 data = 0x00; 4915 mask = 0x01; 4916 break; 4917 case bcmFieldIpFragNotFirst: 4918 /* Not the first fragment */ 4919 data = 0x00; 4920 mask = 0x03; 4921 break; 4922 default: 4923 return (BCM_E_PARAM); 4924 } 4925 4926 rv = _field_qualify32(unit, entry, qual_id, data, mask); 4927 return (rv); 4928 } 4929 4930 4931 /* Function : _field_th3_qualify_IpFrag_get 4932 * Description : qualify on Ip Frag Info. 4933 * Parameters : (IN) unit BCM device number 4934 * (IN) entry Field entry to qualify 4935 * (IN) qual_id Field qualifier id. 4936 * (OUT) frag_info bcm_field_IpFrag_t to qualify 4937 * Returns : BCM_E_XXX 4938 */ 4939 int 4940 _field_th3_qualify_IpFrag_get(int unit, bcm_field_entry_t entry, 4941 bcm_field_qualify_t qual_id, 4942 bcm_field_IpFrag_t *frag_info) 4943 { 4944 uint32 hw_data = 0; /* HW buffer data. */ 4945 uint32 hw_mask = 0; /* HW buffer mask. */ 4946 int rv; /* Operation return stauts. */ 4947 4948 /* Input parameters check. */ 4949 if (NULL == frag_info) { 4950 return (BCM_E_PARAM); 4951 } 4952 4953 /* Read qualifier match value and mask. */ 4954 rv = _bcm_field_entry_qualifier_uint32_get(unit, entry, 4955 qual_id, 4956 &hw_data, &hw_mask); 4957 BCM_IF_ERROR_RETURN(rv); 4958 4959 if ((hw_data == 0x2) && (hw_mask == 0x2)) { 4960 *frag_info = bcmFieldIpFragNonOrFirst; 4961 } else if ((hw_data == 0x2) && (hw_mask == 0x3)) { 4962 *frag_info = bcmFieldIpFragFirst; 4963 } else if ((hw_data == 0x1) && (hw_mask == 0x1)) { 4964 *frag_info = bcmFieldIpFragNon; 4965 } else if ((hw_data == 0x0) && (hw_mask == 0x3)) { 4966 *frag_info = bcmFieldIpFragNotFirst; 4967 } else if ((hw_data == 0x0) && (hw_mask == 0x1)) { 4968 *frag_info = bcmFieldIpFragAny; 4969 } else { 4970 return (BCM_E_INTERNAL); 4971 } 4972 4973 return (BCM_E_NONE); 4974 } 4975 4976 /* 4977 * Function: 4978 * _field_th3_redirect_profile_get 4979 * Purpose: 4980 * Get the redirect profile for the unit 4981 * Parameters: 4982 * unit - BCM device number 4983 * redirect_profile - (OUT) redirect profile 4984 * Returns: 4985 * BCM_E_XXX 4986 * Notes: 4987 * For triumph, External TCAM and IFP refer to same IFP_REDIRECTION_PROFILEm 4988 */ 4989 int 4990 _bcm_field_th3_redirect_profile_get(int unit, 4991 soc_profile_mem_t **redirect_profile) 4992 { 4993 _field_control_t *fc = NULL; 4994 4995 /* Get field control structure. */ 4996 BCM_IF_ERROR_RETURN(_field_control_get(unit, &fc)); 4997 4998 *redirect_profile = &fc->redirect_profile1; 4999 5000 return (BCM_E_NONE); 5001 } 5002 5003 /* 5004 * Function: 5005 * _bcm_field_th3_redirect_profile_ref_count_get 5006 * Purpose: 5007 * Get redirect profile entry use count. 5008 * Parameters: 5009 * unit - (IN) BCM device number. 5010 * index - (IN) Profile entry index. 5011 * ref_count - (OUT) redirect profile use count. 5012 * Returns: 5013 * BCM_E_XXX 5014 */ 5015 int 5016 _bcm_field_th3_redirect_profile_ref_count_get(int unit, 5017 int index, 5018 int *ref_count) 5019 { 5020 soc_profile_mem_t *redirect_profile; 5021 5022 if (NULL == ref_count) { 5023 return (BCM_E_PARAM); 5024 } 5025 5026 /* Get the redirect profile */ 5027 BCM_IF_ERROR_RETURN 5028 (_bcm_field_th3_redirect_profile_get(unit, &redirect_profile)); 5029 5030 BCM_IF_ERROR_RETURN(soc_profile_mem_ref_count_get(unit, redirect_profile, 5031 index, ref_count)); 5032 return (BCM_E_NONE); 5033 } 5034 5035 /* 5036 * Function: 5037 * _bcm_field_th3_redirect_profile_delete 5038 * Purpose: 5039 * Delete redirect profile entry. 5040 * Parameters: 5041 * unit - (IN) BCM device number. 5042 * index - (IN) Profile entry index. 5043 * Returns: 5044 * BCM_E_XXX 5045 */ 5046 int 5047 _bcm_field_th3_redirect_profile_delete(int unit, int index) 5048 { 5049 soc_profile_mem_t *redirect_profile; 5050 5051 /* Get the redirect profile */ 5052 BCM_IF_ERROR_RETURN 5053 (_bcm_field_th3_redirect_profile_get(unit, &redirect_profile)); 5054 5055 BCM_IF_ERROR_RETURN(soc_profile_mem_delete(unit, redirect_profile, index)); 5056 return (BCM_E_NONE); 5057 } 5058 5059 /* 5060 * Function: 5061 * _field_th3_class_ctype_supported 5062 * Purpose: 5063 * Check if the class type is supported for the device. 5064 * Parameters: 5065 * unit - (IN) BCM Device number. 5066 * ctype - (IN) Field Class Type. 5067 * Returns: 5068 * BCM_E_XXX 5069 */ 5070 int 5071 _field_th3_class_ctype_supported(int unit, 5072 _field_class_type_t ctype) 5073 { 5074 int rv = BCM_E_NONE; 5075 5076 switch(ctype) { 5077 case _FieldClassEtherType: 5078 case _FieldClassTtl: 5079 case _FieldClassToS: 5080 case _FieldClassIpProto: 5081 case _FieldClassTcp: 5082 case _FieldClassIpTunnelTtl: 5083 rv = BCM_E_NONE; 5084 break; 5085 default: 5086 rv = BCM_E_UNAVAIL; 5087 break; 5088 } 5089 return rv; 5090 } 5091 5092 /* 5093 * Function: 5094 * _bcm_field_th3_qual_class_size_get 5095 * Purpose: 5096 * Get Field Qualifier Class Size 5097 * Parameters: 5098 * unit - (IN) BCM device number. 5099 * qual - (IN) Field Qualifier. 5100 * class_size - (OUT) Field Qualifier Class Size. 5101 * Returns: 5102 * BCM_E_XXX 5103 * Notes: 5104 * This api returns class size for provided qualifier 5105 * Size provided is in bits. 5106 */ 5107 int 5108 _bcm_field_th3_qual_class_size_get(int unit, bcm_field_qualify_t qual, 5109 uint16 *class_size) 5110 { 5111 int rv = BCM_E_NONE; /* Operation Return Status */ 5112 5113 switch (qual) { 5114 case bcmFieldQualifyEtherType: 5115 *class_size = _FP_QUAL_CLASS_SIZE_ETHERTYPE; 5116 break; 5117 case bcmFieldQualifyTtl: 5118 *class_size = _FP_QUAL_CLASS_SIZE_TTL; 5119 break; 5120 case bcmFieldQualifyTos: 5121 *class_size = _FP_QUAL_CLASS_SIZE_TOS; 5122 break; 5123 case bcmFieldQualifyIpProtocol: 5124 *class_size = _FP_QUAL_CLASS_SIZE_IP_PROTO; 5125 break; 5126 case bcmFieldQualifyTcpControl: 5127 *class_size = _FP_QUAL_CLASS_SIZE_TCP; 5128 break; 5129 case bcmFieldQualifyVrf: 5130 *class_size = _FP_QUAL_CLASS_SIZE_SRC_COMPRESSION; 5131 break; 5132 case bcmFieldQualifyIpTunnelTtl: 5133 *class_size = _FP_QUAL_CLASS_SIZE_IPTUNNELTTL; 5134 break; 5135 default: 5136 rv = BCM_E_PARAM; 5137 } 5138 5139 return (rv); 5140 } 5141 5142 /* 5143 * Function: 5144 * _bcm_th3_field_ddrop_profile_alloc 5145 * Purpose: 5146 * Allocate redirect profile index 5147 * Parameters: 5148 * unit - (IN) BCM device number. 5149 * f_ent - (IN) Field entry structure to get policy info from. 5150 * fa - (IN) Field action. 5151 * Returns: 5152 * BCM_E_XXX 5153 */ 5154 int 5155 _bcm_field_th3_ddrop_profile_alloc(int unit, _field_entry_t *f_ent, 5156 _field_action_t *fa) 5157 { 5158 ifp_egress_port_check_for_drop_entry_t entry_arr[1]; 5159 uint32 *entry_ptr[1]; 5160 soc_profile_mem_t *ddrop_profile; 5161 int rv; 5162 void *entries[1]; 5163 soc_mem_t profile_mem = IFP_EGRESS_PORT_CHECK_FOR_DROPm; 5164 5165 entry_ptr[0] = (uint32 *)(&entry_arr[0]); 5166 entries[0] = (void *)&entry_arr[0]; 5167 5168 if ((NULL == f_ent) || (NULL == fa)) { 5169 return (BCM_E_PARAM); 5170 } 5171 5172 /* Reset redirection profile entry. */ 5173 sal_memset(entry_arr, 0, sizeof(ifp_egress_port_check_for_drop_entry_t)); 5174 5175 /* Get the redirect profile */ 5176 rv = _bcm_field_ddrop_profile_get(unit, &ddrop_profile); 5177 BCM_IF_ERROR_RETURN(rv); 5178 5179 soc_mem_pbmp_field_set(unit, profile_mem, entry_ptr[0], 5180 PORT_BITMAPf, (fa->egress_pbmp)); 5181 5182 soc_mem_field32_set(unit, profile_mem, entry_ptr[0], 5183 ELEPHANT_PKT_ONLYf, (fa->elephant_pkts_only)); 5184 5185 rv = soc_profile_mem_add(unit, ddrop_profile, entries, 5186 1, (uint32*)&fa->hw_index); 5187 return (rv); 5188 } 5189 5190 /* 5191 * Function: 5192 * _bcm_th3_field_dredirect_profile_alloc 5193 * Purpose: 5194 * Allocate redirect profile index 5195 * Parameters: 5196 * unit - (IN) BCM device number. 5197 * f_ent - (IN) Field entry structure to get policy info from. 5198 * fa - (IN) Field action. 5199 * Returns: 5200 * BCM_E_XXX 5201 */ 5202 int 5203 _bcm_field_th3_dredirect_profile_alloc(int unit, _field_entry_t *f_ent, 5204 _field_action_t *fa) 5205 { 5206 ifp_egress_port_check_for_redirect_entry_t entry_arr[1]; 5207 uint32 *entry_ptr[1]; 5208 soc_profile_mem_t *dredirect_profile; 5209 int rv; 5210 void *entries[1]; 5211 soc_mem_t profile_mem = IFP_EGRESS_PORT_CHECK_FOR_REDIRECTm; 5212 5213 entry_ptr[0] = (uint32 *)(&entry_arr[0]); 5214 entries[0] = (void *)&entry_arr[0]; 5215 5216 if ((NULL == f_ent) || (NULL == fa)) { 5217 return (BCM_E_PARAM); 5218 } 5219 5220 /* Reset redirection profile entry. */ 5221 sal_memset(entry_arr, 0, sizeof(ifp_egress_port_check_for_redirect_entry_t)); 5222 5223 /* Get the redirect profile */ 5224 rv = _bcm_field_dredirect_profile_get(unit, &dredirect_profile); 5225 BCM_IF_ERROR_RETURN(rv); 5226 5227 soc_mem_pbmp_field_set(unit, profile_mem, entry_ptr[0], 5228 PORT_BITMAPf, (fa->egress_pbmp)); 5229 5230 soc_mem_field32_set(unit, profile_mem, entry_ptr[0], 5231 ELEPHANT_PKT_ONLYf, (fa->elephant_pkts_only)); 5232 rv = soc_profile_mem_add(unit, dredirect_profile, entries, 5233 1, (uint32*)&fa->hw_index); 5234 return (rv); 5235 } 5236 5237 int 5238 _bcm_field_th3_internal_em_group_create(int unit, 5239 _field_control_t *fc) { 5240 5241 int id = _FP_PRESEL_INTERNAL_RESERVED_ID; 5242 uint32 data32, mask32; 5243 _field_presel_entry_t *f_presel = NULL; /* Internal Presel descriptor */ 5244 _field_presel_info_t *presel_info; /* Presel information structure */ 5245 _bcm_field_presel_flags_t flags = _bcmFieldPreselCreateWithId; 5246 int rv = 0; 5247 int classifier_id = 0; 5248 bcm_field_group_config_t group_config; 5249 bcm_port_t port; 5250 bcm_pbmp_t redirect_pbm; 5251 uint32 param[_FP_ACTION_PARAM_SZ]; 5252 int i; 5253 5254 /* Create Presel ID */ 5255 5256 /* Get the preselector information */ 5257 presel_info = fc->presel_info; 5258 if (presel_info == NULL) { 5259 LOG_ERROR(BSL_LS_BCM_FP, (BSL_META_U(unit, 5260 "ERROR: Field control for Presel Information returns NULL.\n\r"))); 5261 return BCM_E_INTERNAL; 5262 } 5263 /* Check if presel ID is already created */ 5264 if (BCM_FIELD_PRESEL_TEST(presel_info->presel_set, id)) { 5265 LOG_ERROR(BSL_LS_BCM_FP, (BSL_META_U(unit, 5266 "ERROR: Preselector ID[%d] is already created.\n\r"), id)); 5267 return BCM_E_EXISTS; 5268 } 5269 /* Allocate presel descriptor. */ 5270 _FP_XGS3_ALLOC(f_presel, sizeof (_field_presel_entry_t), "Field Presel entity"); 5271 if (NULL == f_presel) { 5272 return BCM_E_MEMORY; 5273 } 5274 /* Initialize the newly created presel id */ 5275 f_presel->presel_id = id; 5276 /* Initialize the hw index to No HW resources allocated */ 5277 f_presel->hw_index = _FP_INVALID_INDEX; 5278 /* Initialize internal flags and stage information */ 5279 f_presel->flags = flags; 5280 /* Insert Presel into Preselector database */ 5281 if (fc->presel_db == NULL) { 5282 sal_free(f_presel); 5283 return BCM_E_INTERNAL; 5284 } 5285 fc->presel_db[id] = f_presel; 5286 /* Update preselector global information */ 5287 /* coverity[negative_shift : FALSE] */ 5288 BCM_FIELD_PRESEL_ADD(presel_info->presel_set, id); 5289 5290 rv = bcm_esw_field_qualify_Stage(unit, id | BCM_FIELD_QUALIFY_PRESEL, 5291 bcmFieldStageIngressExactMatch); 5292 5293 if (BCM_FAILURE(rv)) { 5294 sal_free(f_presel); 5295 fc->presel_db[id] = NULL; 5296 BCM_FIELD_PRESEL_REMOVE(presel_info->presel_set, id); 5297 return rv; 5298 } 5299 5300 /* Key: CPU_TX_CTRL 5301 * Upper 2 bits should be 2, which indicates the CPU TX flow 5302 * Lower 4 bits should be a reserved encoding, say 15 5303 * ((0x2 << 4) | (0xf)) 5304 */ 5305 data32 = 0x2f; 5306 mask32 = 0x3f; 5307 /* coverity[address_of : FALSE] */ 5308 /* coverity[callee_ptr_arith : FALSE] */ 5309 rv = _bcm_field_presel_qualify_set(unit, id | BCM_FIELD_QUALIFY_PRESEL, 5310 _bcmFieldQualifyCpuTxCtrl, 5311 &data32, &mask32); 5312 5313 if (BCM_FAILURE(rv)) { 5314 sal_free(f_presel); 5315 fc->presel_db[id] = NULL; 5316 BCM_FIELD_PRESEL_REMOVE(presel_info->presel_set, id); 5317 return rv; 5318 } 5319 5320 rv = bcm_esw_field_action_add(unit, id | BCM_FIELD_QUALIFY_PRESEL, 5321 bcmFieldActionGroupClassSet, 0x3, 0); 5322 5323 if (BCM_FAILURE(rv)) { 5324 sal_free(f_presel); 5325 fc->presel_db[id] = NULL; 5326 BCM_FIELD_PRESEL_REMOVE(presel_info->presel_set, id); 5327 return rv; 5328 } 5329 5330 bcm_field_group_config_t_init(&group_config); 5331 BCM_FIELD_QSET_INIT(group_config.qset); 5332 BCM_FIELD_ASET_INIT(group_config.aset); 5333 BCM_FIELD_QSET_ADD(group_config.qset, bcmFieldQualifyGroupClass); 5334 BCM_FIELD_QSET_ADD(group_config.qset, bcmFieldQualifyStageIngressExactMatch); 5335 BCM_FIELD_ASET_ADD(group_config.aset, bcmFieldActionCosMapNew); 5336 BCM_FIELD_ASET_ADD(group_config.aset, bcmFieldActionStatGroup); 5337 BCM_FIELD_ASET_ADD(group_config.aset, bcmFieldActionEgressPortsAdd); 5338 5339 BCM_FIELD_PRESEL_ADD(group_config.preselset, id); 5340 group_config.flags = BCM_FIELD_GROUP_CREATE_WITH_PRESELSET; 5341 group_config.group = _FP_INTERNAL_RESERVED_EM_ID; 5342 group_config.flags |= BCM_FIELD_GROUP_CREATE_WITH_ID; 5343 rv = _bcm_field_th_group_add(unit, 0, &group_config); 5344 5345 if (BCM_FAILURE(rv)) { 5346 sal_free(f_presel); 5347 fc->presel_db[id] = NULL; 5348 BCM_FIELD_PRESEL_REMOVE(presel_info->presel_set, id); 5349 return rv; 5350 } 5351 5352 rv = _bcm_field_entry_create_id(unit,group_config.group, 5353 _FP_INTERNAL_RESERVED_EM_ID); 5354 BCM_IF_ERROR_RETURN(rv); 5355 5356 rv = bcm_esw_field_qualify_GroupClass(unit, _FP_INTERNAL_RESERVED_EM_ID, 5357 0x3, 0x3); 5358 BCM_IF_ERROR_RETURN(rv); 5359 5360 rv = _bcm_th3_cosq_field_reserved_classifier_get(unit, &classifier_id, 5361 &port); 5362 BCM_IF_ERROR_RETURN(rv); 5363 5364 rv = bcm_esw_field_action_add(unit, _FP_INTERNAL_RESERVED_EM_ID, 5365 bcmFieldActionCosMapNew, classifier_id, 0); 5366 BCM_IF_ERROR_RETURN(rv); 5367 5368 BCM_PBMP_CLEAR(redirect_pbm); 5369 BCM_PBMP_PORT_ADD(redirect_pbm, port); 5370 5371 for (i = 0; (i < _FP_ACTION_PARAM_SZ) && (i < SOC_PBMP_WORD_MAX) ; i++) { 5372 param[i] = SOC_PBMP_WORD_GET(redirect_pbm, i); 5373 } 5374 rv = _bcm_field_action_ports_add(unit, _FP_INTERNAL_RESERVED_EM_ID, 5375 bcmFieldActionEgressPortsAdd, 5376 param[0], param[1], param[2], 5377 param[3], param[4], param[5]); 5378 5379 BCM_IF_ERROR_RETURN(rv); 5380 5381 rv = bcm_esw_field_entry_install(unit, _FP_INTERNAL_RESERVED_EM_ID); 5382 BCM_IF_ERROR_RETURN(rv); 5383 5384 return BCM_E_NONE; 5385 5386 } 5387 5388 /* 5389 * Function: 5390 * _bcm_field_th3_em_udf_keygen_mask_get 5391 * Purpose: 5392 * Get the mask to be applied for data qualifiers. 5393 * Parameters: 5394 * unit - (IN) BCM device number. 5395 * fg - (IN) Field group structure. 5396 * qid - (IN) Qualifier number. 5397 * mask - (OUT) Mask to be applied. 5398 * Returns: 5399 * BCM_E_XXX 5400 */ 5401 int _bcm_field_th3_em_udf_keygen_mask_get(int unit, 5402 _field_group_t *fg, 5403 uint16 qid, uint32 *mask) 5404 { 5405 int rv = BCM_E_NONE; /* Operational status. */ 5406 uint8 idx = 0; /* Index Variable. */ 5407 _field_stage_t *stage_fc = NULL; /* Stage operational Structure. */ 5408 5409 /* Parameters Check. */ 5410 if (NULL == fg) { 5411 return BCM_E_PARAM; 5412 } 5413 5414 /* Exact Match and IFP shares UDF's */ 5415 rv = _field_stage_control_get(unit, _BCM_FIELD_STAGE_INGRESS, &stage_fc); 5416 BCM_IF_ERROR_RETURN(rv); 5417 5418 if (stage_fc->data_ctrl == NULL) { 5419 return BCM_E_INTERNAL; 5420 } 5421 5422 /* Derive the offset of byte bit map in QSET's udf_map 5423 * for a data qualifier. */ 5424 *mask = 0; 5425 switch (qid) { 5426 case _bcmFieldQualifyData0: 5427 idx = stage_fc->data_ctrl->num_elems * 2; 5428 break; 5429 case _bcmFieldQualifyData1: 5430 idx = (stage_fc->data_ctrl->num_elems * 2) + 2; 5431 break; 5432 case _bcmFieldQualifyData2: 5433 idx = (stage_fc->data_ctrl->num_elems * 2) + 4; 5434 break; 5435 case _bcmFieldQualifyData3: 5436 idx = (stage_fc->data_ctrl->num_elems * 2) + 6; 5437 break; 5438 case _bcmFieldQualifyData4: 5439 idx = (stage_fc->data_ctrl->num_elems * 2) + 8; 5440 break; 5441 case _bcmFieldQualifyData5: 5442 idx = (stage_fc->data_ctrl->num_elems * 2) + 10; 5443 break; 5444 case _bcmFieldQualifyData6: 5445 idx = (stage_fc->data_ctrl->num_elems * 2) + 12; 5446 break; 5447 case _bcmFieldQualifyData7: 5448 idx = (stage_fc->data_ctrl->num_elems * 2) + 14; 5449 break; 5450 case _bcmFieldQualifyData8: 5451 idx = (stage_fc->data_ctrl->num_elems * 2) + 16; 5452 break; 5453 case _bcmFieldQualifyData9: 5454 idx = (stage_fc->data_ctrl->num_elems * 2) + 18; 5455 break; 5456 case _bcmFieldQualifyData10: 5457 idx = (stage_fc->data_ctrl->num_elems * 2) + 20; 5458 break; 5459 case _bcmFieldQualifyData11: 5460 idx = (stage_fc->data_ctrl->num_elems * 2) + 22; 5461 break; 5462 case _bcmFieldQualifyData12: 5463 idx = (stage_fc->data_ctrl->num_elems * 2) + 24; 5464 break; 5465 case _bcmFieldQualifyData13: 5466 idx = (stage_fc->data_ctrl->num_elems * 2) + 26; 5467 break; 5468 case _bcmFieldQualifyData14: 5469 idx = (stage_fc->data_ctrl->num_elems * 2) + 28; 5470 break; 5471 case _bcmFieldQualifyData15: 5472 idx = (stage_fc->data_ctrl->num_elems * 2) + 30; 5473 break; 5474 default: 5475 *mask = 0xFFFFFFFF; 5476 break; 5477 } 5478 5479 if (idx) { 5480 if (SHR_BITGET(fg->qset.udf_map, idx)) { 5481 *mask |= 0xFF; 5482 } 5483 5484 if (SHR_BITGET(fg->qset.udf_map, idx + 1)) { 5485 *mask |= 0xFF00; 5486 } 5487 } 5488 5489 return BCM_E_NONE; 5490 } 5491 #endif