rx.h (34124B)
1 /* 2 * 3 * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file. 4 * 5 * Copyright 2007-2019 Broadcom Inc. All rights reserved. 6 * 7 * File: rx.h 8 * Purpose: Packet Receive Reason Types shared between BCM and SOC layers 9 */ 10 11 #ifndef _SHR_RX_H_ 12 #define _SHR_RX_H_ 13 14 #include <shared/types.h> 15 #include <shared/bitop.h> 16 17 /* 18 * PKT RX Packet Reasons; reason CPU received the packet. 19 * Notes: It is possible no reasons are set (directed to CPU from ARL 20 * for example), or multiple reasons may be set. 21 */ 22 23 typedef enum _shr_rx_reason_e { 24 _SHR_RX_INVALID = 0, 25 _SHR_RX_ARP = 1, /* ARP Packet */ 26 _SHR_RX_BPDU = 2, /* BPDU Packet */ 27 _SHR_RX_BROADCAST = 3, /* Broadcast packet */ 28 _SHR_RX_CLASS_BASED_MOVE = 4, /* Class-based move prevented */ 29 _SHR_RX_CLASS_TAG_PACKETS = 5, /* Higig Header with PPD=1 */ 30 _SHR_RX_CONTROL = 6, /* Control frame or reserved addr */ 31 _SHR_RX_CPU_LEARN = 7, /* CPU Learned (or VLAN not found */ 32 /* on Strata devices) */ 33 _SHR_RX_DEST_LOOKUP_FAIL = 8, /* Destination lookup fail (or L3 */ 34 /* station move on Strata devices) */ 35 _SHR_RX_DHCP = 9, /* DHCP packets */ 36 _SHR_RX_DOS_ATTACK = 10, /* DOS Attack Packet */ 37 _SHR_RX_E2E_HOL_IBP = 11, /* E2E HOL or IBP Packet */ 38 _SHR_RX_ENCAP_HIGIG_ERROR = 12, /* Non-HG packets received on an */ 39 /* E-HG port */ 40 _SHR_RX_FILTER_MATCH = 13, /* Filter Match */ 41 _SHR_RX_GRE_CHECKSUM = 14, /* GRE checksum */ 42 _SHR_RX_GRE_SOURCE_ROUTE = 15, /* GRE source routing */ 43 _SHR_RX_HIGIG_CONTROL = 16, /* Higig Packet with Control Opcode */ 44 _SHR_RX_HIGIG_HDR_ERROR = 17, /* Higig+ header errors */ 45 _SHR_RX_ICMP_REDIRECT = 18, /* ICMP Recirect */ 46 _SHR_RX_IGMP = 19, /* IGMP packet */ 47 _SHR_RX_INGRESS_FILTER = 20, /* Ingress Filter (VLAN membership) */ 48 _SHR_RX_IP = 21, /* IP packet */ 49 _SHR_RX_IPFIX_RATE_VIOLATION = 22, /* IPFIX flows exceed metering */ 50 _SHR_RX_IP_MCAST_MISS = 23, /* IPMC miss */ 51 _SHR_RX_IP_OPTION_VERSION = 24, /* IP options present or IP ver != 4 */ 52 _SHR_RX_IPMC = 25, /* Class D IP multicast packet */ 53 _SHR_RX_IPMC_RSVD = 26, /* IPMC Reserved Packet */ 54 _SHR_RX_L2_CPU = 27, /* L2_TABLE - copy to CPU (on 5690) */ 55 _SHR_RX_L2_DEST_MISS = 28, /* L2 destination lookup failure */ 56 _SHR_RX_L2_LEARN_LIMIT = 29, /* L2 Learn Limit */ 57 _SHR_RX_L2_MOVE = 30, /* L2 Station Movement */ 58 _SHR_RX_L2_MTU_FAIL = 31, /* L2 MTU check fail */ 59 _SHR_RX_L2_NON_UNICAST_MISS = 32, /* L2 Non-Unicast lookup miss */ 60 _SHR_RX_L2_SOURCE_MISS = 33, /* L2 source lookup failure */ 61 _SHR_RX_L3_ADDR_BIND_FAIL = 34, /* MAC to IP bind check failure */ 62 _SHR_RX_L3_DEST_MISS = 35, /* L3 DIP Miss */ 63 _SHR_RX_L3_HEADER_ERROR = 36, /* L3 header - IP options, */ 64 _SHR_RX_L3_MTU_FAIL = 37, /* L3 MTU check fail */ 65 _SHR_RX_L3_SLOW_PATH = 38, /* L3 slow path processed pkt. */ 66 _SHR_RX_L3_SOURCE_MISS = 39, /* L3 SIP Miss */ 67 _SHR_RX_L3_SOUCE_MOVE = 40, /* L3 Station Movement */ 68 _SHR_RX_MARTIAN_ADDR = 41, /* Pkt. with Martian address */ 69 _SHR_RX_MCAST_IDX_ERROR = 42, /* Multicast index error */ 70 _SHR_RX_MCAST_MISS = 43, /* MC miss */ 71 _SHR_RX_MIM_SERVICE_ERROR = 44, /* MiM terminated unicast packets */ 72 /* that do not have a valid I-SID */ 73 _SHR_RX_MPLS_CTRL_WORD_ERROR = 45, /* MPLS Control Word type is not 0 */ 74 _SHR_RX_MPLS_ERROR = 46, /* MPLS error */ 75 _SHR_RX_MPLS_INVALID_ACTION = 47, /* MPLS Invalid Action */ 76 _SHR_RX_MPLS_INVALID_PAYLOAD = 48, /* MPLS Invalid Payload */ 77 _SHR_RX_MPLS_LABEL_MISS = 49, /* MPLS table miss */ 78 _SHR_RX_MPLS_SEQUENCE_NUMBER = 50, /* MPLS Sequence number */ 79 _SHR_RX_MPLS_TTL = 51, /* MPLS TTL */ 80 _SHR_RX_MULTICAST = 52, /* Multicast packet */ 81 _SHR_RX_NHOP = 53, /* Copy to CPU from NH Idx Tbl */ 82 _SHR_RX_OAM_ERROR = 54, /* OAM packets to CPU for error cases */ 83 _SHR_RX_OAM_SLOW_PATH = 55, /* OAM packets to CPU - slowpath */ 84 /* process */ 85 _SHR_RX_OAM_LMDM = 56, /* OAM LMM/LMR, DMM/DMR packets to CPU */ 86 _SHR_RX_PARITY_ERROR = 57, /* Parity error on IP tables */ 87 _SHR_RX_PROTOCOL = 58, /* Protocol Packet */ 88 _SHR_RX_SAMPLE_DEST = 59, /* Egress sFlow sampled */ 89 _SHR_RX_SAMPLE_SOURCE = 60, /* Ingress sFlow sampled */ 90 _SHR_RX_SHARED_VLAN_MISMATCH = 61, /* Private VLAN Mismatch */ 91 _SHR_RX_SOURCE_ROUTE = 62, /* Source routing bit set */ 92 _SHR_RX_TIME_STAMP = 63, /* Network time sync packet */ 93 _SHR_RX_TTL = 64, /* TTL <= 0 or TTL < IPMC threshold */ 94 _SHR_RX_TTL1 = 65, /* L3UC or IPMC packet with TTL */ 95 /* equal to 1 */ 96 _SHR_RX_TUNNEL_ERROR = 66, /* Tunnel error trap */ 97 _SHR_RX_UDP_CHECKSUM = 67, /* UDP checksum */ 98 _SHR_RX_UNKNOWN_VLAN = 68, /* Unknown VLAN; VID = 0xfff; */ 99 /* CPU Learn bit (on 5690 devices) */ 100 _SHR_RX_URPF_FAIL = 69, /* URPF Check Failed */ 101 _SHR_RX_VC_LABEL_MISS = 70, /* VPLS table miss */ 102 _SHR_RX_VLAN_FILTER_MATCH = 71, /* VLAN Filter Match */ 103 _SHR_RX_WLAN_CLIENT_ERROR = 72, /* ROC error packets to the CPU */ 104 _SHR_RX_WLAN_SLOW_PATH = 73, /* WLAN packets slowpath to the CPU */ 105 _SHR_RX_WLAN_DOT1X_DROP = 74, /* WLAN client is unauthenticated */ 106 _SHR_RX_EXCEPTION_FLOOD = 75, /* Exception processing or flooding */ 107 _SHR_RX_TIMESYNC = 76, /* Time Sync protocol packet */ 108 _SHR_RX_EAV_DATA = 77, /* Ethernet AV data packet */ 109 _SHR_RX_SAME_PORT_BRIDGE = 78, /* Hairpin or Same port */ 110 /* switching/bridging */ 111 _SHR_RX_SPLIT_HORIZON = 79, /* Basic bridging or VPLS Split */ 112 /* horizon */ 113 _SHR_RX_L4_ERROR = 80, /* TCP/UDP header or port number */ 114 /* errors */ 115 _SHR_RX_STP = 81, /* STP Ingress or Egress checks */ 116 _SHR_RX_EGRESS_FILTER_REDIRECT = 82, /* Vlan egress filter redirect */ 117 _SHR_RX_FILTER_REDIRECT = 83, /* Field processor redirect */ 118 _SHR_RX_LOOPBACK = 84, /* Loopbacked */ 119 _SHR_RX_VLAN_TRANSLATE = 85, /* VLAN translation table missed when */ 120 /* it is expected to hit */ 121 _SHR_RX_MMRP = 86, /* Packet of type MMRP */ 122 _SHR_RX_SRP = 87, /* Packet of type SRP */ 123 _SHR_RX_TUNNEL_CONTROL = 88, /* Tunnel control packet */ 124 _SHR_RX_L2_MARKED = 89, /* L2 table marked */ 125 _SHR_RX_WLAN_SLOWPATH_KEEPALIVE = 90, /* WLAN slowpath to the CPU, */ 126 /* otherwise dropped */ 127 _SHR_RX_STATION = 91, /* My Station packet to CPU */ 128 _SHR_RX_NIV = 92, /* NIV packet */ 129 _SHR_RX_NIV_PRIO_DROP = 93, /* NIV packet, priority drop */ 130 _SHR_RX_NIV_INTERFACE_MISS = 94, /* NIV packet, interface miss */ 131 _SHR_RX_NIV_RPF_FAIL = 95, /* NIV packet, RPF failed */ 132 _SHR_RX_NIV_TAG_INVALID = 96, /* NIV packet, invalid tag */ 133 _SHR_RX_NIV_TAG_DROP = 97, /* NIV packet, tag drop */ 134 _SHR_RX_NIV_UNTAG_DROP = 98, /* NIV packet, untagged drop */ 135 _SHR_RX_TRILL = 99, /* TRILL packet */ 136 _SHR_RX_TRILL_INVALID = 100, /* TRILL packet, header error */ 137 _SHR_RX_TRILL_MISS = 101, /* TRILL packet, lookup miss */ 138 _SHR_RX_TRILL_RPF_FAIL = 102, /* TRILL packet, RPF check failed */ 139 _SHR_RX_TRILL_SLOWPATH = 103, /* TRILL packet, slowpath to CPU */ 140 _SHR_RX_TRILL_CORE_IS_IS = 104, /* TRILL packet, Core IS-IS */ 141 _SHR_RX_TRILL_TTL = 105, /* TRILL packet, TTL check failed */ 142 _SHR_RX_BFD_SLOWPATH = 106, /* The BFD packet is being fwd to the */ 143 /* local uC for processing */ 144 _SHR_RX_BFD = 107, /* BFD Error */ 145 _SHR_RX_MIRROR = 108, /* Mirror packet */ 146 _SHR_RX_REGEX_ACTION = 109, /* Flow tracker */ 147 _SHR_RX_REGEX_MATCH = 110, /* Signature Match */ 148 _SHR_RX_FAILOVER_DROP = 111, /* Protection drop data */ 149 _SHR_RX_WLAN_TUNNEL_ERROR = 112, /* WLAN shim header error to CPU */ 150 _SHR_RX_CONGESTION_CNM_PROXY = 113, /* Congestion CNM Proxy */ 151 _SHR_RX_CONGESTION_CNM_PROXY_ERROR = 114, /* Congestion CNM Proxy Error */ 152 _SHR_RX_CONGESTION_CNM = 115, /* Congestion CNM Internal Packet */ 153 _SHR_RX_MPLS_UNKNOWN_ACH = 116, /* MPLS Unknown ACH */ 154 _SHR_RX_MPLS_LOOKUPS_EXCEEDED = 117, /* MPLS out of lookups */ 155 _SHR_RX_MPLS_RESERVED_ENTROPY_LABEL = 118, /* MPLS Entropy label in unallowed */ 156 /* range */ 157 _SHR_RX_MPLS_ILLEGAL_RESERVED_LABEL = 119, /* MPLS illegal reserved label */ 158 _SHR_RX_MPLS_ROUTER_ALERT_LABEL = 120, /* MPLS alert label */ 159 _SHR_RX_NIV_PRUNE = 121, /* NIV access port pruning (dst = src) */ 160 _SHR_RX_VIRTUAL_PORT_PRUNE = 122, /* SVP == DVP */ 161 _SHR_RX_NON_UNICAST_DROP = 123, /* Explicit multicast packet drop */ 162 _SHR_RX_TRILL_PACKET_PORT_MISMATCH = 124, /* TRILL packet vs Rbridge port */ 163 /* conflict */ 164 _SHR_RX_WLAN_CLIENT_MOVE = 125, /* WLAN client moved */ 165 _SHR_RX_WLAN_SOURCE_PORT_MISS = 126, /* WLAN SVP miss */ 166 _SHR_RX_WLAN_CLIENT_SOURCE_MISS = 127, /* WLAN client database SA miss */ 167 _SHR_RX_WLAN_CLIENT_DEST_MISS = 128, /* WLAN client database DA miss */ 168 _SHR_RX_WLAN_MTU = 129, /* WLAN MTU error */ 169 _SHR_RX_TRILL_NAME = 130, /* TRILL packet, Name check failed */ 170 _SHR_RX_L2GRE_SIP_MISS = 131, /* L2 GRE SIP miss */ 171 _SHR_RX_L2GRE_VPN_ID_MISS = 132, /* L2 GRE VPN id miss */ 172 _SHR_RX_TIMESYNC_UNKNOWN_VERSION = 133, /* Unknown version of IEEE1588 */ 173 _SHR_RX_BFD_ERROR = 134, /* BFD ERROR */ 174 _SHR_RX_BFD_UNKNOWN_VERSION = 135, /* BFD UNKNOWN VERSION */ 175 _SHR_RX_BFD_INVALID_VERSION = 136, /* BFD INVALID VERSION */ 176 _SHR_RX_BFD_LOOKUP_FAILURE = 137, /* BFD LOOKUP FAILURE */ 177 _SHR_RX_BFD_INVALID_PACKET = 138, /* BFD INVALID PACKET */ 178 _SHR_RX_VXLAN_SIP_MISS = 139, /* Vxlan SIP miss */ 179 _SHR_RX_VXLAN_VPN_ID_MISS = 140, /* Vxlan VPN id miss */ 180 _SHR_RX_FCOE_ZONE_CHECK_FAIL = 141, /* Fcoe zone check failed */ 181 _SHR_RX_IPMC_INTERFACE_MISMATCH = 142, /* IPMC input interface check failed */ 182 _SHR_RX_NAT = 143, /* NAT */ 183 _SHR_RX_TCP_UDP_NAT_MISS = 144, /* TCP/UDP packet NAT lookup miss */ 184 _SHR_RX_ICMP_NAT_MISS = 145, /* ICMP packet NAT lookup miss */ 185 _SHR_RX_NAT_FRAGMENT = 146, /* NAT lookup on fragmented packet */ 186 _SHR_RX_NAT_MISS = 147, /* Non TCP/UDP/ICMP packet NAT lookup */ 187 /* miss */ 188 _SHR_RX_UNKNOWN_SUBTENTING_PORT = 148, /* UNKNOWN_SUBTENTING_PORT */ 189 _SHR_RX_LLTAG_ABSENT_DROP = 149, /* LLTAG_ABSENT */ 190 _SHR_RX_LLTAG_PRESENT_DROP = 150, /* LLTAG_PRESENT */ 191 _SHR_RX_OAM_CCM_SLOWPATH = 151, /* OAM CCM packet copied to CPU */ 192 _SHR_RX_OAM_INCOMPLETE_OPCODE = 152, /* OAM INCOMPLETE_OPCODE */ 193 _SHR_RX_BHH_OAM_PACKET = 153, /* BHH OAM Packet */ 194 _SHR_RX_RESERVED_0 = 154, /* Broadcom Reserved */ 195 _SHR_RX_OAM_MPLS_LMDM = 155, /* MPLS LM/DM (RFC 6374) packet */ 196 _SHR_RX_SAT = 156, /* OAM SAT pkt */ 197 _SHR_RX_SAMPLE_SOURCE_FLEX = 157, /* Flexible sampled packets to CPU */ 198 _SHR_RX_FLEX_SFLOW = 158, /* Flex Sflow? */ 199 _SHR_RX_VXLT_MISS = 159, /* VLAN Translation miss packet */ 200 _SHR_RX_TUNNEL_DECAP_ECN_ERROR = 160, /* Tunnel decap ECN error */ 201 _SHR_RX_TUNNEL_OBJECT_VALIDATION_FAIL = 161, /* Tunnel Object Validation Fail */ 202 _SHR_RX_L3_CPU = 162, /* L3 Copy to CPU */ 203 _SHR_RX_TUNNEL_ADAPT_LOOKUP_MISS = 163, /* Tunnel Adapt Lookup Miss Drop */ 204 _SHR_RX_PACKET_FLOW_SELECT_MISS = 164, /* Packet Flow Select Miss */ 205 _SHR_RX_PROTECTION_DATA_DROP = 165, /* Protection Data Drop */ 206 _SHR_RX_PACKET_FLOW_SELECT = 166, /* Packet Flow Select */ 207 _SHR_RX_OTHER_LOOKUP_MISS = 167, /* Neither Source or Dest type of Lookup Miss */ 208 _SHR_RX_INVALID_TPID = 168, /* Invalid TPID */ 209 _SHR_RX_MPLS_CONTROL_PACKET = 169, /* MPLS Control Packet */ 210 _SHR_RX_TUNNEL_TTL_ERROR = 170, /* Tunnel TTL Error */ 211 _SHR_RX_L2_HEADER_ERROR = 171, /* L2 header */ 212 _SHR_RX_OTHER_LOOKUP_HIT = 172, /* Neither Source or Dest type of Lookup Hit */ 213 _SHR_RX_L2_SRC_LOOKUP_MISS = 173, /* L2 Source Lookup Miss */ 214 _SHR_RX_L2_SRC_LOOKUP_HIT = 174, /* L2 Source Lookup Hit */ 215 _SHR_RX_L2_DST_LOOKUP_MISS = 175, /* L2 Dest Lookup Miss */ 216 _SHR_RX_L2_DST_LOOKUP_HIT = 176, /* L2 Dest Lookup Hit */ 217 _SHR_RX_L3_SRC_ROUTE_LOOKUP_MISS = 177, /* L3 Source Route Lookup Miss */ 218 _SHR_RX_L3_SRC_HOST_LOOKUP_MISS = 178, /* L3 Source Host Lookup Miss */ 219 _SHR_RX_L3_SRC_ROUTE_LOOKUP_HIT = 179, /* L3 Source Route Lookup Hit */ 220 _SHR_RX_L3_SRC_HOST_LOOKUP_HIT = 180, /* L3 Source Host Lookup Hit */ 221 _SHR_RX_L3_DST_ROUTE_LOOKUP_MISS = 181, /* L3 Dest Route Lookup Miss */ 222 _SHR_RX_L3_DST_HOST_LOOKUP_MISS = 182, /* L3 Dest Host Lookup Miss */ 223 _SHR_RX_L3_DST_ROUTE_LOOKUP_HIT = 183, /* L3 Dest Route Lookup Hit */ 224 _SHR_RX_L3_DST_HOST_LOOKUP_HIT = 184, /* L3 Dest Host Lookup Hit */ 225 _SHR_RX_VLAN_TRANSLATE1_LOOKUP1_MISS = 185, /* VLAN Translate1 Lookup1 Miss */ 226 _SHR_RX_VLAN_TRANSLATE1_LOOKUP2_MISS = 186, /* VLAN Translate1 Lookup2 Miss */ 227 _SHR_RX_MPLS_LOOKUP1_MISS = 187, /* MPLS Lookup1 Miss */ 228 _SHR_RX_MPLS_LOOKUP2_MISS = 188, /* MPLS Lookup2 Miss */ 229 _SHR_RX_L3_TUNNEL_LOOKUP_MISS = 189, /* L3 Tunnel Lookup Miss */ 230 _SHR_RX_VLAN_TRANSLATE2_LOOKUP1_MISS = 190, /* VLAN Translate2 Lookup1 Miss */ 231 _SHR_RX_VLAN_TRANSLATE2_LOOKUP2_MISS = 191, /* VLAN Translate2 Lookup2 Miss */ 232 _SHR_RX_L2_STU_FAIL = 192, /* L2 STU check fail */ 233 _SHR_RX_SR_COUNTER_EXCEEDED = 193, /* Seamless Redundancy(SR) - */ 234 /* Counter Threshold Exceeded */ 235 _SHR_RX_SR_COPY_TO_CPU_BIT0 = 194, /* Seamless Redundancy(SR) copy to CPU */ 236 /* SR custom reason code bit 0 */ 237 _SHR_RX_SR_COPY_TO_CPU_BIT1 = 195, /* SR custom reason code bit 1 */ 238 _SHR_RX_SR_COPY_TO_CPU_BIT2 = 196, /* SR custom reason code bit 2 */ 239 _SHR_RX_SR_COPY_TO_CPU_BIT3 = 197, /* SR custom reason code bit 3 */ 240 _SHR_RX_SR_COPY_TO_CPU_BIT4 = 198, /* SR custom reason code bit 4 */ 241 _SHR_RX_SR_COPY_TO_CPU_BIT5 = 199, /* SR custom reason code bit 5 */ 242 _SHR_RX_L3_HEADER_MISMATCH = 200, /* L3 Header Mismatch */ 243 _SHR_RX_DLB_MONITOR = 201, /* DLB Monitor */ 244 _SHR_RX_ETRAP_MONITOR = 202, /* ETRAP Monitor */ 245 _SHR_RX_INT_TURNAROUND = 203, /* INT TurnAround */ 246 _SHR_RX_INT_HOP_LIMIT = 204, /* INT Hop Limit */ 247 _SHR_RX_REASON_COUNT = 205 /* MUST BE LAST */ 248 } _shr_rx_reason_t; 249 250 #define _SHR_RX_REASON_NAMES_INITIALIZER { \ 251 "Invalid", \ 252 "Arp", \ 253 "Bpdu", \ 254 "Broadcast", \ 255 "ClassBasedMove", \ 256 "ClassTagPackets", \ 257 "Control", \ 258 "CpuLearn", \ 259 "DestLookupFail", \ 260 "Dhcp", \ 261 "DosAttack", \ 262 "E2eHolIbp", \ 263 "EncapHiGigError", \ 264 "FilterMatch", \ 265 "GreChecksum", \ 266 "GreSourceRoute", \ 267 "HigigControl", \ 268 "HigigHdrError", \ 269 "IcmpRedirect", \ 270 "Igmp", \ 271 "IngressFilter", \ 272 "Ip", \ 273 "IpfixRateViolation", \ 274 "IpMcastMiss", \ 275 "IpOptionVersion", \ 276 "Ipmc", \ 277 "IpmcRsvd", \ 278 "L2Cpu", \ 279 "L2DestMiss", \ 280 "L2LearnLimit", \ 281 "L2Move", \ 282 "L2MtuFail", \ 283 "L2NonUnicastMiss", \ 284 "L2SourceMiss", \ 285 "L3AddrBindFail", \ 286 "L3DestMiss", \ 287 "L3HeaderError", \ 288 "L3MtuFail", \ 289 "L3Slowpath", \ 290 "L3SourceMiss", \ 291 "L3SourceMove", \ 292 "MartianAddr", \ 293 "McastIdxError", \ 294 "McastMiss", \ 295 "MimServiceError", \ 296 "MplsCtrlWordError", \ 297 "MplsError", \ 298 "MplsInvalidAction", \ 299 "MplsInvalidPayload", \ 300 "MplsLabelMiss", \ 301 "MplsSequenceNumber", \ 302 "MplsTtl", \ 303 "Multicast", \ 304 "Nhop", \ 305 "OamError", \ 306 "OamSlowPath", \ 307 "OamLMDM", \ 308 "ParityError", \ 309 "Protocol", \ 310 "SampleDest", \ 311 "SampleSource", \ 312 "SharedVlanMismatch", \ 313 "SourceRoute", \ 314 "TimeStamp", \ 315 "Ttl", \ 316 "Ttl1", \ 317 "TunnelError", \ 318 "UdpChecksum", \ 319 "UnknownVlan", \ 320 "UrpfFail", \ 321 "VcLabelMiss", \ 322 "VlanFilterMatch", \ 323 "WlanClientError", \ 324 "WlanSlowPath", \ 325 "WlanDot1xDrop", \ 326 "ExceptionFlood", \ 327 "Timesync", \ 328 "EavData", \ 329 "SamePortBridge", \ 330 "SplitHorizon", \ 331 "L4Error", \ 332 "Stp", \ 333 "EgressFilterRedirect", \ 334 "FilterRedirect", \ 335 "Loopback", \ 336 "VlanTranslate", \ 337 "Mmrp", \ 338 "Srp", \ 339 "TunnelControl", \ 340 "L2Marked", \ 341 "WlanSlowpathKeepalive", \ 342 "Station", \ 343 "Niv", \ 344 "NivPrioDrop", \ 345 "NivInterfaceMiss", \ 346 "NivRpfFail", \ 347 "NivTagInvalid", \ 348 "NivTagDrop", \ 349 "NivUntagDrop", \ 350 "Trill", \ 351 "TrillInvalid", \ 352 "TrillMiss", \ 353 "TrillRpfFail", \ 354 "TrillSlowpath", \ 355 "TrillCoreIsIs", \ 356 "TrillTtl", \ 357 "BfdSlowpath", \ 358 "Bfd", \ 359 "Mirror", \ 360 "RegexAction", \ 361 "RegexMatch", \ 362 "FailoverDrop", \ 363 "WlanTunnelError", \ 364 "CongestionCnmProxy", \ 365 "CongestionCnmProxyError", \ 366 "CongestionCnm", \ 367 "MplsUnknownAch", \ 368 "MplsLookupsExceeded", \ 369 "MplsReservedEntropyLabel", \ 370 "MplsIllegalReservedLabel", \ 371 "MplsRouterAlertLabel", \ 372 "NivPrune", \ 373 "VirtualPortPrune", \ 374 "NonUnicastDrop", \ 375 "TrillPacketPortMismatch", \ 376 "WlanClientMove", \ 377 "WlanSourcePortMiss", \ 378 "WlanClientSourceMiss", \ 379 "WlanClientDestMiss", \ 380 "WlanMtu", \ 381 "TrillName", \ 382 "L2GreSipMiss", \ 383 "L2GreVpnIdMiss", \ 384 "TimesyncUnknownVersion", \ 385 "BfdError", \ 386 "BfdUnknownVersion", \ 387 "BfdInvalidVersion", \ 388 "BfdLookupFailure", \ 389 "BfdInvalidPacket", \ 390 "VxlanSipMiss", \ 391 "VxlanVpnIdMiss", \ 392 "FcoeZoneCheckFail", \ 393 "IpmcInterfaceMismatch", \ 394 "Nat", \ 395 "TcpUdpNatMiss", \ 396 "IcmpNatMiss", \ 397 "NatFragment", \ 398 "NatMiss", \ 399 "UnknownSubtentingPort", \ 400 "LLTagAbsentDrop", \ 401 "LLTagpresenDrop", \ 402 "OAMCCMslowpath", \ 403 "OAMIncompleteOpcode", \ 404 "OAMCCMpacket", \ 405 "Reserved0", \ 406 "OAMMplsLmDM", \ 407 "SAT", \ 408 "SampleSourceFlex", \ 409 "FlexSflow", \ 410 "VxltMiss", \ 411 "TunnelDecapEcnError", \ 412 "TunnelObjectValidationFail", \ 413 "L3Cpu", \ 414 "TunnelAdaptLookupMiss", \ 415 "PacketFlowSelectMiss", \ 416 "ProtectionDataDrop", \ 417 "PacketFlowSelect", \ 418 "OtherLookupMiss", \ 419 "InvalidTpid", \ 420 "MplsControlPacket", \ 421 "TunnelTtlError", \ 422 "L2HeaderError", \ 423 "OtherLookupHit", \ 424 "L2SrcLookupMiss", \ 425 "L2SrcLookupHit", \ 426 "L2DstLookupMiss", \ 427 "L2DstLookupHit", \ 428 "L3SrcRouteLookupMiss", \ 429 "L3SrcHostLookupMiss", \ 430 "L3SrcRouteLookupHit", \ 431 "L3SrcHostLookupHit", \ 432 "L3DstRouteLookupMiss", \ 433 "L3DstHostLookupMiss", \ 434 "L3DstRouteLookupHit", \ 435 "L3DstHostLookupHit", \ 436 "MplsLookup1Miss", \ 437 "MplsLookup2Miss", \ 438 "L3TunnelLookupMiss", \ 439 "VlanTranslate1Lookup1Miss",\ 440 "VlanTranslate1Lookup2Miss",\ 441 "VlanTranslate2Lookup1Miss",\ 442 "VlanTranslate2Lookup2Miss",\ 443 "L2StuFail", \ 444 "SrCounterExceeded", \ 445 "SrCopyToCpuBit0", \ 446 "SrCopyToCpuBit1", \ 447 "SrCopyToCpuBit2", \ 448 "SrCopyToCpuBit3", \ 449 "SrCopyToCpuBit4", \ 450 "SrCopyToCpuBit5", \ 451 "L3HeaderMismatch", \ 452 "DlbMonitor", \ 453 "EtrapMonitor", \ 454 "IntTurnAround", \ 455 "IntHopLimit", \ 456 } 457 458 /* 459 * Set of "reasons" (see _SHR_RX_*) why a packet came to the CPU. 460 */ 461 typedef struct _shr_rx_reasons_s { 462 SHR_BITDCL pbits[_SHR_BITDCLSIZE(_SHR_RX_REASON_COUNT)]; 463 } _shr_rx_reasons_t; 464 465 /* 466 * Macro to check if a reason (_SHR_RX_*) is included in a 467 * set of reasons (_shr_rx_reasons_t). Returns: 468 * zero => reason is not included in the set 469 * non-zero => reason is included in the set 470 */ 471 #define _SHR_RX_REASON_GET(_reasons, _reason) \ 472 SHR_BITGET(((_reasons).pbits), (_reason)) 473 474 /* 475 * Macro to add a reason (_SHR_RX_*) to a set of 476 * reasons (_shr_rx_reasons_t) 477 */ 478 #define _SHR_RX_REASON_SET(_reasons, _reason) \ 479 SHR_BITSET(((_reasons).pbits), (_reason)) 480 481 /* 482 * Macro to add all reasons (_SHR_RX_*) to a set of 483 * reasons (_shr_rx_reasons_t) 484 */ 485 #define _SHR_RX_REASON_SET_ALL(_reasons) \ 486 SHR_BITSET_RANGE(((_reasons).pbits), 0, _SHR_RX_REASON_COUNT) 487 488 /* 489 * Macro to clear a reason (_SHR_RX_*) from a set of 490 * reasons (_shr_rx_reasons_t) 491 */ 492 #define _SHR_RX_REASON_CLEAR(_reasons, _reason) \ 493 SHR_BITCLR(((_reasons).pbits), (_reason)) 494 495 /* 496 * Macro to clear a set of reasons (_shr_rx_reasons_t). 497 */ 498 #define _SHR_RX_REASON_CLEAR_ALL(_reasons) \ 499 SHR_BITCLR_RANGE(((_reasons).pbits), 0, _SHR_RX_REASON_COUNT) 500 501 #define _SHR_RX_REASON_IS_NULL(_reasons) \ 502 SHR_BITNULL_RANGE(((_reasons).pbits), \ 503 0, _SHR_RX_REASON_COUNT) 504 #define _SHR_RX_REASON_ITER(_reasons, reason) \ 505 for(reason = _SHR_RX_INVALID; reason < (int)_SHR_RX_REASON_COUNT; reason++) \ 506 if(_SHR_RX_REASON_GET(_reasons, reason)) 507 508 #define _SHR_RX_REASON_COUNT(_reasons, _count) \ 509 SHR_BITCOUNT_RANGE(((_reasons).pbits), _count, \ 510 0, _SHR_RX_REASON_COUNT) 511 #define _SHR_RX_REASON_EQ(_reasons1, _reasons2) \ 512 SHR_BITEQ_RANGE(((_reasons1).pbits), ((_reasons2).pbits), \ 513 0, _SHR_RX_REASON_COUNT) 514 #define _SHR_RX_REASON_NEQ(_reasons1, _reasons2) \ 515 (!SHR_BITEQ_RANGE(((_reasons1).pbits), ((_reasons2).pbits), \ 516 0, _SHR_RX_REASON_COUNT)) 517 #define _SHR_RX_REASON_AND(_reasons1, _reasons2) \ 518 SHR_BITAND_RANGE(((_reasons1).pbits), ((_reasons2).pbits), 0, \ 519 _SHR_RX_REASON_COUNT, ((_reasons1).pbits)) 520 #define _SHR_RX_REASON_OR(_reasons1, _reasons2) \ 521 SHR_BITOR_RANGE(((_reasons1).pbits), ((_reasons2).pbits), 0, \ 522 _SHR_RX_REASON_COUNT, ((_reasons1).pbits)) 523 #define _SHR_RX_REASON_XOR(_reasons1, _reasons2) \ 524 SHR_BITXOR_RANGE(((_reasons1).pbits), ((_reasons2).pbits), 0, \ 525 _SHR_RX_REASON_COUNT, ((_reasons1).pbits)) 526 #define _SHR_RX_REASON_REMOVE(_reasons1, _reasons2) \ 527 SHR_BITREMOVE_RANGE(((_reasons1).pbits), ((_reasons2).pbits), 0, \ 528 _SHR_RX_REASON_COUNT, ((_reasons1).pbits)); 529 #define _SHR_RX_REASON_NEGATE(_reasons1, _reasons2) \ 530 SHR_BITNEGATE_RANGE(((_reasons2).pbits), 0, \ 531 _SHR_RX_REASON_COUNT, ((_reasons1).pbits)); 532 533 typedef enum _shr_rx_redirect_e { 534 _SHR_RX_REDIRECT_NORMAL = 0, 535 _SHR_RX_REDIRECT_HIGIG = 1, 536 _SHR_RX_REDIRECT_TRUNCATED = 2, 537 _SHR_RX_REDIRECT_MAX = _SHR_RX_REDIRECT_TRUNCATED 538 } _shr_rx_redirect_e; 539 540 541 typedef enum _shr_rx_decap_tunnel_e { 542 _SHR_RX_DECAP_NONE = 0, /* No tunnel Decap */ 543 _SHR_RX_DECAP_ACCESS_SVP = 1, /* Packet ingress on Access SVP (No decap) */ 544 _SHR_RX_DECAP_MIM = 2, /* Decap Mac-in-Mac tunnel */ 545 _SHR_RX_DECAP_L2GRE = 3, /* Decap L2GRE tunnel */ 546 _SHR_RX_DECAP_VXLAN = 4, /* Decap VXLAN tunnel */ 547 _SHR_RX_DECAP_AMT = 5, /* Decap AMT tunnel */ 548 _SHR_RX_DECAP_IP = 6, /* Decap IP tunnel */ 549 _SHR_RX_DECAP_TRILL = 7, /* Decap TRILL tunnel */ 550 _SHR_RX_DECAP_L2MPLS_1LABEL = 8, /* Decap MPLS 1 Label, L2 payload, no 551 Control Word */ 552 _SHR_RX_DECAP_L2MPLS_2LABEL = 9, /* Decap MPLS 2 Label, L2 payload, no 553 Control Word */ 554 _SHR_RX_DECAP_L2MPLS_1LABELCW = 10, /* Decap MPLS 1 Label, L2 payload, Control 555 Word present */ 556 _SHR_RX_DECAP_L2MPLS_2LABELCW = 11, /* Decap MPLS 2 Label, L2 payload, Control 557 Word present */ 558 _SHR_RX_DECAP_L3MPLS_1LABEL = 12, /* Decap MPLS 1 Label, L3 payload, no 559 Control Word present */ 560 _SHR_RX_DECAP_L3MPLS_2LABEL = 13, /* Decap MPLS 2 Label, L3 payload, no 561 Control Word present */ 562 _SHR_RX_DECAP_L3MPLS_1LABELCW = 14, /* Decap MPLS 1 Label, L3 payload, Control 563 Word present */ 564 _SHR_RX_DECAP_L3MPLS_2LABELCW = 15, /* Decap MPLS 2 Label, L3 payload, Control 565 Word present */ 566 _SHR_RX_DECAP_WTP2AC = 16, /* Decap WTP2AC Tunnel */ 567 _SHR_RX_DECAP_AC2AC = 17, /* Decap AC2AC Tunnel */ 568 _SHR_RX_DECAP_MPLS_1LABELCW = 18, /* Decap MPLS 1 Label, Control 569 Word present */ 570 _SHR_RX_DECAP_MPLS_2LABELCW = 19, /* Decap MPLS 2 Label, Control 571 Word present */ 572 _SHR_RX_DECAP_MPLS_1LABEL = 20, /* Decap MPLS 1 Label, no 573 Control Word */ 574 _SHR_RX_DECAP_MPLS_2LABEL = 21, /* Decap MPLS 2 Label, no 575 Control Word */ 576 _SHR_RX_DECAP_MPLS_3LABEL = 22, /* Decap MPLS 3 Label, no Control 577 Word */ 578 _SHR_RX_DECAP_MPLS_3LABELCW = 23, /* Decap MPLS 3 Label, Control 579 Word present */ 580 _SHR_RX_DECAP_MPLS_3LABEL_ENTROPY = 25, /* Decap MPLS 3 Label + entropy, 581 no Control Word */ 582 _SHR_RX_DECAP_MPLS_3LABEL_ENTROPYCW = 26, /* Decap MPLS 3 Label + entropy, 583 Control Word present */ 584 _SHR_RX_DECAP_COUNT = 27 /* Decap Tunnel Max */ 585 } _shr_rx_decap_tunnel_t; 586 587 typedef enum _shr_rx_decap_hdr_e { 588 _SHR_RX_DECAP_HDR_NONE = 0, /* No headers Decapped */ 589 _SHR_RX_DECAP_SYSTEM_HDR = 1, /* Decap System Header */ 590 _SHR_RX_DECAP_OUTER_L2_HDR = 2, /* Decap Outer L2 Header */ 591 _SHR_RX_DECAP_L3_L4_TUNNEL_HDR = 4, /* Decap Outer L3/L4/TUNNEL Header */ 592 _SHR_RX_DECAP_INNER_L2_HDR = 8, /* Decap Inner L2 Header */ 593 _SHR_RX_DECAP_INNER_L3_L4_HDR = 16, /* Decap Inner L3 and L4 Header */ 594 _SHR_RX_DECAP_HDR_MAX = _SHR_RX_DECAP_INNER_L3_L4_HDR /* Max Value */ 595 } _shr_rx_decap_hdr_t; 596 597 #endif /* _SHR_RX_H_ */