rx.h (13188B)
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 8 #ifndef _SOC_RX_H 9 #define _SOC_RX_H 10 11 #include <sal/types.h> 12 13 #include <shared/rx.h> 14 15 /* 16 * PKT RX Packet Reasons; reason CPU received the packet. 17 * Notes: 18 * It is possible no reasons are set (directed to CPU from ARL 19 * for example), or multiple reasons may be set. 20 * 21 * See "include/shared/rx.h" for full description. 22 */ 23 24 typedef enum soc_rx_reason_e { 25 socRxReasonInvalid = _SHR_RX_INVALID, 26 socRxReasonArp = _SHR_RX_ARP, 27 socRxReasonBpdu = _SHR_RX_BPDU, 28 socRxReasonBroadcast = _SHR_RX_BROADCAST, 29 socRxReasonClassBasedMove = _SHR_RX_CLASS_BASED_MOVE, 30 socRxReasonClassTagPackets = _SHR_RX_CLASS_TAG_PACKETS, 31 socRxReasonControl = _SHR_RX_CONTROL, 32 socRxReasonCpuLearn = _SHR_RX_CPU_LEARN, 33 socRxReasonDestLookupFail = _SHR_RX_DEST_LOOKUP_FAIL, 34 socRxReasonDhcp = _SHR_RX_DHCP, 35 socRxReasonDosAttack = _SHR_RX_DOS_ATTACK, 36 socRxReasonE2eHolIbp = _SHR_RX_E2E_HOL_IBP, 37 socRxReasonEncapHigigError = _SHR_RX_ENCAP_HIGIG_ERROR, 38 socRxReasonFilterMatch = _SHR_RX_FILTER_MATCH, 39 socRxReasonGreChecksum = _SHR_RX_GRE_CHECKSUM, 40 socRxReasonGreSourceRoute = _SHR_RX_GRE_SOURCE_ROUTE, 41 socRxReasonHigigControl = _SHR_RX_HIGIG_CONTROL, 42 socRxReasonHigigHdrError = _SHR_RX_HIGIG_HDR_ERROR, 43 socRxReasonIcmpRedirect = _SHR_RX_ICMP_REDIRECT, 44 socRxReasonIgmp = _SHR_RX_IGMP, 45 socRxReasonIngressFilter = _SHR_RX_INGRESS_FILTER, 46 socRxReasonIp = _SHR_RX_IP, 47 socRxReasonIpfixRateViolation = _SHR_RX_IPFIX_RATE_VIOLATION, 48 socRxReasonIpMcastMiss = _SHR_RX_IP_MCAST_MISS, 49 socRxReasonIpmcReserved = _SHR_RX_IPMC_RSVD, 50 socRxReasonIpOptionVersion = _SHR_RX_IP_OPTION_VERSION, 51 socRxReasonIpmc = _SHR_RX_IPMC, 52 socRxReasonL2Cpu = _SHR_RX_L2_CPU, 53 socRxReasonL2DestMiss = _SHR_RX_L2_DEST_MISS, 54 socRxReasonL2LearnLimit = _SHR_RX_L2_LEARN_LIMIT, 55 socRxReasonL2Move = _SHR_RX_L2_MOVE, 56 socRxReasonL2MtuFail = _SHR_RX_L2_MTU_FAIL, 57 socRxReasonL2NonUnicastMiss = _SHR_RX_L2_NON_UNICAST_MISS, 58 socRxReasonL2SourceMiss = _SHR_RX_L2_SOURCE_MISS, 59 socRxReasonL3AddrBindFail = _SHR_RX_L3_ADDR_BIND_FAIL, 60 socRxReasonL3DestMiss = _SHR_RX_L3_DEST_MISS, 61 socRxReasonL3HeaderError = _SHR_RX_L3_HEADER_ERROR, 62 socRxReasonL3MtuFail = _SHR_RX_L3_MTU_FAIL, 63 socRxReasonL3Slowpath = _SHR_RX_L3_SLOW_PATH, 64 socRxReasonL3SourceMiss = _SHR_RX_L3_SOURCE_MISS, 65 socRxReasonL3SourceMove = _SHR_RX_L3_SOUCE_MOVE, 66 socRxReasonMartianAddr = _SHR_RX_MARTIAN_ADDR, 67 socRxReasonMcastIdxError = _SHR_RX_MCAST_IDX_ERROR, 68 socRxReasonMcastMiss = _SHR_RX_MCAST_MISS, 69 socRxReasonMimServiceError = _SHR_RX_MIM_SERVICE_ERROR, 70 socRxReasonMplsCtrlWordError = _SHR_RX_MPLS_CTRL_WORD_ERROR, 71 socRxReasonMplsError = _SHR_RX_MPLS_ERROR, 72 socRxReasonMplsInvalidAction = _SHR_RX_MPLS_INVALID_ACTION, 73 socRxReasonMplsInvalidPayload = _SHR_RX_MPLS_INVALID_PAYLOAD, 74 socRxReasonMplsLabelMiss = _SHR_RX_MPLS_LABEL_MISS, 75 socRxReasonMplsSequenceNumber = _SHR_RX_MPLS_SEQUENCE_NUMBER, 76 socRxReasonMplsTtl = _SHR_RX_MPLS_TTL, 77 socRxReasonMulticast = _SHR_RX_MULTICAST, 78 socRxReasonNhop = _SHR_RX_NHOP, 79 socRxReasonOAMError = _SHR_RX_OAM_ERROR, 80 socRxReasonOAMSlowpath = _SHR_RX_OAM_SLOW_PATH, 81 socRxReasonOAMLMDM = _SHR_RX_OAM_LMDM, 82 socRxReasonParityError = _SHR_RX_PARITY_ERROR, 83 socRxReasonProtocol = _SHR_RX_PROTOCOL, 84 socRxReasonSampleDest = _SHR_RX_SAMPLE_DEST, 85 socRxReasonSampleSource = _SHR_RX_SAMPLE_SOURCE, 86 socRxReasonSharedVlanMismatch = _SHR_RX_SHARED_VLAN_MISMATCH, 87 socRxReasonSourceRoute = _SHR_RX_SOURCE_ROUTE, 88 socRxReasonTimeStamp = _SHR_RX_TIME_STAMP, 89 socRxReasonTtl = _SHR_RX_TTL, 90 socRxReasonTtl1 = _SHR_RX_TTL1, 91 socRxReasonTunnelError = _SHR_RX_TUNNEL_ERROR, 92 socRxReasonUdpChecksum = _SHR_RX_UDP_CHECKSUM, 93 socRxReasonUnknownVlan = _SHR_RX_UNKNOWN_VLAN, 94 socRxReasonUrpfFail = _SHR_RX_URPF_FAIL, 95 socRxReasonVcLabelMiss = _SHR_RX_VC_LABEL_MISS, 96 socRxReasonVlanFilterMatch = _SHR_RX_VLAN_FILTER_MATCH, 97 socRxReasonWlanClientError = _SHR_RX_WLAN_CLIENT_ERROR, 98 socRxReasonWlanSlowpath = _SHR_RX_WLAN_SLOW_PATH, 99 socRxReasonWlanDot1xDrop = _SHR_RX_WLAN_DOT1X_DROP, 100 socRxReasonExceptionFlood = _SHR_RX_EXCEPTION_FLOOD, 101 socRxReasonTimeSync = _SHR_RX_TIMESYNC, 102 socRxReasonEAVData = _SHR_RX_EAV_DATA, 103 socRxReasonSamePortBridge = _SHR_RX_SAME_PORT_BRIDGE, 104 socRxReasonSplitHorizon = _SHR_RX_SPLIT_HORIZON, 105 socRxReasonL4Error = _SHR_RX_L4_ERROR, 106 socRxReasonStp = _SHR_RX_STP, 107 socRxReasonEgressFilterRedirect = _SHR_RX_EGRESS_FILTER_REDIRECT, 108 socRxReasonFilterRedirect = _SHR_RX_FILTER_REDIRECT, 109 socRxReasonLoopback = _SHR_RX_LOOPBACK, 110 socRxReasonVlanTranslate = _SHR_RX_VLAN_TRANSLATE, 111 socRxReasonMmrp = _SHR_RX_MMRP, 112 socRxReasonSrp = _SHR_RX_SRP, 113 socRxReasonTunnelControl = _SHR_RX_TUNNEL_CONTROL, 114 socRxReasonL2Marked = _SHR_RX_L2_MARKED, 115 socRxReasonWlanSlowpathKeepalive = _SHR_RX_WLAN_SLOWPATH_KEEPALIVE, 116 socRxReasonStation = _SHR_RX_STATION, 117 socRxReasonNiv = _SHR_RX_NIV, 118 socRxReasonNivPrioDrop = _SHR_RX_NIV_PRIO_DROP, 119 socRxReasonNivInterfaceMiss = _SHR_RX_NIV_INTERFACE_MISS, 120 socRxReasonNivRpfFail = _SHR_RX_NIV_RPF_FAIL, 121 socRxReasonNivTagInvalid = _SHR_RX_NIV_TAG_INVALID, 122 socRxReasonNivTagDrop = _SHR_RX_NIV_TAG_DROP, 123 socRxReasonNivUntagDrop = _SHR_RX_NIV_UNTAG_DROP, 124 socRxReasonTrill = _SHR_RX_TRILL, 125 socRxReasonTrillInvalid = _SHR_RX_TRILL_INVALID, 126 socRxReasonTrillMiss = _SHR_RX_TRILL_MISS, 127 socRxReasonTrillRpfFail = _SHR_RX_TRILL_RPF_FAIL, 128 socRxReasonTrillSlowpath = _SHR_RX_TRILL_SLOWPATH, 129 socRxReasonTrillCoreIsIs = _SHR_RX_TRILL_CORE_IS_IS, 130 socRxReasonTrillTtl = _SHR_RX_TRILL_TTL, 131 socRxReasonTrillName = _SHR_RX_TRILL_NAME, 132 socRxReasonBfdSlowpath = _SHR_RX_BFD_SLOWPATH, 133 socRxReasonBfd = _SHR_RX_BFD, 134 socRxReasonMirror = _SHR_RX_MIRROR, 135 socRxReasonRegexAction = _SHR_RX_REGEX_ACTION, 136 socRxReasonFailoverDrop = _SHR_RX_FAILOVER_DROP, 137 socRxReasonWlanTunnelError = _SHR_RX_WLAN_TUNNEL_ERROR, 138 socRxReasonMplsReservedEntropyLabel = \ 139 _SHR_RX_MPLS_RESERVED_ENTROPY_LABEL, 140 socRxReasonCongestionCnmProxy = _SHR_RX_CONGESTION_CNM_PROXY, 141 socRxReasonCongestionCnmProxyError = _SHR_RX_CONGESTION_CNM_PROXY_ERROR, 142 socRxReasonCongestionCnm = _SHR_RX_CONGESTION_CNM, 143 socRxReasonMplsUnknownAch = _SHR_RX_MPLS_UNKNOWN_ACH, 144 socRxReasonMplsLookupsExceeded = _SHR_RX_MPLS_LOOKUPS_EXCEEDED, 145 socRxReasonMplsIllegalReservedLabel = \ 146 _SHR_RX_MPLS_ILLEGAL_RESERVED_LABEL, 147 socRxReasonMplsRouterAlertLabel = _SHR_RX_MPLS_ROUTER_ALERT_LABEL, 148 socRxReasonNivPrune = _SHR_RX_NIV_PRUNE, 149 socRxReasonVirtualPortPrune = _SHR_RX_VIRTUAL_PORT_PRUNE, 150 socRxReasonNonUnicastDrop = _SHR_RX_NON_UNICAST_DROP, 151 socRxReasonTrillPacketPortMismatch = _SHR_RX_TRILL_PACKET_PORT_MISMATCH, 152 socRxReasonRegexMatch = _SHR_RX_REGEX_MATCH, 153 socRxReasonWlanClientMove = _SHR_RX_WLAN_CLIENT_MOVE, 154 socRxReasonWlanSourcePortMiss = _SHR_RX_WLAN_SOURCE_PORT_MISS, 155 socRxReasonWlanClientSourceMiss = _SHR_RX_WLAN_CLIENT_SOURCE_MISS, 156 socRxReasonWlanClientDestMiss = _SHR_RX_WLAN_CLIENT_DEST_MISS, 157 socRxReasonWlanMtu = _SHR_RX_WLAN_MTU, 158 socRxReasonL2GreSipMiss = _SHR_RX_L2GRE_SIP_MISS, 159 socRxReasonL2GreVpnIdMiss = _SHR_RX_L2GRE_VPN_ID_MISS, 160 socRxReasonTimesyncUnknownVersion = _SHR_RX_TIMESYNC_UNKNOWN_VERSION, 161 socRxReasonVxlanSipMiss = _SHR_RX_VXLAN_SIP_MISS, 162 socRxReasonVxlanVpnIdMiss = _SHR_RX_VXLAN_VPN_ID_MISS, 163 socRxReasonFcoeZoneCheckFail = _SHR_RX_FCOE_ZONE_CHECK_FAIL, 164 socRxReasonIpmcInterfaceMismatch = _SHR_RX_IPMC_INTERFACE_MISMATCH, 165 socRxReasonNat = _SHR_RX_NAT, 166 socRxReasonTcpUdpNatMiss = _SHR_RX_TCP_UDP_NAT_MISS, 167 socRxReasonIcmpNatMiss = _SHR_RX_ICMP_NAT_MISS, 168 socRxReasonNatFragment = _SHR_RX_NAT_FRAGMENT, 169 socRxReasonNatMiss = _SHR_RX_NAT_MISS, 170 socRxReasonUnknownSubtendingPort = _SHR_RX_UNKNOWN_SUBTENTING_PORT, 171 socRxReasonLLTagAbsentDrop = _SHR_RX_LLTAG_ABSENT_DROP, 172 socRxReasonLLTagPresentDrop = _SHR_RX_LLTAG_PRESENT_DROP, 173 socRxReasonOAMCCMSlowPath = _SHR_RX_OAM_CCM_SLOWPATH, 174 socRxReasonOAMIncompleteOpcode = _SHR_RX_OAM_INCOMPLETE_OPCODE, 175 socRxReasonReserved0 = _SHR_RX_RESERVED_0, 176 socRxReasonOAMMplsLmDm = _SHR_RX_OAM_MPLS_LMDM, 177 socRxReasonSat = _SHR_RX_SAT, 178 socRxReasonSampleSourceFlex = _SHR_RX_SAMPLE_SOURCE_FLEX, 179 socRxReasonFlexSflow = _SHR_RX_FLEX_SFLOW, 180 socRxReasonVxltMiss = _SHR_RX_VXLT_MISS, 181 socRxReasonTunnelDecapEcnError = _SHR_RX_TUNNEL_DECAP_ECN_ERROR, 182 socRxReasonTunnelObjectValidationFail = _SHR_RX_TUNNEL_OBJECT_VALIDATION_FAIL, 183 socRxReasonL3Cpu = _SHR_RX_L3_CPU, 184 socRxReasonTunnelAdaptLookupMiss = _SHR_RX_TUNNEL_ADAPT_LOOKUP_MISS, 185 socRxReasonPacketFlowSelectMiss = _SHR_RX_PACKET_FLOW_SELECT_MISS, 186 socRxReasonProtectionDataDrop = _SHR_RX_PROTECTION_DATA_DROP, 187 socRxReasonPacketFlowSelect = _SHR_RX_PACKET_FLOW_SELECT, 188 socRxReasonOtherLookupMiss = _SHR_RX_OTHER_LOOKUP_MISS, 189 socRxReasonInvalidTpid = _SHR_RX_INVALID_TPID, 190 socRxReasonMplsControlPacket = _SHR_RX_MPLS_CONTROL_PACKET, 191 socRxReasonTunnelTtlError = _SHR_RX_TUNNEL_TTL_ERROR, 192 socRxReasonL2HeaderError = _SHR_RX_L2_HEADER_ERROR, 193 socRxReasonOtherLookupHit = _SHR_RX_OTHER_LOOKUP_HIT, 194 socRxReasonL2SrcLookupMiss = _SHR_RX_L2_SRC_LOOKUP_MISS, 195 socRxReasonL2SrcLookupHit = _SHR_RX_L2_SRC_LOOKUP_HIT, 196 socRxReasonL2DstLookupMiss = _SHR_RX_L2_DST_LOOKUP_MISS, 197 socRxReasonL2DstLookupHit = _SHR_RX_L2_DST_LOOKUP_HIT, 198 socRxReasonL3SrcRouteLookupMiss = _SHR_RX_L3_SRC_ROUTE_LOOKUP_MISS, 199 socRxReasonL3SrcHostLookupMiss = _SHR_RX_L3_SRC_HOST_LOOKUP_MISS, 200 socRxReasonL3SrcRouteLookupHit = _SHR_RX_L3_SRC_ROUTE_LOOKUP_HIT, 201 socRxReasonL3SrcHostLookupHit = _SHR_RX_L3_SRC_HOST_LOOKUP_HIT, 202 socRxReasonL3DstRouteLookupMiss = _SHR_RX_L3_DST_ROUTE_LOOKUP_MISS, 203 socRxReasonL3DstHostLookupMiss = _SHR_RX_L3_DST_HOST_LOOKUP_MISS, 204 socRxReasonL3DstRouteLookupHit = _SHR_RX_L3_DST_ROUTE_LOOKUP_HIT, 205 socRxReasonL3DstHostLookupHit = _SHR_RX_L3_DST_HOST_LOOKUP_HIT, 206 socRxReasonVlanTranslate1Lookup1Miss = _SHR_RX_VLAN_TRANSLATE1_LOOKUP1_MISS, 207 socRxReasonVlanTranslate1Lookup2Miss = _SHR_RX_VLAN_TRANSLATE1_LOOKUP2_MISS, 208 socRxReasonMplsLookup1Miss = _SHR_RX_MPLS_LOOKUP1_MISS, 209 socRxReasonMplsLookup2Miss = _SHR_RX_MPLS_LOOKUP2_MISS, 210 socRxReasonL3TunnelLookupMiss = _SHR_RX_L3_TUNNEL_LOOKUP_MISS, 211 socRxReasonVlanTranslate2Lookup1Miss = _SHR_RX_VLAN_TRANSLATE2_LOOKUP1_MISS, 212 socRxReasonVlanTranslate2Lookup2Miss = _SHR_RX_VLAN_TRANSLATE2_LOOKUP2_MISS, 213 socRxReasonL2StuFail = _SHR_RX_L2_STU_FAIL, 214 socReasonSrCounterExceeded = _SHR_RX_SR_COUNTER_EXCEEDED, 215 socRxReasonSrCopyToCpuBit0 = _SHR_RX_SR_COPY_TO_CPU_BIT0, 216 socRxReasonSrCopyToCpuBit1 = _SHR_RX_SR_COPY_TO_CPU_BIT1, 217 socRxReasonSrCopyToCpuBit2 = _SHR_RX_SR_COPY_TO_CPU_BIT2, 218 socRxReasonSrCopyToCpuBit3 = _SHR_RX_SR_COPY_TO_CPU_BIT3, 219 socRxReasonSrCopyToCpuBit4 = _SHR_RX_SR_COPY_TO_CPU_BIT4, 220 socRxReasonSrCopyToCpuBit5 = _SHR_RX_SR_COPY_TO_CPU_BIT5, 221 socRxReasonL3HeaderMismatch = _SHR_RX_L3_HEADER_MISMATCH, 222 socRxReasonEtrapMonitor = _SHR_RX_ETRAP_MONITOR, 223 socRxReasonDlbMonitor = _SHR_RX_DLB_MONITOR, 224 socRxReasonIntTurnAround = _SHR_RX_INT_TURNAROUND, 225 socRxReasonCount = _SHR_RX_REASON_COUNT /* MUST BE LAST */ 226 } soc_rx_reason_t; 227 228 229 /* 230 * Set of "reasons" (see socRxReason*) why a packet came to the CPU. 231 */ 232 typedef _shr_rx_reasons_t soc_rx_reasons_t; 233 234 #define SOC_RX_REASON_NAMES_INITIALIZER _SHR_RX_REASON_NAMES_INITIALIZER 235 236 /* 237 * Macro to check if a reason (socRxReason*) is included in a 238 * set of reasons (soc_rx_reasons_t). Returns: 239 * zero => reason is not included in the set 240 * non-zero => reason is included in the set 241 */ 242 #define SOC_RX_REASON_GET(_reasons, _reason) \ 243 _SHR_RX_REASON_GET(_reasons, _reason) 244 245 /* 246 * Macro to add a reason (socRxReason*) to a set of 247 * reasons (soc_rx_reasons_t) 248 */ 249 #define SOC_RX_REASON_SET(_reasons, _reason) \ 250 _SHR_RX_REASON_SET(_reasons, _reason) 251 252 /* 253 * Macro to add all reasons (socRxReason*) to a set of 254 * reasons (soc_rx_reasons_t) 255 */ 256 #define SOC_RX_REASON_SET_ALL(_reasons) \ 257 _SHR_RX_REASON_SET_ALL(_reasons) 258 259 /* 260 * Macro to clear a reason (socRxReason*) from a set of 261 * reasons (soc_rx_reasons_t) 262 */ 263 #define SOC_RX_REASON_CLEAR(_reasons, _reason) \ 264 _SHR_RX_REASON_CLEAR(_reasons, _reason) 265 266 /* 267 * Macro to clear a set of reasons (soc_rx_reasons_t). 268 */ 269 #define SOC_RX_REASON_CLEAR_ALL(_reasons) \ 270 _SHR_RX_REASON_CLEAR_ALL(_reasons) 271 272 #define SOC_RX_CHANNELS 4 /* Max. number of RX channels. */ 273 extern int 274 soc_rx_queue_channel_set(int unit, int queue_id, int chan_id); 275 276 #endif /* !_SOC_RX_H */