appl_ref_itmh_init.h (6190B)
1 /** \file itmh_appl_init.h 2 * ITMH Programmable mode appl 3 */ 4 /* 5 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 6 * 7 * Copyright 2007-2020 Broadcom Inc. All rights reserved. 8 */ 9 10 #ifndef BCM_DNX_SUPPORT 11 #error "This file is for use by DNX (JR2) family only!" 12 #endif 13 14 /* 15 * Include files. 16 * { 17 */ 18 #include <appl/diag/parse.h> 19 /* 20 * } 21 */ 22 23 #ifndef APPL_REF_DNX_ITMH_INIT_H_INCLUDED 24 /* 25 * { 26 */ 27 #define APPL_REF_DNX_ITMH_INIT_H_INCLUDED 28 29 /* 30 * } 31 */ 32 33 /* 34 * DEFINEs 35 * { 36 */ 37 38 /** Number of Actions (used as array size) */ 39 #define ITMH_NOF_IPMF2_ACTIONS 12 40 /** Number of Data Qualifiers needed (used as array size) */ 41 #define ITMH_NOF_IPMF2_QUALIFIERS 10 42 /** Number of FEMs in IPMF2 (used as array size) */ 43 #define ITMH_NOF_IPMF2_FEMS 3 44 /** Number of Field Groups needed (used as array size) */ 45 #define ITMH_NOF_FG 1 46 /** ID of field group, which is going to be created in IPMF2 stage */ 47 #define ITMH_IPMF2_FG_ID 10 48 49 50 /** Offset of PPH Qualifier for ITMH Header[6:5] (2b) */ 51 #define PPH_TYPE_QUAL_OFFSET 5 52 /** 53 * Offset of DP Qualifier for ITMH Header[9:8] (2b) 54 * Offset of SNOOP_DATA Qualifier for ITMH Header[35:31] (5b) 55 * Offset of TC Qualifier for ITMH Header[38:36] (3b) 56 * Offset of DST Qualifier for ITMH Header[30:10] (21b) 57 */ 58 #define DP_DST_SNOOP_TC_QUAL_OFFSET 8 59 /** Offset of EXTENSION PRESENT qualifier in ITMH header [39:39] (1b) */ 60 #define EXT_PRESENT_QUAL_OFFSET 39 61 /** Offset of OUT_LIF Qualifier for ITMH-Ext Header[23:2] (2b) */ 62 #define OUT_LIF_QUAL_OFFSET 42 63 /** offset of ASE_INJ Qualifier for ITMH Header[4:4] (1b) */ 64 #define ASE_INJ_QUAL_OFFSET 4 65 /** Offset of MIRROR Qualifier for ITMH Header[7:7] (1b) */ 66 #define MIRROR_QUAL_OFFSET 7 67 /** Offset of TRAP_CODE Qualifier, used to fill the trap code with constant value (9b) */ 68 #define TRAP_CODE_ZEROS_QUAL_OFFSET 0 69 /** 70 * Offset of FWD_STRENGTH Qualifier (4b). 71 */ 72 #define ITMH_FWD_STR_QUAL_OFFSET 0 73 /** Offset of OAM_VALID_BIT Qualifier for ITMH Header[1:1] (1b) */ 74 #define J2_ITMH_OAM_VALID_BIT_QUAL_OFFSET 1 75 76 /** Length of PPH Qualifier for ITMH Header[6:5] (2b) */ 77 #define PPH_TYPE_QUAL_LENGTH 2 78 /** 79 * Length of DP Qualifier for ITMH Header[9:8] (2b) 80 * Length of SNOOP_DATA Qualifier for ITMH Header[35:31] (5b) 81 * Length of TC Qualifier for ITMH Header[38:36] (3b) 82 * Length of DST Qualifier for ITMH Header[30:10] (21b) 83 */ 84 #define DP_DST_SNOOP_TC_QUAL_LENGTH 31 85 /** Length of EXTENSION PRESENT qualifier in ITMH header [39:39] (1b) */ 86 #define EXT_PRESENT_QUAL_LENGTH 1 87 /** Length of OUT_LIF Qualifier for ITMH-Ext Header[23:2] (22b) */ 88 #define OUT_LIF_QUAL_LENGTH 22 89 /** Length of ASE_INJ Qualifier for ITMH Header[4:4] (1b) */ 90 #define ASE_INJ_QUAL_LENGTH 1 91 /** Length of MIRROR Qualifier for ITMH Header[7:7] (1b) */ 92 #define MIRROR_QUAL_LENGTH 1 93 /** Length of TRAP_CODE Qualifier, used to fill the trap code with constant value (9b) */ 94 #define TRAP_CODE_ZEROS_QUAL_LENGTH 9 95 /** Length of FWD_STRENGTH Qualifier (4b) */ 96 #define ITMH_FWD_STR_QUAL_LENGTH 4 97 /** Length of OAM_VALID_BIT Qualifier (1b) */ 98 #define J2_ITMH_OAM_VALID_BIT_QUAL_LENGTH 1 99 /** Length of FWD_LAYER_INDEX Qualifier Constant value of 0x2 (3b) */ 100 #define J2_ITMH_FWD_LAYER_INDEX_QUAL_LENGTH 3 101 102 103 /** Length of user defined SNOOP_DATA action (5b) */ 104 #define SNOOP_DATA_ACTION_LENGTH 5 105 /** Length of user defined DESTINATION action (21b) */ 106 #define DST_ACTION_LENGTH 21 107 /** Length of user defined EXT_EXIST action (1b) */ 108 #define EXT_EXIST_ACTION_LENGTH 1 109 /** Length of user defined OUT_LIF action (21b) */ 110 #define OUT_LIF_ACTION_LENGTH 22 111 /** Length of user defined ASE_INJ action (1b) */ 112 #define ASE_INJ_ACTION_LENGTH 1 113 /** Length of user defined MIRROR action (1b) */ 114 #define MIRROR_ACTION_LENGTH 1 115 /** Length of user defined FWD_STRENGTH action (4b) */ 116 #define ITMH_FWD_STR_ACTION_LENGTH 4 117 118 /** 119 * Structure, which contains information, 120 * for creating of user actions and predefined one. 121 */ 122 typedef struct 123 { 124 char * name; 125 bcm_field_qualify_t qual_id; 126 uint32 qual_length; 127 bcm_field_qualify_attach_info_t qual_attach_info; 128 129 } field_itmh_qual_info_t; 130 131 /** 132 * Structure, which contains need information, 133 * for creating of user actions and predefined one. 134 */ 135 typedef struct { 136 char * name; 137 bcm_field_action_t action_id; 138 bcm_field_action_info_t action_info; 139 uint8 action_with_valid_bit; 140 141 } field_itmh_action_info_t; 142 143 /** 144 * Structure, which contains need information 145 * for configuring of FEM condition actions. 146 */ 147 typedef struct { 148 int nof_conditions; 149 int condition_ids[16]; 150 int nof_extractions; 151 int nof_mapping_bits; 152 /* bcm_field_fem_id_t fem_id; #### REMOVE */ 153 /* 154 * Structure replacing FEM_ID to indicate selected FEM by 155 * its priority in the general FES/FEM structure. 156 * See DNX_FIELD_ACTION_PRIORITY_POSITION_FEM_ID_GET 157 */ 158 bcm_field_array_n_position_t field_array_n_position; 159 bcm_field_fem_action_info_t fem_action_info; 160 161 } field_itmh_fem_action_info_t; 162 163 /** 164 * Structure, which contains all needed information 165 * about configuring of one field group. 166 */ 167 typedef struct 168 { 169 bcm_field_group_t fg_id; 170 bcm_field_stage_t stage; 171 bcm_field_group_type_t fg_type; 172 int nof_quals; 173 int nof_actions; 174 field_itmh_qual_info_t * itmh_qual_info; 175 field_itmh_action_info_t * itmh_action_info; 176 field_itmh_fem_action_info_t * itmh_fem_action_info; 177 178 } field_itmh_fg_info_t; 179 180 181 /* 182 * } 183 */ 184 185 186 /** 187 * \brief - This function initialize ITMH application: 188 * 1. Create User-Defined qualifiers for ITMH and ITMH-extension 189 * 2. Create field groups to parse the ITMH header / extension and update signals 190 * 191 *\param [in] unit - Number of hardware unit used. 192 *\return 193 * \retval Non-zero (!= BCM_E_NONE) in case of an error 194 * \retval Zero (= BCM_E_NONE) in case of NO ERROR 195 *\see 196 * shr_error_e 197 */ 198 shr_error_e appl_dnx_field_itmh_init( 199 int unit); 200 201 /* 202 * } 203 */ 204 #endif /* ITMH_APPL_INIT_H_INCLUDED */