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

switch.h (395593B)


      1 /*
      2  * 
      3  * 
      4  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      5  * 
      6  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      7  * 
      8  * DO NOT EDIT THIS FILE!
      9  * This file is auto-generated.
     10  * Edits to this file will be lost when it is regenerated.
     11  */
     12 
     13 #ifndef __BCM_SWITCH_H__
     14 #define __BCM_SWITCH_H__
     15 
     16 #include <bcm/port.h>
     17 #include <bcm/error.h>
     18 #include <bcm/udf.h>
     19 #include <bcm/field.h>
     20 #include <bcm/stg.h>
     21 #include <bcm/types.h>
     22 #include <shared/switch.h>
     23 
     24 /* Switch controls. */
     25 typedef enum bcm_switch_control_e {
     26     bcmSwitchHgHdrErrToCpu = 0,         /* Higig Header Error to CPU. */
     27     bcmSwitchClassTagPacketsToCpu = 1,  /* HG2 packets with a PPD header of 1. */
     28     bcmSwitchIpmcTunnelToCpu = 2,       /* IPMC tunnel packet to CPU. */
     29     bcmSwitchStationMoveOverLearnLimitToCpu = 3, /* Station movement over MAC learn limit
     30                                            to CPU. */
     31     bcmSwitchMcastUnknownErrToCpu = 4,  /* MC unknown Index Error to CPU. */
     32     bcmSwitchLearnLimitPriority = 5,    /* Priority for MAC limit exceeds to
     33                                            CPU. */
     34     bcmSwitchControlOpcodePriority = 6, /* Control Op Code priority. */
     35     bcmSwitchCpuProtoBpduPriority = 7,  /* Priority for BPDUs to CPU. */
     36     bcmSwitchCpuProtoArpPriority = 8,   /* Priority for ARP/ND packets to CPU. */
     37     bcmSwitchCpuProtoIgmpPriority = 9,  /* Priority for IGMP/MLD packets to CPU. */
     38     bcmSwitchCpuProtoDhcpPriority = 10, /* Priority for DHCP packets to CPU. */
     39     bcmSwitchCpuProtoIpmcReservedPriority = 11, /* Priority for IPv4/IPv6 multicast
     40                                            packets to CPU. */
     41     bcmSwitchCpuProtoIpOptionsPriority = 12, /* Priority for IPv4/IPv6 packets with
     42                                            options or IPv6 packets with 0 len.
     43                                            Payload/jumbo option to CPU. */
     44     bcmSwitchCpuProtoExceptionsPriority = 13, /* Priority for IPv4/IPv6 packets with
     45                                            TTL=1 to CPU. */
     46     bcmSwitchCpuProtocolPrio = 14,      /* Priority used for BPDUs to CPU. */
     47     bcmSwitchCpuUnknownPrio = 15,       /* Priority for unknown SA or DA to CPU. */
     48     bcmSwitchCpuSamplePrio = 16,        /* Priority for sFlow sample to CPU. */
     49     bcmSwitchCpuDefaultPrio = 17,       /* Priority for all other packets to
     50                                            CPU. */
     51     bcmSwitchL2StaticMoveToCpu = 18,    /* Port movement of static L2 addr. */
     52     bcmSwitchUnknownIpmcToCpu = 19,     /* Send unknown IP multicasts to CPU. */
     53     bcmSwitchUnknownMcastToCpu = 20,    /* Send unknown multicasts to CPU. */
     54     bcmSwitchUnknownUcastToCpu = 21,    /* Send DLF packets to CPU. */
     55     bcmSwitchNonIpL3ErrToCpu = 22,      /* Non-IP packets w/DA of my router MAC
     56                                            to CPU. */
     57     bcmSwitchL3HeaderErrToCpu = 23,     /* Invalid checksum, TTL 0, etc. */
     58     bcmSwitchUnknownVlanToCpu = 24,     /* Packet VLAN not in VLAN table. */
     59     bcmSwitchUnknownL3SrcToCpu = 25,    /* SIP not found in L3 table. */
     60     bcmSwitchUnknownL3DestToCpu = 26,   /* DIP not found in L3/LPM tables. */
     61     bcmSwitchIpmcPortMissToCpu = 27,    /* Incoming port not in IPMC entry. */
     62     bcmSwitchIpmcErrorToCpu = 28,       /* IPMC pkt has header err or TTL=0. */
     63     bcmSwitchVCLabelMissToCpu = 29,     /* Send VC mismatch packet to CPU. */
     64     bcmSwitchSourceRouteToCpu = 30,     /* Send multicast SA packet to CPU. */
     65     bcmSwitchSampleIngressRandomSeed = 31, /* SFlow ingress RNG seed. */
     66     bcmSwitchSampleEgressRandomSeed = 32, /* SFlow egress RNG seed. */
     67     bcmSwitchCpuFpCopyPrio = 33,        /* Priority used for FP copy to CPU. */
     68     bcmSwitchCpuIcmpRedirectPrio = 34,  /* Priority for ICMP to CPU. */
     69     bcmSwitchCpuMtuFailPrio = 35,       /* Priority for MTU failure to CPU. */
     70     bcmSwitchCpuMirrorPrio = 36,        /* Priority for packets mirrored to CPU. */
     71     bcmSwitchCpuLookupFpCopyPrio = 37,  /* Priority for Lookup FP copy to SPU. */
     72     bcmSwitchL2NonStaticMoveToCpu = 38, /* L2 w/non-static addr to CPU. */
     73     bcmSwitchV6L3ErrToCpu = 39,         /* Invalid IPv6 packets to CPU. */
     74     bcmSwitchV6L3DstMissToCpu = 40,     /* IPv6 unknown dest packets to CPU. */
     75     bcmSwitchV6L3LocalLinkDrop = 41,    /* Drop IPv6 with link local sources. */
     76     bcmSwitchV4L3ErrToCpu = 42,         /* Invalid IPv6 packets to CPU. */
     77     bcmSwitchV4L3DstMissToCpu = 43,     /* IPv6 unknown dest packets to CPU. */
     78     bcmSwitchTunnelErrToCpu = 44,       /* Invalid tunnel packets to CPU. */
     79     bcmSwitchMartianAddrToCpu = 45,     /* Martian packets to CPU. */
     80     bcmSwitchMartianAddr = 46,          /* Enable/Disable Martian packet check. */
     81     bcmSwitchL3UcTtlErrToCpu = 47,      /* L3 unicast w/invalid TTL to CPU. */
     82     bcmSwitchL3SlowpathToCpu = 48,      /* Slowpath packets to CPU. */
     83     bcmSwitchIpmcTtlErrToCpu = 49,      /* IPMC packets w/invalid TTL to CPU. */
     84     bcmSwitchDosAttackToCpu = 50,       /* Denial of Service attacks to CPU. */
     85     bcmSwitchDosAttackSipEqualDip = 51, /* Enable SIP=DIP checking. */
     86     bcmSwitchDosAttackMinTcpHdrSize = 52, /* Header length for min TCP header
     87                                            checking. */
     88     bcmSwitchDosAttackV4FirstFrag = 53, /* Enable IPv4 First Frag checking. */
     89     bcmSwitchDosAttackTcpFlags = 54,    /* Enable TCP flag checking. */
     90     bcmSwitchDosAttackL4Port = 55,      /* Enable L4 port number checking. */
     91     bcmSwitchDosAttackTcpFrag = 56,     /* Enable TCP fragment checking. */
     92     bcmSwitchDosAttackIcmp = 57,        /* Enable ICMP size checK for v4 and v6. */
     93     bcmSwitchDosAttackIcmpV4 = 58,      /* Enable ICMPv4 size check. */
     94     bcmSwitchDosAttackIcmpV6 = 59,      /* Enable ICMPv6 size check. */
     95     bcmSwitchDosAttackIcmpPktOversize = 60, /* Max pkt size for ICMP size check. */
     96     bcmSwitchDosAttackMACSAEqualMACDA = 61, /* MACSA == MACDA check. */
     97     bcmSwitchDosAttackIcmpV6PingSize = 62, /* Max pkt size for v6 ping check. */
     98     bcmSwitchDosAttackIcmpFragments = 63, /* Fragmented ICMP packets check. */
     99     bcmSwitchDosAttackTcpOffset = 64,   /* TCP Header offset equals to 1 check. */
    100     bcmSwitchDosAttackUdpPortsEqual = 65, /* UDP packets where SPORT = DROP. */
    101     bcmSwitchDosAttackTcpPortsEqual = 66, /* TCP packets where SPORT = DROP. */
    102     bcmSwitchDosAttackTcpFlagsSF = 67,  /* TCP packets with SYN & FIN bits
    103                                            enabled. */
    104     bcmSwitchDosAttackTcpFlagsFUP = 68, /* TCP packets with FIN, URG, PSH bits
    105                                            set and sequence number equals 0. */
    106     bcmSwitchDosAttackTcpHdrPartial = 69, /* TCP packets with not full TCP header. */
    107     bcmSwitchDosAttackPingFlood = 70,   /* Enable ping flood checking. */
    108     bcmSwitchDosAttackSynFlood = 71,    /* Enable SYN flood checking. */
    109     bcmSwitchDosAttackTcpSmurf = 72,    /* Enable TCP smurf checking. */
    110     bcmSwitchDosAttackTcpXMas = 73,     /* SeqNum, Fin,Urg,Psh equal 0. */
    111     bcmSwitchDosAttackL3Header = 74,    /* Ipv4/6 header length checks. */
    112     bcmSwitchIcmpRedirectToCpu = 75,    /* ICMP redirect To CPU. */
    113     bcmSwitchMplsSequenceErrToCpu = 76, /* MPLS Sequence number check failure to
    114                                            CPU. */
    115     bcmSwitchMplsLabelMissToCpu = 77,   /* MPLS label lookup miss to CPU. */
    116     bcmSwitchMplsTtlErrToCpu = 78,      /* MPLS Header TTL used value is 0 or 1. */
    117     bcmSwitchMplsInvalidL3PayloadToCpu = 79, /* MPLS L3 payload invalid. */
    118     bcmSwitchMplsInvalidActionToCpu = 80, /* Invalid action / comnination of
    119                                            actions. */
    120     bcmSwitchSharedVlanMismatchToCpu = 81, /* Private VLAN VID mismatch. */
    121     bcmSwitchL3SrcUrpfErrToCpu = 82,    /* Invalid L3 uRPF SIP to CPU. */
    122     bcmSwitchGreKeyToVlan = 83,         /* Enable system configuration for GRE
    123                                            enhancement (including GRE.key). */
    124     bcmSwitchArpReplyToCpu = 84,        /* ARP replies to CPU. */
    125     bcmSwitchArpReplyDrop = 85,         /* ARP replies dropped. */
    126     bcmSwitchArpRequestToCpu = 86,      /* ARP requests to CPU. */
    127     bcmSwitchArpRequestDrop = 87,       /* ARP requests dropped. */
    128     bcmSwitchArpReplyMyStationL2ToCPU = 88, /* Only APR reply packets with My MAC
    129                                            should be sent to CPU */
    130     bcmSwitchNdPktToCpu = 89,           /* ND packets to CPU. */
    131     bcmSwitchNdPktDrop = 90,            /* ND packets dropped. */
    132     bcmSwitchMcastFloodBlocking = 91,   /* Current PFM rule is applied when
    133                                            IGMP/MLD/MC/ReservedMC packet flooded
    134                                            to VLAN. */
    135     bcmSwitchIgmpPktToCpu = 92,         /* IGMP packets to CPU. */
    136     bcmSwitchIgmpPktDrop = 93,          /* IGMP packets dropped. */
    137     bcmSwitchDhcpPktToCpu = 94,         /* DHCP packets to CPU. */
    138     bcmSwitchDhcpPktDrop = 95,          /* DHCP packets dropped. */
    139     bcmSwitchMldPktToCpu = 96,          /* MLD packets to CPU. */
    140     bcmSwitchMldPktDrop = 97,           /* MLD packets dropped. */
    141     bcmSwitchV4ResvdMcPktToCpu = 98,    /* IPv4 reserved MC packets to CPU. */
    142     bcmSwitchV4ResvdMcPktDrop = 99,     /* IPv4 reserved MC packets dropped. */
    143     bcmSwitchV4ResvdMcPktFlood = 100,   /* IPv4 reserved MC packets flooded to
    144                                            VLAN. */
    145     bcmSwitchV6ResvdMcPktToCpu = 101,   /* IPv6 reserved MC packets to CPU. */
    146     bcmSwitchV6ResvdMcPktDrop = 102,    /* IPv6 reserved MC packets dropped. */
    147     bcmSwitchV6ResvdMcPktFlood = 103,   /* IPv6 reserved MC packets flooded to
    148                                            VLAN. */
    149     bcmSwitchIgmpReportLeaveToCpu = 104, /* IGMP report/leave messages to CPU. */
    150     bcmSwitchIgmpReportLeaveDrop = 105, /* IGMP report/leave messages dropped. */
    151     bcmSwitchIgmpReportLeaveFlood = 106, /* IGMP report/leave messages flooded to
    152                                            VLAN. */
    153     bcmSwitchIgmpQueryToCpu = 107,      /* IGMP query messages to CPU. */
    154     bcmSwitchIgmpQueryDrop = 108,       /* IGMP query messages dropped. */
    155     bcmSwitchIgmpQueryFlood = 109,      /* IGMP query messages flooded to VLAN. */
    156     bcmSwitchIgmpUnknownToCpu = 110,    /* IGMP unknown messages to CPU. */
    157     bcmSwitchIgmpUnknownDrop = 111,     /* IGMP unknown messages dropped. */
    158     bcmSwitchIgmpUnknownFlood = 112,    /* IGMP unknown messages flooded to
    159                                            VLAN. */
    160     bcmSwitchMldReportDoneToCpu = 113,  /* MLD report/done messages to CPU. */
    161     bcmSwitchMldReportDoneDrop = 114,   /* MLD report/done messages dropped. */
    162     bcmSwitchMldReportDoneFlood = 115,  /* MLD report/done messages flooded to
    163                                            VLAN. */
    164     bcmSwitchMldQueryToCpu = 116,       /* MLD query messages to CPU. */
    165     bcmSwitchMldQueryDrop = 117,        /* MLD query messages dropped. */
    166     bcmSwitchMldQueryFlood = 118,       /* MLD query messages flooded to VLAN. */
    167     bcmSwitchIpmcV4RouterDiscoveryToCpu = 119, /* IPv4 Router discovery messages to
    168                                            CPU. */
    169     bcmSwitchIpmcV4RouterDiscoveryDrop = 120, /* IPv4 Router discovery messages
    170                                            dropped. */
    171     bcmSwitchIpmcV4RouterDiscoveryFlood = 121, /* IPv4 Router discovery messages
    172                                            flooded to VLAN. */
    173     bcmSwitchIpmcV6RouterDiscoveryToCpu = 122, /* IPv6 Router discovery messages to
    174                                            CPU. */
    175     bcmSwitchIpmcV6RouterDiscoveryDrop = 123, /* IPv6 Router discovery messages
    176                                            dropped. */
    177     bcmSwitchIpmcV6RouterDiscoveryFlood = 124, /* IPv6 Router discovery messages
    178                                            flooded to VLAN. */
    179     bcmSwitchDirectedMirroring = 125,   /* Enable directed mirroring mode. */
    180     bcmSwitchPktAge = 126,              /* Chip-wide packet age time, msec. */
    181     bcmSwitchMcastFloodDefault = 127,   /* VLAN Multicast flood control. */
    182     bcmSwitchParityErrorToCpu = 128,    /* Lookup parity error. */
    183     bcmSwitchL3MtuFailToCpu = 129,      /* L3 MTU check failure. */
    184     bcmSwitchMeterAdjust = 130,         /* Meter/Rate control with overhead on
    185                                            wire accounted for per packet. */
    186     bcmSwitchCounterAdjust = 131,       /* Counter compensation. */
    187     bcmSwitchMeterAdjustInterframeGap = 132, /* Indicate the size in Bytes of the IFG
    188                                            in Header-compensation for policer. */
    189     bcmSwitchHashL2 = 133,              /* Hash Select for L2. */
    190     bcmSwitchHashL3 = 134,              /* Hash Select for L3. */
    191     bcmSwitchHashMultipath = 135,       /* Hash Select for Multipath. */
    192     bcmSwitchHashControl = 136,         /* Hash Control of fields. */
    193     bcmSwitchFieldMultipathHashSelect = 137, /* Hash Select for FP
    194                                            bcmFieldActionL3Switch. */
    195     bcmSwitchFieldMultipathHashSeed = 138, /* Hash Seed for FP
    196                                            bcmFieldActionL3Switch. */
    197     bcmSwitchMirrorStackMode = 139,     /* Select BCM56504, 5670 or 5675-A0
    198                                            style stacking. */
    199     bcmSwitchMirrorSrcModCheck = 140,   /* Source modid check in BCM56504 style
    200                                            of mirroring. */
    201     bcmSwitchMirrorUnmarked = 141,      /* Send mirror packets as simple
    202                                            unicast. */
    203     bcmSwitchDestPortHGTrunk = 142,     /* Enable to use dest port in HiGig
    204                                            trunking. */
    205     bcmSwitchColorSelect = 143,         /* Choose color selection source. */
    206     bcmSwitchModuleLoopback = 144,      /* Allow local module ingress. */
    207     bcmSwitchSrcModBlockMirrorCopy = 145, /* Source modid blocking for BCM5670
    208                                            compatibility. */
    209     bcmSwitchSrcModBlockMirrorOnly = 146, /* Source modid blocking for BCM5675-A0
    210                                            compatibility. */
    211     bcmSwitchHashSeed0 = 147,           /* BCM56700/56800/56580 hash seeds. */
    212     bcmSwitchHashSeed1 = 148,           /* For enhanced hashing algoithm. */
    213     bcmSwitchHashField0PreProcessEnable = 149, /* Enable pre-processing for enhanced
    214                                            hash mode 0. */
    215     bcmSwitchHashField1PreProcessEnable = 150, /* Enable pre-processing for enhanced
    216                                            hash mode 1. */
    217     bcmSwitchHashField0Config = 151,    /* BCM56700/56800/56580 enhanced hash
    218                                            mode 0 config. */
    219     bcmSwitchHashField0Config1 = 152,   /* BCM56840 enhanced hash mode 0 config
    220                                            1. */
    221     bcmSwitchHashField1Config = 153,    /* BCM56700/56800/56580 enhanced hash
    222                                            mode 1 config. */
    223     bcmSwitchHashField1Config1 = 154,   /* BCM56840 enhanced hash mode 1 config
    224                                            1. */
    225     bcmSwitchMacroFlowHashFieldConfig = 155, /* Enhanced hash macro flow mode config. */
    226     bcmSwitchHashSelectControl = 156,   /* BCM56700/56800/56580 field selection
    227                                            control. */
    228     bcmSwitchHashIP4Field0 = 157,       /* BCM56700/56800/56580 enhanced hash
    229                                            field. */
    230     bcmSwitchHashIP4Field1 = 158,       /* Selections for IPv4 packets. */
    231     bcmSwitchHashIP4TcpUdpField0 = 159, /* BCM56840 enhanced hash field. */
    232     bcmSwitchHashIP4TcpUdpField1 = 160, /* Selections for IPv4 TCP/UDP packets. */
    233     bcmSwitchHashIP4TcpUdpPortsEqualField0 = 161, /* BCM56840 enhanced hash field. */
    234     bcmSwitchHashIP4TcpUdpPortsEqualField1 = 162, /* Selections for IPv4 TCP/UDP packets
    235                                            with source L4 port equals to
    236                                            destination L4 port. */
    237     bcmSwitchHashIP6Field0 = 163,       /* BCM56700/56800/56580 enhanced hash
    238                                            field. */
    239     bcmSwitchHashIP6Field1 = 164,       /* Selections for IPv6 packets. */
    240     bcmSwitchHashIP6TcpUdpField0 = 165, /* BCM56840 enhanced hash field. */
    241     bcmSwitchHashIP6TcpUdpField1 = 166, /* Selections for IPv6 TCP/UDP packets. */
    242     bcmSwitchHashIP6TcpUdpPortsEqualField0 = 167, /* BCM56840 enhanced hash field. */
    243     bcmSwitchHashIP6TcpUdpPortsEqualField1 = 168, /* Selections for IPv6 TCP/UDP packets
    244                                            with source L4 port equals to
    245                                            destination L4 port. */
    246     bcmSwitchHashL2Field0 = 169,        /* BCM56700/56800/56580 enhanced hash
    247                                            field. */
    248     bcmSwitchHashL2Field1 = 170,        /* Selections for L2 packets. */
    249     bcmSwitchHashMPLSField0 = 171,      /* BCM56700/56800/56580 enhanced hash
    250                                            field. */
    251     bcmSwitchHashMPLSField1 = 172,      /* Selections for MPLS packets. */
    252     bcmSwitchHashFCOEField0 = 173,      /* BCM56840 enhanced hash field. */
    253     bcmSwitchHashFCOEField1 = 174,      /* Selections for FCOE packets. */
    254     bcmSwitchHashL2TrillField0 = 175,   /* BCM56840 enhanced hash field. */
    255     bcmSwitchHashL2TrillField1 = 176,   /* Selections for L2 payload Trill
    256                                            packets. */
    257     bcmSwitchHashL3TrillField0 = 177,   /* BCM56840 enhanced hash field. */
    258     bcmSwitchHashL3TrillField1 = 178,   /* Selections for L3 payload Trill
    259                                            packets. */
    260     bcmSwitchHashTrillTunnelField0 = 179, /* BCM56840 enhanced hash field. */
    261     bcmSwitchHashTrillTunnelField1 = 180, /* Selections Trill tunnel packets. */
    262     bcmSwitchHashHG2UnknownField0 = 181, /* BCM56700/56800/56580 enhanced hash
    263                                            field. */
    264     bcmSwitchHashHG2UnknownField1 = 182, /* Selections for HiGig2 packets. */
    265     bcmSwitchHashField0OverlayCntagRpidEnable = 183, /* Selections for CNTAG, RPID fields. */
    266     bcmSwitchHashField1OverlayCntagRpidEnable = 184, /* Selections for CNTAG, RPID fields. */
    267     bcmSwitchHashHg2PktFieldsEnable = 185, /* Selections for HiGig2 packets. */
    268     bcmSwitchHashField0Ip6FlowLabel = 186, /* Selections for IPV6 packets. */
    269     bcmSwitchHashField1Ip6FlowLabel = 187, /* Selections for IPV6 packets. */
    270     bcmSwitchHashUseFlowSelTrunkUc = 188, /* Enable/Disable flow based hashing for
    271                                            Trunk. */
    272     bcmSwitchHashUseFlowSelEcmp = 189,  /* Enable/Disable flow based hashing for
    273                                            ECMP. */
    274     bcmSwitchTrunkHashSet0UnicastOffset = 190, /* BCM56700/56800/56580 enhanced hash
    275                                            bits. */
    276     bcmSwitchTrunkHashSet1UnicastOffset = 191, /* Selections for unicast trunking. */
    277     bcmSwitchTrunkHashSet0NonUnicastOffset = 192, /* BCM56700/56800/56580 enhanced hash
    278                                            bits. */
    279     bcmSwitchTrunkHashSet1NonUnicastOffset = 193, /* Selections for non-unicast trunking. */
    280     bcmSwitchTrunkFailoverHashOffset = 194, /* Enhanced hash selections for trunk
    281                                            failover. */
    282     bcmSwitchFabricTrunkHashSet0UnicastOffset = 195, /* BCM56700/56800/56580 enhanced hash
    283                                            bits. */
    284     bcmSwitchFabricTrunkHashSet1UnicastOffset = 196, /* Selections for unicast fabric
    285                                            trunking. */
    286     bcmSwitchFabricTrunkHashSet0NonUnicastOffset = 197, /* BCM56700/56800/56580 enhanced hash
    287                                            bits. */
    288     bcmSwitchFabricTrunkHashSet1NonUnicastOffset = 198, /* Selections for non-unicast fabric
    289                                            trunking. */
    290     bcmSwitchFabricTrunkFailoverHashOffset = 199, /* Enhanced hash selections for fabric
    291                                            trunk failover. */
    292     bcmSwitchFabricTrunkDynamicHashOffset = 200, /* Enhanced hash selections for fabric
    293                                            trunk dynamic load balancing. */
    294     bcmSwitchLoadBalanceHashSet0UnicastOffset = 201, /* BCM56700/56800/56580 enhanced hash
    295                                            bits. */
    296     bcmSwitchLoadBalanceHashSet1UnicastOffset = 202, /* Selections for unicast load
    297                                            balancing. */
    298     bcmSwitchLoadBalanceHashSet0NonUnicastOffset = 203, /* BCM56700/56800/56580 enhanced hash
    299                                            bits. */
    300     bcmSwitchLoadBalanceHashSet1NonUnicastOffset = 204, /* Selections for non-unicast load
    301                                            balancing. */
    302     bcmSwitchMacroFlowHashMinOffset = 205, /* Minimum offset value to be used in
    303                                            offset table. */
    304     bcmSwitchMacroFlowHashMaxOffset = 206, /* Maximum offset value to be used in
    305                                            offset table. */
    306     bcmSwitchMacroFlowHashStrideOffset = 207, /* Offset increment to be used for
    307                                            populating offset table. */
    308     bcmSwitchUniformUcastTrunkDistribution = 208, /* Uniform unicast trunk distribution on
    309                                            trunk with non power of 2 trunk
    310                                            ports. */
    311     bcmSwitchUniformFabricTrunkDistribution = 209, /* Uniform Higig trunk distribution on
    312                                            trunk with non power of 2 trunk
    313                                            ports. */
    314     bcmSwitchECMPHashSet0Offset = 210,  /* BCM56700/56800/56580 enhanced hash
    315                                            bits. */
    316     bcmSwitchECMPHashSet1Offset = 211,  /* Selections for ECMP. */
    317     bcmSwitchCpuToCpuEnable = 212,      /* Enable copying packets from CMIC to
    318                                            CPU. */
    319     bcmSwitchIgmpUcastEnable = 213,     /* Enable unicast packets with IGMP
    320                                            payload. */
    321     bcmSwitchMldUcastEnable = 214,      /* Enable unicast packets with MLD
    322                                            payload. */
    323     bcmSwitchIgmpReservedMcastEnable = 215, /* IGMP packets with reserved MC address
    324                                            threated as IGMP. */
    325     bcmSwitchMldReservedMcastEnable = 216, /* MLD packets with reserved MC address
    326                                            threated as MLD. */
    327     bcmSwitchMldDirectAttachedOnly = 217, /* Stricter checks for MLD packets are
    328                                            enable. */
    329     bcmSwitchPortEgressBlockL2 = 218,   /* Apply egress mask port blocking on L2
    330                                            traffic. */
    331     bcmSwitchPortEgressBlockL3 = 219,   /* Apply egress mask port blocking on L3
    332                                            traffic. */
    333     bcmSwitchBpduInvalidVlanDrop = 220, /* BPDU packets are dropped upon invalid
    334                                            VLAN. */
    335     bcmSwitchMirrorInvalidVlanDrop = 221, /* Mirror-to-port packets are dropped
    336                                            upon invalid VLAN. */
    337     bcmSwitchMirrorPktChecksEnable = 222, /* Enable/Disable all packet checks for
    338                                            mirror packets. */
    339     bcmSwitchRemoteLearnTrust = 223,    /* Honor the DONOT_LEARN bit in HiGig
    340                                            header. */
    341     bcmSwitchSourceMacZeroDrop = 224,   /* Packets with MACSA of all zeros are
    342                                            dropped. */
    343     bcmSwitchIpmcGroupMtu = 225,        /* For ingress MTU check for all IPMC
    344                                            groups. */
    345     bcmSwitchModuleType = 226,          /* Set Switch module type. */
    346     bcmSwitchDeprecated227 = 227,       /* Deprecated. Do not use. */
    347     bcmSwitchDeprecated228 = 228,       /* Deprecated. Do not use. */
    348     bcmSwitchDeprecated229 = 229,       /* Deprecated. Do not use. */
    349     bcmSwitchL3EgressMode = 230,        /* Enable advanced egress management. */
    350     bcmSwitchL3DefipMultipathCountUpdate = 231, /* Enable control to update L3-DEFIP
    351                                            ECMP-COUNT */
    352     bcmSwitchL3IngressMode = 232,       /* Enable advanced Ingress-interface
    353                                            management. */
    354     bcmSwitchL3HostAsRouteReturnValue = 233, /* Enable control to return value, when
    355                                            prefix added to Route table during
    356                                            L3HostAdd. */
    357     bcmSwitchSourceModBlockUcast = 234, /* Apply source modid block on unicast
    358                                            packets only. */
    359     bcmSwitchSourceModBlockControlOpcode = 235, /* Apply source modid block on system
    360                                            control packets. */
    361     bcmSwitchEgressBlockUcast = 236,    /* Apply egress mask on unicast packets
    362                                            only. */
    363     bcmSwitchAlternateStoreForward = 237, /* Alternate Store and Forward. */
    364     bcmSwitchWarmBoot = 238,            /* Set Warm boot state. */
    365     bcmSwitchStableSelect = 239,        /* Select the storage (or stable)
    366                                            location for Level 2 Warm Boot. */
    367     bcmSwitchStableSize = 240,          /* Select the storage (or stable) size
    368                                            (bytes) for Level 2 Warm Boot. */
    369     bcmSwitchStableUsed = 241,          /* Query the storage (or stable) usage
    370                                            (bytes) for Level 2 Warm Boot. */
    371     bcmSwitchStableConsistent = 242,    /* Query the storage (or stable) for
    372                                            whether state is believed consistent
    373                                            with hardware (API completed prior to
    374                                            warmboot). */
    375     bcmSwitchControlSync = 243,         /* Force a sync of the Level 2 warm boot
    376                                            state on demand. */
    377     bcmSwitchControlAutoSync = 244,     /* Perform a sync of the Level 2 warm
    378                                            boot state after every API. */
    379     bcmSwitchCallbackAbortOnError = 245, /* Abort if a callback returns an error
    380                                            code. */
    381     bcmSwitchUnknownIpmcAsMcast = 246,  /* Threat unknown IPMC as L2 Mcast. */
    382     bcmSwitchTunnelUnknownIpmcDrop = 247, /* Drop unknown IPMC for incomming
    383                                            tunnel. */
    384     bcmSwitchDhcpLearn = 248,           /* Do not learn MACSA of DHCP packet. */
    385     bcmSwitchIpmcTtl1ToCpu = 249,       /* Copy L3 Mcast with TTL 1 to CPU. */
    386     bcmSwitchL3UcastTtl1ToCpu = 250,    /* Copy L3 Ucast with TTL 1 to CPU. */
    387     bcmSwitchDosAttackFlagZeroSeqZero = 251, /* Null scan. */
    388     bcmSwitchHgHdrExtLengthEnable = 252, /* Use HiGig+ HDR_EXT_LEN field. */
    389     bcmSwitchDosAttackSynFrag = 253,    /* Drop TCP SYN packet with source port
    390                                            0-1023 for the first segment. */
    391     bcmSwitchIp4McastL2DestCheck = 254, /* Check MACDA and IPv4 DIP address
    392                                            match. */
    393     bcmSwitchIp6McastL2DestCheck = 255, /* Check MACDA and IPv6 DIP address
    394                                            match. */
    395     bcmSwitchL3InterfaceUrpfEnable = 256, /* Enable URPF per VLAN/L3-IIF for
    396                                            unicast packets. */
    397     bcmSwitchL3TunnelUrpfMode = 257,    /* RPF mode for unicast tunneled
    398                                            packets. */
    399     bcmSwitchL3TunnelUrpfDefaultRoute = 258, /* Enable URPF default gateway check for
    400                                            unicast tunneled packets. */
    401     bcmSwitchL3UrpfFailToCpu = 259,     /* Enable trap URPF fail packets to CPU. */
    402     bcmSwitchL3UrpfRouteEnable = 260,   /* Enable route lookup for URPF check. */
    403     bcmSwitchL3UrpfRouteEnableExternal = 261, /* Enable External(only) route lookup
    404                                            for URPF check. */
    405     bcmSwitchL3UrpfMode = 262,          /* Port rpf mode for unicast packets. */
    406     bcmSwitchL3UrpfDefaultRoute = 263,  /* Enable URPF default gateway check. */
    407     bcmSwitchIngressRateLimitIncludeIFG = 264, /* Add bytes to ingress rate limiting
    408                                            for IFG. */
    409     bcmSwitchRateLimitLinear = 265,     /* Use linear limits for shaping and
    410                                            egress metering. */
    411     bcmSwitchHashL2Dual = 266,          /* Secondary Hash Select for L2. */
    412     bcmSwitchHashL3Dual = 267,          /* Secondary Hash Select for L3. */
    413     bcmSwitchHashDualMoveDepth = 268,   /* Maximum moves in dual hash mode. */
    414     bcmSwitchHashDualMoveDepthL2 = 269, /* Maximum moves in dual hash mode for
    415                                            L2 tables. */
    416     bcmSwitchHashDualMoveDepthL3 = 270, /* Maximum moves in dual hash mode for
    417                                            L3 tables. */
    418     bcmSwitchHashDualMoveDepthVlan = 271, /* Maximum moves in dual hash mode for
    419                                            vlan tables. */
    420     bcmSwitchHashDualMoveDepthMpls = 272, /* Maximum moves in dual hash mode for
    421                                            mpls tables. */
    422     bcmSwitchHashDualMoveDepthEgressVlan = 273, /* Maximum moves in dual hash mode for
    423                                            egress vlan tables. */
    424     bcmSwitchHashDualMoveDepthWlanPort = 274, /* Maximum moves in dual hash mode for
    425                                            WLAN port table. */
    426     bcmSwitchHashDualMoveDepthWlanClient = 275, /* Maximum moves in dual hash mode for
    427                                            WLAN client table. */
    428     bcmSwitchHashMultiMoveDepth = 276,  /* Maximum moves in multi hash mode. */
    429     bcmSwitchHashMultiMoveDepthL2 = 277, /* Maximum moves in multi hash mode for
    430                                            L2 tables. */
    431     bcmSwitchHashMultiMoveDepthL3 = 278, /* Maximum moves in multi hash mode for
    432                                            L3 tables. */
    433     bcmSwitchHashMultiMoveDepthVlan = 279, /* Maximum moves in multi hash mode for
    434                                            vlan tables. */
    435     bcmSwitchHashMultiMoveDepthMpls = 280, /* Maximum moves in multi hash mode for
    436                                            mpls tables. */
    437     bcmSwitchHashMultiMoveDepthEgressVlan = 281, /* Maximum moves in multi hash mode for
    438                                            egress vlan tables. */
    439     bcmSwitchHashL2DualLeastFull = 282, /* Use least full bank in dual hash L2
    440                                            tables. */
    441     bcmSwitchHashL3DualLeastFull = 283, /* Use least full bank in dual hash L3
    442                                            tables. */
    443     bcmSwitchHashMPLSDualLeastFull = 284, /* Use least full bank in dual hash MPLS
    444                                            tables. */
    445     bcmSwitchSharedVlanEnable = 285,    /* Enable shared vlan. */
    446     bcmSwitchSharedVlanL2McastEnable = 286, /* Use shared vlan for L2 mcast pkt. */
    447     bcmSwitchIpmcReplicationSharing = 287, /* IPMC replication uses lists. */
    448     bcmSwitchIpmcReplicationAvailabilityThreshold = 288, /* IPMC replication table available
    449                                            space threshold. */
    450     bcmSwitchVrfMax = 289,              /* Maximum VRF ID for the device. */
    451     bcmSwitchFailoverStackTrunk = 290,  /* Trunk failover support for Stack
    452                                            ports. */
    453     bcmSwitchFailoverEtherTrunk = 291,  /* Trunk failover support for Ether
    454                                            ports. */
    455     bcmSwitchClassBasedMoveFailPktToCpu = 292, /* Class based check fail pkt to cpu. */
    456     bcmSwitchClassBasedMoveFailPktDrop = 293, /* Drop class based check fail pkt. */
    457     bcmSwitchHgHdrMcastFlood = 294,     /* Flood control value in Higig Header. */
    458     bcmSwitchHgHdrMcastFloodOverride = 295, /* Use flood control value in Higig
    459                                            header. */
    460     bcmSwitchHgHdrIpMcastFlood = 296,   /* IPMC flood control value in Higig
    461                                            header. */
    462     bcmSwitchHgHdrIpMcastFloodOverride = 297, /* Use IPMC flood ctrl value in Higig
    463                                            header. */
    464     bcmSwitchSTPBlockedFieldBypass = 298, /* Disable FP when STP state is blocked. */
    465     bcmSwitchL2PortBlocking = 299,      /* Enable selective port blocking per
    466                                            MAC address. */
    467     bcmSwitchHashIpfixIngress = 300,    /* Hash Select for Ingress IPFIX. */
    468     bcmSwitchHashIpfixIngressDual = 301, /* Secondary Hash Select for Ingress
    469                                            IPFIX. */
    470     bcmSwitchHashIpfixEgress = 302,     /* Hash Select for Egress IPFIX. */
    471     bcmSwitchHashIpfixEgressDual = 303, /* Secondary Hash Select for Egress
    472                                            IPFIX. */
    473     bcmSwitchHashMPLS = 304,            /* Hash Select for MPLS entry. */
    474     bcmSwitchHashMPLSDual = 305,        /* Secondary Hash Select for MPLS entry. */
    475     bcmSwitchForceForwardFabricTrunk = 306, /* Fabric trunk resolution in force
    476                                            forward mode. */
    477     bcmSwitchUseGport = 307,            /* Enable GPORT format for
    478                                            destination/source representation. */
    479     bcmSwitchHgHdrMcastVlanRange = 308, /* HIGIG2 broadcast index range */
    480     bcmSwitchHgHdrMcastL2Range = 309,   /* HIGIG2 multicast index range */
    481     bcmSwitchHgHdrMcastL3Range = 310,   /* HIGIG2 IPMC index range */
    482     bcmSwitchMcastL2Range = 311,        /* Multicast index range */
    483     bcmSwitchMcastL3Range = 312,        /* IPMC index range */
    484     bcmSwitchHashWlanPort = 313,        /* Hash Select for Wlan SVP entry. */
    485     bcmSwitchHashWlanPortDual = 314,    /* Secondary hash Select for Wlan SVP
    486                                            entry. */
    487     bcmSwitchHashWlanClient = 315,      /* Hash select for Wlan client database
    488                                            entry */
    489     bcmSwitchHashWlanClientDual = 316,  /* Secondary hash select for Wlan client
    490                                            database entry */
    491     bcmSwitchWlanClientAuthorizeAll = 317, /* Authorize all wlan clients, disable
    492                                            wlan client lookup */
    493     bcmSwitchWlanClientUnauthToCpu = 318, /* Unauthorized WLAN client's packets to
    494                                            CPU. */
    495     bcmSwitchWlanClientRoamedOutErrorToCpu = 319, /* Roamed out WLAN client's packets to
    496                                            CPU. */
    497     bcmSwitchWlanClientSrcMacMissToCpu = 320, /* WLAN client with source MAC miss:
    498                                            packets to CPU. */
    499     bcmSwitchWlanClientDstMacMissToCpu = 321, /* WLAN client with destination MAC
    500                                            miss: packets to CPU. */
    501     bcmSwitchOamHeaderErrorToCpu = 322, /* Packets with error in the OAM header
    502                                            to CPU. */
    503     bcmSwitchOamUnknownVersionToCpu = 323, /* Packets with unknown OAM version to
    504                                            CPU. */
    505     bcmSwitchOamUnknownVersionDrop = 324, /* Packets with unknown OAM version
    506                                            Dropped. */
    507     bcmSwitchOamUnexpectedPktToCpu = 325, /* OAM Packets with unexpected MDL to
    508                                            CPU. */
    509     bcmSwitchOamCcmToCpu = 326,         /* CCM with unexpected MEPID or Interval
    510                                            to CPU. */
    511     bcmSwitchOamXconCcmToCpu = 327,     /* CCM with low MDL or unexpected MAID
    512                                            to CPU. */
    513     bcmSwitchOamXconOtherToCpu = 328,   /* Other than CCM OAM PDUs with low MDL
    514                                            to CPU. */
    515     bcmSwitchL3SrcBindFailToCpu = 329,  /* Packets with L3 source bind table
    516                                            miss to CPU. */
    517     bcmSwitchTunnelIp4IdShared = 330,   /* Share the IPv4 ID space across
    518                                            tunnels. */
    519     bcmSwitchHashRegexAction = 331,     /* Hash Select for Regex Action entries. */
    520     bcmSwitchHashRegexActionDual = 332, /* Secondary hash Select for Regex
    521                                            Action entries. */
    522     bcmSwitchDeprecated333 = 333,       /* Deprecated. Do not use. */
    523     bcmSwitchCpuCopyDestination = 334,  /* Destination for CPU bound packets. */
    524     bcmSwitchCpuProtoTimeSyncPrio = 335, /* Priority for Time-Sync packets to
    525                                            CPU. */
    526     bcmSwitchCpuProtoMmrpPrio = 336,    /* Priority for MMRP packets to CPU. */
    527     bcmSwitchCpuProtoSrpPrio = 337,     /* Priority for SRP packets to CPU. */
    528     bcmSwitchTimeSyncPktToCpu = 338,    /* Time-Sync protocol packets to CPU. */
    529     bcmSwitchTimeSyncPktDrop = 339,     /* Time-Sync protocol packets dropped. */
    530     bcmSwitchTimeSyncPktFlood = 340,    /* Time-Sync protocol packets flooded to
    531                                            VLAN. */
    532     bcmSwitchMmrpPktToCpu = 341,        /* MMRP protocol packets to CPU. */
    533     bcmSwitchMmrpPktDrop = 342,         /* MMRP protocol packets dropped. */
    534     bcmSwitchMmrpPktFlood = 343,        /* MMRP protocol packets flooded to
    535                                            VLAN. */
    536     bcmSwitchSrpPktToCpu = 344,         /* SRP protocol packets to CPU. */
    537     bcmSwitchSrpPktDrop = 345,          /* SRP protocol packets dropped. */
    538     bcmSwitchSrpPktFlood = 346,         /* SRP protocol packets flooded to VLAN. */
    539     bcmSwitchSRPEthertype = 347,        /* Set SRP protocol ethertype to match. */
    540     bcmSwitchMMRPEthertype = 348,       /* Set MMRP ethertype to match. */
    541     bcmSwitchTimeSyncEthertype = 349,   /* Set Timing and Sync protocol
    542                                            ethertype to match. */
    543     bcmSwitchFcoeEtherType = 350,       /* Set FCOE protocol ethertype to match. */
    544     bcmSwitchSRPDestMacOui = 351,       /* Set SRP protocol MAC upper 3 bytes to
    545                                            match. */
    546     bcmSwitchMMRPDestMacOui = 352,      /* Set MMRP protocol MAC upper 3 bytes
    547                                            to match. */
    548     bcmSwitchTimeSyncDestMacOui = 353,  /* Set Timnig and Sync protocol MAC
    549                                            upper 3 bytes to match. */
    550     bcmSwitchSRPDestMacNonOui = 354,    /* Set SRP protocol MAC lower 3 bytes to
    551                                            match. */
    552     bcmSwitchMMRPDestMacNonOui = 355,   /* Set MMRP protocol MAC lower 3 bytes
    553                                            to match. */
    554     bcmSwitchTimeSyncDestMacNonOui = 356, /* Set Timnig and Sync protocol MAC lowe
    555                                            3 bytes to match. */
    556     bcmSwitchTimeSyncMessageTypeBitmap = 357, /* Set Timnig and Sync protocol message
    557                                            bitmap to match. */
    558     bcmSwitchTimeSyncClassAPktPrio = 358, /* Set Priority for the Class A. */
    559     bcmSwitchTimeSyncClassBPktPrio = 359, /* Set Priority for the Class B. */
    560     bcmSwitchTimeSyncClassAExeptionPktPrio = 360, /* Set Remapping Priority for exeption
    561                                            packets in the Class
    562                                            A. */
    563     bcmSwitchTimeSyncClassBExeptionPktPrio = 361, /* Set Remapping Priority for exeption
    564                                            packets in the Class B. */
    565     bcmSwitchL2McastAllRouterPortsAddEnable = 362, /* Add all-router ports to every L2
    566                                            multicast entry. */
    567     bcmSwitchBypassMode = 363,          /* Omit some switching features to
    568                                            decrease traffic latency. */
    569     bcmSwitchIpmcSameVlanL3Route = 364, /* Enable forwarding of known IPMC
    570                                            packets to the incoming vlan . */
    571     bcmSwitchDeprecated365 = 365,       /* Deprecated. Do not use. */
    572     bcmSwitchFieldCache = 366,          /* Enable caching of Rule table or field
    573                                            entries */
    574     bcmSwitchFieldCommit = 367,         /* Flush the cached Rule table or field
    575                                            entries to hardware */
    576     bcmSwitchIpmcCache = 368,           /* Enable caching of IP Multicast S/G
    577                                            entries */
    578     bcmSwitchIpmcCommit = 369,          /* Flush the cached IP Multicast table
    579                                            entries to hardware */
    580     bcmSwitchL2Cache = 370,             /* Enable caching of MAC address entries */
    581     bcmSwitchL2Commit = 371,            /* Flush the cached MAC address table to
    582                                            hardware */
    583     bcmSwitchL2AgeDelete = 372,         /* Enables deletition of MAC addresses
    584                                            during aging scan */
    585     bcmSwitchL2AgeScan = 373,           /* Scan all MAC addresses and decrement
    586                                            age-status */
    587     bcmSwitchL3HostCache = 374,         /* Enable caching of L3 Host table
    588                                            entries */
    589     bcmSwitchL3HostCommit = 375,        /* Flush the cached L3 Host table to
    590                                            hardware */
    591     bcmSwitchL3RouteCache = 376,        /* Enable caching of L3 Route table
    592                                            entries */
    593     bcmSwitchL3RouteCommit = 377,       /* Flush the cached L3 Route table to
    594                                            hardware */
    595     bcmSwitchL2InvalidCtlToCpu = 378,   /* Packets with invalid L2 control
    596                                            fields to CPU. */
    597     bcmSwitchInvalidGreToCpu = 379,     /* Packets with invalid GRE fields to
    598                                            CPU */
    599     bcmSwitchHashL2MPLSField0 = 380,    /* L2 MPLS enhanced hash field */
    600     bcmSwitchHashL2MPLSField1 = 381,    /* L2 MPLS enhanced hash field */
    601     bcmSwitchHashL3MPLSField0 = 382,    /* L3 MPLS enhanced hash field */
    602     bcmSwitchHashL3MPLSField1 = 383,    /* L3 MPLS enhanced hash field */
    603     bcmSwitchHashMPLSTunnelField0 = 384, /* MPLS tunnel enhanced hash field */
    604     bcmSwitchHashMPLSTunnelField1 = 385, /* MPLS tunnel enhanced hash field */
    605     bcmSwitchHashMIMTunnelField0 = 386, /* MIM tunnel enhanced hash field */
    606     bcmSwitchHashMIMTunnelField1 = 387, /* MIM tunnel enhanced hash field */
    607     bcmSwitchHashMIMField0 = 388,       /* MIM enhanced hash field */
    608     bcmSwitchHashMIMField1 = 389,       /* MIM enhanced hash field */
    609     bcmSwitchStgInvalidToCpu = 390,     /* Packets with STG state of egress port
    610                                            is not in forwarding state to CPU */
    611     bcmSwitchVlanTranslateEgressMissToCpu = 391, /* Packets with VLAN translation talbe
    612                                            missed when it is expected to hit to
    613                                            CPU. */
    614     bcmSwitchL3PktErrToCpu = 392,       /* Packets with IP length field is
    615                                            longer than the actual packet length
    616                                            to CPU. */
    617     bcmSwitchMtuFailureToCpu = 393,     /* Packets with L2 MTU Failure to CPU. */
    618     bcmSwitchSrcKnockoutToCpu = 394,    /* Packets with Split horizon or SVP
    619                                            pruning (SVP==DVP) failure to CPU. */
    620     bcmSwitchWlanTunnelMismatchToCpu = 395, /* Packets with incoming WLAN SVP did
    621                                            not arrive on the expected tunnel to
    622                                            CPU. */
    623     bcmSwitchWlanTunnelMismatchDrop = 396, /* Drop packets with incoming WLAN SVP
    624                                            did not arrive on the expected
    625                                            tunnel. */
    626     bcmSwitchWlanPortMissToCpu = 397,   /* WLAN packets that have a SVP miss to
    627                                            CPU. */
    628     bcmSwitchUnknownVlanToCpuCosq = 398, /* VLAN copy to CPU COS. */
    629     bcmSwitchStgInvalidToCpuCosq = 399, /* STG copy to CPU COS. */
    630     bcmSwitchVlanTranslateEgressMissToCpuCosq = 400, /* VLAN translate miss copy to CPU COS. */
    631     bcmSwitchTunnelErrToCpuCosq = 401,  /* Tunnel Error to CPU COS. */
    632     bcmSwitchL3HeaderErrToCpuCosq = 402, /* L3 Header Error to CPU COS. */
    633     bcmSwitchL3PktErrToCpuCosq = 403,   /* L3 Pkt Error to CPU COS. */
    634     bcmSwitchIpmcTtlErrToCpuCosq = 404, /* TTL drop copy to CPU COS. */
    635     bcmSwitchMtuFailureToCpuCosq = 405, /* MTU failure copy to CPU COS. */
    636     bcmSwitchHgHdrErrToCpuCosq = 406,   /* HIGIG error copy to CPU COS. */
    637     bcmSwitchSrcKnockoutToCpuCosq = 407, /* Split horizon or SVP failure to CPU
    638                                            COS. */
    639     bcmSwitchWlanTunnelMismatchToCpuCosq = 408, /* WLAN move to CPU COS. */
    640     bcmSwitchWlanPortMissToCpuCosq = 409, /* WLAN SVP miss to CPU COS. */
    641     bcmSwitchIpfixRateViolationDataInsert = 410, /* Allow insert when rate violation is
    642                                            detected. */
    643     bcmSwitchIpfixRateViolationPersistent = 411, /* Keep rate violation status
    644                                            persistent. */
    645     bcmSwitchHashVlanTranslate = 412,   /* Hash Select for VLAN translate. */
    646     bcmSwitchHashVlanTranslateDual = 413, /* Secondary Hash Select for VLAN
    647                                            translate. */
    648     bcmSwitchHashEgressVlanTranslate = 414, /* Hash Select for Egress VLAN
    649                                            translate. */
    650     bcmSwitchHashEgressVlanTranslateDual = 415, /* Secondary Hash Select for Egress VLAN
    651                                            translate. */
    652     bcmSwitchLayeredQoSResolution = 416, /* Enable layered QoS resolution mode. */
    653     bcmSwitchCustomerQueuing = 417,     /* Enable customer domain queuing. */
    654     bcmSwitchCosqStatThreshold = 418,   /* Sets Statistics Threshold to ACE-TCE
    655                                            Mode */
    656     bcmSwitchCosqStatInterval = 419,    /* Sets background ejection Statistics
    657                                            Interval */
    658     bcmSwitchEncapErrorToCpu = 420,     /* Encapsulation Error to CPU */
    659     bcmSwitchMplsPortIndependentLowerRange1 = 421, /* Port Independent Lower MPLS Label for
    660                                            Range-1 */
    661     bcmSwitchMplsPortIndependentUpperRange1 = 422, /* Port Independent Upper MPLS Label for
    662                                            Range-1 */
    663     bcmSwitchMplsPortIndependentLowerRange2 = 423, /* Port Independent Lower MPLS Label for
    664                                            Range-2 */
    665     bcmSwitchMplsPortIndependentUpperRange2 = 424, /* Port Independent Upper MPLS Label for
    666                                            Range-2 */
    667     bcmSwitchMirrorEgressTrueColorSelect = 425, /* Color override selection for egress
    668                                            true mirroring */
    669     bcmSwitchMirrorEgressTruePriority = 426, /* Priority override selection for
    670                                            egress true mirroring */
    671     bcmSwitchPFCClass0Queue = 427,      /* Queue to suspend when a Priority Flow
    672                                            Control class 0 packet is received. */
    673     bcmSwitchPFCClass1Queue = 428,      /* Queue to suspend when a Priority Flow
    674                                            Control class 1 packet is received. */
    675     bcmSwitchPFCClass2Queue = 429,      /* Queue to suspend when a Priority Flow
    676                                            Control class 2 packet is received. */
    677     bcmSwitchPFCClass3Queue = 430,      /* Queue to suspend when a Priority Flow
    678                                            Control class 3 packet is received. */
    679     bcmSwitchPFCClass4Queue = 431,      /* Queue to suspend when a Priority Flow
    680                                            Control class 4 packet is received. */
    681     bcmSwitchPFCClass5Queue = 432,      /* Queue to suspend when a Priority Flow
    682                                            Control class 5 packet is received. */
    683     bcmSwitchPFCClass6Queue = 433,      /* Queue to suspend when a Priority Flow
    684                                            Control class 6 packet is received. */
    685     bcmSwitchPFCClass7Queue = 434,      /* Queue to suspend when a Priority Flow
    686                                            Control class 7 packet is received. */
    687     bcmSwitchPFCClass0McastQueue = 435, /* Multicast queue to suspend when a
    688                                            Priority Flow Control class 0 packet
    689                                            is received. */
    690     bcmSwitchPFCClass1McastQueue = 436, /* Multicast queue to suspend when a
    691                                            Priority Flow Control class 1 packet
    692                                            is received. */
    693     bcmSwitchPFCClass2McastQueue = 437, /* Multicast queue to suspend when a
    694                                            Priority Flow Control class 2 packet
    695                                            is received. */
    696     bcmSwitchPFCClass3McastQueue = 438, /* Multicast queue to suspend when a
    697                                            Priority Flow Control class 3 packet
    698                                            is received. */
    699     bcmSwitchPFCClass4McastQueue = 439, /* Multicast queue to suspend when a
    700                                            Priority Flow Control class 4 packet
    701                                            is received. */
    702     bcmSwitchPFCClass5McastQueue = 440, /* Multicast queue to suspend when a
    703                                            Priority Flow Control class 5 packet
    704                                            is received. */
    705     bcmSwitchPFCClass6McastQueue = 441, /* Multicast queue to suspend when a
    706                                            Priority Flow Control class 6 packet
    707                                            is received. */
    708     bcmSwitchPFCClass7McastQueue = 442, /* Multicast queue to suspend when a
    709                                            Priority Flow Control class 7 packet
    710                                            is received. */
    711     bcmSwitchPFCClass0DestmodQueue = 443, /* Destination module queue to suspend
    712                                            when a Priority Flow Control class 0
    713                                            packet is received. */
    714     bcmSwitchPFCClass1DestmodQueue = 444, /* Destination module queue to suspend
    715                                            when a Priority Flow Control class 1
    716                                            packet is received. */
    717     bcmSwitchPFCClass2DestmodQueue = 445, /* Destination module queue to suspend
    718                                            when a Priority Flow Control class 2
    719                                            packet is received. */
    720     bcmSwitchPFCClass3DestmodQueue = 446, /* Destination module queue to suspend
    721                                            when a Priority Flow Control class 3
    722                                            packet is received. */
    723     bcmSwitchPFCClass4DestmodQueue = 447, /* Destination module queue to suspend
    724                                            when a Priority Flow Control class 4
    725                                            packet is received. */
    726     bcmSwitchPFCClass5DestmodQueue = 448, /* Destination module queue to suspend
    727                                            when a Priority Flow Control class 5
    728                                            packet is received. */
    729     bcmSwitchPFCClass6DestmodQueue = 449, /* Destination module queue to suspend
    730                                            when a Priority Flow Control class 6
    731                                            packet is received. */
    732     bcmSwitchPFCClass7DestmodQueue = 450, /* Destination module queue to suspend
    733                                            when a Priority Flow Control class 7
    734                                            packet is received. */
    735     bcmSwitchPFCQueue0Class = 451,      /* Priority Flow Control class for COS
    736                                            queue 0. */
    737     bcmSwitchPFCQueue1Class = 452,      /* Priority Flow Control class for COS
    738                                            queue 1. */
    739     bcmSwitchPFCQueue2Class = 453,      /* Priority Flow Control class for COS
    740                                            queue 2. */
    741     bcmSwitchPFCQueue3Class = 454,      /* Priority Flow Control class for COS
    742                                            queue 3. */
    743     bcmSwitchPFCQueue4Class = 455,      /* Priority Flow Control class for COS
    744                                            queue 4. */
    745     bcmSwitchPFCQueue5Class = 456,      /* Priority Flow Control class for COS
    746                                            queue 5. */
    747     bcmSwitchPFCQueue6Class = 457,      /* Priority Flow Control class for COS
    748                                            queue 6. */
    749     bcmSwitchPFCQueue7Class = 458,      /* Priority Flow Control class for COS
    750                                            queue 7. */
    751     bcmSwitchReserveLowL3InterfaceId = 459, /* Set the lower inclusive bounds of the
    752                                            L3 Interfaces.  Get will return the
    753                                            lowest value supported by the device.
    754                                             Setting 0 will remove the reserved
    755                                            range. */
    756     bcmSwitchReserveHighL3InterfaceId = 460, /* Set the higher inclusive bounds of
    757                                            the L3 Interfaces.  Get will return
    758                                            the lowest value supported by the
    759                                            device.  Setting 0 will remove the
    760                                            reserved range. */
    761     bcmSwitchReserveLowL3EgressId = 461, /* Set the lower inclusive bounds of the
    762                                            L3 Egress object.  Get will return
    763                                            the lowest value supported by the
    764                                            device.  Setting 0 will remove the
    765                                            reserved range. */
    766     bcmSwitchReserveHighL3EgressId = 462, /* Set the higher inclusive bounds of
    767                                            the L3 Egress object.  Get will
    768                                            return the lowest value supported by
    769                                            the device.  Setting 0 will remove
    770                                            the reserved range. */
    771     bcmSwitchReserveLowVlanPort = 463,  /* Set the lower inclusive bounds of the
    772                                            vlan gport resources.  Get will
    773                                            return the lowest value supported by
    774                                            the device.  Setting 0 will remove
    775                                            the reserved range */
    776     bcmSwitchReserveHighVlanPort = 464, /* Set the highest inclusive bounds of
    777                                            the vlan gport resources.  Get will
    778                                            return the highest value supported by
    779                                            the device.  Setting 0 will remove
    780                                            the reserved range */
    781     bcmSwitchReserveLowMplsPort = 465,  /* Set the lower inclusive bounds of the
    782                                            mpls gport resources.  Get will
    783                                            return the lowest value supported by
    784                                            the device.  Setting 0 will remove
    785                                            the reserved range */
    786     bcmSwitchReserveHighMplsPort = 466, /* Set the highest inclusive bounds of
    787                                            the mpls gport resources.  Get will
    788                                            return the highest value supported by
    789                                            the device.  Setting 0 will remove
    790                                            the reserved range */
    791     bcmSwitchReserveLowMimPort = 467,   /* Set the lower inclusive bounds of the
    792                                            mim gport resources.  Get will return
    793                                            the lowest value supported by the
    794                                            device.  Setting 0 will remove the
    795                                            reserved range */
    796     bcmSwitchReserveHighMimPort = 468,  /* Set the highest inclusive bounds of
    797                                            the mim gport resources.  Get will
    798                                            return the highest value supported by
    799                                            the device.  Setting 0 will remove
    800                                            the reserved range */
    801     bcmSwitchReserveLowEncap = 469,     /* Set the lower inclusive bounds of the
    802                                            Encap ID resources used internally by
    803                                            gports.  Get will return the lowest
    804                                            value supported by the device. 
    805                                            Setting 0 will remove the reserved
    806                                            range */
    807     bcmSwitchReserveHighEncap = 470,    /* Set the highest inclusive bounds of
    808                                            the Encap ID resources used
    809                                            internally by gports.  Get will
    810                                            return the highest value supported by
    811                                            the device.  Setting 0 will remove
    812                                            the reserved range */
    813     bcmSwitchReserveLowL2Egress = 471,  /* Set the lower inclusive bounds of the
    814                                            L2 Encap ID resources.  Get will
    815                                            return the lowest value supported by
    816                                            the device.  Setting 0 will remove
    817                                            the reserved range */
    818     bcmSwitchReserveHighL2Egress = 472, /* Set the highest inclusive bounds of
    819                                            the L2 Encap ID resources.  Get will
    820                                            return the highest value supported by
    821                                            the device.  Setting 0 will remove
    822                                            the reserved range */
    823     bcmSwitchReserveLowVpn = 473,       /* Set the lower inclusive bounds of the
    824                                            VPN ID resources.  Get will return
    825                                            the lowest value supported by the
    826                                            device.  Setting 0 will remove the
    827                                            reserved range */
    828     bcmSwitchReserveHighVpn = 474,      /* Set the highest inclusive bounds of
    829                                            the VPN ID resources.  Get will
    830                                            return the highest value supported by
    831                                            the device.  Setting 0 will remove
    832                                            the reserved range */
    833     bcmSwitchReserveLowFailoverId = 475, /* Set the lower inclusive bounds of
    834                                            failover object.  Get will return the
    835                                            lowest value supported by the device.
    836                                             Setting 0 will remove the reserved
    837                                            range */
    838     bcmSwitchReserveHighFailoverId = 476, /* Set the higher inclusive bounds of
    839                                            failover object.  Get will return the
    840                                            lowest value supported by the device.
    841                                             Setting 0 will remove the reserved
    842                                            range */
    843     bcmSwitchReserveLowOamEndPointId = 477, /* Set the lower inclusive bounds of OAM
    844                                            endpoint.  Get will return the lowest
    845                                            value supported by the device. 
    846                                            Setting 0 will remove the reserved
    847                                            range */
    848     bcmSwitchReserveHighOamEndPointId = 478, /* Set the higher inclusive bounds of
    849                                            OAM endpoin.  Get will return the
    850                                            lowest value supported by the device.
    851                                             Setting 0 will remove the reserved
    852                                            range */
    853     bcmSwitchReserveLowOamGroupId = 479, /* Set the lower inclusive bounds of OAM
    854                                            Group.  Get will return the lowest
    855                                            value supported by the device. 
    856                                            Setting 0 will remove the reserved
    857                                            range */
    858     bcmSwitchReserveHighOamGroupId = 480, /* Set the higher inclusive bounds of
    859                                            OAM Group.  Get will return the
    860                                            lowest value supported by the device.
    861                                             Setting 0 will remove the reserved
    862                                            range */
    863     bcmSwitchSnapNonZeroOui = 481,      /* Decode SNAP packets with non-zero OUI
    864                                            for protocol-based VLAN */
    865     bcmSwitchSynchronousPortClockSource = 482, /* Set ITU-T G.8261/8262 synchronous
    866                                            ethernet recovered clock source. 
    867                                            Setting -1 selects in free-run mode
    868                                            (no recovered clock). Get returns the
    869                                            current value. */
    870     bcmSwitchSynchronousPortClockSourceBkup = 483, /* Set ITU-T G.8261/8262 synchronous
    871                                            ethernet recovered backup clock
    872                                            source.  Get returns the current
    873                                            value. */
    874     bcmSwitchSynchronousPortClockSourceDivCtrl = 484, /* Set ITU-T G.8261/8262 synchronous
    875                                            ethernet recovered clock source. 
    876                                            Setting -1 selects the divide by five
    877                                            logic. Get returns the current value. */
    878     bcmSwitchSynchronousPortClockSourceBkupDivCtrl = 485, /* Set ITU-T G.8261/8262 synchronous
    879                                            ethernet recovered backup clock
    880                                            source.  Setting -1 selects the
    881                                            divide by five logic. Get returns the
    882                                            current value. */
    883     bcmSwitchL2HitClear = 486,          /* Clear L2 source and destination hit
    884                                            bits when set to 1 */
    885     bcmSwitchL2SrcHitClear = 487,       /* Clear L2 source hit bits when set to
    886                                            1 */
    887     bcmSwitchL2DstHitClear = 488,       /* Clear L2 destination hit bits when
    888                                            set to 1 */
    889     bcmSwitchL3HostHitClear = 489,      /* Clear L3 host hit bits when set to 1 */
    890     bcmSwitchL3RouteHitClear = 490,     /* Clear L3 route hit bits when set to 1 */
    891     bcmSwitchIpmcSameVlanPruning = 491, /* Allow both L2 and L3 copies of a
    892                                            packet to go out on a physical port
    893                                            if it happens to be a member of both
    894                                            the L2 and L3 bitmaps of the
    895                                            replication group. */
    896     bcmSwitchDeprecated492 = 492,       /* Deprecated. Do not use. */
    897     bcmSwitchDeprecated493 = 493,       /* Deprecated. Do not use. */
    898     bcmSwitchL2McIdxRetType = 494,      /* When set to 1, L2 multicast API will
    899                                            return multicast index as
    900                                            bcm_multicast_t instead of hardware
    901                                            multicast index. */
    902     bcmSwitchL3McIdxRetType = 495,      /* When set to 1, IP multicast API will
    903                                            return multicast index as
    904                                            bcm_multicast_t instead of hardware
    905                                            multicast index. */
    906     bcmSwitchDeprecated496 = 496,       /* Deprecated. Do not use. */
    907     bcmSwitchDeprecated497 = 497,       /* Deprecated. Do not use. */
    908     bcmSwitchDeprecated498 = 498,       /* Deprecated. Do not use. */
    909     bcmSwitchDeprecated499 = 499,       /* Deprecated. Do not use. */
    910     bcmSwitchDeprecated500 = 500,       /* Deprecated. Do not use. */
    911     bcmSwitchArpDhcpToCpu = 501,        /* Set both ARP and DHCP to CPU. */
    912     bcmSwitchIgmpMldToCpu = 502,        /* Set the snooping mode on both IGMP
    913                                            and MLD together. */
    914     bcmSwitchLinkDownInfoSkip = 503,    /* Skip port information gathering
    915                                            during linkdown event
    916                                            notification */
    917     bcmSwitchDeprecated504 = 504,       /* Deprecated. Do not use. */
    918     bcmSwitchL2SourceDiscardMoveToCpu = 505, /* SRC MAC discard configuration to CPU */
    919     bcmSwitchNivEthertype = 506,        /* Set ethertype field in VNTAG */
    920     bcmSwitchNivPrioDropToCpu = 507,    /* NIV priority admittance drop to CPU */
    921     bcmSwitchNivInterfaceMissToCpu = 508, /* NIV forwarding lookup miss to CPU */
    922     bcmSwitchNivRpfFailToCpu = 509,     /* NIV RPF check fail to CPU */
    923     bcmSwitchNivTagInvalidToCpu = 510,  /* Invalid VNTAG to CPU */
    924     bcmSwitchNivTagDropToCpu = 511,     /* VNTAG present to CPU */
    925     bcmSwitchNivUntagDropToCpu = 512,   /* VNTAG not present to CPU */
    926     bcmSwitchEEEPipelineTime = 513,     /* Time (in system clock cycles) for MAC
    927                                            to ensure that the egress pipeline is
    928                                            empty prior to the assertion of the
    929                                            LPI control signal. */
    930     bcmSwitchEEEGlobalCongestionThreshold = 514, /* If this threshold is exceeded, EEE is
    931                                            disabled for all ports. */
    932     bcmSwitchDeprecated515 = 515,       /* Deprecated. Do not use. */
    933     bcmSwitchDeprecated516 = 516,       /* Deprecated. Do not use. */
    934     bcmSwitchDeprecated517 = 517,       /* Deprecated. Do not use. */
    935     bcmSwitchDeprecated518 = 518,       /* Deprecated. Do not use. */
    936     bcmSwitchDeprecated519 = 519,       /* Deprecated. Do not use. */
    937     bcmSwitchDeprecated520 = 520,       /* Deprecated. Do not use. */
    938     bcmSwitchDeprecated521 = 521,       /* Deprecated. Do not use. */
    939     bcmSwitchRemoteCpuSchanEnable = 522, /* Enables SCHAN requests for Remote CPU
    940                                            feature */
    941     bcmSwitchRemoteCpuFromCpuEnable = 523, /* Enables recieving packets from CPU
    942                                            for Remote CPU feature */
    943     bcmSwitchRemoteCpuToCpuEnable = 524, /* Enables sending packet to CPU for
    944                                            Remote CPU feature */
    945     bcmSwitchRemoteCpuCmicEnable = 525, /* Enables CMIC requests for Remote CPU
    946                                            feature */
    947     bcmSwitchRemoteCpuMatchLocalMac = 526, /* Local MAC addresses matching for
    948                                            Remote CPU feature */
    949     bcmSwitchRemoteCpuMatchVlan = 527,  /* VLAN matching for Remote CPU feature */
    950     bcmSwitchRemoteCpuVlan = 528,       /* VLAN tag to be inserted into Remote
    951                                            CPU packets */
    952     bcmSwitchRemoteCpuTpid = 529,       /* TPID tag to be inserted into Remote
    953                                            CPU packets */
    954     bcmSwitchRemoteCpuSignature = 530,  /* Unique Signature for Remote CPU
    955                                            packets */
    956     bcmSwitchRemoteCpuForceScheduling = 531, /* Remote CPU packets are forced to have
    957                                            COS value */
    958     bcmSwitchRemoteCpuToCpuDestPortAllReasons = 532, /* Remote CPU packets to be forwarded
    959                                            for all directed reasons */
    960     bcmSwitchRemoteCpuToCpuDestMacAllReasons = 533, /* Remote CPU packets to be forwarded
    961                                            for all reasons */
    962     bcmSwitchRxRedirectPktReasons = 534, /* All forwarding reasons for normal
    963                                            packets */
    964     bcmSwitchRxRedirectPktReasonsExtended = 535, /* All extended forwarding reasons for
    965                                            normal packets */
    966     bcmSwitchRxRedirectHigigPktReasons = 536, /* All forwarding reasons for higig
    967                                            packets */
    968     bcmSwitchRxRedirectHigigPktReasonsExtended = 537, /* All extended forwarding reasons for
    969                                            higig packets */
    970     bcmSwitchRxRedirectTruncatedPktReasons = 538, /* All forwarding reasons for truncated
    971                                            packets */
    972     bcmSwitchRxRedirectTruncatedPktReasonsExtended = 539, /* All extended forwarding reasons for
    973                                            truncated packets */
    974     bcmSwitchRxRedirectPktCos = 540,    /* All forwarding COS queue bitmap for
    975                                            normal packets */
    976     bcmSwitchRxRedirectPktCosExtended = 541, /* All extended forwarding COS queue
    977                                            bitmap for normal packets */
    978     bcmSwitchRemoteCpuLocalMacOui = 542, /* Higher 3 bytes of Local MAC address
    979                                            used for Remote CPU */
    980     bcmSwitchRemoteCpuLocalMacNonOui = 543, /* Lower 3 bytes of Local MAC address
    981                                            used for Remote CPU */
    982     bcmSwitchRemoteCpuDestMacOui = 544, /* Higher 3 bytes of Destination MAC
    983                                            address used for Remote CPU */
    984     bcmSwitchRemoteCpuDestMacNonOui = 545, /* Lower 3 bytes of Destination MAC
    985                                            address used for Remote CPU */
    986     bcmSwitchRemoteCpuEthertype = 546,  /* Remote CPU ethertype */
    987     bcmSwitchRemoteCpuDestPort = 547,   /* Remote CPU will direct raw data
    988                                            packets with SOBMH header to a given
    989                                            port */
    990     bcmSwitchRemoteCpuHigigDestPort = 548, /* Remote CPU will direct raw data
    991                                            packets with Higig header to a given
    992                                            port */
    993     bcmSwitchRemoteCpuTcMappingMacOui = 549, /* Higher 3 bytes of Destination MAC
    994                                            address used to match received ToCPU
    995                                            packets */
    996     bcmSwitchRemoteCpuTcMappingMacNonOui = 550, /* Lower 3 bytes of Destination MAC
    997                                            address used to match received ToCPU
    998                                            packets */
    999     bcmSwitchRemoteCpuTcMappingEthertype = 551, /* Ethertype used to match received
   1000                                            ToCPU packets */
   1001     bcmSwitchServiceTpidReplace = 552,  /* Replace TPID in Service Delimiting
   1002                                            SD-TAG */
   1003     bcmSwitchEgressPktAge = 553,        /* Chip-wide egress packet age time,
   1004                                            msec. */
   1005     bcmSwitchFabricTrunkDynamicSampleRate = 554, /* Number of times average port egressed
   1006                                            bytes and queued bytes are computed
   1007                                            in a second */
   1008     bcmSwitchFabricTrunkDynamicEgressBytesExponent = 555, /* The exponent used in the calculation
   1009                                            of exponentially weighted moving
   1010                                            average of port egressed bytes */
   1011     bcmSwitchFabricTrunkDynamicQueuedBytesExponent = 556, /* The exponent used in the calculation
   1012                                            of exponentially weighted moving
   1013                                            average of port queued bytes */
   1014     bcmSwitchFabricTrunkDynamicEgressBytesDecreaseReset = 557, /* If set, the average port egressed
   1015                                            bytes is updated with the sampled
   1016                                            value if the sampled value is less
   1017                                            than the average */
   1018     bcmSwitchFabricTrunkDynamicQueuedBytesDecreaseReset = 558, /* If set, the average port queued bytes
   1019                                            is updated with the sampled value if
   1020                                            the sampled value is less than the
   1021                                            average */
   1022     bcmSwitchFabricTrunkDynamicEgressBytesMinThreshold = 559, /* The minimum threshold, in mbps, used
   1023                                            to quantize average port egressed
   1024                                            bytes */
   1025     bcmSwitchFabricTrunkDynamicEgressBytesMaxThreshold = 560, /* The maximum threshold, in mbps, used
   1026                                            to quantize average port egressed
   1027                                            bytes */
   1028     bcmSwitchFabricTrunkDynamicQueuedBytesMinThreshold = 561, /* The minimum threshold, in bytes, used
   1029                                            to quantize average port queued bytes */
   1030     bcmSwitchFabricTrunkDynamicQueuedBytesMaxThreshold = 562, /* The maximum threshold, in bytes, used
   1031                                            to quantize average port queued bytes */
   1032     bcmSwitchMacLowPower = 563,         /* Enable switch low power mode and set
   1033                                            the low power frequency, Khz */
   1034     bcmSwitchCongestionCntag = 564,     /* Enable/Disable CN-TAG processing */
   1035     bcmSwitchCongestionCntagEthertype = 565, /* Ethertype for CN-TAG */
   1036     bcmSwitchCongestionCnm = 566,       /* Enable/Disable congestion
   1037                                            notification message handling */
   1038     bcmSwitchCongestionCnmEthertype = 567, /* Ethertype for congestion notification
   1039                                            message */
   1040     bcmSwitchCongestionNotificationIdHigh = 568, /* Device identifier for contructing
   1041                                            congestion point identifier */
   1042     bcmSwitchCongestionNotificationIdLow = 569, /* Port identifier for constructing
   1043                                            congestion point identifier */
   1044     bcmSwitchCongestionNotificationIdQueue = 570, /* Queue mode of the congestion point
   1045                                            identifier. When set to 0 use
   1046                                            congestion managed queue id,
   1047                                            otherwise use queue number */
   1048     bcmSwitchCongestionUseOuterTpid = 571, /* Outer TPID to be used for congestion
   1049                                            notification message */
   1050     bcmSwitchCongestionUseOuterVlan = 572, /* Outer vlan to be used for congestion
   1051                                            notification message */
   1052     bcmSwitchCongestionUseOuterPktPri = 573, /* Outer priority to be used for
   1053                                            congestion notification message */
   1054     bcmSwitchCongestionUseOuterCfi = 574, /* Outer CFI to be used for congestion
   1055                                            notification message */
   1056     bcmSwitchCongestionUseInnerPktPri = 575, /* Inner priority to be used for
   1057                                            congestion notification message */
   1058     bcmSwitchCongestionUseInnerCfi = 576, /* Inner CFI to be used for congestion
   1059                                            notification message */
   1060     bcmSwitchCongestionMissingCntag = 577, /* Choose the CNM generation behavior
   1061                                            when congestion notification
   1062                                            threshold is reached but the incoming
   1063                                            sampled packet does not have CN-TAG */
   1064     bcmSwitchCongestionExcludeReplications = 578, /* Take the replicated packets in
   1065                                            account during the congestion test */
   1066     bcmSwitchMiMDefaultSVP = 579,       /* Enable MiM termination lookup miss
   1067                                            packets to be forwarded using default
   1068                                            SVP */
   1069     bcmSwitchMiMDefaultSVPValue = 580,  /* Default SVP  for Mac-in-Mac */
   1070     bcmSwitchEgressDroppedReportZeroLength = 581, /* Enable egress pipeline to report zero
   1071                                            length for dropped packets */
   1072     bcmSwitchLoadBalanceHashSelect = 582, /* Selects which hash function to use
   1073                                            for Load Balance computation */
   1074     bcmSwitchTrillEthertype = 583,      /* Set TRILL Ethertype field. Value of
   1075                                            uint16 type */
   1076     bcmSwitchTrillISISEthertype = 584,  /* Set TRILL ISIS Ethertype field. Value
   1077                                            of uint16 type */
   1078     bcmSwitchTrillISISDestMacOui = 585, /* Set TRILL All_ISIS_Rbridge MAC upper
   1079                                            3 bytes to match. */
   1080     bcmSwitchTrillBroadcastDestMacOui = 586, /* Set TRILL ALL_Rbridge MAC upper 3
   1081                                            bytes to match. */
   1082     bcmSwitchTrillEndStationDestMacOui = 587, /* Set TRILL ALL_ESADI MAC upper 3 bytes
   1083                                            to match. */
   1084     bcmSwitchTrillISISDestMacNonOui = 588, /* Set TRILL ALL_ISIS_Rbridge MAC lower
   1085                                            3 bytes to match. */
   1086     bcmSwitchTrillBroadcastDestMacNonOui = 589, /* Set TRILL ALL_Rbridge MAC lower 3
   1087                                            bytes to match. */
   1088     bcmSwitchTrillEndStationDestMacNonOui = 590, /* Set TRILL ALL_ESADI MAC lower 3 bytes
   1089                                            to match. */
   1090     bcmSwitchTrillMinTtl = 591,         /* Set minimum TTL for Egress and
   1091                                            Transit TRILL Rbridge. */
   1092     bcmSwitchTrillTtlCheckEnable = 592, /* Enable TTL check for Egress TRILL
   1093                                            Rbridge. */
   1094     bcmSwitchTrillTtlErrToCpu = 593,    /* Copy TRILL TTL failure packets to
   1095                                            CPU. */
   1096     bcmSwitchTrillHeaderErrToCpu = 594, /* Copy TRILL Header Error frame to CPU. */
   1097     bcmSwitchTrillMismatchToCpu = 595,  /* Copy TRILL mismatch error frame to
   1098                                            CPU. */
   1099     bcmSwitchTrillNameMissToCpu = 596,  /* Copy TRILL Rbridge lookup failure to
   1100                                            CPU. */
   1101     bcmSwitchTrillRpfFailToCpu = 597,   /* Copy TRILL RPF check fail to CPU. */
   1102     bcmSwitchTrillOptionsToCpu = 598,   /* Copy header Options to CPU. */
   1103     bcmSwitchTrillNameErrDrop = 599,    /* Set Drop setting for TRILL packets
   1104                                            with Ingress-name equal to
   1105                                            Egress-name. */
   1106     bcmSwitchTrillRpfFailDrop = 600,    /* Set Drop setting for TRILL multicast
   1107                                            packets that fail RPF check. */
   1108     bcmSwitchTrillHeaderVersionErrDrop = 601, /* Set Drop Setting for TRILL frames
   1109                                            received with a non-zero Version
   1110                                            field. */
   1111     bcmSwitchTrillNameMissDrop = 602,   /* Set Drop setting for TRILL Ingress
   1112                                            RBridge nickname lookup failure. */
   1113     bcmSwitchTrillAdjacencyFailDrop = 603, /* Set Drop setting for TRILL adjacency
   1114                                            failure. */
   1115     bcmSwitchTrillHeaderErrDrop = 604,  /* Set Drop Setting for TRILL header
   1116                                            error. */
   1117     bcmSwitchUdpPktActionEnable = 605,  /* Enable additional actions for UDP
   1118                                            packets */
   1119     bcmSwitchUdpPktRedirectPbmp = 606,  /* Replace the destination port bitmap
   1120                                            of UDP packets */
   1121     bcmSwitchUdpPktCopyToPbmp = 607,    /* Add the destination port bitmap of
   1122                                            UDP packets */
   1123     bcmSwitchUdpPktNewTc = 608,         /* Change the Traffic Class value of UDP
   1124                                            packets */
   1125     bcmSwitchL3TunnelIpV4ModeOnly = 609, /* Set L3 Tunnel to IPV4 mode only */
   1126     bcmSwitchL3SrcHitEnable = 610,      /* Enables/Disables source hit bit
   1127                                            lookup update in the L3 table */
   1128     bcmSwitchL2DstHitEnable = 611,      /* Enables/Disables destination hit bit
   1129                                            lookup update in the L2 table */
   1130     bcmSwitchWESPProtocolEnable = 612,  /* Enables/Disables parsing into WESP
   1131                                            payload */
   1132     bcmSwitchWESPProtocol = 613,        /* WESP protocol number */
   1133     bcmSwitchDeprecated614 = 614,       /* Deprecated. Do not use. */
   1134     bcmSwitchIp6CompressEnable = 615,   /* Enables/Disables IPv6 compression
   1135                                            support in the VFP table */
   1136     bcmSwitchIp6CompressDefaultOffset = 616, /* Set the offset value used to extract
   1137                                            26-bits from the IPv6 address field
   1138                                            of IPv6 packet */
   1139     bcmSwitchStableSaveLongIds = 617,   /* When saving FP information to storage
   1140                                            for level-2 warm boot, save full
   1141                                            entity ids (i.e. not compact) */
   1142     bcmSwitchGportAnyDefaultL2Learn = 618, /* Set default cml_value for Any Gport
   1143                                            type. */
   1144     bcmSwitchGportAnyDefaultL2Move = 619, /* Set default cml_station_move value
   1145                                            for Any Gport type */
   1146     bcmSwitchIngParseL2TunnelTermDipSipSelect = 620, /* Controls the values used to populate
   1147                                            the DIP+SIP containers for
   1148                                            L2-tunnel-terminated packets */
   1149     bcmSwitchIngParseL3L4IPv4 = 621,    /* Enable parsing of IPv4 L3/L4 headers */
   1150     bcmSwitchIngParseL3L4IPv6 = 622,    /* Enable parsing of IPv6 L3/L4 headers */
   1151     bcmSwitchL2LearnMode = 623,         /* Learning Mode */
   1152     bcmSwitchSetWredJitterMask = 624,   /* Set WRED Jitter value */
   1153     bcmSwitchSetMplsEntropyLabelTtl = 625, /* Set MPLS Entropy-Label TTL value */
   1154     bcmSwitchSetMplsEntropyLabelPri = 626, /* Set MPLS Entropy-Label PRI value */
   1155     bcmSwitchSetMplsEntropyLabelOffset = 627, /* Set MPLS Entropy-Label Hash Offset */
   1156     bcmSwitchPonOamFailsafeState = 628, /* Enables/Disables MPCP fail safe */
   1157     bcmSwitchEquipmentAlarmState = 629, /* Set equipment alarm report state */
   1158     bcmSwitchPowerAlarmState = 630,     /* Set power alarm report state */
   1159     bcmSwitchBatteryMissingAlarmState = 631, /* Set battery missing alarm report
   1160                                            state */
   1161     bcmSwitchBatteryFailureAlarmState = 632, /* Set battery failure alarm report
   1162                                            state */
   1163     bcmSwitchBatteryVoltLowAlarmState = 633, /* Set battery volt low alarm report
   1164                                            state */
   1165     bcmSwitchBatteryVoltLowAlarmReportThreshold = 634, /* Set battery volt low alarm report
   1166                                            threshold */
   1167     bcmSwitchBatteryVoltLowAlarmClearThreshold = 635, /* Set battery volt low alarm clear
   1168                                            threshold */
   1169     bcmSwitchPhysicalIntrusionAlarmState = 636, /* Set physical instrusion alarm report
   1170                                            state */
   1171     bcmSwitchSelfTestFailureAlarmState = 637, /* Set self test failure alarm report
   1172                                            state */
   1173     bcmSwitchPonIfSwitchAlarmState = 638, /* Set PON switchover alarm report state */
   1174     bcmSwitchL3IngressInterfaceMapSet = 639, /* Enable mode to configure
   1175                                            ingress-mapping of Vlan and L3
   1176                                            Ingress Interface */
   1177     bcmSwitchMplsPWControlWordToCpu = 640, /* Enable MPLS packets with PWACH
   1178                                            control word, to be copied to CPU */
   1179     bcmSwitchMplsPWControlTypeToCpu = 641, /* Enable MPLS packets with other
   1180                                            control word, to be copied to CPU */
   1181     bcmSwitchMplsPWControlWord = 642,   /* Set Control Word value */
   1182     bcmSwitchMplsPWCountPktsAll = 643,  /* Enable count-all MPLS packets
   1183                                            arriving on PWs */
   1184     bcmSwitchEntropyHashSet0Offset = 644, /* Selection for MPLS-Entropy-Label hash
   1185                                            bits. */
   1186     bcmSwitchEntropyHashSet1Offset = 645, /* Selection for MPLS-Entropy-Label hash
   1187                                            bits. */
   1188     bcmSwitchArpRequestMyStationIPToCPU = 646, /* APR reply packets with My IP address
   1189                                            should be sent to CPU. */
   1190     bcmSwitchArpRequestMyStationIPDrop = 647, /* APR reply packets with My IP address
   1191                                            should be dropped. */
   1192     bcmSwitchArpRequestMyStationIPFwd = 648, /* APR reply packets with given IP
   1193                                            address should not trapped/dropped. */
   1194     bcmSwitchL3SIPMoveToCpu = 649, 
   1195     bcmSwitchTrunkHashSrcPortEnable = 650, /* BCM886XX: Make Source port part of
   1196                                            the hash. */
   1197     bcmSwitchTrunkHashOffset = 651,     /* BCM886XX: Hash key is barrel shifted
   1198                                            by this value */
   1199     bcmSwitchTrunkHashMPLSLabelBOS = 652, /* In an mpls label stack, look for
   1200                                            label with bottom of stack bit set.
   1201                                            Valid values see
   1202                                            BCM_HASH_MPLS_LABEL_BOS_ */
   1203     bcmSwitchTrunkHashMPLSPWControlWord = 653, /* BCM886XX: Indicates control word is
   1204                                            present at end of MPLS headers. */
   1205     bcmSwitchTrunkHashSeed = 654,       /* BCM886XX: Initial seed value for
   1206                                            trunk hashing. */
   1207     bcmSwitchTrunkHashConfig = 655,     /* BCM886XX: Selects hashing polynomial. */
   1208     bcmSwitchTrunkHashPktHeaderCount = 656, /* BCM886XX: Number of headers to
   1209                                            consider in hashing. */
   1210     bcmSwitchTrunkHashPktHeaderSelect = 657, /* BCM886XX: Selects which starting
   1211                                            header to use for hashing. */
   1212     bcmSwitchECMPHashSrcPortEnable = 658, /* BCM886XX: Make Source port part of
   1213                                            the ECMP hash. */
   1214     bcmSwitchECMPHashOffset = 659,      /* BCM886XX: ECMP Hash key is barrel
   1215                                            shifted by this value. */
   1216     bcmSwitchECMPHashSeed = 660,        /* BCM886XX: Initial seed value for ECMP
   1217                                            hashing. */
   1218     bcmSwitchECMPHashConfig = 661,      /* BCM886XX: Selects hashing polynomial
   1219                                            for ECMP. */
   1220     bcmSwitchECMPHashPktHeaderCount = 662, /* BCM886XX: Number of headers to
   1221                                            consider in ECMP hashing. */
   1222     bcmSwitchTrunkDynamicHashOffset = 663, /* Enhanced hash selections for trunk
   1223                                            dynamic load balancing. */
   1224     bcmSwitchTrunkDynamicSampleRate = 664, /* Number of times historical member
   1225                                            load and queued bytes are computed in
   1226                                            a second */
   1227     bcmSwitchTrunkDynamicAccountingSelect = 665, /* 0 = physical link accounting, 1 =
   1228                                            virtual link accounting */
   1229     bcmSwitchTrunkDynamicEgressBytesExponent = 666, /* The exponent used in the calculation
   1230                                            of exponentially weighted moving
   1231                                            average of historical member load.
   1232                                            Applicable to physical link
   1233                                            accounting. */
   1234     bcmSwitchTrunkDynamicQueuedBytesExponent = 667, /* The exponent used in the calculation
   1235                                            of exponentially weighted moving
   1236                                            average of historical member queued
   1237                                            bytes. Applicable to physical link
   1238                                            accounting. */
   1239     bcmSwitchTrunkDynamicEgressBytesDecreaseReset = 668, /* If set, the historical member load is
   1240                                            reset to the instantaneous value if
   1241                                            the latter is smaller. Applicable to
   1242                                            physical link accounting. */
   1243     bcmSwitchTrunkDynamicQueuedBytesDecreaseReset = 669, /* If set, the historical member queued
   1244                                            bytes is updated with the
   1245                                            instantaneous value if the latter is
   1246                                            smaller. Applicable to physical link
   1247                                            accounting. */
   1248     bcmSwitchTrunkDynamicEgressBytesMinThreshold = 670, /* The minimum threshold, in mbps, used
   1249                                            to quantize historical member load.
   1250                                            Applicable to physical link
   1251                                            accounting. */
   1252     bcmSwitchTrunkDynamicEgressBytesMaxThreshold = 671, /* The maximum threshold, in mbps, used
   1253                                            to quantize historical member load.
   1254                                            Applicable to physical link
   1255                                            accounting. */
   1256     bcmSwitchTrunkDynamicQueuedBytesMinThreshold = 672, /* The minimum threshold, in bytes, used
   1257                                            to quantize historical member queued
   1258                                            bytes. Applicable to physical link
   1259                                            accounting. */
   1260     bcmSwitchTrunkDynamicQueuedBytesMaxThreshold = 673, /* The maximum threshold, in bytes, used
   1261                                            to quantize historical member queued
   1262                                            bytes. Applicable to physical link
   1263                                            accounting. */
   1264     bcmSwitchTrunkDynamicExpectedLoadMinThreshold = 674, /* The minimum threshold, in mbps, used
   1265                                            to quantize historical and
   1266                                            instantaneous expected member load.
   1267                                            Applicable to virtual link
   1268                                            accounting. */
   1269     bcmSwitchTrunkDynamicExpectedLoadMaxThreshold = 675, /* The maximum threshold, in mbps, used
   1270                                            to quantize historical and
   1271                                            instantaneous expected member load.
   1272                                            Applicable to virtual link
   1273                                            accounting. */
   1274     bcmSwitchTrunkDynamicImbalanceMinThreshold = 676, /* The minimum threshold, in percentage,
   1275                                            used to quantize historical and
   1276                                            instantaneous member load imbalance.
   1277                                            Applicable to virtual link
   1278                                            accounting. */
   1279     bcmSwitchTrunkDynamicImbalanceMaxThreshold = 677, /* The maximum threshold, in percentage,
   1280                                            used to quantize historical and
   1281                                            instantaneous member load imbalance.
   1282                                            Applicable to virtual link
   1283                                            accounting. */
   1284     bcmSwitchEcmpDynamicHashOffset = 678, /* Enhanced hash selections for L3 ECMP
   1285                                            dynamic load balancing. */
   1286     bcmSwitchEcmpDynamicSampleRate = 679, /* Number of times historical member
   1287                                            load and queued bytes are computed in
   1288                                            a second */
   1289     bcmSwitchEcmpDynamicAccountingSelect = 680, /* 0 = physical link accounting, 1 =
   1290                                            virtual link accounting */
   1291     bcmSwitchEcmpDynamicEgressBytesExponent = 681, /* The exponent used in the calculation
   1292                                            of exponentially weighted moving
   1293                                            average of historical member load.
   1294                                            Applicable to physical link
   1295                                            accounting. */
   1296     bcmSwitchEcmpDynamicQueuedBytesExponent = 682, /* The exponent used in the calculation
   1297                                            of exponentially weighted moving
   1298                                            average of historical member queued
   1299                                            bytes. Applicable to physical link
   1300                                            accounting. */
   1301     bcmSwitchEcmpDynamicEgressBytesDecreaseReset = 683, /* If set, the historical member load is
   1302                                            reset to the instantaneous value if
   1303                                            the latter is smaller. Applicable to
   1304                                            physical link accounting. */
   1305     bcmSwitchEcmpDynamicQueuedBytesDecreaseReset = 684, /* If set, the historical member queued
   1306                                            bytes is updated with the
   1307                                            instantaneous value if the latter is
   1308                                            smaller. Applicable to physical link
   1309                                            accounting. */
   1310     bcmSwitchEcmpDynamicEgressBytesMinThreshold = 685, /* The minimum threshold, in mbps, used
   1311                                            to quantize historical member load.
   1312                                            Applicable to physical link
   1313                                            accounting. */
   1314     bcmSwitchEcmpDynamicEgressBytesMaxThreshold = 686, /* The maximum threshold, in mbps, used
   1315                                            to quantize historical member load.
   1316                                            Applicable to physical link
   1317                                            accounting. */
   1318     bcmSwitchEcmpDynamicQueuedBytesMinThreshold = 687, /* The minimum threshold, in bytes, used
   1319                                            to quantize historical member queued
   1320                                            bytes. Applicable to physical link
   1321                                            accounting. */
   1322     bcmSwitchEcmpDynamicQueuedBytesMaxThreshold = 688, /* The maximum threshold, in bytes, used
   1323                                            to quantize historical member queued
   1324                                            bytes. Applicable to physical link
   1325                                            accounting. */
   1326     bcmSwitchEcmpDynamicExpectedLoadMinThreshold = 689, /* The minimum threshold, in mbps, used
   1327                                            to quantize historical and
   1328                                            instantaneous expected member load.
   1329                                            Applicable to virtual link
   1330                                            accounting. */
   1331     bcmSwitchEcmpDynamicExpectedLoadMaxThreshold = 690, /* The maximum threshold, in mbps, used
   1332                                            to quantize historical and
   1333                                            instantaneous expected member load.
   1334                                            Applicable to virtual link
   1335                                            accounting. */
   1336     bcmSwitchEcmpDynamicImbalanceMinThreshold = 691, /* The minimum threshold, in percentage,
   1337                                            used to quantize historical and
   1338                                            instantaneous member load imbalance.
   1339                                            Applicable to virtual link
   1340                                            accounting. */
   1341     bcmSwitchEcmpDynamicImbalanceMaxThreshold = 692, /* The maximum threshold, in percentage,
   1342                                            used to quantize historical and
   1343                                            instantaneous member load imbalance.
   1344                                            Applicable to virtual link
   1345                                            accounting. */
   1346     bcmSwitchFailoverDropToCpu = 693,   /* Protection data drop to CPU enable. */
   1347     bcmSwitchMplsReservedEntropyLabelToCpu = 694, /* Packet is copied to the CPU if the
   1348                                            entropy label falls between the
   1349                                            reserved range (0-15). */
   1350     bcmSwitchL3SrcBindMissToCpu = 695,  /* Send a copy of L3 packet to CPU if
   1351                                            SIP lookup fails in HPAE mode. */
   1352     bcmSwitchMplsGalAlertLabelToCpu = 696, /* When a GAL label is exposed in a
   1353                                            packet, such a packet will be
   1354                                            dropped. This control determines
   1355                                            whether such a packet gets copied to
   1356                                            CPU. */
   1357     bcmSwitchMplsRalAlertLabelToCpu = 697, /* When a RAL label is exposed in a
   1358                                            packet, such a packet will be
   1359                                            dropped. This control determines
   1360                                            whether such a packet gets copied to
   1361                                            CPU. */
   1362     bcmSwitchMplsIllegalReservedLabelToCpu = 698, /* Exposed an illegal reserved label to
   1363                                            CPU. For example, exposed GAL Label
   1364                                            has BOS=0. */
   1365     bcmSwitchMplsLookupsExceededToCpu = 699, /* Expose out of lookups to CPU */
   1366     bcmSwitchMplsUnknownAchTypeToCpu = 700, /* Packet has an unknown ACH Type. */
   1367     bcmSwitchMplsUnknownAchVersionToCpu = 701, /* The version number of ACH is not 1. */
   1368     bcmSwitchTimesyncIngressVersion = 702, /* Ingress 1588 version 0:V2 1:>V2. */
   1369     bcmSwitchTimesyncEgressVersion = 703, /* Egress 1588 version 0:V2 1:>V2. */
   1370     bcmSwitchTimesyncUnknownVersionToCpu = 704, /* The version number is not recognized. */
   1371     bcmSwitchCongestionCnmToCpu = 705,  /* Send ICNM packets to the CPU.
   1372                                            (Deprecated) */
   1373     bcmSwtichCongestionCnmProxyErrorToCpu = 706, /* Enable forwarding to CPU. */
   1374     bcmSwtichCongestionCnmProxyToCpu = 707, /* This is to copy the dropped CNM
   1375                                            packet to CPU if a network
   1376                                            administrator needs to look at them. */
   1377     bcmSwitchWlanTunnelErrorDrop = 708, /* WLAN Decryption offload enable. */
   1378     bcmSwitchMplsReservedEntropyLabelDrop = 709, /* When the value of the received
   1379                                            entropy label falls in the reserved
   1380                                            range(0-15), this control will
   1381                                            determine if the packet is dropped or
   1382                                            not. */
   1383     bcmSwitchRemoteProtectionTrust = 710, /* If set, use the Protection Status bit
   1384                                            in the received HiGig Header. */
   1385     bcmSwitchL2GreProtocolType = 711,   /* Set protocol-type for L2-GRE */
   1386     bcmSwitchL2GreVpnIdSizeSet = 712,   /* Set bit-size of VPNID within L2-GRE
   1387                                            key */
   1388     bcmSwitchL2GreVpnIdMissToCpu = 713, /* If set, send a copy of L2GRE packet
   1389                                            to CPU if VPNID lookup fails. */
   1390     bcmSwitchL2GreTunnelMissToCpu = 714, /* If set, send a copy of L2GRE packet
   1391                                            to CPU if SIP lookup fails. */
   1392     bcmSwitchMultipathCompressBuffer = 715, /* Set the size of the L3 ECMP table
   1393                                            defragmentation buffer. */
   1394     bcmSwitchMultipathCompress = 716,   /* Defragment L3 ECMP table. */
   1395     bcmSwitchBstEnable = 717,           /* Enable BST tracking. */
   1396     bcmSwitchBstTrackingMode = 718,     /* BST resource usage tracking mode. */
   1397     bcmSwitchL3McastL2 = 719,           /* if set to 0 then l2 key is <VID, DA>,
   1398                                            if set to 1 then l2 key is <RIF/VID,
   1399                                            DIP>. */
   1400     bcmSwitchMiMTeBvidLowerRange = 720, /* Configure the lower limit for Traffic
   1401                                            engineered BVID */
   1402     bcmSwitchMiMTeBvidUpperRange = 721, /* Configure the upper limit for Traffic
   1403                                            engineered BVID */
   1404     bcmSwitchRemoteEncapsulationMode = 722, /* If set, all packet replication is
   1405                                            performed on a remote device. 
   1406                                            Required egress encapsulation is
   1407                                            indicated by the Higig2 header. */
   1408     bcmSwitchFabricTrunkAutoIncludeDisable = 723, /* If set, disable automatic inclusion
   1409                                            of other members of a Higig trunk
   1410                                            group when one member is specified as
   1411                                            the steering destination for a remote
   1412                                            module. */
   1413     bcmSwitchTrunkHashNormalize = 724,  /* Enables using same hash in both
   1414                                            directions of a flow. Applies to both
   1415                                            MAC/IP addresses */
   1416     bcmSwitchMplsLabelCache = 725,      /* Enable Mpls Label Cache */
   1417     bcmSwitchMplsLabelCommit = 726,     /* Commit the MPLS Label Database to
   1418                                            hardware */
   1419     bcmSwitchTrillHopCount = 727,       /* Trill hop count */
   1420     bcmSwitchPolicerFairness = 728,     /* if set, packet is considered in
   1421                                            profile if bucket-level plus random
   1422                                            value are above packet-size. If not
   1423                                            set, packet is considered in profile
   1424                                            if bucket-level is above packet-size. */
   1425     bcmSwitchVxlanUdpDestPortSet = 729, /* Set UDP Destination port for VXLAN */
   1426     bcmSwitchVxlanEntropyEnable = 730,  /* Set UDP Source port for VXLAN Tunnel
   1427                                            Entropy(Value = TRUE/FALSE) */
   1428     bcmSwitchVxlanVnIdMissToCpu = 731,  /* Set VXLAN VN_ID lookup failure Copy
   1429                                            to Cpu */
   1430     bcmSwitchVxlanTunnelMissToCpu = 732, /* If set, send a copy of VXLAN packet
   1431                                            to CPU if VXLAN Tunnel lookup fails. */
   1432     bcmSwitchECMPVxlanHashOffset = 733, /* Enhanced hash select for VxLAN ECMP
   1433                                            hashing . */
   1434     bcmSwitchECMPL2GreHashOffset = 734, /* Enhanced hash select for L2Gre ECMP
   1435                                            hashing . */
   1436     bcmSwitchECMPTrillHashOffset = 735, /* Enhanced hash select for Trill ECMP
   1437                                            hashing . */
   1438     bcmSwitchECMPMplsHashOffset = 736,  /* Enhanced hash select for Mpls ECMP
   1439                                            hashing . */
   1440     bcmSwitchVirtualPortDynamicHashOffset = 737, /* Enhanced hash select for Virtual Port
   1441                                            Aggregation. */
   1442     bcmSwitchTMDomain = 738,            /* Device TM-Domain. */
   1443     bcmSwitchPortHeaderType = 739,      /* Sets TM Port header type. */
   1444     bcmSwitchL2OverflowEvent = 740,     /* Enable/Disable L2 overflow event
   1445                                            processing. */
   1446     bcmSwitchLinkProvClear = 741,       /* Automatically clear provision for a
   1447                                            link when it is de-registered. */
   1448     bcmSwitchEtagEthertype = 742,       /* Set ethertype field in ETAG */
   1449     bcmSwitchEtagInvalidToCpu = 743,    /* Invalid ETAG to CPU */
   1450     bcmSwitchEtagDropToCpu = 744,       /* Packets dropped due to ETAG present
   1451                                            to CPU. Enable/disable or set
   1452                                            specific system port gport. */
   1453     bcmSwitchNonEtagDropToCpu = 745,    /* Packets dropped due to ETAG not
   1454                                            present to CPU */
   1455     bcmSwitchExtenderRpfFailToCpu = 746, /* Extender RPF check fail to CPU */
   1456     bcmSwitchExtenderInterfaceMissToCpu = 747, /* Extender forwarding lookup miss to
   1457                                            CPU */
   1458     bcmSwitchPrioDropToCpu = 748,       /* Priority admittance drop to CPU */
   1459     bcmSwitchExtenderMulticastLowerThreshold = 749, /* Lower threshold of multicast extended
   1460                                            port VID */
   1461     bcmSwitchExtenderMulticastHigherThreshold = 750, /* Higher threshold of multicast
   1462                                            extended port VID */
   1463     bcmSwitchL3NATEnable = 751,         /* Enable/Disable NAT on the switch. */
   1464     bcmSwitchL3DNATHairpinToCpu = 752,  /* If set send copy of DNAT hairpin
   1465                                            packets to CPU. */
   1466     bcmSwitchL3DNATMissToCpu = 753,     /* If set send copy of DNAT lookup miss
   1467                                            packets to CPU. */
   1468     bcmSwitchL3SNATMissToCpu = 754,     /* If set send copy of SNAT lookup miss
   1469                                            packets to CPU. */
   1470     bcmSwitchL3NatOtherToCpu = 755,     /* If set send copy of realm crossing
   1471                                            non-TCP, UDP or ICMP packets to CPU. */
   1472     bcmSwitchL3NatRealmCrossingIcmpToCpu = 756, /* If set send copy of realm crossing
   1473                                            ICMP packets to CPU. */
   1474     bcmSwitchL3NatFragmentsToCpu = 757, /* If set send copy of NAT fragment
   1475                                            packets to CPU. */
   1476     bcmSwitchHashL3DNATPool = 758,      /* Hash Select for DNAT address type
   1477                                            entry. */
   1478     bcmSwitchHashL3DNATPoolDual = 759,  /* Secondary Hash Select for DNAT
   1479                                            address type entry. */
   1480     bcmSwitchMcastTrunkHashMin = 760,   /* Minimal hushing value for a copy with
   1481                                            a given port as destination. Copies
   1482                                            with lower Hash values will be
   1483                                            dropped. */
   1484     bcmSwitchMcastTrunkHashMax = 761,   /* Maximal hushing value for a copy with
   1485                                            a given port as destination. Copies
   1486                                            with higher Hash values will be
   1487                                            dropped. */
   1488     bcmSwitchIp4Compress = 762,         /* compress IPv4 routing table. */
   1489     bcmSwitchEcmpResilientHashOffset = 763, /* Enhanced hash select for ECMP
   1490                                            resilient hashing . */
   1491     bcmSwitchTrunkResilientHashOffset = 764, /* Barrel shift the resilient hashing
   1492                                            LAG key. */
   1493     bcmSwitchFabricTrunkResilientHashOffset = 765, /* Enhanced hash select for Higig trunk
   1494                                            resilient hashing . */
   1495     bcmSwitchShaperAdjust = 766,        /* Meter/Rate control with overhead on
   1496                                            wire accounted for per packet for
   1497                                            EFP. */
   1498     bcmSwitchHashVpVlanMemberIngress = 767, /* Select Hash algorithm for ingress vp
   1499                                            vlan membership check. */
   1500     bcmSwitchHashVpVlanMemberIngressDual = 768, /* Select secondary Hash algorithm for
   1501                                            ingress vp vlan membership check. */
   1502     bcmSwitchHashVpVlanMemberEgress = 769, /* Select Hash algorithm for Egress vp
   1503                                            vlan membership check. */
   1504     bcmSwitchHashVpVlanMemberEgressDual = 770, /* Select secondary Hash algorithm for
   1505                                            Egress vp vlan membership check. */
   1506     bcmSwitchHashL2Endpoint = 771,      /* Select hash algorithm for L2 Endpoint
   1507                                            table. */
   1508     bcmSwitchHashL2EndpointDual = 772,  /* Select secondary hash algorithm for
   1509                                            L2 Endpoint table. */
   1510     bcmSwitchHashEndpointQueueMap = 773, /* Select hash algorithm for Endpoint
   1511                                            Queue Map table. */
   1512     bcmSwitchHashEndpointQueueMapDual = 774, /* Select secondary hash algorithm for
   1513                                            Endpoint Queue Map table. */
   1514     bcmSwitchStackRouteHistoryBitmap1 = 775, /* Configures Stacking route history
   1515                                            bitmap stamping according to port
   1516                                            profile number 1. Uses for packet
   1517                                            pruning in Stacking system. */
   1518     bcmSwitchStackRouteHistoryBitmap2 = 776, /* Configures Stacking route history
   1519                                            bitmap stamping according to port
   1520                                            profile number 2. Uses for packet
   1521                                            pruning in Stacking system. */
   1522     bcmSwitchArpIPcheck = 777,          /* For ARP request, check if TPA is
   1523                                            known. */
   1524     bcmSwitchDeprecated778 = 778,       /* Deprecated. Do not use. */
   1525     bcmSwitchDeprecated779 = 779,       /* Deprecated. Do not use. */
   1526     bcmSwitchL2LearnLimitToCpu = 780,   /* Copy the frame to CPU once the learn
   1527                                            limitation occurred due to the hash
   1528                                            is full in L2 Table. */
   1529     bcmSwitchFlexibleMirrorDestinations = 781, /* Enable configuration of the maximum
   1530                                            number of mirror destinations. */
   1531     bcmSwitchEcmpMacroFlowHashEnable = 782, /* Enable ECMP macro-flow hashing. */
   1532     bcmSwitchOamVersionCheckDisable = 783, /* Disable version check for OAM packets
   1533                                            in pipeline. */
   1534     bcmSwitchOamOlpChipEtherType = 784, /* Ether Type to be used for OLP Chip
   1535                                            communication. */
   1536     bcmSwitchOamOlpChipTpid = 785,      /* TPID to be used for OLP Chip
   1537                                            communication. */
   1538     bcmSwitchOamOlpChipVlan = 786,      /* VLAN ID to be used for OLP Chip
   1539                                            communication. */
   1540     bcmSwitchDeprecated787 = 787,       /* Deprecated. Do not use. */
   1541     bcmSwitchEgressKeepSystemHeader = 788, /* Keep system headers on Tx packets for
   1542                                            a given port. */
   1543     bcmSwitchMacroFlowEcmpHashConcatEnable = 789, /* Enable hash concatenation for ecmp
   1544                                            macro flow. */
   1545     bcmSwitchMacroFlowLoadBalanceHashConcatEnable = 790, /* Enable hash concatenation for Load
   1546                                            balance macro flow. */
   1547     bcmSwitchMacroFlowTrunkHashConcatEnable = 791, /* Enable hash concatenation for Trunk
   1548                                            macro flow. */
   1549     bcmSwitchMacroFlowHigigTrunkHashConcatEnable = 792, /* Enable hash concatenation for Higig
   1550                                            Trunk macro flow. */
   1551     bcmSwitchMacroFlowECMPHashSeed = 793, /* Set Hash seed for ecmp macro flow. */
   1552     bcmSwitchMacroFlowLoadBalanceHashSeed = 794, /* Set Hash Seed for Load balance macro
   1553                                            flow. */
   1554     bcmSwitchMacroFlowTrunkHashSeed = 795, /* Set Hash Seed for Trunk macro flow. */
   1555     bcmSwitchMacroFlowHigigTrunkHashSeed = 796, /* Set Hash Seed for Higig Trunk macro
   1556                                            flow. */
   1557     bcmSwitchHashTrillPayloadSelect0 = 797, /* Set hash control to select TRILL
   1558                                            payload L2/L3 fields for Hash Block
   1559                                            A. */
   1560     bcmSwitchHashTrillPayloadSelect1 = 798, /* Set hash control to select TRILL
   1561                                            payload L2/L3 fields for Hash Block
   1562                                            B. */
   1563     bcmSwitchHashTrillTunnelSelect0 = 799, /* Set hash control to select TRILL
   1564                                            Tunnel L2/L3 fields for Hash Block A. */
   1565     bcmSwitchHashTrillTunnelSelect1 = 800, /* Set hash control to select TRILL
   1566                                            Tunnel L2/L3 fields for Hash Block B. */
   1567     bcmSwitchHashIP6AddrCollapseSelect0 = 801, /* Hash Control to collapse IPV6
   1568                                            addresses for hash block A. */
   1569     bcmSwitchHashIP6AddrCollapseSelect1 = 802, /* Hash Control to collapse IPV6
   1570                                            addresses for hash block B. */
   1571     bcmSwitchPrependTagEnable = 803,    /* Enable Prepend tag per Port. */
   1572     bcmSwitchHashL2VxlanField0 = 804,   /* Hash A Selection of L2 Payload for
   1573                                            Vxlan Packets */
   1574     bcmSwitchHashL2VxlanField1 = 805,   /* Hash B Selection of L2 Payload for
   1575                                            Vxlan Packets */
   1576     bcmSwitchHashL3VxlanField0 = 806,   /* Hash A Selection of L3 Payload for
   1577                                            Vxlan Packets */
   1578     bcmSwitchHashL3VxlanField1 = 807,   /* Hash B Selection of L3 Payload for
   1579                                            Vxlan Packets */
   1580     bcmSwitchHashL2L2GreField0 = 808,   /* Hash A Selection of L2 Payload for
   1581                                            L2Gre Packets */
   1582     bcmSwitchHashL2L2GreField1 = 809,   /* Hash B Selection of L2 Payload for
   1583                                            L2Gre Packets */
   1584     bcmSwitchHashL3L2GreField0 = 810,   /* Hash A Selection of L3 Payload for
   1585                                            L2Gre Packets */
   1586     bcmSwitchHashL3L2GreField1 = 811,   /* Hash B Selection of L3 Payload for
   1587                                            L2Gre Packets */
   1588     bcmSwitchMcastTrunkIngressCommit = 812, /* If set, the Multicast LAG packets use
   1589                                            the new LAG table definition for the
   1590                                            member resolution. */
   1591     bcmSwitchMcastTrunkEgressCommit = 813, /* If set, the new Multicast LAG table
   1592                                            is copied to the old one. It assumes
   1593                                            that all the devices are using the
   1594                                            new LAG table, after calling
   1595                                            bcmSwitchMcastTrunkIngressCommit. */
   1596     bcmSwitchMplsShortPipe = 814,       /* If Set device supports Short pipe
   1597                                            only. Otherwise Pipe only. */
   1598     bcmSwitchTraverseMode = 815,        /* Control the traverse mode, choose
   1599                                            mode from
   1600                                            bcm_switch_table_update_mode_t */
   1601     bcmSwitchTrunkResilientHashConfig = 816, /* Stateful LAG hashing function */
   1602     bcmSwitchTrunkResilientHashSeed = 817, /* Stateful LAG hashing seed */
   1603     bcmSwitchECMPResilientHashSeed = 818, /* Stateful ECMP hashing seed */
   1604     bcmSwitchResilientHashAgeTimer = 819, /* Resilient hash entry deletion time.
   1605                                            Units: seconds */
   1606     bcmSwitchFieldStageEgressToCpu = 820, /* Control to enable egress copy to cpu
   1607                                            action */
   1608     bcmSwitchHashOamEgress = 821,       /* Hash Select for egress OAM. */
   1609     bcmSwitchHashOamEgressDual = 822,   /* Secondary Hash Select for egress OAM. */
   1610     bcmSwitchColorL3L2Marking = 823,    /* Set the DP->Resolved-DP map (COS
   1611                                            marking) */
   1612     bcmSwitchWredForAllPkts = 824,      /* Apply WRED per color profiles on all
   1613                                            packets */
   1614     bcmSwitchFcoeNpvModeEnable = 825,   /* NPV mode */
   1615     bcmSwitchFcoeDomainRoutePrefixLength = 826, /* D-ID Bits to use for domain route
   1616                                            search */
   1617     bcmSwitchFcoeCutThroughEnable = 827, /* Enables Cut-Through mode for FCOE
   1618                                            packets */
   1619     bcmSwitchFcoeSourceBindCheckAction = 828, /* Sets the action to take when
   1620                                            Source-bind-check fails */
   1621     bcmSwitchFcoeSourceFpmaPrefixCheckAction = 829, /* Sets the action to take when
   1622                                            Source-fpma-prefix-check fails */
   1623     bcmSwitchFcoeVftHopCountExpiryToCpu = 830, /* If set, copy hopcount expired packets
   1624                                            to CPU */
   1625     bcmSwitchFcoeVftHopCountExpiryAction = 831, /* If set, send hopcount expired packets
   1626                                            with EOFni in FC trailer. Applicable
   1627                                            at egress. */
   1628     bcmSwitchFcoeFcEofT1Value = 832,    /* Sets the numerical value for EOFt */
   1629     bcmSwitchFcoeFcEofT2Value = 833,    /* Sets the numerical value for EOFt
   1630                                            (alternate) */
   1631     bcmSwitchFcoeFcEofA1Value = 834,    /* Sets the numerical value for EOFa */
   1632     bcmSwitchFcoeFcEofA2Value = 835,    /* Sets the numerical value for EOFa
   1633                                            (alternate) */
   1634     bcmSwitchFcoeFcEofN1Value = 836,    /* Sets the numerical value for EOFn */
   1635     bcmSwitchFcoeFcEofN2Value = 837,    /* Sets the numerical value for EOFn
   1636                                            (alternate) */
   1637     bcmSwitchFcoeFcEofNI1Value = 838,   /* Sets the numerical value for EOFni */
   1638     bcmSwitchFcoeFcEofNI2Value = 839,   /* Sets the numerical value for EOFni
   1639                                            (alternate) */
   1640     bcmSwitchFcoeZoneCheckFailToCpu = 840, /* Action to take when FCOE zone check
   1641                                            fails, 0 : no-op(default), 1 :
   1642                                            Copy-to-Cpu */
   1643     bcmSwitchFcoeZoneCheckMissDrop = 841, /* Action to take when FCOE zone check
   1644                                            is a miss, 0 : no-op, 1 :
   1645                                            Drop(default) */
   1646     bcmSwitchHashUseL2GreTunnelGreKey0 = 842, /* Place the GRE key extracted from
   1647                                            L2GRE pkt header in Hash A buckets */
   1648     bcmSwitchHashUseL2GreTunnelGreKey1 = 843, /* Place the GRE key extracted from
   1649                                            L2GRE pkt header in Hash B buckets */
   1650     bcmSwitchHashL2GrePayloadSelect0 = 844, /* Select inner L2/L3 fields to derive
   1651                                            the Hash A buckets when an L2GRE pkt
   1652                                            is received and the L2GRE tunnel is
   1653                                            being terminated */
   1654     bcmSwitchHashL2GrePayloadSelect1 = 845, /* Select inner L2/L3 fields to derive
   1655                                            the Hash B buckets when an L2GRE pkt
   1656                                            is received and the L2GRE tunnel is
   1657                                            being terminated */
   1658     bcmSwitchHashL2GreNetworkPortPayloadDisable0 = 846, /* Disable using the l2gre payload for
   1659                                            hashing, for L2Gre pkts */
   1660     bcmSwitchHashL2GreNetworkPortPayloadDisable1 = 847, /* Disable using the l2gre payload for
   1661                                            hashing, for L2Gre pkts */
   1662     bcmSwitchSystemReservedVlan = 848,  /* System Reserved VLAN */
   1663     bcmSwitchProxySrcKnockout = 849,    /* If set, remove the source port during
   1664                                            a proxy lookup operation of a packet
   1665                                            which originated on this module. */
   1666     bcmSwitchNetworkGroupDepth = 850,   /* Number of split horizon groups
   1667                                            supported by the device */
   1668     bcmSwitchUnknownSubportPktTagToCpu = 851, /* If set, send packet to CPU on
   1669                                            following error conditions a. missing
   1670                                            subport pkt tag and b. unknown
   1671                                            subport pkt tag (lookup miss). */
   1672     bcmSwitchL3RoutedLearn = 852,       /* enable L2 learning for routed
   1673                                            packets. */
   1674     bcmSwitchSubportPktTagEthertype = 853, /* Set ethertype field in LLTAG */
   1675     bcmSwitchSubportPktTagToCpu = 854,  /* LLTAG present to CPU */
   1676     bcmSwitchNonSubportPktTagToCpu = 855, /* LLTAG not present to CPU */
   1677     bcmSwitchHashL2GreKeyMask0 = 856,   /* Set the mask which is AND-ed with
   1678                                            hash L2GRE key before hash generation
   1679                                            for hash A */
   1680     bcmSwitchHashL2GreKeyMask1 = 857,   /* Set the mask which is AND-ed with
   1681                                            hash L2GRE key before hash generation
   1682                                            for hash B */
   1683     bcmSwitchL3Max128BV6Entries = 858,  /* Max number of Number of 128B LPM
   1684                                            entries. */
   1685     bcmSwitchEEEQueueThresholdProfile0 = 859, /* Set EEE BB mode queue depth threshold
   1686                                            Profile 0 */
   1687     bcmSwitchEEEQueueThresholdProfile1 = 860, /* Set EEE BB mode queue depth threshold
   1688                                            Profile 1 */
   1689     bcmSwitchEEEQueueThresholdProfile2 = 861, /* Set EEE BB mode queue depth threshold
   1690                                            Profile 2 */
   1691     bcmSwitchEEEQueueThresholdProfile3 = 862, /* Set EEE BB mode queue depth threshold
   1692                                            Profile 3 */
   1693     bcmSwitchEEEPacketLatencyProfile0 = 863, /* Set EEE BB mode packet max latency
   1694                                            Profile 0 */
   1695     bcmSwitchEEEPacketLatencyProfile1 = 864, /* Set EEE BB mode packet max latency
   1696                                            Profile 1 */
   1697     bcmSwitchEEEPacketLatencyProfile2 = 865, /* Set EEE BB mode packet max latency
   1698                                            Profile 2 */
   1699     bcmSwitchEEEPacketLatencyProfile3 = 866, /* Set EEE BB mode packet max latency
   1700                                            Profile 3 */
   1701     bcmSwitchDosAttackV6MinFragEnable = 867, /* Enable Min pkt size check for
   1702                                            fragmented IPv6. */
   1703     bcmSwitchDosAttackV6MinFragSize = 868, /* Min pkt size for fragmented IPv6
   1704                                            check. */
   1705     bcmSwitchMirrorUnicastCosq = 869,   /* Unicast mirror COS. */
   1706     bcmSwitchMirrorMulticastCosq = 870, /* Multicast mirror COS. */
   1707     bcmSwitchMcQueueSchedMode = 871,    /* Schedule mode select for multicast
   1708                                            queues. */
   1709     bcmSwitchReserved872 = 872,         /* Reserved. */
   1710     bcmSwitchCacheTableUpdateAll = 873, /* Update all cached memories. */
   1711     bcmSwitchHashNivSrcIfEtagSvidSelect0 = 874, /* Select VN-TAG.src_vif or E-Tag.svid
   1712                                            for hashing computation in Hash A
   1713                                            buckets. */
   1714     bcmSwitchHashNivSrcIfEtagSvidSelect1 = 875, /* Select VN-TAG.src_vif or E-Tag.svid
   1715                                            for hashing computation in Hash B
   1716                                            buckets. */
   1717     bcmSwitchHashNivDstIfEtagVidSelect0 = 876, /* Select VN-TAG.dst_vif or E-Tag.vid
   1718                                            for hashing computation in Hash A
   1719                                            buckets. */
   1720     bcmSwitchHashNivDstIfEtagVidSelect1 = 877, /* Select VN-TAG.dst_vif or E-Tag.vid
   1721                                            for hashing computation in Hash B
   1722                                            buckets. */
   1723     bcmSwitchBstSnapshotEnable = 878,   /* BST resource usage SnapShot mode. */
   1724     bcmSwitchSymmetricHashControl = 879, /* Enable/Disable symmetric hash, for
   1725                                            Ip4, Ip6, FCoE packet, etc. */
   1726     bcmSwitchL2ExtLearn = 880,          /* Learn L2 addresses on EXT_L2_ENTRY */
   1727     bcmSwitchReserveHighTunnelId = 881, /* Set the highest inclusive bounds of
   1728                                            the Tunnel ID resources.  Get will
   1729                                            return the highest value supported by
   1730                                            the device.  Setting 0 will remove
   1731                                            the reserved range */
   1732     bcmSwitchReserveLowTunnelId = 882,  /* Set the lower inclusive bounds of the
   1733                                            Tunnel ID resources.  Get will return
   1734                                            the lowest value supported by the
   1735                                            device.  Setting 0 will remove the
   1736                                            reserved range */
   1737     bcmSwitchHigigCongestionClassEnable = 883, /* Enable the Congestion_Class field in
   1738                                            HIGIG2 header to store the int_cn
   1739                                            value in it. */
   1740     bcmSwitchEcnNonIpResponsive = 884,  /* Set the default responsive indication
   1741                                            value for NON-IP packets. */
   1742     bcmSwitchEcnNonIpIntCongestionNotification = 885, /* Set the internal congestion
   1743                                            notification (int_cn) value for
   1744                                            NON-IP packets. */
   1745     bcmSwitchMimPayloadTpidEnable = 886, /* Indicates which of MPLS_TPID[3:0] are
   1746                                            allowed to match the TPID of a
   1747                                            transit MinM frame's payload L2
   1748                                            header's outer VLAN tag. */
   1749     bcmSwitchHashMimUseTunnelHeader0 = 887, /* Indicates whether the tunnel or
   1750                                            payload fields must be used for
   1751                                            hashing for MIM traffic in field
   1752                                            selection block A. */
   1753     bcmSwitchHashMimUseTunnelHeader1 = 888, /* Indicates whether the tunnel or
   1754                                            payload fields must be used for
   1755                                            hashing for MIM traffic in field
   1756                                            selection block B. */
   1757     bcmSwitchMplsPipeTunnelLabelExpSet = 889, /* If set, MPLS pipe modes is supported
   1758                                            with EXP field set. In this case exp
   1759                                            is taken from the exp field in
   1760                                            bcm_mpls_egress_label_s struct in the
   1761                                            bcm_mpls_port_add api. Otherwise EXP
   1762                                            field will be copied from previous
   1763                                            label. Default is 0. */
   1764     bcmSwitchControlPortConfigInstall = 890, /* Port config install. */
   1765     bcmSwitchLoopbackMtuSize = 891,     /* MTU size in bytes check for packets
   1766                                            ingressed on loopback port. */
   1767     bcmSwitchHashVxlanPayloadSelect0 = 892, /* Set hash control to select VXLAN
   1768                                            payload L2/L3 fields for Hash Block
   1769                                            A. */
   1770     bcmSwitchHashVxlanPayloadSelect1 = 893, /* Set hash control to select VXLAN
   1771                                            payload L2/L3 fields for Hash Block
   1772                                            B. */
   1773     bcmSwitchCongestionCnmSrcMacNonOui = 894, /* Source MAC address in Congestion
   1774                                            Notification Message Lower 3 bytes of
   1775                                            MAC address to match */
   1776     bcmSwitchCongestionCnmSrcMacOui = 895, /* Source MAC address in Congestion
   1777                                            Notification Message Upper 3 bytes of
   1778                                            MAC address to match */
   1779     bcmSwitchHashL2MPLSPayloadSelect0 = 896, /* Set hash control to select L2 MPLS
   1780                                            payload L2/L3 fields for Hash Block
   1781                                            A. */
   1782     bcmSwitchHashL2MPLSPayloadSelect1 = 897, /* Set hash control to select L2 MPLS
   1783                                            payload L2/L3 fields for Hash Block
   1784                                            B. */
   1785     bcmSwitchHashL3L2MPLSField0 = 898,  /* Hash A Selection of L3 Payload for L2
   1786                                            MPLS Packets */
   1787     bcmSwitchHashL3L2MPLSField1 = 899,  /* Hash B Selection of L3 Payload for L2
   1788                                            MPLS Packets */
   1789     bcmSwitchHashIPSecSelect0 = 900,    /* Set hash control to select outer
   1790                                            L4_SRC/DST_PORT or IPSec SPI for hash
   1791                                            block A. */
   1792     bcmSwitchHashIPSecSelect1 = 901,    /* Set hash control to select outer
   1793                                            L4_SRC/DST_PORT or IPSec SPI for hash
   1794                                            block B. */
   1795     bcmSwitchECMPLevel1RandomSeed = 902, /* Seed for RNG used in ECMP Randomized
   1796                                            Load Balancing (at Level1 in Two
   1797                                            Level ECMP) */
   1798     bcmSwitchECMPLevel2RandomSeed = 903, /* Seed for RNG used in ECMP Randomized
   1799                                            Load Balancing at Level2 in Two Level
   1800                                            ECMP */
   1801     bcmSwitchTimesyncEgressTimestampingMode = 904, /* Selects 32bit or 48bit timestamping
   1802                                            mode for 1588 packets. */
   1803     bcmSwitchSubportCoEEtherType = 905, /* Set COE protocol ingress ethertype to
   1804                                            match */
   1805     bcmSwitchSubportEgressTpid = 906,   /* The TPID to use when the
   1806                                            bcmPortControlSubportTagSize is 4
   1807                                            Bytes */
   1808     bcmSwitchSubportEgressWideTpid = 907, /* The TPID to use when the
   1809                                            bcmPortControlSubportTagSize is 8
   1810                                            Bytes */
   1811     bcmSwitchIpmcSameVlanPruningOverride = 908, /* Set to override the IPMC same vlan
   1812                                            pruning */
   1813     bcmSwitchSynchronousPortClockSourceValid = 909, /* Returns whether synchronous clock can
   1814                                            be sucessfully recovered from the
   1815                                            port, configured via
   1816                                            bcmSwitchSynchronousPortClockSource */
   1817     bcmSwitchSynchronousPortClockSourceBkupValid = 910, /* Returns whether synchronous clock is
   1818                                            successfully recovered from the back
   1819                                            up port, configured via
   1820                                            bcmSwitchSynchronousPortClockSourceBkup */
   1821     bcmSwitchRemoteProtectionEnable = 911, /* Set the Protection Status bit in
   1822                                            HiGig Header */
   1823     bcmSwitchMirrorExclusive = 912,     /* Set Mirror exclusive behaviour
   1824                                            between FP and Port */
   1825     bcmSwitchEcnDelayMeasurementThreshold = 913, /* Set Ecn delay measurement threshold */
   1826     bcmSwitchMacroFlowHashUseMSB = 914, /* If enable, use MSB for Macroflow
   1827                                            based hashing */
   1828     bcmSwitchMplsDefaultTtlCopy = 915,  /* Default value that is used when
   1829                                            sending a packet from AC to PWE and
   1830                                            the push-profile is copy */
   1831     bcmSwitchOamStackingSupport = 916,  /* Use VC label field to carry OAM
   1832                                            endpoint context to egress XGS switch */
   1833     bcmSwitchHashOam = 917,             /* Hash select for OAM tables */
   1834     bcmSwitchHashOamDual = 918,         /* Secondary hash select for OAM tables */
   1835     bcmSwitchHashOamLeastFull = 919,    /* Use least full bank in dual hash OAM
   1836                                            tables */
   1837     bcmSwitchHashDualMoveDepthOam = 920, /* Maximum moves in dual hash mode for
   1838                                            OAM tables */
   1839     bcmSwitchPortVlanTranslationAdvanced = 921, /* Enable Port Advanced default vlan
   1840                                            Edit mode. 1 - enable, 0 - disable */
   1841     bcmSwitchForwardingLayerMtuFilter = 922, /* EnableDisable Forwarding Layer
   1842                                            filtering per header format */
   1843     bcmSwitchLinkLayerMtuFilter = 923,  /* EnableDisable Link Layer Filtering
   1844                                            per header format */
   1845     bcmSwitchForwardingLayerMtuSize = 924, /* Mtu size for Forwarding Layer
   1846                                            Filtering */
   1847     bcmSwitchLinkLayerMtuSize = 925,    /* MTU size for Link Layer Filtering */
   1848     bcmSwitchMimBvidInsertionControl = 926, /* If 0, BVID is inserted into the MiM
   1849                                            packet if the destination virtual
   1850                                            port(bcm_mim_port_t object) is a
   1851                                            Network port (legacy behavior). If
   1852                                            set to 1, BVID is inserted into the
   1853                                            MiM packet if the egress_tunnel_vlan
   1854                                            field of the corresponding
   1855                                            bcm_mim_port_t object contains a
   1856                                            valid vlan id (1 .. 4095) */
   1857     bcmSwitchL2CpuDeleteEvent = 927,    /* If enable, when SW initiates a DELETE
   1858                                            operation to l2 table, SDK can get
   1859                                            relative DELETE events from L2 Mode
   1860                                            FIFO. */
   1861     bcmSwitchL2LearnEvent = 928,        /* If enable, when HW does a LEARN
   1862                                            operation to l2 table, SDK can get
   1863                                            relative LEARN events from L2 Mode
   1864                                            FIFO. */
   1865     bcmSwitchL2CpuAddEvent = 929,       /* If enable, when SW initiates a INSERT
   1866                                            operation to l2 table, SDK can get
   1867                                            ADD events from L2 Mode FIFO. */
   1868     bcmSwitchL2AgingEvent = 930,        /* If enable, when HW does a AGE
   1869                                            operation to l2 table , SDK can get
   1870                                            AGE events from L2 Mode FIFO. */
   1871     bcmSwitchUdfHashEnable = 931,       /* Enable/Disable UDF hashing */
   1872     bcmSwitchOlpMatchRule = 932,        /* Set Match rule value that identifies
   1873                                            OLP packets when copied to cpu. */
   1874     bcmSwitchMplsExtendedLabelTtl = 933, /* Set the TTL of the new MPLS label
   1875                                            created when using extended label
   1876                                            feature. */
   1877     bcmSwitchMacroFlowHashOverlayMaxOffset = 934, /* Maximum offset value to be used in
   1878                                            overlay ECMP offset table */
   1879     bcmSwitchMacroFlowHashOverlayStrideOffset = 935, /* Offset increment to be used for
   1880                                            populating overlay ECMP offset table. */
   1881     bcmSwitchMacroFlowHashOverlayMinOffset = 936, /* Minimum offset value to be used in
   1882                                            overlay ECMP offset table */
   1883     bcmSwitchMacroFlowEcmpHashOverlayConcatEnable = 937, /* Enable hash concatenation for overlay
   1884                                            layer ecmp macro flow. */
   1885     bcmSwitchMacroFlowECMPOverlayHashSeed = 938, /* Hash Seed value for the overlay ECMP
   1886                                            calculation */
   1887     bcmSwitchECMPOverlayHashOffset = 939, /* Offset selections for enhanced
   1888                                            overlay L3 ECMP. */
   1889     bcmSwitchMacroFlowEcmpUnderlayHashConcatEnable = 940, /* 56960 Enable hash concatenation for
   1890                                            ecmp level 2 macro flow. */
   1891     bcmSwitchMacroFlowECMPUnderlayHashSeed = 941, /* 56960 Set Hash seed for ecmp level 2
   1892                                            macro flow. */
   1893     bcmSwitchECMPUnderlayVxlanHashOffset = 942, /* Enhanced hash select for VxLAN ECMP
   1894                                            Level 2 hashing . */
   1895     bcmSwitchECMPUnderlayL2GreHashOffset = 943, /* Enhanced hash select for L2Gre ECMP
   1896                                            Level 2 hashing . */
   1897     bcmSwitchECMPUnderlayTrillHashOffset = 944, /* Enhanced hash select for Trill ECMP
   1898                                            Level 2 hashing . */
   1899     bcmSwitchVirtualPortUnderlayDynamicHashOffset = 945, /* Enhanced hash select for Virtual Port
   1900                                            Aggregation at Level 2. */
   1901     bcmSwitchECMPUnderlayHashSet0Offset = 946, /* 56960 enhanced hash bits for ECMP
   1902                                            Level 2. */
   1903     bcmSwitchSampleFlexRandomSeed = 947, /* Set sFlow Flex RNG seed */
   1904     bcmSwitchNonUcVlanShapingEnable = 948, /*  Enable/disable the ability of
   1905                                            assigning single destination
   1906                                            non-unicast traffic to service-based
   1907                                            queues */
   1908     bcmSwitchCustomHeaderEncapPriorityOffset = 949, /* Set the offset of the priority value
   1909                                            in the encapsulated custom header */
   1910     bcmSwitchIngCapwapEnable = 950,     /* Enable or disable ingress CAPWAP
   1911                                            parser. */
   1912     bcmSwitchCapwapDataUdpDstPort = 951, /* UDP dest port number of CAPWAP data
   1913                                            packet. */
   1914     bcmSwitchCountCapwapPayloadBytesOnly = 952, /* If set, count only the CAPWAP's
   1915                                            wireless payload bytes for CAPWAP
   1916                                            data packets. */
   1917     bcmSwitchOamOlpStationMacOui = 953, /* Specify OUI bytes of BCM device MAC
   1918                                            address used during OLP communication
   1919                                            and OLP PKT sig match */
   1920     bcmSwitchOamOlpStationMacNonOui = 954, /* Specify NON OUI bytes of BCM device
   1921                                            MAC address used during OLP
   1922                                            communication and OLP PKT sig match */
   1923     bcmSwitchReserved955 = 955,         /* Reserved955 */
   1924     bcmSwitchPFCDeadlockDetectionTimeInterval = 956, /* Set and Get the PFC detection time
   1925                                            interval (0-100ms[default], 1-10ms). */
   1926     bcmSwitchPFCDeadlockRecoveryAction = 957, /* Set and Get Recovery action to be
   1927                                            performed in PFC deadlock recovery
   1928                                            state. 0-Transmit Packets (Default),
   1929                                            1-Drop. */
   1930     bcmSwitchRangeCheckersAPIType = 958, /* Setting this switch control to 0
   1931                                            allows to use only field API's
   1932                                            (bcm_field_range_XXX) and setting it
   1933                                            to 1 allows to use only new range
   1934                                            module API's (bcm_range_XXX). Default
   1935                                            value will be set to 0. */
   1936     bcmSwitchReserved958 = 959,         /* Reserved958 */
   1937     bcmSwitchEcmpGroupMemberMode = 960, /* Set/get ECMP group mode */
   1938     bcmSwitchMimlEncapInnerEthertype = 961, /* Set MIML-ETYPE (inner ethertype)
   1939                                            field in MiML for encapsulation.
   1940                                            Value of unit16 type. */
   1941     bcmSwitchHashMiMPayloadSelect0 = 962, /* Set hash control to select MiM L2/L3
   1942                                            payload fields for Hash Block A */
   1943     bcmSwitchHashMiMPayloadSelect1 = 963, /* Set hash control to select MiM L2/L3
   1944                                            payload fields for Hash Block B */
   1945     bcmSwitchHashL3MiMField0 = 964,     /* L3 MiM enhanced hash field for Hash
   1946                                            Block A */
   1947     bcmSwitchHashL3MiMField1 = 965,     /* L3 MiM enhanced hash field for Hash
   1948                                            Block B */
   1949     bcmSwitchHashMPLSUseLabelStack = 966, /* If there are more than 3 labels,
   1950                                            label stack (up to 5 labels) is used
   1951                                            for hashing else Top 3 MPLS labels +
   1952                                            payload IPV4/IPv6 fields will be
   1953                                            selected for hashing */
   1954     bcmSwitchHashMPLSExcludeGAL = 967,  /* To exclude GAL label from hash
   1955                                            computation */
   1956     bcmSwitchRedirectBufferThresholdPriorityLow = 968, /* Set the buffer threshold limit for
   1957                                            low priority redirected packets */
   1958     bcmSwitchRedirectBufferThresholdPriorityMedium = 969, /* Set the buffer threshold limit for
   1959                                            medium priority redirected packets */
   1960     bcmSwitchRedirectBufferThresholdPriorityHigh = 970, /* Set the buffer threshold limit for
   1961                                            high priority redirected packets */
   1962     bcmSwitchFlexIP6ExtHdr = 971,       /* Programmable value for user defined
   1963                                            extension header 1 & 2. */
   1964     bcmSwitchFlexIP6ExtHdrEgress = 972, /* Egress programmable value for user
   1965                                            defined extension header 1 & 2. */
   1966     bcmSwitchHashUseFlowSelMplsEcmp = 973, /* Enable/Disable flow based hashing for
   1967                                            MPLS ECMP. */
   1968     bcmSwitchV6L3SrcDstLocalLinkDropCancel = 974, /* Do not drop IPv6. It will override
   1969                                            drop control
   1970                                            bcmSwitchV6L3LocalLinkDrop if source
   1971                                            and destination are local link. */
   1972     bcmSwitchL3ClassIdForL2Enable = 975, /* Enable/Disable L3 Lookup to get
   1973                                            classids based on DIP & SIP for L2
   1974                                            Switched packets. */
   1975     bcmSwitchDropSobmhOnLinkDown = 976, /* Enable/Disable SOBMH blocking on link
   1976                                            down egress port */
   1977     bcmSwitchResilientHashCRC0ByteMask = 977, /* Set mask for CRC0 stateful hashing
   1978                                            function in 2Byte resolution */
   1979     bcmSwitchResilientHashCRC1ByteMask = 978, /* Set mask for CRC1 stateful hashing
   1980                                            function in 2Byte resolution */
   1981     bcmSwitchResilientHashCRC2ByteMask = 979, /* Set mask for CRC2 stateful hashing
   1982                                            function in 2Byte resolution */
   1983     bcmSwitchResilientHashCRC3ByteMask = 980, /* Set mask for CRC3 stateful hashing
   1984                                            function in 2Byte resolution */
   1985     bcmSwitchResilientHashCRCSeed = 981, /* Set seed for stateful CRC hashing
   1986                                            functions */
   1987     bcmSwitchECMPResilientHashKey0Shift = 982, /* Shift left the
   1988                                            Stateful-Hashing-Lb-Key(47 bit) to
   1989                                            create ECMP key-0 */
   1990     bcmSwitchECMPResilientHashKey1Shift = 983, /* Shift right the
   1991                                            Stateful-Hashing-Lb-Key(47 bit) to
   1992                                            create ECMP key-1 */
   1993     bcmSwitchVpnDetachPorts = 984,      /* Set VPN destroy mode to either delete
   1994                                            ports that are attached to the VSI or
   1995                                            ignore them. Default: 1 - Destroy
   1996                                            attached ports. */
   1997     bcmSwitchClassL3L2Marking = 985,    /* Set the
   1998                                            In-Lif-Profile->Resolved-In-Lif-Profile
   1999                                            map (In-Lif-Profile mapping */
   2000     bcmSwitchL3L2MarkingMode = 986,     /* Set the DP map mode */
   2001     bcmSwitchSTPDisabledFieldBypass = 987, /* Disable FP when STP state is
   2002                                            disabled. */
   2003     bcmSwitchHashSctpL4Port = 988,      /* To set that RTAG7 hashing can be
   2004                                            performed on SCTP. */
   2005     bcmSwitchReserved988 = 989,         /* Reserved988. */
   2006     bcmSwitchGlobalTpidEnable = 990,    /* Enable/Disable global TPIDs. */
   2007     bcmSwitchECMPResilientHashCombine = 991, /* Combine both regular and resilient
   2008                                            hashing for ECMP key. */
   2009     bcmSwitchHashSetTflowMode = 992,    /* enable/disable using hash offset
   2010                                            b0/b1 regardless of th_tflow_enabled */
   2011     bcmSwitchDowngrade = 993,           /* set the switch for a downgrade in
   2012                                            Warmboot */
   2013     bcmSwitchHashELISearch = 994,       /* Enable ELI search and the use of the
   2014                                            EL label for LAG and ECMP load
   2015                                            balancing. */
   2016     bcmSwitchCrashRecoveryMode = 995,   /* Determine the Crash recovery mode
   2017                                            0:off 1:API 2:on demand. */
   2018     bcmSwitchCrCommit = 996,            /* If woekinging in on demand CR, use
   2019                                            this to trigger a commit. */
   2020     bcmSwitchCrLastTransactionStatus = 997, /* Query after a crash if last
   2021                                            transaction went through. */
   2022     bcmSwitchCrCouldNotRecover = 998,   /* Query after A crash if program
   2023                                            succesfully recovered. */
   2024     bcmSwitchHWL2Freeze = 999,          /* Freeze/thaw L2 H/W activity. */
   2025     bcmSwitchHashIP6NextHeaderUseExtensionHeader0 = 1000, /* Hash Control to select the IPv6 Next
   2026                                            Header field for hash Block A. If
   2027                                            set, use Extension Header, else use
   2028                                            current Next Header field. */
   2029     bcmSwitchHashIP6NextHeaderUseExtensionHeader1 = 1001, /* Hash Control to select the IPv6 Next
   2030                                            Header field for hash Block B. If
   2031                                            set, use Extension Header, else use
   2032                                            current Next Header field. */
   2033     bcmSwitchHashUseFlowSelLbidNonUnicast = 1002, /* Enable/Disable flow based hashing for
   2034                                            non-unicast LBID. */
   2035     bcmSwitchHashUseFlowSelLbidUnicast = 1003, /* Enable/Disable flow based hashing for
   2036                                            unicast LBID. */
   2037     bcmSwitchHashUseFlowSelHigigTrunkNonUnicast = 1004, /* Enable/Disable flow based hashing for
   2038                                            non-unicast Higig Trunk. */
   2039     bcmSwitchHashUseFlowSelHigigTrunkUnicast = 1005, /* Enable/Disable flow based hashing for
   2040                                            unicast Higig Trunk. */
   2041     bcmSwitchHashUseFlowSelHigigTrunkFailover = 1006, /* Enable/Disable flow based hashing for
   2042                                            Higig Trunk Failover. */
   2043     bcmSwitchHashUseFlowSelTrunkNonUnicast = 1007, /* Enable/Disable flow based hashing for
   2044                                            non-unicast Trunk. */
   2045     bcmSwitchHashUseFlowSelEntropy = 1008, /* Enable/Disable flow based hashing for
   2046                                            Entropy. */
   2047     bcmSwitchHashUseFlowSelVxlanEcmp = 1009, /* Enable/Disable flow based hashing for
   2048                                            VXLAN ECMP. */
   2049     bcmSwitchDefaultNativeOutVlanPort = 1010, /* Default native out VLAN Port. */
   2050     bcmSwitchDefaultEgressVlanEditClassId = 1011, /* Default Vlan Edit Class Id for Egress
   2051                                            VLAN translation. */
   2052     bcmSwitchGtpDetectEnable = 1012,    /* Enable/disable the capability for GTP
   2053                                            packet detection. */
   2054     bcmSwitchGtpHdrFirstByte = 1013,    /* Setup the value for GTP Header First
   2055                                            Byte. */
   2056     bcmSwitchGtpHdrFirstByteMask = 1014, /* Setup the mask for GTP Header First
   2057                                            Byte. */
   2058     bcmSwitchHashGtpTeidEnable0 = 1015, /* Enable using the Tunnel endpoint id
   2059                                            for hashing, for GTP pkts. */
   2060     bcmSwitchHashGtpTeidEnable1 = 1016, /* Enable using the Tunnel endpoint id
   2061                                            for hashing, for GTP pkts. */
   2062     bcmSwitchEccSingleBitErrorEvent = 1017, /* Enable/Disable 1bit ECC error
   2063                                            reporting for all the memories which
   2064                                            are protected by ECC logic and whose
   2065                                            Parity/ECC error could only be
   2066                                            corrected by H/W. */
   2067     bcmSwitchHeaderCompensationPerPacket = 1018, /* Set the header compensation of
   2068                                            packets according to the MSBs of its
   2069                                            CUD. */
   2070     bcmSwitch3rdTagStampMode = 1019,    /* Set the 3rd tag stamping mode,
   2071                                            0:Dsiable, 1: Enable. */
   2072     bcmSwitchMacroFlowHigigTrunkHashMinOffset = 1020, /* Minumum offset value to be used in
   2073                                            RTAG7 macroflow for Higig Trunk */
   2074     bcmSwitchMacroFlowHigigTrunkHashMaxOffset = 1021, /* Maximum offset value to be used in
   2075                                            RTAG7 macroflow for Higig Trunk */
   2076     bcmSwitchMacroFlowHigigTrunkHashStrideOffset = 1022, /* Offset increment value to be used in
   2077                                            RTAG7 macroflow for Higig Trunk */
   2078     bcmSwitchMacroFlowTrunkHashMinOffset = 1023, /* Minumum offset value to be used in
   2079                                            RTAG7 macroflow for Trunk */
   2080     bcmSwitchMacroFlowTrunkHashMaxOffset = 1024, /* Maximum offset value to be used in
   2081                                            RTAG7 macroflow for Trunk */
   2082     bcmSwitchMacroFlowTrunkHashStrideOffset = 1025, /* Offset increment value to be used in
   2083                                            RTAG7 macroflow for Trunk */
   2084     bcmSwitchMacroFlowLoadBalanceEntropyHashMinOffset = 1026, /* Minumum offset value to be used in
   2085                                            RTAG7 macroflow for Load Balance
   2086                                            ID/Entropy */
   2087     bcmSwitchMacroFlowLoadBalanceEntropyHashMaxOffset = 1027, /* Maximum offset value to be used in
   2088                                            RTAG7 macroflow for Load Balance
   2089                                            ID/Entropy */
   2090     bcmSwitchMacroFlowLoadBalanceEntropyHashStrideOffset = 1028, /* Offset increment value to be used in
   2091                                            RTAG7 macroflow for Load Balance
   2092                                            ID/Entropy */
   2093     bcmSwitchCrTransactionStart = 1029, /* If working in on demand CR, use this
   2094                                            to start a new transaction. */
   2095     bcmSwitchUdpTunnelIPv4DstPort = 1030, /* UDP destination port for IPv4
   2096                                            encapsulation in UDP tunnel. */
   2097     bcmSwitchUdpTunnelIPv6DstPort = 1031, /* UDP destination port for IPv6
   2098                                            encapsulation in UDP tunnel. */
   2099     bcmSwitchUdpTunnelMplsDstPort = 1032, /* UDP destination port for MPLS
   2100                                            encapsulation in UDP tunnel. */
   2101     bcmSwitchECMPSecondHierHashOffset = 1033, /* BCM88680: ECMP second hierarchy Hash
   2102                                            key is barrel shifted by this value. */
   2103     bcmSwitchECMPSecondHierHashConfig = 1034, /* BCM88680: Selects hashing polynomial
   2104                                            for the second hierarchy of the ECMP. */
   2105     bcmSwitchIngressRateLimitMpps = 1035, /* Limit ingress rate in Mega Packets
   2106                                            Per Second. */
   2107     bcmSwitchMirrorSnoopForwardOriginalWhenDropped = 1036, /* When dropping the mirror and/or snoop
   2108                                            packet copies due to FIFOs being
   2109                                            full, do not drop the original
   2110                                            (forward) copy */
   2111     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesExponent = 1037, /* The exponent used in the calculation
   2112                                            of exponentially weighted moving
   2113                                            average of historical member bytes in
   2114                                            physical queue. */
   2115     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesDecreaseReset = 1038, /* If set, the historical member bytes
   2116                                            in physical queue is updated with the
   2117                                            instantaneous value if the latter is
   2118                                            smaller. */
   2119     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesMinThreshold = 1039, /* The minimum threshold, in bytes, used
   2120                                            to quantize historical member bytes
   2121                                            in physical queue. */
   2122     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesMaxThreshold = 1040, /* The maximum threshold, in bytes, used
   2123                                            to quantize historical member bytes
   2124                                            in physical queue. */
   2125     bcmSwitchTrunkDynamicPhysicalQueuedBytesExponent = 1041, /* The exponent used in the calculation
   2126                                            of exponentially weighted moving
   2127                                            average of historical member bytes in
   2128                                            physical queue. */
   2129     bcmSwitchTrunkDynamicPhysicalQueuedBytesDecreaseReset = 1042, /* If set, the historical member bytes
   2130                                            in physical queue is updated with the
   2131                                            instantaneous value if the latter is
   2132                                            smaller. */
   2133     bcmSwitchTrunkDynamicPhysicalQueuedBytesMinThreshold = 1043, /* The minimum threshold, in bytes, used
   2134                                            to quantize historical member bytes
   2135                                            in physical queue. */
   2136     bcmSwitchTrunkDynamicPhysicalQueuedBytesMaxThreshold = 1044, /* The maximum threshold, in bytes, used
   2137                                            to quantize historical member bytes
   2138                                            in physical queue. */
   2139     bcmSwitchEcmpDynamicPhysicalQueuedBytesExponent = 1045, /* The exponent used in the calculation
   2140                                            of exponentially weighted moving
   2141                                            average of historical member bytes in
   2142                                            physical queue. */
   2143     bcmSwitchEcmpDynamicPhysicalQueuedBytesDecreaseReset = 1046, /* If set, the historical member bytes
   2144                                            in physical queue is updated with the
   2145                                            instantaneous value if the latter is
   2146                                            smaller. */
   2147     bcmSwitchEcmpDynamicPhysicalQueuedBytesMinThreshold = 1047, /* The minimum threshold, in bytes, used
   2148                                            to quantize historical member bytes
   2149                                            in physical queue. */
   2150     bcmSwitchEcmpDynamicPhysicalQueuedBytesMaxThreshold = 1048, /* The maximum threshold, in bytes, used
   2151                                            to quantize historical member bytes
   2152                                            in physical queue. */
   2153     bcmSwitchFabricTrunkDynamicRandomSeed = 1049, /* Seed for RNG used in HiGig Trunk
   2154                                            Dynamic Load Balancing */
   2155     bcmSwitchTrunkDynamicRandomSeed = 1050, /* Seed for RNG used in Trunk Dynamic
   2156                                            Load Balancing */
   2157     bcmSwitchEcmpDynamicRandomSeed = 1051, /* Seed for RNG used in ECMP Dynamic
   2158                                            Load Balancing */
   2159     bcmSwitchHashMPLSExcludeReservedLabel = 1052, /* To exclude all reserved labels from
   2160                                            hash computation */
   2161     bcmSwitchMplsNonIpPayloadDefaultEcn = 1053, /* To set the default ECN for L2 MPLS
   2162                                            termination flows for non-IP payloads */
   2163     bcmSwitchECMPHashBitCountSelect = 1054, /* To select the most significant bits
   2164                                            of the 16-bit ECMP hash value before
   2165                                            the modulo function */
   2166     bcmSwitchEcnIpPayloadResponsive = 1055, /* To set to use payload IP header's IP
   2167                                            protocol field to determine
   2168                                            responsive attribute of the packet
   2169                                            for transiting tunnels */
   2170     bcmSwitchHashMultiMoveDepthExactMatch = 1056, /* Maximum moves in multi hash mode for
   2171                                            FPEM tables. */
   2172     bcmSwitchCrAbort = 1057,            /* If working in on demand CR, use this
   2173                                            to abort the current transaction. */
   2174     bcmSwitchLIUdpSrcPortSet = 1058,    /* Set UDP source port for Lawful
   2175                                            Interception tunnel. */
   2176     bcmSwitchRoce1Ethertype = 1059,     /* Set l2 ethertype to match RoCEv1
   2177                                            packets. */
   2178     bcmSwitchRoce2UdpDstPort = 1060,    /* Set udp dest port to match RoCEv2
   2179                                            packets. */
   2180     bcmSwitchHashUseFlowSelRoce2Ecmp = 1061, /* Enable/Disable flow based hashing for
   2181                                            RoCEv2 ECMP. */
   2182     bcmSwitchHashSelectControlExtended = 1062, /* Extended hash field selection control */
   2183     bcmSwitchHashField0Roce1FlowLabel = 1063, /* Enable RoCEv1 GRH(Global Route
   2184                                            Header) flow label for Block A Hash
   2185                                            Field Selection. */
   2186     bcmSwitchHashField1Roce1FlowLabel = 1064, /* Enable RoCEv1 GRH(Global Route
   2187                                            Header) flow label for Block B Hash
   2188                                            Field Selection. */
   2189     bcmSwitchHashField0Roce2FlowLabel = 1065, /* Enable RoCEv2 IPv6 flow label for
   2190                                            Block A Hash Field Selection. */
   2191     bcmSwitchHashField1Roce2FlowLabel = 1066, /* Enable RoCEv2 IPv6 flow label for
   2192                                            Block B Hash Field Selection. */
   2193     bcmSwitchHashRoce1Field0 = 1067,    /* Hash block A field selection for
   2194                                            RoCEv1 packets. */
   2195     bcmSwitchHashRoce1Field1 = 1068,    /* Hash block B field selection for
   2196                                            RoCEv1 packets. */
   2197     bcmSwitchHashRoce2IP4Field0 = 1069, /* Hash block A field selection for
   2198                                            RoCEv2 IPv4 packets. */
   2199     bcmSwitchHashRoce2IP4Field1 = 1070, /* Hash block B field selection for
   2200                                            RoCEv2 IPv4 packets. */
   2201     bcmSwitchHashRoce2IP6Field0 = 1071, /* Hash block A field selection for
   2202                                            RoCEv2 IPv6 packets. */
   2203     bcmSwitchHashRoce2IP6Field1 = 1072, /* Hash block B field selection for
   2204                                            RoCEv2 IPv6 packets. */
   2205     bcmSwitchEcmpRoce2HashOffset = 1073, /* Enhanced hash selection for RoCEv2
   2206                                            ECMP port based hashing. */
   2207     bcmSwitchVxlanUdpDestPortSet1 = 1074, /* Set UDP Destination port for VXLAN
   2208                                            (alternate). */
   2209     bcmSwitchVxlanEntropyEnableIP6 = 1075, /* Set IPv6 Flow Label for VXLAN Tunnel
   2210                                            Entropy (Value = TRUE/FALSE). */
   2211     bcmSwitchE2EFCReceiveDestMacOui = 1076, /* E2EFC message MAC upper 3 bytes to
   2212                                            match, only for E2EFC RX. */
   2213     bcmSwitchE2EFCReceiveDestMacNonOui = 1077, /* E2EFC message MAC lower 3 bytes to
   2214                                            match, only for E2EFC RX. */
   2215     bcmSwitchE2EFCReceiveEtherType = 1078, /* E2EFC message EtherType/length to
   2216                                            match, only for E2EFC RX. */
   2217     bcmSwitchE2EFCReceiveOpcode = 1079, /* E2EFC message opcode to match, only
   2218                                            for E2EFC RX. */
   2219     bcmSwitchHashUseFlowSelEcmpOverlay = 1080, /* Enable/Disable flow based hashing for
   2220                                            ECMP LEVEL 1. */
   2221     bcmSwitchMplsSpeculativeNibbleMap = 1081, /* Map first nibble after MPLS header to
   2222                                            speculative next protocol. */
   2223     bcmSwitchIpmcSameFwdDmnThreshold = 1082, /* Set the threshold for 1:1 mapped
   2224                                            VLANs and VPNs for IPMC packet flow
   2225                                            for RIOT */
   2226     bcmSwitchHashUseFlowSelVpTrunk = 1083, /* Enable/Disable flow based hashing for
   2227                                            VP Trunk. */
   2228     bcmSwitchHashUseFlowSelTrunkResilientHash = 1084, /* Enable/Disable flow based hashing for
   2229                                            Trunk RH. */
   2230     bcmSwitchMeterMef10dot3Enable = 1085, /* Enable meter mef 10.3 mode. */
   2231     bcmSwitchHashMultiMoveDepthVlanTranslate1 = 1086, /* Maximum moves in multi hash mode for
   2232                                            vlan translate1 tables. */
   2233     bcmSwitchHashMultiMoveDepthVlanTranslate2 = 1087, /* Maximum moves in multi hash mode for
   2234                                            vlan translate2 tables. */
   2235     bcmSwitchHashMultiMoveDepthEgressVlanTranslate1 = 1088, /* Maximum moves in multi hash mode for
   2236                                            vlan egress translate1 tables. */
   2237     bcmSwitchHashMultiMoveDepthEgressVlanTranslate2 = 1089, /* Maximum moves in multi hash mode for
   2238                                            vlan egress translate2 tables. */
   2239     bcmSwitchIntL4DestPort1 = 1090,     /* INT(Inband Network Telemetry) packet
   2240                                            UDP destination port1. */
   2241     bcmSwitchIntL4DestPort2 = 1091,     /* INT packet UDP destination port2. */
   2242     bcmSwitchIntProbeMarker1 = 1092,    /* INT header ProbeMarker1. */
   2243     bcmSwitchIntProbeMarker2 = 1093,    /* INT header ProbeMarker2. */
   2244     bcmSwitchIntVersion = 1094,         /* INT header version. */
   2245     bcmSwitchIntRequestVectorValue = 1095, /* INT header request vector. */
   2246     bcmSwitchIntRequestVectorMask = 1096, /* INT header request vector mask. */
   2247     bcmSwitchIntSwitchId = 1097,        /* INT payload switch ID. */
   2248     bcmSwitchIntEgressTimeDelta = 1098, /* Time in nano-second that is added to
   2249                                            current time stamp to adjust latency
   2250                                            from EP to port. */
   2251     bcmSwitchIntHopLimitCpuEnable = 1099, /* Enable copy to CPU on hop limit
   2252                                            condition. */
   2253     bcmSwitchIntTurnAroundCpuEnable = 1100, /* Enable copy to CPU on egress port as
   2254                                            turnaround port. */
   2255     bcmSwitchIntMaxPayloadLength = 1101, /* INT max payload length. Only apply to
   2256                                            devices using global value */
   2257     bcmSwitchForwardLookupNotFoundTrap = 1102, /* Set foward lookup not found Trap ID. */
   2258     bcmSwitchEtherTypeCustom1 = 1103,   /* Set Custom_1 Ethernet type. */
   2259     bcmSwitchEtherTypeCustom2 = 1104,   /* Set Custom_2 Ethernet type. */
   2260     bcmSwitchL3LpmHitbitEnable = 1105,  /* Enable hit bit lookup update in the
   2261                                            LPM table. */
   2262     bcmSwitchMplsCtrlPktToCpu = 1106,   /* MPLS control packets to CPU. */
   2263     bcmSwitchInvalidTpidToCpu = 1107,   /* Invalid tag protocol ID packets to
   2264                                            CPU. */
   2265     bcmSwitchFlowSelectMissToCpu = 1108, /* Packets that miss flow selection to
   2266                                            CPU. */
   2267     bcmSwitchL3HdrMismatchToCpu = 1109, /* L3 header mismatch packets to CPU. */
   2268     bcmSwitchMeterTrafficClass = 1110,  /* Meter Traffic Class value mapped from
   2269                                            internal Traffic Class */
   2270     bcmSwitchRoeEthertype = 1111,       /* Ethertype value for ROE frames after
   2271                                            tunnel decap. */
   2272     bcmSwitchRoeCustomEthertype = 1112, /* Ethertype value for ROE Custom frames
   2273                                            after tunnel decap. */
   2274     bcmSwitchRoeUdpDestPort = 1113,     /* Set UDP Destination port for ROE
   2275                                            frames. */
   2276     bcmSwitchRoeCustomUdpDestPort = 1114, /* Set UDP Destination port for ROE
   2277                                            Custom frames. */
   2278     bcmSwitchOamOlpHeaderAdd = 1115,    /* Enable or disable OLP header addition
   2279                                            to OAM packets copied to CPU. OLP
   2280                                            header addition is enabled by default
   2281                                            for OAM packets. Please note that
   2282                                            Embedded applications such as
   2283                                            Ethernet LM/DM and MPLS LM/DM will
   2284                                            not work correctly if OLP header
   2285                                            addition is disabled. */
   2286     bcmSwitchL2FreezeMode = 1116,       /* Use global forward mode for higher
   2287                                            efficiency or per port no learn mode
   2288                                            if some ports shouldn't forward. */
   2289     bcmSwitchL3McRpfDefaultRoute = 1117, /* Enable SIP base MC RPF default route
   2290                                            check. */
   2291     bcmSwitchIngParseL2TunnelTermArp = 1118, /* Enable parsing of payload ARP header
   2292                                            for L2 tunnel terminated packets. */
   2293     bcmSwitchIngParseL2TunnelTermRarp = 1119, /* Enable parsing of payload RARP header
   2294                                            for L2 tunnel terminated packets. */
   2295     bcmSwitchNoneEthernetPacketMeterPtr = 1120, /* Ethernet meter pointer for none
   2296                                            Ethernet packets. */
   2297     bcmSwitchEtherDscpRemark = 1121,    /* Enable copying IP header.TOS to
   2298                                            In-DSCP-EXP. */
   2299     bcmSwitchDosAttackTcpFirstOption = 1122, /* Configure TCP option number for
   2300                                            switch control
   2301                                            bcmSwitchDosAttackTcpFlagsSynOption.
   2302                                            Only first option in the TCP option
   2303                                            can be checked and compared to with
   2304                                            this value. */
   2305     bcmSwitchDosAttackInnerTcpFirstOption = 1123, /* Configure Inner TCP option number for
   2306                                            switch control
   2307                                            bcmSwitchDosAttackTcpFlagsSynOption.
   2308                                            Only first option in the TCP option
   2309                                            can be checked and compared to with
   2310                                            this value. */
   2311     bcmSwitchDosAttackTcpFlagsMask = 1124, /* Configure TCP control flags valid
   2312                                            bits for Dos Attack. This value is
   2313                                            used for generating Dos Attack for
   2314                                            bcmSwitchDosAttackTcpFlagsZero and/or
   2315                                            bcmSwitchDosAttackTcpFlagsResvdNonZero. */
   2316     bcmSwitchDosAttackInnerTcpFlagsMask = 1125, /* Configure Inner TCP control flags
   2317                                            valid bits for Dos Attack. This value
   2318                                            is used for generating Dos Attack for
   2319                                            bcmSwitchDosAttackTcpFlagsZero and/or
   2320                                            bcmSwitchDosAttackTcpFlagsResvdNonZero. */
   2321     bcmSwitchDosAttackTcpFlagsSR = 1126, /* Enable DOS attack checking for TCP
   2322                                            packet with SYN and RST Flags set. */
   2323     bcmSwitchDosAttackTcpFlagsZero = 1127, /* Enable DOS attack checking for TCP
   2324                                            packet in which TCP Control Flag is
   2325                                            Zero. Switch Control
   2326                                            bcmSwitchDosAttackTcpFlagsMask and/or
   2327                                            bcmSwitchDosAttackInnerTcpFlagsMask
   2328                                            must be configured to determine valid
   2329                                            TCP Flag bits. */
   2330     bcmSwitchDosAttackTcpFlagsSynOption = 1128, /* Enable DOS attack checking for TCP
   2331                                            packet with SYN Flag set and option
   2332                                            number in payload. Switch Control
   2333                                            bcmSwitchDosAttackTcpFirstOption
   2334                                            and/or
   2335                                            bcmSwitchDosAttackInnerTcpFirstOption
   2336                                            must be set required option number
   2337                                            for matching. */
   2338     bcmSwitchDosAttackTcpFlagsSynFirstFrag = 1129, /* Enable DOS attack checking for TCP
   2339                                            packet with SYN Flags set in first
   2340                                            fragment. */
   2341     bcmSwitchDosAttackTcpFlagsFinNoAck = 1130, /* Enable DOS attack checking for TCP
   2342                                            packet with flags FIN set and ACK not
   2343                                            set. */
   2344     bcmSwitchDosAttackTcpFlagsRstNoAck = 1131, /* Enable DOS attack checking for TCP
   2345                                            packet with flags RST set and ACK not
   2346                                            set. */
   2347     bcmSwitchDosAttackTcpFlagsNoSFRA = 1132, /* Enable DOS attack checking for TCP
   2348                                            packet with no SYN, FIN, RST, ACK
   2349                                            Flag set. */
   2350     bcmSwitchDosAttackTcpFlagsUrgNoUrgPtr = 1133, /* Enable DOS attack checking for TCP
   2351                                            packet with URG flag set and Null
   2352                                            Urgent Pointer. */
   2353     bcmSwitchDosAttackTcpFlagsNoUrgWithUrgPtr = 1134, /* Enable DOS attack checking for TCP
   2354                                            packet with URG flag not set and
   2355                                            non-null Urgent Pointer. */
   2356     bcmSwitchDosAttackTcpDstPortZero = 1135, /* Enable DOS attack checking for TCP
   2357                                            packet with Destination port as zero. */
   2358     bcmSwitchDosAttackTcpSrcPortZero = 1136, /* Enable DOS attack checking for TCP
   2359                                            packet with Source Port as zero. */
   2360     bcmSwitchDosAttackTcpFlagsResvdNonZero = 1137, /* Enable DOS attack checking for TCP
   2361                                            packet with Reserved flags non-zero.
   2362                                            Switch Control
   2363                                            bcmSwitchDosAttackTcpFlagsMask and/or
   2364                                            bcmSwitchDosAttackInnerTcpFlagsMask
   2365                                            must be configured to determine
   2366                                            reserved flag bits. */
   2367     bcmSwitchDosAttackTcpV4DstBcast = 1138, /* Enable DOS attack checking for TCP
   2368                                            packet with Ipv4 Broadcast DIP
   2369                                            address. */
   2370     bcmSwitchDosAttackTcpFlagsAck = 1139, /* Enable DOS attack checking for TCP
   2371                                            packet with ACK flag set and
   2372                                            Acknowledgement number is zero. */
   2373     bcmSwitchMirrorPsampFormat2Epoch = 1140, /* Set EPOCH value in PSAMP format2
   2374                                            header */
   2375     bcmSwitchL2StationExtendedMode = 1141, /* Set L2 station extended memory global
   2376                                            mode. */
   2377     bcmSwitchHashSeed = 1142,           /* Set the seed of the selected hash
   2378                                            function. */
   2379     bcmSwitchLayerRecordModeSelection = 1143, /* Select the working mode of the layer
   2380                                            records. */
   2381     bcmSwitchECMPThirdHierHashConfig = 1144, /* Selects hashing polynomial for the
   2382                                            third hierarchy of the ECMP. */
   2383     bcmSwitchNwkHashConfig = 1145,      /* Selects hashing polynomial for the
   2384                                            network load balancing key
   2385                                            generation. */
   2386     bcmSwitchMplsStack0HashSeed = 1146, /* Set the seed of the first MPLS stack
   2387                                            hash. */
   2388     bcmSwitchMplsStack1HashSeed = 1147, /* Set the seed of the second MPLS stack
   2389                                            hash. */
   2390     bcmSwitchParserHashSeed = 1148,     /* Set the seed of the parser stage
   2391                                            hashing. */
   2392     bcmSwitchMplsSpeculativeParse = 1149, /* Enable/disable the MPLS speculative
   2393                                            parsing. */
   2394     bcmSwitchExternalTcamSync = 1150,   /* Enum for external TCAM sync. */
   2395     bcmSwitchArpMyIp1 = 1151,           /* My-ARP trap configuration of IP 1. */
   2396     bcmSwitchArpMyIp2 = 1152,           /* My-ARP trap configuration of IP 2. */
   2397     bcmSwitchArpIgnoreDa = 1153,        /* ARP trap configuration of Ignore DA. */
   2398     bcmSwitchNdpMyIp1 = 1154,           /* My-NDP trap configuration of IP 1. */
   2399     bcmSwitchNdpMyIp2 = 1155,           /* My-NDP trap configuration of IP 2. */
   2400     bcmSwitchIcmpIgnoreDa = 1156,       /* ICMP trap configuration of Ignore DA. */
   2401     bcmSwitchVxlanEvpnEnable = 1157,    /* enable/disable VXLAN EVPN. */
   2402     bcmSwitchHashDualMoveDepthIngVpVlanMember = 1158, /* Maximum moves in dual hash mode for
   2403                                            ING_VP_VLAN_MEMBERSHIP table. */
   2404     bcmSwitchHashDualMoveDepthEgrVpVlanMember = 1159, /* Maximum moves in dual hash mode for
   2405                                            EGR_VP_VLAN_MEMBERSHIP table. */
   2406     bcmSwitchGpeEntropyEnable = 1160,   /* Set UDP Source port for GPE Tunnel
   2407                                            Entropy(Value = TRUE/FALSE). */
   2408     bcmSwitchGpeUdpDestPortSet = 1161,  /* Set UDP Destination port for GPE. */
   2409     bcmSwitchGeneveEntropyEnable = 1162, /* Set UDP Source port for GENEVE Tunnel
   2410                                            Entropy(Value = TRUE/FALSE). */
   2411     bcmSwitchGeneveUdpDestPortSet = 1163, /* Set UDP Destination port for GENEVE. */
   2412     bcmSwitchBfdRxDisable = 1164,       /* Disable BFD Rx packet processing. */
   2413     bcmSwitchDescCommit = 1165,         /* Commit descriptor DMA chain to HW. */
   2414     bcmSwitchDlbMonitorIngressRandomSeed = 1166, /* Set RNG seed for DLB flow monitoring */
   2415     bcmSwitchCounterAdjustEgressTm = 1167, /* Counter compensation specifically for
   2416                                            ETM. */
   2417     bcmSwitchCounterAdjustEgressPp = 1168, /* Counter compensation specifically for
   2418                                            ERPP. */
   2419     bcmSwitchTagPcpDeiSrc = 1169,       /* Set Source of PCP_DEi for SIT */
   2420     bcmSwitchBfdMyDipDestination = 1170, /* Set destination for BFD IP address
   2421                                            forwarding. */
   2422     bcmSwitchEndToEndLatencyPerDestinationPort = 1171, /* Define if end to end latency is made
   2423                                            per destination port or not. */
   2424     bcmSwitchExternalTcamInit = 1172,   /* Init/De-init External TCAM. */
   2425     bcmSwitchHashMultiMoveDepthL3Tunnel = 1173, /* Maximum moves in multi hash mode for
   2426                                            L3 Tunnel tables. */
   2427     bcmSwitchGbpEtherType = 1174,       /* Specify the ethertype to be used for
   2428                                            GBP protocol */
   2429     bcmSwitchVxlanUdpSrcPortSelect = 1175, /* Select UDP source port for VxLAN
   2430                                            tunnel */
   2431     bcmSwitchGpeUdpSrcPortSelect = 1176, /* Select UDP source port for GPE tunnel */
   2432     bcmSwitchGeneveUdpSrcPortSelect = 1177, /* Select UDP source port for GENEVE
   2433                                            tunnel */
   2434     bcmSwitchPreserveOtagBeforeItag = 1178, /* Control for preserved OTAG order wrt.
   2435                                            ITAG */
   2436     bcmSwitchMirrorCpuCosq = 1179,      /* Mirror COS for CPU port as MTP */
   2437     bcmSwitchIntProbeMarkerEnable = 1180, /* INT packet ProbeMarker(UDF) parser
   2438                                            Enable. */
   2439     bcmSwitchIntL4DestPortEnable = 1181, /* INT packet UDP destination port
   2440                                            parser Enable. */
   2441     bcmSwitchFtmhEtherType = 1182,      /* Set FTMH header Ethertype to match */
   2442     bcmSwitchGbpSidDidMcastLookupMissClassid = 1183, /* Default class id to be used when
   2443                                            there is a miss in GBP SID_DID lookup
   2444                                            for multicast flows. */
   2445     bcmSwitchCustomOuterEthertype1 = 1184, /* Outer Ethertype 1 used for extracting
   2446                                            packet fields in custom applications. */
   2447     bcmSwitchCustomOuterEthertype2 = 1185, /* Outer Ethertype 2 used for extracting
   2448                                            packet fields in custom applications. */
   2449     bcmSwitchCustomInnerEthertype1 = 1186, /* Inner Ethertype 1 used for extracting
   2450                                            packet fields in custom applications. */
   2451     bcmSwitchCustomInnerEthertype2 = 1187, /* Inner Ethertype 2 used for extracting
   2452                                            packet fields in custom applications. */
   2453     bcmSwitchCustomOuterProtocolId1 = 1188, /* Outer Protocol ID 1 used for
   2454                                            extracting packet fields in custom
   2455                                            applications. */
   2456     bcmSwitchCustomOuterProtocolId2 = 1189, /* Outer Protocol ID 2 used for
   2457                                            extracting packet fields in custom
   2458                                            applications. */
   2459     bcmSwitchCustomInnerProtocolId1 = 1190, /* Inner Protocol ID 1 used for
   2460                                            extracting packet fields in custom
   2461                                            applications. */
   2462     bcmSwitchCustomInnerProtocolId2 = 1191, /* Inner Protocol ID 2 used for
   2463                                            extracting packet fields in custom
   2464                                            applications. */
   2465     bcmSwitchCustomOuterUdpDstPort1 = 1192, /* Outer UDP Dest Port 1 used for
   2466                                            extracting packet fields in custom
   2467                                            applications. */
   2468     bcmSwitchCustomOuterUdpDstPort2 = 1193, /* Outer UDP Dest Port 2 used for
   2469                                            extracting packet fields in custom
   2470                                            applications. */
   2471     bcmSwitchCustomInnerUdpDstPort1 = 1194, /* Inner UDP Dest Port 1 used for
   2472                                            extracting packet fields in custom
   2473                                            applications. */
   2474     bcmSwitchCustomInnerUdpDstPort2 = 1195, /* Inner UDP Dest Port 2 used for
   2475                                            extracting packet fields in custom
   2476                                            applications. */
   2477     bcmSwitchReservedEgressNextHop = 1196, /* Set reserved egress next hop, which
   2478                                            is used to generate L2 header for
   2479                                            IPMC packet that does not have L2
   2480                                            header after tunnel termination. */
   2481     bcmSwitchConcatAppHeader = 1197,    /* Concat app header to master key in
   2482                                            ELK. */
   2483     bcmSwitchVxlanGpeUdpDestPortSet = 1198, /* Set UDP Destination port for
   2484                                            VXLAN-GPE. */
   2485     bcmSwitchSystemPortOverride = 1199, /* When set, port group id used for 
   2486                                            egress VLAN translation is replaced 
   2487                                            with destination global logical port
   2488                                            (mod, port). */
   2489     bcmSwitchSRV6EgressPSPEnable = 1200, /* When set, device supports SRv6 Egress
   2490                                            PSP mode. */
   2491     bcmSwitchSRV6ReducedModeEnable = 1201, /* When set, device supports SRv6
   2492                                            Reduced encapsulation mode. */
   2493     bcmSwitchHashL4Field = 1202,        /* Hash selections for L4 headers. */
   2494     bcmSwitchL3UcLargeNATEnable = 1203, /* Global enable for large scale L3
   2495                                            unicast NAT updates. */
   2496     bcmSwitchL3UcLargeDNAT = 1204,      /* Enable large scale DNAT update for
   2497                                            the specified L3UC packet. */
   2498     bcmSwitchL3UcLargeSNAT = 1205,      /* Enable large scale SNAT update for
   2499                                            specified L3UC packet. */
   2500     bcmSwitchL3UcLargeDNATSNAT = 1206,  /* Enable large scale DNAT and SNAT
   2501                                            updates for specified L3UC packet. */
   2502     bcmSwitchL3UcLargeDNAPT = 1207,     /* Enable large scale DNAPT update for
   2503                                            specified L3UC packet. */
   2504     bcmSwitchL3UcLargeSNAPT = 1208,     /* Enable large scale SNAPT update for
   2505                                            specified L3UC packet. */
   2506     bcmSwitchL3UcLargeDNAPTSNAPT = 1209, /* Enable large scale DNAPT and SNAPT
   2507                                            updates for specified L3UC packet
   2508                                            type. */
   2509     bcmSwitchL3McLargeNATEnable = 1210, /* Global enable for large scale L3
   2510                                            multicast NAT updates. */
   2511     bcmSwitchL3McLargeNATRewriteType0 = 1211, /* Specifies first of 3 rewrite types
   2512                                            for large scale multicast NAT
   2513                                            updates. */
   2514     bcmSwitchL3McLargeNATRewriteType1 = 1212, /* Specifies second of 3 rewrite types
   2515                                            for large scale multicast NAT
   2516                                            updates. */
   2517     bcmSwitchL3McLargeNATRewriteType2 = 1213, /* Specifies final rewrite type for
   2518                                            large scale multicast NAT updates. */
   2519     bcmSwitchL2ChangeFieldsEnable = 1214, /* Enable L2 Change Fields for VFI
   2520                                            switched packets. */
   2521     bcmSwitchPcieHotSwapDisable = 1215, /* When set value=1 PCIE Hot swap
   2522                                            manager is disabled. Applicable for
   2523                                            CMICX based devices only */
   2524     bcmSwitchIPv4DoNotVerifyIncomingChecksum = 1216, /* Allow incremental checksum update
   2525                                            irrespective of the incoming value
   2526                                            for IPv4 packets. */
   2527     bcmSwitch__Count = 1217             /* Must be last.  Not a usable value. */
   2528 } bcm_switch_control_t;
   2529 
   2530 #define BCM_SWITCH_CONTROL_STR \
   2531     "HgHdrErrToCpu", \
   2532     "ClassTagPacketsToCpu", \
   2533     "IpmcTunnelToCpu", \
   2534     "StationMoveOverLearnLimitToCpu", \
   2535     "McastUnknownErrToCpu", \
   2536     "LearnLimitPriority", \
   2537     "ControlOpcodePriority", \
   2538     "CpuProtoBpduPriority", \
   2539     "CpuProtoArpPriority", \
   2540     "CpuProtoIgmpPriority", \
   2541     "CpuProtoDhcpPriority", \
   2542     "CpuProtoIpmcReservedPriority", \
   2543     "CpuProtoIpOptionsPriority", \
   2544     "CpuProtoExceptionsPriority", \
   2545     "CpuProtocolPrio", \
   2546     "CpuUnknownPrio", \
   2547     "CpuSamplePrio", \
   2548     "CpuDefaultPrio", \
   2549     "L2StaticMoveToCpu", \
   2550     "UnknownIpmcToCpu", \
   2551     "UnknownMcastToCpu", \
   2552     "UnknownUcastToCpu", \
   2553     "NonIpL3ErrToCpu", \
   2554     "L3HeaderErrToCpu", \
   2555     "UnknownVlanToCpu", \
   2556     "UnknownL3SrcToCpu", \
   2557     "UnknownL3DestToCpu", \
   2558     "IpmcPortMissToCpu", \
   2559     "IpmcErrorToCpu", \
   2560     "VCLabelMissToCpu", \
   2561     "SourceRouteToCpu", \
   2562     "SampleIngressRandomSeed", \
   2563     "SampleEgressRandomSeed", \
   2564     "CpuFpCopyPrio", \
   2565     "CpuIcmpRedirectPrio", \
   2566     "CpuMtuFailPrio", \
   2567     "CpuMirrorPrio", \
   2568     "CpuLookupFpCopyPrio", \
   2569     "L2NonStaticMoveToCpu", \
   2570     "V6L3ErrToCpu", \
   2571     "V6L3DstMissToCpu", \
   2572     "V6L3LocalLinkDrop", \
   2573     "V4L3ErrToCpu", \
   2574     "V4L3DstMissToCpu", \
   2575     "TunnelErrToCpu", \
   2576     "MartianAddrToCpu", \
   2577     "MartianAddr", \
   2578     "L3UcTtlErrToCpu", \
   2579     "L3SlowpathToCpu", \
   2580     "IpmcTtlErrToCpu", \
   2581     "DosAttackToCpu", \
   2582     "DosAttackSipEqualDip", \
   2583     "DosAttackMinTcpHdrSize", \
   2584     "DosAttackV4FirstFrag", \
   2585     "DosAttackTcpFlags", \
   2586     "DosAttackL4Port", \
   2587     "DosAttackTcpFrag", \
   2588     "DosAttackIcmp", \
   2589     "DosAttackIcmpV4", \
   2590     "DosAttackIcmpV6", \
   2591     "DosAttackIcmpPktOversize", \
   2592     "DosAttackMACSAEqualMACDA", \
   2593     "DosAttackIcmpV6PingSize", \
   2594     "DosAttackIcmpFragments", \
   2595     "DosAttackTcpOffset", \
   2596     "DosAttackUdpPortsEqual", \
   2597     "DosAttackTcpPortsEqual", \
   2598     "DosAttackTcpFlagsSF", \
   2599     "DosAttackTcpFlagsFUP", \
   2600     "DosAttackTcpHdrPartial", \
   2601     "DosAttackPingFlood", \
   2602     "DosAttackSynFlood", \
   2603     "DosAttackTcpSmurf", \
   2604     "DosAttackTcpXMas", \
   2605     "DosAttackL3Header", \
   2606     "IcmpRedirectToCpu", \
   2607     "MplsSequenceErrToCpu", \
   2608     "MplsLabelMissToCpu", \
   2609     "MplsTtlErrToCpu", \
   2610     "MplsInvalidL3PayloadToCpu", \
   2611     "MplsInvalidActionToCpu", \
   2612     "SharedVlanMismatchToCpu", \
   2613     "L3SrcUrpfErrToCpu", \
   2614     "GreKeyToVlan", \
   2615     "ArpReplyToCpu", \
   2616     "ArpReplyDrop", \
   2617     "ArpRequestToCpu", \
   2618     "ArpRequestDrop", \
   2619     "ArpReplyMyStationL2ToCPU", \
   2620     "NdPktToCpu", \
   2621     "NdPktDrop", \
   2622     "McastFloodBlocking", \
   2623     "IgmpPktToCpu", \
   2624     "IgmpPktDrop", \
   2625     "DhcpPktToCpu", \
   2626     "DhcpPktDrop", \
   2627     "MldPktToCpu", \
   2628     "MldPktDrop", \
   2629     "V4ResvdMcPktToCpu", \
   2630     "V4ResvdMcPktDrop", \
   2631     "V4ResvdMcPktFlood", \
   2632     "V6ResvdMcPktToCpu", \
   2633     "V6ResvdMcPktDrop", \
   2634     "V6ResvdMcPktFlood", \
   2635     "IgmpReportLeaveToCpu", \
   2636     "IgmpReportLeaveDrop", \
   2637     "IgmpReportLeaveFlood", \
   2638     "IgmpQueryToCpu", \
   2639     "IgmpQueryDrop", \
   2640     "IgmpQueryFlood", \
   2641     "IgmpUnknownToCpu", \
   2642     "IgmpUnknownDrop", \
   2643     "IgmpUnknownFlood", \
   2644     "MldReportDoneToCpu", \
   2645     "MldReportDoneDrop", \
   2646     "MldReportDoneFlood", \
   2647     "MldQueryToCpu", \
   2648     "MldQueryDrop", \
   2649     "MldQueryFlood", \
   2650     "IpmcV4RouterDiscoveryToCpu", \
   2651     "IpmcV4RouterDiscoveryDrop", \
   2652     "IpmcV4RouterDiscoveryFlood", \
   2653     "IpmcV6RouterDiscoveryToCpu", \
   2654     "IpmcV6RouterDiscoveryDrop", \
   2655     "IpmcV6RouterDiscoveryFlood", \
   2656     "DirectedMirroring", \
   2657     "PktAge", \
   2658     "McastFloodDefault", \
   2659     "ParityErrorToCpu", \
   2660     "L3MtuFailToCpu", \
   2661     "MeterAdjust", \
   2662     "CounterAdjust", \
   2663     "MeterAdjustInterframeGap", \
   2664     "HashL2", \
   2665     "HashL3", \
   2666     "HashMultipath", \
   2667     "HashControl", \
   2668     "FieldMultipathHashSelect", \
   2669     "FieldMultipathHashSeed", \
   2670     "MirrorStackMode", \
   2671     "MirrorSrcModCheck", \
   2672     "MirrorUnmarked", \
   2673     "DestPortHGTrunk", \
   2674     "ColorSelect", \
   2675     "ModuleLoopback", \
   2676     "SrcModBlockMirrorCopy", \
   2677     "SrcModBlockMirrorOnly", \
   2678     "HashSeed0", \
   2679     "HashSeed1", \
   2680     "HashField0PreProcessEnable", \
   2681     "HashField1PreProcessEnable", \
   2682     "HashField0Config", \
   2683     "HashField0Config1", \
   2684     "HashField1Config", \
   2685     "HashField1Config1", \
   2686     "MacroFlowHashFieldConfig", \
   2687     "HashSelectControl", \
   2688     "HashIP4Field0", \
   2689     "HashIP4Field1", \
   2690     "HashIP4TcpUdpField0", \
   2691     "HashIP4TcpUdpField1", \
   2692     "HashIP4TcpUdpPortsEqualField0", \
   2693     "HashIP4TcpUdpPortsEqualField1", \
   2694     "HashIP6Field0", \
   2695     "HashIP6Field1", \
   2696     "HashIP6TcpUdpField0", \
   2697     "HashIP6TcpUdpField1", \
   2698     "HashIP6TcpUdpPortsEqualField0", \
   2699     "HashIP6TcpUdpPortsEqualField1", \
   2700     "HashL2Field0", \
   2701     "HashL2Field1", \
   2702     "HashMPLSField0", \
   2703     "HashMPLSField1", \
   2704     "HashFCOEField0", \
   2705     "HashFCOEField1", \
   2706     "HashL2TrillField0", \
   2707     "HashL2TrillField1", \
   2708     "HashL3TrillField0", \
   2709     "HashL3TrillField1", \
   2710     "HashTrillTunnelField0", \
   2711     "HashTrillTunnelField1", \
   2712     "HashHG2UnknownField0", \
   2713     "HashHG2UnknownField1", \
   2714     "HashField0OverlayCntagRpidEnable", \
   2715     "HashField1OverlayCntagRpidEnable", \
   2716     "HashHg2PktFieldsEnable", \
   2717     "HashField0Ip6FlowLabel", \
   2718     "HashField1Ip6FlowLabel", \
   2719     "HashUseFlowSelTrunkUc", \
   2720     "HashUseFlowSelEcmp", \
   2721     "TrunkHashSet0UnicastOffset", \
   2722     "TrunkHashSet1UnicastOffset", \
   2723     "TrunkHashSet0NonUnicastOffset", \
   2724     "TrunkHashSet1NonUnicastOffset", \
   2725     "TrunkFailoverHashOffset", \
   2726     "FabricTrunkHashSet0UnicastOffset", \
   2727     "FabricTrunkHashSet1UnicastOffset", \
   2728     "FabricTrunkHashSet0NonUnicastOffset", \
   2729     "FabricTrunkHashSet1NonUnicastOffset", \
   2730     "FabricTrunkFailoverHashOffset", \
   2731     "FabricTrunkDynamicHashOffset", \
   2732     "LoadBalanceHashSet0UnicastOffset", \
   2733     "LoadBalanceHashSet1UnicastOffset", \
   2734     "LoadBalanceHashSet0NonUnicastOffset", \
   2735     "LoadBalanceHashSet1NonUnicastOffset", \
   2736     "MacroFlowHashMinOffset", \
   2737     "MacroFlowHashMaxOffset", \
   2738     "MacroFlowHashStrideOffset", \
   2739     "UniformUcastTrunkDistribution", \
   2740     "UniformFabricTrunkDistribution", \
   2741     "ECMPHashSet0Offset", \
   2742     "ECMPHashSet1Offset", \
   2743     "CpuToCpuEnable", \
   2744     "IgmpUcastEnable", \
   2745     "MldUcastEnable", \
   2746     "IgmpReservedMcastEnable", \
   2747     "MldReservedMcastEnable", \
   2748     "MldDirectAttachedOnly", \
   2749     "PortEgressBlockL2", \
   2750     "PortEgressBlockL3", \
   2751     "BpduInvalidVlanDrop", \
   2752     "MirrorInvalidVlanDrop", \
   2753     "MirrorPktChecksEnable", \
   2754     "RemoteLearnTrust", \
   2755     "SourceMacZeroDrop", \
   2756     "IpmcGroupMtu", \
   2757     "ModuleType", \
   2758     "Deprecated227", \
   2759     "Deprecated228", \
   2760     "Deprecated229", \
   2761     "L3EgressMode", \
   2762     "L3DefipMultipathCountUpdate", \
   2763     "L3IngressMode", \
   2764     "L3HostAsRouteReturnValue", \
   2765     "SourceModBlockUcast", \
   2766     "SourceModBlockControlOpcode", \
   2767     "EgressBlockUcast", \
   2768     "AlternateStoreForward", \
   2769     "WarmBoot", \
   2770     "StableSelect", \
   2771     "StableSize", \
   2772     "StableUsed", \
   2773     "StableConsistent", \
   2774     "ControlSync", \
   2775     "ControlAutoSync", \
   2776     "CallbackAbortOnError", \
   2777     "UnknownIpmcAsMcast", \
   2778     "TunnelUnknownIpmcDrop", \
   2779     "DhcpLearn", \
   2780     "IpmcTtl1ToCpu", \
   2781     "L3UcastTtl1ToCpu", \
   2782     "DosAttackFlagZeroSeqZero", \
   2783     "HgHdrExtLengthEnable", \
   2784     "DosAttackSynFrag", \
   2785     "Ip4McastL2DestCheck", \
   2786     "Ip6McastL2DestCheck", \
   2787     "L3InterfaceUrpfEnable", \
   2788     "L3TunnelUrpfMode", \
   2789     "L3TunnelUrpfDefaultRoute", \
   2790     "L3UrpfFailToCpu", \
   2791     "L3UrpfRouteEnable", \
   2792     "L3UrpfRouteEnableExternal", \
   2793     "L3UrpfMode", \
   2794     "L3UrpfDefaultRoute", \
   2795     "IngressRateLimitIncludeIFG", \
   2796     "RateLimitLinear", \
   2797     "HashL2Dual", \
   2798     "HashL3Dual", \
   2799     "HashDualMoveDepth", \
   2800     "HashDualMoveDepthL2", \
   2801     "HashDualMoveDepthL3", \
   2802     "HashDualMoveDepthVlan", \
   2803     "HashDualMoveDepthMpls", \
   2804     "HashDualMoveDepthEgressVlan", \
   2805     "HashDualMoveDepthWlanPort", \
   2806     "HashDualMoveDepthWlanClient", \
   2807     "HashMultiMoveDepth", \
   2808     "HashMultiMoveDepthL2", \
   2809     "HashMultiMoveDepthL3", \
   2810     "HashMultiMoveDepthVlan", \
   2811     "HashMultiMoveDepthMpls", \
   2812     "HashMultiMoveDepthEgressVlan", \
   2813     "HashL2DualLeastFull", \
   2814     "HashL3DualLeastFull", \
   2815     "HashMPLSDualLeastFull", \
   2816     "SharedVlanEnable", \
   2817     "SharedVlanL2McastEnable", \
   2818     "IpmcReplicationSharing", \
   2819     "IpmcReplicationAvailabilityThreshold", \
   2820     "VrfMax", \
   2821     "FailoverStackTrunk", \
   2822     "FailoverEtherTrunk", \
   2823     "ClassBasedMoveFailPktToCpu", \
   2824     "ClassBasedMoveFailPktDrop", \
   2825     "HgHdrMcastFlood", \
   2826     "HgHdrMcastFloodOverride", \
   2827     "HgHdrIpMcastFlood", \
   2828     "HgHdrIpMcastFloodOverride", \
   2829     "STPBlockedFieldBypass", \
   2830     "L2PortBlocking", \
   2831     "HashIpfixIngress", \
   2832     "HashIpfixIngressDual", \
   2833     "HashIpfixEgress", \
   2834     "HashIpfixEgressDual", \
   2835     "HashMPLS", \
   2836     "HashMPLSDual", \
   2837     "ForceForwardFabricTrunk", \
   2838     "UseGport", \
   2839     "HgHdrMcastVlanRange", \
   2840     "HgHdrMcastL2Range", \
   2841     "HgHdrMcastL3Range", \
   2842     "McastL2Range", \
   2843     "McastL3Range", \
   2844     "HashWlanPort", \
   2845     "HashWlanPortDual", \
   2846     "HashWlanClient", \
   2847     "HashWlanClientDual", \
   2848     "WlanClientAuthorizeAll", \
   2849     "WlanClientUnauthToCpu", \
   2850     "WlanClientRoamedOutErrorToCpu", \
   2851     "WlanClientSrcMacMissToCpu", \
   2852     "WlanClientDstMacMissToCpu", \
   2853     "OamHeaderErrorToCpu", \
   2854     "OamUnknownVersionToCpu", \
   2855     "OamUnknownVersionDrop", \
   2856     "OamUnexpectedPktToCpu", \
   2857     "OamCcmToCpu", \
   2858     "OamXconCcmToCpu", \
   2859     "OamXconOtherToCpu", \
   2860     "L3SrcBindFailToCpu", \
   2861     "TunnelIp4IdShared", \
   2862     "HashRegexAction", \
   2863     "HashRegexActionDual", \
   2864     "Deprecated333", \
   2865     "CpuCopyDestination", \
   2866     "CpuProtoTimeSyncPrio", \
   2867     "CpuProtoMmrpPrio", \
   2868     "CpuProtoSrpPrio", \
   2869     "TimeSyncPktToCpu", \
   2870     "TimeSyncPktDrop", \
   2871     "TimeSyncPktFlood", \
   2872     "MmrpPktToCpu", \
   2873     "MmrpPktDrop", \
   2874     "MmrpPktFlood", \
   2875     "SrpPktToCpu", \
   2876     "SrpPktDrop", \
   2877     "SrpPktFlood", \
   2878     "SRPEthertype", \
   2879     "MMRPEthertype", \
   2880     "TimeSyncEthertype", \
   2881     "FcoeEtherType", \
   2882     "SRPDestMacOui", \
   2883     "MMRPDestMacOui", \
   2884     "TimeSyncDestMacOui", \
   2885     "SRPDestMacNonOui", \
   2886     "MMRPDestMacNonOui", \
   2887     "TimeSyncDestMacNonOui", \
   2888     "TimeSyncMessageTypeBitmap", \
   2889     "TimeSyncClassAPktPrio", \
   2890     "TimeSyncClassBPktPrio", \
   2891     "TimeSyncClassAExeptionPktPrio", \
   2892     "TimeSyncClassBExeptionPktPrio", \
   2893     "L2McastAllRouterPortsAddEnable", \
   2894     "BypassMode", \
   2895     "IpmcSameVlanL3Route", \
   2896     "Deprecated365", \
   2897     "FieldCache", \
   2898     "FieldCommit", \
   2899     "IpmcCache", \
   2900     "IpmcCommit", \
   2901     "L2Cache", \
   2902     "L2Commit", \
   2903     "L2AgeDelete", \
   2904     "L2AgeScan", \
   2905     "L3HostCache", \
   2906     "L3HostCommit", \
   2907     "L3RouteCache", \
   2908     "L3RouteCommit", \
   2909     "L2InvalidCtlToCpu", \
   2910     "InvalidGreToCpu", \
   2911     "HashL2MPLSField0", \
   2912     "HashL2MPLSField1", \
   2913     "HashL3MPLSField0", \
   2914     "HashL3MPLSField1", \
   2915     "HashMPLSTunnelField0", \
   2916     "HashMPLSTunnelField1", \
   2917     "HashMIMTunnelField0", \
   2918     "HashMIMTunnelField1", \
   2919     "HashMIMField0", \
   2920     "HashMIMField1", \
   2921     "StgInvalidToCpu", \
   2922     "VlanTranslateEgressMissToCpu", \
   2923     "L3PktErrToCpu", \
   2924     "MtuFailureToCpu", \
   2925     "SrcKnockoutToCpu", \
   2926     "WlanTunnelMismatchToCpu", \
   2927     "WlanTunnelMismatchDrop", \
   2928     "WlanPortMissToCpu", \
   2929     "UnknownVlanToCpuCosq", \
   2930     "StgInvalidToCpuCosq", \
   2931     "VlanTranslateEgressMissToCpuCosq", \
   2932     "TunnelErrToCpuCosq", \
   2933     "L3HeaderErrToCpuCosq", \
   2934     "L3PktErrToCpuCosq", \
   2935     "IpmcTtlErrToCpuCosq", \
   2936     "MtuFailureToCpuCosq", \
   2937     "HgHdrErrToCpuCosq", \
   2938     "SrcKnockoutToCpuCosq", \
   2939     "WlanTunnelMismatchToCpuCosq", \
   2940     "WlanPortMissToCpuCosq", \
   2941     "IpfixRateViolationDataInsert", \
   2942     "IpfixRateViolationPersistent", \
   2943     "HashVlanTranslate", \
   2944     "HashVlanTranslateDual", \
   2945     "HashEgressVlanTranslate", \
   2946     "HashEgressVlanTranslateDual", \
   2947     "LayeredQoSResolution", \
   2948     "CustomerQueuing", \
   2949     "CosqStatThreshold", \
   2950     "CosqStatInterval", \
   2951     "EncapErrorToCpu", \
   2952     "MplsPortIndependentLowerRange1", \
   2953     "MplsPortIndependentUpperRange1", \
   2954     "MplsPortIndependentLowerRange2", \
   2955     "MplsPortIndependentUpperRange2", \
   2956     "MirrorEgressTrueColorSelect", \
   2957     "MirrorEgressTruePriority", \
   2958     "PFCClass0Queue", \
   2959     "PFCClass1Queue", \
   2960     "PFCClass2Queue", \
   2961     "PFCClass3Queue", \
   2962     "PFCClass4Queue", \
   2963     "PFCClass5Queue", \
   2964     "PFCClass6Queue", \
   2965     "PFCClass7Queue", \
   2966     "PFCClass0McastQueue", \
   2967     "PFCClass1McastQueue", \
   2968     "PFCClass2McastQueue", \
   2969     "PFCClass3McastQueue", \
   2970     "PFCClass4McastQueue", \
   2971     "PFCClass5McastQueue", \
   2972     "PFCClass6McastQueue", \
   2973     "PFCClass7McastQueue", \
   2974     "PFCClass0DestmodQueue", \
   2975     "PFCClass1DestmodQueue", \
   2976     "PFCClass2DestmodQueue", \
   2977     "PFCClass3DestmodQueue", \
   2978     "PFCClass4DestmodQueue", \
   2979     "PFCClass5DestmodQueue", \
   2980     "PFCClass6DestmodQueue", \
   2981     "PFCClass7DestmodQueue", \
   2982     "PFCQueue0Class", \
   2983     "PFCQueue1Class", \
   2984     "PFCQueue2Class", \
   2985     "PFCQueue3Class", \
   2986     "PFCQueue4Class", \
   2987     "PFCQueue5Class", \
   2988     "PFCQueue6Class", \
   2989     "PFCQueue7Class", \
   2990     "ReserveLowL3InterfaceId", \
   2991     "ReserveHighL3InterfaceId", \
   2992     "ReserveLowL3EgressId", \
   2993     "ReserveHighL3EgressId", \
   2994     "ReserveLowVlanPort", \
   2995     "ReserveHighVlanPort", \
   2996     "ReserveLowMplsPort", \
   2997     "ReserveHighMplsPort", \
   2998     "ReserveLowMimPort", \
   2999     "ReserveHighMimPort", \
   3000     "ReserveLowEncap", \
   3001     "ReserveHighEncap", \
   3002     "ReserveLowL2Egress", \
   3003     "ReserveHighL2Egress", \
   3004     "ReserveLowVpn", \
   3005     "ReserveHighVpn", \
   3006     "ReserveLowFailoverId", \
   3007     "ReserveHighFailoverId", \
   3008     "ReserveLowOamEndPointId", \
   3009     "ReserveHighOamEndPointId", \
   3010     "ReserveLowOamGroupId", \
   3011     "ReserveHighOamGroupId", \
   3012     "SnapNonZeroOui", \
   3013     "SynchronousPortClockSource", \
   3014     "SynchronousPortClockSourceBkup", \
   3015     "SynchronousPortClockSourceDivCtrl", \
   3016     "SynchronousPortClockSourceBkupDivCtrl", \
   3017     "L2HitClear", \
   3018     "L2SrcHitClear", \
   3019     "L2DstHitClear", \
   3020     "L3HostHitClear", \
   3021     "L3RouteHitClear", \
   3022     "IpmcSameVlanPruning", \
   3023     "Deprecated492", \
   3024     "Deprecated493", \
   3025     "L2McIdxRetType", \
   3026     "L3McIdxRetType", \
   3027     "Deprecated496", \
   3028     "Deprecated497", \
   3029     "Deprecated498", \
   3030     "Deprecated499", \
   3031     "Deprecated500", \
   3032     "ArpDhcpToCpu", \
   3033     "IgmpMldToCpu", \
   3034     "LinkDownInfoSkip", \
   3035     "Deprecated504", \
   3036     "L2SourceDiscardMoveToCpu", \
   3037     "NivEthertype", \
   3038     "NivPrioDropToCpu", \
   3039     "NivInterfaceMissToCpu", \
   3040     "NivRpfFailToCpu", \
   3041     "NivTagInvalidToCpu", \
   3042     "NivTagDropToCpu", \
   3043     "NivUntagDropToCpu", \
   3044     "EEEPipelineTime", \
   3045     "EEEGlobalCongestionThreshold", \
   3046     "Deprecated515", \
   3047     "Deprecated516", \
   3048     "Deprecated517", \
   3049     "Deprecated518", \
   3050     "Deprecated519", \
   3051     "Deprecated520", \
   3052     "Deprecated521", \
   3053     "RemoteCpuSchanEnable", \
   3054     "RemoteCpuFromCpuEnable", \
   3055     "RemoteCpuToCpuEnable", \
   3056     "RemoteCpuCmicEnable", \
   3057     "RemoteCpuMatchLocalMac", \
   3058     "RemoteCpuMatchVlan", \
   3059     "RemoteCpuVlan", \
   3060     "RemoteCpuTpid", \
   3061     "RemoteCpuSignature", \
   3062     "RemoteCpuForceScheduling", \
   3063     "RemoteCpuToCpuDestPortAllReasons", \
   3064     "RemoteCpuToCpuDestMacAllReasons", \
   3065     "RxRedirectPktReasons", \
   3066     "RxRedirectPktReasonsExtended", \
   3067     "RxRedirectHigigPktReasons", \
   3068     "RxRedirectHigigPktReasonsExtended", \
   3069     "RxRedirectTruncatedPktReasons", \
   3070     "RxRedirectTruncatedPktReasonsExtended", \
   3071     "RxRedirectPktCos", \
   3072     "RxRedirectPktCosExtended", \
   3073     "RemoteCpuLocalMacOui", \
   3074     "RemoteCpuLocalMacNonOui", \
   3075     "RemoteCpuDestMacOui", \
   3076     "RemoteCpuDestMacNonOui", \
   3077     "RemoteCpuEthertype", \
   3078     "RemoteCpuDestPort", \
   3079     "RemoteCpuHigigDestPort", \
   3080     "RemoteCpuTcMappingMacOui", \
   3081     "RemoteCpuTcMappingMacNonOui", \
   3082     "RemoteCpuTcMappingEthertype", \
   3083     "ServiceTpidReplace", \
   3084     "EgressPktAge", \
   3085     "FabricTrunkDynamicSampleRate", \
   3086     "FabricTrunkDynamicEgressBytesExponent", \
   3087     "FabricTrunkDynamicQueuedBytesExponent", \
   3088     "FabricTrunkDynamicEgressBytesDecreaseReset", \
   3089     "FabricTrunkDynamicQueuedBytesDecreaseReset", \
   3090     "FabricTrunkDynamicEgressBytesMinThreshold", \
   3091     "FabricTrunkDynamicEgressBytesMaxThreshold", \
   3092     "FabricTrunkDynamicQueuedBytesMinThreshold", \
   3093     "FabricTrunkDynamicQueuedBytesMaxThreshold", \
   3094     "MacLowPower", \
   3095     "CongestionCntag", \
   3096     "CongestionCntagEthertype", \
   3097     "CongestionCnm", \
   3098     "CongestionCnmEthertype", \
   3099     "CongestionNotificationIdHigh", \
   3100     "CongestionNotificationIdLow", \
   3101     "CongestionNotificationIdQueue", \
   3102     "CongestionUseOuterTpid", \
   3103     "CongestionUseOuterVlan", \
   3104     "CongestionUseOuterPktPri", \
   3105     "CongestionUseOuterCfi", \
   3106     "CongestionUseInnerPktPri", \
   3107     "CongestionUseInnerCfi", \
   3108     "CongestionMissingCntag", \
   3109     "CongestionExcludeReplications", \
   3110     "MiMDefaultSVP", \
   3111     "MiMDefaultSVPValue", \
   3112     "EgressDroppedReportZeroLength", \
   3113     "LoadBalanceHashSelect", \
   3114     "TrillEthertype", \
   3115     "TrillISISEthertype", \
   3116     "TrillISISDestMacOui", \
   3117     "TrillBroadcastDestMacOui", \
   3118     "TrillEndStationDestMacOui", \
   3119     "TrillISISDestMacNonOui", \
   3120     "TrillBroadcastDestMacNonOui", \
   3121     "TrillEndStationDestMacNonOui", \
   3122     "TrillMinTtl", \
   3123     "TrillTtlCheckEnable", \
   3124     "TrillTtlErrToCpu", \
   3125     "TrillHeaderErrToCpu", \
   3126     "TrillMismatchToCpu", \
   3127     "TrillNameMissToCpu", \
   3128     "TrillRpfFailToCpu", \
   3129     "TrillOptionsToCpu", \
   3130     "TrillNameErrDrop", \
   3131     "TrillRpfFailDrop", \
   3132     "TrillHeaderVersionErrDrop", \
   3133     "TrillNameMissDrop", \
   3134     "TrillAdjacencyFailDrop", \
   3135     "TrillHeaderErrDrop", \
   3136     "UdpPktActionEnable", \
   3137     "UdpPktRedirectPbmp", \
   3138     "UdpPktCopyToPbmp", \
   3139     "UdpPktNewTc", \
   3140     "L3TunnelIpV4ModeOnly", \
   3141     "L3SrcHitEnable", \
   3142     "L2DstHitEnable", \
   3143     "WESPProtocolEnable", \
   3144     "WESPProtocol", \
   3145     "Deprecated614", \
   3146     "Ip6CompressEnable", \
   3147     "Ip6CompressDefaultOffset", \
   3148     "StableSaveLongIds", \
   3149     "GportAnyDefaultL2Learn", \
   3150     "GportAnyDefaultL2Move", \
   3151     "IngParseL2TunnelTermDipSipSelect", \
   3152     "IngParseL3L4IPv4", \
   3153     "IngParseL3L4IPv6", \
   3154     "L2LearnMode", \
   3155     "SetWredJitterMask", \
   3156     "SetMplsEntropyLabelTtl", \
   3157     "SetMplsEntropyLabelPri", \
   3158     "SetMplsEntropyLabelOffset", \
   3159     "PonOamFailsafeState", \
   3160     "EquipmentAlarmState", \
   3161     "PowerAlarmState", \
   3162     "BatteryMissingAlarmState", \
   3163     "BatteryFailureAlarmState", \
   3164     "BatteryVoltLowAlarmState", \
   3165     "BatteryVoltLowAlarmReportThreshold", \
   3166     "BatteryVoltLowAlarmClearThreshold", \
   3167     "PhysicalIntrusionAlarmState", \
   3168     "SelfTestFailureAlarmState", \
   3169     "PonIfSwitchAlarmState", \
   3170     "L3IngressInterfaceMapSet", \
   3171     "MplsPWControlWordToCpu", \
   3172     "MplsPWControlTypeToCpu", \
   3173     "MplsPWControlWord", \
   3174     "MplsPWCountPktsAll", \
   3175     "EntropyHashSet0Offset", \
   3176     "EntropyHashSet1Offset", \
   3177     "ArpRequestMyStationIPToCPU", \
   3178     "ArpRequestMyStationIPDrop", \
   3179     "ArpRequestMyStationIPFwd", \
   3180     "L3SIPMoveToCpu", \
   3181     "TrunkHashSrcPortEnable", \
   3182     "TrunkHashOffset", \
   3183     "TrunkHashMPLSLabelBOS", \
   3184     "TrunkHashMPLSPWControlWord", \
   3185     "TrunkHashSeed", \
   3186     "TrunkHashConfig", \
   3187     "TrunkHashPktHeaderCount", \
   3188     "TrunkHashPktHeaderSelect", \
   3189     "ECMPHashSrcPortEnable", \
   3190     "ECMPHashOffset", \
   3191     "ECMPHashSeed", \
   3192     "ECMPHashConfig", \
   3193     "ECMPHashPktHeaderCount", \
   3194     "TrunkDynamicHashOffset", \
   3195     "TrunkDynamicSampleRate", \
   3196     "TrunkDynamicAccountingSelect", \
   3197     "TrunkDynamicEgressBytesExponent", \
   3198     "TrunkDynamicQueuedBytesExponent", \
   3199     "TrunkDynamicEgressBytesDecreaseReset", \
   3200     "TrunkDynamicQueuedBytesDecreaseReset", \
   3201     "TrunkDynamicEgressBytesMinThreshold", \
   3202     "TrunkDynamicEgressBytesMaxThreshold", \
   3203     "TrunkDynamicQueuedBytesMinThreshold", \
   3204     "TrunkDynamicQueuedBytesMaxThreshold", \
   3205     "TrunkDynamicExpectedLoadMinThreshold", \
   3206     "TrunkDynamicExpectedLoadMaxThreshold", \
   3207     "TrunkDynamicImbalanceMinThreshold", \
   3208     "TrunkDynamicImbalanceMaxThreshold", \
   3209     "EcmpDynamicHashOffset", \
   3210     "EcmpDynamicSampleRate", \
   3211     "EcmpDynamicAccountingSelect", \
   3212     "EcmpDynamicEgressBytesExponent", \
   3213     "EcmpDynamicQueuedBytesExponent", \
   3214     "EcmpDynamicEgressBytesDecreaseReset", \
   3215     "EcmpDynamicQueuedBytesDecreaseReset", \
   3216     "EcmpDynamicEgressBytesMinThreshold", \
   3217     "EcmpDynamicEgressBytesMaxThreshold", \
   3218     "EcmpDynamicQueuedBytesMinThreshold", \
   3219     "EcmpDynamicQueuedBytesMaxThreshold", \
   3220     "EcmpDynamicExpectedLoadMinThreshold", \
   3221     "EcmpDynamicExpectedLoadMaxThreshold", \
   3222     "EcmpDynamicImbalanceMinThreshold", \
   3223     "EcmpDynamicImbalanceMaxThreshold", \
   3224     "FailoverDropToCpu", \
   3225     "MplsReservedEntropyLabelToCpu", \
   3226     "L3SrcBindMissToCpu", \
   3227     "MplsGalAlertLabelToCpu", \
   3228     "MplsRalAlertLabelToCpu", \
   3229     "MplsIllegalReservedLabelToCpu", \
   3230     "MplsLookupsExceededToCpu", \
   3231     "MplsUnknownAchTypeToCpu", \
   3232     "MplsUnknownAchVersionToCpu", \
   3233     "TimesyncIngressVersion", \
   3234     "TimesyncEgressVersion", \
   3235     "TimesyncUnknownVersionToCpu", \
   3236     "CongestionCnmToCpu", \
   3237     "bcmSwtichCongestionCnmProxyErrorToCpu", \
   3238     "bcmSwtichCongestionCnmProxyToCpu", \
   3239     "WlanTunnelErrorDrop", \
   3240     "MplsReservedEntropyLabelDrop", \
   3241     "RemoteProtectionTrust", \
   3242     "L2GreProtocolType", \
   3243     "L2GreVpnIdSizeSet", \
   3244     "L2GreVpnIdMissToCpu", \
   3245     "L2GreTunnelMissToCpu", \
   3246     "MultipathCompressBuffer", \
   3247     "MultipathCompress", \
   3248     "BstEnable", \
   3249     "BstTrackingMode", \
   3250     "L3McastL2", \
   3251     "MiMTeBvidLowerRange", \
   3252     "MiMTeBvidUpperRange", \
   3253     "RemoteEncapsulationMode", \
   3254     "FabricTrunkAutoIncludeDisable", \
   3255     "TrunkHashNormalize", \
   3256     "MplsLabelCache", \
   3257     "MplsLabelCommit", \
   3258     "TrillHopCount", \
   3259     "PolicerFairness", \
   3260     "VxlanUdpDestPortSet", \
   3261     "VxlanEntropyEnable", \
   3262     "VxlanVnIdMissToCpu", \
   3263     "VxlanTunnelMissToCpu", \
   3264     "ECMPVxlanHashOffset", \
   3265     "ECMPL2GreHashOffset", \
   3266     "ECMPTrillHashOffset", \
   3267     "ECMPMplsHashOffset", \
   3268     "VirtualPortDynamicHashOffset", \
   3269     "TMDomain", \
   3270     "PortHeaderType", \
   3271     "L2OverflowEvent", \
   3272     "LinkProvClear", \
   3273     "EtagEthertype", \
   3274     "EtagInvalidToCpu", \
   3275     "EtagDropToCpu", \
   3276     "NonEtagDropToCpu", \
   3277     "ExtenderRpfFailToCpu", \
   3278     "ExtenderInterfaceMissToCpu", \
   3279     "PrioDropToCpu", \
   3280     "ExtenderMulticastLowerThreshold", \
   3281     "ExtenderMulticastHigherThreshold", \
   3282     "L3NATEnable", \
   3283     "L3DNATHairpinToCpu", \
   3284     "L3DNATMissToCpu", \
   3285     "L3SNATMissToCpu", \
   3286     "L3NatOtherToCpu", \
   3287     "L3NatRealmCrossingIcmpToCpu", \
   3288     "L3NatFragmentsToCpu", \
   3289     "HashL3DNATPool", \
   3290     "HashL3DNATPoolDual", \
   3291     "McastTrunkHashMin", \
   3292     "McastTrunkHashMax", \
   3293     "Ip4Compress", \
   3294     "EcmpResilientHashOffset", \
   3295     "TrunkResilientHashOffset", \
   3296     "FabricTrunkResilientHashOffset", \
   3297     "ShaperAdjust", \
   3298     "HashVpVlanMemberIngress", \
   3299     "HashVpVlanMemberIngressDual", \
   3300     "HashVpVlanMemberEgress", \
   3301     "HashVpVlanMemberEgressDual", \
   3302     "HashL2Endpoint", \
   3303     "HashL2EndpointDual", \
   3304     "HashEndpointQueueMap", \
   3305     "HashEndpointQueueMapDual", \
   3306     "StackRouteHistoryBitmap1", \
   3307     "StackRouteHistoryBitmap2", \
   3308     "ArpIPcheck", \
   3309     "Deprecated778", \
   3310     "Deprecated779", \
   3311     "L2LearnLimitToCpu", \
   3312     "FlexibleMirrorDestinations", \
   3313     "EcmpMacroFlowHashEnable", \
   3314     "OamVersionCheckDisable", \
   3315     "OamOlpChipEtherType", \
   3316     "OamOlpChipTpid", \
   3317     "OamOlpChipVlan", \
   3318     "Deprecated787", \
   3319     "EgressKeepSystemHeader", \
   3320     "MacroFlowEcmpHashConcatEnable", \
   3321     "MacroFlowLoadBalanceHashConcatEnable", \
   3322     "MacroFlowTrunkHashConcatEnable", \
   3323     "MacroFlowHigigTrunkHashConcatEnable", \
   3324     "MacroFlowECMPHashSeed", \
   3325     "MacroFlowLoadBalanceHashSeed", \
   3326     "MacroFlowTrunkHashSeed", \
   3327     "MacroFlowHigigTrunkHashSeed", \
   3328     "HashTrillPayloadSelect0", \
   3329     "HashTrillPayloadSelect1", \
   3330     "HashTrillTunnelSelect0", \
   3331     "HashTrillTunnelSelect1", \
   3332     "HashIP6AddrCollapseSelect0", \
   3333     "HashIP6AddrCollapseSelect1", \
   3334     "PrependTagEnable", \
   3335     "HashL2VxlanField0", \
   3336     "HashL2VxlanField1", \
   3337     "HashL3VxlanField0", \
   3338     "HashL3VxlanField1", \
   3339     "HashL2L2GreField0", \
   3340     "HashL2L2GreField1", \
   3341     "HashL3L2GreField0", \
   3342     "HashL3L2GreField1", \
   3343     "McastTrunkIngressCommit", \
   3344     "McastTrunkEgressCommit", \
   3345     "MplsShortPipe", \
   3346     "TraverseMode", \
   3347     "TrunkResilientHashConfig", \
   3348     "TrunkResilientHashSeed", \
   3349     "ECMPResilientHashSeed", \
   3350     "ResilientHashAgeTimer", \
   3351     "FieldStageEgressToCpu", \
   3352     "HashOamEgress", \
   3353     "HashOamEgressDual", \
   3354     "ColorL3L2Marking", \
   3355     "WredForAllPkts", \
   3356     "FcoeNpvModeEnable", \
   3357     "FcoeDomainRoutePrefixLength", \
   3358     "FcoeCutThroughEnable", \
   3359     "FcoeSourceBindCheckAction", \
   3360     "FcoeSourceFpmaPrefixCheckAction", \
   3361     "FcoeVftHopCountExpiryToCpu", \
   3362     "FcoeVftHopCountExpiryAction", \
   3363     "FcoeFcEofT1Value", \
   3364     "FcoeFcEofT2Value", \
   3365     "FcoeFcEofA1Value", \
   3366     "FcoeFcEofA2Value", \
   3367     "FcoeFcEofN1Value", \
   3368     "FcoeFcEofN2Value", \
   3369     "FcoeFcEofNI1Value", \
   3370     "FcoeFcEofNI2Value", \
   3371     "FcoeZoneCheckFailToCpu", \
   3372     "FcoeZoneCheckMissDrop", \
   3373     "HashUseL2GreTunnelGreKey0", \
   3374     "HashUseL2GreTunnelGreKey1", \
   3375     "HashL2GrePayloadSelect0", \
   3376     "HashL2GrePayloadSelect1", \
   3377     "HashL2GreNetworkPortPayloadDisable0", \
   3378     "HashL2GreNetworkPortPayloadDisable1", \
   3379     "SystemReservedVlan", \
   3380     "ProxySrcKnockout", \
   3381     "NetworkGroupDepth", \
   3382     "UnknownSubportPktTagToCpu", \
   3383     "L3RoutedLearn", \
   3384     "SubportPktTagEthertype", \
   3385     "SubportPktTagToCpu", \
   3386     "NonSubportPktTagToCpu", \
   3387     "HashL2GreKeyMask0", \
   3388     "HashL2GreKeyMask1", \
   3389     "L3Max128BV6Entries", \
   3390     "EEEQueueThresholdProfile0", \
   3391     "EEEQueueThresholdProfile1", \
   3392     "EEEQueueThresholdProfile2", \
   3393     "EEEQueueThresholdProfile3", \
   3394     "EEEPacketLatencyProfile0", \
   3395     "EEEPacketLatencyProfile1", \
   3396     "EEEPacketLatencyProfile2", \
   3397     "EEEPacketLatencyProfile3", \
   3398     "DosAttackV6MinFragEnable", \
   3399     "DosAttackV6MinFragSize", \
   3400     "MirrorUnicastCosq", \
   3401     "MirrorMulticastCosq", \
   3402     "McQueueSchedMode", \
   3403     "Reserved872", \
   3404     "CacheTableUpdateAll", \
   3405     "HashNivSrcIfEtagSvidSelect0", \
   3406     "HashNivSrcIfEtagSvidSelect1", \
   3407     "HashNivDstIfEtagVidSelect0", \
   3408     "HashNivDstIfEtagVidSelect1", \
   3409     "BstSnapshotEnable", \
   3410     "SymmetricHashControl", \
   3411     "L2ExtLearn", \
   3412     "ReserveHighTunnelId", \
   3413     "ReserveLowTunnelId", \
   3414     "HigigCongestionClassEnable", \
   3415     "EcnNonIpResponsive", \
   3416     "EcnNonIpIntCongestionNotification", \
   3417     "MimPayloadTpidEnable", \
   3418     "HashMimUseTunnelHeader0", \
   3419     "HashMimUseTunnelHeader1", \
   3420     "MplsPipeTunnelLabelExpSet", \
   3421     "ControlPortConfigInstall", \
   3422     "LoopbackMtuSize", \
   3423     "HashVxlanPayloadSelect0", \
   3424     "HashVxlanPayloadSelect1", \
   3425     "CongestionCnmSrcMacNonOui", \
   3426     "CongestionCnmSrcMacOui", \
   3427     "HashL2MPLSPayloadSelect0", \
   3428     "HashL2MPLSPayloadSelect1", \
   3429     "HashL3L2MPLSField0", \
   3430     "HashL3L2MPLSField1", \
   3431     "HashIPSecSelect0", \
   3432     "HashIPSecSelect1", \
   3433     "ECMPLevel1RandomSeed", \
   3434     "ECMPLevel2RandomSeed", \
   3435     "TimesyncEgressTimestampingMode", \
   3436     "SubportCoEEtherType", \
   3437     "SubportEgressTpid", \
   3438     "SubportEgressWideTpid", \
   3439     "IpmcSameVlanPruningOverride", \
   3440     "SynchronousPortClockSourceValid", \
   3441     "SynchronousPortClockSourceBkupValid", \
   3442     "RemoteProtectionEnable", \
   3443     "MirrorExclusive", \
   3444     "EcnDelayMeasurementThreshold", \
   3445     "MacroFlowHashUseMSB", \
   3446     "MplsDefaultTtlCopy", \
   3447     "OamStackingSupport", \
   3448     "HashOam", \
   3449     "HashOamDual", \
   3450     "HashOamLeastFull", \
   3451     "HashDualMoveDepthOam", \
   3452     "PortVlanTranslationAdvanced", \
   3453     "ForwardingLayerMtuFilter", \
   3454     "LinkLayerMtuFilter", \
   3455     "ForwardingLayerMtuSize", \
   3456     "LinkLayerMtuSize", \
   3457     "MimBvidInsertionControl", \
   3458     "L2CpuDeleteEvent", \
   3459     "L2LearnEvent", \
   3460     "L2CpuAddEvent", \
   3461     "L2AgingEvent", \
   3462     "UdfHashEnable", \
   3463     "OlpMatchRule", \
   3464     "MplsExtendedLabelTtl", \
   3465     "MacroFlowHashOverlayMaxOffset", \
   3466     "MacroFlowHashOverlayStrideOffset", \
   3467     "MacroFlowHashOverlayMinOffset", \
   3468     "MacroFlowEcmpHashOverlayConcatEnable", \
   3469     "MacroFlowECMPOverlayHashSeed", \
   3470     "ECMPOverlayHashOffset", \
   3471     "MacroFlowEcmpUnderlayHashConcatEnable", \
   3472     "MacroFlowECMPUnderlayHashSeed", \
   3473     "ECMPUnderlayVxlanHashOffset", \
   3474     "ECMPUnderlayL2GreHashOffset", \
   3475     "ECMPUnderlayTrillHashOffset", \
   3476     "VirtualPortUnderlayDynamicHashOffset", \
   3477     "ECMPUnderlayHashSet0Offset", \
   3478     "SampleFlexRandomSeed", \
   3479     "NonUcVlanShapingEnable", \
   3480     "CustomHeaderEncapPriorityOffset", \
   3481     "IngCapwapEnable", \
   3482     "CapwapDataUdpDstPort", \
   3483     "CountCapwapPayloadBytesOnly", \
   3484     "OamOlpStationMacOui", \
   3485     "OamOlpStationMacNonOui", \
   3486     "Reserved955", \
   3487     "PFCDeadlockDetectionTimeInterval", \
   3488     "PFCDeadlockRecoveryAction", \
   3489     "RangeCheckersAPIType", \
   3490     "Reserved958", \
   3491     "EcmpGroupMemberMode", \
   3492     "MimlEncapInnerEthertype", \
   3493     "HashMiMPayloadSelect0", \
   3494     "HashMiMPayloadSelect1", \
   3495     "HashL3MiMField0", \
   3496     "HashL3MiMField1", \
   3497     "HashMPLSUseLabelStack", \
   3498     "HashMPLSExcludeGAL", \
   3499     "RedirectBufferThresholdPriorityLow", \
   3500     "RedirectBufferThresholdPriorityMedium", \
   3501     "RedirectBufferThresholdPriorityHigh", \
   3502     "FlexIP6ExtHdr", \
   3503     "FlexIP6ExtHdrEgress", \
   3504     "HashUseFlowSelMplsEcmp", \
   3505     "V6L3SrcDstLocalLinkDropCancel", \
   3506     "L3ClassIdForL2Enable", \
   3507     "DropSobmhOnLinkDown", \
   3508     "ResilientHashCRC0ByteMask", \
   3509     "ResilientHashCRC1ByteMask", \
   3510     "ResilientHashCRC2ByteMask", \
   3511     "ResilientHashCRC3ByteMask", \
   3512     "ResilientHashCRCSeed", \
   3513     "ECMPResilientHashKey0Shift", \
   3514     "ECMPResilientHashKey1Shift", \
   3515     "VpnDetachPorts", \
   3516     "ClassL3L2Marking", \
   3517     "L3L2MarkingMode", \
   3518     "STPDisabledFieldBypass", \
   3519     "HashSctpL4Port", \
   3520     "Reserved988", \
   3521     "GlobalTpidEnable", \
   3522     "ECMPResilientHashCombine", \
   3523     "HashSetTflowMode", \
   3524     "Downgrade", \
   3525     "HashELISearch", \
   3526     "CrashRecoveryMode", \
   3527     "CrCommit", \
   3528     "CrLastTransactionStatus", \
   3529     "CrCouldNotRecover", \
   3530     "HWL2Freeze", \
   3531     "HashIP6NextHeaderUseExtensionHeader0", \
   3532     "HashIP6NextHeaderUseExtensionHeader1", \
   3533     "HashUseFlowSelLbidNonUnicast", \
   3534     "HashUseFlowSelLbidUnicast", \
   3535     "HashUseFlowSelHigigTrunkNonUnicast", \
   3536     "HashUseFlowSelHigigTrunkUnicast", \
   3537     "HashUseFlowSelHigigTrunkFailover", \
   3538     "HashUseFlowSelTrunkNonUnicast", \
   3539     "HashUseFlowSelEntropy", \
   3540     "HashUseFlowSelVxlanEcmp", \
   3541     "DefaultNativeOutVlanPort", \
   3542     "DefaultEgressVlanEditClassId", \
   3543     "GtpDetectEnable", \
   3544     "GtpHdrFirstByte", \
   3545     "GtpHdrFirstByteMask", \
   3546     "HashGtpTeidEnable0", \
   3547     "HashGtpTeidEnable1", \
   3548     "EccSingleBitErrorEvent", \
   3549     "HeaderCompensationPerPacket", \
   3550     "3rdTagStampMode", \
   3551     "MacroFlowHigigTrunkHashMinOffset", \
   3552     "MacroFlowHigigTrunkHashMaxOffset", \
   3553     "MacroFlowHigigTrunkHashStrideOffset", \
   3554     "MacroFlowTrunkHashMinOffset", \
   3555     "MacroFlowTrunkHashMaxOffset", \
   3556     "MacroFlowTrunkHashStrideOffset", \
   3557     "MacroFlowLoadBalanceEntropyHashMinOffset", \
   3558     "MacroFlowLoadBalanceEntropyHashMaxOffset", \
   3559     "MacroFlowLoadBalanceEntropyHashStrideOffset", \
   3560     "CrTransactionStart", \
   3561     "UdpTunnelIPv4DstPort", \
   3562     "UdpTunnelIPv6DstPort", \
   3563     "UdpTunnelMplsDstPort", \
   3564     "ECMPSecondHierHashOffset", \
   3565     "ECMPSecondHierHashConfig", \
   3566     "IngressRateLimitMpps", \
   3567     "MirrorSnoopForwardOriginalWhenDropped", \
   3568     "FabricTrunkDynamicPhysicalQueuedBytesExponent", \
   3569     "FabricTrunkDynamicPhysicalQueuedBytesDecreaseReset", \
   3570     "FabricTrunkDynamicPhysicalQueuedBytesMinThreshold", \
   3571     "FabricTrunkDynamicPhysicalQueuedBytesMaxThreshold", \
   3572     "TrunkDynamicPhysicalQueuedBytesExponent", \
   3573     "TrunkDynamicPhysicalQueuedBytesDecreaseReset", \
   3574     "TrunkDynamicPhysicalQueuedBytesMinThreshold", \
   3575     "TrunkDynamicPhysicalQueuedBytesMaxThreshold", \
   3576     "EcmpDynamicPhysicalQueuedBytesExponent", \
   3577     "EcmpDynamicPhysicalQueuedBytesDecreaseReset", \
   3578     "EcmpDynamicPhysicalQueuedBytesMinThreshold", \
   3579     "EcmpDynamicPhysicalQueuedBytesMaxThreshold", \
   3580     "FabricTrunkDynamicRandomSeed", \
   3581     "TrunkDynamicRandomSeed", \
   3582     "EcmpDynamicRandomSeed", \
   3583     "HashMPLSExcludeReservedLabel", \
   3584     "MplsNonIpPayloadDefaultEcn", \
   3585     "ECMPHashBitCountSelect", \
   3586     "EcnIpPayloadResponsive", \
   3587     "HashMultiMoveDepthExactMatch", \
   3588     "CrAbort", \
   3589     "LIUdpSrcPortSet", \
   3590     "Roce1Ethertype", \
   3591     "Roce2UdpDstPort", \
   3592     "HashUseFlowSelRoce2Ecmp", \
   3593     "HashSelectControlExtended", \
   3594     "HashField0Roce1FlowLabel", \
   3595     "HashField1Roce1FlowLabel", \
   3596     "HashField0Roce2FlowLabel", \
   3597     "HashField1Roce2FlowLabel", \
   3598     "HashRoce1Field0", \
   3599     "HashRoce1Field1", \
   3600     "HashRoce2IP4Field0", \
   3601     "HashRoce2IP4Field1", \
   3602     "HashRoce2IP6Field0", \
   3603     "HashRoce2IP6Field1", \
   3604     "EcmpRoce2HashOffset", \
   3605     "VxlanUdpDestPortSet1", \
   3606     "VxlanEntropyEnableIP6", \
   3607     "E2EFCReceiveDestMacOui", \
   3608     "E2EFCReceiveDestMacNonOui", \
   3609     "E2EFCReceiveEtherType", \
   3610     "E2EFCReceiveOpcode", \
   3611     "HashUseFlowSelEcmpOverlay", \
   3612     "MplsSpeculativeNibbleMap", \
   3613     "IpmcSameFwdDmnThreshold", \
   3614     "HashUseFlowSelVpTrunk", \
   3615     "HashUseFlowSelTrunkResilientHash", \
   3616     "MeterMef10dot3Enable", \
   3617     "HashMultiMoveDepthVlanTranslate1", \
   3618     "HashMultiMoveDepthVlanTranslate2", \
   3619     "HashMultiMoveDepthEgressVlanTranslate1", \
   3620     "HashMultiMoveDepthEgressVlanTranslate2", \
   3621     "IntL4DestPort1", \
   3622     "IntL4DestPort2", \
   3623     "IntProbeMarker1", \
   3624     "IntProbeMarker2", \
   3625     "IntVersion", \
   3626     "IntRequestVectorValue", \
   3627     "IntRequestVectorMask", \
   3628     "IntSwitchId", \
   3629     "IntEgressTimeDelta", \
   3630     "IntHopLimitCpuEnable", \
   3631     "IntTurnAroundCpuEnable", \
   3632     "IntMaxPayloadLength", \
   3633     "ForwardLookupNotFoundTrap", \
   3634     "EtherTypeCustom1", \
   3635     "EtherTypeCustom2", \
   3636     "L3LpmHitbitEnable", \
   3637     "MplsCtrlPktToCpu", \
   3638     "InvalidTpidToCpu", \
   3639     "FlowSelectMissToCpu", \
   3640     "L3HdrMismatchToCpu", \
   3641     "MeterTrafficClass", \
   3642     "RoeEthertype", \
   3643     "RoeCustomEthertype", \
   3644     "RoeUdpDestPort", \
   3645     "RoeCustomUdpDestPort", \
   3646     "OamOlpHeaderAdd", \
   3647     "L2FreezeMode", \
   3648     "L3McRpfDefaultRoute", \
   3649     "IngParseL2TunnelTermArp", \
   3650     "IngParseL2TunnelTermRarp", \
   3651     "NoneEthernetPacketMeterPtr", \
   3652     "EtherDscpRemark", \
   3653     "DosAttackTcpFirstOption", \
   3654     "DosAttackInnerTcpFirstOption", \
   3655     "DosAttackTcpFlagsMask", \
   3656     "DosAttackInnerTcpFlagsMask", \
   3657     "DosAttackTcpFlagsSR", \
   3658     "DosAttackTcpFlagsZero", \
   3659     "DosAttackTcpFlagsSynOption", \
   3660     "DosAttackTcpFlagsSynFirstFrag", \
   3661     "DosAttackTcpFlagsFinNoAck", \
   3662     "DosAttackTcpFlagsRstNoAck", \
   3663     "DosAttackTcpFlagsNoSFRA", \
   3664     "DosAttackTcpFlagsUrgNoUrgPtr", \
   3665     "DosAttackTcpFlagsNoUrgWithUrgPtr", \
   3666     "DosAttackTcpDstPortZero", \
   3667     "DosAttackTcpSrcPortZero", \
   3668     "DosAttackTcpFlagsResvdNonZero", \
   3669     "DosAttackTcpV4DstBcast", \
   3670     "DosAttackTcpFlagsAck", \
   3671     "MirrorPsampFormat2Epoch", \
   3672     "L2StationExtendedMode", \
   3673     "HashSeed", \
   3674     "LayerRecordModeSelection", \
   3675     "ECMPThirdHierHashConfig", \
   3676     "NwkHashConfig", \
   3677     "MplsStack0HashSeed", \
   3678     "MplsStack1HashSeed", \
   3679     "ParserHashSeed", \
   3680     "MplsSpeculativeParse", \
   3681     "ExternalTcamSync", \
   3682     "ArpMyIp1", \
   3683     "ArpMyIp2", \
   3684     "ArpIgnoreDa", \
   3685     "NdpMyIp1", \
   3686     "NdpMyIp2", \
   3687     "IcmpIgnoreDa", \
   3688     "VxlanEvpnEnable", \
   3689     "HashDualMoveDepthIngVpVlanMember", \
   3690     "HashDualMoveDepthEgrVpVlanMember", \
   3691     "GpeEntropyEnable", \
   3692     "GpeUdpDestPortSet", \
   3693     "GeneveEntropyEnable", \
   3694     "GeneveUdpDestPortSet", \
   3695     "BfdRxDisable", \
   3696     "DescCommit", \
   3697     "DlbMonitorIngressRandomSeed", \
   3698     "CounterAdjustEgressTm", \
   3699     "CounterAdjustEgressPp", \
   3700     "TagPcpDeiSrc", \
   3701     "BfdMyDipDestination", \
   3702     "EndToEndLatencyPerDestinationPort", \
   3703     "ExternalTcamInit", \
   3704     "HashMultiMoveDepthL3Tunnel", \
   3705     "GbpEtherType", \
   3706     "VxlanUdpSrcPortSelect", \
   3707     "GpeUdpSrcPortSelect", \
   3708     "GeneveUdpSrcPortSelect", \
   3709     "PreserveOtagBeforeItag", \
   3710     "MirrorCpuCosq", \
   3711     "IntProbeMarkerEnable", \
   3712     "IntL4DestPortEnable", \
   3713     "FtmhEtherType", \
   3714     "GbpSidDidMcastLookupMissClassid", \
   3715     "CustomOuterEthertype1", \
   3716     "CustomOuterEthertype2", \
   3717     "CustomInnerEthertype1", \
   3718     "CustomInnerEthertype2", \
   3719     "CustomOuterProtocolId1", \
   3720     "CustomOuterProtocolId2", \
   3721     "CustomInnerProtocolId1", \
   3722     "CustomInnerProtocolId2", \
   3723     "CustomOuterUdpDstPort1", \
   3724     "CustomOuterUdpDstPort2", \
   3725     "CustomInnerUdpDstPort1", \
   3726     "CustomInnerUdpDstPort2", \
   3727     "ReservedEgressNextHop", \
   3728     "ConcatAppHeader", \
   3729     "VxlanGpeUdpDestPortSet", \
   3730     "SystemPortOverride", \
   3731     "SRV6EgressPSPEnable", \
   3732     "SRV6ReducedModeEnable", \
   3733     "HashL4Field", \
   3734     "L3UcLargeNATEnable", \
   3735     "L3UcLargeDNAT", \
   3736     "L3UcLargeSNAT", \
   3737     "L3UcLargeDNATSNAT", \
   3738     "L3UcLargeDNAPT", \
   3739     "L3UcLargeSNAPT", \
   3740     "L3UcLargeDNAPTSNAPT", \
   3741     "L3McLargeNATEnable", \
   3742     "L3McLargeNATRewriteType0", \
   3743     "L3McLargeNATRewriteType1", \
   3744     "L3McLargeNATRewriteType2", \
   3745     "L2ChangeFieldsEnable", \
   3746     "PcieHotSwapDisable", \
   3747     "IPv4DoNotVerifyIncomingChecksum" 
   3748 
   3749 /* ecmp hash bit count enums */
   3750 typedef enum bcm_switch_ecmp_hash_bit_count_e {
   3751     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_10 = 0, 
   3752     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_11 = 1, 
   3753     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_12 = 2, 
   3754     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_13 = 3, 
   3755     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_14 = 4, 
   3756     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_15 = 5, 
   3757     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_16 = 6 
   3758 } bcm_switch_ecmp_hash_bit_count_t;
   3759 
   3760 /* 
   3761  * Values passed for setting switch control
   3762  * bcmSwitchPFCDeadlockRecoveryAction.
   3763  */
   3764 typedef enum bcm_switch_pfc_deadlock_action_e {
   3765     bcmSwitchPFCDeadlockActionTransmit = 0, /* Transmit packets in Recovery state
   3766                                            (ignoring the PFC state)-Default
   3767                                            Action */
   3768     bcmSwitchPFCDeadlockActionDrop = 1, /* Drop packets in Recovery state. */
   3769     bcmSwitchPFCDeadlockActionMaxCount = 2 /* Maximum PFC Deadlock Recovery action
   3770                                            type count */
   3771 } bcm_switch_pfc_deadlock_action_t;
   3772 
   3773 /* 
   3774  * Values passed for setting switch control
   3775  * bcmSwitchPFCDeadlockDetectionTimeInterval..
   3776  */
   3777 typedef enum bcm_switch_pfc_deadlock_detection_interval_e {
   3778     bcmSwitchPFCDeadlockDetectionInterval100MiliSecond = 0, /* 100 ms interval for Detection
   3779                                            interval (default) */
   3780     bcmSwitchPFCDeadlockDetectionInterval10MiliSecond = 1, /* 10ms interval for Detection interval */
   3781     bcmSwitchPFCDeadlockDetectionIntervalCount = 2 /* Maximum PFC deadlock detecion type
   3782                                            count */
   3783 } bcm_switch_pfc_deadlock_detection_interval_t;
   3784 
   3785 /* Values passed for setting switch control bcmSwitchOamStackingSupport */
   3786 typedef enum bcm_switch_oam_stacking_support_e {
   3787     bcmSwitchOamStackingSupportNone = 0, /* Do not carry OAM endpoint context in
   3788                                            place of VC label in stacking header */
   3789     bcmSwitchOamStackingSupportOamContextInStackingHeader = 1 /* Carry OAM endpoint context in place
   3790                                            of VC label in stacking header */
   3791 } bcm_switch_oam_stacking_support_t;
   3792 
   3793 /* Large Scale UC NAT controls. */
   3794 #define BCM_L3UC_NAT_NONE       0          /* Disable the specified NAT update. */
   3795 #define BCM_L3UC_NAT_TCP        1          /* Enable Unicast NAT updates for TCP
   3796                                               packets only. */
   3797 #define BCM_L3UC_NAT_UDP        2          /* Enable Unicast NAT updates for UDP
   3798                                               packets only. */
   3799 #define BCM_L3UC_NAT            3          /* Enable Unicast NAT updates for any
   3800                                               IPV4 packet. */
   3801 
   3802 /* Large Scale MC NAT controls. */
   3803 #define BCM_L3MC_NAT_NONE                   0          /* Disable the specified
   3804                                                           NAT update. */
   3805 #define BCM_L3MC_DNAT                       1          /* Enable Multicast DNAT
   3806                                                           updates. */
   3807 #define BCM_L3MC_DNAT_WITH_MACDA_UPDATE     2          /* Enable Multicast DNAT
   3808                                                           updates and MACDA
   3809                                                           update. */
   3810 #define BCM_L3MC_SNAT                       3          /* Enable Multicast SNAT
   3811                                                           updates. */
   3812 #define BCM_L3MC_DNAT_SNAT                  4          /* Enable both Multicast
   3813                                                           DNAT and SNAT updates. */
   3814 #define BCM_L3MC_DNAT_SNAT_WITH_MACDA_UPDATE 5          /* Enable both Multicast
   3815                                                           DNAT and SNAT updates
   3816                                                           and MACDA update. */
   3817 #define BCM_L3MC_DNAPT                      6          /* Enable Multicast DNAPT
   3818                                                           updates. */
   3819 #define BCM_L3MC_DNAPT_WITH_MACDA_UPDATE    7          /* Enable Multicast DNAPT
   3820                                                           updates and MACDA
   3821                                                           update. */
   3822 #define BCM_L3MC_SNAPT                      8          /* Enable Multicast SNAPT
   3823                                                           updates. */
   3824 #define BCM_L3MC_DNAPT_SNAPT                9          /* Enable both Multicast
   3825                                                           DNAPT and SNAPT
   3826                                                           updates. */
   3827 #define BCM_L3MC_DNAPT_SNAPT_WITH_MACDA_UPDATE 10         /* Enable both Multicast
   3828                                                           DNAPT and SNAPT
   3829                                                           updates and MACDA
   3830                                                           update. */
   3831 
   3832 #define BCM_SWITCH_CONTROL_L3_LEARN_NONE    0          /* Disable L2 learning
   3833                                                           for all routed
   3834                                                           packets. */
   3835 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV4_UC 0x1        /* Enable L2 learning for
   3836                                                           IPv4 Unicast packets. */
   3837 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV4_MC 0x2        /* Enable L2 learning for
   3838                                                           IPv4 Multicast
   3839                                                           packets. */
   3840 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV6_UC 0x4        /* Enable L2 learning for
   3841                                                           IPv6 Unicast packets. */
   3842 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV6_MC 0x8        /* Enable L2 learning for
   3843                                                           IPv6 Multicast
   3844                                                           packets. */
   3845 #define BCM_SWITCH_CONTROL_L3_LEARN_MPLS    0x10       /* Enable L2 learning for
   3846                                                           MPLS packets. */
   3847 #define BCM_SWITCH_CONTROL_L3_LEARN_ALL     0xffffffff /* Enable L2 learning for
   3848                                                           all routed packets. */
   3849 
   3850 /* Module types for bcmSwitchModuleType. */
   3851 #define BCM_SWITCH_MODULE_UNKNOWN   0          
   3852 #define BCM_SWITCH_MODULE_XGS1      1          
   3853 #define BCM_SWITCH_MODULE_XGS2      2          
   3854 #define BCM_SWITCH_MODULE_XGS3      3          
   3855 
   3856 /* Unicast RPF lookup modes. */
   3857 #define BCM_SWITCH_URPF_DISABLE (0)        
   3858 #define BCM_SWITCH_URPF_LOOSE   (1)        
   3859 #define BCM_SWITCH_URPF_STRICT  (2)        
   3860 
   3861 /* Port header type. */
   3862 #define BCM_SWITCH_PORT_HEADER_TYPE_NONE    (0)        
   3863 #define BCM_SWITCH_PORT_HEADER_TYPE_ETH     (1)        
   3864 #define BCM_SWITCH_PORT_HEADER_TYPE_RAW     (2)        
   3865 #define BCM_SWITCH_PORT_HEADER_TYPE_TM      (3)        
   3866 #define BCM_SWITCH_PORT_HEADER_TYPE_PROG    (4)        
   3867 #define BCM_SWITCH_PORT_HEADER_TYPE_CPU     (5)        
   3868 #define BCM_SWITCH_PORT_HEADER_TYPE_STACKING (6)        
   3869 #define BCM_SWITCH_PORT_HEADER_TYPE_TDM     (7)        
   3870 #define BCM_SWITCH_PORT_HEADER_TYPE_TDM_RAW (8)        
   3871 #define BCM_SWITCH_PORT_HEADER_TYPE_MPLS_RAW (9)        
   3872 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2_PP (10)       
   3873 #define BCM_SWITCH_PORT_HEADER_TYPE_TM_SSP  (11)       
   3874 #define BCM_SWITCH_PORT_HEADER_TYPE_TM_ENCAP (12)       
   3875 #define BCM_SWITCH_PORT_HEADER_TYPE_TM_SSP_ENCAP (13)       
   3876 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2 (14)       
   3877 #define BCM_SWITCH_PORT_HEADER_TYPE_RCH_0   (15)       
   3878 #define BCM_SWITCH_PORT_HEADER_TYPE_RCH_1   (16)       
   3879 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2_PP_JR1_MODE (17)       
   3880 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2_JR1_MODE (18)       
   3881 #define BCM_SWITCH_PORT_HEADER_TYPE_ENCAP_EXTERNAL_CPU (19)       
   3882 
   3883 /* ECMP group mode. */
   3884 #define BCM_SWITCH_ECMP_GROUP_MEMBER_MODE_256 (0)        
   3885 #define BCM_SWITCH_ECMP_GROUP_MEMBER_MODE_1K (1)        
   3886 
   3887 /* Argument formatting macro for bcmSwitchModuleType. */
   3888 #define BCM_SWITCH_CONTROL_MOD_TYPE_PACK(modid, mod_type)  \
   3889     (((modid) << 16) | (mod_type & 0xFFFF)) 
   3890 #define BCM_SWITCH_CONTROL_MODID_UNPACK(arg)  \
   3891     (((arg) >> 16) & 0xFFFF) 
   3892 #define BCM_SWITCH_CONTROL_MODTYPE_UNPACK(arg)  \
   3893     (((arg) >> 0) & 0xFFFF) 
   3894 
   3895 /* Stable locations for bcmSwitchStableSelect */
   3896 #define BCM_SWITCH_STABLE_NONE              (_SHR_SWITCH_STABLE_NONE) 
   3897 #define BCM_SWITCH_STABLE_DEVICE_NEXT_HOP   (_SHR_SWITCH_STABLE_DEVICE_NEXT_HOP) 
   3898 #define BCM_SWITCH_STABLE_DEVICE_EXT_MEM    (_SHR_SWITCH_STABLE_DEVICE_EXT_MEM) 
   3899 #define BCM_SWITCH_STABLE_APPLICATION       (_SHR_SWITCH_STABLE_APPLICATION) 
   3900 #define BCM_SWITCH_STABLE_SHARED_MEM        (_SHR_SWITCH_STABLE_SHARED_MEM) 
   3901 
   3902 /* Flags for automatic link provision clear. */
   3903 #define BCM_SWITCH_LINK_PROV_AUTO_CLEAR     0x00000001 /* Clear link provision
   3904                                                           automatically. */
   3905 #define BCM_SWITCH_LINK_PROV_ALLOW_LIST_EXCLUDE 0x00000002 /* Retain allow list when
   3906                                                           clearing link
   3907                                                           provision. */
   3908 #define BCM_SWITCH_LINK_PROV_BLOCK_LIST_EXCLUDE 0x00000004 /* Retain block list when
   3909                                                           clearing link
   3910                                                           provision. */
   3911 
   3912 #ifndef BCM_HIDE_DISPATCHABLE
   3913 
   3914 /* Configure port-specific and device-wide operating modes. */
   3915 extern int bcm_switch_control_get(
   3916     int unit, 
   3917     bcm_switch_control_t type, 
   3918     int *arg);
   3919 
   3920 /* Configure port-specific and device-wide operating modes. */
   3921 extern int bcm_switch_control_set(
   3922     int unit, 
   3923     bcm_switch_control_t type, 
   3924     int arg);
   3925 
   3926 /* Configure port-specific and device-wide operating modes. */
   3927 extern int bcm_switch_control_port_get(
   3928     int unit, 
   3929     bcm_port_t port, 
   3930     bcm_switch_control_t type, 
   3931     int *arg);
   3932 
   3933 /* Configure port-specific and device-wide operating modes. */
   3934 extern int bcm_switch_control_port_set(
   3935     int unit, 
   3936     bcm_port_t port, 
   3937     bcm_switch_control_t type, 
   3938     int arg);
   3939 
   3940 /* Configure encapsulation priority for the internal priority queue. */
   3941 extern int bcm_switch_rcpu_encap_priority_map_set(
   3942     int unit, 
   3943     uint32 flags, 
   3944     int internal_cpu_pri, 
   3945     int encap_pri);
   3946 
   3947 /* Retrieve encapsulation priority of the internal priority queue. */
   3948 extern int bcm_switch_rcpu_encap_priority_map_get(
   3949     int unit, 
   3950     uint32 flags, 
   3951     int internal_cpu_pri, 
   3952     int *encap_pri);
   3953 
   3954 /* Configure decapsulation priority for the internal priority queue. */
   3955 extern int bcm_switch_rcpu_decap_priority_map_set(
   3956     int unit, 
   3957     int decap_pri, 
   3958     int internal_cpu_pri);
   3959 
   3960 /* Retrieve decapsulation priority of the internal priority queue. */
   3961 extern int bcm_switch_rcpu_decap_priority_map_get(
   3962     int unit, 
   3963     int decap_pri, 
   3964     int *internal_cpu_pri);
   3965 
   3966 #endif /* BCM_HIDE_DISPATCHABLE */
   3967 
   3968 /* Hash tables. */
   3969 typedef enum bcm_switch_hash_table_e {
   3970     bcmHashTableL2 = 0,                 /* L2 hash table. */
   3971     bcmHashTableL3 = 1,                 /* L3 hash table. */
   3972     bcmHashTableVlanTranslate = 2,      /* VLAN Translate hash table. */
   3973     bcmHashTableEgressVlanTranslate = 3, /* Egress VLAN Translate hash table. */
   3974     bcmHashTableMPLS = 4,               /* MPLS hash table. */
   3975     bcmHashTableFlowtrackerEntry = 5,   /* Flowtracker Entry hash table. */
   3976     bcmHashTable__Num = 6 
   3977 } bcm_switch_hash_table_t;
   3978 
   3979 /* L2 address learning modes. */
   3980 typedef enum bcm_switch_l2_location_e {
   3981     bcmSwitchL2LocInternal = 0, /* L2 addresses will be learnt on Internal TCAM */
   3982     bcmSwitchL2LocExternal = 1, /* L2 addresses will be learnt on External TCAM */
   3983     bcmSwitchL2LocIntAndExt = 2 /* L2 addresses are learnt either on internal or
   3984                                    external Tcam */
   3985 } bcm_switch_l2_location_t;
   3986 
   3987 /* Switch table update mode tables. */
   3988 typedef enum bcm_switch_table_update_mode_e {
   3989     bcmSwitchTableUpdateNormal = 0,     /* Calling traverse API e.g.
   3990                                            l2_replace() will act in normal mode,
   3991                                            i.e. set match rule and action and
   3992                                            perform the replace */
   3993     bcmSwitchTableUpdateRuleAdd = 1,    /* Calling traverse API e.g.
   3994                                            l2_replace() will add rule  without
   3995                                            perform the replace */
   3996     bcmSwitchTableUpdateRuleClear = 2,  /* clear all rules e.g. l2_replace()
   3997                                            Calling traverse API */
   3998     bcmSwitchTableUpdateRuleCommit = 3  /* Run traverse API e.g. l2_replace()
   3999                                            with configured rules */
   4000 } bcm_switch_table_update_mode_t;
   4001 
   4002 /* Opaque handle to a hash entry. */
   4003 typedef int bcm_hash_entry_t;
   4004 
   4005 /* Use config structure to setup the offset and mask. */
   4006 #define BCM_SWITCH_HASH_USE_CONFIG  (~0U)      
   4007 
   4008 /* mask length in config struct. */
   4009 #define BCM_SWITCH_HASH_ENTRY_CONFIG_MASK_LENGTH 4          
   4010 
   4011 /* field selection in flexible hash RAM table */
   4012 typedef enum bcm_switch_hash_field_e {
   4013     bcmSwitchFlexHashField0 = 0,        /* field 0 in flexible hash RAM table */
   4014     bcmSwitchFlexHashField1 = 1,        /* field 1 in flexible hash RAM table */
   4015     bcmSwitchFlexHashField2 = 2,        /* field 2 in flexible hash RAM table,
   4016                                            fed to RTAG7 bin 4, support only UDF
   4017                                            type field */
   4018     bcmSwitchFlexHashField3 = 3,        /* field 3 in flexible hash RAM table,
   4019                                            fed to RTAG7 bin 5, support only UDF
   4020                                            type field */
   4021     bcmSwitchFlexHashField4 = 4,        /* field 4 in flexible hash RAM table,
   4022                                            fed to RTAG7 bin 6, support only UDF
   4023                                            type field */
   4024     bcmSwitchFlexHashField5 = 5,        /* field 5 in flexible hash RAM table,
   4025                                            fed to RTAG7 bin 7, support only UDF
   4026                                            type field */
   4027     bcmSwitchFlexHashField6 = 6,        /* field 6 in flexible hash RAM table,
   4028                                            fed to RTAG7 bin 8, support only UDF
   4029                                            type field */
   4030     bcmSwitchFlexHashField7 = 7,        /* field 7 in flexible hash RAM table,
   4031                                            fed to RTAG7 bin 9, support only UDF
   4032                                            type field */
   4033     bcmSwitchFlexHashField8 = 8,        /* field 8 in flexible hash RAM table,
   4034                                            fed to RTAG7 bin 10, support only UDF
   4035                                            type field */
   4036     bcmSwitchFlexHashField9 = 9,        /* field 9 in flexible hash RAM table,
   4037                                            fed to RTAG7 bin 11, support only UDF
   4038                                            type field */
   4039     bcmSwitchFlexHashField10 = 10,      /* field 10 in flexible hash RAM table,
   4040                                            fed to RTAG7 bin 12, support only UDF
   4041                                            type field */
   4042     bcmSwitchFlexHashField11 = 11,      /* field 11 in flexible hash RAM table,
   4043                                            fed to RTAG7 bin 13, support only UDF
   4044                                            type field */
   4045     bcmSwitchFlexHashField12 = 12,      /* field 12 in flexible hash RAM table,
   4046                                            fed to RTAG7 bin 1, support only UDF
   4047                                            type field */
   4048     bcmSwitchFlexHashFieldCount = 13    /* field count in flexible hash RAM
   4049                                            table */
   4050 } bcm_switch_hash_field_t;
   4051 
   4052 /* Flags for flex hash entry configration. */
   4053 #define BCM_SWITCH_HASH_FIELD_TYPE_UDF  1          
   4054 
   4055 /* flexible hash entry configuration struct. */
   4056 typedef struct bcm_switch_hash_entry_config_s {
   4057     uint32 flags;                       /* control flags, default value
   4058                                            indicates offset type flex hash */
   4059     bcm_switch_hash_field_t field;      /* field selector, currently there are
   4060                                            two fields in flex hash ram table */
   4061     uint32 offset;                      /* hash offset when field type is
   4062                                            offset, relative offset in bits from
   4063                                            start in udf_id_t when field type is
   4064                                            udf. The value of (start + offset)
   4065                                            should be a multiple of (8*2) to
   4066                                            ensure the interested field starts at
   4067                                            even byte in a packet */
   4068     int mask_length;                    /* number of bytes in the mask */
   4069     uint8 mask[BCM_SWITCH_HASH_ENTRY_CONFIG_MASK_LENGTH]; /* hash mask */
   4070     bcm_udf_layer_t base_layer;         /* this is unsupported for now */
   4071     bcm_udf_id_t udf_id;                /* udf id when field type is udf chunk */
   4072 } bcm_switch_hash_entry_config_t;
   4073 
   4074 /* bcm_switch_hash_entry_config_t_init */
   4075 extern void bcm_switch_hash_entry_config_t_init(
   4076     bcm_switch_hash_entry_config_t *config);
   4077 
   4078 #ifndef BCM_HIDE_DISPATCHABLE
   4079 
   4080 /* Setup the offset and mask in a flexible hash entry. */
   4081 extern int bcm_switch_hash_entry_set(
   4082     int unit, 
   4083     bcm_hash_entry_t entry, 
   4084     bcm_switch_hash_entry_config_t *config);
   4085 
   4086 /* Setup the offset and mask in a flexible hash entry. */
   4087 extern int bcm_switch_hash_entry_get(
   4088     int unit, 
   4089     bcm_hash_entry_t entry, 
   4090     bcm_switch_hash_entry_config_t *config);
   4091 
   4092 #endif /* BCM_HIDE_DISPATCHABLE */
   4093 
   4094 /* flexible hash CAM/RAM table traverse callback */
   4095 typedef int (*bcm_switch_hash_entry_traverse_cb)(
   4096     int unit, 
   4097     int flags, 
   4098     bcm_hash_entry_t entry, 
   4099     void *user_data);
   4100 
   4101 #ifndef BCM_HIDE_DISPATCHABLE
   4102 
   4103 /* Traverse flexible hash CAM/RAM table */
   4104 extern int bcm_switch_hash_entry_traverse(
   4105     int unit, 
   4106     int flags, 
   4107     bcm_switch_hash_entry_traverse_cb cb_fn, 
   4108     void *user_data);
   4109 
   4110 /* 
   4111  * Set the qualifier data and mask with udf id to assigned flex hash
   4112  * entry
   4113  */
   4114 extern int bcm_switch_hash_qualify_udf(
   4115     int unit, 
   4116     bcm_hash_entry_t entry, 
   4117     bcm_udf_id_t udf_id, 
   4118     int length, 
   4119     uint8 *data, 
   4120     uint8 *mask);
   4121 
   4122 /* 
   4123  * Get the qualifier data and mask with udf id from assigned flex hash
   4124  * enty
   4125  */
   4126 extern int bcm_switch_hash_qualify_udf_get(
   4127     int unit, 
   4128     bcm_hash_entry_t entry, 
   4129     bcm_udf_id_t udf_id, 
   4130     int max_length, 
   4131     uint8 *data, 
   4132     uint8 *mask, 
   4133     int *actual_length);
   4134 
   4135 /* Install a flex hash entry into the hardware tables. */
   4136 extern int bcm_switch_hash_entry_install(
   4137     int unit, 
   4138     bcm_hash_entry_t entry, 
   4139     uint32 offset);
   4140 
   4141 /* Re-install a flex hash entry into the hardware tables. */
   4142 extern int bcm_switch_hash_entry_reinstall(
   4143     int unit, 
   4144     bcm_hash_entry_t entry, 
   4145     uint32 offset);
   4146 
   4147 /* Remove a flex hash entry from the hardware tables. */
   4148 extern int bcm_switch_hash_entry_remove(
   4149     int unit, 
   4150     bcm_hash_entry_t entry);
   4151 
   4152 /* Create a blank flex hash entry. */
   4153 extern int bcm_switch_hash_entry_create(
   4154     int unit, 
   4155     bcm_field_group_t group, 
   4156     bcm_hash_entry_t *entry);
   4157 
   4158 /* Create a blank flex hash entry. */
   4159 extern int bcm_switch_hash_entry_create_qset(
   4160     int unit, 
   4161     bcm_field_qset_t qset, 
   4162     bcm_hash_entry_t *entry);
   4163 
   4164 /* Destroy a flex hash field entry. */
   4165 extern int bcm_switch_hash_entry_destroy(
   4166     int unit, 
   4167     bcm_hash_entry_t entry);
   4168 
   4169 /* bcm_switch_hash_qualify_data */
   4170 extern int bcm_switch_hash_qualify_data(
   4171     int unit, 
   4172     bcm_hash_entry_t entry, 
   4173     int qual_id, 
   4174     uint32 data, 
   4175     uint32 mask);
   4176 
   4177 /* 
   4178  * Gets the maximum number of banks associated with a particular hash
   4179  * memory.
   4180  */
   4181 extern int bcm_switch_hash_banks_max_get(
   4182     int unit, 
   4183     bcm_switch_hash_table_t hash_table, 
   4184     uint32 *bank_count);
   4185 
   4186 /* Configure the hash type for a bank of the particular hash memory. */
   4187 extern int bcm_switch_hash_banks_config_set(
   4188     int unit, 
   4189     bcm_switch_hash_table_t hash_table, 
   4190     uint32 bank_num, 
   4191     int hash_type, 
   4192     uint32 hash_offset);
   4193 
   4194 /* 
   4195  * Gets the configured hash type for a bank of the particular hash
   4196  * memory.
   4197  */
   4198 extern int bcm_switch_hash_banks_config_get(
   4199     int unit, 
   4200     bcm_switch_hash_table_t hash_table, 
   4201     uint32 bank_num, 
   4202     int *hash_type, 
   4203     uint32 *hash_offset);
   4204 
   4205 #endif /* BCM_HIDE_DISPATCHABLE */
   4206 
   4207 /* Entry type for retrieving temperature values. */
   4208 typedef _shr_switch_temperature_monitor_t bcm_switch_temperature_monitor_t;
   4209 
   4210 #ifndef BCM_HIDE_DISPATCHABLE
   4211 
   4212 /* 
   4213  * Retrieve each temperature monitor's current value and peak value. The
   4214  * unit is 0.1 celsius degree
   4215  */
   4216 extern int bcm_switch_temperature_monitor_get(
   4217     int unit, 
   4218     int temperature_max, 
   4219     bcm_switch_temperature_monitor_t *temperature_array, 
   4220     int *temperature_count);
   4221 
   4222 #endif /* BCM_HIDE_DISPATCHABLE */
   4223 
   4224 /* Switch packet info flags. */
   4225 #define BCM_SWITCH_PKT_INFO_SRC_GPORT       (1 << 0)   /* Source gport (module,
   4226                                                           port) field valid. */
   4227 #define BCM_SWITCH_PKT_INFO_VLAN            (1 << 1)   /* VLAN identifier field
   4228                                                           valid. */
   4229 #define BCM_SWITCH_PKT_INFO_ETHERTYPE       (1 << 2)   /* Ethertype field valid. */
   4230 #define BCM_SWITCH_PKT_INFO_SRC_MAC         (1 << 3)   /* Source MAC address
   4231                                                           field valid. */
   4232 #define BCM_SWITCH_PKT_INFO_DST_MAC         (1 << 4)   /* Destination MAC
   4233                                                           address field valid. */
   4234 #define BCM_SWITCH_PKT_INFO_SRC_IP          (1 << 5)   /* Source IPv4 address
   4235                                                           field valid. */
   4236 #define BCM_SWITCH_PKT_INFO_DST_IP          (1 << 6)   /* Destination IPv4
   4237                                                           address field valid. */
   4238 #define BCM_SWITCH_PKT_INFO_SRC_IPV6        (1 << 7)   /* Source IPv6 address
   4239                                                           field valid. */
   4240 #define BCM_SWITCH_PKT_INFO_DST_IPV6        (1 << 8)   /* Destination IPv6
   4241                                                           address field valid. */
   4242 #define BCM_SWITCH_PKT_INFO_PROTOCOL        (1 << 9)   /* IP protocol field
   4243                                                           valid. */
   4244 #define BCM_SWITCH_PKT_INFO_SRC_L4_PORT     (1 << 10)  /* Source L4 port field
   4245                                                           valid. */
   4246 #define BCM_SWITCH_PKT_INFO_DST_L4_PORT     (1 << 11)  /* Destination L4 port
   4247                                                           field valid. */
   4248 #define BCM_SWITCH_PKT_INFO_HASH_TRUNK      (1 << 12)  /* Retrieve trunk hash
   4249                                                           result. */
   4250 #define BCM_SWITCH_PKT_INFO_HASH_MULTIPATH  (1 << 13)  /* Retrieve ECMP hash
   4251                                                           result. */
   4252 #define BCM_SWITCH_PKT_INFO_HASH_UDP_SOURCE_PORT (1 << 14)  /* Retrieve Entropy Value
   4253                                                           of VXLan packet. */
   4254 #define BCM_SWITCH_PKT_INFO_HASH_LBID       (1 << 15)  /* Retrieve LBID. */
   4255 #define BCM_SWITCH_PKT_INFO_HASH_OVERLAY    (1 << 16)  /* Retrieve ECMP hash
   4256                                                           result for overlay
   4257                                                           layer. */
   4258 #define BCM_SWITCH_PKT_INFO_TOP_LABEL       (1 << 17)  /* First label in MPLS
   4259                                                           stack. */
   4260 #define BCM_SWITCH_PKT_INFO_2ND_LABEL       (1 << 18)  /* Secondt label in MPLS
   4261                                                           stack. */
   4262 #define BCM_SWITCH_PKT_INFO_3RD_LABEL       (1 << 19)  /* Third label in MPLS
   4263                                                           stack. */
   4264 #define BCM_SWITCH_PKT_INFO_LABELS_4MSB     (1 << 20)  /* 4MSB of top, second
   4265                                                           and third label in
   4266                                                           MPLS stack. */
   4267 
   4268 /* Packet forward reason for hash calculation. */
   4269 typedef enum bcm_switch_pkt_hash_info_fwd_reason_e {
   4270     bcmSwitchPktHashInfoFwdReasonUnicast = 0, /* Known unicast packet */
   4271     bcmSwitchPktHashInfoFwdReasonIpmc = 1, /* L3 multicast packet */
   4272     bcmSwitchPktHashInfoFwdReasonL2mc = 2, /* L2 multicast packet */
   4273     bcmSwitchPktHashInfoFwdReasonBcast = 3, /* Broadcast packet */
   4274     bcmSwitchPktHashInfoFwdReasonDlf = 4 /* Destination lookup failed packet */
   4275 } bcm_switch_pkt_hash_info_fwd_reason_t;
   4276 
   4277 #define BCM_SWITCH_PKT_HASH_INFO_FWD_REASON_STRINGS \
   4278     "Unicast", \
   4279     "Ipmc", \
   4280     "L2mc", \
   4281     "Bcast", \
   4282     "Dlf" 
   4283 
   4284 /* 
   4285  * Switch packet info structure.
   4286  * 
   4287  * Contains packet fields for calculating aggregate link hash values.
   4288  */
   4289 typedef struct bcm_switch_pkt_info_s {
   4290     uint32 flags;                       /* BCM_SWITCH_PKT_INFO_xxx flags for
   4291                                            packet parameter hashing. */
   4292     bcm_gport_t src_gport;              /* Source module and port,
   4293                                            BCM_GPORT_INVALID to wildcard. */
   4294     bcm_vlan_t vid;                     /* VLAN ID. */
   4295     bcm_ethertype_t ethertype;          /* Ethertype */
   4296     bcm_mac_t src_mac;                  /* Source MAC address. */
   4297     bcm_mac_t dst_mac;                  /* Destination MAC address. */
   4298     bcm_ip_t sip;                       /* Source host IP address (IPv4). */
   4299     bcm_ip_t dip;                       /* Destination host IP address (IPv4). */
   4300     bcm_ip6_t sip6;                     /* Source host IP address (IPv6). */
   4301     bcm_ip6_t dip6;                     /* Destination host IP address (IPv6). */
   4302     uint8 protocol;                     /* IP protocol */
   4303     uint32 src_l4_port;                 /* Source L4 port */
   4304     uint32 dst_l4_port;                 /* Destination L4 port. */
   4305     bcm_gport_t trunk_gport;            /* Gport of trunk type on which packet
   4306                                            will egress. */
   4307     bcm_if_t mpintf;                    /* Multipath egress forwarding object. */
   4308     bcm_switch_pkt_hash_info_fwd_reason_t fwd_reason; /* Packet forward reason. */
   4309     bcm_mpls_label_t top_label;         /* First label in MPLS stack. */
   4310     bcm_mpls_label_t second_label;      /* Second label in MPLS stack. */
   4311     bcm_mpls_label_t third_label;       /* Third label in MPLS stack. */
   4312 } bcm_switch_pkt_info_t;
   4313 
   4314 /* Initialize a bcm_switch_pkt_info_t structure. */
   4315 extern void bcm_switch_pkt_info_t_init(
   4316     bcm_switch_pkt_info_t *pkt_info);
   4317 
   4318 #ifndef BCM_HIDE_DISPATCHABLE
   4319 
   4320 /* 
   4321  * Gets the hash result for the specified link aggregation method using
   4322  * provided packet parameters and device configuration.
   4323  */
   4324 extern int bcm_switch_pkt_info_hash_get(
   4325     int unit, 
   4326     bcm_switch_pkt_info_t *pkt_info, 
   4327     bcm_gport_t *dst_gport, 
   4328     bcm_if_t *dst_intf);
   4329 
   4330 #endif /* BCM_HIDE_DISPATCHABLE */
   4331 
   4332 /* 
   4333  * Read function signature to register for the application provided
   4334  * stable for Level 2 Warm Boot
   4335  */
   4336 typedef int (*bcm_switch_read_func_t)(
   4337     int unit, 
   4338     uint32 *buf, 
   4339     int offset, 
   4340     int nbytes);
   4341 
   4342 /* 
   4343  * Write function signature to register for the application provided
   4344  * stable for Level 2 Warm Boot
   4345  */
   4346 typedef int (*bcm_switch_write_func_t)(
   4347     int unit, 
   4348     uint32 *buf, 
   4349     int offset, 
   4350     int nbytes);
   4351 
   4352 #ifndef BCM_HIDE_DISPATCHABLE
   4353 
   4354 /* 
   4355  * Register read/write functions for the application provided stable for
   4356  * Level 2 Warm Boot
   4357  */
   4358 extern int bcm_switch_stable_register(
   4359     int unit, 
   4360     bcm_switch_read_func_t rf, 
   4361     bcm_switch_write_func_t wf);
   4362 
   4363 #endif /* BCM_HIDE_DISPATCHABLE */
   4364 
   4365 /* Call back function signature to register */
   4366 typedef void (*bcm_switch_event_cb_t)(
   4367     int unit, 
   4368     bcm_switch_event_t event, 
   4369     uint32 arg1, 
   4370     uint32 arg2, 
   4371     uint32 arg3, 
   4372     void *userdata);
   4373 
   4374 #ifndef BCM_HIDE_DISPATCHABLE
   4375 
   4376 /* Register callback function for critical events. */
   4377 extern int bcm_switch_event_register(
   4378     int unit, 
   4379     bcm_switch_event_cb_t cb, 
   4380     void *userdata);
   4381 
   4382 /* Unregister callback function for critical events. */
   4383 extern int bcm_switch_event_unregister(
   4384     int unit, 
   4385     bcm_switch_event_cb_t cb, 
   4386     void *userdata);
   4387 
   4388 #endif /* BCM_HIDE_DISPATCHABLE */
   4389 
   4390 /* Backward compatibility. */
   4391 #define bcm_switch_port_control_get bcm_switch_control_port_set 
   4392 #define bcm_switch_port_control_set bcm_switch_control_port_set 
   4393 
   4394 #define BCM_HASH_ZERO           0x00000001 /* Always return 0 (debug only). */
   4395 #define BCM_HASH_LSB            0x00000002 /* Return LSB of key. */
   4396 #define BCM_HASH_CRC16L         0x00000003 /* Lower bits of CRC-16. */
   4397 #define BCM_HASH_CRC16U         0x00000004 /* Upper bits of CRC-16. */
   4398 #define BCM_HASH_CRC32L         0x00000005 /* Lower bits of CRC-32. */
   4399 #define BCM_HASH_CRC32U         0x00000006 /* Upper bits of CRC-32. */
   4400 #define BCM_HASH_XORU           0x00000007 /* Upper bits of byte by byte XOR. */
   4401 #define BCM_HASH_XORL           0x00000008 /* Lower bits of byte by byte XOR. */
   4402 #define BCM_HASH_OFFSET         0x10000000 /* Use supplied offset value into the
   4403                                               hash value. */
   4404 
   4405 /* Multipath (ECMP/WCMP) hashing. */
   4406 #define BCM_HASH_CONTROL_MULTIPATH_L4PORTS  0x0001     /* Use TCP/UDP ports. */
   4407 #define BCM_HASH_CONTROL_MULTIPATH_DIP      0x0002     /* Use destination IP
   4408                                                           address. */
   4409 #define BCM_HASH_CONTROL_MULTIPATH_USERDEF(_val)  \
   4410     (((_val) & 0xff) << 24) 
   4411 #define BCM_HASH_CONTROL_MULTIPATH_USERDEF_VAL(c)  \
   4412     ((c) >> 24 & 0xff) 
   4413 
   4414 /* Unicast trunk hash controls. */
   4415 #define BCM_HASH_CONTROL_TRUNK_UC_XGS2      0x0004     /* 5695 compatible hash. */
   4416 #define BCM_HASH_CONTROL_TRUNK_UC_SRCPORT   0x0008     /* Use source port. */
   4417 
   4418 /* Non-unicast trunk block mask hash controls. */
   4419 #define BCM_HASH_CONTROL_TRUNK_NUC_DST      0x0010     /* Use destination MAC or
   4420                                                           IP address. */
   4421 #define BCM_HASH_CONTROL_TRUNK_NUC_SRC      0x0020     /* Use source MAC or IP
   4422                                                           address. */
   4423 #define BCM_HASH_CONTROL_TRUNK_NUC_MODPORT  0x0040     /* Use module ID and
   4424                                                           port. */
   4425 
   4426 /* Use enhanced (aka. RTAG7) hashing algorithm. */
   4427 #define BCM_HASH_CONTROL_ECMP_ENHANCE       0x0080     /* Use enhanced ECMP
   4428                                                           hashing. */
   4429 #define BCM_HASH_CONTROL_TRUNK_NUC_ENHANCE  0x0100     /* Use enhanced
   4430                                                           non-unicast trunk
   4431                                                           hashing. */
   4432 #define BCM_HASH_CONTROL_ECMP_OVERLAY_ENHANCE 0x0200     /* Use enhanced ECMP
   4433                                                           hashing for overlay
   4434                                                           layer. */
   4435 
   4436 /* Enhanced hash field config control. */
   4437 #define BCM_HASH_FIELD_CONFIG_CRC16XOR8     0x00000001 /* 8-bit CRC16 + 8-bit
   4438                                                           XOR8. */
   4439 #define BCM_HASH_FIELD_CONFIG_CRC16XOR4     0x00000002 /* 8-bit CRC16 + 8-bit
   4440                                                           XOR4. */
   4441 #define BCM_HASH_FIELD_CONFIG_CRC16XOR2     0x00000003 /* 8-bit CRC16 + 8-bit
   4442                                                           XOR2. */
   4443 #define BCM_HASH_FIELD_CONFIG_CRC16XOR1     0x00000004 /* 8-bit CRC16 + 8-bit
   4444                                                           XOR1. */
   4445 #define BCM_HASH_FIELD_CONFIG_CRC16         0x00000005 /* 16-bit CRC16. */
   4446 #define BCM_HASH_FIELD_CONFIG_XOR16         0x00000006 /* 16-bit XOR. */
   4447 #define BCM_HASH_FIELD_CONFIG_CRC16CCITT    0x00000007 /* 16-bit CRC using CCITT
   4448                                                           polynomial. */
   4449 #define BCM_HASH_FIELD_CONFIG_CRC32LO       0x00000008 /* Lower 16-bit of CRC32. */
   4450 #define BCM_HASH_FIELD_CONFIG_CRC32HI       0x00000009 /* Higher 16-bit of
   4451                                                           CRC32. */
   4452 #define BCM_HASH_FIELD_CONFIG_CRC32_ETH_LO  0x0000000a /* Lower 16-bit of
   4453                                                           Ethernet CRC32. */
   4454 #define BCM_HASH_FIELD_CONFIG_CRC32_ETH_HI  0x0000000b /* Higher 16-bit of
   4455                                                           Ethernet CRC32. */
   4456 #define BCM_HASH_FIELD_CONFIG_CRC32_KOOPMAN_LO 0x0000000c /* Lower 16-bit of
   4457                                                           Koopman CRC32. */
   4458 #define BCM_HASH_FIELD_CONFIG_CRC32_KOOPMAN_HI 0x0000000d /* Higher 16-bit of
   4459                                                           Koopman CRC32. */
   4460 
   4461 /* Enhanced hash field selection disable control. */
   4462 #define BCM_HASH_FIELD0_DISABLE_IP4         0x00000001 /* Selection 0 for IPv4
   4463                                                           packets. */
   4464 #define BCM_HASH_FIELD1_DISABLE_IP4         0x00000002 /* Selection 1 for IPv4
   4465                                                           packets. */
   4466 #define BCM_HASH_FIELD0_DISABLE_IP6         0x00000004 /* Selection 0 for IPv6
   4467                                                           packets. */
   4468 #define BCM_HASH_FIELD1_DISABLE_IP6         0x00000008 /* Selection 1 for IPv6
   4469                                                           packets. */
   4470 #define BCM_HASH_FIELD0_DISABLE_MPLS        0x00000010 /* Selection 0 for MPLS
   4471                                                           packets. */
   4472 #define BCM_HASH_FIELD1_DISABLE_MPLS        0x00000020 /* Selection 1 for MPLS
   4473                                                           packets. */
   4474 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_IP 0x00000040 /* Selection 0 for tunnel
   4475                                                           IPv4 over IPv4
   4476                                                           packets. */
   4477 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_IP 0x00000080 /* Selection 1 for tunnel
   4478                                                           IPv4 over IPv4
   4479                                                           packets. */
   4480 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_IP 0x00000100 /* Selection 0 for tunnel
   4481                                                           IPv6 over IPv4
   4482                                                           packets. */
   4483 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_IP 0x00000200 /* Selection 1 for tunnel
   4484                                                           IPv6 over IPv4
   4485                                                           packets. */
   4486 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_GRE 0x00000400 /* Selection 0 for tunnel
   4487                                                           IPv4 over GRE packets. */
   4488 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_GRE 0x00000800 /* Selection 1 for tunnel
   4489                                                           IPv4 over GRE packets. */
   4490 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_GRE 0x00001000 /* Selection 0 for tunnel
   4491                                                           IPv6 over GRE packets. */
   4492 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_GRE 0x00002000 /* Selection 1 for tunnel
   4493                                                           IPv6 over GRE packets. */
   4494 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_IP6 0x00004000 /* Selection 0 for tunnel
   4495                                                           IPv4 over IPv6
   4496                                                           packets. */
   4497 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_IP6 0x00008000 /* Selection 1 for tunnel
   4498                                                           IPv4 over IPv6
   4499                                                           packets. */
   4500 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_IP6 0x00010000 /* Selection 0 for tunnel
   4501                                                           IPv6 over IPv6
   4502                                                           packets. */
   4503 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_IP6 0x00020000 /* Selection 1 for tunnel
   4504                                                           IPv6 over IPv6
   4505                                                           packets. */
   4506 #define BCM_HASH_FIELD0_DISABLE_MIM         0x00040000 /* Selection 0 for MIM
   4507                                                           packets. */
   4508 #define BCM_HASH_FIELD1_DISABLE_MIM         0x00080000 /* Selection 1 for MIM
   4509                                                           packets. */
   4510 #define BCM_HASH_FIELD0_DISABLE_FCOE        0x00100000 /* Selection 0 for FCoE
   4511                                                           packets. */
   4512 #define BCM_HASH_FIELD1_DISABLE_FCOE        0x00200000 /* Selection 1 for FCoE
   4513                                                           packets. */
   4514 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_GRE_IP4 0x00400000 /* Selection 0 for tunnel
   4515                                                           IPv4 over GRE IPv4
   4516                                                           packets. */
   4517 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_GRE_IP6 0x00800000 /* Selection 0 for tunnel
   4518                                                           IPv4 over GRE IPv6
   4519                                                           packets. */
   4520 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_GRE_IP4 0x01000000 /* Selection 1 for tunnel
   4521                                                           IPv4 over GRE IPv4
   4522                                                           packets. */
   4523 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_GRE_IP6 0x02000000 /* Selection 1 for tunnel
   4524                                                           IPv4 over GRE IPv6
   4525                                                           packets. */
   4526 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_GRE_IP4 0x04000000 /* Selection 0 for tunnel
   4527                                                           IPv6 over GRE IPv4
   4528                                                           packets. */
   4529 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_GRE_IP6 0x08000000 /* Selection 0 for tunnel
   4530                                                           IPv6 over GRE IPv6
   4531                                                           packets. */
   4532 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_GRE_IP4 0x10000000 /* Selection 1 for tunnel
   4533                                                           IPv6 over GRE IPv4
   4534                                                           packets. */
   4535 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_GRE_IP6 0x20000000 /* Selection 1 for tunnel
   4536                                                           IPv6 over GRE IPv6
   4537                                                           packets. */
   4538 #define BCM_HASH_FIELD0_DISABLE_VXLAN       0x40000000 /* Selection 0 for tunnel
   4539                                                           VXLAN packets. */
   4540 #define BCM_HASH_FIELD1_DISABLE_VXLAN       0x80000000 /* Selection 1 for tunnel
   4541                                                           VXLAN packets. */
   4542 
   4543 /* 
   4544  * Extended flags for bcmSwitchHashSelectControlExtended switch control
   4545  * type to disable enhanced hash field selection control.
   4546  */
   4547 #define BCM_HASH_FIELD0_DISABLE_ROCE1       0x00000001 /* Hash block A field
   4548                                                           selection disable for
   4549                                                           RoCEv1 packet. */
   4550 #define BCM_HASH_FIELD1_DISABLE_ROCE1       0x00000002 /* Hash block B field
   4551                                                           selection disable for
   4552                                                           RoCEv1 packet. */
   4553 #define BCM_HASH_FIELD0_DISABLE_ROCE2_IP4   0x00000004 /* Hash block A field
   4554                                                           selection disable for
   4555                                                           RoCEv2 IPv4 packet. */
   4556 #define BCM_HASH_FIELD1_DISABLE_ROCE2_IP4   0x00000008 /* Hash block B field
   4557                                                           selection disable for
   4558                                                           RoCEv2 IPv4 packet. */
   4559 #define BCM_HASH_FIELD0_DISABLE_ROCE2_IP6   0x00000010 /* Hash block A field
   4560                                                           selection disable for
   4561                                                           RoCEv2 IPv6 packet. */
   4562 #define BCM_HASH_FIELD1_DISABLE_ROCE2_IP6   0x00000020 /* Hash block B field
   4563                                                           selection disable for
   4564                                                           RoCEv2 IPv6 packet. */
   4565 
   4566 /* UDF hashing select. */
   4567 #define BCM_HASH_FIELD0_ENABLE_UDFHASH  0x00000001 /* UDF hashing enable on
   4568                                                       engine 0. */
   4569 #define BCM_HASH_FIELD1_ENABLE_UDFHASH  0x00000002 /* UDF hashing enable on
   4570                                                       engine 1. */
   4571 
   4572 /* Enhanced hash field selection. */
   4573 #define BCM_HASH_FIELD_DSTMOD           0x00000001 /* Destination module ID. */
   4574 #define BCM_HASH_FIELD_DSTPORT          0x00000002 /* Destination port ID. */
   4575 #define BCM_HASH_FIELD_SRCMOD           0x00000004 /* Source modle ID. */
   4576 #define BCM_HASH_FIELD_SRCPORT          0x00000008 /* Souce port ID. */
   4577 #define BCM_HASH_FIELD_PROTOCOL         0x00000010 /* Protocol ID. */
   4578 #define BCM_HASH_FIELD_DSTL4            0x00000020 /* Destination L4 port. */
   4579 #define BCM_HASH_FIELD_SRCL4            0x00000040 /* Source L4 port. */
   4580 #define BCM_HASH_FIELD_L4               (BCM_HASH_FIELD_SRCL4 | BCM_HASH_FIELD_DSTL4) /* The entire L4 field. */
   4581 #define BCM_HASH_FIELD_VLAN             0x00000080 /* VLAN ID. */
   4582 #define BCM_HASH_FIELD_IP4DST_LO        0x00000100 /* IPv4 destination address
   4583                                                       lower 16 bits. */
   4584 #define BCM_HASH_FIELD_IP4DST_HI        0x00000200 /* IPv4 destination address
   4585                                                       upper 16 bits. */
   4586 #define BCM_HASH_FIELD_IP4SRC_LO        0x00000400 /* IPv4 source address lower
   4587                                                       16 bits. */
   4588 #define BCM_HASH_FIELD_IP4SRC_HI        0x00000800 /* IPv4 source address upper
   4589                                                       16 bits. */
   4590 #define BCM_HASH_FIELD_IP6DST_LO        0x00001000 /* IPv6 collapsed destination
   4591                                                       address lower 16 bits. */
   4592 #define BCM_HASH_FIELD_IP6DST_HI        0x00002000 /* IPv6 collapsed destination
   4593                                                       address upper 16 bits. */
   4594 #define BCM_HASH_FIELD_IP6SRC_LO        0x00004000 /* IPv6 collapsed source
   4595                                                       address lower 16 bits. */
   4596 #define BCM_HASH_FIELD_IP6SRC_HI        0x00008000 /* IPv6 collapsed source
   4597                                                       address upper 16 bits. */
   4598 #define BCM_HASH_FIELD_FLOWLABEL_LO     BCM_HASH_FIELD_DSTMOD /* IPv6 flow label lower 16
   4599                                                       bits. */
   4600 #define BCM_HASH_FIELD_FLOWLABEL_HI     BCM_HASH_FIELD_DSTPORT /* IPv6 flow label upper 4
   4601                                                       bits. */
   4602 #define BCM_HASH_FIELD_NXT_HDR          0x00010000 /* Next header. */
   4603 #define BCM_HASH_FIELD_ETHER_TYPE       0x00020000 /* Ether type. */
   4604 #define BCM_HASH_FIELD_MACDA_LO         0x00040000 /* MAC destination address
   4605                                                       lower 16 bits. */
   4606 #define BCM_HASH_FIELD_MACDA_MI         0x00080000 /* MAC destination address
   4607                                                       middle 16 bits. */
   4608 #define BCM_HASH_FIELD_MACDA_HI         0x00100000 /* MAC destination address
   4609                                                       upper 16 bits. */
   4610 #define BCM_HASH_FIELD_MACSA_LO         0x00200000 /* MAC source address lower
   4611                                                       16 bits. */
   4612 #define BCM_HASH_FIELD_MACSA_MI         0x00400000 /* MAC source address middle
   4613                                                       16 bits. */
   4614 #define BCM_HASH_FIELD_MACSA_HI         0x00800000 /* MAC source address upper
   4615                                                       16 bits. */
   4616 #define BCM_HASH_FIELD_LOAD_BALANCE     0x01000000 /* Load balance ID - HiGig2
   4617                                                       only. */
   4618 #define BCM_HASH_FIELD_RSVD_LABELS      0x02000000 /* Reserved second label, top
   4619                                                       label. */
   4620 #define BCM_HASH_FIELD_2ND_LABEL        0x04000000 /* Second label. */
   4621 #define BCM_HASH_FIELD_TOP_LABEL        0x08000000 /* Top label. */
   4622 #define BCM_HASH_FIELD_LOOKUP_ID_LO     0x10000000 /* Used for ISID[15:0]. */
   4623 #define BCM_HASH_FIELD_LOOKUP_ID_HI     0x20000000 /* Used for ISID[23:16]. */
   4624 #define BCM_HASH_FIELD_CNTAG_FLOW_ID    0x40000000 /* CNTAG flow ID. */
   4625 
   4626 /* Enhanced field selection bit map for RoCE hash field selection. */
   4627 #define BCM_HASH_ROCE_FIELD_DSTMOD          BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   4628 #define BCM_HASH_ROCE_FIELD_DSTPORT         BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   4629 #define BCM_HASH_ROCE_FIELD_SRCMOD          BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   4630 #define BCM_HASH_ROCE_FIELD_SRCPORT         BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   4631 #define BCM_HASH_ROCE_FIELD_FLOWLABEL_LO    BCM_HASH_FIELD_DSTMOD /* RoCE flow label lower
   4632                                                           16 bits. */
   4633 #define BCM_HASH_ROCE_FIELD_FLOWLABEL_HI    BCM_HASH_FIELD_DSTPORT /* RoCE flow label upper
   4634                                                           4 bits. */
   4635 #define BCM_HASH_ROCE_FIELD_DSTL4           BCM_HASH_FIELD_DSTL4 /* RoCEv2 L4 destination
   4636                                                           port. */
   4637 #define BCM_HASH_ROCE_FIELD_SRCL4           BCM_HASH_FIELD_SRCL4 /* RoCEv2 L4 source port. */
   4638 #define BCM_HASH_ROCE_FIELD_VLAN            BCM_HASH_FIELD_VLAN /* VLAN ID. */
   4639 #define BCM_HASH_ROCE_FIELD_MACDA_LO        BCM_HASH_FIELD_MACDA_LO /* RoCEv1 MAC destination
   4640                                                           address lower 16 bits. */
   4641 #define BCM_HASH_ROCE_FIELD_MACDA_MI        BCM_HASH_FIELD_MACDA_MI /* RoCEv1 MAC destination
   4642                                                           address middle 16
   4643                                                           bits. */
   4644 #define BCM_HASH_ROCE_FIELD_MACDA_HI        BCM_HASH_FIELD_MACDA_HI /* RoCEv1 MAC destination
   4645                                                           address upper 16 bits. */
   4646 #define BCM_HASH_ROCE_FIELD_MACSA_LO        BCM_HASH_FIELD_MACSA_LO /* RoCEv1 MAC source
   4647                                                           address lower 16 bits. */
   4648 #define BCM_HASH_ROCE_FIELD_MACSA_MI        BCM_HASH_FIELD_MACSA_MI /* RoCEv1 MAC source
   4649                                                           address middle 16
   4650                                                           bits. */
   4651 #define BCM_HASH_ROCE_FIELD_MACSA_HI        BCM_HASH_FIELD_MACSA_HI /* RoCEv1 MAC source
   4652                                                           address upper16 bits. */
   4653 #define BCM_HASH_ROCE_FIELD_IP4DST_LO       BCM_HASH_FIELD_IP4DST_LO /* RoCEv2 IPv4
   4654                                                           destination address
   4655                                                           lower 16 bits. */
   4656 #define BCM_HASH_ROCE_FIELD_IP4DST_HI       BCM_HASH_FIELD_IP4DST_HI /* RoCEv2 IPv4
   4657                                                           destination address
   4658                                                           upper 16 bits. */
   4659 #define BCM_HASH_ROCE_FIELD_IP4SRC_LO       BCM_HASH_FIELD_IP4SRC_LO /* RoCEv2 IPv4 source
   4660                                                           address lower 16 bits. */
   4661 #define BCM_HASH_ROCE_FIELD_IP4SRC_HI       BCM_HASH_FIELD_IP4SRC_HI /* RoCEv2 IPv4 source
   4662                                                           address upper 16 bits. */
   4663 #define BCM_HASH_ROCE_FIELD_IP6DST_LO       BCM_HASH_FIELD_IP6DST_LO /* RoCEv2 IPv6 collapsed
   4664                                                           destination address
   4665                                                           lower 16 bits. */
   4666 #define BCM_HASH_ROCE_FIELD_IP6DST_HI       BCM_HASH_FIELD_IP6DST_HI /* RoCEv2 IPv6 collapsed
   4667                                                           destination address
   4668                                                           upper 16 bits. */
   4669 #define BCM_HASH_ROCE_FIELD_IP6SRC_LO       BCM_HASH_FIELD_IP6SRC_LO /* RoCEv2 IPv6 collapsed
   4670                                                           source address lower
   4671                                                           16 bits. */
   4672 #define BCM_HASH_ROCE_FIELD_IP6SRC_HI       BCM_HASH_FIELD_IP6SRC_HI /* RoCEv2 IPv6 collapsed
   4673                                                           source address upper
   4674                                                           16 bits. */
   4675 #define BCM_HASH_ROCE_FIELD_BTH_DSTQP_COLLAPSED 0x00010000 /* RoCE Collapsed
   4676                                                           Destination Queue Pair
   4677                                                           in BTH (Base Transport
   4678                                                           Header). */
   4679 #define BCM_HASH_ROCE_FIELD_BTH_PARTITION_KEY 0x00020000 /* RoCE Partition Key in
   4680                                                           BTH (Base Transport
   4681                                                           Header). */
   4682 
   4683 /* Enhanced hash MPLS field selection. */
   4684 #define BCM_HASH_MPLS_FIELD_DSTMOD          BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   4685 #define BCM_HASH_MPLS_FIELD_DSTPORT         BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   4686 #define BCM_HASH_MPLS_FIELD_SRCMOD          BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   4687 #define BCM_HASH_MPLS_FIELD_SRCPORT         BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   4688 #define BCM_HASH_MPLS_FIELD_3RD_LABEL       0x00000010 /* Third label. */
   4689 #define BCM_HASH_MPLS_FIELD_LABELS_4MSB     0x00000020 /* Most significant 4
   4690                                                           bits of top, second,
   4691                                                           and third label. */
   4692 #define BCM_HASH_MPLS_FIELD_IP4DST_LO       BCM_HASH_FIELD_IP4DST_LO /* IPv4 destination
   4693                                                           address lower 16 bits. */
   4694 #define BCM_HASH_MPLS_FIELD_IP4DST_HI       BCM_HASH_FIELD_IP4DST_HI /* IPv4 destination
   4695                                                           address upper 16 bits. */
   4696 #define BCM_HASH_MPLS_FIELD_IP4SRC_LO       BCM_HASH_FIELD_IP4SRC_LO /* IPv4 source address
   4697                                                           lower 16 bits. */
   4698 #define BCM_HASH_MPLS_FIELD_IP4SRC_HI       BCM_HASH_FIELD_IP4SRC_HI /* IPv4 source address
   4699                                                           upper 16 bits. */
   4700 #define BCM_HASH_MPLS_FIELD_3RD_LABEL_4MSB_5TH_LABEL BCM_HASH_FIELD_IP6DST_LO /* Third label or 4 most
   4701                                                           significant bits of
   4702                                                           5th label. */
   4703 #define BCM_HASH_MPLS_FIELD_LABELS_4MSB_3RD_LABEL BCM_HASH_FIELD_IP6DST_HI /* Most significant 4
   4704                                                           bits of top, second,
   4705                                                           and third label or 3rd
   4706                                                           label alone. */
   4707 #define BCM_HASH_MPLS_FIELD_IP4DST_IP6DST_LO_5TH_LABEL BCM_HASH_FIELD_IP6SRC_LO /* IPv4 destination
   4708                                                           address lower 16 bits
   4709                                                           or IPv6 collapsed
   4710                                                           destination address
   4711                                                           lower 16 bits or 5th
   4712                                                           label. */
   4713 #define BCM_HASH_MPLS_FIELD_IP4DST_IP6DST_HI_4TH_LABEL BCM_HASH_FIELD_IP6SRC_HI /* IPv4 destination
   4714                                                           address upper 16 bits
   4715                                                           or IPv6 collapsed
   4716                                                           destination address
   4717                                                           upper 16 bits or 4th
   4718                                                           label. */
   4719 #define BCM_HASH_MPLS_FIELD_IP4SRC_IP6SRC_LO_4MSB_4TH_LABEL BCM_HASH_FIELD_NXT_HDR /* IPv4 source address
   4720                                                           lower 16 bits or IPv6
   4721                                                           collapsed source
   4722                                                           address lower 16 bits
   4723                                                           or 4 most significant
   4724                                                           bits of 4th label. */
   4725 #define BCM_HASH_MPLS_FIELD_IP4SRC_IP6SRC_HI_4MSB BCM_HASH_FIELD_ETHER_TYPE /* IPv4 source address
   4726                                                           upper 16 bits or IPv6
   4727                                                           collapsed source
   4728                                                           address upper 16 bits
   4729                                                           or 4 most significant
   4730                                                           bits of 1st,2nd,3rd
   4731                                                           labels. */
   4732 #define BCM_HASH_MPLS_FIELD_2ND_LABEL       BCM_HASH_FIELD_2ND_LABEL /* Second label. */
   4733 #define BCM_HASH_MPLS_FIELD_TOP_LABEL       BCM_HASH_FIELD_TOP_LABEL /* Top label. */
   4734 #define BCM_HASH_MPLS_FIELD_CNTAG_FLOW_ID   BCM_HASH_FIELD_CNTAG_FLOW_ID /* CNTAG flow ID. */
   4735 
   4736 /* Enhanced hash FCOE field selection. */
   4737 #define BCM_HASH_FCOE_FIELD_DSTMOD          BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   4738 #define BCM_HASH_FCOE_FIELD_DSTPORT         BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   4739 #define BCM_HASH_FCOE_FIELD_SRCMOD          BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   4740 #define BCM_HASH_FCOE_FIELD_SRCPORT         BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   4741 #define BCM_HASH_FCOE_FIELD_VLAN            0x00000010 /* VLAN ID. */
   4742 #define BCM_HASH_FCOE_FIELD_VIRTUAL_FABRIC_ID 0x00000020 /* Virtual Fabric ID. */
   4743 #define BCM_HASH_FCOE_FIELD_RESPONDER_EXCHANGE_ID 0x00000040 /* Responder Exchange_ID. */
   4744 #define BCM_HASH_FCOE_FIELD_ORIGINATOR_EXCHANGE_ID 0x00000080 /* Originator
   4745                                                           Exchange_ID. */
   4746 #define BCM_HASH_FCOE_FIELD_DST_ID_LO       0x00000100 /* Destination_ID lower
   4747                                                           16 bits. */
   4748 #define BCM_HASH_FCOE_FIELD_DST_ID_HI       0x00000200 /* Destination_ID upper
   4749                                                           16 bits. */
   4750 #define BCM_HASH_FCOE_FIELD_SRC_ID_LO       0x00000400 /* Source_ID lower 16
   4751                                                           bits. */
   4752 #define BCM_HASH_FCOE_FIELD_SRC_ID_HI       0x00000800 /* Source_ID upper 16
   4753                                                           bits. */
   4754 #define BCM_HASH_FCOE_FIELD_CNTAG_FLOW_ID   BCM_HASH_FIELD_CNTAG_FLOW_ID /* CNTAG flow ID. */
   4755 
   4756 /* Enhanced hash Trill field selection. */
   4757 #define BCM_HASH_TRILL_FIELD_DSTMOD         BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   4758 #define BCM_HASH_TRILL_FIELD_DSTPORT        BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   4759 #define BCM_HASH_TRILL_FIELD_SRCMOD         BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   4760 #define BCM_HASH_TRILL_FIELD_SRCPORT        BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   4761 #define BCM_HASH_TRILL_FIELD_VLAN           0x00000010 /* VLAN ID. */
   4762 #define BCM_HASH_TRILL_FIELD_ETHER_TYPE     0x00000020 /* Ether type. */
   4763 #define BCM_HASH_TRILL_FIELD_MACDA_LO       0x00000040 /* MAC destination
   4764                                                           address lower 16 bits. */
   4765 #define BCM_HASH_TRILL_FIELD_MACDA_MI       0x00000080 /* MAC destination
   4766                                                           address middle 16
   4767                                                           bits. */
   4768 #define BCM_HASH_TRILL_FIELD_MACSA_LO       0x00000100 /* MAC source address
   4769                                                           lower 16 bits. */
   4770 #define BCM_HASH_TRILL_FIELD_MACSA_MI       0x00000200 /* MAC source address
   4771                                                           middle 16 bits. */
   4772 #define BCM_HASH_TRILL_FIELD_ING_RBRIDGE_NAME 0x00000400 /* Ingress RBridge
   4773                                                           Nickname. */
   4774 #define BCM_HASH_TRILL_FIELD_EGR_RBRIDGE_NAME 0x00000800 /* Egress RBridge
   4775                                                           Nickname. */
   4776 
   4777 /* Stacking mode select. */
   4778 #define BCM_MIRROR_STACK_MODE_XGS3  0          /* Stacking with BCM5650x
   4779                                                   (BCM5610x, BCM5630x). */
   4780 #define BCM_MIRROR_STACK_MODE_XGS1  1          /* Stacking with BCM5670. */
   4781 #define BCM_MIRROR_STACK_MODE_XGS2  2          /* Stacking with BCM5675-A0. */
   4782 
   4783 #define BCM_COLOR_PRIORITY      0          /* Priority->COLOR mapping. */
   4784 #define BCM_COLOR_OUTER_CFI     1          /* SPVLAN CFI->COLOR mapping. */
   4785 #define BCM_COLOR_INNER_CFI     2          /* CVLAN CFI->COLOR mapping. */
   4786 
   4787 #define BCM_HASH_MPLS_LABEL_NONE        0          /* Normal processing for MPLS
   4788                                                       label stack, i.e. hash
   4789                                                       according to forwarding
   4790                                                       header configuration. */
   4791 #define BCM_HASH_MPLS_LABEL_BOS_START   1          /* Hashing from BOS label,
   4792                                                       skipping all other label. */
   4793 #define BCM_HASH_MPLS_LABEL_BOS_SKIP    2          /* Hashing from header next
   4794                                                       to BOS label, skipping all
   4795                                                       MPLS labels. */
   4796 
   4797 /* IGM/MLD Action select. */
   4798 #define BCM_SWITCH_FORWARD      0x00000001 
   4799 #define BCM_SWITCH_FLOOD        0x00000002 
   4800 #define BCM_SWITCH_DROP         0x00000004 
   4801 #define BCM_SWITCH_CPU          0x00000008 
   4802 
   4803 /* Switch features bypass mode */
   4804 #define BCM_SWITCH_BYPASS_NONE      0          /* No switch logic bypassed. */
   4805 #define BCM_SWITCH_BYPASS_L3_ONLY   1          /* L3 switch logic bypassed. */
   4806 #define BCM_SWITCH_BYPASS_L3_AND_FP 2          /* L3 and FP switch logic
   4807                                                   bypassed. */
   4808 
   4809 /* Switch Remote CPU packet encapsulation priority mapping options. */
   4810 #define BCM_SWITCH_REMOTE_CPU_ENCAP_IEEE    0x00000001 /* Use 802.1P Priority
   4811                                                           mapping for Remote CPU
   4812                                                           packet encapsulation. */
   4813 #define BCM_SWITCH_REMOTE_CPU_ENCAP_HIGIG2  0x00000002 /* Use module header
   4814                                                           traffic class mapping
   4815                                                           for Remote CPU packet
   4816                                                           encapsulation. */
   4817 #define BCM_SWITCH_REMOTE_CPU_ENCAP_IEEE_CPU_TC 0x00000004 /* Use status header
   4818                                                           traffic class mapping
   4819                                                           for Remote CPU packet
   4820                                                           encapsulation. */
   4821 
   4822 /* Switch features filter bypass control modes */
   4823 #define BCM_FILTER_NONE             _SHR_SWITCH_FILTER_NONE /* No switch filter bypass. */
   4824 #define BCM_FILTER_RX_CRCCHK        _SHR_SWITCH_FILTER_RX_CRCCHK /* RX filter bypass CRC check. */
   4825 #define BCM_FILTER_DOS_TOCPU        _SHR_SWITCH_FILTER_DOS_TOCPU /* DOS filter bypass at the frame
   4826                                                   to CPU. */
   4827 #define BCM_FILTER_STP_USERADDR     _SHR_SWITCH_FILTER_STP_USERADDR /* STP filter bypass L2 User
   4828                                                   address. */
   4829 #define BCM_FILTER_STP_MAC0X        _SHR_SWITCH_FILTER_STP_MAC0X /* STP filter bypass the frame at
   4830                                                   MAC=0180c2-00000x. */
   4831 #define BCM_FILTER_VLAN_IGMP_MLD    _SHR_SWITCH_FILTER_VLAN_IGMP_MLD /* VLAN filter bypass IGMP and
   4832                                                   MLD. */
   4833 #define BCM_FILTER_VLAN_ARP_DHCP    _SHR_SWITCH_FILTER_VLAN_ARP_DHCP /* VLAN filter bypass ARP and
   4834                                                   DHCP */
   4835 #define BCM_FILTER_VLAN_MIIM        _SHR_SWITCH_FILTER_VLAN_MIIM /* VLAN filter bypass IMP ingress
   4836                                                   frame. */
   4837 #define BCM_FILTER_VLAN_MCAST       _SHR_SWITCH_FILTER_VLAN_MCAST /* VLAN filter bypass MCAST
   4838                                                   frame. */
   4839 #define BCM_FILTER_VLAN_RSV_MCAST   _SHR_SWITCH_FILTER_VLAN_RSV_MCAST /* VLAN filter bypass Reserved
   4840                                                   MCAST frame. */
   4841 #define BCM_FILTER_VLAN_USERADDR    _SHR_SWITCH_FILTER_VLAN_USERADDR /* VLAN filter bypass L2 User
   4842                                                   address. */
   4843 #define BCM_FILTER_EAP_USERADDR     _SHR_SWITCH_FILTER_EAP_USERADDR /* EAP filter bypass L2 User
   4844                                                   address. */
   4845 #define BCM_FILTER_EAP_DHCP         _SHR_SWITCH_FILTER_EAP_DHCP /* EAP filter bypass DHCP. */
   4846 #define BCM_FILTER_EAP_ARP          _SHR_SWITCH_FILTER_EAP_ARP /* EAP filter bypass EAP and ARP. */
   4847 #define BCM_FILTER_EAP_MAC_22_2F    _SHR_SWITCH_FILTER_EAP_MAC_22_2F /* EAP filter bypass the frame at
   4848                                                   MAC=0180c2-000021 to
   4849                                                   0180c2-00002F. */
   4850 #define BCM_FILTER_EAP_MAC_21       _SHR_SWITCH_FILTER_EAP_MAC_21 /* EAP filter bypass the frame at
   4851                                                   MAC=0180c2-000021. */
   4852 #define BCM_FILTER_EAP_MAC_20       _SHR_SWITCH_FILTER_EAP_MAC_20 /* EAP filter bypass the frame at
   4853                                                   MAC=0180c2-000020. */
   4854 #define BCM_FILTER_EAP_MAC_11_1F    _SHR_SWITCH_FILTER_EAP_MAC_11_1F /* EAP filter bypass the frame at
   4855                                                   MAC=0180c2-000011 to
   4856                                                   0180c2-00001F. */
   4857 #define BCM_FILTER_EAP_MAC_10       _SHR_SWITCH_FILTER_EAP_MAC_10 /* EAP filter bypass the frame at
   4858                                                   MAC=0180c2-000010. */
   4859 #define BCM_FILTER_EAP_MAC_0X       _SHR_SWITCH_FILTER_EAP_MAC_0X /* EAP filter bypass the frame at
   4860                                                   MAC=0180c2-00000x. */
   4861 #define BCM_FILTER_EAP_BPDU         _SHR_SWITCH_FILTER_EAP_BPDU /* EAP filter bypass BPDU frame. */
   4862 #define BCM_FILTER_CONTROL_COUNT    _SHR_SWITCH_FILTER_CONTROL_COUNT /* The count of filter bypass
   4863                                                   control items. */
   4864 
   4865 /* LED functions group */
   4866 #define BCM_LED_FUNCGRP_0       _SHR_SWITCH_LED_FUNCGRP_0 
   4867 #define BCM_LED_FUNCGRP_1       _SHR_SWITCH_LED_FUNCGRP_1 
   4868 
   4869 /* LED function items */
   4870 #define BCM_LED_FUNC_NONE           _SHR_SWITCH_LED_FUNC_NONE 
   4871 #define BCM_LED_FUNC_PHYLED4        _SHR_SWITCH_LED_FUNC_PHYLED4 
   4872 #define BCM_LED_FUNC_LNK            _SHR_SWITCH_LED_FUNC_LNK 
   4873 #define BCM_LED_FUNC_DPX            _SHR_SWITCH_LED_FUNC_DPX 
   4874 #define BCM_LED_FUNC_ACT            _SHR_SWITCH_LED_FUNC_ACT 
   4875 #define BCM_LED_FUNC_COL            _SHR_SWITCH_LED_FUNC_COL 
   4876 #define BCM_LED_FUNC_LINK_ACT       _SHR_SWITCH_LED_FUNC_LINK_ACT 
   4877 #define BCM_LED_FUNC_DPX_COL        _SHR_SWITCH_LED_FUNC_DPX_COL 
   4878 #define BCM_LED_FUNC_SP_10          _SHR_SWITCH_LED_FUNC_SP_10 
   4879 #define BCM_LED_FUNC_SP_100         _SHR_SWITCH_LED_FUNC_SP_100 
   4880 #define BCM_LED_FUNC_SP_1G          _SHR_SWITCH_LED_FUNC_SP_1G 
   4881 #define BCM_LED_FUNC_10_ACT         _SHR_SWITCH_LED_FUNC_10_ACT 
   4882 #define BCM_LED_FUNC_100_ACT        _SHR_SWITCH_FILTER_EAP_DHCP 
   4883 #define BCM_LED_FUNC_10_100_ACT     _SHR_SWITCH_LED_FUNC_10_100_ACT 
   4884 #define BCM_LED_FUNC_1G_ACT         _SHR_SWITCH_LED_FUNC_1G_ACT 
   4885 #define BCM_LED_FUNC_EAV_LINK       _SHR_SWITCH_LED_FUNC_EAV_LINK 
   4886 #define BCM_LED_FUNC_PHYLED3        _SHR_SWITCH_LED_FUNC_PHYLED3 
   4887 #define BCM_LED_FUNC_SP_100_200     _SHR_SWITCH_LED_FUNC_SP_100_200 
   4888 #define BCM_LED_FUNC_100_200_ACT    _SHR_SWITCH_LED_FUNC_100_200_ACT 
   4889 #define BCM_LED_FUNC_SP_LNK_ACT_SP  _SHR_SWITCH_LED_FUNC_LNK_ACT_SP 
   4890 
   4891 /* LED working mode */
   4892 #define BCM_LED_MODE_OFF        _SHR_SWITCH_LED_MODE_OFF 
   4893 #define BCM_LED_MODE_ON         _SHR_SWITCH_LED_MODE_ON 
   4894 #define BCM_LED_MODE_BLINK      _SHR_SWITCH_LED_MODE_BLINK 
   4895 #define BCM_LED_MODE_AUTO       _SHR_SWITCH_LED_MODE_AUTO 
   4896 
   4897 /* types for bcmSwitchL2LearnMode */
   4898 #define BCM_L2_INGRESS_CENT         0x1        /* Ingress and Centralized
   4899                                                   Learning */
   4900 #define BCM_L2_INGRESS_DIST         0x2        /* Ingress and Centralized
   4901                                                   Learning */
   4902 #define BCM_L2_EGRESS_DIST          0x4        /* Egress and Distributed
   4903                                                   Learning */
   4904 #define BCM_L2_EGRESS_CENT          0x8        /* Egress and Centralized
   4905                                                   Learning */
   4906 #define BCM_L2_EGRESS_INDEPENDENT   0x10       /* Egress and Independent
   4907                                                   Learning */
   4908 #define BCM_L2_LEARN_CPU            0x20       /* Learning events handled by CPU */
   4909 #define BCM_L2_LEARN_DISABLE        0x40       /* Disabled learning */
   4910 
   4911 /* Hashing function enumeration. */
   4912 typedef enum bcm_switch_hash_config_e {
   4913     BCM_HASH_CONFIG_NONE = 1,           /* Indication to not hash */
   4914     BCM_HASH_CONFIG_CRC8_0x14D = 2,     /* CRC8 with 0x14D polynomial */
   4915     BCM_HASH_CONFIG_CRC8_0x1C3 = 3,     /* CRC8 with 0x1C3 polynomial */
   4916     BCM_HASH_CONFIG_CRC8_0x1CF = 4,     /* CRC8 with 0x1CF polynomial */
   4917     BCM_HASH_CONFIG_CRC16_0x17111 = 5,  /* CRC16 with 0x17111 polynomial */
   4918     BCM_HASH_CONFIG_CRC16_0x10491 = 6,  /* CRC16 with 0x10491 polynomial */
   4919     BCM_HASH_CONFIG_CRC16_0x155F5 = 7,  /* CRC16 with 0x155F5 polynomial */
   4920     BCM_HASH_CONFIG_CRC16_0x1013D = 8,  /* CRC16 with 0x1013D polynomial */
   4921     BCM_HASH_CONFIG_CRC16_0x13965 = 9,  /* CRC16 with 0x13965 polynomial */
   4922     BCM_HASH_CONFIG_CRC16_0x1698D = 10, /* CRC16 with 0x1698D polynomial */
   4923     BCM_HASH_CONFIG_CRC16_0x1105D = 11, /* CRC16 with 0x1105D polynomial */
   4924     BCM_HASH_CONFIG_CRC16_0x10861 = 12, /* CRC16 with 0x10861 polynomial */
   4925     BCM_HASH_CONFIG_CRC16_0x10285 = 13, /* CRC16 with 0x10285 polynomial */
   4926     BCM_HASH_CONFIG_CRC16_0x101a1 = 14, /* CRC16 with 0x101a1 polynomial */
   4927     BCM_HASH_CONFIG_CRC16_0x12499 = 15, /* CRC16 with 0x12499 polynomial */
   4928     BCM_HASH_CONFIG_CRC16_0x1f801 = 16, /* CRC16 with 0x1f801 polynomial */
   4929     BCM_HASH_CONFIG_CRC16_0x172e1 = 17, /* CRC16 with 0x172e1 polynomial */
   4930     BCM_HASH_CONFIG_CRC16_0x1eb21 = 18, /* CRC16 with 0x1eb21 polynomial */
   4931     BCM_HASH_CONFIG_FP_DATA = 19,       /* Use only data calculated by FP */
   4932     BCM_HASH_CONFIG_ROUND_ROBIN = 20,   /* Round robin between ports per packet */
   4933     BCM_HASH_CONFIG_CLOCK_BASED = 21,   /* Result based in clock (random) */
   4934     BCM_HASH_CONFIG_CRC16_0x8003 = 22,  /* CRC16 with 0x8003 polynomial */
   4935     BCM_HASH_CONFIG_CRC16_0x8011 = 23,  /* CRC16 with 0x8011 polynomial */
   4936     BCM_HASH_CONFIG_CRC16_0x8423 = 24,  /* CRC16 with 0x8423 polynomial */
   4937     BCM_HASH_CONFIG_CRC16_0x8101 = 25,  /* CRC16 with 0x8101 polynomial */
   4938     BCM_HASH_CONFIG_CRC16_0x84a1 = 26,  /* CRC16 with 0x84a1 polynomial */
   4939     BCM_HASH_CONFIG_CRC16_0x9019 = 27,  /* CRC16 with 0x9019 polynomial */
   4940     BCM_HASH_CONFIG_COUNT               /* Must be last */
   4941 } bcm_switch_hash_config_t;
   4942 
   4943 /* RTAG7 Hash Field Control selection of payload and tunnel fields. */
   4944 #define BCM_HASH_SELECT_INNER_L2        0x1        /* Select the inner L2 fields
   4945                                                       for hash fields selection. */
   4946 #define BCM_HASH_SELECT_OUTER_L2        0x2        /* Select the outer L2 fields
   4947                                                       for hash fields selection. */
   4948 #define BCM_HASH_SELECT_INNER_L3        0x3        /* Select the inner L3 fields
   4949                                                       for hash fields selection. */
   4950 #define BCM_HASH_SELECT_OUTER_L3        0x4        /* Select the outer L3 fields
   4951                                                       for hash fields selection. */
   4952 #define BCM_HASH_SELECT_TUNNEL_INNER_L2 0x5        /* Select tunnel header and
   4953                                                       inner L2 fields for hash
   4954                                                       fields selection. */
   4955 
   4956 /* IPv6 Collapse Methods for RTAG7 Hashing */
   4957 #define BCM_HASH_IP6_COLLAPSE_XOR   0x1        /* Select XOR method to collapse
   4958                                                   IPv6 Addresses for RTAG7
   4959                                                   hashing in field selection
   4960                                                   block */
   4961 #define BCM_HASH_IP6_COLLAPSE_LSB   0x2        /* Select LSB method to collapse
   4962                                                   IPv6 Addresses for RTAG7
   4963                                                   hashing in field selection
   4964                                                   block */
   4965 
   4966 /* IPSec selection for RTAG7 Hashing */
   4967 #define BCM_HASH_IPSEC_SELECT_OUTER_L4_PORT 0x1        /* Select OUTER
   4968                                                           L4_SRC/DST_PORT for
   4969                                                           RTAG7 hashing in field
   4970                                                           selection block */
   4971 #define BCM_HASH_IPSEC_SELECT_SPI           0x2        /* Select IPv6 SPI for
   4972                                                           RTAG7 hashing in field
   4973                                                           selection block */
   4974 
   4975 /* header selection for trunk hashing */
   4976 #define BCM_HASH_HEADER_FORWARD     0x00000001 /* Select the forward header as
   4977                                                   starting header for hashing */
   4978 #define BCM_HASH_HEADER_TERMINATED  0x00000002 /* Select the last terminated
   4979                                                   header as starting header for
   4980                                                   hashing */
   4981 
   4982 /* Symmetric hash field selection. */
   4983 #define BCM_SYMMETRIC_HASH_0_IP4_ENABLE     0x00000001 /* Enable symmetric key
   4984                                                           hashing on Hash A for
   4985                                                           IPV4 packets. */
   4986 #define BCM_SYMMETRIC_HASH_1_IP4_ENABLE     0x00000002 /* Enable symmetric key
   4987                                                           hashing on Hash B for
   4988                                                           IPV4 packets. */
   4989 #define BCM_SYMMETRIC_HASH_0_IP6_ENABLE     0x00000004 /* Enable symmetric key
   4990                                                           hashing on Hash A for
   4991                                                           IPV6 packets. */
   4992 #define BCM_SYMMETRIC_HASH_1_IP6_ENABLE     0x00000008 /* Enable symmetric key
   4993                                                           hashing on Hash B for
   4994                                                           IPV6 packets. */
   4995 #define BCM_SYMMETRIC_HASH_0_SUPPRESS_UNIDIR_FIELD_ENABLE 0x00000010 /* Enable setting SPI,
   4996                                                           TEID, L2 GRE Key to
   4997                                                           zero for Hash A
   4998                                                           calculation. */
   4999 #define BCM_SYMMETRIC_HASH_1_SUPPRESS_UNIDIR_FIELD_ENABLE 0x00000020 /* Enable setting SPI,
   5000                                                           TEID, L2 GRE Key to
   5001                                                           zero for Hash B
   5002                                                           calculation. */
   5003 #define BCM_SYMMETRIC_HASH_0_FCOE_ENABLE    0x00000040 /* Enable symmetric key
   5004                                                           hashing on Hash A for
   5005                                                           FCoE packets. */
   5006 #define BCM_SYMMETRIC_HASH_1_FCOE_ENABLE    0x00000080 /* Enable symmetric key
   5007                                                           hashing on Hash B for
   5008                                                           FCoE packets. */
   5009 
   5010 /* Switch Event Control for event selection */
   5011 #define BCM_SWITCH_EVENT_CONTROL_ALL    (-1)       /* Selects All
   5012                                                       interrupts-causes. */
   5013 
   5014 /* Switch event action controls. */
   5015 typedef enum bcm_switch_event_control_action_e {
   5016     bcmSwitchEventMask = _SHR_SWITCH_EVENT_MASK, /* Mask (disable) or unmask (enable) the
   5017                                            event */
   5018     bcmSwitchEventClear = _SHR_SWITCH_EVENT_CLEAR, /* Clear the event */
   5019     bcmSwitchEventRead = _SHR_SWITCH_EVENT_READ, /* read the event */
   5020     bcmSwitchEventForce = _SHR_SWITCH_EVENT_FORCE, /* Activate/diactivate forcing the event */
   5021     bcmSwitchEventStormTimedCount = _SHR_SWITCH_EVENT_STORM_TIMED_COUNT, /* If more then
   5022                                            bcmSwitchEventStormTimedCount
   5023                                            interrupts occur in
   5024                                            bcmSwitchEventStormTimedPeriod
   5025                                            period, an interrupt storm is
   5026                                            indicated (default hanling same as
   5027                                            for bcmSwitchEventStormNominal
   5028                                            threshold) */
   5029     bcmSwitchEventStormTimedPeriod = _SHR_SWITCH_EVENT_STORM_TIMED_PERIOD, /* If more then
   5030                                            bcmSwitchEventStormTimedCount
   5031                                            interrupts occur in
   5032                                            bcmSwitchEventStormTimedPeriod
   5033                                            period, an interrupt storm is
   5034                                            indicated (default hanling same as
   5035                                            for bcmSwitchEventStormNominal
   5036                                            threshold) */
   5037     bcmSwitchEventStormNominal = _SHR_SWITCH_EVENT_STORM_NOMINAL, /* Nominal threshold for interrupt storm
   5038                                            detection. If an interrupt occurs
   5039                                            more times then the threshold, an
   5040                                            interrupt storm is indicated. The
   5041                                            default handling for such an
   5042                                            interrupt is holding it in masked
   5043                                            condition */
   5044     bcmSwitchEventPriority = _SHR_SWITCH_EVENT_PRIORITY, /* Change handling priority in case of
   5045                                            multiple interrupts */
   5046     bcmSwitchEventLog = _SHR_SWITCH_EVENT_LOG, /* Activate/Diactivate log prints on
   5047                                            event */
   5048     bcmSwitchEventStat = _SHR_SWITCH_EVENT_STAT, /* Enable to Clear/Read event statistics */
   5049     bcmSwitchEventCorrActOverride = _SHR_SWITCH_EVENT_CORR_ACT_OVERRIDE, /* Enable to override application
   5050                                            callback */
   5051     bcmSwitchEventUnmaskAndClearDisable = _SHR_SWITCH_EVENT_UNMASK_AND_CLEAR_DISABLE, /* Skip clearing and enabling the
   5052                                            asserted interrupt at the end of
   5053                                            event corrective action */
   5054     bcmSwitchEventForceUnmask = _SHR_SWITCH_EVENT_FORCE_UNMASK /* Skip enable interrupt action for
   5055                                            asserted interrupt at the end of
   5056                                            event corrective action, if the
   5057                                            interrupt is not cleared */
   5058 } bcm_switch_event_control_action_t;
   5059 
   5060 /* Interrupt event operation */
   5061 typedef struct bcm_switch_event_control_s {
   5062     int event_id;                       /* Event identifier, e.g. for interrupt
   5063                                            event, device-specific enumerator per
   5064                                            interrupt-cause. */
   5065     int index;                          /* If multi-instance blocks represent
   5066                                            the specific block index. */
   5067     bcm_switch_event_control_action_t action; /* The action to perform on the
   5068                                            indicated event. */
   5069 } bcm_switch_event_control_t;
   5070 
   5071 #ifndef BCM_HIDE_DISPATCHABLE
   5072 
   5073 /* Set event control. */
   5074 extern int bcm_switch_event_control_set(
   5075     int unit, 
   5076     bcm_switch_event_t event, 
   5077     bcm_switch_event_control_t type, 
   5078     uint32 value);
   5079 
   5080 /* Get event control. */
   5081 extern int bcm_switch_event_control_get(
   5082     int unit, 
   5083     bcm_switch_event_t event, 
   5084     bcm_switch_event_control_t type, 
   5085     uint32 *value);
   5086 
   5087 #endif /* BCM_HIDE_DISPATCHABLE */
   5088 
   5089 typedef enum bcm_switch_bst_tracking_mode_e {
   5090     bcmSwitchBstTrackCurrent = 0,   /* Track the current usage. */
   5091     bcmSwitchBstTrackPeak = 1       /* Track the peak usage. */
   5092 } bcm_switch_bst_tracking_mode_t;
   5093 
   5094 /* Split Horizon network group configuration flags */
   5095 #define BCM_SWITCH_NETWORK_GROUP_MCAST_REMAP_ENABLE 0x00000001 
   5096 #define BCM_SWITCH_NETWORK_GROUP_INGRESS_PRUNE_ENABLE 0x00000002 
   5097 #define BCM_SWITCH_NETWORK_GROUP_EGRESS_PRUNE_ENABLE 0x00000004 
   5098 
   5099 /* Split Horizon destination network group configuration information */
   5100 typedef struct bcm_switch_network_group_config_s {
   5101     bcm_switch_network_group_t dest_network_group_id; /* Split Horizon Destination Network
   5102                                            Group Identifier */
   5103     uint32 config_flags;                /* BCM_SWITCH_NETWORK_GROUP_XXX flags */
   5104 } bcm_switch_network_group_config_t;
   5105 
   5106 /* Initialize a bcm_switch_network_group_config_t structure. */
   5107 extern void bcm_switch_network_group_config_t_init(
   5108     bcm_switch_network_group_config_t *config);
   5109 
   5110 #ifndef BCM_HIDE_DISPATCHABLE
   5111 
   5112 /* 
   5113  * Enable/Disable ingress pruning, egress pruning and ingress IPMC group
   5114  * remap for a given pair of split horizon source network group and
   5115  * destination network group.
   5116  *             BCM5645x family of devices support 8 split horizon network
   5117  * group. Split horizon network group id 0 is reserved.
   5118  */
   5119 extern int bcm_switch_network_group_config_set(
   5120     int unit, 
   5121     bcm_switch_network_group_t source_network_group_id, 
   5122     bcm_switch_network_group_config_t *config);
   5123 
   5124 /* 
   5125  * Get the enable/disable status of ingress pruning, egress pruning and
   5126  * ingress IPMC group remap for a given pair of split horizon source
   5127  * network group and destination network group.
   5128  *             BCM5645x family of devices support 8 split horizon network
   5129  * group. Split horizon network group id 0 is reserved.
   5130  */
   5131 extern int bcm_switch_network_group_config_get(
   5132     int unit, 
   5133     bcm_switch_network_group_t source_network_group_id, 
   5134     bcm_switch_network_group_config_t *config);
   5135 
   5136 #endif /* BCM_HIDE_DISPATCHABLE */
   5137 
   5138 /* User buffer type. */
   5139 typedef enum bcm_switch_user_buffer_type_e {
   5140     bcmSwitchUserBufferTypeDram = 0 /* Dram User Buffer. */
   5141 } bcm_switch_user_buffer_type_t;
   5142 
   5143 #ifndef BCM_HIDE_DISPATCHABLE
   5144 
   5145 /* Write to the user buffer. */
   5146 extern int bcm_switch_user_buffer_write(
   5147     int unit, 
   5148     uint32 flags, 
   5149     bcm_switch_user_buffer_type_t buff_type, 
   5150     uint8 *buf, 
   5151     int offset, 
   5152     int nbytes);
   5153 
   5154 /* Read from the user buffer. */
   5155 extern int bcm_switch_user_buffer_read(
   5156     int unit, 
   5157     uint32 flags, 
   5158     bcm_switch_user_buffer_type_t buff_type, 
   5159     uint8 *buf, 
   5160     int offset, 
   5161     int nbytes);
   5162 
   5163 #endif /* BCM_HIDE_DISPATCHABLE */
   5164 
   5165 /* header selection for trunk hashing */
   5166 #define BCM_SWITCH_USER_BUFFER_LOGICAL2PHY_TRANS 0x00000001 /* User buffer flag for
   5167                                                           using logical to
   5168                                                           physical translation,
   5169                                                           instead of using
   5170                                                           logical adresses */
   5171 
   5172 #ifndef BCM_HIDE_DISPATCHABLE
   5173 
   5174 /* Sets Ipv6 address and mask in reserved multicast address memory. */
   5175 extern int bcm_switch_ipv6_reserved_multicast_addr_set(
   5176     int unit, 
   5177     bcm_ip6_t ip6_addr, 
   5178     bcm_ip6_t ip6_mask);
   5179 
   5180 /* Gets Ipv6 address and mask from reserved multicast address memory. */
   5181 extern int bcm_switch_ipv6_reserved_multicast_addr_get(
   5182     int unit, 
   5183     bcm_ip6_t *ip6_addr, 
   5184     bcm_ip6_t *ip6_mask);
   5185 
   5186 /* 
   5187  * Sets multiple Ipv6 address and mask in reserved multicast address
   5188  * memory.
   5189  */
   5190 extern int bcm_switch_ipv6_reserved_multicast_addr_multi_set(
   5191     int unit, 
   5192     int inner, 
   5193     int num, 
   5194     bcm_ip6_t *ip6_addr, 
   5195     bcm_ip6_t *ip6_mask);
   5196 
   5197 /* 
   5198  * Gets multiple Ipv6 address and mask from reserved multicast address
   5199  * memory.
   5200  */
   5201 extern int bcm_switch_ipv6_reserved_multicast_addr_multi_get(
   5202     int unit, 
   5203     int inner, 
   5204     int num, 
   5205     bcm_ip6_t *ip6_addr, 
   5206     bcm_ip6_t *ip6_mask);
   5207 
   5208 #endif /* BCM_HIDE_DISPATCHABLE */
   5209 
   5210 typedef enum bcm_switch_object_e {
   5211     bcmSwitchObjectL2EntryCurrent = 0,  /* Statistics of current L2 Entry. */
   5212     bcmSwitchObjectVlanCurrent = 1,     /* Statistics of current Vlan Entry. */
   5213     bcmSwitchObjectL3HostCurrent = 2,   /* Statistics of current L3 Hosts. */
   5214     bcmSwitchObjectL3RouteCurrent = 3,  /* Statistics of current L3 Routes. */
   5215     bcmSwitchObjectL3EgressCurrent = 4, /* Statistics of current L3 Egress
   5216                                            objects. */
   5217     bcmSwitchObjectIpmcCurrent = 5,     /* Statistics of current IP Multicast
   5218                                            Objects. */
   5219     bcmSwitchObjectEcmpCurrent = 6,     /* Statistics of current ECMP objects. */
   5220     bcmSwitchObjectL3RouteV4RoutesMax = 7, /* Maximum number of v4 routes possible */
   5221     bcmSwitchObjectL3RouteV4RoutesFree = 8, /* Maximum number of v4 routes that can
   5222                                            be added in current state */
   5223     bcmSwitchObjectL3RouteV4RoutesUsed = 9, /* Used count of v4 routes */
   5224     bcmSwitchObjectL3RouteV6Routes64bMax = 10, /* Maximum number of 64bv6 routes
   5225                                            possible */
   5226     bcmSwitchObjectL3RouteV6Routes64bFree = 11, /* Maximum number of 64bV6 routes that
   5227                                            can be added in current state */
   5228     bcmSwitchObjectL3RouteV6Routes64bUsed = 12, /* Used count of 64bv6 routes */
   5229     bcmSwitchObjectL3RouteV6Routes128bMax = 13, /* Maximum number of 128bV6 routes
   5230                                            possible */
   5231     bcmSwitchObjectL3RouteV6Routes128bFree = 14, /* Maximum number of 128bV6 routes that
   5232                                            can be added in current state */
   5233     bcmSwitchObjectL3RouteV6Routes128bUsed = 15, /* Used count of 128bv6 routes */
   5234     bcmSwitchObjectL3RouteTotalUsedRoutes = 16, /* Sum of 44 + 64bv6 + 128bv6 routes */
   5235     bcmSwitchObjectIpmcHeadTableFree = 17, /* Number of free entries in the
   5236                                            replication head table */
   5237     bcmSwitchObjectL3HostV4Used = 18,   /* Statistics of L3 Hosts used by IPv4 */
   5238     bcmSwitchObjectL3HostV6Used = 19,   /* Statistics of L3 Hosts used by IPv6 */
   5239     bcmSwitchObjectEcmpMax = 20,        /* Maximum number of Ecmp groups
   5240                                            possible */
   5241     bcmSwitchObjectPFCDeadlockCosMax = 21, /* Get the Max COS supported for PFC
   5242                                            Deadlock detection and recovery. */
   5243     bcmSwitchObjectL3HostV4Max = 22,    /* Maximum number of IPv4 routes
   5244                                            possible in L3 host table. */
   5245     bcmSwitchObjectL3HostV6Max = 23,    /* Maximum number of IPv6 routes
   5246                                            possible in L3 host table. */
   5247     bcmSwitchObjectL3RouteV4RoutesMinGuaranteed = 24, /* Guaranteed number of IPv4 routes in
   5248                                            ALPM mode. */
   5249     bcmSwitchObjectL3RouteV6Routes64bMinGuaranteed = 25, /* Guaranteed number of IPv6 64bits
   5250                                            routes in ALPM mode. */
   5251     bcmSwitchObjectL3RouteV6Routes128bMinGuaranteed = 26, /* Guaranteed number of IPv6 128bits
   5252                                            routes in ALPM mode. */
   5253     bcmSwitchObjectL3EgressMax = 27,    /* Maximum number of L3 Egress objects
   5254                                            possible. */
   5255     bcmSwitchObjectIpmcV4Used = 28,     /* Statistics of used IPv4 Multicast
   5256                                            entries. */
   5257     bcmSwitchObjectIpmcV6Used = 29,     /* Statistics of used IPv6 Multicast
   5258                                            entries. */
   5259     bcmSwitchObjectIpmcV4Max = 30,      /* Maximum number of IPv4 Multicast
   5260                                            entries possible. */
   5261     bcmSwitchObjectIpmcV6Max = 31,      /* Maximum number of IPv6 Multicast
   5262                                            entries possible. */
   5263     bcmSwitchObjectL2EntryMax = 32,     /* Maximum number of L2 entries
   5264                                            possible. */
   5265     bcmSwitchObjectCount                /* Maximum object count. This is not an
   5266                                            object and should always be in the
   5267                                            last */
   5268 } bcm_switch_object_t;
   5269 
   5270 #ifndef BCM_HIDE_DISPATCHABLE
   5271 
   5272 /* Retrieving the statistics on the number of API objects. */
   5273 extern int bcm_switch_object_count_get(
   5274     int unit, 
   5275     bcm_switch_object_t object, 
   5276     int *entries);
   5277 
   5278 /* 
   5279  * Retrieving the statistics on the number of API objects. This retrieves
   5280  * for multiple objects.
   5281  */
   5282 extern int bcm_switch_object_count_multi_get(
   5283     int unit, 
   5284     int object_size, 
   5285     bcm_switch_object_t *object_array, 
   5286     int *entries);
   5287 
   5288 #endif /* BCM_HIDE_DISPATCHABLE */
   5289 
   5290 /* Services types. */
   5291 typedef enum bcm_switch_service_e {
   5292     bcmServiceCounterCollection = 0,    /* Counters collection service. */
   5293     bcmServiceRxLOS = 1,                /* RX LOS service. */
   5294     bcmServiceCount                     /* Maximum object count. This is not an
   5295                                            object and should always be in the
   5296                                            last */
   5297 } bcm_switch_service_t;
   5298 
   5299 /* Service enable configuration options. */
   5300 typedef enum bcm_switch_service_enabled_e {
   5301     bcmServiceStateDisabled = 0,    /* Service disabled. */
   5302     bcmServiceStateEnabled = 1,     /* Service enabled. */
   5303     bcmServiceEnabledCount          /* Maximum object count. This is not an
   5304                                        object and should always be in the last */
   5305 } bcm_switch_service_enabled_t;
   5306 
   5307 /* Service configuration structure. */
   5308 typedef struct bcm_switch_service_config_s {
   5309     uint32 flags;                       /* Option flags. */
   5310     bcm_switch_service_enabled_t enabled; /* Service enable configuration. */
   5311 } bcm_switch_service_config_t;
   5312 
   5313 /* Initialize a bcm_switch_service_config_t structure. */
   5314 extern void bcm_switch_service_config_t_init(
   5315     bcm_switch_service_config_t *config);
   5316 
   5317 #ifndef BCM_HIDE_DISPATCHABLE
   5318 
   5319 /* Config an operation on specific service */
   5320 extern int bcm_switch_service_set(
   5321     int unit, 
   5322     bcm_switch_service_t service, 
   5323     bcm_switch_service_config_t *config);
   5324 
   5325 /* Get configuration status of specific service */
   5326 extern int bcm_switch_service_get(
   5327     int unit, 
   5328     bcm_switch_service_t service, 
   5329     bcm_switch_service_config_t *config);
   5330 
   5331 #endif /* BCM_HIDE_DISPATCHABLE */
   5332 
   5333 /* MC queue group mode. */
   5334 typedef enum bcm_switch_control_mc_queue_config_mode_e {
   5335     bcmSwitchMcUcPairGroupMode = 0, /* Each MC queue is paired with one UC queue */
   5336     bcmSwitchAllMcGroupMode = 1     /* All MC queues are grouped together */
   5337 } bcm_switch_control_mc_queue_config_mode_t;
   5338 
   5339 /* Flags for bcm_switch_l3_protocol_group_set / get */
   5340 #define BCM_SWITCH_L3_PROTOCOL_GROUP_NONE   0x0000     /* No protocols in this
   5341                                                           group */
   5342 #define BCM_SWITCH_L3_PROTOCOL_GROUP_IPV4   0x0001     /* Add IPv4 to the group. */
   5343 #define BCM_SWITCH_L3_PROTOCOL_GROUP_IPV6   0x0002     /* Add IPv6 to the group. */
   5344 #define BCM_SWITCH_L3_PROTOCOL_GROUP_ARP    0x0004     /* Add ARP to the group. */
   5345 #define BCM_SWITCH_L3_PROTOCOL_GROUP_MPLS   0x0008     /* Add MPLS to the group. */
   5346 #define BCM_SWITCH_L3_PROTOCOL_GROUP_MIM    0x0010     /* Add MiM to the group. */
   5347 #define BCM_SWITCH_L3_PROTOCOL_GROUP_TRILL  0x0020     /* Add trill to the
   5348                                                           group. */
   5349 #define BCM_SWITCH_L3_PROTOCOL_GROUP_FCOE   0x0040     /* Add FCOE to the group. */
   5350 
   5351 /* 
   5352  * Protocol group to which l3 protocols will be mapped for multiple mymac
   5353  * termination
   5354  */
   5355 typedef uint32 bcm_l3_protocol_group_id_t;
   5356 
   5357 #ifndef BCM_HIDE_DISPATCHABLE
   5358 
   5359 /* Assign protocol groups for multiple mymac termination. */
   5360 extern int bcm_switch_l3_protocol_group_set(
   5361     int unit, 
   5362     uint32 group_members, 
   5363     bcm_l3_protocol_group_id_t group_id);
   5364 
   5365 /* Assign protocol groups for multiple mymac termination. */
   5366 extern int bcm_switch_l3_protocol_group_get(
   5367     int unit, 
   5368     uint32 *group_members, 
   5369     bcm_l3_protocol_group_id_t *group_id);
   5370 
   5371 #endif /* BCM_HIDE_DISPATCHABLE */
   5372 
   5373 /* profile mapping type. */
   5374 typedef enum bcm_switch_profile_mapping_type_e {
   5375     bcmCosqIngressQueueToRateClass = 0, /* ingress queue to rate class mapping */
   5376     bcmCosqIngressQueuesToLatencyProfile = 1, /* ingress queues to ingress latency
   5377                                            profile mapping */
   5378     bcmCosqPortToEndToEndLatencyProfile = 2 /* destination local port to end to end
   5379                                            latency profile mapping */
   5380 } bcm_switch_profile_mapping_type_t;
   5381 
   5382 /* profile mapping struct. */
   5383 typedef struct bcm_switch_profile_mapping_s {
   5384     bcm_switch_profile_mapping_type_t profile_type; /* The type of profile to be mapped to. */
   5385     bcm_gport_t mapped_profile;         /* mapped profile handle */
   5386 } bcm_switch_profile_mapping_t;
   5387 
   5388 /* Initialize a profile mapping structure. */
   5389 extern void bcm_switch_profile_mapping_t_init(
   5390     bcm_switch_profile_mapping_t *profile_mapping);
   5391 
   5392 /* Global TPID type. */
   5393 typedef enum bcm_switch_tpid_type_e {
   5394     bcmTpidTypeOuter = 0,               /* Global Outer TPID */
   5395     bcmTpidTypeInner = 1,               /* Global Inner TPID */
   5396     bcmTpidTypeVntag = 2,               /* Global TPID for Vntag */
   5397     bcmTpidTypeEtag = 3,                /* Global TPID for Etag */
   5398     bcmTpidTypeCapwapPayloadOuter = 4,  /* Global Outer TPID of CAPWAP wireless
   5399                                            payload */
   5400     bcmTpidTypeCapwapPayloadInner = 5,  /* Global Inner TPID of CAPWAP wireless
   5401                                            payload */
   5402     bcmTpidTypeL2TunnelPayloadInner = 6, /* Global Inner TPID of L2 Tunnel
   5403                                            payload */
   5404     bcmTpidTypeMimPayloadOuter = 7,     /* Matched TPID of Transit MIM Payload
   5405                                            for Parser */
   5406     bcmTpidTypeVxlanPayloadOuter = 8,   /* Matched TPID of Transit VXLAN Payload
   5407                                            for Parser */
   5408     bcmTpidTypeL2grePayloadOuter = 9,   /* Matched TPID of Transit L2GRE Payload
   5409                                            for Parser */
   5410     bcmTpidTypeVxlanPayloadInner = 10,  /* Matched inner TPID of Transit VXLAN
   5411                                            Payload for Parser */
   5412     bcmTpidTypeItag = 11,               /* Global TPID value for I-Tag */
   5413     bcmTpidTypeCount = 12               /* Always Last, not a usable value */
   5414 } bcm_switch_tpid_type_t;
   5415 
   5416 /* Global TPID information */
   5417 typedef struct bcm_switch_tpid_info_s {
   5418     bcm_switch_tpid_type_t tpid_type;   /* The type of TPID to be set */
   5419     uint16 tpid_value;                  /* The value of TPID to be set */
   5420     uint32 flags;                       /* Future expansion, BCM_SWITCH_TPID_XXX
   5421                                            flags */
   5422     int color;                          /* Color mode for TPID */
   5423 } bcm_switch_tpid_info_t;
   5424 
   5425 /* Global TPID information flags */
   5426 #define BCM_SWITCH_TPID_VALUE_INVALID   0x0000     /* TPID value 0x0000 is not
   5427                                                       valid. See the Programming
   5428                                                       Guide PP document for full
   5429                                                       details */
   5430 
   5431 #ifndef BCM_HIDE_DISPATCHABLE
   5432 
   5433 /* 
   5434  * Add a global TPID.
   5435  *             BCM8865x and BCM8866x family of devices support 1 global
   5436  * TPID, which is different from port TPIDs. The global TPID is
   5437  * initialized to 0. When the global TPID is added via bcmTpidTypeOuter,
   5438  * ingress parser uses it as an additional TPID to parse tag format of
   5439  * packets.
   5440  *             BCM8867x family of devices support 4 global TPIDs, which
   5441  * are different from port TPIDs. Two global TPIDs are used or outer TPID
   5442  * parsing. Two are used for inner TPID parsing. All 4 global TPIDs are
   5443  * initialized to 0. Outer TPID can be configured same as inner TPID.
   5444  * When a global outer TPID is added via bcmTpidTypeOuter, ingress parser
   5445  * uses it as an additional outer TPID to parse tag format of
   5446  * packets.When a global inner TPID is added via bcmTpidTypeInner,
   5447  * ingress parser uses it as an additional inner TPID to parse tag format
   5448  * of packets.
   5449  *             BCM5616x family of devices support 5 global TPIDs for
   5450  * identifying the outer and inner tags in CAPWAP wirless payload. Four
   5451  * global TPIDs are for outer TPID parsing and one global TPID for inner
   5452  * TPID parsing in CAPWAP wireless payload.
   5453  *             The device supports only one global TPID which is from the
   5454  * ingress inner TPID matching register for identifying the inner tag in
   5455  * L2 Tunnel payload. The global TPID is initialized to 0x8100 by
   5456  * default. Old global TPID must be deleted before adding a new one.
   5457  */
   5458 extern int bcm_switch_tpid_add(
   5459     int unit, 
   5460     uint32 options, 
   5461     bcm_switch_tpid_info_t *tpid_info);
   5462 
   5463 /* 
   5464  * Delete a global TPID.
   5465  *             BCM8865x and BCM8866x family of devices support deleting
   5466  * the global TPID via bcmTpidTypeOuter.
   5467  *             BCM8867x family of devices support deleting an outer
   5468  * global TPID via bcmTpidTypeOuter or an inner global TPID via
   5469  * bcmTpidTypeInner.
   5470  *             BCM5616x family of devices support deleting global TPID
   5471  * via bcmTpidTypeCapwapPayloadOuter and bcmTpidTypeCapwapPayloadInner.
   5472  *             The device supports deleting global L2 Tunnel TPID from
   5473  * the ingress inner TPID matching register via
   5474  * bcmTpidTypeL2TunnelPayloadInner.
   5475  */
   5476 extern int bcm_switch_tpid_delete(
   5477     int unit, 
   5478     bcm_switch_tpid_info_t *tpid_info);
   5479 
   5480 /* Delete all global TPIDs. */
   5481 extern int bcm_switch_tpid_delete_all(
   5482     int unit);
   5483 
   5484 /* 
   5485  * Get a global TPID.
   5486  *             BCM8865x and BCM8866x family of devices support getting
   5487  * the global TPID via bcmTpidTypeOuter.
   5488  *             BCM8867x family of devices support getting an outer global
   5489  * TPIDs via bcmTpidTypeOuter and an inner global TPIDs via
   5490  * bcmTpidTypeInner.
   5491  *             BCM5616x family of devices support 5 global TPIDs for
   5492  * identifying the outer and inner tags in CAPWAP wirless payload.
   5493  *             The device supports getting one global L2 Tunnel TPID for
   5494  * identifying the outer and inner tags in L2 Tunnel payload from the
   5495  * ingress inner TPID matching register.
   5496  */
   5497 extern int bcm_switch_tpid_get(
   5498     int unit, 
   5499     bcm_switch_tpid_info_t *tpid_info);
   5500 
   5501 /* 
   5502  * Get global TPID count or TPIDs. if (size==0), get TPID count of all
   5503  * global TPIDs, else, get global TPIDs based on size.
   5504  *             BCM8865x and BCM8866x family of devices support getting
   5505  * the global TPID.
   5506  *             BCM8867x family of devices support getting all 4 global
   5507  * TPIDs.
   5508  *             BCM5616x family of device support getting the global
   5509  * TPIDs.
   5510  *             The device supports getting only one global L2 Tunnel
   5511  * inner TPID from the ingress inner TPID matching register.
   5512  */
   5513 extern int bcm_switch_tpid_get_all(
   5514     int unit, 
   5515     int size, 
   5516     bcm_switch_tpid_info_t *tpid_info_array, 
   5517     int *count);
   5518 
   5519 #endif /* BCM_HIDE_DISPATCHABLE */
   5520 
   5521 /* TPID class match type. */
   5522 typedef enum bcm_switch_tpid_class_match_e {
   5523     bcmSwitchTpidClassMatchPort = 0,    /* tpid_class_id from port. */
   5524     bcmSwitchTpidClassMatchIngVlanActionId = 1, /* tpid_class_id from Ingress vlan
   5525                                            translation action id */
   5526     bcmSwitchTpidClassMatch_Count = 2   /* Number of match criterion */
   5527 } bcm_switch_tpid_class_match_t;
   5528 
   5529 /* TPID class retrieval information */
   5530 typedef struct bcm_switch_tpid_class_s {
   5531     uint32 flags;                       /* BCM_SWITCH_TPID_CLASS_XXX, unused
   5532                                            now. */
   5533     bcm_switch_tpid_class_match_t match; /* Match criteria for tpid_class_id */
   5534     bcm_gport_t port;                   /* Port ID */
   5535     int vlan_translation_action_id;     /* Vlan Translation action ID */
   5536     uint32 tpid_class_id;               /* TPID-profile */
   5537 } bcm_switch_tpid_class_t;
   5538 
   5539 /* Initialize tpid class retrival information. */
   5540 extern void bcm_switch_tpid_class_t_init(
   5541     bcm_switch_tpid_class_t *tpid_class);
   5542 
   5543 #ifndef BCM_HIDE_DISPATCHABLE
   5544 
   5545 /* 
   5546  * Get the tpid profile from a given port or given ingress vlan
   5547  * translation action_id.
   5548  */
   5549 extern int bcm_switch_tpid_class_get(
   5550     int unit, 
   5551     bcm_switch_tpid_class_t *tpid_class);
   5552 
   5553 #endif /* BCM_HIDE_DISPATCHABLE */
   5554 
   5555 /* packet trace lookup result enums */
   5556 typedef enum bcm_switch_pkt_trace_lookup_e {
   5557     bcmSwitchPktTraceLookupInvalid = 0, 
   5558     bcmSwitchPktTraceLookupFirstVlanTranslationHit = 1, 
   5559     bcmSwitchPktTraceLookupSecondVlanTranslationHit = 2, 
   5560     bcmSwitchPktTraceLookupForwardingVlanValid = 3, 
   5561     bcmSwitchPktTraceLookupL2SrcHit = 6, 
   5562     bcmSwitchPktTraceLookupL2SrcStatic = 7, 
   5563     bcmSwitchPktTraceLookupL2DstHit = 8, 
   5564     bcmSwitchPktTraceLookupL2CacheHit = 9, 
   5565     bcmSwitchPktTraceLookupL3SrcHostHit = 10, 
   5566     bcmSwitchPktTraceLookupL3DestHostHit = 11, 
   5567     bcmSwitchPktTraceLookupL3DestRouteHit = 12, 
   5568     bcmSwitchPktTraceLookupL2SrcMiss = 13, 
   5569     bcmSwitchPktTraceLookupDosAttack = 14, 
   5570     bcmSwitchPktTraceLookupIpTunnelHit = 15, 
   5571     bcmSwitchPktTraceLookupMplsLabel1Hit = 16, 
   5572     bcmSwitchPktTraceLookupMplsLabel2Hit = 17, 
   5573     bcmSwitchPktTraceLookupMplsTerminated = 18, 
   5574     bcmSwitchPktTraceLookupMystationHit = 19, 
   5575     bcmSwitchPktTraceLookupCount = 20 
   5576 } bcm_switch_pkt_trace_lookup_t;
   5577 
   5578 /* lookup result set bit map */
   5579 typedef struct bcm_switch_pkt_trace_lookup_result_s {
   5580     SHR_BITDCL pkt_trace_status_bitmap[_SHR_BITDCLSIZE(bcmSwitchPktTraceLookupCount)]; /* bit map for packet trace lookup
   5581                                            result set */
   5582 } bcm_switch_pkt_trace_lookup_result_t;
   5583 
   5584 /* packet trace resolution enums */
   5585 typedef enum bcm_switch_pkt_trace_resolution_e {
   5586     bcmSwitchPktTraceResolutionUnkown = 0, 
   5587     bcmSwitchPktTraceResolutionControlPkt = 1, /* 1 */
   5588     bcmSwitchPktTraceResolutionOamPkt = 2, 
   5589     bcmSwitchPktTraceResolutionBfdPkt = 3, 
   5590     bcmSwitchPktTraceResolutionBpduPkt = 4, 
   5591     bcmSwitchPktTraceResolution1588Pkt = 6, 
   5592     bcmSwitchPktTraceResolutionKnownL2UcPkt = 8, 
   5593     bcmSwitchPktTraceResolutionUnknownL2UcPkt = 9, 
   5594     bcmSwitchPktTraceResolutionKnownL2McPkt = 10, 
   5595     bcmSwitchPktTraceResolutionUnknownL2McPkt = 11, 
   5596     bcmSwitchPktTraceResolutionL2BcPkt = 12, 
   5597     bcmSwitchPktTraceResolutionKnownL3UcPkt = 16, 
   5598     bcmSwitchPktTraceResolutionUnknownL3UcPkt = 17, 
   5599     bcmSwitchPktTraceResolutionKnownIpmcPkt = 18, 
   5600     bcmSwitchPktTraceResolutionUnknownIpmcPkt = 19, 
   5601     bcmSwitchPktTraceResolutionKnownMplsL2Pkt = 24, 
   5602     bcmSwitchPktTraceResolutionUnknownMplsPkt = 25, 
   5603     bcmSwitchPktTraceResolutionKnownMplsL3Pkt = 26, 
   5604     bcmSwitchPktTraceResolutionKnownMplsPkt = 28, 
   5605     bcmSwitchPktTraceResolutionKnownMimPkt = 32, 
   5606     bcmSwitchPktTraceResolutionUnknownMimPkt = 33, 
   5607     bcmSwitchPktTraceResolutionKnownTrillPkt = 40, 
   5608     bcmSwitchPktTraceResolutionUnknownTrillPkt = 41, 
   5609     bcmSwitchPktTraceResolutionKnownNivPkt = 48, 
   5610     bcmSwitchPktTraceResolutionUnknownNivPkt = 49, 
   5611     bcmSwitchPktTraceResolutionKnownL2GrePkt = 50, 
   5612     bcmSwitchPktTraceResolutionKnownVxlanPkt = 51, 
   5613     bcmSwitchPktTraceResolutionKnownFCOEPkt = 52, 
   5614     bcmSwitchPktTraceResolutionUnknownFCOEPkt = 53, 
   5615     bcmSwitchPktTraceResolutionCount = 54 
   5616 } bcm_switch_pkt_trace_resolution_t;
   5617 
   5618 #define BCM_SWITCH_PKT_TRACE_ECMP_1         0x0001     /* level 1 ecmp hashing
   5619                                                           resolution done */
   5620 #define BCM_SWITCH_PKT_TRACE_ECMP_2         0x0002     /* level 2 ecmp hashing
   5621                                                           resolution done */
   5622 #define BCM_SWITCH_PKT_TRACE_TRUNK          0x0004     /* trunk hashing
   5623                                                           resolution done */
   5624 #define BCM_SWITCH_PKT_TRACE_FABRIC_TRUNK   0x0008     /* hg trunk hashing
   5625                                                           resolution done */
   5626 
   5627 /* packet hashing resolution information */
   5628 typedef struct bcm_switch_pkt_trace_hashing_info_s {
   5629     uint32 flags;                       /* flag containing
   5630                                            BCM_SWITCH_PKT_TRACE_ECMP/TRUNK/FABRIC_TRUNK,
   5631                                            0 == no hashing resolution done */
   5632     bcm_if_t ecmp_1_group;              /* multipath egress forwarding object. */
   5633     bcm_if_t ecmp_1_egress;             /* ecmp destination interface */
   5634     bcm_if_t ecmp_2_group;              /* multipath egress forwarding object. */
   5635     bcm_if_t ecmp_2_egress;             /* ecmp destination interface */
   5636     bcm_gport_t trunk;                  /* destination trunk group */
   5637     bcm_gport_t trunk_member;           /* destination member port which packet
   5638                                            egress. */
   5639     bcm_gport_t fabric_trunk;           /* destination hg trunk group */
   5640     bcm_gport_t fabric_trunk_member;    /* destination member hg port which
   5641                                            packet will egress. */
   5642 } bcm_switch_pkt_trace_hashing_info_t;
   5643 
   5644 /* packet forward destination enums */
   5645 #define BCM_SWITCH_PKT_TRACE_FWD_DST_INVALID 0          /* Forward destination
   5646                                                           invalid. */
   5647 #define BCM_SWITCH_PKT_TRACE_FWD_DST_NH     0x0001     /* Forward destination
   5648                                                           Next hop egress
   5649                                                           object. */
   5650 #define BCM_SWITCH_PKT_TRACE_FWD_DST_L2MC   0x0002     /* Forward destination
   5651                                                           L2MC. */
   5652 #define BCM_SWITCH_PKT_TRACE_FWD_DST_IPMC   0x0004     /* Forward destination
   5653                                                           IPMC. */
   5654 #define BCM_SWITCH_PKT_TRACE_FWD_DST_DGPP   0x0008     /* Forward destination
   5655                                                           DGPP */
   5656 #define BCM_SWITCH_PKT_TRACE_FWD_DST_VLAN   0x0010     /* Forward destination
   5657                                                           VLAN */
   5658 #define BCM_SWITCH_PKT_TRACE_FWD_DST_DVP    0x0020     /* Forward destination
   5659                                                           DVP */
   5660 
   5661 /* packet forward destination information */
   5662 typedef struct bcm_switch_pkt_trace_fwd_dst_info_s {
   5663     uint32 flags;               /* flag containing
   5664                                    BCM_SWITCH_PKT_TRACE_FWD_DST_NH/L2MC/IPMC/DGPP/DVP/VLAN/INVALID,
   5665                                    0 == no forward destination resolution done */
   5666     bcm_if_t egress_intf;       /* egress forwarding destination interface. */
   5667     bcm_multicast_t mc_group;   /* Multicast group. */
   5668     bcm_gport_t port;           /* DGPP - destination port. */
   5669     bcm_gport_t dvp;            /* DVP - destination virtual port. */
   5670     bcm_vlan_t fwd_vlan;        /* Destination forward vlan. */
   5671 } bcm_switch_pkt_trace_fwd_dst_info_t;
   5672 
   5673 #define BCM_SWITCH_PKT_TRACE_DROP_REASON_MAX 4          /* drop reason bitmap
   5674                                                           length */
   5675 
   5676 /* packet trace drop reason enums */
   5677 typedef enum bcm_switch_pkt_trace_drop_reason_e {
   5678     bcmSwitchPktTraceNoDrop = 0,        /* No packet drop */
   5679     bcmSwitchPktTraceDropReasonInternal = 1, /* Packet dropped due to internal reason */
   5680     bcmSwitchPktTraceDropReasonMplsLabelLookupMiss = 2, /* Packet dropped due to MPLS label
   5681                                            lookup miss */
   5682     bcmSwitchPktTraceDropReasonMplsInvalidAction = 3, /* Packet dropped due to MPLS invalid
   5683                                            action */
   5684     bcmSwitchPktTraceDropReasonMplsInvalidPayload = 4, /* Packet dropped due to MPLS invalid
   5685                                            payload */
   5686     bcmSwitchPktTraceDropReasonMplsTtlCheckFail = 5, /* Packet dropped due to MPLS TTL check
   5687                                            fail */
   5688     bcmSwitchPktTraceDropReasonMplsInvalidControlWord = 6, /* Packet dropped due to MPLS invalid
   5689                                            control word */
   5690     bcmSwitchPktTraceDropReasonL2greSipLookupMiss = 7, /* Packet dropped due to L2GRE SIP
   5691                                            lookup miss */
   5692     bcmSwitchPktTraceDropReasonL2greVpnLookupMiss = 8, /* Packet dropped due to L2GRE VPNID
   5693                                            lookup miss */
   5694     bcmSwitchPktTraceDropReasonL2greTunnelError = 9, /* Packet dropped due to L2GRE Tunnel
   5695                                            Error */
   5696     bcmSwitchPktTraceDropReasonVxlanSipLookupMiss = 10, /* Packet dropped due to VXLAN SIP
   5697                                            lookup miss */
   5698     bcmSwitchPktTraceDropReasonVxlanVnidLookupMiss = 11, /* Packet dropped due to VXLAN VN_ID
   5699                                            lookup miss */
   5700     bcmSwitchPktTraceDropReasonVxlanTunnelError = 12, /* Packet dropped due to VXLAN Tunnel
   5701                                            Error */
   5702     bcmSwitchPktTraceDropReasonVlanNotValid = 13, /* Packet dropped due to VLAN not valid */
   5703     bcmSwitchPktTraceDropReasonIngressPortNotInVlanMember = 14, /* Packet dropped due to ingress port
   5704                                            not in VLAN member */
   5705     bcmSwitchPktTraceDropReasonTpidMismatch = 15, /* Packet dropped due to TPID mismatch */
   5706     bcmSwitchPktTraceDropReasonIpv4ProtocolError = 16, /* IPV4 protocol error drop */
   5707     bcmSwitchPktTraceDropReasonHigigLoopback = 17, /* Higig loopback drop */
   5708     bcmSwitchPktTraceDropReasonHigigMirrorOnly = 18, /* Higig mirror only drop */
   5709     bcmSwitchPktTraceDropReasonHigigUnknownHeader = 19, /* Higig unknown header drop */
   5710     bcmSwitchPktTraceDropReasonHigigUnknownOpcode = 20, /* Higig unknown opcode drop */
   5711     bcmSwitchPktTraceDropReasonLagFailLoopback = 21, /* LAG fail loopback drop */
   5712     bcmSwitchPktTraceDropReasonL2SrcEqualL2Dst = 22, /* Src MAC equals Dst MAC drop */
   5713     bcmSwitchPktTraceDropReasonIpv6ProtocolError = 23, /* IPV6 protocol error drop */
   5714     bcmSwitchPktTraceDropReasonNivVntagPresent = 24, /* NIV VNTAG present drop */
   5715     bcmSwitchPktTraceDropReasonNivVntagNotPresent = 25, /* NIV VNTAG not present drop */
   5716     bcmSwitchPktTraceDropReasonNivVntagFormat = 26, /* NIV VNTAG format drop */
   5717     bcmSwitchPktTraceDropReasonTrillErrorFrame = 27, /* Trill error frame drop */
   5718     bcmSwitchPktTraceDropReasonBpdu = 28, /* BPDU drop */
   5719     bcmSwitchPktTraceDropReasonBadUdpChecksum = 29, /* Bad udp checksum drop */
   5720     bcmSwitchPktTraceDropReasonTunnlDecapEcnError = 30, /* Tunnel Decap ECN error drop */
   5721     bcmSwitchPktTraceDropReasonIpv4HeaderError = 31, /* Packet dropped due to IPv4 Header
   5722                                            error */
   5723     bcmSwitchPktTraceDropReasonIpv6HeaderError = 32, /* Packet dropped due to IPv6 Header
   5724                                            error */
   5725     bcmSwitchPktTraceDropReasonParityError = 33, /* Packet dropped due to parity error */
   5726     bcmSwitchPktTraceDropReasonRpfCheckFail = 34, /* Packet dropped due to unicast RPF
   5727                                            check fail */
   5728     bcmSwitchPktTraceDropReasonStageLookup = 35, /* Packet dropped on field lookup stage */
   5729     bcmSwitchPktTraceDropReasonStageIngress = 36, /* Packet dropped on field ingress stage */
   5730     bcmSwitchPktTraceDropReasonTunnelObjectValidationFail = 37, /* Packet dropped due to Tunnel
   5731                                            termination can't be done as not all
   5732                                            packet forwarding objects got
   5733                                            assigned. */
   5734     bcmSwitchPktTraceDropReasonTunnelShimHeaderError = 38, /* Packet dropped due to tunnel shim
   5735                                            header error. */
   5736     bcmSwitchPktTraceDropReasonTunnelTTLError = 39, /* Packet dropped due to tunnel TTL
   5737                                            check fail. */
   5738     bcmSwitchPktTraceDropReasonTunnelInterfaceCheckFail = 40, /* Packet dropped due to tunnel
   5739                                            interface check failure. */
   5740     bcmSwitchPktTraceDropReasonTunnelError = 41, /* Packet dropped due to tunnel error. */
   5741     bcmSwitchPktTraceDropReasonTunnelAdapt1LookupMiss = 42, /* Packcet dropped due to tunnel
   5742                                            adaptation table 1 lookup miss. */
   5743     bcmSwitchPktTraceDropReasonTunnelAdapt2LookupMiss = 43, /* Packcet dropped due to tunnel
   5744                                            adaptation table 2 lookup miss. */
   5745     bcmSwitchPktTraceDropReasonTunnelAdapt3LookupMiss = 44, /* Packcet dropped due to tunnel
   5746                                            adaptation table 3 lookup miss. */
   5747     bcmSwitchPktTraceDropReasonTunnelAdapt4LookupMiss = 45, /* Packcet dropped due to tunnel
   5748                                            adaptation table 4 lookup miss. */
   5749     bcmSwitchPktTraceDropReasonControlFrame = 46, /* Packcet dropped due to control frame
   5750                                            drop. */
   5751     bcmSwitchPktTraceDropReasonHigigHdrError = 47, /* Packcet dropped due to higig header
   5752                                            error. */
   5753     bcmSwitchPktTraceDropReasonNivDot1p = 48, /* Packcet dropped due to niv dot1p. */
   5754     bcmSwitchPktTraceDropReasonMplsGalLabel = 49, /* Packcet dropped due to mpls gal
   5755                                            label. */
   5756     bcmSwitchPktTraceDropReasonStpNotForwarding = 50, /* Packcet dropped due to stp not
   5757                                            forwarding. */
   5758     bcmSwitchPktTraceDropReasonMcastIndexError = 51, /* Packcet dropped due to multicast
   5759                                            index error. */
   5760     bcmSwitchPktTraceDropReasonProtocolPkt = 52, /* Packcet dropped due to protocol pkt
   5761                                            drop. */
   5762     bcmSwitchPktTraceDropReasonUnknownSrcMac = 53, /* Packcet dropped due to unknown src
   5763                                            mac. */
   5764     bcmSwitchPktTraceDropReasonSrcRoute = 54, /* Packcet dropped due to source route. */
   5765     bcmSwitchPktTraceDropReasonL2SrcDiscard = 55, /* Packcet dropped due to L2 source
   5766                                            discard. */
   5767     bcmSwitchPktTraceDropReasonL2SrcStaticMove = 56, /* Packcet dropped due to L2 source
   5768                                            static move. */
   5769     bcmSwitchPktTraceDropReasonL2DstDiscard = 57, /* Packcet dropped due to L2 dest
   5770                                            discard. */
   5771     bcmSwitchPktTraceDropReasonSrcMacZero = 58, /* Packcet dropped due to source mac
   5772                                            zero. */
   5773     bcmSwitchPktTraceDropReasonL2DstMissOrPbt = 59, /* Packcet dropped due to L2 dest miss
   5774                                            or pbt. */
   5775     bcmSwitchPktTraceDropReasonClassBasedStationMove = 60, /* Packcet dropped due to class based
   5776                                            station move. */
   5777     bcmSwitchPktTraceDropReasonTimeSyncPkt = 61, /* Packcet dropped due to time sync pkt
   5778                                            drop. */
   5779     bcmSwitchPktTraceDropReasonMyStation = 62, /* Packcet dropped due to my station
   5780                                            drop. */
   5781     bcmSwitchPktTraceDropReasonL3DstDiscard = 63, /* Packcet dropped due to L3 dest
   5782                                            discard. */
   5783     bcmSwitchPktTraceDropReasonMcastLookupMiss = 64, /* Packcet dropped due to multicast
   5784                                            lookup miss. */
   5785     bcmSwitchPktTraceDropReasonPortTagPresentError = 65, /* Packcet dropped due to port tag
   5786                                            present error. */
   5787     bcmSwitchPktTraceDropReasonPVlanVpEgressFilter = 66, /* Packcet dropped due to pvlan vp
   5788                                            egress filter. */
   5789     bcmSwitchPktTraceDropReasonPortBitmapZero = 67, /* Packcet dropped due to port bitmap
   5790                                            zero. */
   5791     bcmSwitchPktTraceDropReasonCount = 68 
   5792 } bcm_switch_pkt_trace_drop_reason_t;
   5793 
   5794 #define BCM_SWITCH_PKT_TRACE_RAW_DATA_MAX   112        /* max bytes of
   5795                                                           pkt_trace_info.raw_data */
   5796 
   5797 /* packet trace ingress process data */
   5798 typedef struct bcm_switch_pkt_trace_info_s {
   5799     bcm_switch_pkt_trace_lookup_result_t pkt_trace_lookup_status; /* packet trace lookup status set */
   5800     bcm_switch_pkt_trace_resolution_t pkt_trace_resolution; /* packet trace resolution result */
   5801     bcm_switch_pkt_trace_hashing_info_t pkt_trace_hash_info; /* packet trace hashing information */
   5802     bcm_stg_stp_t pkt_trace_stp_state;  /* packet trace ingress stp state */
   5803     uint32 pkt_trace_drop_reason[BCM_SWITCH_PKT_TRACE_DROP_REASON_MAX]; /* packet trace drop reason */
   5804     uint32 dest_pipe_num;               /* ingress pipeline number of the pkt
   5805                                            trace packet */
   5806     uint32 raw_data_length;             /* number of bytes returned as raw_data */
   5807     uint8 raw_data[BCM_SWITCH_PKT_TRACE_RAW_DATA_MAX]; /* packet trace process result data in
   5808                                            raw format */
   5809     bcm_switch_pkt_trace_fwd_dst_info_t pkt_trace_fwd_dst_info; /* packet trace forward destination
   5810                                            information */
   5811 } bcm_switch_pkt_trace_info_t;
   5812 
   5813 #ifndef BCM_HIDE_DISPATCHABLE
   5814 
   5815 /* Clear the SW and HW states for the packet trace */
   5816 extern int bcm_switch_pkt_trace_info_clear(
   5817     int unit, 
   5818     bcm_port_t port);
   5819 
   5820 /* Obtain switch results of packet inserted on the given port */
   5821 extern int bcm_switch_pkt_trace_info_get(
   5822     int unit, 
   5823     uint32 options, 
   5824     uint8 port, 
   5825     int len, 
   5826     uint8 *data, 
   5827     bcm_switch_pkt_trace_info_t *pkt_trace_info);
   5828 
   5829 /* Obtain switch packet trace raw data  on the given port */
   5830 extern int bcm_switch_pkt_trace_raw_data_get(
   5831     int unit, 
   5832     uint32 options, 
   5833     uint8 port, 
   5834     int len, 
   5835     uint8 *data, 
   5836     uint32 raw_data_buf_size, 
   5837     uint8 *raw_data, 
   5838     uint32 *raw_data_size);
   5839 
   5840 #endif /* BCM_HIDE_DISPATCHABLE */
   5841 
   5842 /* 32bit or 48bit timestamping mode for 1588 packets */
   5843 typedef enum bcm_switch_timesync_timestamping_mode_e {
   5844     bcmTimesyncTimestampingMode32bit = 0, /* 32bit timestamping mode for 1588
   5845                                            packets */
   5846     bcmTimesyncTimestampingMode48bit = 1 /* 48bit timestamping mode for 1588
   5847                                            packets. */
   5848 } bcm_switch_timesync_timestamping_mode_t;
   5849 
   5850 /* 
   5851  * Flags for bcm_switch_lif_property_set / get - Correlates with
   5852  * bcmLifPropertyOutGlobalLifRangeType
   5853  */
   5854 #define BCM_SWITCH_LIF_PROPERTY_ID_RANGE_TYPE_MAPPED 0x0        /* global outlif mapped. */
   5855 #define BCM_SWITCH_LIF_PROPERTY_ID_RANGE_TYPE_DIRECT 0x1        /* global outlif direct. */
   5856 
   5857 /* 
   5858  * Flags for bcm_switch_lif_property_set / get - Correlates with
   5859  * bcmLifPropertyEEDBBankPhase
   5860  */
   5861 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_DYNAMIC 0x0        /* EEDB bank dynamic
   5862                                                           phase. */
   5863 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_1 0x1        /* EEDB bank phase 1. */
   5864 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_2 0x2        /* EEDB bank phase 2. */
   5865 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_3 0x4        /* EEDB bank phase 3. */
   5866 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_4 0x8        /* EEDB bank phase 4. */
   5867 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_5 0x10       /* EEDB bank phase 5. */
   5868 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_6 0x20       /* EEDB bank phase 6. */
   5869 
   5870 /* 
   5871  * Flags for bcm_switch_lif_property_set / get - Correlates with
   5872  * bcmLifPropertyEEDBBankExtension
   5873  */
   5874 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_ENABLE 0x0        /* EEDB bank has
   5875                                                           extension. */
   5876 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_DISABLE 0x1        /* EEDB bank doesn't have
   5877                                                           extension. */
   5878 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_DYNAMIC 0x2        /* EEDB bank extension
   5879                                                           dynamic. */
   5880 
   5881 /* 
   5882  * Flags for bcm_switch_lif_property_set / get - Correlates with
   5883  * bcmLifPropertyEEDBBankExtensionType
   5884  */
   5885 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_TYPE_PROTECTION 0x0        /* EEDB bank extension
   5886                                                           type protection
   5887                                                           pointer. */
   5888 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_TYPE_DATA 0x1        /* EEDB bank extension
   5889                                                           type Data. */
   5890 
   5891 /* 
   5892  * lif property configuration parameters for
   5893  * bcm_switch_lif_property_set/get.
   5894  */
   5895 typedef enum bcm_switch_lif_property_e {
   5896     bcmLifPropertyOutGlobalLifRangeType = 0, /* per LIF range of 4K entries, specify
   5897                                            if it's Direct or Mapped. */
   5898     bcmLifPropertyEEDBBankPhase = 1,    /* per EEDB bank (0-23), specify if it's
   5899                                            Phase. */
   5900     bcmLifPropertyEEDBBankExtension = 2, /* per EEDB bank (0-21), specify if it
   5901                                            has an extension */
   5902     bcmLifPropertyEEDBBankExtensionType = 3 /* per EEDB bank (0-21), specify its
   5903                                            extension type: protection-ptr or
   5904                                            Data */
   5905 } bcm_switch_lif_property_t;
   5906 
   5907 /* 
   5908  * This structure describes the fields that need to be supplies for the
   5909  * configuration along with the property type.
   5910  */
   5911 typedef struct bcm_switch_lif_property_config_s {
   5912     uint32 key;     /* property key : 0-47  in case of
   5913                        bcmLifPropertyOutGlobalLifRangeType or 0-23 in case of
   5914                                               bcmLifPropertyEEDBBankPhase and
   5915                        bcmLifPropertyEEDBBankExtension */
   5916     uint32 value;   /* property value */
   5917 } bcm_switch_lif_property_config_t;
   5918 
   5919 #ifndef BCM_HIDE_DISPATCHABLE
   5920 
   5921 /* 
   5922  * Setup the LIF property along with the desired property and the
   5923  * configuration values
   5924  */
   5925 extern int bcm_switch_lif_property_set(
   5926     int unit, 
   5927     bcm_switch_lif_property_t lif_property, 
   5928     bcm_switch_lif_property_config_t *lif_config);
   5929 
   5930 /* 
   5931  * Get the LIF property along with the desired property and the
   5932  * configuration values.
   5933  */
   5934 extern int bcm_switch_lif_property_get(
   5935     int unit, 
   5936     bcm_switch_lif_property_t lif_property, 
   5937     bcm_switch_lif_property_config_t *lif_config);
   5938 
   5939 #endif /* BCM_HIDE_DISPATCHABLE */
   5940 
   5941 /* Key to be used for switch control indexed setget. */
   5942 typedef struct bcm_switch_control_key_s {
   5943     bcm_switch_control_t type;  /* Switch control type */
   5944     int index;                  /* Switch control index */
   5945 } bcm_switch_control_key_t;
   5946 
   5947 /* Info to be used for switch control indexed setget. */
   5948 typedef struct bcm_switch_control_info_s {
   5949     int value;  /* Switch control value */
   5950 } bcm_switch_control_info_t;
   5951 
   5952 #ifndef BCM_HIDE_DISPATCHABLE
   5953 
   5954 /* Configure device-wide operating modes according to type and index. */
   5955 extern int bcm_switch_control_indexed_set(
   5956     int unit, 
   5957     bcm_switch_control_key_t key, 
   5958     bcm_switch_control_info_t value);
   5959 
   5960 /* Configure device-wide operating modes according to type and index. */
   5961 extern int bcm_switch_control_indexed_get(
   5962     int unit, 
   5963     bcm_switch_control_key_t key, 
   5964     bcm_switch_control_info_t *value);
   5965 
   5966 #endif /* BCM_HIDE_DISPATCHABLE */
   5967 
   5968 /* 
   5969  * Specified MAC address is used as destination MAC address when BCM
   5970  * SWITCH device sends OLP encapsulated pkt from specified port towards
   5971  * offload processor
   5972  */
   5973 typedef struct bcm_switch_olp_l2_addr_s {
   5974     bcm_port_t port;    /* ingress port for this entry */
   5975     bcm_mac_t mac;      /* MAC address for this entry */
   5976 } bcm_switch_olp_l2_addr_t;
   5977 
   5978 /* Initialize the structure bcm_switch_olp_l2_addr_t to default values */
   5979 extern void bcm_switch_olp_l2_addr_t_init(
   5980     bcm_switch_olp_l2_addr_t *l2_addr);
   5981 
   5982 /* Replace the matching entry */
   5983 #define BCM_SWITCH_OLP_L2_ADDR_REPLACE  0x1        
   5984 
   5985 #ifndef BCM_HIDE_DISPATCHABLE
   5986 
   5987 /* 
   5988  * This API configures MAC address which is used by BCM device as
   5989  * destination MAC address
   5990  *                 of L2 header sent towards OLP from BCM device
   5991  */
   5992 extern int bcm_switch_olp_l2_addr_add(
   5993     int unit, 
   5994     uint32 options, 
   5995     bcm_switch_olp_l2_addr_t *l2_addr);
   5996 
   5997 /* 
   5998  * This API deletes previously configured MAC address by
   5999  * bcm_switch_olp_l2_addr_add
   6000  */
   6001 extern int bcm_switch_olp_l2_addr_delete(
   6002     int unit, 
   6003     bcm_switch_olp_l2_addr_t *l2_addr);
   6004 
   6005 /* 
   6006  * Delete ALL previously configured MAC address of OLP by
   6007  * bcm_switch_olp_l2_addr_add() API
   6008  */
   6009 extern int bcm_switch_olp_l2_addr_delete_all(
   6010     int unit);
   6011 
   6012 /* 
   6013  * Get previously configured MAC address of OLP connected to the BCM
   6014  * device port
   6015  */
   6016 extern int bcm_switch_olp_l2_addr_get(
   6017     int unit, 
   6018     bcm_switch_olp_l2_addr_t *l2_addr);
   6019 
   6020 #endif /* BCM_HIDE_DISPATCHABLE */
   6021 
   6022 /* OLP MAC address traverse callback */
   6023 typedef int (*bcm_switch_olp_l2_addr_traverse_cb)(
   6024     int unit, 
   6025     bcm_switch_olp_l2_addr_t *l2_addr, 
   6026     void *user_data);
   6027 
   6028 #ifndef BCM_HIDE_DISPATCHABLE
   6029 
   6030 /* Traverse configured OLP MAC address database */
   6031 extern int bcm_switch_olp_l2_addr_traverse(
   6032     int unit, 
   6033     bcm_switch_olp_l2_addr_traverse_cb cb_fn, 
   6034     void *user_data);
   6035 
   6036 #endif /* BCM_HIDE_DISPATCHABLE */
   6037 
   6038 /* AGM Forwarding group type */
   6039 typedef enum bcm_switch_agm_type_e {
   6040     bcmSwitchAgmTypeTrunk = 0,          /* Forwarding group is a Trunk group */
   6041     bcmSwitchAgmTypeFabricTrunk = 1,    /* Forwarding group is a Higig Trunk
   6042                                            group */
   6043     bcmSwitchAgmTypeL3Ecmp = 2,         /* Forwarding group is an Ecmp Trunk
   6044                                            group */
   6045     bcmSwitchAgmTypeL3EcmpOverlay = 3,  /* Forwarding group is an Overlay Ecmp
   6046                                            Trunk group */
   6047     bcmSwitchAgmTypeCount = 4           /* Maximum AGM type count */
   6048 } bcm_switch_agm_type_t;
   6049 
   6050 /* AGM period interval type */
   6051 typedef enum bcm_switch_agm_period_interval_e {
   6052     bcmSwitchAgmInterval1Second = 0,    /* 1s interval for each monitor period */
   6053     bcmSwitchAgmInterval100MiliSecond = 1, /* 100 ms interval for each monitor
   6054                                            period */
   6055     bcmSwtichAgmInterval10MiliSecond = 2, /* 10ms interval for each monitor period */
   6056     bcmSwitchAgmInterval1MiliSecond = 3, /* 1ms interval for each monitor period */
   6057     bcmSwitchAgmInterval100MacroSecond = 4, /* 100us interval for each monitor
   6058                                            period */
   6059     bcmSwitchAgmIntervalCount = 5       /* Maximum AGM period interval type
   6060                                            count */
   6061 } bcm_switch_agm_period_interval_t;
   6062 
   6063 /* AGM monitor info */
   6064 typedef struct bcm_switch_agm_info_s {
   6065     bcm_switch_agm_id_t agm_id;         /* AGM monitor id */
   6066     bcm_switch_agm_type_t agm_type;     /* Indicates forwarding group type using
   6067                                            this monitor */
   6068     int num_members;                    /* number of members for the forwarding
   6069                                            group */
   6070     int period_num;                     /* AGM period number to be monitored, 0
   6071                                            means continue counting traffic
   6072                                            indefinitely */
   6073     bcm_switch_agm_period_interval_t period_interval; /* interval for each period */
   6074 } bcm_switch_agm_info_t;
   6075 
   6076 /* AGM stat info */
   6077 typedef struct bcm_switch_agm_stat_s {
   6078     uint64 packets;         /* accumulated packets value */
   6079     uint64 bytes;           /* accumulated bytes value */
   6080     int period;             /* period number used by current stat */
   6081     bcm_gport_t gport_id;   /* If this AGM is for a Trunk/HigigTrunk, indicates
   6082                                which trunk member using the counter */
   6083     bcm_if_t intf_id;       /* If this AGM is for an ECMP group, indicates which
   6084                                group member using the counter */
   6085 } bcm_switch_agm_stat_t;
   6086 
   6087 /* bcm_switch_agm_traverse_cb */
   6088 typedef int (*bcm_switch_agm_traverse_cb)(
   6089     int unit, 
   6090     bcm_switch_agm_info_t *agm_info, 
   6091     void *user_data);
   6092 
   6093 /* Initialize a bcm_switch_agm_info_t structure. */
   6094 extern void bcm_switch_agm_info_t_init(
   6095     bcm_switch_agm_info_t *agm_info);
   6096 
   6097 /* Initialize a bcm_switch_agm_stat_t structure. */
   6098 extern void bcm_switch_agm_stat_t_init(
   6099     bcm_switch_agm_stat_t *agm_stat);
   6100 
   6101 #ifndef BCM_HIDE_DISPATCHABLE
   6102 
   6103 /* Create an AGM monitor entry. */
   6104 extern int bcm_switch_agm_create(
   6105     int unit, 
   6106     uint32 options, 
   6107     bcm_switch_agm_info_t *agm_info);
   6108 
   6109 /* Enable/Disable an existing AGM monitor. */
   6110 extern int bcm_switch_agm_enable_set(
   6111     int unit, 
   6112     bcm_switch_agm_id_t agm_id, 
   6113     int enable);
   6114 
   6115 /* 
   6116  * Retrieve bandwidth and packet distribution information that were
   6117  * collected via AGM monitor.
   6118  */
   6119 extern int bcm_switch_agm_stat_get(
   6120     int unit, 
   6121     bcm_switch_agm_id_t agm_id, 
   6122     int nstat, 
   6123     bcm_switch_agm_stat_t *stat_arr);
   6124 
   6125 /* Clear stats of counter entries attached to the AGM monitor. */
   6126 extern int bcm_switch_agm_stat_clear(
   6127     int unit, 
   6128     bcm_switch_agm_id_t agm_id);
   6129 
   6130 /* Destroy an existing AGM entry. */
   6131 extern int bcm_switch_agm_destroy(
   6132     int unit, 
   6133     bcm_switch_agm_id_t agm_id);
   6134 
   6135 /* Retrieve a (fabric) trunk_id where the AGM entry is attached. */
   6136 extern int bcm_switch_agm_trunk_attach_get(
   6137     int unit, 
   6138     bcm_switch_agm_id_t agm_id, 
   6139     bcm_trunk_t *trunk_id);
   6140 
   6141 /* Retrieve a L3 ECMP group id where the AGM entry is attached. */
   6142 extern int bcm_switch_agm_l3_ecmp_attach_get(
   6143     int unit, 
   6144     bcm_switch_agm_id_t agm_id, 
   6145     bcm_if_t *l3_ecmp_id);
   6146 
   6147 /* Retrieve an AGM info on which the AGM entry is attached. */
   6148 extern int bcm_switch_agm_get(
   6149     int unit, 
   6150     bcm_switch_agm_info_t *agm_info);
   6151 
   6152 /* Enable/Disable an existing AGM monitor. */
   6153 extern int bcm_switch_agm_enable_get(
   6154     int unit, 
   6155     bcm_switch_agm_id_t agm_id, 
   6156     int *enable);
   6157 
   6158 /* 
   6159  * Traverse through the AGM monitor table and run callback at each valid
   6160  * entry.
   6161  */
   6162 extern int bcm_switch_agm_traverse(
   6163     int unit, 
   6164     int flags, 
   6165     bcm_switch_agm_traverse_cb trav_fn, 
   6166     void *user_data);
   6167 
   6168 #endif /* BCM_HIDE_DISPATCHABLE */
   6169 
   6170 /* Service type for Match */
   6171 typedef enum bcm_switch_match_service_e {
   6172     bcmSwitchMatchServiceMiml = 0,      /* Mac-in-Mac Lite(MiML). Required
   6173                                            fields: inner_ethtype, outer_ethtype. */
   6174     bcmSwitchMatchServiceCustomHeader = 1, /* Custom Header. Required fields:
   6175                                            value32, int_pri, color. */
   6176     bcmSwitchMatchServiceGtp = 2,       /* GPRS Tunnel Protocol packets.
   6177                                            Required fields: match_criteria,
   6178                                            src_port, dst_port. */
   6179     bcmSwitchMatchServicePrpHsrSupervision = 3, /* Seamless Redundancy PRP/HSR
   6180                                            supervision protocol. Required
   6181                                            fields: ethtype1 (for PRP), ethtype2
   6182                                            (for HSR), dst_mac, dst_mac_mask */
   6183     bcmSwitchMatchServiceDot1cbSupervision = 4, /* Seamless Redundancy 802.1CB
   6184                                            supervision protocol. Required
   6185                                            fields: ethtype1, dst_mac,
   6186                                            dst_mac_mask */
   6187     bcmSwitchMatchServiceLinkLocal = 5, /* Link-local MAC addresses. Required
   6188                                            fields: dst_mac, dst_mac_mask */
   6189     bcmSwitchMatchService__Count = 6    /* Must be last. */
   6190 } bcm_switch_match_service_t;
   6191 
   6192 /* Types for bcm_switch_match_config_info_t. */
   6193 #define BCM_SWITCH_GTP_MATCH_DST_PORT       0x1        /* Match only destination
   6194                                                           port of GTP packets */
   6195 #define BCM_SWITCH_GTP_MATCH_SRC_PORT       0x2        /* Match only source port
   6196                                                           of GTP packets */
   6197 #define BCM_SWITCH_GTP_MATCH_SRC_OR_DST_PORT 0x3        /* Match source port or
   6198                                                           destination port of
   6199                                                           GTP packets */
   6200 #define BCM_SWITCH_GTP_MATCH_SRC_AND_DST_PORT 0x4        /* Match source port and
   6201                                                           destination port of
   6202                                                           GTP packets */
   6203 
   6204 /* 
   6205  * This structure describes the fields that need to be supplies for the
   6206  * configuration along with the property type.
   6207  */
   6208 typedef struct bcm_switch_match_config_info_s {
   6209     uint32 value32;         /* 32-bit data value to match */
   6210     uint16 inner_ethtype;   /* 16-bit Inner Ethertype to match */
   6211     uint16 outer_ethtype;   /* 16-bit Outer Ethertype to match */
   6212     uint8 int_pri;          /* Internal packet priority to set when matched */
   6213     bcm_color_t color;      /* Packet Color to set when matched */
   6214     uint8 match_criteria;   /* Match criteria for GPRS Tunnel Protocol packets */
   6215     uint16 dst_port;        /* Matched destination port */
   6216     uint16 src_port;        /* Matched source port */
   6217     uint16 ethtype1;        /* 16-bit Ethertype to match */
   6218     uint16 ethtype2;        /* 16-bit Ethertype (alternate) to match */
   6219     bcm_mac_t dst_mac;      /* Destination MAC address to match */
   6220     bcm_mac_t dst_mac_mask; /* Mask for destination MAC address */
   6221 } bcm_switch_match_config_info_t;
   6222 
   6223 /* bcm_switch_match_config_info_t initialization */
   6224 extern void bcm_switch_match_config_info_t_init(
   6225     bcm_switch_match_config_info_t *config_info);
   6226 
   6227 #ifndef BCM_HIDE_DISPATCHABLE
   6228 
   6229 /* 
   6230  * Add a match config, match_id will be returned after match config
   6231  * created.
   6232  */
   6233 extern int bcm_switch_match_config_add(
   6234     int unit, 
   6235     bcm_switch_match_service_t match_service, 
   6236     bcm_switch_match_config_info_t *config_info, 
   6237     int *match_id);
   6238 
   6239 /* Delete the match config with the given match_id. */
   6240 extern int bcm_switch_match_config_delete(
   6241     int unit, 
   6242     bcm_switch_match_service_t match_service, 
   6243     int match_id);
   6244 
   6245 /* Delete all created match config with the given match_service. */
   6246 extern int bcm_switch_match_config_delete_all(
   6247     int unit, 
   6248     bcm_switch_match_service_t match_service);
   6249 
   6250 /* Modify the configuration of the match with the given match_id. */
   6251 extern int bcm_switch_match_config_set(
   6252     int unit, 
   6253     bcm_switch_match_service_t match_service, 
   6254     int match_id, 
   6255     bcm_switch_match_config_info_t *config_info);
   6256 
   6257 /* Get the configuration of the match with the given match_id. */
   6258 extern int bcm_switch_match_config_get(
   6259     int unit, 
   6260     bcm_switch_match_service_t match_service, 
   6261     int match_id, 
   6262     bcm_switch_match_config_info_t *config_info);
   6263 
   6264 #endif /* BCM_HIDE_DISPATCHABLE */
   6265 
   6266 /* match table traverse callback. */
   6267 typedef int (*bcm_switch_match_config_traverse_cb)(
   6268     int unit, 
   6269     int match_id, 
   6270     bcm_switch_match_config_info_t *config_info, 
   6271     void *user_data);
   6272 
   6273 #ifndef BCM_HIDE_DISPATCHABLE
   6274 
   6275 /* Traverse all created match config. */
   6276 extern int bcm_switch_match_config_traverse(
   6277     int unit, 
   6278     bcm_switch_match_service_t match_service, 
   6279     bcm_switch_match_config_traverse_cb cb_fn, 
   6280     void *user_data);
   6281 
   6282 #endif /* BCM_HIDE_DISPATCHABLE */
   6283 
   6284 /* Control type for match */
   6285 typedef enum bcm_switch_match_control_type_e {
   6286     bcmSwitchMatchControlPortEnable = 0, /* Enable/disable the capability for
   6287                                            match detection on a port. */
   6288     bcmSwitchMatchControlMatchMask = 1, /* Setup the mask for matching lookup. */
   6289     bcmSwitchMatchControl__Count        /* Must be last. */
   6290 } bcm_switch_match_control_type_t;
   6291 
   6292 /* 
   6293  * This structure describes the fields that need to be supplies for the
   6294  * configuration along with the property type.
   6295  */
   6296 typedef struct bcm_switch_match_control_info_s {
   6297     int port_enable;    /* Enable or disable (per-port) */
   6298     uint32 mask32;      /* Mask value for matching (32 bits) */
   6299 } bcm_switch_match_control_info_t;
   6300 
   6301 /* bcm_switch_match_control_info_t initialization */
   6302 extern void bcm_switch_match_control_info_t_init(
   6303     bcm_switch_match_control_info_t *control_info);
   6304 
   6305 #ifndef BCM_HIDE_DISPATCHABLE
   6306 
   6307 /* Modify the match control information with the given control type. */
   6308 extern int bcm_switch_match_control_set(
   6309     int unit, 
   6310     bcm_switch_match_service_t match_service, 
   6311     bcm_switch_match_control_type_t control_type, 
   6312     bcm_gport_t gport, 
   6313     bcm_switch_match_control_info_t *control_info);
   6314 
   6315 /* Get the match control information with the given control type. */
   6316 extern int bcm_switch_match_control_get(
   6317     int unit, 
   6318     bcm_switch_match_service_t match_service, 
   6319     bcm_switch_match_control_type_t control_type, 
   6320     bcm_gport_t gport, 
   6321     bcm_switch_match_control_info_t *control_info);
   6322 
   6323 #endif /* BCM_HIDE_DISPATCHABLE */
   6324 
   6325 /* match control traverse callback. */
   6326 typedef int (*bcm_switch_match_control_traverse_cb)(
   6327     int unit, 
   6328     bcm_switch_match_control_type_t control_type, 
   6329     bcm_gport_t gport, 
   6330     bcm_switch_match_control_info_t *control_info, 
   6331     void *user_data);
   6332 
   6333 #ifndef BCM_HIDE_DISPATCHABLE
   6334 
   6335 /* Traverse all match control information. */
   6336 extern int bcm_switch_match_control_traverse(
   6337     int unit, 
   6338     bcm_switch_match_service_t match_service, 
   6339     bcm_switch_match_control_traverse_cb cb_fn, 
   6340     void *user_data);
   6341 
   6342 #endif /* BCM_HIDE_DISPATCHABLE */
   6343 
   6344 /* Encap service type. */
   6345 typedef enum bcm_switch_encap_service_e {
   6346     BCM_SWITCH_ENCAP_SERVICE_MIML = 0,  /* Mac-in-Mac Lite(MiML). Required
   6347                                            fields: egress_vlan, egress_srcmac,
   6348                                            egress_dstmac, pkt_pri, pkt_cfi,
   6349                                            pkt_type, iid and length. */
   6350     BCM_SWITCH_ENCAP_SERVICE_CUSTOM_HEADER = 1, /* Custom Header. Required fields:
   6351                                            value32. */
   6352     BCM_SWITCH_ENCAP_SERVICE_COUNT      /* Must be last */
   6353 } bcm_switch_encap_service_t;
   6354 
   6355 /* 
   6356  * Encap info structure.
   6357  * 
   6358  * The following parameters are required when the encap type is MIML:
   6359  * egress_vlan, egress_srcmac, egress_dstmac, pkt_pri, pkt_cfi, pkt_type,
   6360  * iid, length and port.
   6361  * 
   6362  * The following parameters are required when the encap type is
   6363  * CUSTOM_HEADER: value32.
   6364  * 
   6365  * The other optional configurations depend on "flags" definition per
   6366  * service: e.g. qos_map_id , higig_vlan.
   6367  */
   6368 typedef struct bcm_switch_encap_info_s {
   6369     bcm_switch_encap_service_t encap_service; /* Encapsulation Service Type. */
   6370     uint32 flags;                       /* Configuration flags. */
   6371     uint32 value32;                     /* 32-bit data value for encapsulation. */
   6372     int qos_map_id;                     /* QoS Mapped priority. */
   6373     bcm_gport_t port;                   /* Physical port/trunk, which is must
   6374                                            set for MiML to indicate the
   6375                                            destination port. */
   6376     bcm_vlan_t egress_vlan;             /* VID. */
   6377     bcm_mac_t egress_srcmac;            /* Source MAC address. */
   6378     bcm_mac_t egress_dstmac;            /* Dest MAC address. */
   6379     uint8 pkt_pri;                      /* Packet priority. */
   6380     uint8 pkt_cfi;                      /* Packet cfi. */
   6381     uint8 pkt_type;                     /* MiML Packet Type. */
   6382     uint16 iid;                         /* MiML IID. */
   6383     uint16 length;                      /* MiML Length. */
   6384     bcm_vlan_t higig_vlan;              /* MiML HiGig header OVID. */
   6385 } bcm_switch_encap_info_t;
   6386 
   6387 /* Switch encap flags for Custom Header. */
   6388 #define BCM_SWITCH_ENCAP_CUSTOM_HEADER_QOS_MAP_INT_PRI (1 << 0)   /* Encapsulation priority
   6389                                                           control per entry, map
   6390                                                           priority. Required
   6391                                                           fields: qos_map_id. */
   6392 
   6393 /* Switch encap flags for MiML. */
   6394 #define BCM_SWITCH_ENCAP_MIML_QOS_MAP_INT_PRI (1 << 0)   /* Encapsulation priority
   6395                                                           control per entry, map
   6396                                                           priority. Required
   6397                                                           fields: qos_map_id. */
   6398 #define BCM_SWITCH_ENCAP_MIML_OVERRIDE_HG_HEADER_VID (1 << 1)   /* Use higig_vlan value
   6399                                                           to override OVID field
   6400                                                           in HiGig header.
   6401                                                           Required fields:
   6402                                                           higig_vlan. */
   6403 
   6404 /* Initialize a bcm_switch_encap_info_t structure */
   6405 extern void bcm_switch_encap_info_t_init(
   6406     bcm_switch_encap_info_t *encap_info);
   6407 
   6408 #ifndef BCM_HIDE_DISPATCHABLE
   6409 
   6410 /* 
   6411  * Create an encapuslation object, encap_id will be returned after encap
   6412  * created. The encap_id will be used by FP.
   6413  */
   6414 extern int bcm_switch_encap_create(
   6415     int unit, 
   6416     bcm_switch_encap_info_t *encap_info, 
   6417     bcm_if_t *encap_id);
   6418 
   6419 /* Destroy the encap object with the given encap_id. */
   6420 extern int bcm_switch_encap_destroy(
   6421     int unit, 
   6422     bcm_if_t encap_id);
   6423 
   6424 /* Destroy all encap objects. */
   6425 extern int bcm_switch_encap_destroy_all(
   6426     int unit);
   6427 
   6428 /* Modify the configuration of the encap object with the given encap_id. */
   6429 extern int bcm_switch_encap_set(
   6430     int unit, 
   6431     bcm_if_t encap_id, 
   6432     bcm_switch_encap_info_t *encap_info);
   6433 
   6434 /* Get the configuration of the encap object with the given encap_id. */
   6435 extern int bcm_switch_encap_get(
   6436     int unit, 
   6437     bcm_if_t encap_id, 
   6438     bcm_switch_encap_info_t *encap_info);
   6439 
   6440 #endif /* BCM_HIDE_DISPATCHABLE */
   6441 
   6442 /* Switch encap traverse callback. */
   6443 typedef int (*bcm_switch_encap_traverse_cb)(
   6444     int unit, 
   6445     bcm_if_t encap_id, 
   6446     bcm_switch_encap_info_t *encap_info, 
   6447     void *user_data);
   6448 
   6449 #ifndef BCM_HIDE_DISPATCHABLE
   6450 
   6451 /* Traverse the all created encapsulation entries. */
   6452 extern int bcm_switch_encap_traverse(
   6453     int unit, 
   6454     bcm_switch_encap_traverse_cb cb_fn, 
   6455     void *user_data);
   6456 
   6457 #endif /* BCM_HIDE_DISPATCHABLE */
   6458 
   6459 /* Vendor Info Struct */
   6460 typedef struct bcm_switch_dram_vendor_info_s {
   6461     uint32 dram_density;    /* Dram Density */
   6462     uint32 fifo_depth;      /* Fifo Depth */
   6463     uint32 revision_id;     /* Revision Id */
   6464     uint32 manufacture_id;  /* Manufacture Id */
   6465 } bcm_switch_dram_vendor_info_t;
   6466 
   6467 #ifndef BCM_HIDE_DISPATCHABLE
   6468 
   6469 /* Get dram vendor info */
   6470 extern int bcm_switch_dram_vendor_info_get(
   6471     int unit, 
   6472     bcm_switch_dram_vendor_info_t *info);
   6473 
   6474 #endif /* BCM_HIDE_DISPATCHABLE */
   6475 
   6476 /* Thermo sensors enum */
   6477 typedef enum bcm_switch_thermo_sensor_type_e {
   6478     bcmSwitchThermoSensorInvalid = 0, 
   6479     bcmSwitchThermoSensorDram = 1, 
   6480     bcmSwitchThermoSensorSpare1 = 2, 
   6481     bcmSwitchThermoSensorSpare2 = 3, 
   6482     bcmSwitchThermoSensorCount = 4 
   6483 } bcm_switch_thermo_sensor_type_t;
   6484 
   6485 /* Thermo Sensor Struct */
   6486 typedef struct bcm_switch_thermo_sensor_s {
   6487     int thermo_sensor_min;      /* thermo sensor minimal read */
   6488     int thermo_sensor_max;      /* thermo sensor maximal read */
   6489     int thermo_sensor_current;  /* thermo sensor current read */
   6490 } bcm_switch_thermo_sensor_t;
   6491 
   6492 #ifndef BCM_HIDE_DISPATCHABLE
   6493 
   6494 /* Get thermo sensor data */
   6495 extern int bcm_switch_thermo_sensor_read(
   6496     int unit, 
   6497     bcm_switch_thermo_sensor_type_t sensor_type, 
   6498     int interface_id, 
   6499     bcm_switch_thermo_sensor_t *sensor_data);
   6500 
   6501 /* 
   6502  * An API to get the Recommended Operational Value for all FAPs and FEs
   6503  * by reading it from a register field and returning it as is.
   6504  */
   6505 extern int bcm_switch_rov_get(
   6506     int unit, 
   6507     uint32 flags, 
   6508     uint32 *rov);
   6509 
   6510 #endif /* BCM_HIDE_DISPATCHABLE */
   6511 
   6512 #define BCM_SWITCH_SDK_TO_WARMBOOT_VERSION_GET(_major_release, _minor_release, _patch_level, _warmboot_ver)  \
   6513     (_warmboot_ver) = ((((_major_release) & 0xFF) << 16 ) | (((_minor_release) & 0xFF) << 8 ) | (((_patch_level) & 0xFF))) 
   6514 
   6515 /* 
   6516  * Enumeration values that can be passed to API in order to set expected
   6517  * protocol after MPLS bos label based on nibble value.
   6518  */
   6519 typedef enum bcm_switch_mpls_next_protocol_e {
   6520     bcmSwitchMplsNextProtocolNone = 0,  /* Do not speculate any protocol. */
   6521     bcmSwitchMplsNextProtocolEthernet = 1, /* Speculate Ethernet after the MPLS
   6522                                            stack. */
   6523     bcmSwitchMplsNextProtocolIpv4 = 2,  /* Speculate IPv4 protocol after the
   6524                                            MPLS stack. */
   6525     bcmSwitchMplsNextProtocolIpv6 = 3,  /* Speculate IPv6 protocol after the
   6526                                            MPLS stack. */
   6527     bcmSwitchMplsNextProtocolControlWord = 4, /* Speculate CW protocol aftre the MPLS
   6528                                            stack. */
   6529     bcmSwitchMplsNextProtocolBierMpls = 5, /* Speculate BIER MPLS protocol after
   6530                                            the MPLS stack */
   6531     bcmSwitchMplsNextProtocolBierTi = 6, /* Speculate TI MPLS protocol after the
   6532                                            MPLS stack */
   6533     bcmSwitchMplsNextProtocolCount = 7  /* Should be last element in enum. */
   6534 } bcm_switch_mpls_next_protocol_t;
   6535 
   6536 /* 
   6537  * LPM hit bit table ids to be used with
   6538  * bcmSwitchL3LpmHitbitEnable/Disable.
   6539  */
   6540 typedef enum bcm_switch_l3_lpm_hitbit_tables_e {
   6541     bcmL3LpmHitbitTableIPv4UC = 0,      /* IPv4 UC table */
   6542     bcmL3LpmHitbitTableIPv4MC = 1,      /* IPv4 MC table. */
   6543     bcmL3LpmHitbitTableIPv6UC = 2,      /* IPv6 UC table */
   6544     bcmL3LpmHitbitTableIPv6MC = 3,      /* IPv6 MC table */
   6545     bcmL3LpmHitbitTableIPv4UCScale = 4, /* IPv4 UC scale table */
   6546     bcmL3LpmHitbitTableIPv6UCScale = 5, /* IPv6 UC scale table */
   6547     bcmL3LpmHitbitTableCount = 6        /* Always Last, not a usable value */
   6548 } bcm_switch_l3_lpm_hitbit_tables_t;
   6549 
   6550 #define BCM_SWITCH_L2_FREEZE_MODE_PORT      0          /* Reconfigure CML for
   6551                                                           each port to stop
   6552                                                           hardware learning. */
   6553 #define BCM_SWITCH_L2_FREEZE_MODE_GLOBAL    0x1        /* Use global CML
   6554                                                           override setting to
   6555                                                           put all ports in
   6556                                                           forward. */
   6557 
   6558 /* Chip info types */
   6559 typedef enum bcm_switch_chip_info_e {
   6560     bcmSwitchChipInfoIcid = 0,  /* ICID - IC identification number. */
   6561     bcmSwitchChipInfoCount      /* Must be last.  Not a usable value. */
   6562 } bcm_switch_chip_info_t;
   6563 
   6564 #ifndef BCM_HIDE_DISPATCHABLE
   6565 
   6566 /* 
   6567  * Get the chip info of the specified type defined in the
   6568  * bcm_switch_chip_info_t. If the caller-allocated data_buf is non NULL
   6569  * with size specified in max_size (in bytes), the chip info will be
   6570  * filled in the data_buf. If data_buf is NULL, the API returns the
   6571  * required size for the chip info (in bytes) in actual_size.
   6572  */
   6573 extern int bcm_switch_chip_info_get(
   6574     int unit, 
   6575     bcm_switch_chip_info_t info_type, 
   6576     int max_size, 
   6577     void *data_buf, 
   6578     int *actual_size);
   6579 
   6580 #endif /* BCM_HIDE_DISPATCHABLE */
   6581 
   6582 /* Block type */
   6583 typedef enum bcm_switch_block_type_e {
   6584     bcmSwitchBlockTypeAll = -1,     /* All block types */
   6585     bcmSwitchBlockTypeMmu = 0,      /* Memory Management Unit */
   6586     bcmSwitchBlockTypeMmuGlb = 1,   /* MMU(Global) */
   6587     bcmSwitchBlockTypeMmuXpe = 2,   /* MMU(Crosspoint Element) */
   6588     bcmSwitchBlockTypeMmuSc = 3,    /* MMU(Slice Control) */
   6589     bcmSwitchBlockTypeMmuSed = 4,   /* MMU(Slice Enqueue Dequeue) */
   6590     bcmSwitchBlockTypeIpipe = 5,    /* Ingress pipeline */
   6591     bcmSwitchBlockTypeEpipe = 6,    /* Egress pipeline */
   6592     bcmSwitchBlockTypePgw = 7,      /* Packet GateWay */
   6593     bcmSwitchBlockTypeClport = 8,   /* CLPORT */
   6594     bcmSwitchBlockTypeXlport = 9,   /* XLPORT */
   6595     bcmSwitchBlockTypeMacsec = 10,  /* MACSEC */
   6596     bcmSwitchBlockTypeCount = 11    /* Must be last. */
   6597 } bcm_switch_block_type_t;
   6598 
   6599 /* SER error type */
   6600 typedef enum bcm_switch_error_type_e {
   6601     bcmSwitchErrorTypeAll = -1,         /* All error types */
   6602     bcmSwitchErrorTypeUnknown = 0,      /* Unknown error type */
   6603     bcmSwitchErrorTypeParity = 1,       /* Parity error */
   6604     bcmSwitchErrorTypeEccSingleBit = 2, /* Ecc single bit error */
   6605     bcmSwitchErrorTypeEccDoubleBit = 3, /* Ecc double bit error */
   6606     bcmSwitchErrorTypeCount = 4         /* Must be last. */
   6607 } bcm_switch_error_type_t;
   6608 
   6609 /* SER error correction type */
   6610 typedef enum bcm_switch_correction_type_e {
   6611     bcmSwitchCorrectTypeAll = -1,       /* All correction types */
   6612     bcmSwitchCorrectTypeNoAction = 0,   /* S/W takes no action when error
   6613                                            happens (Like some working memories) */
   6614     bcmSwitchCorrectTypeFailToCorrect = 1, /* S/W tries to correct error but fails */
   6615     bcmSwitchCorrectTypeEntryClear = 2, /* S/W writes NULL entry to clear the
   6616                                            error */
   6617     bcmSwitchCorrectTypeCacheRestore = 3, /* Restore entry from a valid S/W cache */
   6618     bcmSwitchCorrectTypeHwCacheRestore = 4, /* Restore entry from another pipe */
   6619     bcmSwitchCorrectTypeSpecial = 5,    /* Memory needs special correction
   6620                                            handling */
   6621     bcmSwitchCorrectTypeCount = 6       /* Must be last. */
   6622 } bcm_switch_correction_type_t;
   6623 
   6624 /* SER log info flags */
   6625 #define BCM_SWITCH_SER_LOG_MEM          0x00000001 /* Error happens on memory */
   6626 #define BCM_SWITCH_SER_LOG_REG          0x00000002 /* Error happens on register */
   6627 #define BCM_SWITCH_SER_LOG_MULTI        0x00000004 /* Parity errors detected
   6628                                                       more than once */
   6629 #define BCM_SWITCH_SER_LOG_CORRECTED    0x00000008 /* Error be corrected by S/W */
   6630 #define BCM_SWITCH_SER_LOG_ENTRY        0x00000010 /* Corrupt entry data is
   6631                                                       valid */
   6632 #define BCM_SWITCH_SER_LOG_CACHE        0x00000020 /* Cache data is valid */
   6633 
   6634 /* This structure describes SER log info. */
   6635 typedef struct bcm_switch_ser_log_info_s {
   6636     uint32 time;                        /* Error detected time */
   6637     uint32 addr;                        /* Error happened address */
   6638     uint32 flags;                       /* SER log info flags */
   6639     int mem_reg;                        /* Error happened memory or register id */
   6640     uint8 name[BCM_MAX_MEM_REG_NAME];   /* Error happened memory or register
   6641                                            name */
   6642     int index;                          /* Error happened memory/register index */
   6643     int port;                           /* Error happened port id */
   6644     int pipe;                           /* Pipe num */
   6645     int instance;                       /* Instance id (MMU) */
   6646     bcm_switch_block_type_t block_type; /* Block type */
   6647     bcm_switch_error_type_t error_type; /* Error type */
   6648     bcm_switch_correction_type_t correction_type; /* Correction type */
   6649     uint32 entry_data[BCM_MAX_MEM_WORDS]; /* Corrupted entry data */
   6650     uint32 cache_data[BCM_MAX_MEM_WORDS]; /* Cache entry data */
   6651 } bcm_switch_ser_log_info_t;
   6652 
   6653 /* Initialize a bcm_switch_ser_log_info_t structure */
   6654 extern void bcm_switch_ser_log_info_t_init(
   6655     bcm_switch_ser_log_info_t *info);
   6656 
   6657 #ifndef BCM_HIDE_DISPATCHABLE
   6658 
   6659 /* API to get SER log info. */
   6660 extern int bcm_switch_ser_log_info_get(
   6661     int unit, 
   6662     int id, 
   6663     bcm_switch_ser_log_info_t *info);
   6664 
   6665 extern int bcm_switch_control_indexed_port_set(
   6666     int unit, 
   6667     bcm_port_t port, 
   6668     bcm_switch_control_key_t key, 
   6669     bcm_switch_control_info_t value);
   6670 
   6671 extern int bcm_switch_control_indexed_port_get(
   6672     int unit, 
   6673     bcm_port_t port, 
   6674     bcm_switch_control_key_t key, 
   6675     bcm_switch_control_info_t *value);
   6676 
   6677 #endif /* BCM_HIDE_DISPATCHABLE */
   6678 
   6679 #define BCM_SWITCH_CONTROL_SYNC_FULL    0xFFFFFFFF /* Used as arg value in API
   6680                                                       bcm_switch_control_set,
   6681                                                       type=bcmSwitchControlSync.
   6682                                                       indicates of doing full
   6683                                                       sequence of sw state sync.
   6684                                                       meaning stop activities
   6685                                                       that may write into the sw
   6686                                                       state before the sync is
   6687                                                       made */
   6688 
   6689 /* SER error statistics flags */
   6690 #define BCM_SWITCH_SER_STAT_TCAM    0x00000001 /* Error happens on TCAM memories */
   6691 
   6692 /* This structure describes SER error statistics type. */
   6693 typedef struct bcm_switch_ser_error_stat_type_s {
   6694     uint32 flags;                       /* SER error statistics flags */
   6695     bcm_switch_block_type_t block_type; /* Block type */
   6696     bcm_switch_error_type_t error_type; /* SER error type */
   6697     bcm_switch_correction_type_t correction_type; /* SER error correction type */
   6698 } bcm_switch_ser_error_stat_type_t;
   6699 
   6700 /* Initialize a bcm_switch_ser_error_stat_type_t structure */
   6701 extern void bcm_switch_ser_error_stat_type_t_init(
   6702     bcm_switch_ser_error_stat_type_t *stat_type);
   6703 
   6704 #ifndef BCM_HIDE_DISPATCHABLE
   6705 
   6706 /* API to get SER error statistics for specified statistics type. */
   6707 extern int bcm_switch_ser_error_stat_get(
   6708     int unit, 
   6709     bcm_switch_ser_error_stat_type_t stat_type, 
   6710     uint32 *value);
   6711 
   6712 /* API to clear SER error statistics for specified statistics type. */
   6713 extern int bcm_switch_ser_error_stat_clear(
   6714     int unit, 
   6715     bcm_switch_ser_error_stat_type_t stat_type);
   6716 
   6717 #endif /* BCM_HIDE_DISPATCHABLE */
   6718 
   6719 #define BCM_SWITCH_MAX_NUM_OPAQUE_TAGS      2          /* Maximum number of
   6720                                                           opaque tags supported
   6721                                                           by the device. */
   6722 #define BCM_SWITCH_OPAQUE_TAG_SIZE_4_BYTES  0x1        /* Tag size of 4 bytes */
   6723 #define BCM_SWITCH_OPAQUE_TAG_SIZE_8_BYTES  0x2        /* Tag size of 8 bytes */
   6724 
   6725 /* Opaque tag parameters. */
   6726 typedef struct bcm_switch_opaque_tag_params_s {
   6727     uint16 ethertype;   /* Ethertype to match when parsing for opaque tag */
   6728     uint8 tag_size;     /* Size of opaque tag (Only 1, 2 are valid values) */
   6729     uint8 tag_type;     /* User specified 2-bit value (0 is invalid value) */
   6730     uint8 valid;        /* Make config active(1) or not actrive in h/w(0) */
   6731 } bcm_switch_opaque_tag_params_t;
   6732 
   6733 /* Initialize bcm_switch_opaque_tag_params_t structure */
   6734 extern void bcm_switch_opaque_tag_config_t_init(
   6735     bcm_switch_opaque_tag_params_t *info);
   6736 
   6737 #ifndef BCM_HIDE_DISPATCHABLE
   6738 
   6739 /* Program either one of the two set of opaque tag registers. */
   6740 extern int bcm_switch_opaque_tag_config_set(
   6741     int unit, 
   6742     int index, 
   6743     bcm_switch_opaque_tag_params_t *opaque_tag_config);
   6744 
   6745 /* Read opaque tag parameters programmed for a given set. */
   6746 extern int bcm_switch_opaque_tag_config_get(
   6747     int unit, 
   6748     int index, 
   6749     bcm_switch_opaque_tag_params_t *opaque_tag_config);
   6750 
   6751 #endif /* BCM_HIDE_DISPATCHABLE */
   6752 
   6753 #define BCM_SWITCH_OBM_PRIORITY_LOSSY_LOW   0          /* This obm_priority is
   6754                                                           mapped to OBM buffer
   6755                                                           partition Lossy Low */
   6756 #define BCM_SWITCH_OBM_PRIORITY_LOSSY_HIGH  1          /* This obm_priority is
   6757                                                           mapped to OBM buffer
   6758                                                           partition Lossy High */
   6759 #define BCM_SWITCH_OBM_PRIORITY_LOSSLESS0   2          /* This obm_priority is
   6760                                                           mapped to OBM buffer
   6761                                                           partition Lossless0 */
   6762 #define BCM_SWITCH_OBM_PRIORITY_LOSSLESS1   3          /* This obm_priority is
   6763                                                           mapped to OBM buffer
   6764                                                           partition Lossless1 */
   6765 #define BCM_SWITCH_OBM_PRIORITY_EXPRESS     4          /* This obm_priority is
   6766                                                           mapped to OBM buffer
   6767                                                           partition Express */
   6768 
   6769 /* OBM classifier code point */
   6770 typedef int bcm_switch_obm_code_point_t;
   6771 
   6772 /* OBM classifier ob_priority */
   6773 typedef int bcm_switch_obm_priority_t;
   6774 
   6775 /* OBM classifier types */
   6776 typedef enum bcm_switch_obm_classifier_type_e {
   6777     bcmSwitchObmClassifierDscp = 0,     /* OBM classifier of type DSCP */
   6778     bcmSwitchObmClassifierMpls = 1,     /* OBM classifier of type MPLS */
   6779     bcmSwitchObmClassifierEtag = 2,     /* OBM classifier of type ETAG */
   6780     bcmSwitchObmClassifierVlan = 3,     /* OBM classifier of type VLAN */
   6781     bcmSwitchObmClassifierHigig2 = 4,   /* OBM classifier of type Higig2 */
   6782     bcmSwitchObmClassifierField = 5     /* OBM classifier of type FIELD */
   6783 } bcm_switch_obm_classifier_type_t;
   6784 
   6785 /* OBM classifier parameters */
   6786 typedef struct bcm_switch_obm_classifier_s {
   6787     uint32 flags;                       /* For future use */
   6788     bcm_mac_t obm_destination_mac;      /* Destination MAC address */
   6789     bcm_mac_t obm_destination_mac_mask; /* Destination MAC address mask */
   6790     uint16 obm_ethertype;               /* Ethertype to be matched */
   6791     uint16 obm_ethertype_mask;          /* Mask used in matching Ethertype */
   6792     bcm_switch_obm_code_point_t obm_code_point; /*  Oversubscription Buffer Manager
   6793                                            classifier's code point.This field if
   6794                                            overloaded for providing DSCP, MPLS
   6795                                            traffic class, ETAG priority code
   6796                                            point, VLAN priority code point or
   6797                                            Higig2 traffic class depending on the
   6798                                            type of classifier. This  will be
   6799                                            mapped to obm_priority value. */
   6800     bcm_switch_obm_priority_t obm_priority; /* Oversubscription Buffer Manager
   6801                                            classifier's priority for given
   6802                                            obm_code_point. */
   6803 } bcm_switch_obm_classifier_t;
   6804 
   6805 /* Initialize an OBM classifier structure. */
   6806 extern void bcm_switch_obm_classifier_t_init(
   6807     bcm_switch_obm_classifier_t *switch_obm_classifier);
   6808 
   6809 #ifndef BCM_HIDE_DISPATCHABLE
   6810 
   6811 /* 
   6812  * Set the mapping from code_point, Dest MAC and Ethertype to a
   6813  * obm_priority based on OBM classifier type.For FIELD classifier always
   6814  * first entry is used.
   6815  */
   6816 extern int bcm_switch_obm_classifier_mapping_set(
   6817     int unit, 
   6818     bcm_gport_t gport, 
   6819     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   6820     bcm_switch_obm_classifier_t *switch_obm_classifier);
   6821 
   6822 /* 
   6823  * Get the mapping from code_point, Dest MAC and Ethertype to a
   6824  * obm_priority based on OBM classifier type.
   6825  */
   6826 extern int bcm_switch_obm_classifier_mapping_get(
   6827     int unit, 
   6828     bcm_gport_t gport, 
   6829     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   6830     bcm_switch_obm_classifier_t *switch_obm_classifier);
   6831 
   6832 /* 
   6833  * Set multiple mapping from code_point, Dest MAC and Ethertype to a
   6834  * obm_priority based on OBM classifier type.
   6835  */
   6836 extern int bcm_switch_obm_classifier_mapping_multi_set(
   6837     int unit, 
   6838     bcm_gport_t gport, 
   6839     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   6840     int array_count, 
   6841     bcm_switch_obm_classifier_t *switch_obm_classifier);
   6842 
   6843 /* 
   6844  * Get multiple mapping from port, Dest MAC and Ethertype to a
   6845  * obm_priority based on OBM classifier type.
   6846  */
   6847 extern int bcm_switch_obm_classifier_mapping_multi_get(
   6848     int unit, 
   6849     bcm_gport_t port, 
   6850     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   6851     int array_max, 
   6852     bcm_switch_obm_classifier_t *switch_obm_classifier, 
   6853     int *array_count);
   6854 
   6855 #endif /* BCM_HIDE_DISPATCHABLE */
   6856 
   6857 /* Switch Dos Attack Events. */
   6858 typedef enum bcm_switch_dosattack_event_e {
   6859     bcmSwitchDosAttackEventMACSAEqualMACDA = 0, /* Dos Attack Event when Source MAC is
   6860                                            same as Destination MAC. */
   6861     bcmSwitchDosAttackEventIpFragOffset = 1, /* Dos Attack Event when Protocol field
   6862                                            Offset in IPv4 or IPv6 header is
   6863                                            equal to 1. */
   6864     bcmSwitchDosAttackEventV6Type0RoutingHdr = 2, /* Dos Attack Event when Type0 Routing
   6865                                            Extension header is present in IPv6. */
   6866     bcmSwitchDosAttackEventV6NonLastFragLT1280 = 3, /* Dos Attack Event when non-last
   6867                                            fragment of IPv6 Packet is less than
   6868                                            1280 bytes. */
   6869     bcmSwitchDosAttackEventTcpIpFirstFragSmall = 4, /* Dos Attack Event when First Fragment
   6870                                            of IP payload with TCP is smaller
   6871                                            than configured value. */
   6872     bcmSwitchDosAttackEventTcpOffset = 5, /* Dos Attack Event when L4 is TCP and
   6873                                            IP protocol offset is equal to 1. */
   6874     bcmSwitchDosAttackEventSynFrag = 6, /* Dos Attack Event when TCP SYN Packet
   6875                                            with Source Port 0-1023 for non-first
   6876                                            fragments tcp/udp port values are
   6877                                            always zero. */
   6878     bcmSwitchDosAttackEventFlagZeroSeqZero = 7, /* Dos Attack Event when TCP Packets
   6879                                            with control flags == 0 and sequence
   6880                                            number == 0. */
   6881     bcmSwitchDosAttackEventTcpFlagsFUP = 8, /* Dos Attack Event when TCP Packets
   6882                                            with FIN,URG & PSH bits set &
   6883                                            sequence number == 0. */
   6884     bcmSwitchDosAttackEventTcpFlagsSF = 9, /* Dos Attack Event when TCP packets
   6885                                            with SYN and FIN set. */
   6886     bcmSwitchDosAttackEventTcpPortsEqual = 10, /* Dos Attack Event when TCP Source and
   6887                                            Destination ports are same. */
   6888     bcmSwitchDosAttackEventUdpPortsEqual = 11, /* Dos Attack Event when UDP Source and
   6889                                            Destination ports are same. */
   6890     bcmSwitchDosAttackEventIcmp = 12,   /* Dos Attack Event when ICMP V4 and V6
   6891                                            ping packet with payload bigger than
   6892                                            configured value. */
   6893     bcmSwitchDosAttackEventIcmpFragments = 13, /* Dos Attack Event when IPv4/IPv6
   6894                                            fragmented ICMP packets. */
   6895     bcmSwitchDosAttackEventTcpFlagsSR = 14, /* Dos Attack Event when TCP packets
   6896                                            with SYN and RST set. */
   6897     bcmSwitchDosAttackEventTcpFlagsSynFirstFrag = 15, /* Dos Attack Event when TCP with SYN
   6898                                            set and first fragment of fragmented
   6899                                            IP packet. */
   6900     bcmSwitchDosAttackEventTcpFlagsFinNoAck = 16, /* Dos Attack Event when TCP packet with
   6901                                            FIN set but ACK not set. */
   6902     bcmSwitchDosAttackEventTcpFlagsRstNoAck = 17, /* Dos Attack Event when TCP packet with
   6903                                            RST set but ACK not set. */
   6904     bcmSwitchDosAttackEventTcpFlagsNoSFRA = 18, /* Dos Attack Event when TCP packet with
   6905                                            SYN, FIN, RST and ACK not set. */
   6906     bcmSwitchDosAttackEventTcpDstPortZero = 19, /* Dos Attack Event when TCP packet with
   6907                                            Destination port equals to 0. */
   6908     bcmSwitchDosAttackEventTcpSrcPortZero = 20, /* Dos Attack Event when TCP packet with
   6909                                            Source port equals to 0. */
   6910     bcmSwitchDosAttackEventTcpIpDstBcast = 21, /* Dos Attack Event when TCP Packet with
   6911                                            Destination IP Broadcast. */
   6912     bcmSwitchDosAttackEventTcpFlagsZero = 22, /* Dos Attack Event when configured TCP
   6913                                            flags is zero. */
   6914     bcmSwitchDosAttackEventTcpFlagsResvdNonZero = 23, /* Dos Attack Event when configured
   6915                                            Reserved flags is non-zero. */
   6916     bcmSwitchDosAttackEventTcpFlagsAck = 24, /* Dos Attack Event when TCP flag ACK is
   6917                                            set and Acknowledge number is zero. */
   6918     bcmSwitchDosAttackEventTcpFlagsUrgNoUrgPtr = 25, /* Dos Attack Event when TCP Flag URG
   6919                                            set and Urgent pointer is zero. */
   6920     bcmSwitchDosAttackEventTcpFlagsNoUrgWithUrgPtr = 26, /* Dos Attack Event when TCP Flag URG
   6921                                            not set and Urgent pointer is not
   6922                                            zero. */
   6923     bcmSwitchDosAttackEventTcpFlagsSynOption = 27, /* Dos Attack Event when TCP Flag SYN
   6924                                            set and Option same as configured
   6925                                            value. */
   6926     bcmSwitchDosAttackEventCount = 28   /* Must be last. Not a usable value. */
   6927 } bcm_switch_dosattack_event_t;
   6928 
   6929 #define BCM_SWITCH_DOSATTACK_EVENT_STR \
   6930 { \
   6931     "MACSAEqualMACDA", \
   6932     "IpFragOffset", \
   6933     "V6Type0RoutingHdr", \
   6934     "V6NonLastFragLT1280", \
   6935     "TcpIpFirstFragSmall", \
   6936     "TcpOffset", \
   6937     "SynFrag", \
   6938     "FlagZeroSeqZero", \
   6939     "TcpFlagsFUP", \
   6940     "TcpFlagsSF", \
   6941     "TcpPortsEqual", \
   6942     "UdpPortsEqual", \
   6943     "Icmp", \
   6944     "IcmpFragments", \
   6945     "TcpFlagsSR", \
   6946     "TcpFlagsSynFirstFrag", \
   6947     "TcpFlagsFinNoAck", \
   6948     "TcpFlagsRstNoAck", \
   6949     "TcpFlagsNoSFRA", \
   6950     "TcpDstPortZero", \
   6951     "TcpSrcPortZero", \
   6952     "TcpIpDstBcast", \
   6953     "TcpFlagsZero", \
   6954     "TcpFlagsResvdNonZero", \
   6955     "TcpFlagsAck", \
   6956     "TcpFlagsUrgNoUrgPtr", \
   6957     "TcpFlagsNoUrgWithUrgPtr", \
   6958     "TcpFlagsSynOption"  \
   6959 }
   6960 
   6961 /* Switch Dos Attack Events Flags. */
   6962 #define BCM_SWITCH_DOSATTACK_OUTER_HDR      (1 << 0)   /* Dos Attack events
   6963                                                           origin in outer header
   6964                                                           of packet. */
   6965 #define BCM_SWITCH_DOSATTACK_INNER_HDR      (1 << 1)   /* Dos Attack events
   6966                                                           origin in inner header
   6967                                                           of packet. */
   6968 #define BCM_SWITCH_DOSATTACK_FLOWTRACKER_PRESEL (1 << 2)   /* Dos Attack events used
   6969                                                           for qualifying in
   6970                                                           presel of flowtracker
   6971                                                           FP stage. */
   6972 
   6973 #ifndef BCM_HIDE_DISPATCHABLE
   6974 
   6975 /* Get Switch dos attack events configured for tracking purpose. */
   6976 extern int bcm_switch_dosattack_event_get(
   6977     int unit, 
   6978     uint32 flags, 
   6979     bcm_switch_dosattack_event_t event, 
   6980     int *arg);
   6981 
   6982 /* Configure Switch dos attack events for tracking purpose. */
   6983 extern int bcm_switch_dosattack_event_set(
   6984     int unit, 
   6985     uint32 flags, 
   6986     bcm_switch_dosattack_event_t event, 
   6987     int arg);
   6988 
   6989 #endif /* BCM_HIDE_DISPATCHABLE */
   6990 
   6991 /* Tunnel UDP src port select */
   6992 typedef enum bcm_switch_tunnel_udp_src_port_select_e {
   6993     bcmSwitchTunnelUdpSrcPortStatic = 0, /* Use static value configured in tunnel
   6994                                            initiator */
   6995     bcmSwitchTunnelUdpSrcPortHashEntropy = 1, /* Calculate hash entropy to range [0,
   6996                                            65535] as src port */
   6997     bcmSwitchTunnelUdpSrcPortHashEntropyPrivate = 2, /* Calculate hash entropy to private
   6998                                            range [49152, 65535] as src port */
   6999     bcmSwitchTunnelUdpSrcPortCount = 3  /* Must be last */
   7000 } bcm_switch_tunnel_udp_src_port_select_t;
   7001 
   7002 #define BCM_MAX_NOF_SEGMENTS    16         /* Max number of segment for kbp
   7003                                               master key. */
   7004 #define BCM_ALIGN_MASTER_KEY    80         /* Align kbp master key to 80b. */
   7005 #define BCM_SEGMENT_NAME_SIZE   20         /* Segment name size. */
   7006 
   7007 /* Kbp master key segment info. */
   7008 typedef struct bcm_switch_kbp_master_key_segment_info_s {
   7009     uint8 *segment_name;    /* segment name */
   7010     int segment_size_bits;  /* segment size in bits */
   7011     int segment_type;       /* segment type */
   7012 } bcm_switch_kbp_master_key_segment_info_t;
   7013 
   7014 /* Switch kbp app type info structure. */
   7015 typedef struct bcm_switch_kbp_apptype_info_s {
   7016     int *inst_p;                        /* kbp_instruction_t* instruction
   7017                                            pointer */
   7018     int *fwd_db;                        /* struct kbp_db* fwd db */
   7019     int *rpf_db;                        /* struct kbp_db* rpf db */
   7020     int *dummy_db;                      /* struct kbp_db* dummy db */
   7021     int *fwd_ad_db;                     /* struct kbp_ad_db* ad fwd db */
   7022     int *rpf_ad_db;                     /* struct kbp_ad_db* ad rpf db */
   7023     int *dummy_ad_db;                   /* struct kbp_ad_db* ad dummy db */
   7024     bcm_switch_kbp_master_key_segment_info_t master_key_segment[BCM_MAX_NOF_SEGMENTS]; /* master key fields segments */
   7025     int total_segments_size;            /* total segments size in bits */
   7026     int opcode;                         /* opcode */
   7027     int ltr_index;                      /* ltr_index */
   7028     int master_key_nof_segments;        /* master key fields number of segments */
   7029     int is_valid;                       /* is apptype valid */
   7030 } bcm_switch_kbp_apptype_info_t;
   7031 
   7032 #define BCM_KBP_MAX_NOF_THREADS 2          /* KBP MAX NOF threads. */
   7033 
   7034 /* Switch kbp info structure. */
   7035 typedef struct bcm_switch_kbp_info_s {
   7036     int *device_p;                      /* struct kbp_device* device_p */
   7037     int *thread_p[BCM_KBP_MAX_NOF_THREADS]; /* kbp thread pointers */
   7038 } bcm_switch_kbp_info_t;
   7039 
   7040 #ifndef BCM_HIDE_DISPATCHABLE
   7041 
   7042 /* Get kbp pointer from SDK. */
   7043 extern int bcm_switch_kbp_info_get(
   7044     int unit, 
   7045     bcm_core_t core, 
   7046     bcm_switch_kbp_info_t *kbp_info);
   7047 
   7048 /* Get apptype info per apptype. */
   7049 extern int bcm_switch_kbp_apptype_info_get(
   7050     int unit, 
   7051     bcm_core_t core, 
   7052     bcm_field_AppType_t apptype, 
   7053     bcm_switch_kbp_apptype_info_t *apptype_info);
   7054 
   7055 #endif /* BCM_HIDE_DISPATCHABLE */
   7056 
   7057 #define BCM_SWITCH_RECORD_MODE_LSB  0          /* Use the LSB bits of the layer
   7058                                                   record for load balancing key
   7059                                                   generation. */
   7060 #define BCM_SWITCH_RECORD_MODE_MSB  1          /* Use the MSB bits of the layer
   7061                                                   record for load balancing key
   7062                                                   generation. */
   7063 
   7064 /* Callback function used to power down the DRAM */
   7065 typedef void (*bcm_switch_dram_power_down_callback_t)(
   7066     int unit, 
   7067     uint32 flags, 
   7068     void *userdata);
   7069 
   7070 #ifndef BCM_HIDE_DISPATCHABLE
   7071 
   7072 /* Register a DRAM power down callback routine */
   7073 extern int bcm_switch_dram_power_down_cb_register(
   7074     int unit, 
   7075     uint32 flags, 
   7076     bcm_switch_dram_power_down_callback_t callback, 
   7077     void *userdata);
   7078 
   7079 /* Unregister a DRAM power down callback routine */
   7080 extern int bcm_switch_dram_power_down_cb_unregister(
   7081     int unit, 
   7082     bcm_switch_dram_power_down_callback_t callback, 
   7083     void *userdata);
   7084 
   7085 /* API activates DRAM power down procedure */
   7086 extern int bcm_switch_dram_power_down(
   7087     int unit, 
   7088     uint32 flags);
   7089 
   7090 /* 
   7091  * DRAM partial init (after device power up) when powering back up the
   7092  * DRAM after it was powered down
   7093  */
   7094 extern int bcm_switch_dram_init(
   7095     int unit, 
   7096     uint32 flags);
   7097 
   7098 /* API enable/disable redirecting traffic to DRAM */
   7099 extern int bcm_switch_dram_traffic_enable_set(
   7100     int unit, 
   7101     uint32 flags, 
   7102     uint32 enable);
   7103 
   7104 #endif /* BCM_HIDE_DISPATCHABLE */
   7105 
   7106 /* Allocate encap for reflector with ID */
   7107 #define BCM_SWITCH_REFELCTOR_WITH_ID    0x1        
   7108 
   7109 /* Replace reflector encap data */
   7110 #define BCM_SWITCH_REFELCTOR_REPLACE    0x2        
   7111 
   7112 /* Reflector types */
   7113 typedef enum bcm_switch_reflector_type_e {
   7114     bcmSwitchReflectorUc = 0,           /* L2 or L3 unicast reflector */
   7115     bcmSwitchReflectorL2McExternal = 1, /* L2 external multicast reflector */
   7116     bcmSwitchReflectorL2McInternal = 2, /* L2 external multicast reflector */
   7117     bcmSwitchReflectorTwampIp4 = 4,     /* TWAMP reflector over IPv4 */
   7118     bcmSwitchReflectorTwampIp6 = 8      /* TWAMP reflector over IPv6 */
   7119 } bcm_switch_reflector_type_t;
   7120 
   7121 /* Reflector encap data */
   7122 typedef struct bcm_switch_reflector_data_s {
   7123     bcm_switch_reflector_type_t type;   /* reflector type */
   7124     bcm_mac_t mc_reflector_my_mac;      /* Source MAC address stamped on the
   7125                                            response packet. Relevant for MC
   7126                                            reflector only. */
   7127     uint32 error_estimate;              /* ERROR_ESTIMATE */
   7128     bcm_if_t next_encap_id;             /* Next pointer encap id for the RCH
   7129                                            Ethernet encapsulation */
   7130 } bcm_switch_reflector_data_t;
   7131 
   7132 /* data bcm_switch_reflector_data_t initialization */
   7133 extern void bcm_switch_reflector_data_t_init(
   7134     bcm_switch_reflector_data_t *data);
   7135 
   7136 /* Callback function for reflector traverse */
   7137 typedef void (*bcm_switch_reflector_traverse_cb)(
   7138     int unit, 
   7139     bcm_if_t encap_id, 
   7140     void *user_data);
   7141 
   7142 #ifndef BCM_HIDE_DISPATCHABLE
   7143 
   7144 /* Create encap for reflector */
   7145 extern int bcm_switch_reflector_create(
   7146     int unit, 
   7147     uint32 flags, 
   7148     bcm_if_t *encap_id, 
   7149     bcm_switch_reflector_data_t *data);
   7150 
   7151 /* Get reflector data */
   7152 extern int bcm_switch_reflector_get(
   7153     int unit, 
   7154     uint32 flags, 
   7155     bcm_if_t encap_id, 
   7156     bcm_switch_reflector_data_t *data);
   7157 
   7158 /* Destroy reflector encap */
   7159 extern int bcm_switch_reflector_destroy(
   7160     int unit, 
   7161     uint32 flags, 
   7162     bcm_if_t encap_id);
   7163 
   7164 /* Traverse reflector encap */
   7165 extern int bcm_switch_reflector_traverse(
   7166     int unit, 
   7167     uint32 flags, 
   7168     bcm_switch_reflector_traverse_cb traverse_cb, 
   7169     void *user_data);
   7170 
   7171 #endif /* BCM_HIDE_DISPATCHABLE */
   7172 
   7173 /* Concat header type to master key in ELK */
   7174 typedef enum bcm_switch_concat_header_e {
   7175     bcmSwitchConcatHeaderNone = 0,      /* No extra header concate to master key
   7176                                            in ELK. */
   7177     bcmSwitchConcatHeaderForwarding = 1, /* Concate forwarding header to master
   7178                                            key in ELK. */
   7179     bcmSwitchConcatHeaderNextForwarding = 2, /* Concate header following the
   7180                                            forwarding header to master key in
   7181                                            ELK. */
   7182     bcmSwitchConcatHeader__Count        /* Must be last. */
   7183 } bcm_switch_concat_header_t;
   7184 
   7185 /* Callback function used for device hard reset */
   7186 typedef void (*bcm_switch_hard_reset_callback_t)(
   7187     int unit, 
   7188     uint32 flags, 
   7189     void *userdata);
   7190 
   7191 #ifndef BCM_HIDE_DISPATCHABLE
   7192 
   7193 /* Register a device hard reset callback routine */
   7194 extern int bcm_switch_hard_reset_cb_register(
   7195     int unit, 
   7196     uint32 flags, 
   7197     bcm_switch_hard_reset_callback_t callback, 
   7198     void *userdata);
   7199 
   7200 /* Unregister a device hard reset callback routine */
   7201 extern int bcm_switch_hard_reset_cb_unregister(
   7202     int unit, 
   7203     bcm_switch_hard_reset_callback_t callback, 
   7204     void *userdata);
   7205 
   7206 #endif /* BCM_HIDE_DISPATCHABLE */
   7207 
   7208 #define BCM_SWITCH_FEC_PROPERTY_1ST_HIERARCHY 0x1        /* First FEC Hierarchy. */
   7209 #define BCM_SWITCH_FEC_PROPERTY_2ND_HIERARCHY 0x2        /* Second FEC Hierarchy. */
   7210 #define BCM_SWITCH_FEC_PROPERTY_3RD_HIERARCHY 0x4        /* Third FEC Hierarchy. */
   7211 
   7212 /* 
   7213  * This structure contains the first and last FEC ID in the FEC IDs range
   7214  * of the given hierarchy.
   7215  */
   7216 typedef struct bcm_switch_fec_property_config_s {
   7217     uint32 flags;   /* BCM_SWITCH_FEC_PROPERTY_XXX */
   7218     int start;      /* Start ID */
   7219     int end;        /* End ID */
   7220 } bcm_switch_fec_property_config_t;
   7221 
   7222 #ifndef BCM_HIDE_DISPATCHABLE
   7223 
   7224 /* Get the available FEC IDs for each FEC hierarchy. */
   7225 extern int bcm_switch_fec_property_get(
   7226     int unit, 
   7227     bcm_switch_fec_property_config_t *fec_config);
   7228 
   7229 #endif /* BCM_HIDE_DISPATCHABLE */
   7230 
   7231 #endif /* __BCM_SWITCH_H__ */