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

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