openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

commit 77fc09a43669a3fb4e988495a1630730200b6a09
parent 9ee0371a6bad8176af34e8c4de05d19a91dcddba
Author: Broadcom SDK Release <sdk.releases@broadcom.com>
Date:   Fri, 11 Dec 2020 07:53:56 -0800

oam, mdb build fix

Diffstat:
Msdk-6.5.21/src/bcm/dnx/oam/oamp_v1/oamp_v1_pe.c | 5689+++++++++++++++++++++++++++++++++++++++----------------------------------------
Asdk-6.5.21/src/soc/dnx/mdb/auto_generated/dbx_pre_compiled_lif_mdb_auto_generated_xml_parser.h | 24++++++++++++++++++++++++
2 files changed, 2843 insertions(+), 2870 deletions(-)

diff --git a/sdk-6.5.21/src/bcm/dnx/oam/oamp_v1/oamp_v1_pe.c b/sdk-6.5.21/src/bcm/dnx/oam/oamp_v1/oamp_v1_pe.c @@ -11,6 +11,7 @@ #define BSL_LOG_MODULE BSL_LS_BCMDNX_OAM #ifdef BCM_DNX2_SUPPORT + #include <shared/shrextend/shrextend_debug.h> #include <src/bcm/dnx/oam/oamp_v1/oamp_v1_pe.h> #include "src/bcm/dnx/oam/oamp_v1/oamp_v1_pe_infra.h" @@ -18,9 +19,15 @@ #include <soc/dnx/dnx_data/auto_generated/dnx_data_bfd.h> #include <soc/dnx/swstate/auto_generated/access/oam_access.h> + + + + + #define OFST DNX_OAMP_PE_FEM_OFST #define CNST DNX_OAMP_PE_FEM_CNST + #define DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR 0x0EC90000 #define DNX_OAMP_PE_BFD_IPV6_JR1_PROG_VAR 0x0EC90020 @@ -30,6 +37,11 @@ #define DNX_OAMP_PE_BFD_VCCV_PROG_VAR 0x10000021 + + + + + static shr_error_e oamp_pe_function_default( int unit, @@ -40,25 +52,27 @@ oamp_pe_function_default( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, - inst_labels - [DNX_OAMP_PE_INST_LABEL_DEFAULT], - ALWAYS_CMP2, LOP_NXT), - DNX_OAMP_PE_INST_LABEL_DEFAULT); - + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], ALWAYS_CMP2, LOP_NXT), DNX_OAMP_PE_INST_LABEL_DEFAULT); + } exit: @@ -66,6 +80,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_copy_48_maid( int unit, @@ -77,109 +92,96 @@ oamp_pe_function_copy_48_maid( int *first_instruction) { + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_MAID_48); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_MAID_48); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_1B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_2B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_3B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 12, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 3 B), ALU_NOP, CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_MAID_48_1B); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 0x31, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 10, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_MAID_48_2B); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 10, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 1 B), ALU_NOP, CMN(READ, NONE, 0x3, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_MAID_48_3B); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 0x13, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, READ, 10, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_1B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_2B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_3B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 12, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO,DEFAULT,INST_CONST,3B), ALU_NOP, CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_MAID_48_1B); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 10, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO,DEFAULT,INST_CONST,2B), ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_MAID_48_2B); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 10, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO,DEFAULT,INST_CONST,1B), ALU_NOP, CMN(READ, NONE, 0x3, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_MAID_48_3B); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, READ, 10, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + } @@ -188,6 +190,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_default_program( int unit, @@ -205,11 +208,14 @@ oamp_pe_default_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_DEFAULT].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DEFAULT].func_ptr @@ -217,6 +223,8 @@ oamp_pe_default_program( &func_config[DNX_OAMP_PE_FUNC_DEFAULT].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_DEFAULT].first_instruction); } @@ -227,6 +235,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_echo_program( int unit, @@ -242,122 +251,129 @@ oamp_pe_bfd_echo_program( int first_instr; uint32 saved_prog_index; int udh_header_size = 0; - + uint32 instr_entry_handle_id; + uint8 pph_ttl, pph_ttl_msb, pph_ttl_lsb; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); + pph_ttl = 0xFF; pph_ttl_msb = pph_ttl >> 5; pph_ttl_lsb = (pph_ttl << 3) & 0xFF; - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 6, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 6, ALWAYS_NEVER, LOP_CST)); while (udh_header_size >= 4) { - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - udh_header_size -= 4; + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + udh_header_size -=4; } + + switch (udh_header_size) { case 0: + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); break; case 1: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); break; case 2: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); break; - case 3: - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + case 3: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); break; default: SHR_ERR_EXIT(_SHR_E_INTERNAL, "udh_header_size(%d) error.\n", udh_header_size); } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -366,9 +382,13 @@ oamp_pe_bfd_echo_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } + + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -378,6 +398,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_echo_jr1_program( int unit, @@ -393,81 +414,85 @@ oamp_pe_bfd_echo_jr1_program( int first_instr, instr_const, udp_legth_offset = 0; uint32 saved_prog_index; int udh_header_size = 0; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 9, ALWAYS_NEVER, LOP_CST)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 9, ALWAYS_NEVER, LOP_CST)); while (udh_header_size >= 4) { - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - udh_header_size -= 4; + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + udh_header_size -=4; } + switch (udh_header_size) { case 0: - + instr_const = 2; break; case 1: - + instr_const = 3; - + udp_legth_offset = 0x13; break; case 2: - + instr_const = 4; - + udp_legth_offset = 0x22; break; case 3: - + instr_const = 4; - + udp_legth_offset = 0x31; break; default: SHR_ERR_EXIT(_SHR_E_INTERNAL, "udh_header_size(%d) error.\n", udh_header_size); } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, instr_const, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, instr_const, ALWAYS_NEVER, NXT_JMP)); if (udh_header_size == 3) { - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); } - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); if (udh_header_size != 0) { - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, udp_legth_offset, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, udp_legth_offset, ALWAYS_NEVER, NXT_JMP)); } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -477,6 +502,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_maid_48_program( int unit, @@ -491,34 +517,38 @@ oamp_pe_maid_48_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); - + + + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, NEVER_NEVER, LOP_CST)); + if (func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } @@ -526,9 +556,11 @@ oamp_pe_maid_48_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); } - + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -538,6 +570,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_lmdm_flexible_da_maid_48_ccm_program( int unit, @@ -552,47 +585,53 @@ oamp_pe_lmdm_flexible_da_maid_48_ccm_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); - + + + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 6, NEVER_NEVER, LOP_CST)); + if (func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } else { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); } - + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -602,6 +641,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_down_mep_inj_self_contained_program( int unit, @@ -616,41 +656,46 @@ oamp_pe_down_mep_inj_self_contained_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); - + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - if (func_config[DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction != - DNX_OAMP_PE_NOT_SET) - { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED], - NEVER_NEVER, NXT_JMP)); + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + if (func_config[DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction != DNX_OAMP_PE_NOT_SET) + { + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } else { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config - [DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction)); + &func_config + [DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); - + } *prog_index = saved_prog_index; @@ -659,6 +704,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_down_mep_inj_self_contained_maid_48_program( int unit, @@ -673,46 +719,51 @@ oamp_pe_down_mep_inj_self_contained_maid_48_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); - + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + + + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, NEVER_NEVER, LOP_CST)); - if (func_config[DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction != - DNX_OAMP_PE_NOT_SET) + + if (func_config[DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED], - NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - } + } else { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config - [DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction)); + &func_config + [DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); - + } *prog_index = saved_prog_index; @@ -721,6 +772,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_jr2( int unit, @@ -731,128 +783,127 @@ oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_jr2( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED); - - INSTR(CE1_COPY(IN_FIFO, PPH_EXIST_UPDATE, VLD_B, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG2), CMN(READ, NONE, 0x20, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, OR), CE2_COPY(TMP_REG3, DEFAULT, TMP_REG3, 1 B), - ALU_NOP, CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x8, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NS_16_VAR_1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x30, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, POS, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_ASE_SELF_CONTAINED], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 0x2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NS_16_VAR_0, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), - ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_ASE_SELF_CONTAINED); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, PPH_EXIST_UPDATE, VLD_B, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG2), CMN(READ, NONE, 0x20, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP,CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NS_16_VAR_0, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, OR), CE2_COPY(TMP_REG3, DEFAULT, TMP_REG3, 1B), ALU_NOP,CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x8, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NS_16_VAR_1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x30, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, POS, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_ASE_SELF_CONTAINED], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x3, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 0x2, NEVER_NEVER, NXT_JMP)); + + + + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT, INST_CONST , INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NS_16_VAR_0, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_ASE_SELF_CONTAINED); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + + + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT, INST_CONST , INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NS_16_VAR_0, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + } exit: @@ -860,6 +911,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_jr1( int unit, @@ -870,120 +922,125 @@ oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_jr1( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; int udh_header_size; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED); - - INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, VSI_GEN_MEM_OFFSET_JR1, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, PPH_EXIST_UPDATE_JR1, VLD_B, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG2), CMN(READ, NONE, 0x20, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, OR), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2 B), ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED); - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x80, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, VSI_GEN_MEM_OFFSET_JR1, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT_JR1, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NS_16_VAR_1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, PPH_EXIST_UPDATE_JR1, VLD_B, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG2), CMN(READ, NONE, 0x20, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_PPH_START_JR1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x30, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, OR), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2B), ALU_NOP,CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x80, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT_JR1, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NS_16_VAR_1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_PPH_START_JR1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x30, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x3, NEVER_NEVER, NXT_JMP)); + + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_PPH_START_JR1); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT_JR1, INST_CONST, 1 B), ALU_NOP, CMN(NONE, NONE, 0x21, ALWAYS_NEVER, - NXT_JMP)); + + + + INSTR_LABEL(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_PPH_START_JR1); + INSTR(CE1_COPY(PROG_VAR, DEFAULT, INST_CONST, INST_CONST, OR), CE2_COPY(NS_8, OUTLIF_VSI_LSB_SHIFT_JR1, INST_CONST, 1B), ALU_NOP, CMN(NONE, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - if (udh_header_size > 1) + + if(udh_header_size>1) { - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - if (udh_header_size > 5) + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + if(udh_header_size > 5) { - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, udh_header_size - 5, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, udh_header_size - 5, ALWAYS_NEVER, NXT_JMP)); } else { - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, udh_header_size - 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, udh_header_size - 1, ALWAYS_NEVER, NXT_JMP)); } } else { - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, udh_header_size + 3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, udh_header_size + 3, ALWAYS_NEVER, NXT_JMP)); } - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, TMP_REG1, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_ETHERNET_JR1], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_ETHERNET_JR1); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, TMP_REG1, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_ETHERNET_JR1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_ETHERNET_JR1); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); } @@ -1008,6 +1065,7 @@ oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_dispatch( system_headers_mode = dnx_data_headers.system_headers.system_headers_mode_get(unit); + if (system_headers_mode == DBAL_ENUM_FVAL_SYSTEM_HEADERS_MODE_JERICHO_MODE) { SHR_IF_ERR_EXIT(oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_jr1(unit, @@ -1033,6 +1091,8 @@ exit: SHR_FUNC_EXIT; } + + static shr_error_e oamp_pe_function_up_mep_server_maid_48( int unit, @@ -1043,7 +1103,7 @@ oamp_pe_function_up_mep_server_maid_48( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; int system_headers_mode; @@ -1052,57 +1112,55 @@ oamp_pe_function_up_mep_server_maid_48( system_headers_mode = dnx_data_headers.system_headers.system_headers_mode_get(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, NEVER_NEVER, LOP_CST)); if (system_headers_mode == DBAL_ENUM_FVAL_SYSTEM_HEADERS_MODE_JERICHO_MODE) { + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP_JR1, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP_JR1, INST_CONST, INST_CONST, OR), CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); } else { + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP, INST_CONST, INST_CONST, OR), CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); } - INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_TC, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_16_VAR_1, DEFAULT, NONE, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_TC, INST_CONST, INST_CONST, OR), CE2_COPY(NS_16_VAR_1, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + if (func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } else { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); } } @@ -1111,6 +1169,9 @@ exit: SHR_FUNC_EXIT; } + + + static shr_error_e oamp_pe_function_up_mep_server( int unit, @@ -1121,7 +1182,7 @@ oamp_pe_function_up_mep_server( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; int system_headers_mode; @@ -1130,6 +1191,8 @@ oamp_pe_function_up_mep_server( system_headers_mode = dnx_data_headers.system_headers.system_headers_mode_get(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; @@ -1138,29 +1201,26 @@ oamp_pe_function_up_mep_server( if (system_headers_mode == DBAL_ENUM_FVAL_SYSTEM_HEADERS_MODE_JERICHO_MODE) { + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP_JR1, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP_JR1, INST_CONST, INST_CONST, OR), CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); } else { + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_DP, INST_CONST, INST_CONST, OR), CE2_COPY(NS_16_VAR_0, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); } - INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_TC, INST_CONST, INST_CONST, OR), - CE2_COPY(NS_16_VAR_1, DEFAULT, NONE, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(TC_DP_LOCAL_PORT, ITMH_TC, INST_CONST, INST_CONST, OR), CE2_COPY(NS_16_VAR_1, DEFAULT, NONE, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); } @@ -1169,6 +1229,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_dm_jumbo_tlv( int unit, @@ -1179,175 +1240,169 @@ oamp_pe_function_dm_jumbo_tlv( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x1f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT) ); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_BRANCH], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_BRANCH], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0xf8, NEVER_NEVER, LOP_NXT), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_BRANCH); - + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0xf8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_BRANCH); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 128, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, NEG, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 16, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, NEG, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_BRANCH], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 16, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 12, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_BRANCH); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 12, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_BRANCH); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY], NEVER_NEVER, - NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), - (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY)); - - INSTR_LABEL(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 3, ALWAYS_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, TLV_DATA_OFFSET, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY )); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), - CMN(NONE, NONE, 256, NEVER_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 3, ALWAYS_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), - CMN(NONE, NONE, 512, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, TLV_DATA_OFFSET , INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), CMN(NONE, NONE, 256, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), CMN(NONE, NONE, 512, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG1), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG3), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG2), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG3), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG2), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, VLD_B, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2 B), - ALU_SUB(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NPOS, TMP_REG1), CMN(NONE, NONE, 12, ALWAYS_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, VLD_B, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2B), ALU_SUB(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NPOS, TMP_REG1), CMN(NONE, NONE, 12, ALWAYS_NEVER, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0x1, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0x1, ALWAYS_CMP2, LOP_NXT)); - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_dm_jumbo_tlv_rsp( int unit, @@ -1358,176 +1413,167 @@ oamp_pe_function_dm_jumbo_tlv_rsp( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x1f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT) ); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_RSP_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_RSP_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_RSP_BRANCH], - NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_RSP_BRANCH], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0xf8, NEVER_NEVER, LOP_NXT), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_RSP_BRANCH); - + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0xf8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_PE_PROF_COMP_RSP_BRANCH); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 128, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, NEG, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_RSP_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 16, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, NEG, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_RSP_BRANCH], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 16, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 12, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_RSP_BRANCH); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 12, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_RSP_BRANCH); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PKT_LNTH, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY_RSP], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY_RSP], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY_RSP], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY_RSP], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), - (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY_RSP)); - - INSTR_LABEL(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 3, ALWAYS_NEVER, NXT_JMP), - (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY_RSP)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, TLV_DATA_OFFSET_RSP, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_MPLS_COPY_RSP )); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR_LABEL(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 3, ALWAYS_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_JUMBO_TLV_UP_COPY_RSP)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), - CMN(NONE, NONE, 256, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, TLV_DATA_OFFSET_RSP, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), - CMN(NONE, NONE, 512, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), CMN(NONE, NONE, 256, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), CMN(NONE, NONE, 512, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG1), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG3), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG2), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG3), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(MEM_OUT, TMP_REG2), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, VLD_B, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2B), ALU_SUB(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NPOS, TMP_REG1), CMN(NONE, NONE, 12, ALWAYS_NEVER, LOP_NXT)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, VLD_B, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2 B), - ALU_SUB(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NPOS, TMP_REG1), CMN(NONE, NONE, 12, ALWAYS_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0x1, ALWAYS_CMP2, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0x1, ALWAYS_CMP2, LOP_NXT)); - - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_bfd_single_hop_random_dip( int unit, @@ -1538,98 +1584,97 @@ oamp_pe_function_bfd_single_hop_random_dip( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; + uint8 pph_ttl, pph_ttl_msb, pph_ttl_lsb; + uint8 oamp_tx_format, jr1_format; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + oamp_tx_format = dnx_data_headers.system_headers.system_headers_mode_get(unit); jr1_format = dnx_data_headers.system_headers.system_headers_mode_jericho_get(unit); - if (oamp_tx_format == jr1_format) + if(oamp_tx_format == jr1_format) { + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 5, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 5, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 5, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 5, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); } else { - + pph_ttl = 0xFF; pph_ttl_msb = pph_ttl >> 5; pph_ttl_lsb = (pph_ttl << 3) & 0xFF; - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 5, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 5, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 7, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 7, ALWAYS_NEVER, LOP_CST)); + if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -1638,16 +1683,17 @@ oamp_pe_function_bfd_single_hop_random_dip( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } } - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_bfd_mplstp_vccv( int unit, @@ -1658,106 +1704,104 @@ oamp_pe_function_bfd_mplstp_vccv( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, VCCV_BFD, VLD_B, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x45, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 255, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, NONE, 1 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, VCCV_BFD, VLD_B, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x45, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 255, ALWAYS_NEVER, NXT_JMP)); + + + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, NONE, 1B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0XFE, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), CMN(NONE, NONE, 0xFF, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0xFF, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG4, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG4), - CMN(NONE, NONE, 0xFF, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0xFF, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, NEG, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 00, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM_ADDTIONAL], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM], NEVER_NEVER, NXT_JMP)); + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, NEG, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 00, NEVER_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 0X1, NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM_ADDTIONAL)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM_ADDTIONAL], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 0x1FF, NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 0X1,NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM_ADDTIONAL)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 0x1FF,NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_BFD_VCCV_CHECKSUM)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -1766,15 +1810,16 @@ oamp_pe_function_bfd_mplstp_vccv( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_up_mep_dm_tod( int unit, @@ -1785,146 +1830,137 @@ oamp_pe_function_up_mep_dm_tod( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; bcm_port_t recyle_port_core0 = 0; bcm_port_t recyle_port_core1 = 0; uint32 itmh_lsb_4b = 0; - uint8 itmh_0b = 0; - uint8 core_id = 0; - uint8 itmh_1b_core[] = { 0, 0 }; - uint8 itmh_2b_core[] = { 0, 0 }; - uint8 itmh_3b_core[] = { 0, 0 }; - uint8 itmh_4b_core[] = { 0, 0 }; + uint8 itmh_0b = 0; + uint8 core_id = 0; + uint8 itmh_1b_core[] = {0, 0}; + uint8 itmh_2b_core[] = {0, 0}; + uint8 itmh_3b_core[] = {0, 0}; + uint8 itmh_4b_core[] = {0, 0}; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - + recyle_port_core0 = dnx_data_oam.oamp.up_mep_tod_recycle_port_core_0_get(unit); recyle_port_core1 = dnx_data_oam.oamp.up_mep_tod_recycle_port_core_1_get(unit); - itmh_0b = 0x8; - for (core_id = 0; core_id < DBAL_MAX_NUM_OF_CORES; core_id++) + itmh_0b = 0x8; + for(core_id = 0; core_id < DBAL_MAX_NUM_OF_CORES; core_id ++) { - itmh_lsb_4b = (0x180000 | ((core_id ? recyle_port_core1 : recyle_port_core0) << 1)) << 8; - itmh_1b_core[core_id] = (itmh_lsb_4b & 0xff000000) >> 24; - itmh_2b_core[core_id] = (itmh_lsb_4b & 0xff0000) >> 16; - itmh_3b_core[core_id] = (itmh_lsb_4b & 0xff00) >> 8; - itmh_4b_core[core_id] = itmh_lsb_4b & 0xff; + itmh_lsb_4b = (0x180000|((core_id ? recyle_port_core1 : recyle_port_core0)<<1))<<8; + itmh_1b_core[core_id] = (itmh_lsb_4b&0xff000000) >> 24; + itmh_2b_core[core_id] = (itmh_lsb_4b&0xff0000) >> 16; + itmh_3b_core[core_id] = (itmh_lsb_4b&0xff00)>>8; + itmh_4b_core[core_id] = itmh_lsb_4b&0xff; } + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_16_VAR_1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG4), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG3, INST_VAR, ALWAYS, POS, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_CORE_1], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_0b, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_1b_core[0], ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_2b_core[0], ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_3b_core[0], ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_4b_core[0], ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG3, INST_VAR, ALWAYS, NEG, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_SKIP_CORE_1], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_1b_core[1], ALWAYS_NEVER, NXT_JMP), - (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_CORE_1)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_2b_core[1], ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_3b_core[1], ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, itmh_4b_core[1], ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 20, NEVER_NEVER, NXT_JMP), - (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_SKIP_CORE_1)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PRG_VAR, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_DMM_OFFSET], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 16, NEVER_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP), - (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_DMM_OFFSET)); - - INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, NEG, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_UNTAG], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 4, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_16_VAR_1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG4), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_ONE_TAG], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 4, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG3, INST_VAR, ALWAYS, POS, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_CORE_1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_0b, ALWAYS_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_1b_core[0], ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_2b_core[0], ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_3b_core[0], ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_4b_core[0], ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG3, INST_VAR, ALWAYS, NEG, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_SKIP_CORE_1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_ONE_TAG); + + INSTR_LABEL(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_1b_core[1], ALWAYS_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_CORE_1)); + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_2b_core[1], ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_3b_core[1], ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, itmh_4b_core[1], ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 20, NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_SKIP_CORE_1)); + + INSTR(CE1_NOP, CE2_NOP,ALU_SUB(PRG_VAR, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_DMM_OFFSET], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 16, NEVER_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_DMM_OFFSET)); + + INSTR(CE1_NOP, CE2_COPY(NS_16_VAR_0, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_NOP, CE2_COPY(TMP_REG1, DEFAULT, INST_CONST, 2 B), ALU_NOP, - CMN(NONE, WRITE, 2, NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_UNTAG)); + + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, NEG, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_UNTAG], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 4, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x20, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_ONE_TAG], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 4, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_ADD(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP),DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_ONE_TAG); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR_LABEL(CE1_NOP, CE2_COPY(TMP_REG1, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, WRITE, 2, NEVER_NEVER, NXT_JMP), (DNX_OAMP_PE_INST_LABEL_UP_MEP_DM_TOD_UNTAG)); - INSTR(CE1_COPY(FDBK_FIFO, UP_MEP_DM_TOD_OFFSET, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x20, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, UP_MEP_DM_TOD_OFFSET, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + + static shr_error_e oamp_pe_function_lmdm_flexible_da( int unit, @@ -1935,72 +1971,72 @@ oamp_pe_function_lmdm_flexible_da( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, CMN(READ, WRITE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, CMN(READ, WRITE, 0, NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 18, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x80, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3),CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, NEVER, POS, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_FLEXIBLE_DA_UP_MEP], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x01, ALWAYS_NEVER, NXT_JMP));; - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 0x02, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG2, INST_VAR, NEVER, POS, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_FLEXIBLE_DA_UP_MEP], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x01, ALWAYS_NEVER, NXT_JMP));; - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 0x02, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_FLEXIBLE_DA_UP_MEP); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 0x02, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_FLEXIBLE_DA_UP_MEP); + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 0x02, ALWAYS_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - } + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_additional_gal_special_label( int unit, @@ -2011,192 +2047,165 @@ oamp_pe_function_additional_gal_special_label( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 16, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 16, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_2B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_3B], NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_2B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_3B], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_4B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_4B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1B); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_2B); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 1 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x01, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x03, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_3B); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x22, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x10, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_4B); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1B); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_2B); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 1B), ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x01, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x03, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_3B); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x10, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_4B); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_additional_gal_special_label_maid48( int unit, @@ -2207,149 +2216,137 @@ oamp_pe_function_additional_gal_special_label_maid48( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, NEVER_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 64, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 64, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG3, BYTES_RD, NONE, NEVER, NPOS, TMP_REG3), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG3, BYTES_RD, NONE, NEVER, NPOS, TMP_REG3), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_1B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_2B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_3B], NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_1B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_2B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_3B], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_4B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_4B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_1B); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_2B); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x03, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_3B); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x00, NEVER_NEVER, NXT_JMP)); - + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_1B); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_2B); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x03, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_3B); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x00, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_4B); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_4B); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP, DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_MAID48_END); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 9, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - + if (func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } @@ -2357,15 +2354,16 @@ oamp_pe_function_additional_gal_special_label_maid48( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); } - } + } exit: DBAL_FUNC_FREE_VARS; SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_ipv6_jr1_program( int unit, @@ -2380,14 +2378,17 @@ oamp_pe_bfd_ipv6_jr1_program( { int first_instr, instr_const; int udh_header_size = 0; - + uint32 instr_entry_handle_id; uint32 saved_prog_index; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { @@ -2395,38 +2396,38 @@ oamp_pe_bfd_ipv6_jr1_program( SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); + + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 10, NEVER_NEVER, LOP_CST)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, OR), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP,CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP,CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, OR), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_NOP,CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + while (udh_header_size >= 4) { - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); udh_header_size -= 4; } @@ -2447,219 +2448,213 @@ oamp_pe_bfd_ipv6_jr1_program( default: SHR_ERR_EXIT(_SHR_E_INTERNAL, "udh_header_size(%d) error.\n", udh_header_size); } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, instr_const, ALWAYS_NEVER, NXT_JMP)); - + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, instr_const, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, NEVER_NEVER, LOP_CST)); - INSTR(CE1_COPY(FDBK_FIFO, BFD_IPV6_ECHO, INST_CONST, INST_CONST, FEM), CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, BFD_IPV6_ECHO, INST_CONST, INST_CONST, FEM), CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x4, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x4, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG1), CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 8, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 8, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_SBFD], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_SBFD], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); switch (udh_header_size) { case 0: - + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2B), + ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); break; case 1: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x12, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x12, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); break; case 2: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); break; case 3: default: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2B), + ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); break; } - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_ECHO], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_ECHO], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO], NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_SBFD); + CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO], NEVER_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_SBFD); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_ECHO], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT , NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT , INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_ECHO], NEVER_NEVER, NXT_JMP)); - if (udh_header_size != 0) - { + + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - } - else - { - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - } + if (udh_header_size != 0) { + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); + } else { + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + } switch (udh_header_size) { case 0: - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); break; case 1: - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); break; case 2: - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); break; case 3: default: - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_NO_ECHO); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); break; } - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG4), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_ECHO); + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG4), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_JR1_ECHO); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG4, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG4, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + if (func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1], NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } @@ -2667,9 +2662,11 @@ oamp_pe_bfd_ipv6_jr1_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -2680,6 +2677,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_ipv6_program( int unit, @@ -2693,158 +2691,175 @@ oamp_pe_bfd_ipv6_program( oamp_pe_func_config_t * func_config) { int first_instr; - + uint32 instr_entry_handle_id; uint32 saved_prog_index; + uint8 pph_ttl, pph_ttl_msb, pph_ttl_lsb; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + + + pph_ttl = 0xFF; pph_ttl_msb = pph_ttl >> 5; pph_ttl_lsb = (pph_ttl << 3) & 0xFF; + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 6, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 10, NEVER_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP,CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, OR), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_NOP,CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, NONE), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(FDBK_FIFO, BFD_IPV6_ECHO, INST_CONST, INST_CONST, FEM), CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, CONCATENATE), + CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0x4, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG1), CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, OR), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, NONE), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, BFD_IPV6_ECHO, INST_CONST, INST_CONST, FEM), CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 8, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, NEVER_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_SBFD], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0x4, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 8, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, NEVER_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2B), + ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_SBFD], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_DISCR_MSB], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_SBFD); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG4, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_DISCR_MSB], NEVER_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x1, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_SBFD); + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO ); - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2B), + ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG1, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP, DNX_OAMP_PE_INST_LABEL_BFD_IPV6_DISCR_MSB); if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -2853,9 +2868,12 @@ oamp_pe_bfd_ipv6_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -2865,6 +2883,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_ipv6_mpls_jr1_program( int unit, @@ -2881,260 +2900,281 @@ oamp_pe_bfd_ipv6_mpls_jr1_program( int instr_const; int udh_header_size = 0; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); - + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); + + - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 10, NEVER_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 5, ALWAYS_NEVER, LOP_CST)); - + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP,CMN(READ, NONE, 5, ALWAYS_NEVER, LOP_CST)); + while (udh_header_size >= 4) { - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); udh_header_size -= 4; } - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG1), CMN(NONE, NONE, 0xFF, NEVER_NEVER, NXT_JMP)); switch (udh_header_size) { case 0: - + instr_const = 0; break; case 1: - + instr_const = 1; break; case 2: - + instr_const = 2; break; case 3: default: - + instr_const = 3; break; } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, instr_const, ALWAYS_NEVER, NXT_JMP)); - + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, instr_const, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, NEVER_NEVER, LOP_CST)); - if (udh_header_size != 0) - { - + if (udh_header_size != 0) { + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); } switch (udh_header_size) { case 0: - + instr_const = 0x30; break; case 1: - + instr_const = 0x0; break; case 2: - + instr_const = 0x10; break; case 3: default: - + instr_const = 0x20; break; } - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, instr_const, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, instr_const, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG3), - CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); + CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 7, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 7, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x7F, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x7F, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 4, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 4, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD], NEVER_NEVER, NXT_JMP)); + CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD], NEVER_NEVER, NXT_JMP)); switch (udh_header_size) { case 0: - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); - - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); break; case 1: - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + - INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x12, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x12, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); break; case 2: + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); break; case 3: default: - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x12, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_NO_SBFD); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x12, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_JR1_AFTER_SBFD); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); break; - } + } + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -3145,6 +3185,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_ipv6_mpls_program( int unit, @@ -3159,155 +3200,168 @@ oamp_pe_bfd_ipv6_mpls_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; + uint8 pph_ttl, pph_ttl_msb, pph_ttl_lsb; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); - + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + pph_ttl = 0xFF; pph_ttl_msb = pph_ttl >> 5; pph_ttl_lsb = (pph_ttl << 3) & 0xFF; + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); - + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 10, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 10, NEVER_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO ); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG1), CMN(NONE, NONE, 0xFF, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, NEVER_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), - CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG3), - CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 7, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, READ, 0x22, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x7F, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), + CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_COPY(FDBK_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(NONE, READ, 0, NEVER_NEVER, NXT_JMP)); + + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 7, ALWAYS_NEVER, LOP_CST)); + + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x7F, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(INST_VAR, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, READ, 1, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x4, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x4, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_NO_SBFD], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_NO_SBFD], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG2), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_AFTER_SBFD], NEVER_NEVER, NXT_JMP)); + CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_AFTER_SBFD], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_NO_SBFD); + + INSTR_LABEL(CE1_COPY(TMP_REG4, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), + DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_NO_SBFD); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2 B), - ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_AFTER_SBFD); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(TMP_REG3, DEFAULT, NONE, 2B), + ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_MPLS_AFTER_SBFD); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -3316,9 +3370,12 @@ oamp_pe_bfd_ipv6_mpls_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -3329,6 +3386,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_discr_msb_1( int unit, @@ -3339,16 +3397,22 @@ oamp_pe_function_discr_msb_1( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; + int udh_header_size = 0, rem_bytes_to_discr; + uint8 oamp_tx_format, jr1_format; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + + + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; @@ -3357,9 +3421,11 @@ oamp_pe_function_discr_msb_1( SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); + oamp_tx_format = dnx_data_headers.system_headers.system_headers_mode_get(unit); jr1_format = dnx_data_headers.system_headers.system_headers_mode_jericho_get(unit); + if (oamp_tx_format == jr1_format) { rem_bytes_to_discr = udh_header_size & 0x3; @@ -3369,94 +3435,103 @@ oamp_pe_function_discr_msb_1( rem_bytes_to_discr = (2 + udh_header_size) & 0x3; } + switch (rem_bytes_to_discr) { - + case 0: + + INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x80, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG3, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); break; + case 1: + + INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x80, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x80, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); break; + case 2: + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x22, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x80, NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, TMP_REG2, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG3, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); break; + case 3: + + INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x80, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x80, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); break; } + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + } @@ -3465,6 +3540,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_function_local_discr( int unit, @@ -3475,7 +3551,7 @@ oamp_pe_function_local_discr( int *next_instruction_index, int *first_instruction) { - + uint32 instr_entry_handle_id; uint32 full_entry_threshold = 0; @@ -3484,64 +3560,70 @@ oamp_pe_function_local_discr( full_entry_threshold = dnx_data_oam.oamp.oamp_mep_full_entry_threshold_get(unit); + + + + if (*first_instruction == DNX_OAMP_PE_NOT_SET) { *first_instruction = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR); + + + + + + INSTR_LABEL(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x80, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x80, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_NO_MSB_1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_NO_MSB_1], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG1, INST_VAR, NEVER, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_REST], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG1, INST_VAR, NEVER, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_REST], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_NO_MSB_1); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_NO_MSB_1); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_REST); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR_REST); - if (full_entry_threshold == 0) - { - - INSTR(CE1_COPY(NS_16_VAR_0, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - } - else - { - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x12, ALWAYS_NEVER, NXT_JMP)); + if (full_entry_threshold == 0) { + + INSTR(CE1_COPY(NS_16_VAR_0, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + } else { + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x12, ALWAYS_NEVER, NXT_JMP)); } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + } exit: @@ -3549,6 +3631,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_default_program( int unit, @@ -3565,136 +3648,147 @@ oamp_pe_bfd_default_program( int udh_header_size = 0, discriminator_offset, dwords_to_discr; uint32 saved_prog_index; + uint32 instr_entry_handle_id; + uint8 oamp_tx_format, jr1_format; + uint8 pph_ttl, pph_ttl_msb, pph_ttl_lsb; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); + oamp_tx_format = dnx_data_headers.system_headers.system_headers_mode_get(unit); jr1_format = dnx_data_headers.system_headers.system_headers_mode_jericho_get(unit); + if (oamp_tx_format == jr1_format) { - + discriminator_offset = 48 + udh_header_size; + dwords_to_discr = discriminator_offset >> 2; } else { - + + pph_ttl = 0xFF; pph_ttl_msb = pph_ttl >> 5; pph_ttl_lsb = (pph_ttl << 3) & 0xFF; } - if (oamp_tx_format == jr1_format) + + + + if(oamp_tx_format == jr1_format) { + - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO); + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_IPV6_NO_ECHO ); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, dwords_to_discr, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, dwords_to_discr, ALWAYS_NEVER, LOP_CST)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + if (func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } else { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction)); } } else { + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG1), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG1), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, ENC_OFFS, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, ENC_OFFS, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0x4, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG1, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 8, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 8, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, POS, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_DEFAULT_LOOP_COPY_PDU], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, POS, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_DEFAULT_LOOP_COPY_PDU], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG1, INST_VAR, NEVER, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, TMP_REG1, INST_VAR, NEVER, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG2, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, - LOP_NXT), - DNX_OAMP_PE_INST_LABEL_BFD_DEFAULT_LOOP_COPY_PDU); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG2, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_BFD_DEFAULT_LOOP_COPY_PDU); if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -3703,10 +3797,12 @@ oamp_pe_bfd_default_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -3717,6 +3813,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_down_add_udh_jr1_program( int unit, @@ -3733,123 +3830,124 @@ oamp_pe_down_add_udh_jr1_program( int udh_header_size = 0; uint32 saved_prog_index; + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 128, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, TMP_REG2, INST_VAR, ALWAYS, NEG, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_SYSTEM_HEADER_HANDLING], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, TMP_REG2, INST_VAR, ALWAYS, NEG, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_SYSTEM_HEADER_HANDLING], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); - + + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, NEVER_NEVER, LOP_CST)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x10, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_SYSTEM_HEADER_HANDLING); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x10, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_SYSTEM_HEADER_HANDLING); + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0xc0, NEVER_NEVER, NXT_JMP)); - + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 0x80, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT) ); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG1, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_OTSH_EXIST], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG1, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_OTSH_EXIST], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - if (udh_header_size <= 4) + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + if(udh_header_size <= 4) { - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, udh_header_size, ALWAYS_NEVER, NXT_JMP)); - + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, udh_header_size, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } else { - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, (udh_header_size - 4), ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, (udh_header_size - 4), ALWAYS_NEVER, NXT_JMP)); } + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_MAID48_HANDLING], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PKT_LNTH, TMP_REG2, INST_VAR, ALWAYS, POS, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_MAID48_HANDLING], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_OTSH_EXIST); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_OTSH_EXIST); + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - if (udh_header_size <= 4) + + if(udh_header_size <= 4) { - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, udh_header_size, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, udh_header_size, ALWAYS_NEVER, NXT_JMP)); } else { - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, (udh_header_size - 4), ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, (udh_header_size - 4), ALWAYS_NEVER, NXT_JMP)); } - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT)); - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 106, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_MAID48_HANDLING); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG1), CMN(NONE, NONE, 106, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_JR1_ADD_UDH_MAID48_HANDLING); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + if (func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } @@ -3857,9 +3955,12 @@ oamp_pe_down_add_udh_jr1_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_COPY_MAID_48].first_instruction)); } + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -3870,6 +3971,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_up_mep_server_program( int unit, @@ -3887,11 +3989,14 @@ oamp_pe_up_mep_server_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER].func_ptr @@ -3899,6 +4004,8 @@ oamp_pe_up_mep_server_program( &func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER].first_instruction); } @@ -3909,400 +4016,361 @@ exit: SHR_FUNC_EXIT; } -static shr_error_e -oamp_pe_up_mep_server_maid_48_program( - int unit, - dnx_oamp_pe_label_mode_e label_mode, - dbal_enum_value_field_oamp_pe_program_enum_e program_id, - int program_const, - int *inst_labels, - int *next_instruction_index, - int *next_valid_program_index, - int *prog_index, - oamp_pe_func_config_t * func_config) -{ - uint32 saved_prog_index; - - SHR_FUNC_INIT_VARS(unit); - DBAL_FUNC_INIT_VARS(unit); - - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); - - if (saved_prog_index == DNX_OAMP_PE_NOT_SET) - { - - if (func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].first_instruction == DNX_OAMP_PE_NOT_SET) - { - SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].func_ptr - (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].first_instruction)); - } - - SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, - func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].first_instruction); - } - *prog_index = saved_prog_index; - -exit: - DBAL_FUNC_FREE_VARS; - SHR_FUNC_EXIT; -} - -static shr_error_e -oamp_pe_1dm_program( - int unit, - dnx_oamp_pe_label_mode_e label_mode, - dbal_enum_value_field_oamp_pe_program_enum_e program_id, - int program_const, - int *inst_labels, - int *next_instruction_index, - int *next_valid_program_index, - int *prog_index, - oamp_pe_func_config_t * func_config) -{ - int first_instr; - uint32 saved_prog_index; - - uint32 instr_entry_handle_id; - - SHR_FUNC_INIT_VARS(unit); - DBAL_FUNC_INIT_VARS(unit); - - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); - - if (saved_prog_index == DNX_OAMP_PE_NOT_SET) - { - first_instr = *next_instruction_index; - - SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 8, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x1f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, TMP_REG3, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_PE_PROF_COMP_BRANCH], NEVER_NEVER, - NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_BRANCH], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, 0xf8, NEVER_NEVER, LOP_NXT), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_PE_PROF_COMP_BRANCH); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 112, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_BRANCH], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT), - DNX_OAMP_PE_INST_LABEL_1DM_BRANCH); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_1B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_2B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_3B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_4B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), - CMN(NONE, NONE, 8, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_BRANCH); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_1B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_2B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_3B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_4B], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x03, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_3B); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x22, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_4B); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x10, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_4B); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_1B); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_1B); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_2B); - - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_2B); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 1 B), - ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x01, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2 B), ALU_SET(FEM, TMP_REG4), - CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); +static shr_error_e +oamp_pe_up_mep_server_maid_48_program( + int unit, + dnx_oamp_pe_label_mode_e label_mode, + dbal_enum_value_field_oamp_pe_program_enum_e program_id, + int program_const, + int *inst_labels, + int *next_instruction_index, + int *next_valid_program_index, + int *prog_index, + oamp_pe_func_config_t * func_config) +{ + uint32 saved_prog_index; - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), - CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + SHR_FUNC_INIT_VARS(unit); + DBAL_FUNC_INIT_VARS(unit); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + - INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) + { + + if (func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].first_instruction == DNX_OAMP_PE_NOT_SET) + { + SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].func_ptr + (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, + &func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].first_instruction)); + } - INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, + func_config[DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48].first_instruction); + } + *prog_index = saved_prog_index; - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); +exit: + DBAL_FUNC_FREE_VARS; + SHR_FUNC_EXIT; +} - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_3B); - INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); +static shr_error_e +oamp_pe_1dm_program( + int unit, + dnx_oamp_pe_label_mode_e label_mode, + dbal_enum_value_field_oamp_pe_program_enum_e program_id, + int program_const, + int *inst_labels, + int *next_instruction_index, + int *next_valid_program_index, + int *prog_index, + oamp_pe_func_config_t * func_config) +{ + int first_instr; + uint32 saved_prog_index; + + uint32 instr_entry_handle_id; - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + SHR_FUNC_INIT_VARS(unit); + DBAL_FUNC_INIT_VARS(unit); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) + { + first_instr = *next_instruction_index; - INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP), - DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV); + SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 8, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 3, NEVER_NEVER, LOP_NXT)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG1, PRG_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG3), CMN(NONE, NONE, 0x1f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, TMP_REG3, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, LOP_NXT) ); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_PE_PROF_COMP_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, 0xf8, NEVER_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_PE_PROF_COMP_BRANCH); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 112, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_BRANCH], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, NEVER_NEVER, LOP_NXT)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT), DNX_OAMP_PE_INST_LABEL_1DM_BRANCH); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_1B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_2B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_3B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_4B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_ALWAYS, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG1, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG1), CMN(NONE, NONE, 8, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_BRANCH); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 1, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 2, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 3, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_1B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_2B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_3B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG4), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG2, TMP_REG4, INST_VAR, ALWAYS, ZERO, TMP_REG1), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_4B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x03, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_3B); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x22, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_4B); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x10, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_4B); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, CONCATENATE), CE2_COPY(FDBK_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(NONE, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_1B); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_SET(FEM, TMP_REG3), CMN(READ, NONE, 0x21, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_1B); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_2B); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x2, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_GAL_UPDATE_1DM_2B); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_COPY(IN_FIFO, DEFAULT, NONE, 1B), ALU_SET(FEM, TMP_REG3), CMN(READ, WRITE, 0x01, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x01, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(PROG_VAR, DEFAULT, NONE, 2B), ALU_SET(FEM, TMP_REG4), CMN(NONE, NONE, 0x0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0x000f, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, TMP_REG4, ALU_OUT, ALWAYS, NEVER, TMP_REG3), CMN(NONE, NONE, 0, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x02, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(FDBK_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x4, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_3B); + + INSTR(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR_MSB, TMP_REG2), CMN(NONE, NONE, 0x2d, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 1, ALWAYS_NEVER, NXT_JMP)); + + + INSTR_LABEL(CE1_NOP, CE2_NOP, ALU_SET(INST_VAR, TMP_REG2), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP), DNX_OAMP_PE_INST_LABEL_1DM_TIME_STAMP_TLV); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(NONE, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_ALWAYS, NXT_JMP)); + + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -4312,6 +4380,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_dm_jumbo_tlv_program( int unit, @@ -4329,11 +4398,14 @@ oamp_pe_dm_jumbo_tlv_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV].func_ptr @@ -4341,6 +4413,8 @@ oamp_pe_dm_jumbo_tlv_program( &func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV].first_instruction); } @@ -4351,6 +4425,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_dm_jumbo_tlv_rsp_program( int unit, @@ -4368,11 +4443,14 @@ oamp_pe_dm_jumbo_tlv_rsp_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV_RSP].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV_RSP].func_ptr @@ -4380,6 +4458,8 @@ oamp_pe_dm_jumbo_tlv_rsp_program( &func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV_RSP].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_DM_JUMBO_TLV_RSP].first_instruction); } @@ -4390,6 +4470,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_single_hop_random_dip_program( int unit, @@ -4407,11 +4488,14 @@ oamp_pe_bfd_single_hop_random_dip_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_SINGLE_HOP_RANDOM_DIP].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_SINGLE_HOP_RANDOM_DIP].func_ptr @@ -4419,6 +4503,8 @@ oamp_pe_bfd_single_hop_random_dip_program( &func_config[DNX_OAMP_PE_FUNC_SINGLE_HOP_RANDOM_DIP].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_SINGLE_HOP_RANDOM_DIP].first_instruction); } @@ -4429,6 +4515,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_mplstp_vccv_program( int unit, @@ -4446,11 +4533,14 @@ oamp_pe_bfd_mplstp_vccv_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_VCCV_TYPE_BFD].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_VCCV_TYPE_BFD].func_ptr @@ -4458,6 +4548,8 @@ oamp_pe_bfd_mplstp_vccv_program( &func_config[DNX_OAMP_PE_FUNC_VCCV_TYPE_BFD].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_VCCV_TYPE_BFD].first_instruction); } @@ -4468,6 +4560,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_up_mep_dm_tod_program( int unit, @@ -4485,11 +4578,14 @@ oamp_pe_up_mep_dm_tod_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_UP_MEP_DM_TOD].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_UP_MEP_DM_TOD].func_ptr @@ -4497,6 +4593,8 @@ oamp_pe_up_mep_dm_tod_program( &func_config[DNX_OAMP_PE_FUNC_UP_MEP_DM_TOD].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_UP_MEP_DM_TOD].first_instruction); } @@ -4507,6 +4605,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_lmdm_flexible_da_program( int unit, @@ -4524,11 +4623,14 @@ oamp_pe_lmdm_flexible_da_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_LMDM_FLEXIBLE_DA].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LMDM_FLEXIBLE_DA].func_ptr @@ -4536,6 +4638,8 @@ oamp_pe_lmdm_flexible_da_program( &func_config[DNX_OAMP_PE_FUNC_LMDM_FLEXIBLE_DA].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_LMDM_FLEXIBLE_DA].first_instruction); } @@ -4546,6 +4650,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_signal_detect_ccm_program( int unit, @@ -4560,38 +4665,44 @@ oamp_pe_signal_detect_ccm_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 20, NEVER_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PRG_VAR, NS_8, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_SIGNAL_DETECT_COPY_REST], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PRG_VAR, NS_8, INST_VAR, ALWAYS, ZERO, TMP_REG4),CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_SIGNAL_DETECT_COPY_REST], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 8, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, SIGNAL_DETECT_SET, INST_CONST, INST_CONST, CONCATENATE), - CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, SIGNAL_DETECT_SET, INST_CONST, INST_CONST, CONCATENATE), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); - INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT), - DNX_OAMP_PE_INST_LABEL_SIGNAL_DETECT_COPY_REST); + + INSTR_LABEL(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(PKT_LNTH, BYTES_RD, NONE, NPOS, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_CMP2, LOP_NXT), DNX_OAMP_PE_INST_LABEL_SIGNAL_DETECT_COPY_REST); + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -4601,6 +4712,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_signal_detect_maid_48_ccm_program( int unit, @@ -4615,46 +4727,51 @@ oamp_pe_signal_detect_maid_48_ccm_program( { int first_instr; uint32 saved_prog_index; - + uint32 instr_entry_handle_id; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); - INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); - - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4 B), ALU_NOP, - CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); - + + + INSTR(CE1_NOP, CE2_NOP, ALU_ADD(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 82, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 4B), ALU_NOP, CMN(READ, WRITE, 12, NEVER_NEVER, LOP_CST)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, NEVER_NEVER, LOP_CST)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(PRG_VAR, NS_8, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 8, ALWAYS_NEVER, LOP_CST)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(PRG_VAR, NS_8, INST_VAR, ALWAYS, ZERO, TMP_REG4),CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(NONE, NONE, INST_VAR, ALWAYS, ALWAYS, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_1B], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 8, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, SIGNAL_DETECT_SET, INST_CONST, INST_CONST, CONCATENATE), - CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2 B), ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(NONE, NONE, INST_VAR, ALWAYS, ALWAYS, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_MAID_48_1B], NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, SIGNAL_DETECT_SET, INST_CONST, INST_CONST, CONCATENATE), CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 2B), ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } *prog_index = saved_prog_index; @@ -4664,6 +4781,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_seamless_bfd_ipv4_program( int unit, @@ -4679,79 +4797,86 @@ oamp_pe_bfd_seamless_bfd_ipv4_program( int first_instr; uint32 saved_prog_index; + uint32 instr_entry_handle_id; + uint8 pph_ttl, pph_ttl_msb, pph_ttl_lsb; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + pph_ttl = 0xFF; pph_ttl_msb = pph_ttl >> 5; pph_ttl_lsb = (pph_ttl << 3) & 0xFF; - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); + + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 4, ALWAYS_NEVER, LOP_CST)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG3), - CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG3), CMN(NONE, NONE, 0x10, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1 B), ALU_SET(FEM, TMP_REG2), - CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_COPY(IN_FIFO, DEFAULT, INST_CONST, 1B), ALU_SET(FEM, TMP_REG2), CMN(NONE, NONE, 0x20, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), - CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG3, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG3), CMN(NONE, NONE, pph_ttl_msb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_OR(TMP_REG2, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, pph_ttl_lsb, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 20, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 20, NEVER_NEVER, LOP_NXT)); - INSTR(CE1_COPY(TMP_REG3, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG3, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(TMP_REG2, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x11, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT) ); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + if (func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction != DNX_OAMP_PE_NOT_SET) { - - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_BFD_LOCAL_DISCR], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); @@ -4760,9 +4885,12 @@ oamp_pe_bfd_seamless_bfd_ipv4_program( { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_LOCAL_DISCR].first_instruction)); } + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -4773,6 +4901,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_bfd_seamless_bfd_ipv4_jr1_program( int unit, @@ -4788,123 +4917,133 @@ oamp_pe_bfd_seamless_bfd_ipv4_jr1_program( int first_instr; uint32 saved_prog_index; + uint32 instr_entry_handle_id; uint32 udh_header_size = 0; SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { first_instr = *next_instruction_index; SHR_IF_ERR_EXIT(DBAL_HANDLE_ALLOC(unit, DBAL_TABLE_OAMP_PE_INSTRUCTIONS, &instr_entry_handle_id)); + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, &udh_header_size)); + udh_header_size = udh_header_size & 0x3; - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), - CMN(NONE, NONE, 20, NEVER_NEVER, LOP_NXT)); + - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(PDU_OFFS, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG1), CMN(NONE, NONE, 20, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, - ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, VLD_B, FEM), CE2_NOP, ALU_SUB(TMP_REG1, BYTES_RD, NONE, NEVER, NPOS, TMP_REG1), CMN(READ, NONE, 0, ALWAYS_NEVER, LOP_NXT)); switch (udh_header_size) { case 0: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); break; case 1: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 1, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, NEVER_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x13, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); break; case 2: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 2, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x22, ALWAYS_NEVER, NXT_JMP)); break; case 3: default: + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 3, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(PROG_VAR, DEFAULT, NONE, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(NONE, NONE, 4, ALWAYS_NEVER, NXT_JMP)); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, INST_CONST, INST_CONST, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0x31, ALWAYS_NEVER, NXT_JMP)); break; } - INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), - CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(NS_8, INST_VAR, ALU_OUT, ALWAYS, ALWAYS, TMP_REG2), CMN(NONE, NONE, 0x8, NEVER_NEVER, LOP_NXT) ); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, - CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG3), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP)); - - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); - INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + INSTR(CE1_COPY(IN_FIFO, DEFAULT, NONE, VLD_B, FEM), CE2_NOP, ALU_NOP, CMN(READ, NONE, 0, ALWAYS_NEVER, NXT_JMP)); - if (func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction != DNX_OAMP_PE_NOT_SET) - { + - INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), - CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_AND(TMP_REG2, TMP_REG2, INST_VAR, ALWAYS, ZERO, TMP_REG3), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DEFAULT], NEVER_NEVER, NXT_JMP)); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + + + if (func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction != DNX_OAMP_PE_NOT_SET) + { + + INSTR(CE1_NOP, CE2_NOP, ALU_SUB(TMP_REG3, TMP_REG3, INST_VAR, ALWAYS, ZERO, TMP_REG4), CMN(NONE, NONE, inst_labels[DNX_OAMP_PE_INST_LABEL_DISCR_MSB_1], NEVER_NEVER, NXT_JMP)); + + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); + INSTR(CE1_NOP, CE2_NOP, ALU_NOP, CMN_NOP); } else { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].func_ptr (unit, label_mode, func_config, NULL, inst_labels, next_instruction_index, - &func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction)); + &func_config[DNX_OAMP_PE_FUNC_DISCR_MSB_1].first_instruction)); } + + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, first_instr); } @@ -4915,6 +5054,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_additional_gal_special_label_program( int unit, @@ -4932,11 +5072,14 @@ oamp_pe_additional_gal_special_label_program( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL].func_ptr @@ -4944,6 +5087,8 @@ oamp_pe_additional_gal_special_label_program( &func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL].first_instruction); } @@ -4954,6 +5099,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e oamp_pe_additional_gal_special_label_program_maid48( int unit, @@ -4971,11 +5117,14 @@ oamp_pe_additional_gal_special_label_program_maid48( SHR_FUNC_INIT_VARS(unit); DBAL_FUNC_INIT_VARS(unit); - SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + + + SHR_IF_ERR_EXIT(dnx_oamp_pe_program_sw_enum2hw_get(unit, program_id, &saved_prog_index)); + if (saved_prog_index == DNX_OAMP_PE_NOT_SET) { - + if (func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48].first_instruction == DNX_OAMP_PE_NOT_SET) { SHR_IF_ERR_EXIT(func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48].func_ptr @@ -4983,6 +5132,8 @@ oamp_pe_additional_gal_special_label_program_maid48( &func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48].first_instruction)); } + + SET_PROGRAM_PROPERTIES(program_id, next_valid_program_index, program_const, func_config[DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48].first_instruction); } @@ -4993,6 +5144,7 @@ exit: SHR_FUNC_EXIT; } + static int dnx_oamp_pe_check_fem_soc( int unit, @@ -5001,62 +5153,39 @@ dnx_oamp_pe_check_fem_soc( return 1; } + static shr_error_e dnx_oamp_pe_fem_init( int unit, dnx_oamp_pe_fem_config_s fem_actions[DNX_OAMP_PE_FEM_LAST]) { - + dnx_oamp_pe_fem_config_s fem_actions_local[DNX_OAMP_PE_FEM_LAST] = { - {DNX_OAMP_PE_FEM_OUTLIF_VSI_LSB_SHIFT, - {{OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}, {OFST, 19}, {CNST, 0}, {CNST, 0}, {OFST, 20}, - {OFST, 21}, {OFST, 22}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_OUTLIF_VSI_LSB_SHIFT_JR1, - {{OFST, 28}, {OFST, 29}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {OFST, 30}, - {OFST, 31}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_PPH_EXIST_UPDATE, - {{OFST, 0}, {OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {OFST, 6}, {OFST, 7}, {OFST, 8}, {CNST, 1}, - {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {OFST, 14}, {OFST, 15}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_PPH_EXIST_UPDATE_JR1, - {{OFST, 0}, {OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {OFST, 6}, {OFST, 7}, {OFST, 8}, {OFST, 9}, - {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {CNST, 1}, {OFST, 15}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_VSI_GEN_MEM_OFFSET_JR1, - {{OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {OFST, 6}, {OFST, 7}, {OFST, 8}, {OFST, 9}, {OFST, 10}, - {OFST, 11}, {OFST, 12}, {OFST, 13}, {OFST, 14}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_BFD_IPV6_ECHO, - {{CNST, 0}, {OFST, 17}, {OFST, 18}, {OFST, 19}, {OFST, 20}, {OFST, 21}, {OFST, 22}, {OFST, 23}, {OFST, 24}, - {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_ITMH_DP, - {{CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, - {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {OFST, 26}, {OFST, 27}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_ITMH_DP_JR1, - {{CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, - {CNST, 0}, {OFST, 26}, {OFST, 27}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_ITMH_TC, - {{CNST, 0}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, - {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_SIGNAL_DETECT_SET, - {{OFST, 16}, {OFST, 17}, {OFST, 18}, {OFST, 19}, {OFST, 20}, {OFST, 21}, {CNST, 1}, {OFST, 23}, {OFST, 24}, - {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_TLV_DATA_OFFSET, - {{OFST, 21}, {OFST, 22}, {OFST, 23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, - {OFST, 30}, {OFST, 31}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_TLV_DATA_OFFSET_RSP, - {{OFST, 23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}, - {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_VCCV_BFD, - {{OFST, 0}, {OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {CNST, 1}, {CNST, 0}, {CNST, 1}, {CNST, 0}, - {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {OFST, 14}, {OFST, 15}}, 1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FEM_UP_MEP_DM_TOD_OFFSET, - {{CNST, 0}, {OFST, 16}, {OFST, 17}, {OFST, 18}, {OFST, 19}, {OFST, 20}, {OFST, 21}, {OFST, 22}, {OFST, 23}, - {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}}, 1, DNX_OAMP_PE_NOT_SET}, + + + {DNX_OAMP_PE_FEM_OUTLIF_VSI_LSB_SHIFT, {{OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}, {OFST, 19}, {CNST, 0}, {CNST, 0}, {OFST, 20}, {OFST, 21}, {OFST, 22}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_OUTLIF_VSI_LSB_SHIFT_JR1, {{OFST, 28}, {OFST, 29}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {OFST, 30}, {OFST, 31}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_PPH_EXIST_UPDATE, {{OFST, 0}, {OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {OFST, 6}, {OFST, 7}, {OFST, 8}, {CNST, 1}, {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {OFST, 14}, {OFST, 15}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_PPH_EXIST_UPDATE_JR1, {{OFST, 0}, {OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {OFST, 6}, {OFST, 7}, {OFST, 8}, {OFST, 9}, {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {CNST, 1}, {OFST, 15}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_VSI_GEN_MEM_OFFSET_JR1, {{OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {OFST, 6}, {OFST, 7}, {OFST, 8}, {OFST, 9}, {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {OFST, 14}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_BFD_IPV6_ECHO, {{CNST, 0}, {OFST, 17}, {OFST, 18}, {OFST, 19}, {OFST, 20}, {OFST, 21}, {OFST, 22}, {OFST, 23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_ITMH_DP, {{CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {OFST, 26}, {OFST, 27}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_ITMH_DP_JR1, {{CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {OFST, 26}, {OFST, 27}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_ITMH_TC, {{CNST, 0}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_SIGNAL_DETECT_SET, {{OFST, 16}, {OFST, 17}, {OFST, 18}, {OFST, 19}, {OFST, 20}, {OFST, 21}, {CNST, 1}, {OFST, 23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_TLV_DATA_OFFSET, {{OFST, 21}, {OFST, 22}, {OFST, 23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_TLV_DATA_OFFSET_RSP, {{OFST, 23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}, {OFST, 31}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}, {CNST, 0}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_VCCV_BFD, {{OFST, 0}, {OFST, 1}, {OFST, 2}, {OFST, 3}, {OFST, 4}, {OFST, 5}, {CNST, 1}, {CNST, 0}, {CNST, 1}, {CNST, 0}, {OFST, 10}, {OFST, 11}, {OFST, 12}, {OFST, 13}, {OFST, 14}, {OFST, 15}}, 1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FEM_UP_MEP_DM_TOD_OFFSET, {{CNST, 0}, {OFST, 16}, {OFST, 17}, {OFST, 18}, {OFST, 19}, {OFST, 20}, {OFST, 21}, {OFST, 22}, {OFST,23}, {OFST, 24}, {OFST, 25}, {OFST, 26}, {OFST, 27}, {OFST, 28}, {OFST, 29}, {OFST, 30}}, 1, DNX_OAMP_PE_NOT_SET}, }; - + int ii, jj; SHR_FUNC_INIT_VARS(unit); + + for (ii = 0, jj = 0; ii < DNX_OAMP_PE_FEM_LAST; ii++) { if ((fem_actions_local[ii].valid) && dnx_oamp_pe_check_fem_soc(unit, ii)) @@ -5066,6 +5195,9 @@ dnx_oamp_pe_fem_init( } } + + + for (ii = 0; ii < DNX_OAMP_PE_FEM_LAST; ii++) { if (fem_actions_local[ii].fem_id != ii) @@ -5087,6 +5219,7 @@ exit: SHR_FUNC_EXIT; } + static int dnx_oamp_pe_mep_pe_profile_soc_disable( int unit, @@ -5095,6 +5228,7 @@ dnx_oamp_pe_mep_pe_profile_soc_disable( return 0; } + static shr_error_e dnx_oamp_pe_mep_pe_profile_init( int unit, @@ -5103,42 +5237,47 @@ dnx_oamp_pe_mep_pe_profile_init( int system_headers_mode; - dnx_oamp_mep_pe_profile_s mep_pe_profiles_local[DBAL_NOF_ENUM_MEP_PE_PROFILE_SW_VALUES] = { - - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DEFAULT, 0, 0, 0, 0, 0, 1, 0}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_ECHO, 49, 0, 50, 0, 0, 1, 1}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48, 27, 48, 29, 50, 0, 1, 2}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED, 27, 48, 29, 50, 0, 1, 3}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_MAID_48, 0, 0, 0, 0, 0, 1, 4}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_DEFAULT, 49, 0, 50, 0, 0, 1, 5}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6, 49, 0, 50, 0, 0, 1, 6}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6_MPLS, 49, 0, 50, 0, 0, 1, 8}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP, 0, 0, 0, 0, 0, 1, 10}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_MAID_48, 0, 0, 0, 0, 0, 1, 11}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER, 0, 0, 29, 50, 0, 1, 12}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER_MAID_48, 0, 0, 29, 50, 0, 1, 13}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM, 0, 0, 0, 0, 0, 1, 14}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM_MAID_48, 0, 0, 0, 0, 0, 1, 15}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA, 0, 0, 29, 50, 0, 1, 16}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA_MAID_48, 0, 0, 29, 50, 0, 1, 17}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT, 48, 0, 0, 0, 0, 1, 18}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT_MAID_48, 48, 0, 0, 0, 0, 1, 19}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48, 0, 0, 29, 50, 0, 1, 20}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV, 0, 0, 29, 50, 0, 1, 21}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV4, 49, 0, 50, 0, 0, 1, 22}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV6, 49, 0, 50, 0, 0, 1, 23}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SINGLE_HOP_BFD_RANDOM_DIP, 49, 0, 50, 0, 0, 1, 24}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_MPLS_TP_VCCV, 49, 0, 50, 0, 0, 1, 25}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL, 0, 0, 0, 0, 0, 1, 26}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0, 0, 0, 0, 0, 1, 27}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM, 36, 0, 0, 0, 0, 1, 28}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48, 36, 0, 0, 0, 0, 1, 29}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD, 0, 0, 0, 0, 0, 1, 30}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD_CCM_MAID_48, 0, 0, 0, 0, 0, 1, 31}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV, 36, 0, 54, 50, 0, 1, 32}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48, 36, 0, 54, 50, 0, 1, 33} - }; +dnx_oamp_mep_pe_profile_s mep_pe_profiles_local[DBAL_NOF_ENUM_MEP_PE_PROFILE_SW_VALUES] = { + + + + + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DEFAULT, 0, 0, 0, 0, 0, 1, 0}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_ECHO, 49, 0, 50, 0, 0, 1, 1}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48, 27, 48, 29, 50, 0, 1, 2}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED, 27, 48, 29, 50, 0, 1, 3}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_MAID_48, 0, 0, 0, 0, 0, 1, 4}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_DEFAULT, 49, 0, 50, 0, 0, 1, 5}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6, 49, 0, 50, 0, 0, 1, 6}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6_MPLS, 49, 0, 50, 0, 0, 1, 8}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP, 0, 0, 0, 0, 0, 1, 10}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_MAID_48, 0, 0, 0, 0, 0, 1, 11}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER, 0, 0, 29, 50, 0, 1, 12}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER_MAID_48, 0, 0, 29, 50, 0, 1, 13}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM, 0, 0, 0, 0, 0, 1, 14}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM_MAID_48, 0, 0, 0, 0, 0, 1, 15}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA, 0, 0, 29, 50, 0, 1, 16}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA_MAID_48, 0, 0, 29, 50, 0, 1, 17}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT, 48, 0, 0, 0, 0, 1, 18}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT_MAID_48, 48, 0, 0, 0, 0, 1, 19}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48, 0, 0, 29, 50, 0, 1, 20}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV, 0, 0, 29, 50, 0, 1, 21}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV4, 49, 0, 50, 0, 0, 1, 22}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV6, 49, 0, 50, 0, 0, 1, 23}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SINGLE_HOP_BFD_RANDOM_DIP, 49, 0, 50, 0, 0, 1, 24}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_MPLS_TP_VCCV, 49, 0, 50, 0, 0, 1, 25}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL, 0, 0, 0, 0, 0, 1, 26}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0, 0, 0, 0, 0, 1, 27}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM, 36, 0, 0, 0, 0, 1, 28}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48, 36, 0, 0, 0, 0, 1, 29}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD, 0, 0, 0, 0, 0, 1, 30}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD_CCM_MAID_48, 0, 0, 0, 0, 0, 1, 31}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV, 36, 0, 54, 50, 0, 1, 32}, + {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48, 36, 0, 54, 50, 0, 1, 33} +}; + + int ii; SHR_FUNC_INIT_VARS(unit); @@ -5170,8 +5309,10 @@ dnx_oamp_pe_mep_pe_profile_init( SHR_ERR_EXIT(_SHR_E_PARAM, "JUMBO MAID48 and not jumbo maid 48 should be different by 1 4'th bit.\n"); } + system_headers_mode = dnx_data_headers.system_headers.system_headers_mode_get(unit); + if (system_headers_mode == DBAL_ENUM_FVAL_SYSTEM_HEADERS_MODE_JERICHO_MODE) { mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED].word_0_offset = 54; @@ -5184,13 +5325,13 @@ dnx_oamp_pe_mep_pe_profile_init( mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV].byte_0_offset = 0; mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48].word_0_offset = 54; mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48].byte_0_offset = 0; - + mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD].word_0_offset = 23; - + mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD].word_1_offset = 4; mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD_CCM_MAID_48].word_0_offset = 23; mep_pe_profiles_local[DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD_CCM_MAID_48].word_1_offset = 4; - + for (ii = 0; ii < DBAL_NOF_ENUM_MEP_PE_PROFILE_SW_VALUES; ii++) { if ((mep_pe_profiles_local[ii].valid) && dnx_oamp_pe_mep_pe_profile_soc_disable(unit, ii)) @@ -5199,6 +5340,7 @@ dnx_oamp_pe_mep_pe_profile_init( } } + for (ii = 0; ii < DBAL_NOF_ENUM_MEP_PE_PROFILE_SW_VALUES; ii++) { if (mep_pe_profiles_local[ii].profile_id != ii) @@ -5207,6 +5349,7 @@ dnx_oamp_pe_mep_pe_profile_init( } } + sal_memcpy(mep_pe_profiles, mep_pe_profiles_local, sizeof(mep_pe_profiles_local)); SHR_EXIT(); @@ -5214,6 +5357,7 @@ exit: SHR_FUNC_EXIT; } + static int dnx_oamp_pe_tcam_soc_enable( int unit, @@ -5303,303 +5447,86 @@ dnx_oamp_pe_tcam_soc_enable( return tcam_config_local[tcam_id].valid; } + static shr_error_e dnx_oamp_pe_tcam_init( int unit, oamp_pe_tcam_config_s tcam_config[DBAL_NOF_ENUM_OAMP_PE_PROG_TCAM_ENUM_VALUES]) { - + + oamp_pe_tcam_config_s tcam_config_local[DBAL_NOF_ENUM_OAMP_PE_PROG_TCAM_ENUM_VALUES] = { - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED, oamp_pe_down_mep_inj_self_contained_program, - 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED, 0x00000000, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x3}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48, - oamp_pe_down_mep_inj_self_contained_maid_48_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48, 0x00000001, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48_LM_DM, - oamp_pe_down_mep_inj_self_contained_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED, 0x00000000, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x1}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_ECHO_JR1, oamp_pe_bfd_echo_jr1_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_ECHO_JR1, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_ECHO}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6_MPLS_JR1, oamp_pe_bfd_ipv6_mpls_jr1_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6_MPLS_JR1, DNX_OAMP_PE_BFD_IPV6_MPLS_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6_MPLS}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6_JR1, oamp_pe_bfd_ipv6_jr1_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6_JR1, DNX_OAMP_PE_BFD_IPV6_JR1_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6_MPLS, oamp_pe_bfd_ipv6_mpls_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6_MPLS, DNX_OAMP_PE_BFD_IPV6_MPLS_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6_MPLS}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6, oamp_pe_bfd_ipv6_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_MAID_48, oamp_pe_maid_48_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_MAID_48}, - {0x10}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_ECHO, oamp_pe_bfd_echo_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_ECHO, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_ECHO}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_DEFAULT, oamp_pe_bfd_default_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_DEFAULT, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_DEFAULT}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_ADD_UDH_JR1, oamp_pe_down_add_udh_jr1_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_ADD_UDH_JR1, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP}, - {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x3}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_SERVER, oamp_pe_up_mep_server_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_SERVER, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER}, - {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_SERVER_MAID_48, oamp_pe_up_mep_server_maid_48_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_SERVER_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_1DM, oamp_pe_1dm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, - DNX_OAMP_PE_1DM_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_1DM_MAID_48, oamp_pe_1dm_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, DNX_OAMP_PE_1DM_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM_MAID_48}, - {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_1DM_MAID_48_CCM, oamp_pe_maid_48_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM_MAID_48}, - {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_LMDM_FLEXIBLE_DA, oamp_pe_lmdm_flexible_da_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_LMDM_FLEXIBLE_DA, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, - {0x1}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_LMDM_FLEXIBLE_DA_MAID_48, oamp_pe_lmdm_flexible_da_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_LMDM_FLEXIBLE_DA, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA_MAID_48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x1}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_LMDM_FLEXIBLE_DA_MAID_48_CCM, - oamp_pe_lmdm_flexible_da_maid_48_ccm_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_LMDM_FLEXIBLE_DA_MAID_48_CCM, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SIGNAL_DETECT_CCM, oamp_pe_signal_detect_ccm_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SIGNAL_DETECT_CCM, 0x00000002, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_PWE}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SIGNAL_DETECT_MAID_48_CCM, oamp_pe_signal_detect_maid_48_ccm_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SIGNAL_DETECT_MAID_48_CCM, 0x00000002, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_PWE}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DM_JUMBO_TLV, oamp_pe_dm_jumbo_tlv_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DM_JUMBO_TLV_RSP, oamp_pe_dm_jumbo_tlv_rsp_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV_RSP, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV4, oamp_pe_bfd_seamless_bfd_ipv4_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV4, 7784, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV4}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV6, oamp_pe_bfd_ipv6_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV6, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV6}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV4_JR1, oamp_pe_bfd_seamless_bfd_ipv4_jr1_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV4_JR1, 7784, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV4}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV6_JR1, oamp_pe_bfd_ipv6_jr1_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV6_JR1, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV6}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SINGLE_HOP_BFD_RANDOM_DIP, oamp_pe_bfd_single_hop_random_dip_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SINGLE_HOP_BFD_RANDOM_DIP, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x3}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SINGLE_HOP_BFD_RANDOM_DIP}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, - {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_MPLS_TP_VCCV, oamp_pe_bfd_mplstp_vccv_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_MPLS_TP_VCCV, DNX_OAMP_PE_BFD_VCCV_PROG_VAR, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x3}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_MPLS_TP_VCCV}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, - DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, - oamp_pe_additional_gal_special_label_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, - {0xF}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM, oamp_pe_1dm_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_OTHER, - oamp_pe_additional_gal_special_label_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, - {0xF}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48, oamp_pe_1dm_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48_LMM, - oamp_pe_additional_gal_special_label_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48_CCM, - oamp_pe_additional_gal_special_label_program_maid48, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0x00e0fffc, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, - oamp_pe_additional_gal_special_label_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x1}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48_CCM, - oamp_pe_additional_gal_special_label_program_maid48, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0x00e0fffc, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_DM_TOD, oamp_pe_up_mep_dm_tod_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_DM_TOD, 1, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD}, - {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_DM_TOD_RSP, oamp_pe_up_mep_dm_tod_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_DM_TOD_RSP, 0, OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD}, - {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_DM_TOD_CCM_48_MAID, oamp_pe_maid_48_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD_CCM_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, - {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV, oamp_pe_dm_jumbo_tlv_program, - 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_RSP, - oamp_pe_dm_jumbo_tlv_rsp_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV_RSP, 0x00d0fffc, - OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_OTHER, - oamp_pe_additional_gal_special_label_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0xF}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48, - oamp_pe_dm_jumbo_tlv_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV, 0x00d0fffc, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48_RSP, - oamp_pe_dm_jumbo_tlv_rsp_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV_RSP, 0x00d0fffc, - OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48_LMM, - oamp_pe_additional_gal_special_label_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, - 0x1, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48_CCM, - oamp_pe_additional_gal_special_label_program_maid48, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0xd140fffc, - OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, - {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, - {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}}, DNX_OAMP_PE_NOT_SET}, - {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DEFAULT, oamp_pe_default_program, 1, - DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DEFAULT, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, - {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DEFAULT}, - {0x3F}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0xF}}}, DNX_OAMP_PE_NOT_SET} + + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED, oamp_pe_down_mep_inj_self_contained_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED, 0x00000000, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x3}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48, oamp_pe_down_mep_inj_self_contained_maid_48_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48, 0x00000001, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48_LM_DM, oamp_pe_down_mep_inj_self_contained_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED, 0x00000000, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP_INJ_SELF_CONTAINED_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x1}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_ECHO_JR1, oamp_pe_bfd_echo_jr1_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_ECHO_JR1, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_ECHO}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6_MPLS_JR1, oamp_pe_bfd_ipv6_mpls_jr1_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6_MPLS_JR1, DNX_OAMP_PE_BFD_IPV6_MPLS_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6_MPLS}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6_JR1, oamp_pe_bfd_ipv6_jr1_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6_JR1, DNX_OAMP_PE_BFD_IPV6_JR1_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6_MPLS, oamp_pe_bfd_ipv6_mpls_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6_MPLS, DNX_OAMP_PE_BFD_IPV6_MPLS_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6_MPLS}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_IPV6, oamp_pe_bfd_ipv6_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_IPV6, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_IPV6}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_MAID_48, oamp_pe_maid_48_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_MAID_48}, {0x10}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_ECHO, oamp_pe_bfd_echo_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_ECHO, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_ECHO}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_DEFAULT, oamp_pe_bfd_default_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_DEFAULT, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_DEFAULT}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_ADD_UDH_JR1, oamp_pe_down_add_udh_jr1_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DOWN_MEP_ADD_UDH_JR1, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DOWN_MEP}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x3}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_SERVER, oamp_pe_up_mep_server_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_SERVER, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_SERVER_MAID_48, oamp_pe_up_mep_server_maid_48_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_SERVER_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_SERVER_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_1DM, oamp_pe_1dm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, DNX_OAMP_PE_1DM_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_1DM_MAID_48, oamp_pe_1dm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, DNX_OAMP_PE_1DM_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_1DM_MAID_48_CCM, oamp_pe_maid_48_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_1DM_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_LMDM_FLEXIBLE_DA, oamp_pe_lmdm_flexible_da_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_LMDM_FLEXIBLE_DA, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x1}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_LMDM_FLEXIBLE_DA_MAID_48, oamp_pe_lmdm_flexible_da_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_LMDM_FLEXIBLE_DA, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x1}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_LMDM_FLEXIBLE_DA_MAID_48_CCM, oamp_pe_lmdm_flexible_da_maid_48_ccm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_LMDM_FLEXIBLE_DA_MAID_48_CCM, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_LMDM_FLEXIBLE_DA_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SIGNAL_DETECT_CCM, oamp_pe_signal_detect_ccm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SIGNAL_DETECT_CCM, 0x00000002, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_PWE}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SIGNAL_DETECT_MAID_48_CCM, oamp_pe_signal_detect_maid_48_ccm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SIGNAL_DETECT_MAID_48_CCM, 0x00000002, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_PWE}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SIGNAL_DETECT_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DM_JUMBO_TLV, oamp_pe_dm_jumbo_tlv_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DM_JUMBO_TLV_RSP, oamp_pe_dm_jumbo_tlv_rsp_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV_RSP, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DM_JUMBO_TLV_MAID_48}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV4, oamp_pe_bfd_seamless_bfd_ipv4_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV4, 7784, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV4}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV6, oamp_pe_bfd_ipv6_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV6, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV6}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV4_JR1, oamp_pe_bfd_seamless_bfd_ipv4_jr1_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV4_JR1, 7784, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV4}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SEAMLESS_BFD_IPV6_JR1, oamp_pe_bfd_ipv6_jr1_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SEAMLESS_BFD_IPV6_JR1, DNX_OAMP_PE_BFD_ECHO_UDP_DPORT_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_IPV4_MHOP}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SEAMLESS_BFD_IPV6}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_SINGLE_HOP_BFD_RANDOM_DIP, oamp_pe_bfd_single_hop_random_dip_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_SINGLE_HOP_BFD_RANDOM_DIP, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_SINGLE_HOP_BFD_RANDOM_DIP}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_BFD_MPLS_TP_VCCV, oamp_pe_bfd_mplstp_vccv_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_BFD_MPLS_TP_VCCV, DNX_OAMP_PE_BFD_VCCV_PROG_VAR, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_BFD_MPLS}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_BFD_MPLS_TP_VCCV}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, oamp_pe_additional_gal_special_label_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0xF}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM, oamp_pe_1dm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_OTHER, oamp_pe_additional_gal_special_label_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0xF}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48, oamp_pe_1dm_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_1DM, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48_LMM, oamp_pe_additional_gal_special_label_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48_CCM, oamp_pe_additional_gal_special_label_program_maid48, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_1DM_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, oamp_pe_additional_gal_special_label_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x1}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48_CCM, oamp_pe_additional_gal_special_label_program_maid48, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0x00e0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_DM_TOD, oamp_pe_up_mep_dm_tod_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_DM_TOD, 1, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_DM_TOD_RSP, oamp_pe_up_mep_dm_tod_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_UP_MEP_DM_TOD_RSP, 0, OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD}, {0x1}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_UP_MEP_DM_TOD_CCM_48_MAID, oamp_pe_maid_48_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_MAID_48, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0x3}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_UP_MEP_DM_TOD_CCM_MAID_48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV, oamp_pe_dm_jumbo_tlv_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_RSP, oamp_pe_dm_jumbo_tlv_rsp_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV_RSP, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_OTHER, oamp_pe_additional_gal_special_label_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0xF}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48, oamp_pe_dm_jumbo_tlv_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48_RSP, oamp_pe_dm_jumbo_tlv_rsp_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DM_JUMBO_TLV_RSP, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_RESPONSE, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_DMM_DMR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48_LMM, oamp_pe_additional_gal_special_label_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL, 0x00d0fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x1, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48_CCM, oamp_pe_additional_gal_special_label_program_maid48, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, 0xd140fffc, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_Y1731_MPLSTP}, {0x0}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_ADDITIONAL_GAL_SPECIAL_LABEL_DM_JUMBO_TLV_MAID48}, {0x0}, {DBAL_ENUM_FVAL_MSG_TYPE_OTHER}, {0x0}}},DNX_OAMP_PE_NOT_SET}, + {DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DEFAULT, oamp_pe_default_program, 1, DBAL_ENUM_FVAL_OAMP_PE_PROGRAM_ENUM_DEFAULT, 0, OAMP_PE_TCAM_KEY_MEP_GENERATED, 0x0, {{{DBAL_ENUM_FVAL_OAMP_MEP_TYPE_ETH_OAM}, {0xF}, {0}, {0x7F}, {DBAL_ENUM_FVAL_MEP_PE_PROFILE_SW_DEFAULT}, {0x3F}, {DBAL_ENUM_FVAL_MSG_TYPE_LMM_LMR_SLM_SLR}, {0xF}}},DNX_OAMP_PE_NOT_SET} }; - + int ii, jj; int system_headers_mode; int udh_header_size = 0; uint32 prog_var_tmp = 0; SHR_FUNC_INIT_VARS(unit); + system_headers_mode = dnx_data_headers.system_headers.system_headers_mode_get(unit); + if (system_headers_mode == DBAL_ENUM_FVAL_SYSTEM_HEADERS_MODE_JERICHO_MODE) { - + SHR_IF_ERR_EXIT(oamp_pe_udh_header_size_get(unit, (uint32 *) &udh_header_size)); prog_var_tmp = ((0x20 << 24) | (((udh_header_size << 1) | 1) << 16) | (0xc0 << 8)); + tcam_config_local[DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED].program_const = prog_var_tmp | tcam_config_local[DBAL_ENUM_FVAL_OAMP_PE_PROG_TCAM_ENUM_DOWN_MEP_INJ_SELF_CONTAINED].program_const; @@ -5624,6 +5551,7 @@ dnx_oamp_pe_tcam_init( } } + for (ii = 0; ii < DBAL_NOF_ENUM_OAMP_PE_PROG_TCAM_ENUM_VALUES; ii++) { if (tcam_config_local[ii].tcam_id != ii) @@ -5639,38 +5567,38 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e dnx_oamp_pe_func_init( int unit, oamp_pe_func_config_t func_config[DNX_OAMP_PE_FUNC_NOF]) { - + oamp_pe_func_config_t func_config_local[DNX_OAMP_PE_FUNC_NOF] = { - - {DNX_OAMP_PE_FUNC_DEFAULT, oamp_pe_function_default, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_COPY_MAID_48, oamp_pe_function_copy_48_maid, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED, - oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_dispatch, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_DISCR_MSB_1, oamp_pe_function_discr_msb_1, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_UP_MEP_SERVER, oamp_pe_function_up_mep_server, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48, oamp_pe_function_up_mep_server_maid_48, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_LMDM_FLEXIBLE_DA, oamp_pe_function_lmdm_flexible_da, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_DM_JUMBO_TLV, oamp_pe_function_dm_jumbo_tlv, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_DM_JUMBO_TLV_RSP, oamp_pe_function_dm_jumbo_tlv_rsp, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_SINGLE_HOP_RANDOM_DIP, oamp_pe_function_bfd_single_hop_random_dip, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_VCCV_TYPE_BFD, oamp_pe_function_bfd_mplstp_vccv, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL, oamp_pe_function_additional_gal_special_label, - DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, oamp_pe_function_additional_gal_special_label_maid48, - DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_UP_MEP_DM_TOD, oamp_pe_function_up_mep_dm_tod, DNX_OAMP_PE_NOT_SET}, - {DNX_OAMP_PE_FUNC_LOCAL_DISCR, oamp_pe_function_local_discr, DNX_OAMP_PE_NOT_SET}, - }; - + + {DNX_OAMP_PE_FUNC_DEFAULT, oamp_pe_function_default, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_COPY_MAID_48, oamp_pe_function_copy_48_maid, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_DOWN_MEP_INJ_BUILD_ITMH_EXT_PPH_SELF_CONTAINED, oamp_pe_function_down_mep_inj_build_itmh_ext_pph_self_contained_dispatch, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_DISCR_MSB_1, oamp_pe_function_discr_msb_1, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_UP_MEP_SERVER, oamp_pe_function_up_mep_server, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_UP_MEP_SERVER_MAID_48, oamp_pe_function_up_mep_server_maid_48, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_LMDM_FLEXIBLE_DA, oamp_pe_function_lmdm_flexible_da, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_DM_JUMBO_TLV, oamp_pe_function_dm_jumbo_tlv, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_DM_JUMBO_TLV_RSP, oamp_pe_function_dm_jumbo_tlv_rsp, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_SINGLE_HOP_RANDOM_DIP, oamp_pe_function_bfd_single_hop_random_dip, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_VCCV_TYPE_BFD, oamp_pe_function_bfd_mplstp_vccv, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL, oamp_pe_function_additional_gal_special_label, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_ADDITIONAL_GAL_SPECIAL_LABEL_MAID48, oamp_pe_function_additional_gal_special_label_maid48, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_UP_MEP_DM_TOD, oamp_pe_function_up_mep_dm_tod, DNX_OAMP_PE_NOT_SET}, + {DNX_OAMP_PE_FUNC_LOCAL_DISCR, oamp_pe_function_local_discr, DNX_OAMP_PE_NOT_SET}, +}; + int ii; SHR_FUNC_INIT_VARS(unit); + + for (ii = 0; ii < DNX_OAMP_PE_FUNC_NOF; ii++) { if (func_config_local[ii].func_id != ii) @@ -5686,6 +5614,7 @@ exit: SHR_FUNC_EXIT; } + static shr_error_e dnx_oamp_pe_init_inst_labels( int unit, @@ -5701,6 +5630,8 @@ dnx_oamp_pe_init_inst_labels( inst_labels_local[ii] = DNX_OAMP_PE_NOT_SET; } + + sal_memcpy(inst_labels, inst_labels_local, sizeof(inst_labels_local)); SHR_EXIT(); @@ -5708,52 +5639,63 @@ exit: SHR_FUNC_EXIT; } + + + shr_error_e dnx_oamp_pe_module_init( int unit) { int ii, prog_index; - + int default_instruction; - + int max_nof_instructions; - + int next_instruction_index = 0; - + int next_valid_program_index = 0; - + dnx_oamp_pe_fem_config_s fem_actions[DNX_OAMP_PE_FEM_LAST]; - + dnx_oamp_mep_pe_profile_s mep_pe_profiles[DBAL_NOF_ENUM_MEP_PE_PROFILE_SW_VALUES]; - + int inst_labels[DNX_OAMP_PE_INST_LABEL_LAST]; - + oamp_pe_tcam_config_s tcam_config[DBAL_NOF_ENUM_OAMP_PE_PROG_TCAM_ENUM_VALUES]; oamp_pe_func_config_t func_config[DNX_OAMP_PE_FUNC_NOF]; SHR_FUNC_INIT_VARS(unit); + default_instruction = dnx_data_oam.oamp.oamp_pe_default_instruction_index_get(unit); max_nof_instructions = dnx_data_oam.oamp.oamp_pe_max_nof_instructions_get(unit); + SHR_IF_ERR_EXIT(dnx_oamp_pe_init_inst_labels(unit, inst_labels)); - + SHR_IF_ERR_EXIT(dnx_oamp_pe_fem_init(unit, fem_actions)); - + SHR_IF_ERR_EXIT(dnx_oamp_pe_mep_pe_profile_init(unit, mep_pe_profiles)); - + SHR_IF_ERR_EXIT(dnx_oamp_pe_tcam_init(unit, tcam_config)); - + SHR_IF_ERR_EXIT(dnx_oamp_pe_func_init(unit, func_config)); + SHR_IF_ERR_EXIT(dnx_oamp_pe_mep_pe_profile_set(unit, mep_pe_profiles)); SHR_IF_ERR_EXIT(dnx_oamp_pe_mep_pe_profile_sw_set(unit, mep_pe_profiles)); + SHR_IF_ERR_EXIT(dnx_oamp_pe_fem_set(unit, fem_actions)); + SHR_IF_ERR_EXIT(dnx_oamp_pe_instruction_config_init (unit, default_instruction, max_nof_instructions, DBAL_ENUM_FVAL_DEBUG_MODE_OFF)); + + + for (ii = DBAL_NOF_ENUM_OAMP_PE_PROG_TCAM_ENUM_VALUES - 1; ii > -1; ii--) { if (tcam_config[ii].valid) @@ -5764,13 +5706,14 @@ dnx_oamp_pe_module_init( func_config)); } } - + next_instruction_index = 0; next_valid_program_index = 0; - + SHR_IF_ERR_EXIT(dnx_oamp_pe_func_init(unit, func_config)); SHR_IF_ERR_EXIT(dbal_table_clear(unit, DBAL_TABLE_OAMP_PE_PROGRAM_SW_ENUM2HW)); + for (ii = DBAL_NOF_ENUM_OAMP_PE_PROG_TCAM_ENUM_VALUES - 1; ii > -1; ii--) { if (tcam_config[ii].valid) @@ -5781,7 +5724,7 @@ dnx_oamp_pe_module_init( &next_valid_program_index, &prog_index, func_config)); if (prog_index != DNX_OAMP_PE_NOT_SET) { - + SHR_IF_ERR_EXIT(dnx_oamp_pe_programs_tcam_set(unit, tcam_config[ii], prog_index)); } } @@ -5813,6 +5756,7 @@ exit: SHR_FUNC_EXIT; } + shr_error_e oamp_pe_udh_header_size_get( int unit, @@ -5833,4 +5777,9 @@ exit: SHR_FUNC_EXIT; } + + + + + #endif diff --git a/sdk-6.5.21/src/soc/dnx/mdb/auto_generated/dbx_pre_compiled_lif_mdb_auto_generated_xml_parser.h b/sdk-6.5.21/src/soc/dnx/mdb/auto_generated/dbx_pre_compiled_lif_mdb_auto_generated_xml_parser.h @@ -0,0 +1,24 @@ +/* + * $Copyright: (c) 2011 Broadcom Corp. + * All Rights Reserved.$ + * + * This File is Auto-generated - DO NOT TOUCH IT!!!! + */ + +#include <sal/types.h> + +#ifndef _LIF_PHASES_PRE_COMPILED_AUTO_GENERATED_XML_PARSER_H +#define _LIF_PHASES_PRE_COMPILED_AUTO_GENERATED_XML_PARSER_H + +#if defined(BCM_DNX_SUPPORT) + + +void *dbx_pre_compiled_lif_phases_top_get( + int unit, + char *filepath, + char *topname, + int flags); + + +#endif +#endif