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

ft.h (18827B)


      1 /*
      2  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      3  * 
      4  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      5  */
      6 
      7 
      8 /*
      9  * File:    ft.h
     10  * Purpose: FT definitions common to SDK and uKernel
     11  *
     12  * Notes:   Definition changes should be avoided in order to
     13  *          maintain compatibility between SDK and uKernel since
     14  *          both images are built and loaded separately.
     15  */
     16 
     17 #ifndef _SOC_SHARED_FT_H
     18 #define _SOC_SHARED_FT_H
     19 
     20 #ifdef BCM_UKERNEL
     21   /* Build for uKernel not SDK */
     22   #include "sdk_typedefs.h"
     23 #else
     24   #include <sal/types.h>
     25 #endif
     26 
     27 /*
     28  * FT uC Error codes
     29  */
     30 typedef enum shr_ft_uc_error_e {
     31     SHR_FT_UC_E_NONE      = 0,
     32     SHR_FT_UC_E_INTERNAL  = 1,
     33     SHR_FT_UC_E_MEMORY    = 2,
     34     SHR_FT_UC_E_UNIT      = 3,
     35     SHR_FT_UC_E_PARAM     = 4,
     36     SHR_FT_UC_E_EMPTY     = 5,
     37     SHR_FT_UC_E_FULL      = 6,
     38     SHR_FT_UC_E_NOT_FOUND = 7,
     39     SHR_FT_UC_E_EXISTS    = 8,
     40     SHR_FT_UC_E_TIMEOUT   = 9,
     41     SHR_FT_UC_E_BUSY      = 10,
     42     SHR_FT_UC_E_FAIL      = 11,
     43     SHR_FT_UC_E_DISABLED  = 12,
     44     SHR_FT_UC_E_BADID     = 13,
     45     SHR_FT_UC_E_RESOURCE  = 14,
     46     SHR_FT_UC_E_CONFIG    = 15,
     47     SHR_FT_UC_E_UNAVAIL   = 16,
     48     SHR_FT_UC_E_INIT      = 17,
     49     SHR_FT_UC_E_PORT      = 18
     50 } shr_ft_uc_error_t;
     51 
     52 /* Max flex counter pools across all devices supporting FT */
     53 #define SHR_FT_MAX_CTR_POOLS  20
     54 
     55 /* Key Word size */
     56 #define SHR_FT_EM_KEY_DWORD_SIZE 32
     57 
     58 /* Max number of parts of a qualifier */
     59 #define SHR_FT_EM_KEY_MAX_QUAL_PARTS 8
     60 
     61 /* Supported qualifiers in EM key */
     62 typedef enum shr_ft_em_qual_e {
     63     SHR_FT_EM_QUAL_SRC_IPV4       = 0,
     64     SHR_FT_EM_QUAL_DST_IPV4       = 1,
     65     SHR_FT_EM_QUAL_L4_SRC_PORT    = 2,
     66     SHR_FT_EM_QUAL_L4_DST_PORT    = 3,
     67     SHR_FT_EM_QUAL_IP_PROTOCOL    = 4,
     68     SHR_FT_EM_QUAL_VNID           = 5,
     69     SHR_FT_EM_QUAL_UDF_CHUNK0     = 6,
     70     SHR_FT_EM_QUAL_UDF_CHUNK1     = 7,
     71     SHR_FT_EM_QUAL_UDF_CHUNK2     = 8,
     72     SHR_FT_EM_QUAL_UDF_CHUNK3     = 9,
     73     SHR_FT_EM_QUAL_UDF_CHUNK4     = 10,
     74     SHR_FT_EM_QUAL_UDF_CHUNK5     = 11,
     75     SHR_FT_EM_QUAL_UDF_CHUNK6     = 12,
     76     SHR_FT_EM_QUAL_UDF_CHUNK7     = 13,
     77     SHR_FT_EM_QUAL_UDF_CHUNK8     = 14,
     78     SHR_FT_EM_QUAL_UDF_CHUNK9     = 15,
     79     SHR_FT_EM_QUAL_UDF_CHUNK10    = 16,
     80     SHR_FT_EM_QUAL_UDF_CHUNK11    = 17,
     81     SHR_FT_EM_QUAL_UDF_CHUNK12    = 18,
     82     SHR_FT_EM_QUAL_UDF_CHUNK13    = 19,
     83     SHR_FT_EM_QUAL_UDF_CHUNK14    = 20,
     84     SHR_FT_EM_QUAL_UDF_CHUNK15    = 21,
     85     SHR_FT_EM_QUAL_LT_ID          = 22,
     86     SHR_FT_EM_QUAL_IN_PORT        = 23,
     87     SHR_FT_EM_MAX_QUAL
     88 } shr_ft_em_qual_t;
     89 
     90 #define SHR_FT_EM_QUAL_NAMES                            \
     91     {                                                   \
     92         "Src IPv4     ",                                \
     93         "Dst IPv4     ",                                \
     94         "L4 Src Port  ",                                \
     95         "L4 Dst Port  ",                                \
     96         "IP Protocol  ",                                \
     97         "VNID         ",                                \
     98         "UDF Chunk 0  ",                                \
     99         "UDF Chunk 1  ",                                \
    100         "UDF Chunk 2  ",                                \
    101         "UDF Chunk 3  ",                                \
    102         "UDF Chunk 4  ",                                \
    103         "UDF Chunk 5  ",                                \
    104         "UDF Chunk 6  ",                                \
    105         "UDF Chunk 7  ",                                \
    106         "UDF Chunk 8  ",                                \
    107         "UDF Chunk 9  ",                                \
    108         "UDF Chunk 10 ",                                \
    109         "UDF Chunk 11 ",                                \
    110         "UDF Chunk 12 ",                                \
    111         "UDF Chunk 13 ",                                \
    112         "UDF Chunk 14 ",                                \
    113         "UDF Chunk 15 ",                                \
    114         "LT ID        ",                                \
    115         "In Port      "                                 \
    116     }
    117 
    118 /* Supported tracking params */
    119 typedef enum shr_ft_tp_e {
    120     SHR_FT_TP_SRC_IPV4             = 0,
    121     SHR_FT_TP_DST_IPV4             = 1,
    122     SHR_FT_TP_L4_SRC_PORT          = 2,
    123     SHR_FT_TP_L4_DST_PORT          = 3,
    124     SHR_FT_TP_IP_PROTOCOL          = 4,
    125     SHR_FT_TP_VNID                 = 5,
    126     SHR_FT_TP_CUSTOM               = 6,
    127     SHR_FT_TP_INNER_SRC_IPV4       = 7,
    128     SHR_FT_TP_INNER_DST_IPV4       = 8,
    129     SHR_FT_TP_INNER_L4_SRC_PORT    = 9,
    130     SHR_FT_TP_INNER_L4_DST_PORT    = 10,
    131     SHR_FT_TP_INNER_IP_PROTOCOL    = 11,
    132     SHR_FT_TP_IN_PORT              = 12,
    133     SHR_FT_MAX_TP
    134 } shr_ft_tp_t;
    135 
    136 #define SHR_FT_TP_NAMES                                 \
    137     {                                                   \
    138         "Src IPv4          ",                           \
    139         "Dst IPv4          ",                           \
    140         "L4 Src Port       ",                           \
    141         "L4 Dst Port       ",                           \
    142         "IP Protocol       ",                           \
    143         "VNID              ",                           \
    144         "Custom            ",                           \
    145         "Inner Src IPv4    ",                           \
    146         "Inner Dst IPv4    ",                           \
    147         "Inner L4 Src Port ",                           \
    148         "Inner L4 Dst Port ",                           \
    149         "Inner IP Protocol ",                           \
    150         "In Port           "                            \
    151     }
    152 
    153 /* Supported UDF base offsets */
    154 typedef enum shr_ft_udf_base_offset_e {
    155     SHR_FT_UDF_BASE_OFFSET_INVALID   = 0,
    156     SHR_FT_UDF_BASE_OFFSET_OUTER_L2  = 1,
    157     SHR_FT_UDF_BASE_OFFSET_OUTER_L3  = 2,
    158     SHR_FT_UDF_BASE_OFFSET_OUTER_L4  = 3,
    159     SHR_FT_UDF_BASE_OFFSET_OUTER_L5  = 4,
    160     SHR_FT_UDF_BASE_OFFSET_MAX
    161 } shr_ft_udf_base_offset_t;
    162 
    163 #define SHR_FT_BASE_OFFSET_NAMES                        \
    164     {                                                   \
    165         "Invalid  ",                                    \
    166         "Outer L2 ",                                    \
    167         "Outer L3 ",                                    \
    168         "Outer L4 ",                                    \
    169         "Outer L5 "                                     \
    170     }
    171 
    172 /* Max size of the IPFIX packet encap */
    173 #define SHR_FT_MAX_COLLECTOR_ENCAP_LENGTH 128
    174 
    175 /* Max size of the template set encap */
    176 #define SHR_FT_MAX_TEMPLATE_SET_ENCAP_LENGTH 64
    177 
    178 /* Minimum export length required */
    179 #define SHR_FT_MIN_EXPORT_LENGTH 128
    180 
    181 /* Max export length supported 9K - Jumbo */
    182 #define SHR_FT_MAX_EXPORT_LENGTH 9000
    183 
    184 /* Max number of pipes across all devices */
    185 #define SHR_FT_MAX_PIPES 8
    186 
    187 /* Max timeout for msging between SDK and UKERNEL */
    188 #define SHR_FT_MAX_UC_MSG_TIMEOUT 5000000 /* 5 secs */
    189 
    190 /* Group update params */
    191 typedef enum shr_ft_group_update_e {
    192     SHR_FT_GROUP_UPDATE_INVALID                    = 0,
    193     SHR_FT_GROUP_UPDATE_FLOW_THRESHOLD             = 1,
    194     SHR_FT_GROUP_UPDATE_FLUSH                      = 2,
    195     SHR_FT_GROUP_UPDATE_COUNTER_CLEAR              = 3,
    196     SHR_FT_GROUP_UPDATE_OBSERVATION_DOMAIN         = 4,
    197     SHR_FT_GROUP_UPDATE_AGING_INTERVAL             = 5,
    198     SHR_FT_GROUP_UPDATE_COLLECTOR_TEMPLATE_SET     = 6,
    199     SHR_FT_GROUP_UPDATE_COLLECTOR_TEMPLATE_UNSET   = 7,
    200     SHR_FT_GROUP_UPDATE_ELPH_PROFILE               = 8,
    201     SHR_FT_GROUP_UPDATE_ELPH_QOS_PROFILE_ID        = 9,
    202     SHR_FT_GROUP_UPDATE_EM_GROUP_IDX               = 10,
    203     SHR_FT_GROUP_UPDATE_EXPORT_TRIGGERS            = 11,
    204     SHR_FT_GROUP_UPDATE_DEFAULT_GROUP              = 12,
    205     SHR_FT_GROUP_UPDATE_COUNT
    206 } shr_ft_group_update_t;
    207 
    208 /* List of supported Info elements that can be exported by app */
    209 typedef enum shr_ft_template_info_elem_e {
    210     SHR_FT_TEMPLATE_INFO_ELEM_SRC_IPV4           = 0,
    211     SHR_FT_TEMPLATE_INFO_ELEM_DST_IPV4           = 1,
    212     SHR_FT_TEMPLATE_INFO_ELEM_L4_SRC_PORT        = 2,
    213     SHR_FT_TEMPLATE_INFO_ELEM_L4_DST_PORT        = 3,
    214     SHR_FT_TEMPLATE_INFO_ELEM_IP_PROTOCOL        = 4,
    215     SHR_FT_TEMPLATE_INFO_ELEM_PKT_TOTAL_COUNT    = 5,
    216     SHR_FT_TEMPLATE_INFO_ELEM_BYTE_TOTAL_COUNT   = 6,
    217     SHR_FT_TEMPLATE_INFO_ELEM_FLOW_START_TS_MSEC = 7,
    218     SHR_FT_TEMPLATE_INFO_ELEM_OBS_TS_MSEC        = 8,
    219     SHR_FT_TEMPLATE_INFO_ELEM_GROUP_ID           = 9,
    220     SHR_FT_TEMPLATE_INFO_ELEM_VNID               = 10,
    221     SHR_FT_TEMPLATE_INFO_ELEM_CUSTOM             = 11,
    222     SHR_FT_TEMPLATE_INFO_ELEM_INNER_SRC_IPV4     = 12,
    223     SHR_FT_TEMPLATE_INFO_ELEM_INNER_DST_IPV4     = 13,
    224     SHR_FT_TEMPLATE_INFO_ELEM_INNER_L4_SRC_PORT  = 14,
    225     SHR_FT_TEMPLATE_INFO_ELEM_INNER_L4_DST_PORT  = 15,
    226     SHR_FT_TEMPLATE_INFO_ELEM_INNER_IP_PROTOCOL  = 16,
    227     SHR_FT_TEMPLATE_MAX_INFO_ELEMENTS
    228 } shr_ft_template_info_elem_t;
    229 
    230 /* Maximum number of filters (promotion + demotion) in an elephant profile */
    231 #define SHR_FT_ELPH_MAX_FILTERS 3
    232 
    233 /* Learn status */
    234 typedef enum shr_ft_learn_pkt_status_e {
    235     SHR_FT_LEARN_PKT_NOT_READY             = 0,
    236     SHR_FT_LEARN_PKT_RUNT                  = 1,
    237     SHR_FT_LEARN_PKT_NON_IP                = 2,
    238     SHR_FT_LEARN_PKT_NON_IPV4              = 3,
    239     SHR_FT_LEARN_PKT_INVALID_GROUP         = 4,
    240     SHR_FT_LEARN_PKT_GROUP_NOT_ENABLED     = 5,
    241     SHR_FT_LEARN_PKT_GROUP_THRESHOLD       = 6,
    242     SHR_FT_LEARN_PKT_PIPE_THRESHOLD        = 7,
    243     SHR_FT_LEARN_PKT_EM_LOOKUP_SCHAN_FAIL  = 8,
    244     SHR_FT_LEARN_PKT_DUPLICATE             = 9,
    245     SHR_FT_LEARN_PKT_NEW_FLOW              = 10,
    246     SHR_FT_LEARN_PKT_EM_INSERT_FAIL        = 11,
    247     SHR_FT_LEARN_PKT_UNKNOWN_PIPE          = 12,
    248     SHR_FT_LEARN_PKT_EM_GROUP_NOT_ATTACHED = 13,
    249     SHR_FT_LEARN_PKT_PARSE_ERROR           = 14,
    250     SHR_FT_LEARN_PKT_DROP_MONITOR_EVENT    = 15,
    251     SHR_FT_LEARN_PKT_DEFAULT_GROUP         = 16,
    252     SHR_FT_LEARN_PKT_DROP_NO_CHANGE        = 17,
    253     SHR_FT_LEARN_PKT_MAX_STATUS
    254 } shr_ft_learn_pkt_status_t;
    255 
    256 #define SHR_FT_LEARN_PKT_STATUS_NAMES                    \
    257     {                                                    \
    258             "Not Ready             ",                    \
    259             "Runt                  ",                    \
    260             "Non IP                ",                    \
    261             "Non IPv4              ",                    \
    262             "Invalid Group         ",                    \
    263             "Group Not enabled     ",                    \
    264             "Group Threshold       ",                    \
    265             "Pipe Threshold        ",                    \
    266             "EM lookup schan fail  ",                    \
    267             "Duplicate             ",                    \
    268             "New flow              ",                    \
    269             "EM insert fail        ",                    \
    270             "Unknown Pipe          ",                    \
    271             "EM group not attached ",                    \
    272             "Pkt parse error       ",                    \
    273             "Drop Monitor Event    ",                    \
    274             "Default Group         ",                    \
    275             "Drop No Change        "                     \
    276     }
    277 
    278 
    279 /*
    280  * Flow states
    281  */
    282 typedef enum shr_ft_elph_flow_state_e {
    283     SHR_FT_ELPH_FLOW_STATE_NEW           = 0,
    284     SHR_FT_ELPH_FLOW_STATE_UNDETERMINED  = 1,
    285     SHR_FT_ELPH_FLOW_STATE_MOUSE         = 2,
    286     SHR_FT_ELPH_FLOW_STATE_CANDIDATE     = 3,
    287     SHR_FT_ELPH_FLOW_STATE_ELEPHANT      = 4,
    288     SHR_FT_ELPH_FLOW_STATE_COUNT
    289 } shr_ft_elph_flow_state_t;
    290 
    291 #define SHR_FT_ELPH_STATES                          \
    292     {                                               \
    293             "New              ",                    \
    294             "Undetermined     ",                    \
    295             "Mouse            ",                    \
    296             "Candidate        ",                    \
    297             "Elephant         ",                    \
    298 }
    299 
    300 /* Elephant monitor actions */
    301 typedef enum shr_ft_elph_action_e {
    302     SHR_FT_ELPH_ACTION_NONE         = 0,
    303     SHR_FT_ELPH_ACTION_PROMOTE      = 1,
    304     SHR_FT_ELPH_ACTION_DEMOTE       = 2,
    305     SHR_FT_ELPH_ACTION_COUNT
    306 } shr_ft_elph_action_t;
    307 
    308 #define SHR_FT_ELPH_ACTIONS                         \
    309 {                                                   \
    310             "None             ",                    \
    311             "Promote          ",                    \
    312             "Demote           ",                    \
    313 }
    314 
    315 /* Flowtracker config modes */
    316 typedef enum shr_ft_cfg_modes_e {
    317     /*
    318      * V1 - Implicit EM group creation
    319      *    - Dedicated collector APIs
    320      *    - Fixed IPv4 5-tuple tracking
    321      *    - Only IPFIX export
    322      */
    323     SHR_FT_CFG_MODE_V1 = 1,
    324 
    325     /*
    326      * V2 - EM group creation by customer
    327      *    - Use common collector infra
    328      *    - Support IPFIX & protoBuf based export
    329      *    - Flexible tracking params
    330      */
    331     SHR_FT_CFG_MODE_V2 = 2,
    332 
    333     SHR_FT_CFG_MODE_COUNT
    334 } shr_ft_cfg_modes_t;
    335 
    336 /* Features supported by uC */
    337 #define SHR_FT_UC_FEATURE_ELPH                      (1 << 0)
    338 #define SHR_FT_UC_FEATURE_IPFIX_EXPORT              (1 << 1)
    339 #define SHR_FT_UC_FEATURE_PROTOBUF_EXPORT           (1 << 2)
    340 #define SHR_FT_UC_FEATURE_DROP_MONITOR              (1 << 3)
    341 #define SHR_FT_UC_FEATURE_FSP_REINJECT              (1 << 4)
    342 #define SHR_FT_UC_FEATURE_EXPORT_TRIGGER_NEW_LEARN  (1 << 5)
    343 #define SHR_FT_UC_FEATURE_EXPORT_TRIGGER_AGE_OUT    (1 << 6)
    344 #define SHR_FT_UC_FEATURE_EXPORT_TRIGGER_DROP       (1 << 7)
    345 #define SHR_FT_UC_FEATURE_EXPORT_INTERVAL_CHANGE    (1 << 8)
    346 
    347 /* Max number of supported EM groups */
    348 #define SHR_FT_MAX_EM_GROUPS 4
    349 
    350 /* Max length of the custom key */
    351 #define SHR_FT_CUSTOM_KEY_MAX_LENGTH 16
    352 
    353 /* EM actions supported */
    354 #define SHR_FT_EM_ACTION_METER (1 << 0)
    355 #define SHR_FT_EM_ACTION_CTR   (1 << 1)
    356 
    357 /* Flow group actions */
    358 #define SHR_FT_GROUP_ACTION_FSP_REINJECT (1 << 0)
    359 #define SHR_FT_GROUP_ACTION_DROP_MONITOR (1 << 1)
    360 
    361 /* Max length of the system ID */
    362 #define SHR_FT_PB_SYSTEM_ID_MAX_LENGTH 32
    363 
    364 /* Export Triggers */
    365 #define SHR_FT_EXPORT_TRIGGER_PERIODIC  (1 << 0)
    366 #define SHR_FT_EXPORT_TRIGGER_NEW_LEARN (1 << 1)
    367 #define SHR_FT_EXPORT_TRIGGER_AGE_OUT   (1 << 2)
    368 #define SHR_FT_EXPORT_TRIGGER_DROP      (1 << 3)
    369 
    370 /* EM Class Id */
    371 #define SHR_FT_EM_DROP_CLASS_ID   (1 << 0)
    372 
    373 /* Max number of drop reasons per flow */
    374 #define SHR_FT_DROP_REASONS_MAX_COUNT 2
    375 
    376 typedef enum shr_ft_drop_rx_reasons_e {
    377     /* These errors have a direct mapping to the drop reasons in proto file,
    378      * do not change the order
    379      */
    380     SHR_FT_DROP_RX_REASON_INVALID                       = 0,
    381     SHR_FT_DROP_RX_REASON_L3_SOURCE_MISS                = 1,
    382     SHR_FT_DROP_RX_REASON_L3_DEST_MISS                  = 2,
    383     SHR_FT_DROP_RX_REASON_MCAST_MISS                    = 3,
    384     SHR_FT_DROP_RX_REASON_IP_MCAST_MISS                 = 4,
    385     SHR_FT_DROP_RX_REASON_UNKNOWN_VLAN                  = 5,
    386     SHR_FT_DROP_RX_REASON_L3_HEADER_MISMATCH            = 6,
    387     SHR_FT_DROP_RX_REASON_DOS_ATTACK                    = 7,
    388     SHR_FT_DROP_RX_REASON_MARTIAN_ADDR                  = 8,
    389     SHR_FT_DROP_RX_REASON_TUNNEL_ERROR                  = 9,
    390     SHR_FT_DROP_RX_REASON_PARITY_ERROR                  = 10,
    391     SHR_FT_DROP_RX_REASON_L3_MTU_FAIL                   = 11,
    392     SHR_FT_DROP_RX_REASON_HIGIG_HDR_ERROR               = 12,
    393     SHR_FT_DROP_RX_REASON_MCAST_IDX_ERROR               = 13,
    394     SHR_FT_DROP_RX_REASON_CLASS_BASED_MOVE              = 14,
    395     SHR_FT_DROP_RX_REASON_L3_ADDR_BIND_FAIL             = 15,
    396     SHR_FT_DROP_RX_REASON_MPLS_LABEL_MISS               = 16,
    397     SHR_FT_DROP_RX_REASON_MPLS_INVALID_ACTION           = 17,
    398     SHR_FT_DROP_RX_REASON_MPLS_INVALID_PAYLOAD          = 18,
    399     SHR_FT_DROP_RX_REASON_TUNNEL_OBJECT_VALIDATION_FAIL = 19,
    400     SHR_FT_DROP_RX_REASON_MPLS_SEQUENCE_NUMBER          = 20,
    401     SHR_FT_DROP_RX_REASON_L2_NON_UNICAST_MISS           = 21,
    402     SHR_FT_DROP_RX_REASON_NIV_PRIO_DROP                 = 22,
    403     SHR_FT_DROP_RX_REASON_NIV_RPF_FAIL                  = 23,
    404     SHR_FT_DROP_RX_REASON_UNKNOWN_SUBTENDING_PORT       = 24,
    405     SHR_FT_DROP_RX_REASON_TUNNEL_ADAPT_LOOKUP_MISS      = 25,
    406     SHR_FT_DROP_RX_REASON_PACKET_FLOW_SELECT_MISS       = 26,
    407     SHR_FT_DROP_RX_REASON_TUNNEL_DECAP_ECN_ERROR        = 27,
    408     SHR_FT_DROP_RX_REASON_FAILOVER_DROP                 = 28,
    409     SHR_FT_DROP_RX_REASON_OTHER_LOOKUP_MISS             = 29,
    410     SHR_FT_DROP_RX_REASON_INVALID_TPID                  = 30,
    411     SHR_FT_DROP_RX_REASON_TUNNEL_TTL_ERROR              = 31,
    412     SHR_FT_DROP_RX_REASON_MPLS_ILLEGAL_RESERVED_LABEL   = 32,
    413     SHR_FT_DROP_RX_REASON_L3_HEADER_ERROR               = 33,
    414     SHR_FT_DROP_RX_REASON_L2_HEADER_ERROR               = 34,
    415     SHR_FT_DROP_RX_REASON_TTL1                          = 35,
    416     SHR_FT_DROP_RX_REASON_TTL                           = 36,
    417     SHR_FT_DROP_RX_REASON_FCOE_ZONE_CHECK_FAIL          = 37,
    418     SHR_FT_DROP_RX_REASON_IPMC_INTERFACE_MISMATCH       = 38,
    419     SHR_FT_DROP_RX_REASON_MPLS_TTL                      = 39,
    420     SHR_FT_DROP_RX_REASON_MPLS_UNKNOWN_ACH              = 40,
    421     SHR_FT_DROP_RX_REASON_OAM_ERROR                     = 41,
    422     SHR_FT_DROP_RX_REASON_L2_GRE_SIP_MISS               = 42,
    423     SHR_FT_DROP_RX_REASON_L2_GRE_VPNID_MISS             = 43,
    424     SHR_FT_DROP_RX_REASON_BFD_ERROR                     = 44,
    425     SHR_FT_DROP_RX_REASON_CONGESTION_CNM_PROXY_ERROR    = 45,
    426     SHR_FT_DROP_RX_REASON_VXLAN_SIP_MISS                = 46,
    427     SHR_FT_DROP_RX_REASON_VXLAN_VPNID_MISS              = 47,
    428     SHR_FT_DROP_RX_REASON_NIV_INTERFACE_MISS            = 48,
    429     SHR_FT_DROP_RX_REASON_NIV_TAG_INVALID               = 49,
    430     SHR_FT_DROP_RX_REASON_NIV_TAG_DROP                  = 50,
    431     SHR_FT_DROP_RX_REASON_NIV_UNTAG_DROP                = 51,
    432     SHR_FT_DROP_RX_REASON_TRILL_INVALID                 = 52,
    433     SHR_FT_DROP_RX_REASON_TRILL_MISS                    = 53,
    434     SHR_FT_DROP_RX_REASON_TRILL_RPF_FAIL                = 54,
    435     SHR_FT_DROP_RX_REASON_TRILL_TTL                     = 55,
    436     SHR_FT_DROP_RX_REASON_NAT_ERROR                     = 56,
    437     SHR_FT_DROP_RX_REASON_TCP_UDP_NAT_MISS              = 57,
    438     SHR_FT_DROP_RX_REASON_ICMP_NAT_MISS                 = 58,
    439     SHR_FT_DROP_RX_REASON_NAT_FRAGMENT                  = 59,
    440     SHR_FT_DROP_RX_REASON_NAT_MISS                      = 60,
    441 
    442     /* Indicates end of directly usable drop reasons */
    443     SHR_FT_DROP_RX_REASON_MAX_VALUE,
    444 
    445     /* These are errors with encoding which must be resolved, always must be
    446      * last
    447      */
    448     /* Dummy error to mark start of encoded errors */
    449     SHR_FT_DROP_RX_REASON_ENCODED_ERRORS_START = SHR_FT_DROP_RX_REASON_MAX_VALUE,
    450     SHR_FT_DROP_RX_REASON_NIV_ENCODING,
    451     SHR_FT_DROP_RX_REASON_TRILL_ENCODING,
    452     SHR_FT_DROP_RX_REASON_NAT_ENCODING,
    453 
    454     /* Always last, not usable */
    455     SHR_FT_DROP_RX_REASONS_COUNT
    456 } shr_ft_drop_rx_reasons_t;
    457 
    458 #endif /* _SOC_SHARED_FT_H */