field_actions.h (22856B)
1 2 /* 3 * 4 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 5 * 6 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 7 */ 8 9 #ifndef FIELD_FIELD_ACTIONS_H_INCLUDED 10 11 #define FIELD_FIELD_ACTIONS_H_INCLUDED 12 13 #ifndef BCM_DNX_SUPPORT 14 #error "This file is for use by DNX (JR2) family only!" 15 #endif 16 17 18 #include <sal/types.h> 19 #include <soc/dnx/dnx_data/auto_generated/dnx_data_device.h> 20 #include <soc/dnx/dnx_data/auto_generated/dnx_data_field.h> 21 #include <soc/dnx/dnx_data/auto_generated/dnx_data_max_field.h> 22 #include <include/soc/dnx/swstate/auto_generated/types/dnx_field_actions_types.h> 23 #include <soc/dnx/swstate/auto_generated/access/dnx_field_actions_access.h> 24 #include <soc/dnx/swstate/auto_generated/access/dnx_field_access.h> 25 #include <bcm_int/dnx/field/field_entry.h> 26 27 28 29 30 #define FES_INFO_VALID_TYPE_ALWAYS 1 31 32 #define FES_INFO_VALID_TYPE_CONDITIONAL 0 33 #define FES_INFO_VALID_POLARITY_ASSERTED 1 34 #define FES_INFO_VALID_POLARITY_DEASSERTED 0 35 36 #define DNX_FIELD_ACTION_FES_VALID_BIT_POLARITY_ONE (1) 37 #define DNX_FIELD_ACTION_FES_VALID_BIT_POLARITY_ZERO (0) 38 39 #define DNX_FIELD_NOF_BITS_2MSB_SELECT 2 40 41 #define DNX_FIELD_KEY_SELECT_BIT_GRANULARITY 32 42 43 #define DNX_FIELD_ACTIONS_NUM_LOCATIONS_OF_2MSB_ON_FG \ 44 ((((DNX_DATA_MAX_FIELD_GROUP_NOF_KEYS_PER_FG_MAX) * (DNX_DATA_MAX_FIELD_TCAM_KEY_SIZE_SINGLE)) \ 45 + (DNX_FIELD_KEY_SELECT_BIT_GRANULARITY + 1)) / (DNX_FIELD_KEY_SELECT_BIT_GRANULARITY)) 46 47 48 #define DNX_FIELD_INVALID_FEM_KEY_SELECT DBAL_ENUM_FVAL_FIELD_PMF_A_FEM_KEY_SELECT_INVALID_FEM_KEY_SELECT 49 50 51 #define DNX_FIELD_FEM_CONTEXT_NOT_OCCUPIED_VERIFY(_unit,_fem_id,_context_id) \ 52 { \ 53 \ 54 dnx_field_pmf_fem_context_entry_t _loc_dnx_field_pmf_fem_program_entry; \ 55 \ 56 _loc_dnx_field_pmf_fem_program_entry.fem_id = _fem_id; \ 57 _loc_dnx_field_pmf_fem_program_entry.context_id = _context_id; \ 58 SHR_IF_ERR_EXIT(dnx_field_actions_fem_context_hw_get(_unit, &_loc_dnx_field_pmf_fem_program_entry)); \ 59 if (_loc_dnx_field_pmf_fem_program_entry.pmf_fem_program.fem_key_select != \ 60 DNX_FIELD_INVALID_FEM_KEY_SELECT) \ 61 { \ 62 SHR_ERR_EXIT(_SHR_E_PARAM, \ 63 "This 'fem_id' (%d) on this fem context_id (%d) is already occupied (fes_key_select %d) while is should have been free. Quit. \n", \ 64 _fem_id, _context_id, _loc_dnx_field_pmf_fem_program_entry.pmf_fem_program.fem_key_select); \ 65 } \ 66 } 67 68 #define DNX_FIELD_FEM_CONTEXT_OCCUPIED_VERIFY(_unit,_fem_id,_context_id) \ 69 { \ 70 \ 71 dnx_field_pmf_fem_context_entry_t _loc_dnx_field_pmf_fem_program_entry; \ 72 \ 73 _loc_dnx_field_pmf_fem_program_entry.fem_id = _fem_id; \ 74 _loc_dnx_field_pmf_fem_program_entry.context_id = _context_id; \ 75 SHR_IF_ERR_EXIT(dnx_field_actions_fem_context_hw_get(_unit, &_loc_dnx_field_pmf_fem_program_entry)); \ 76 if (_loc_dnx_field_pmf_fem_program_entry.pmf_fem_program.fem_key_select == \ 77 DNX_FIELD_INVALID_FEM_KEY_SELECT) \ 78 { \ 79 SHR_ERR_EXIT(_SHR_E_PARAM, \ 80 "This 'fem_id' (%d) on this fem context_id (%d) is free (fes_key_select %d) while is shoul have been occupied. Quit. \n", \ 81 _fem_id, _context_id, _loc_dnx_field_pmf_fem_program_entry.pmf_fem_program.fem_key_select); \ 82 } \ 83 } 84 85 86 87 88 89 typedef struct 90 { 91 92 dnx_field_action_type_t action_type; 93 94 dnx_field_fes_valid_bits_t valid_bits; 95 96 dnx_field_fes_shift_t shift; 97 98 dnx_field_fes_type_t type; 99 dnx_field_fes_polarity_t polarity; 100 } __ATTRIBUTE_PACKED__ dnx_field_actions_fes_common_info_fes2msb_t; 101 102 103 typedef struct 104 { 105 106 dnx_field_actions_fes_common_info_fes2msb_t fes2msb_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]; 107 } __ATTRIBUTE_PACKED__ dnx_field_actions_fes_common_info_t; 108 109 110 typedef struct 111 { 112 113 uint32 required_mask; 114 } __ATTRIBUTE_PACKED__ dnx_field_actions_fes_alloc_info_fes2msb_t; 115 116 117 typedef struct 118 { 119 120 dnx_field_actions_fes_alloc_info_fes2msb_t fes2msb_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]; 121 122 dnx_field_action_priority_t priority; 123 } __ATTRIBUTE_PACKED__ dnx_field_actions_fes_alloc_info_t; 124 125 126 typedef struct 127 { 128 129 dnx_field_fes_key_select_t key_select; 130 } __ATTRIBUTE_PACKED__ dnx_field_actions_fes_write_info_t; 131 132 133 typedef struct 134 { 135 136 dnx_field_actions_fes_common_info_t common_info; 137 138 dnx_field_actions_fes_alloc_info_t alloc_info; 139 140 dnx_field_actions_fes_write_info_t write_info; 141 } __ATTRIBUTE_PACKED__ dnx_field_actions_fes_info_t; 142 143 144 typedef struct 145 { 146 147 dnx_field_action_t dnx_action; 148 149 uint8 size; 150 151 uint8 lsb; 152 153 uint8 dont_use_valid_bit; 154 155 uint8 valid_bit_polarity; 156 157 dnx_field_fes_mask_t mask; 158 } dnx_field_actions_fes_single_add_conf_t; 159 160 161 typedef struct 162 { 163 164 dnx_field_qual_t qual_type; 165 166 unsigned int val; 167 } dnx_field_dir_ext_quals_for_msb_bits_t; 168 169 170 typedef struct 171 { 172 173 dnx_field_action_type_t action_type; 174 dnx_field_fes_valid_bits_t valid_bits; 175 dnx_field_fes_shift_t shift; 176 dnx_field_fes_type_t type; 177 dnx_field_fes_polarity_t polarity; 178 dnx_field_fes_chosen_mask_t chosen_mask; 179 180 dnx_field_fes_mask_t mask; 181 } dnx_field_actions_fes_quartet_get_info_fes2msb_t; 182 183 184 typedef struct 185 { 186 187 dnx_field_fes_id_t fes_id; 188 189 dnx_field_fes_pgm_id_t fes_pgm_id; 190 191 dnx_field_action_priority_t priority; 192 193 dnx_field_group_t fg_id; 194 195 uint8 place_in_fg; 196 197 dnx_field_fes_key_select_t key_select; 198 199 dnx_field_actions_fes_quartet_get_info_fes2msb_t fes2msb_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]; 200 } dnx_field_actions_fes_quartet_context_get_info_t; 201 202 203 typedef struct 204 { 205 206 unsigned int nof_fes_quartets; 207 208 dnx_field_actions_fes_quartet_context_get_info_t 209 fes_quartets[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FES_INSTRUCTION_PER_CONTEXT]; 210 } dnx_field_actions_fes_context_get_info_t; 211 212 213 typedef struct 214 { 215 216 dnx_field_fes_id_t fes_id; 217 218 dnx_field_fes_pgm_id_t fes_pgm_id; 219 220 dnx_field_action_priority_t priority; 221 222 dnx_field_fes_key_select_t key_select; 223 224 dnx_field_actions_fes_quartet_get_info_fes2msb_t fes2msb_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]; 225 } dnx_field_actions_fes_quartet_context_group_get_info_t; 226 227 228 typedef struct 229 { 230 231 dnx_field_actions_fes_quartet_context_group_get_info_t 232 initial_fes_quartets[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]; 233 234 dnx_field_actions_fes_quartet_context_group_get_info_t 235 added_fes_quartets[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]; 236 } dnx_field_actions_fes_context_group_get_info_t; 237 238 239 typedef struct 240 { 241 242 dnx_field_actions_fes_quartet_get_info_fes2msb_t fes2msb_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]; 243 } dnx_field_actions_fes_pgm_ctx_info_t; 244 245 246 typedef struct 247 { 248 249 uint32 context_bmp[BITS2WORDS(DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_CONTEXTS)]; 250 251 252 dnx_field_group_t field_group; 253 254 255 uint8 masks_id_used[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_MASKS_PER_FES]; 256 257 258 dnx_field_actions_fes_pgm_ctx_info_t pgm_ctx_2msb_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_CONTEXTS]; 259 } dnx_field_actions_fes_pgm_info_t; 260 261 262 typedef struct 263 { 264 265 dnx_field_fes_mask_t action_masks[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_MASKS_PER_FES]; 266 267 dnx_field_actions_fes_pgm_info_t fes_pgm_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FES_PROGRAMS]; 268 269 uint8 place_in_fg; 270 271 dnx_field_fes_key_select_t key_select; 272 273 } dnx_field_actions_fes_id_get_info_t; 274 275 276 typedef struct 277 { 278 279 dnx_field_action_t dnx_action; 280 281 dbal_enum_value_field_field_io_e field_io; 282 283 unsigned int lsb; 284 285 uint8 dont_use_valid_bit; 286 287 dnx_field_action_priority_t priority; 288 289 uint8 valid_bit_polarity; 290 } dnx_field_actions_single_fes_add_t; 291 292 293 typedef struct 294 { 295 296 dnx_field_fes_id_t fes_id; 297 298 dnx_field_action_type_t action_type; 299 dnx_field_fes_valid_bits_t valid_bits; 300 dnx_field_fes_shift_t shift; 301 dnx_field_fes_type_t type; 302 dnx_field_fes_polarity_t polarity; 303 dnx_field_fes_chosen_mask_t chosen_mask; 304 dnx_field_fes_mask_t mask; 305 } dnx_field_actions_fes_ace_instr_get_info_t; 306 307 308 typedef struct 309 { 310 311 unsigned int nof_fes_instr; 312 313 dnx_field_actions_fes_ace_instr_get_info_t fes_instr[DNX_DATA_MAX_FIELD_ACE_NOF_FES_INSTRUCTION_PER_CONTEXT]; 314 } dnx_field_actions_fes_ace_get_info_t; 315 316 317 typedef struct 318 { 319 320 dnx_field_action_in_group_info_t actions_on_payload_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]; 321 } dnx_field_actions_fg_payload_info_t; 322 323 324 typedef struct 325 { 326 327 dnx_field_action_in_group_info_t actions_on_payload_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]; 328 } dnx_field_actions_ace_payload_info_t; 329 330 331 332 333 typedef struct 334 { 335 336 uint8 available; 337 338 unsigned int lsb; 339 340 unsigned int bit_width; 341 342 uint32 validity_condition; 343 344 } dnx_field_dir_ext_fes_data_2msb_information_t; 345 346 347 typedef struct 348 { 349 350 dnx_field_qual_t qualifier_type; 351 352 unsigned int bit_on_fes_data; 353 } dnx_field_actions_feature_2msb_qualifier_map_info_t; 354 355 356 shr_error_e dnx_field_actions_io_to_replace_select( 357 int unit, 358 dbal_enum_value_field_field_io_e field_io, 359 dbal_enum_value_field_field_fem_replace_lsb_select_e * replace_lsb_select_p); 360 361 362 shr_error_e dnx_field_action_attach_info_single_t_init( 363 int unit, 364 dnx_field_action_attach_info_t * action_info_p); 365 366 367 shr_error_e dnx_field_action_attach_info_t_init( 368 int unit, 369 dnx_field_action_attach_info_t action_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]); 370 371 372 shr_error_e dnx_field_actions_fes_single_add_conf_t_init( 373 int unit, 374 dnx_field_actions_fes_single_add_conf_t efes_action_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]); 375 376 377 shr_error_e dnx_field_action_in_group_info_t_init( 378 int unit, 379 dnx_field_action_in_group_info_t * struct_p); 380 381 382 shr_error_e dnx_field_action_in_group_bit_size( 383 int unit, 384 dnx_field_stage_e field_stage, 385 dnx_field_action_in_group_info_t * action_p, 386 unsigned int *action_size_w_valid_p, 387 unsigned int *action_size_wo_valid_p); 388 389 390 shr_error_e dnx_field_actions_place_actions( 391 int unit, 392 dnx_field_stage_e field_stage, 393 unsigned int max_nof_bits_on_payload, 394 dnx_field_action_in_group_info_t actions_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]); 395 396 397 shr_error_e dnx_field_actions_calc_feses( 398 int unit, 399 dnx_field_stage_e field_stage, 400 dbal_enum_value_field_field_io_e field_io, 401 dnx_field_action_in_group_info_t actions_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP], 402 int template_shift, 403 dnx_field_action_attach_info_t action_attach_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP], 404 dnx_field_actions_fes_info_t fes_inst_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]); 405 406 407 shr_error_e dnx_field_actions_fes_set( 408 int unit, 409 dnx_field_stage_e field_stage, 410 dnx_field_group_t fg_id, 411 dnx_field_context_t context_id, 412 int is_nonshareable, 413 int is_post_attach, 414 dnx_field_actions_fes_info_t fes_inst_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]); 415 416 shr_error_e dnx_field_actions_fes_ace_set( 417 int unit, 418 dnx_field_ace_id_t ace_id, 419 dnx_field_actions_fes_info_t fes_inst_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]); 420 421 422 shr_error_e dnx_field_actions_fes_detach( 423 int unit, 424 dnx_field_stage_e field_stage, 425 dnx_field_group_t fg_id, 426 dnx_field_context_t context_id, 427 dnx_field_fes_id_t fes_id); 428 429 430 shr_error_e dnx_field_actions_fes_ace_detach( 431 int unit, 432 dnx_field_ace_id_t ace_id); 433 434 435 shr_error_e dnx_field_actions_context_fes_info_get( 436 int unit, 437 dnx_field_stage_e field_stage, 438 dnx_field_context_t context_id, 439 dnx_field_actions_fes_context_get_info_t * context_fes_get_info_p); 440 441 442 shr_error_e dnx_field_actions_fes_id_info_get( 443 int unit, 444 dnx_field_stage_e field_stage, 445 uint32 fes_id, 446 dnx_field_actions_fes_id_get_info_t * fes_id_get_info_p); 447 448 449 shr_error_e dnx_field_actions_context_fes_info_to_group_fes_info( 450 int unit, 451 dnx_field_group_t fg_id, 452 dnx_field_actions_fes_context_get_info_t * fes_context_info_p, 453 dnx_field_actions_fes_context_group_get_info_t * fes_group_info_p); 454 455 456 shr_error_e dnx_field_actions_ace_id_nof_mask_state_get( 457 int unit, 458 uint8 nof_masks[DNX_DATA_MAX_FIELD_ACE_NOF_FES_INSTRUCTION_PER_CONTEXT]); 459 460 461 shr_error_e dnx_field_actions_ace_id_fes_info_get( 462 int unit, 463 dnx_field_ace_id_t ace_id, 464 dnx_field_actions_fes_ace_get_info_t * ace_id_fes_get_info_p); 465 466 467 shr_error_e dnx_field_efes_action_add( 468 int unit, 469 dnx_field_group_t fg_id, 470 dnx_field_context_t context_id, 471 bcm_field_action_priority_t action_priority, 472 int use_condition, 473 int efes_condition_msb, 474 dnx_field_actions_fes_single_add_conf_t 475 efes_encoded_extraction[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]); 476 477 478 shr_error_e dnx_field_efes_action_info_get( 479 int unit, 480 dnx_field_group_t fg_id, 481 dnx_field_context_t context_id, 482 bcm_field_action_priority_t action_priority, 483 int *use_condition_p, 484 int *efes_condition_msb_p, 485 dnx_field_actions_fes_single_add_conf_t 486 efes_encoded_extraction[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_PROG_PER_FES]); 487 488 489 shr_error_e dnx_field_efes_action_remove( 490 int unit, 491 dnx_field_group_t fg_id, 492 dnx_field_context_t context_id, 493 bcm_field_action_priority_t action_priority); 494 495 496 shr_error_e dnx_field_efes_action_context_create_fes_update( 497 int unit, 498 dnx_field_stage_e stage, 499 dnx_field_context_t context_id, 500 dnx_field_context_t cascaded_from); 501 502 503 shr_error_e dnx_field_efes_action_context_destroy_fes_update( 504 int unit, 505 dnx_field_stage_e stage, 506 dnx_field_context_t context_id, 507 dnx_field_context_t cascaded_from); 508 509 510 shr_error_e dnx_field_actions_fes_info_t_init( 511 int unit, 512 dnx_field_stage_e field_stage, 513 dnx_field_actions_fes_info_t fes_inst_info[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_ACTION_PER_GROUP]); 514 515 516 517 518 #define DNX_FIELD_INIT_FEM_TABLES_FAST 0 519 520 #define DNX_FIELD_FEM_BIT_FOR_MAP_TYPE (dnx_data_field.stage.stage_info_get(unit, DNX_FIELD_STAGE_IPMF1)->num_bits_in_fem_field_select - 1) 521 522 #define DNX_FIELD_FEM_MASK_FOR_MAP_TYPE SAL_BIT(DNX_FIELD_FEM_BIT_FOR_MAP_TYPE) 523 524 #define DNX_FIELD_FEM_MAP_TYPE_KEY_SELECT 0 525 526 #define DNX_FIELD_FEM_MASK_FOR_MAP_DATA \ 527 (SAL_UPTO_BIT(dnx_data_field.stage.stage_info_get(unit, DNX_FIELD_STAGE_IPMF1)->num_bits_in_fem_field_select) & \ 528 SAL_FROM_BIT(dnx_data_field.stage.stage_info_get(unit, DNX_FIELD_STAGE_IPMF1)->log_nof_bits_in_fem_map_data_field)) 529 530 #define DNX_FIELD_FEM_MASK_OF_MAP_DATA 0x20 531 532 #define DNX_FIELD_FEM_MASK_OF_BIT_VALUE 0x30 533 534 #define DNX_FIELD_FEM_NUM_VALUES_ON_BIT_VALUE 2 535 536 #define FEM_INFO dnx_field_action_sw_db.fem_info 537 #define FEM_INFO_FG_ID_INFO FEM_INFO.fg_id_info 538 #define FEM_INFO_FEM_ENCODED_ACTIONS FEM_INFO.fg_id_info.fem_encoded_actions 539 540 541 #define DEFAULT_FEM_PROGRAM 0 542 543 #define FIRST_AVAILABLE_FEM_PROGRAM (DEFAULT_FEM_PROGRAM + 0) 544 545 546 547 typedef struct 548 { 549 550 dnx_field_fem_id_t fem_id; 551 552 dnx_field_fem_program_t fem_program; 553 554 dnx_field_fem_condition_t fem_condition; 555 556 dnx_field_fem_condition_entry_t fem_condition_entry; 557 } dnx_field_fem_map_index_entry_t; 558 559 typedef struct 560 { 561 562 dnx_field_fem_id_t fem_id; 563 564 dnx_field_fem_map_index_t fem_map_index; 565 566 dnx_field_fem_action_entry_t fem_action_entry; 567 } dnx_field_fem_action_info_t; 568 569 typedef struct 570 { 571 572 dnx_field_fem_id_t fem_id; 573 574 dnx_field_fem_program_t fem_program; 575 576 dnx_field_fem_condition_ms_bit_t fem_condition_ms_bit; 577 } dnx_field_fem_condition_ms_bit_entry_t; 578 579 typedef struct 580 { 581 582 dnx_field_fem_program_t fem_program; 583 584 dbal_enum_value_field_field_fem_replace_lsb_flag_e replace_lsb_flag; 585 586 dbal_enum_value_field_field_fem_replace_lsb_select_e replace_lsb_select; 587 588 dbal_enum_value_field_field_pmf_a_fem_key_select_e fem_key_select; 589 } dnx_field_pmf_fem_program_t; 590 591 typedef struct 592 { 593 594 dnx_field_fem_id_t fem_id; 595 596 dnx_field_context_t context_id; 597 598 dnx_field_pmf_fem_program_t pmf_fem_program; 599 } dnx_field_pmf_fem_context_entry_t; 600 601 602 603 shr_error_e dnx_field_actions_fem_key_select_get( 604 int unit, 605 dbal_enum_value_field_field_io_e actions_block, 606 unsigned int action_size, 607 unsigned int action_lsb, 608 dbal_enum_value_field_field_pmf_a_fem_key_select_e * action_input_select_p, 609 unsigned int *required_shift_p, 610 int *found_p); 611 612 shr_error_e dnx_field_single_fem_prg_sw_state_init( 613 int unit, 614 dnx_field_fem_id_t fem_id, 615 dnx_field_fem_program_t fem_program); 616 617 618 619 shr_error_e dnx_field_fem_is_any_fem_occupied_on_fg( 620 int unit, 621 dnx_field_context_t context_id, 622 dnx_field_group_t fg_id, 623 dnx_field_group_t second_fg_id, 624 uint8 active_actions, 625 int *none_occupied_p); 626 627 628 629 shr_error_e dnx_field_all_fems_sw_state_init( 630 int unit); 631 632 633 shr_error_e dnx_field_fem_condition_entry_t_init( 634 int unit, 635 dnx_field_fem_condition_entry_t * struct_p); 636 637 shr_error_e dnx_field_fem_condition_entry_t_array_init( 638 int unit, 639 dnx_field_fem_condition_entry_t fem_condition_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_CONDITION]); 640 641 shr_error_e dnx_field_fem_is_fg_owner( 642 int unit, 643 dnx_field_fem_id_t fem_id, 644 dnx_field_group_t fg_id, 645 dnx_field_fem_program_t * fem_program_p); 646 647 648 shr_error_e dnx_field_fem_get_next_fg_owner( 649 int unit, 650 dnx_field_group_t fg_id, 651 dnx_field_fem_id_t * fem_id_p, 652 dnx_field_fem_program_t * fem_program_p); 653 654 655 shr_error_e dnx_field_fem_is_fg_secondary( 656 int unit, 657 dnx_field_fem_id_t fem_id, 658 dnx_field_group_t second_fg_id, 659 dnx_field_fem_program_t * fem_program_p); 660 661 662 shr_error_e dnx_field_fem_is_fg_secondary_on_any( 663 int unit, 664 dnx_field_group_t second_fg_id, 665 dnx_field_fem_id_t * fem_id_p); 666 667 668 shr_error_e dnx_field_fem_num_action_bits_verify( 669 int unit, 670 dnx_field_fem_id_t fem_id, 671 dnx_field_action_t dnx_encoded_fem_action, 672 dnx_field_fem_action_entry_t * fem_action_entry_p); 673 674 shr_error_e dnx_field_pmf_fem_context_entry_t_init( 675 int unit, 676 dnx_field_pmf_fem_context_entry_t * struct_p); 677 678 shr_error_e dnx_field_fem_action_entry_t_init( 679 int unit, 680 dnx_field_fem_action_entry_t * struct_p); 681 682 683 shr_error_e dnx_field_fem_is_context_using( 684 int unit, 685 dnx_field_fem_id_t fem_id, 686 dnx_field_context_t context_id, 687 dnx_field_group_t fg_id, 688 unsigned int *using_fem_p); 689 690 691 shr_error_e dnx_field_fem_is_context_valid( 692 int unit, 693 dnx_field_fem_id_t fem_id, 694 dnx_field_context_t context_id, 695 unsigned int *is_valid_p); 696 697 698 shr_error_e dnx_field_fem_is_context_consistent( 699 int unit, 700 dnx_field_fem_id_t fem_id, 701 dnx_field_fem_program_t fem_program, 702 dnx_field_context_t context_id, 703 unsigned int *consistent_p); 704 705 shr_error_e dnx_field_fem_is_context_valid_replace( 706 int unit, 707 dnx_field_fem_id_t fem_id, 708 dnx_field_fem_program_t fem_program, 709 dnx_field_context_t context_id, 710 unsigned int *valid_replace_p); 711 712 713 shr_error_e dnx_field_fem_is_any_context_with_replace( 714 int unit, 715 dnx_field_fem_id_t fem_id, 716 dnx_field_fem_program_t fem_program, 717 dnx_field_context_t * context_id_p); 718 719 720 shr_error_e dnx_field_fem_is_any_context_with_program( 721 int unit, 722 dnx_field_fem_id_t fem_id, 723 dnx_field_fem_program_t fem_program, 724 dnx_field_context_t * context_id_p); 725 726 727 shr_error_e dnx_field_fem_action_remove( 728 int unit, 729 dnx_field_fem_id_t fem_id, 730 dnx_field_group_t fg_id); 731 732 shr_error_e dnx_field_fem_action_add( 733 int unit, 734 dnx_field_fem_id_t fem_id, 735 dnx_field_group_t fg_id, 736 uint8 input_offset, 737 uint8 input_size, 738 dnx_field_group_t second_fg_id, 739 dnx_field_fem_condition_ms_bit_t fem_condition_ms_bit, 740 dnx_field_fem_condition_entry_t fem_condition_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_CONDITION], 741 dnx_field_action_t fem_encoded_actions[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_MAP_INDEX], 742 dnx_field_fem_action_entry_t fem_action_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_MAP_INDEX]); 743 744 shr_error_e dnx_field_actions_fem_defaults_set( 745 int unit, 746 dnx_field_fem_id_t fem_id, 747 dnx_field_fem_program_t fem_program, 748 uint8 ignore_actions); 749 750 shr_error_e dnx_field_actions_fem_set( 751 int unit, 752 dnx_field_fem_id_t fem_id, 753 dnx_field_fem_program_t fem_program, 754 dnx_field_fem_condition_ms_bit_t fem_condition_ms_bit, 755 dnx_field_fem_condition_entry_t fem_condition_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_CONDITION], 756 uint8 ignore_actions, 757 dnx_field_fem_action_entry_t fem_action_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_MAP_INDEX]); 758 759 shr_error_e dnx_field_actions_fem_get( 760 int unit, 761 dnx_field_fem_id_t fem_id, 762 dnx_field_fem_program_t fem_program, 763 dnx_field_fem_condition_ms_bit_t * fem_condition_ms_bit_p, 764 dnx_field_fem_condition_entry_t fem_condition_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_CONDITION], 765 dnx_field_fem_action_entry_t fem_action_entry[DNX_DATA_MAX_FIELD_COMMON_MAX_VAL_NOF_FEM_MAP_INDEX]); 766 767 768 shr_error_e dnx_field_actions_single_fem_single_context_defaults_set( 769 int unit, 770 dnx_field_context_t context_id, 771 dnx_field_fem_id_t fem_id); 772 773 shr_error_e dnx_field_actions_all_fem_single_context_defaults_set( 774 int unit, 775 dnx_field_context_t context_id); 776 777 shr_error_e dnx_field_actions_all_fem_all_context_defaults_set( 778 int unit); 779 780 shr_error_e dnx_field_actions_fem_context_hw_set( 781 int unit, 782 dnx_field_pmf_fem_context_entry_t * dnx_field_pmf_fem_program_entry_p); 783 784 shr_error_e dnx_field_actions_fem_context_hw_get( 785 int unit, 786 dnx_field_pmf_fem_context_entry_t * dnx_field_pmf_fem_program_entry_p); 787 788 shr_error_e dnx_field_actions_fem_condition_ms_bit_hw_set( 789 int unit, 790 dnx_field_fem_condition_ms_bit_entry_t * dnx_field_fem_condition_ms_bit_entry_p); 791 792 shr_error_e dnx_field_actions_fem_condition_ms_bit_hw_get( 793 int unit, 794 dnx_field_fem_condition_ms_bit_entry_t * dnx_field_fem_condition_ms_bit_entry_p); 795 796 shr_error_e dnx_field_actions_fem_map_index_hw_set( 797 int unit, 798 dnx_field_fem_map_index_entry_t * dnx_field_fem_map_index_entry_p); 799 800 shr_error_e dnx_field_actions_fem_map_index_hw_get( 801 int unit, 802 dnx_field_fem_map_index_entry_t * dnx_field_fem_map_index_entry_p); 803 804 shr_error_e dnx_field_actions_fem_action_info_hw_set( 805 int unit, 806 dnx_field_fem_action_info_t * dnx_field_fem_action_info_p); 807 808 shr_error_e dnx_field_actions_fem_action_info_hw_get( 809 int unit, 810 dnx_field_fem_action_info_t * dnx_field_fem_action_info_p); 811 812 813 814 815 #endif