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

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 */