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