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 (504572B)


      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  */
      9 
     10 #ifndef __BCM_SWITCH_H__
     11 #define __BCM_SWITCH_H__
     12 
     13 #include <bcm/port.h>
     14 #include <bcm/error.h>
     15 #include <bcm/udf.h>
     16 #include <bcm/field.h>
     17 #include <bcm/stg.h>
     18 #include <bcm/types.h>
     19 #include <shared/switch.h>
     20 
     21 /* Switch controls. */
     22 typedef enum bcm_switch_control_e {
     23     bcmSwitchHgHdrErrToCpu = 0,         /* HiGig Header Error to CPU. */
     24     bcmSwitchClassTagPacketsToCpu = 1,  /* HG2 packets with a PPD header of 1. */
     25     bcmSwitchIpmcTunnelToCpu = 2,       /* IPMC tunnel packet to CPU. */
     26     bcmSwitchStationMoveOverLearnLimitToCpu = 3, /* Station movement over MAC learn limit
     27                                            to CPU. */
     28     bcmSwitchMcastUnknownErrToCpu = 4,  /* MC unknown Index Error to CPU. */
     29     bcmSwitchLearnLimitPriority = 5,    /* Priority for MAC limit exceeds to
     30                                            CPU. */
     31     bcmSwitchControlOpcodePriority = 6, /* Control Op Code priority. */
     32     bcmSwitchCpuProtoBpduPriority = 7,  /* Priority for BPDUs to CPU. */
     33     bcmSwitchCpuProtoArpPriority = 8,   /* Priority for ARP/ND packets to CPU. */
     34     bcmSwitchCpuProtoIgmpPriority = 9,  /* Priority for IGMP/MLD packets to CPU. */
     35     bcmSwitchCpuProtoDhcpPriority = 10, /* Priority for DHCP packets to CPU. */
     36     bcmSwitchCpuProtoIpmcReservedPriority = 11, /* Priority for IPv4/IPv6 multicast
     37                                            packets to CPU. */
     38     bcmSwitchCpuProtoIpOptionsPriority = 12, /* Priority for IPv4/IPv6 packets with
     39                                            options or IPv6 packets with 0 len.
     40                                            Payload/jumbo option to CPU. */
     41     bcmSwitchCpuProtoExceptionsPriority = 13, /* Priority for IPv4/IPv6 packets with
     42                                            TTL=1 to CPU. */
     43     bcmSwitchCpuProtocolPrio = 14,      /* Priority used for BPDUs to CPU. */
     44     bcmSwitchCpuUnknownPrio = 15,       /* Priority for unknown SA or DA to CPU. */
     45     bcmSwitchCpuSamplePrio = 16,        /* Priority for sFlow sample to CPU. */
     46     bcmSwitchCpuDefaultPrio = 17,       /* Priority for all other packets to
     47                                            CPU. */
     48     bcmSwitchL2StaticMoveToCpu = 18,    /* Port movement of static L2 addr. */
     49     bcmSwitchUnknownIpmcToCpu = 19,     /* Send unknown IP multicasts to CPU. */
     50     bcmSwitchUnknownMcastToCpu = 20,    /* Send unknown multicasts to CPU. */
     51     bcmSwitchUnknownUcastToCpu = 21,    /* Send DLF packets to CPU. */
     52     bcmSwitchNonIpL3ErrToCpu = 22,      /* Non-IP packets w/DA of my router MAC
     53                                            to CPU. */
     54     bcmSwitchL3HeaderErrToCpu = 23,     /* Invalid checksum, TTL 0, etc. */
     55     bcmSwitchUnknownVlanToCpu = 24,     /* Packet VLAN not in VLAN table. */
     56     bcmSwitchUnknownL3SrcToCpu = 25,    /* SIP not found in L3 table. */
     57     bcmSwitchUnknownL3DestToCpu = 26,   /* DIP not found in L3/LPM tables. */
     58     bcmSwitchIpmcPortMissToCpu = 27,    /* Incoming port not in IPMC entry. */
     59     bcmSwitchIpmcErrorToCpu = 28,       /* IPMC pkt has header err or TTL=0. */
     60     bcmSwitchVCLabelMissToCpu = 29,     /* Send VC mismatch packet to CPU. */
     61     bcmSwitchSourceRouteToCpu = 30,     /* Send multicast SA packet to CPU. */
     62     bcmSwitchSampleIngressRandomSeed = 31, /* SFlow ingress RNG seed. */
     63     bcmSwitchSampleEgressRandomSeed = 32, /* SFlow egress RNG seed. */
     64     bcmSwitchCpuFpCopyPrio = 33,        /* Priority used for FP copy to CPU. */
     65     bcmSwitchCpuIcmpRedirectPrio = 34,  /* Priority for ICMP to CPU. */
     66     bcmSwitchCpuMtuFailPrio = 35,       /* Priority for MTU failure to CPU. */
     67     bcmSwitchCpuMirrorPrio = 36,        /* Priority for packets mirrored to CPU. */
     68     bcmSwitchCpuLookupFpCopyPrio = 37,  /* Priority for Lookup FP copy to CPU. */
     69     bcmSwitchL2NonStaticMoveToCpu = 38, /* L2 w/non-static addr to CPU. */
     70     bcmSwitchV6L3ErrToCpu = 39,         /* Invalid IPv6 packets to CPU. */
     71     bcmSwitchV6L3DstMissToCpu = 40,     /* IPv6 unknown dest packets to CPU. */
     72     bcmSwitchV6L3LocalLinkDrop = 41,    /* Drop IPv6 with link local sources. */
     73     bcmSwitchV4L3ErrToCpu = 42,         /* Invalid IPv6 packets to CPU. */
     74     bcmSwitchV4L3DstMissToCpu = 43,     /* IPv6 unknown dest packets to CPU. */
     75     bcmSwitchTunnelErrToCpu = 44,       /* Invalid tunnel packets to CPU. */
     76     bcmSwitchMartianAddrToCpu = 45,     /* Martian packets to CPU. */
     77     bcmSwitchMartianAddr = 46,          /* Enable/Disable Martian packet check. */
     78     bcmSwitchL3UcTtlErrToCpu = 47,      /* L3 unicast w/invalid TTL to CPU. */
     79     bcmSwitchL3SlowpathToCpu = 48,      /* Slowpath packets to CPU. */
     80     bcmSwitchIpmcTtlErrToCpu = 49,      /* IPMC packets w/invalid TTL to CPU. */
     81     bcmSwitchDosAttackToCpu = 50,       /* Denial of Service attacks to CPU. */
     82     bcmSwitchDosAttackSipEqualDip = 51, /* Enable SIP=DIP checking. */
     83     bcmSwitchDosAttackMinTcpHdrSize = 52, /* Header length for min TCP header
     84                                            checking. */
     85     bcmSwitchDosAttackV4FirstFrag = 53, /* Enable IPv4 First Frag checking. */
     86     bcmSwitchDosAttackTcpFlags = 54,    /* Enable TCP flag checking. */
     87     bcmSwitchDosAttackL4Port = 55,      /* Enable L4 port number checking. */
     88     bcmSwitchDosAttackTcpFrag = 56,     /* Enable TCP fragment checking. */
     89     bcmSwitchDosAttackIcmp = 57,        /* Enable ICMP size checK for v4 and v6. */
     90     bcmSwitchDosAttackIcmpV4 = 58,      /* Enable ICMPv4 size check. */
     91     bcmSwitchDosAttackIcmpV6 = 59,      /* Enable ICMPv6 size check. */
     92     bcmSwitchDosAttackIcmpPktOversize = 60, /* Max pkt size for ICMP size check. */
     93     bcmSwitchDosAttackMACSAEqualMACDA = 61, /* MACSA == MACDA check. */
     94     bcmSwitchDosAttackIcmpV6PingSize = 62, /* Max pkt size for v6 ping check. */
     95     bcmSwitchDosAttackIcmpFragments = 63, /* Fragmented ICMP packets check. */
     96     bcmSwitchDosAttackTcpOffset = 64,   /* TCP Header offset equals to 1 check. */
     97     bcmSwitchDosAttackUdpPortsEqual = 65, /* UDP packets where SPORT = DROP. */
     98     bcmSwitchDosAttackTcpPortsEqual = 66, /* TCP packets where SPORT = DROP. */
     99     bcmSwitchDosAttackTcpFlagsSF = 67,  /* TCP packets with SYN & FIN bits
    100                                            enabled. */
    101     bcmSwitchDosAttackTcpFlagsFUP = 68, /* TCP packets with FIN, URG, PSH bits
    102                                            set and sequence number equals 0. */
    103     bcmSwitchDosAttackTcpHdrPartial = 69, /* TCP packets with not full TCP header. */
    104     bcmSwitchDosAttackPingFlood = 70,   /* Enable ping flood checking. */
    105     bcmSwitchDosAttackSynFlood = 71,    /* Enable SYN flood checking. */
    106     bcmSwitchDosAttackTcpSmurf = 72,    /* Enable TCP smurf checking. */
    107     bcmSwitchDosAttackTcpXMas = 73,     /* SeqNum, Fin,Urg,Psh equal 0. */
    108     bcmSwitchDosAttackL3Header = 74,    /* Ipv4/6 header length checks. */
    109     bcmSwitchIcmpRedirectToCpu = 75,    /* ICMP redirect To CPU. */
    110     bcmSwitchMplsSequenceErrToCpu = 76, /* MPLS Sequence number check failure to
    111                                            CPU. */
    112     bcmSwitchMplsLabelMissToCpu = 77,   /* MPLS label lookup miss to CPU. */
    113     bcmSwitchMplsTtlErrToCpu = 78,      /* MPLS Header TTL used value is 0 or 1. */
    114     bcmSwitchMplsInvalidL3PayloadToCpu = 79, /* MPLS L3 payload invalid. */
    115     bcmSwitchMplsInvalidActionToCpu = 80, /* Invalid action / comnination of
    116                                            actions. */
    117     bcmSwitchSharedVlanMismatchToCpu = 81, /* Private VLAN VID mismatch. */
    118     bcmSwitchL3SrcUrpfErrToCpu = 82,    /* Invalid L3 uRPF SIP to CPU. */
    119     bcmSwitchGreKeyToVlan = 83,         /* Enable system configuration for GRE
    120                                            enhancement (including GRE.key). */
    121     bcmSwitchArpReplyToCpu = 84,        /* ARP replies to CPU. */
    122     bcmSwitchArpReplyDrop = 85,         /* ARP replies dropped. */
    123     bcmSwitchArpRequestToCpu = 86,      /* ARP requests to CPU. */
    124     bcmSwitchArpRequestDrop = 87,       /* ARP requests dropped. */
    125     bcmSwitchArpReplyMyStationL2ToCPU = 88, /* Only APR reply packets with My MAC
    126                                            should be sent to CPU */
    127     bcmSwitchNdPktToCpu = 89,           /* ND packets to CPU. */
    128     bcmSwitchNdPktDrop = 90,            /* ND packets dropped. */
    129     bcmSwitchMcastFloodBlocking = 91,   /* Current PFM rule is applied when
    130                                            IGMP/MLD/MC/ReservedMC packet flooded
    131                                            to VLAN. */
    132     bcmSwitchIgmpPktToCpu = 92,         /* IGMP packets to CPU. */
    133     bcmSwitchIgmpPktDrop = 93,          /* IGMP packets dropped. */
    134     bcmSwitchDhcpPktToCpu = 94,         /* DHCP packets to CPU. */
    135     bcmSwitchDhcpPktDrop = 95,          /* DHCP packets dropped. */
    136     bcmSwitchMldPktToCpu = 96,          /* MLD packets to CPU. */
    137     bcmSwitchMldPktDrop = 97,           /* MLD packets dropped. */
    138     bcmSwitchV4ResvdMcPktToCpu = 98,    /* IPv4 reserved MC packets to CPU. */
    139     bcmSwitchV4ResvdMcPktDrop = 99,     /* IPv4 reserved MC packets dropped. */
    140     bcmSwitchV4ResvdMcPktFlood = 100,   /* IPv4 reserved MC packets flooded to
    141                                            VLAN. */
    142     bcmSwitchV6ResvdMcPktToCpu = 101,   /* IPv6 reserved MC packets to CPU. */
    143     bcmSwitchV6ResvdMcPktDrop = 102,    /* IPv6 reserved MC packets dropped. */
    144     bcmSwitchV6ResvdMcPktFlood = 103,   /* IPv6 reserved MC packets flooded to
    145                                            VLAN. */
    146     bcmSwitchIgmpReportLeaveToCpu = 104, /* IGMP report/leave messages to CPU. */
    147     bcmSwitchIgmpReportLeaveDrop = 105, /* IGMP report/leave messages dropped. */
    148     bcmSwitchIgmpReportLeaveFlood = 106, /* IGMP report/leave messages flooded to
    149                                            VLAN. */
    150     bcmSwitchIgmpQueryToCpu = 107,      /* IGMP query messages to CPU. */
    151     bcmSwitchIgmpQueryDrop = 108,       /* IGMP query messages dropped. */
    152     bcmSwitchIgmpQueryFlood = 109,      /* IGMP query messages flooded to VLAN. */
    153     bcmSwitchIgmpUnknownToCpu = 110,    /* IGMP unknown messages to CPU. */
    154     bcmSwitchIgmpUnknownDrop = 111,     /* IGMP unknown messages dropped. */
    155     bcmSwitchIgmpUnknownFlood = 112,    /* IGMP unknown messages flooded to
    156                                            VLAN. */
    157     bcmSwitchMldReportDoneToCpu = 113,  /* MLD report/done messages to CPU. */
    158     bcmSwitchMldReportDoneDrop = 114,   /* MLD report/done messages dropped. */
    159     bcmSwitchMldReportDoneFlood = 115,  /* MLD report/done messages flooded to
    160                                            VLAN. */
    161     bcmSwitchMldQueryToCpu = 116,       /* MLD query messages to CPU. */
    162     bcmSwitchMldQueryDrop = 117,        /* MLD query messages dropped. */
    163     bcmSwitchMldQueryFlood = 118,       /* MLD query messages flooded to VLAN. */
    164     bcmSwitchIpmcV4RouterDiscoveryToCpu = 119, /* IPv4 Router discovery messages to
    165                                            CPU. */
    166     bcmSwitchIpmcV4RouterDiscoveryDrop = 120, /* IPv4 Router discovery messages
    167                                            dropped. */
    168     bcmSwitchIpmcV4RouterDiscoveryFlood = 121, /* IPv4 Router discovery messages
    169                                            flooded to VLAN. */
    170     bcmSwitchIpmcV6RouterDiscoveryToCpu = 122, /* IPv6 Router discovery messages to
    171                                            CPU. */
    172     bcmSwitchIpmcV6RouterDiscoveryDrop = 123, /* IPv6 Router discovery messages
    173                                            dropped. */
    174     bcmSwitchIpmcV6RouterDiscoveryFlood = 124, /* IPv6 Router discovery messages
    175                                            flooded to VLAN. */
    176     bcmSwitchDirectedMirroring = 125,   /* Enable directed mirroring mode. */
    177     bcmSwitchPktAge = 126,              /* Chip-wide packet age time, msec. */
    178     bcmSwitchMcastFloodDefault = 127,   /* VLAN Multicast flood control. */
    179     bcmSwitchParityErrorToCpu = 128,    /* Lookup parity error. */
    180     bcmSwitchL3MtuFailToCpu = 129,      /* L3 MTU check failure. */
    181     bcmSwitchMeterAdjust = 130,         /* Meter/Rate control with overhead on
    182                                            wire accounted for per packet. */
    183     bcmSwitchCounterAdjust = 131,       /* Counter compensation. */
    184     bcmSwitchMeterAdjustInterframeGap = 132, /* Indicate the size in Bytes of the IFG
    185                                            in Header-compensation for policer. */
    186     bcmSwitchHashL2 = 133,              /* Hash Select for L2. */
    187     bcmSwitchHashL3 = 134,              /* Hash Select for L3. */
    188     bcmSwitchHashMultipath = 135,       /* Hash Select for Multipath. */
    189     bcmSwitchHashControl = 136,         /* Hash Control of fields. */
    190     bcmSwitchFieldMultipathHashSelect = 137, /* Hash Select for FP
    191                                            bcmFieldActionL3Switch. */
    192     bcmSwitchFieldMultipathHashSeed = 138, /* Hash Seed for FP
    193                                            bcmFieldActionL3Switch. */
    194     bcmSwitchMirrorStackMode = 139,     /* Select BCM56504, 5670 or 5675-A0
    195                                            style stacking. */
    196     bcmSwitchMirrorSrcModCheck = 140,   /* Source modid check in BCM56504 style
    197                                            of mirroring. */
    198     bcmSwitchMirrorUnmarked = 141,      /* Send mirror packets as simple
    199                                            unicast. */
    200     bcmSwitchDestPortHGTrunk = 142,     /* Enable to use dest port in HiGig
    201                                            trunking. */
    202     bcmSwitchColorSelect = 143,         /* Choose color selection source. */
    203     bcmSwitchModuleLoopback = 144,      /* Allow local module ingress. */
    204     bcmSwitchSrcModBlockMirrorCopy = 145, /* Source modid blocking for BCM5670
    205                                            compatibility. */
    206     bcmSwitchSrcModBlockMirrorOnly = 146, /* Source modid blocking for BCM5675-A0
    207                                            compatibility. */
    208     bcmSwitchHashSeed0 = 147,           /* BCM56700/56800/56580 hash seeds. */
    209     bcmSwitchHashSeed1 = 148,           /* For enhanced hashing algoithm. */
    210     bcmSwitchHashField0PreProcessEnable = 149, /* Enable pre-processing for enhanced
    211                                            hash mode 0. */
    212     bcmSwitchHashField1PreProcessEnable = 150, /* Enable pre-processing for enhanced
    213                                            hash mode 1. */
    214     bcmSwitchHashField0Config = 151,    /* BCM56700/56800/56580 enhanced hash
    215                                            mode 0 config. */
    216     bcmSwitchHashField0Config1 = 152,   /* BCM56840 enhanced hash mode 0 config
    217                                            1. */
    218     bcmSwitchHashField1Config = 153,    /* BCM56700/56800/56580 enhanced hash
    219                                            mode 1 config. */
    220     bcmSwitchHashField1Config1 = 154,   /* BCM56840 enhanced hash mode 1 config
    221                                            1. */
    222     bcmSwitchMacroFlowHashFieldConfig = 155, /* Enhanced hash macro flow mode config. */
    223     bcmSwitchHashSelectControl = 156,   /* BCM56700/56800/56580 field selection
    224                                            control. */
    225     bcmSwitchHashIP4Field0 = 157,       /* BCM56700/56800/56580 enhanced hash
    226                                            field. */
    227     bcmSwitchHashIP4Field1 = 158,       /* Selections for IPv4 packets. */
    228     bcmSwitchHashIP4TcpUdpField0 = 159, /* BCM56840 enhanced hash field. */
    229     bcmSwitchHashIP4TcpUdpField1 = 160, /* Selections for IPv4 TCP/UDP packets. */
    230     bcmSwitchHashIP4TcpUdpPortsEqualField0 = 161, /* BCM56840 enhanced hash field. */
    231     bcmSwitchHashIP4TcpUdpPortsEqualField1 = 162, /* Selections for IPv4 TCP/UDP packets
    232                                            with source L4 port equals to
    233                                            destination L4 port. */
    234     bcmSwitchHashIP6Field0 = 163,       /* BCM56700/56800/56580 enhanced hash
    235                                            field. */
    236     bcmSwitchHashIP6Field1 = 164,       /* Selections for IPv6 packets. */
    237     bcmSwitchHashIP6TcpUdpField0 = 165, /* BCM56840 enhanced hash field. */
    238     bcmSwitchHashIP6TcpUdpField1 = 166, /* Selections for IPv6 TCP/UDP packets. */
    239     bcmSwitchHashIP6TcpUdpPortsEqualField0 = 167, /* BCM56840 enhanced hash field. */
    240     bcmSwitchHashIP6TcpUdpPortsEqualField1 = 168, /* Selections for IPv6 TCP/UDP packets
    241                                            with source L4 port equals to
    242                                            destination L4 port. */
    243     bcmSwitchHashL2Field0 = 169,        /* BCM56700/56800/56580 enhanced hash
    244                                            field. */
    245     bcmSwitchHashL2Field1 = 170,        /* Selections for L2 packets. */
    246     bcmSwitchHashMPLSField0 = 171,      /* BCM56700/56800/56580 enhanced hash
    247                                            field. */
    248     bcmSwitchHashMPLSField1 = 172,      /* Selections for MPLS packets. */
    249     bcmSwitchHashFCOEField0 = 173,      /* BCM56840 enhanced hash field. */
    250     bcmSwitchHashFCOEField1 = 174,      /* Selections for FCOE packets. */
    251     bcmSwitchHashL2TrillField0 = 175,   /* BCM56840 enhanced hash field. */
    252     bcmSwitchHashL2TrillField1 = 176,   /* Selections for L2 payload Trill
    253                                            packets. */
    254     bcmSwitchHashL3TrillField0 = 177,   /* BCM56840 enhanced hash field. */
    255     bcmSwitchHashL3TrillField1 = 178,   /* Selections for L3 payload Trill
    256                                            packets. */
    257     bcmSwitchHashTrillTunnelField0 = 179, /* BCM56840 enhanced hash field. */
    258     bcmSwitchHashTrillTunnelField1 = 180, /* Selections Trill tunnel packets. */
    259     bcmSwitchHashHG2UnknownField0 = 181, /* BCM56700/56800/56580 enhanced hash
    260                                            field. */
    261     bcmSwitchHashHG2UnknownField1 = 182, /* Selections for HiGig2 packets. */
    262     bcmSwitchHashField0OverlayCntagRpidEnable = 183, /* Selections for CNTAG, RPID fields. */
    263     bcmSwitchHashField1OverlayCntagRpidEnable = 184, /* Selections for CNTAG, RPID fields. */
    264     bcmSwitchHashHg2PktFieldsEnable = 185, /* Selections for HiGig2 packets. */
    265     bcmSwitchHashField0Ip6FlowLabel = 186, /* Selections for IPV6 packets. */
    266     bcmSwitchHashField1Ip6FlowLabel = 187, /* Selections for IPV6 packets. */
    267     bcmSwitchHashUseFlowSelTrunkUc = 188, /* Enable/Disable flow based hashing for
    268                                            Trunk. */
    269     bcmSwitchHashUseFlowSelEcmp = 189,  /* Enable/Disable flow based hashing for
    270                                            ECMP. */
    271     bcmSwitchTrunkHashSet0UnicastOffset = 190, /* BCM56700/56800/56580 enhanced hash
    272                                            bits. */
    273     bcmSwitchTrunkHashSet1UnicastOffset = 191, /* Selections for unicast trunking. */
    274     bcmSwitchTrunkHashSet0NonUnicastOffset = 192, /* BCM56700/56800/56580 enhanced hash
    275                                            bits. */
    276     bcmSwitchTrunkHashSet1NonUnicastOffset = 193, /* Selections for non-unicast trunking. */
    277     bcmSwitchTrunkFailoverHashOffset = 194, /* Enhanced hash selections for trunk
    278                                            failover. */
    279     bcmSwitchFabricTrunkHashSet0UnicastOffset = 195, /* BCM56700/56800/56580 enhanced hash
    280                                            bits. */
    281     bcmSwitchFabricTrunkHashSet1UnicastOffset = 196, /* Selections for unicast fabric
    282                                            trunking. */
    283     bcmSwitchFabricTrunkHashSet0NonUnicastOffset = 197, /* BCM56700/56800/56580 enhanced hash
    284                                            bits. */
    285     bcmSwitchFabricTrunkHashSet1NonUnicastOffset = 198, /* Selections for non-unicast fabric
    286                                            trunking. */
    287     bcmSwitchFabricTrunkFailoverHashOffset = 199, /* Enhanced hash selections for fabric
    288                                            trunk failover. */
    289     bcmSwitchFabricTrunkDynamicHashOffset = 200, /* Enhanced hash selections for fabric
    290                                            trunk dynamic load balancing. */
    291     bcmSwitchLoadBalanceHashSet0UnicastOffset = 201, /* BCM56700/56800/56580 enhanced hash
    292                                            bits. */
    293     bcmSwitchLoadBalanceHashSet1UnicastOffset = 202, /* Selections for unicast load
    294                                            balancing. */
    295     bcmSwitchLoadBalanceHashSet0NonUnicastOffset = 203, /* BCM56700/56800/56580 enhanced hash
    296                                            bits. */
    297     bcmSwitchLoadBalanceHashSet1NonUnicastOffset = 204, /* Selections for non-unicast load
    298                                            balancing. */
    299     bcmSwitchMacroFlowHashMinOffset = 205, /* Minimum offset value to be used in
    300                                            offset table. */
    301     bcmSwitchMacroFlowHashMaxOffset = 206, /* Maximum offset value to be used in
    302                                            offset table. */
    303     bcmSwitchMacroFlowHashStrideOffset = 207, /* Offset increment to be used for
    304                                            populating offset table. */
    305     bcmSwitchUniformUcastTrunkDistribution = 208, /* Uniform unicast trunk distribution on
    306                                            trunk with non power of 2 trunk
    307                                            ports. */
    308     bcmSwitchUniformFabricTrunkDistribution = 209, /* Uniform HiGig trunk distribution on
    309                                            trunk with non power of 2 trunk
    310                                            ports. */
    311     bcmSwitchECMPHashSet0Offset = 210,  /* BCM56700/56800/56580 enhanced hash
    312                                            bits. */
    313     bcmSwitchECMPHashSet1Offset = 211,  /* Selections for ECMP. */
    314     bcmSwitchCpuToCpuEnable = 212,      /* Enable copying packets from CMIC to
    315                                            CPU. */
    316     bcmSwitchIgmpUcastEnable = 213,     /* Enable unicast packets with IGMP
    317                                            payload. */
    318     bcmSwitchMldUcastEnable = 214,      /* Enable unicast packets with MLD
    319                                            payload. */
    320     bcmSwitchIgmpReservedMcastEnable = 215, /* IGMP packets with reserved MC address
    321                                            threated as IGMP. */
    322     bcmSwitchMldReservedMcastEnable = 216, /* MLD packets with reserved MC address
    323                                            threated as MLD. */
    324     bcmSwitchMldDirectAttachedOnly = 217, /* Stricter checks for MLD packets are
    325                                            enable. */
    326     bcmSwitchPortEgressBlockL2 = 218,   /* Apply egress mask port blocking on L2
    327                                            traffic. */
    328     bcmSwitchPortEgressBlockL3 = 219,   /* Apply egress mask port blocking on L3
    329                                            traffic. */
    330     bcmSwitchBpduInvalidVlanDrop = 220, /* BPDU packets are dropped upon invalid
    331                                            VLAN. */
    332     bcmSwitchMirrorInvalidVlanDrop = 221, /* Mirror-to-port packets are dropped
    333                                            upon invalid VLAN. */
    334     bcmSwitchMirrorPktChecksEnable = 222, /* Enable/Disable all packet checks for
    335                                            mirror packets. */
    336     bcmSwitchRemoteLearnTrust = 223,    /* Honor the DONOT_LEARN bit in HiGig
    337                                            header. */
    338     bcmSwitchSourceMacZeroDrop = 224,   /* Packets with MACSA of all zeros are
    339                                            dropped. */
    340     bcmSwitchIpmcGroupMtu = 225,        /* For ingress MTU check for all IPMC
    341                                            groups. */
    342     bcmSwitchModuleType = 226,          /* Set Switch module type. */
    343     bcmSwitchDeprecated227 = 227,       /* Deprecated. Do not use. */
    344     bcmSwitchDeprecated228 = 228,       /* Deprecated. Do not use. */
    345     bcmSwitchDeprecated229 = 229,       /* Deprecated. Do not use. */
    346     bcmSwitchL3EgressMode = 230,        /* Enable advanced egress management. */
    347     bcmSwitchL3DefipMultipathCountUpdate = 231, /* Enable control to update L3-DEFIP
    348                                            ECMP-COUNT */
    349     bcmSwitchL3IngressMode = 232,       /* Enable advanced Ingress-interface
    350                                            management. */
    351     bcmSwitchL3HostAsRouteReturnValue = 233, /* Enable control to return value, when
    352                                            prefix added to Route table during
    353                                            L3HostAdd. */
    354     bcmSwitchSourceModBlockUcast = 234, /* Apply source modid block on unicast
    355                                            packets only. */
    356     bcmSwitchSourceModBlockControlOpcode = 235, /* Apply source modid block on system
    357                                            control packets. */
    358     bcmSwitchEgressBlockUcast = 236,    /* Apply egress mask on unicast packets
    359                                            only. */
    360     bcmSwitchAlternateStoreForward = 237, /* Alternate Store and Forward. */
    361     bcmSwitchWarmBoot = 238,            /* Set Warm boot state. */
    362     bcmSwitchStableSelect = 239,        /* Select the storage (or stable)
    363                                            location for Level 2 Warm Boot. */
    364     bcmSwitchStableSize = 240,          /* Select the storage (or stable) size
    365                                            (bytes) for Level 2 Warm Boot. */
    366     bcmSwitchStableUsed = 241,          /* Query the storage (or stable) usage
    367                                            (bytes) for Level 2 Warm Boot. */
    368     bcmSwitchStableConsistent = 242,    /* Query the storage (or stable) for
    369                                            whether state is believed consistent
    370                                            with hardware (API completed prior to
    371                                            warmboot). */
    372     bcmSwitchControlSync = 243,         /* Force a sync of the Level 2 warm boot
    373                                            state on demand. */
    374     bcmSwitchControlAutoSync = 244,     /* Perform a sync of the Level 2 warm
    375                                            boot state after every API. */
    376     bcmSwitchCallbackAbortOnError = 245, /* Abort if a callback returns an error
    377                                            code. */
    378     bcmSwitchUnknownIpmcAsMcast = 246,  /* Threat unknown IPMC as L2 Mcast. */
    379     bcmSwitchTunnelUnknownIpmcDrop = 247, /* Drop unknown IPMC for incomming
    380                                            tunnel. */
    381     bcmSwitchDhcpLearn = 248,           /* Do not learn MACSA of DHCP packet. */
    382     bcmSwitchIpmcTtl1ToCpu = 249,       /* Copy L3 Mcast with TTL 1 to CPU. */
    383     bcmSwitchL3UcastTtl1ToCpu = 250,    /* Copy L3 Ucast with TTL 1 to CPU. */
    384     bcmSwitchDosAttackFlagZeroSeqZero = 251, /* Null scan. */
    385     bcmSwitchHgHdrExtLengthEnable = 252, /* Use HiGig+ HDR_EXT_LEN field. */
    386     bcmSwitchDosAttackSynFrag = 253,    /* Drop TCP SYN packet with source port
    387                                            0-1023 for the first segment. */
    388     bcmSwitchIp4McastL2DestCheck = 254, /* Check MACDA and IPv4 DIP address
    389                                            match. */
    390     bcmSwitchIp6McastL2DestCheck = 255, /* Check MACDA and IPv6 DIP address
    391                                            match. */
    392     bcmSwitchL3InterfaceUrpfEnable = 256, /* Enable URPF per VLAN/L3-IIF for
    393                                            unicast packets. */
    394     bcmSwitchL3TunnelUrpfMode = 257,    /* RPF mode for unicast tunneled
    395                                            packets. */
    396     bcmSwitchL3TunnelUrpfDefaultRoute = 258, /* Enable URPF default gateway check for
    397                                            unicast tunneled packets. */
    398     bcmSwitchL3UrpfFailToCpu = 259,     /* Enable trap URPF fail packets to CPU. */
    399     bcmSwitchL3UrpfRouteEnable = 260,   /* Enable route lookup for URPF check. */
    400     bcmSwitchL3UrpfRouteEnableExternal = 261, /* Enable External(only) route lookup
    401                                            for URPF check. */
    402     bcmSwitchL3UrpfMode = 262,          /* Port rpf mode for unicast packets. */
    403     bcmSwitchL3UrpfDefaultRoute = 263,  /* Enable URPF default gateway check. */
    404     bcmSwitchIngressRateLimitIncludeIFG = 264, /* Add bytes to ingress rate limiting
    405                                            for IFG. */
    406     bcmSwitchRateLimitLinear = 265,     /* Use linear limits for shaping and
    407                                            egress metering. */
    408     bcmSwitchHashL2Dual = 266,          /* Secondary Hash Select for L2. */
    409     bcmSwitchHashL3Dual = 267,          /* Secondary Hash Select for L3. */
    410     bcmSwitchHashDualMoveDepth = 268,   /* Maximum moves in dual hash mode. */
    411     bcmSwitchHashDualMoveDepthL2 = 269, /* Maximum moves in dual hash mode for
    412                                            L2 tables. */
    413     bcmSwitchHashDualMoveDepthL3 = 270, /* Maximum moves in dual hash mode for
    414                                            L3 tables. */
    415     bcmSwitchHashDualMoveDepthVlan = 271, /* Maximum moves in dual hash mode for
    416                                            vlan tables. */
    417     bcmSwitchHashDualMoveDepthMpls = 272, /* Maximum moves in dual hash mode for
    418                                            mpls tables. */
    419     bcmSwitchHashDualMoveDepthEgressVlan = 273, /* Maximum moves in dual hash mode for
    420                                            egress vlan tables. */
    421     bcmSwitchHashDualMoveDepthWlanPort = 274, /* Maximum moves in dual hash mode for
    422                                            WLAN port table. */
    423     bcmSwitchHashDualMoveDepthWlanClient = 275, /* Maximum moves in dual hash mode for
    424                                            WLAN client table. */
    425     bcmSwitchHashMultiMoveDepth = 276,  /* Maximum moves in multi hash mode. */
    426     bcmSwitchHashMultiMoveDepthL2 = 277, /* Maximum moves in multi hash mode for
    427                                            L2 tables. */
    428     bcmSwitchHashMultiMoveDepthL3 = 278, /* Maximum moves in multi hash mode for
    429                                            L3 tables. */
    430     bcmSwitchHashMultiMoveDepthVlan = 279, /* Maximum moves in multi hash mode for
    431                                            vlan tables. */
    432     bcmSwitchHashMultiMoveDepthMpls = 280, /* Maximum moves in multi hash mode for
    433                                            mpls tables. */
    434     bcmSwitchHashMultiMoveDepthEgressVlan = 281, /* Maximum moves in multi hash mode for
    435                                            egress vlan tables. */
    436     bcmSwitchHashL2DualLeastFull = 282, /* Use least full bank in dual hash L2
    437                                            tables. */
    438     bcmSwitchHashL3DualLeastFull = 283, /* Use least full bank in dual hash L3
    439                                            tables. */
    440     bcmSwitchHashMPLSDualLeastFull = 284, /* Use least full bank in dual hash MPLS
    441                                            tables. */
    442     bcmSwitchSharedVlanEnable = 285,    /* Enable shared vlan. */
    443     bcmSwitchSharedVlanL2McastEnable = 286, /* Use shared vlan for L2 mcast pkt. */
    444     bcmSwitchIpmcReplicationSharing = 287, /* IPMC replication uses lists. */
    445     bcmSwitchIpmcReplicationAvailabilityThreshold = 288, /* IPMC replication table available
    446                                            space threshold. */
    447     bcmSwitchVrfMax = 289,              /* Maximum VRF ID for the device. */
    448     bcmSwitchFailoverStackTrunk = 290,  /* Trunk failover support for Stack
    449                                            ports. */
    450     bcmSwitchFailoverEtherTrunk = 291,  /* Trunk failover support for Ether
    451                                            ports. */
    452     bcmSwitchClassBasedMoveFailPktToCpu = 292, /* Class based check fail pkt to CPU. */
    453     bcmSwitchClassBasedMoveFailPktDrop = 293, /* Drop class based check fail pkt. */
    454     bcmSwitchHgHdrMcastFlood = 294,     /* Flood control value in HiGig Header. */
    455     bcmSwitchHgHdrMcastFloodOverride = 295, /* Use flood control value in HiGig
    456                                            header. */
    457     bcmSwitchHgHdrIpMcastFlood = 296,   /* IPMC flood control value in HiGig
    458                                            header. */
    459     bcmSwitchHgHdrIpMcastFloodOverride = 297, /* Use IPMC flood ctrl value in HiGig
    460                                            header. */
    461     bcmSwitchSTPBlockedFieldBypass = 298, /* Disable FP when STP state is blocked. */
    462     bcmSwitchL2PortBlocking = 299,      /* Enable selective port blocking per
    463                                            MAC address. */
    464     bcmSwitchHashIpfixIngress = 300,    /* Hash Select for Ingress IPFIX. */
    465     bcmSwitchHashIpfixIngressDual = 301, /* Secondary Hash Select for Ingress
    466                                            IPFIX. */
    467     bcmSwitchHashIpfixEgress = 302,     /* Hash Select for Egress IPFIX. */
    468     bcmSwitchHashIpfixEgressDual = 303, /* Secondary Hash Select for Egress
    469                                            IPFIX. */
    470     bcmSwitchHashMPLS = 304,            /* Hash Select for MPLS entry. */
    471     bcmSwitchHashMPLSDual = 305,        /* Secondary Hash Select for MPLS entry. */
    472     bcmSwitchForceForwardFabricTrunk = 306, /* Fabric trunk resolution in force
    473                                            forward mode. */
    474     bcmSwitchUseGport = 307,            /* Enable GPORT format for
    475                                            destination/source representation. */
    476     bcmSwitchHgHdrMcastVlanRange = 308, /* HIGIG2 broadcast index range */
    477     bcmSwitchHgHdrMcastL2Range = 309,   /* HIGIG2 multicast index range */
    478     bcmSwitchHgHdrMcastL3Range = 310,   /* HIGIG2 IPMC index range */
    479     bcmSwitchMcastL2Range = 311,        /* Multicast index range */
    480     bcmSwitchMcastL3Range = 312,        /* IPMC index range */
    481     bcmSwitchHashWlanPort = 313,        /* Hash Select for Wlan SVP entry. */
    482     bcmSwitchHashWlanPortDual = 314,    /* Secondary hash Select for Wlan SVP
    483                                            entry. */
    484     bcmSwitchHashWlanClient = 315,      /* Hash select for Wlan client database
    485                                            entry */
    486     bcmSwitchHashWlanClientDual = 316,  /* Secondary hash select for Wlan client
    487                                            database entry */
    488     bcmSwitchWlanClientAuthorizeAll = 317, /* Authorize all wlan clients, disable
    489                                            wlan client lookup */
    490     bcmSwitchWlanClientUnauthToCpu = 318, /* Unauthorized WLAN client's packets to
    491                                            CPU. */
    492     bcmSwitchWlanClientRoamedOutErrorToCpu = 319, /* Roamed out WLAN client's packets to
    493                                            CPU. */
    494     bcmSwitchWlanClientSrcMacMissToCpu = 320, /* WLAN client with source MAC miss:
    495                                            packets to CPU. */
    496     bcmSwitchWlanClientDstMacMissToCpu = 321, /* WLAN client with destination MAC
    497                                            miss: packets to CPU. */
    498     bcmSwitchOamHeaderErrorToCpu = 322, /* Packets with error in the OAM header
    499                                            to CPU. */
    500     bcmSwitchOamUnknownVersionToCpu = 323, /* Packets with unknown OAM version to
    501                                            CPU. */
    502     bcmSwitchOamUnknownVersionDrop = 324, /* Packets with unknown OAM version
    503                                            Dropped. */
    504     bcmSwitchOamUnexpectedPktToCpu = 325, /* OAM Packets with unexpected MDL to
    505                                            CPU. */
    506     bcmSwitchOamCcmToCpu = 326,         /* CCM with unexpected MEPID or Interval
    507                                            to CPU. */
    508     bcmSwitchOamXconCcmToCpu = 327,     /* CCM with low MDL or unexpected MAID
    509                                            to CPU. */
    510     bcmSwitchOamXconOtherToCpu = 328,   /* Other than CCM OAM PDUs with low MDL
    511                                            to CPU. */
    512     bcmSwitchL3SrcBindFailToCpu = 329,  /* Packets with L3 source bind table
    513                                            miss to CPU. */
    514     bcmSwitchTunnelIp4IdShared = 330,   /* Share the IPv4 ID space across
    515                                            tunnels. */
    516     bcmSwitchHashRegexAction = 331,     /* Hash Select for Regex Action entries. */
    517     bcmSwitchHashRegexActionDual = 332, /* Secondary hash Select for Regex
    518                                            Action entries. */
    519     bcmSwitchDeprecated333 = 333,       /* Deprecated. Do not use. */
    520     bcmSwitchCpuCopyDestination = 334,  /* Destination for CPU bound packets. */
    521     bcmSwitchCpuProtoTimeSyncPrio = 335, /* Priority for Time-Sync packets to
    522                                            CPU. */
    523     bcmSwitchCpuProtoMmrpPrio = 336,    /* Priority for MMRP packets to CPU. */
    524     bcmSwitchCpuProtoSrpPrio = 337,     /* Priority for SRP packets to CPU. */
    525     bcmSwitchTimeSyncPktToCpu = 338,    /* Time-Sync protocol packets to CPU. */
    526     bcmSwitchTimeSyncPktDrop = 339,     /* Time-Sync protocol packets dropped. */
    527     bcmSwitchTimeSyncPktFlood = 340,    /* Time-Sync protocol packets flooded to
    528                                            VLAN. */
    529     bcmSwitchMmrpPktToCpu = 341,        /* MMRP protocol packets to CPU. */
    530     bcmSwitchMmrpPktDrop = 342,         /* MMRP protocol packets dropped. */
    531     bcmSwitchMmrpPktFlood = 343,        /* MMRP protocol packets flooded to
    532                                            VLAN. */
    533     bcmSwitchSrpPktToCpu = 344,         /* SRP protocol packets to CPU. */
    534     bcmSwitchSrpPktDrop = 345,          /* SRP protocol packets dropped. */
    535     bcmSwitchSrpPktFlood = 346,         /* SRP protocol packets flooded to VLAN. */
    536     bcmSwitchSRPEthertype = 347,        /* Set SRP protocol EtherType to match. */
    537     bcmSwitchMMRPEthertype = 348,       /* Set MMRP EtherType to match. */
    538     bcmSwitchTimeSyncEthertype = 349,   /* Set Timing and Sync protocol
    539                                            EtherType to match. */
    540     bcmSwitchFcoeEtherType = 350,       /* Set FCOE protocol EtherType to match. */
    541     bcmSwitchSRPDestMacOui = 351,       /* Set SRP protocol MAC upper 3 bytes to
    542                                            match. */
    543     bcmSwitchMMRPDestMacOui = 352,      /* Set MMRP protocol MAC upper 3 bytes
    544                                            to match. */
    545     bcmSwitchTimeSyncDestMacOui = 353,  /* Set Timnig and Sync protocol MAC
    546                                            upper 3 bytes to match. */
    547     bcmSwitchSRPDestMacNonOui = 354,    /* Set SRP protocol MAC lower 3 bytes to
    548                                            match. */
    549     bcmSwitchMMRPDestMacNonOui = 355,   /* Set MMRP protocol MAC lower 3 bytes
    550                                            to match. */
    551     bcmSwitchTimeSyncDestMacNonOui = 356, /* Set Timnig and Sync protocol MAC lowe
    552                                            3 bytes to match. */
    553     bcmSwitchTimeSyncMessageTypeBitmap = 357, /* Set Timnig and Sync protocol message
    554                                            bitmap to match. */
    555     bcmSwitchTimeSyncClassAPktPrio = 358, /* Set Priority for the Class A. */
    556     bcmSwitchTimeSyncClassBPktPrio = 359, /* Set Priority for the Class B. */
    557     bcmSwitchTimeSyncClassAExeptionPktPrio = 360, /* Set Remapping Priority for exeption
    558                                            packets in the Class
    559                                            A. */
    560     bcmSwitchTimeSyncClassBExeptionPktPrio = 361, /* Set Remapping Priority for exeption
    561                                            packets in the Class B. */
    562     bcmSwitchL2McastAllRouterPortsAddEnable = 362, /* Add all-router ports to every L2
    563                                            multicast entry. */
    564     bcmSwitchBypassMode = 363,          /* Omit some switching features to
    565                                            decrease traffic latency. */
    566     bcmSwitchIpmcSameVlanL3Route = 364, /* Enable forwarding of known IPMC
    567                                            packets to the incoming vlan . */
    568     bcmSwitchDeprecated365 = 365,       /* Deprecated. Do not use. */
    569     bcmSwitchFieldCache = 366,          /* Enable caching of Rule table or field
    570                                            entries */
    571     bcmSwitchFieldCommit = 367,         /* Flush the cached Rule table or field
    572                                            entries to hardware */
    573     bcmSwitchIpmcCache = 368,           /* Enable caching of IP Multicast S/G
    574                                            entries */
    575     bcmSwitchIpmcCommit = 369,          /* Flush the cached IP Multicast table
    576                                            entries to hardware */
    577     bcmSwitchL2Cache = 370,             /* Enable caching of MAC address entries */
    578     bcmSwitchL2Commit = 371,            /* Flush the cached MAC address table to
    579                                            hardware */
    580     bcmSwitchL2AgeDelete = 372,         /* Enables deletition of MAC addresses
    581                                            during aging scan */
    582     bcmSwitchL2AgeScan = 373,           /* Scan all MAC addresses and decrement
    583                                            age-status */
    584     bcmSwitchL3HostCache = 374,         /* Enable caching of L3 Host table
    585                                            entries */
    586     bcmSwitchL3HostCommit = 375,        /* Flush the cached L3 Host table to
    587                                            hardware */
    588     bcmSwitchL3RouteCache = 376,        /* Enable caching of L3 Route table
    589                                            entries */
    590     bcmSwitchL3RouteCommit = 377,       /* Flush the cached L3 Route table to
    591                                            hardware */
    592     bcmSwitchL2InvalidCtlToCpu = 378,   /* Packets with invalid L2 control
    593                                            fields to CPU. */
    594     bcmSwitchInvalidGreToCpu = 379,     /* Packets with invalid GRE fields to
    595                                            CPU */
    596     bcmSwitchHashL2MPLSField0 = 380,    /* L2 MPLS enhanced hash field */
    597     bcmSwitchHashL2MPLSField1 = 381,    /* L2 MPLS enhanced hash field */
    598     bcmSwitchHashL3MPLSField0 = 382,    /* L3 MPLS enhanced hash field */
    599     bcmSwitchHashL3MPLSField1 = 383,    /* L3 MPLS enhanced hash field */
    600     bcmSwitchHashMPLSTunnelField0 = 384, /* MPLS tunnel enhanced hash field */
    601     bcmSwitchHashMPLSTunnelField1 = 385, /* MPLS tunnel enhanced hash field */
    602     bcmSwitchHashMIMTunnelField0 = 386, /* MIM tunnel enhanced hash field */
    603     bcmSwitchHashMIMTunnelField1 = 387, /* MIM tunnel enhanced hash field */
    604     bcmSwitchHashMIMField0 = 388,       /* MIM enhanced hash field */
    605     bcmSwitchHashMIMField1 = 389,       /* MIM enhanced hash field */
    606     bcmSwitchStgInvalidToCpu = 390,     /* Packets with STG state of egress port
    607                                            is not in forwarding state to CPU */
    608     bcmSwitchVlanTranslateEgressMissToCpu = 391, /* Packets with VLAN translation talbe
    609                                            missed when it is expected to hit to
    610                                            CPU. */
    611     bcmSwitchL3PktErrToCpu = 392,       /* Packets with IP length field is
    612                                            longer than the actual packet length
    613                                            to CPU. */
    614     bcmSwitchMtuFailureToCpu = 393,     /* Packets with L2 MTU Failure to CPU. */
    615     bcmSwitchSrcKnockoutToCpu = 394,    /* Packets with Split horizon or SVP
    616                                            pruning (SVP==DVP) failure to CPU. */
    617     bcmSwitchWlanTunnelMismatchToCpu = 395, /* Packets with incoming WLAN SVP did
    618                                            not arrive on the expected tunnel to
    619                                            CPU. */
    620     bcmSwitchWlanTunnelMismatchDrop = 396, /* Drop packets with incoming WLAN SVP
    621                                            did not arrive on the expected
    622                                            tunnel. */
    623     bcmSwitchWlanPortMissToCpu = 397,   /* WLAN packets that have a SVP miss to
    624                                            CPU. */
    625     bcmSwitchUnknownVlanToCpuCosq = 398, /* VLAN copy to CPU COS. */
    626     bcmSwitchStgInvalidToCpuCosq = 399, /* STG copy to CPU COS. */
    627     bcmSwitchVlanTranslateEgressMissToCpuCosq = 400, /* VLAN translate miss copy to CPU COS. */
    628     bcmSwitchTunnelErrToCpuCosq = 401,  /* Tunnel Error to CPU COS. */
    629     bcmSwitchL3HeaderErrToCpuCosq = 402, /* L3 Header Error to CPU COS. */
    630     bcmSwitchL3PktErrToCpuCosq = 403,   /* L3 Pkt Error to CPU COS. */
    631     bcmSwitchIpmcTtlErrToCpuCosq = 404, /* TTL drop copy to CPU COS. */
    632     bcmSwitchMtuFailureToCpuCosq = 405, /* MTU failure copy to CPU COS. */
    633     bcmSwitchHgHdrErrToCpuCosq = 406,   /* HIGIG error copy to CPU COS. */
    634     bcmSwitchSrcKnockoutToCpuCosq = 407, /* Split horizon or SVP failure to CPU
    635                                            COS. */
    636     bcmSwitchWlanTunnelMismatchToCpuCosq = 408, /* WLAN move to CPU COS. */
    637     bcmSwitchWlanPortMissToCpuCosq = 409, /* WLAN SVP miss to CPU COS. */
    638     bcmSwitchIpfixRateViolationDataInsert = 410, /* Allow insert when rate violation is
    639                                            detected. */
    640     bcmSwitchIpfixRateViolationPersistent = 411, /* Keep rate violation status
    641                                            persistent. */
    642     bcmSwitchHashVlanTranslate = 412,   /* Hash Select for VLAN translate. */
    643     bcmSwitchHashVlanTranslateDual = 413, /* Secondary Hash Select for VLAN
    644                                            translate. */
    645     bcmSwitchHashEgressVlanTranslate = 414, /* Hash Select for Egress VLAN
    646                                            translate. */
    647     bcmSwitchHashEgressVlanTranslateDual = 415, /* Secondary Hash Select for Egress VLAN
    648                                            translate. */
    649     bcmSwitchLayeredQoSResolution = 416, /* Enable layered QoS resolution mode. */
    650     bcmSwitchCustomerQueuing = 417,     /* Enable customer domain queuing. */
    651     bcmSwitchCosqStatThreshold = 418,   /* Sets Statistics Threshold to ACE-TCE
    652                                            Mode */
    653     bcmSwitchCosqStatInterval = 419,    /* Sets background ejection Statistics
    654                                            Interval */
    655     bcmSwitchEncapErrorToCpu = 420,     /* Encapsulation Error to CPU */
    656     bcmSwitchMplsPortIndependentLowerRange1 = 421, /* Port Independent Lower MPLS Label for
    657                                            Range-1 */
    658     bcmSwitchMplsPortIndependentUpperRange1 = 422, /* Port Independent Upper MPLS Label for
    659                                            Range-1 */
    660     bcmSwitchMplsPortIndependentLowerRange2 = 423, /* Port Independent Lower MPLS Label for
    661                                            Range-2 */
    662     bcmSwitchMplsPortIndependentUpperRange2 = 424, /* Port Independent Upper MPLS Label for
    663                                            Range-2 */
    664     bcmSwitchMirrorEgressTrueColorSelect = 425, /* Color override selection for egress
    665                                            true mirroring */
    666     bcmSwitchMirrorEgressTruePriority = 426, /* Priority override selection for
    667                                            egress true mirroring */
    668     bcmSwitchPFCClass0Queue = 427,      /* Queue to suspend when a Priority Flow
    669                                            Control class 0 packet is received. */
    670     bcmSwitchPFCClass1Queue = 428,      /* Queue to suspend when a Priority Flow
    671                                            Control class 1 packet is received. */
    672     bcmSwitchPFCClass2Queue = 429,      /* Queue to suspend when a Priority Flow
    673                                            Control class 2 packet is received. */
    674     bcmSwitchPFCClass3Queue = 430,      /* Queue to suspend when a Priority Flow
    675                                            Control class 3 packet is received. */
    676     bcmSwitchPFCClass4Queue = 431,      /* Queue to suspend when a Priority Flow
    677                                            Control class 4 packet is received. */
    678     bcmSwitchPFCClass5Queue = 432,      /* Queue to suspend when a Priority Flow
    679                                            Control class 5 packet is received. */
    680     bcmSwitchPFCClass6Queue = 433,      /* Queue to suspend when a Priority Flow
    681                                            Control class 6 packet is received. */
    682     bcmSwitchPFCClass7Queue = 434,      /* Queue to suspend when a Priority Flow
    683                                            Control class 7 packet is received. */
    684     bcmSwitchPFCClass0McastQueue = 435, /* Multicast queue to suspend when a
    685                                            Priority Flow Control class 0 packet
    686                                            is received. */
    687     bcmSwitchPFCClass1McastQueue = 436, /* Multicast queue to suspend when a
    688                                            Priority Flow Control class 1 packet
    689                                            is received. */
    690     bcmSwitchPFCClass2McastQueue = 437, /* Multicast queue to suspend when a
    691                                            Priority Flow Control class 2 packet
    692                                            is received. */
    693     bcmSwitchPFCClass3McastQueue = 438, /* Multicast queue to suspend when a
    694                                            Priority Flow Control class 3 packet
    695                                            is received. */
    696     bcmSwitchPFCClass4McastQueue = 439, /* Multicast queue to suspend when a
    697                                            Priority Flow Control class 4 packet
    698                                            is received. */
    699     bcmSwitchPFCClass5McastQueue = 440, /* Multicast queue to suspend when a
    700                                            Priority Flow Control class 5 packet
    701                                            is received. */
    702     bcmSwitchPFCClass6McastQueue = 441, /* Multicast queue to suspend when a
    703                                            Priority Flow Control class 6 packet
    704                                            is received. */
    705     bcmSwitchPFCClass7McastQueue = 442, /* Multicast queue to suspend when a
    706                                            Priority Flow Control class 7 packet
    707                                            is received. */
    708     bcmSwitchPFCClass0DestmodQueue = 443, /* Destination module queue to suspend
    709                                            when a Priority Flow Control class 0
    710                                            packet is received. */
    711     bcmSwitchPFCClass1DestmodQueue = 444, /* Destination module queue to suspend
    712                                            when a Priority Flow Control class 1
    713                                            packet is received. */
    714     bcmSwitchPFCClass2DestmodQueue = 445, /* Destination module queue to suspend
    715                                            when a Priority Flow Control class 2
    716                                            packet is received. */
    717     bcmSwitchPFCClass3DestmodQueue = 446, /* Destination module queue to suspend
    718                                            when a Priority Flow Control class 3
    719                                            packet is received. */
    720     bcmSwitchPFCClass4DestmodQueue = 447, /* Destination module queue to suspend
    721                                            when a Priority Flow Control class 4
    722                                            packet is received. */
    723     bcmSwitchPFCClass5DestmodQueue = 448, /* Destination module queue to suspend
    724                                            when a Priority Flow Control class 5
    725                                            packet is received. */
    726     bcmSwitchPFCClass6DestmodQueue = 449, /* Destination module queue to suspend
    727                                            when a Priority Flow Control class 6
    728                                            packet is received. */
    729     bcmSwitchPFCClass7DestmodQueue = 450, /* Destination module queue to suspend
    730                                            when a Priority Flow Control class 7
    731                                            packet is received. */
    732     bcmSwitchPFCQueue0Class = 451,      /* Priority Flow Control class for COS
    733                                            queue 0. */
    734     bcmSwitchPFCQueue1Class = 452,      /* Priority Flow Control class for COS
    735                                            queue 1. */
    736     bcmSwitchPFCQueue2Class = 453,      /* Priority Flow Control class for COS
    737                                            queue 2. */
    738     bcmSwitchPFCQueue3Class = 454,      /* Priority Flow Control class for COS
    739                                            queue 3. */
    740     bcmSwitchPFCQueue4Class = 455,      /* Priority Flow Control class for COS
    741                                            queue 4. */
    742     bcmSwitchPFCQueue5Class = 456,      /* Priority Flow Control class for COS
    743                                            queue 5. */
    744     bcmSwitchPFCQueue6Class = 457,      /* Priority Flow Control class for COS
    745                                            queue 6. */
    746     bcmSwitchPFCQueue7Class = 458,      /* Priority Flow Control class for COS
    747                                            queue 7. */
    748     bcmSwitchReserveLowL3InterfaceId = 459, /* Set the lower inclusive bounds of the
    749                                            L3 Interfaces.  Get will return the
    750                                            lowest value supported by the device.
    751                                             Setting 0 will remove the reserved
    752                                            range. */
    753     bcmSwitchReserveHighL3InterfaceId = 460, /* Set the higher inclusive bounds of
    754                                            the L3 Interfaces.  Get will return
    755                                            the lowest value supported by the
    756                                            device.  Setting 0 will remove the
    757                                            reserved range. */
    758     bcmSwitchReserveLowL3EgressId = 461, /* Set the lower inclusive bounds of the
    759                                            L3 Egress object.  Get will return
    760                                            the lowest value supported by the
    761                                            device.  Setting 0 will remove the
    762                                            reserved range. */
    763     bcmSwitchReserveHighL3EgressId = 462, /* Set the higher inclusive bounds of
    764                                            the L3 Egress object.  Get will
    765                                            return the lowest value supported by
    766                                            the device.  Setting 0 will remove
    767                                            the reserved range. */
    768     bcmSwitchReserveLowVlanPort = 463,  /* Set the lower inclusive bounds of the
    769                                            vlan gport resources.  Get will
    770                                            return the lowest value supported by
    771                                            the device.  Setting 0 will remove
    772                                            the reserved range */
    773     bcmSwitchReserveHighVlanPort = 464, /* Set the highest inclusive bounds of
    774                                            the vlan gport resources.  Get will
    775                                            return the highest value supported by
    776                                            the device.  Setting 0 will remove
    777                                            the reserved range */
    778     bcmSwitchReserveLowMplsPort = 465,  /* Set the lower inclusive bounds of the
    779                                            mpls gport resources.  Get will
    780                                            return the lowest value supported by
    781                                            the device.  Setting 0 will remove
    782                                            the reserved range */
    783     bcmSwitchReserveHighMplsPort = 466, /* Set the highest inclusive bounds of
    784                                            the mpls gport resources.  Get will
    785                                            return the highest value supported by
    786                                            the device.  Setting 0 will remove
    787                                            the reserved range */
    788     bcmSwitchReserveLowMimPort = 467,   /* Set the lower inclusive bounds of the
    789                                            mim gport resources.  Get will return
    790                                            the lowest value supported by the
    791                                            device.  Setting 0 will remove the
    792                                            reserved range */
    793     bcmSwitchReserveHighMimPort = 468,  /* Set the highest inclusive bounds of
    794                                            the mim gport resources.  Get will
    795                                            return the highest value supported by
    796                                            the device.  Setting 0 will remove
    797                                            the reserved range */
    798     bcmSwitchReserveLowEncap = 469,     /* Set the lower inclusive bounds of the
    799                                            Encap ID resources used internally by
    800                                            gports.  Get will return the lowest
    801                                            value supported by the device. 
    802                                            Setting 0 will remove the reserved
    803                                            range */
    804     bcmSwitchReserveHighEncap = 470,    /* Set the highest inclusive bounds of
    805                                            the Encap ID resources used
    806                                            internally by gports.  Get will
    807                                            return the highest value supported by
    808                                            the device.  Setting 0 will remove
    809                                            the reserved range */
    810     bcmSwitchReserveLowL2Egress = 471,  /* Set the lower inclusive bounds of the
    811                                            L2 Encap ID resources.  Get will
    812                                            return the lowest value supported by
    813                                            the device.  Setting 0 will remove
    814                                            the reserved range */
    815     bcmSwitchReserveHighL2Egress = 472, /* Set the highest inclusive bounds of
    816                                            the L2 Encap ID resources.  Get will
    817                                            return the highest value supported by
    818                                            the device.  Setting 0 will remove
    819                                            the reserved range */
    820     bcmSwitchReserveLowVpn = 473,       /* Set the lower inclusive bounds of the
    821                                            VPN ID resources.  Get will return
    822                                            the lowest value supported by the
    823                                            device.  Setting 0 will remove the
    824                                            reserved range */
    825     bcmSwitchReserveHighVpn = 474,      /* Set the highest inclusive bounds of
    826                                            the VPN ID resources.  Get will
    827                                            return the highest value supported by
    828                                            the device.  Setting 0 will remove
    829                                            the reserved range */
    830     bcmSwitchReserveLowFailoverId = 475, /* Set the lower inclusive bounds of
    831                                            failover object.  Get will return the
    832                                            lowest value supported by the device.
    833                                             Setting 0 will remove the reserved
    834                                            range */
    835     bcmSwitchReserveHighFailoverId = 476, /* Set the higher inclusive bounds of
    836                                            failover object.  Get will return the
    837                                            lowest value supported by the device.
    838                                             Setting 0 will remove the reserved
    839                                            range */
    840     bcmSwitchReserveLowOamEndPointId = 477, /* Set the lower inclusive bounds of OAM
    841                                            endpoint.  Get will return the lowest
    842                                            value supported by the device. 
    843                                            Setting 0 will remove the reserved
    844                                            range */
    845     bcmSwitchReserveHighOamEndPointId = 478, /* Set the higher inclusive bounds of
    846                                            OAM endpoin.  Get will return the
    847                                            lowest value supported by the device.
    848                                             Setting 0 will remove the reserved
    849                                            range */
    850     bcmSwitchReserveLowOamGroupId = 479, /* Set the lower inclusive bounds of OAM
    851                                            Group.  Get will return the lowest
    852                                            value supported by the device. 
    853                                            Setting 0 will remove the reserved
    854                                            range */
    855     bcmSwitchReserveHighOamGroupId = 480, /* Set the higher inclusive bounds of
    856                                            OAM Group.  Get will return the
    857                                            lowest value supported by the device.
    858                                             Setting 0 will remove the reserved
    859                                            range */
    860     bcmSwitchSnapNonZeroOui = 481,      /* Decode SNAP packets with non-zero OUI
    861                                            for protocol-based VLAN */
    862     bcmSwitchSynchronousPortClockSource = 482, /* Set ITU-T G.8261/8262 synchronous
    863                                            Ethernet recovered clock source. 
    864                                            Setting -1 selects in free-run mode
    865                                            (no recovered clock). Get returns the
    866                                            current value. */
    867     bcmSwitchSynchronousPortClockSourceBkup = 483, /* Set ITU-T G.8261/8262 synchronous
    868                                            Ethernet recovered backup clock
    869                                            source.  Get returns the current
    870                                            value. */
    871     bcmSwitchSynchronousPortClockSourceDivCtrl = 484, /* Set ITU-T G.8261/8262 synchronous
    872                                            Ethernet recovered clock source. 
    873                                            Setting -1 selects the divide by five
    874                                            logic. Get returns the current value. */
    875     bcmSwitchSynchronousPortClockSourceBkupDivCtrl = 485, /* Set ITU-T G.8261/8262 synchronous
    876                                            Ethernet recovered backup clock
    877                                            source.  Setting -1 selects the
    878                                            divide by five logic. Get returns the
    879                                            current value. */
    880     bcmSwitchL2HitClear = 486,          /* Clear L2 source and destination hit
    881                                            bits when set to 1 */
    882     bcmSwitchL2SrcHitClear = 487,       /* Clear L2 source hit bits when set to
    883                                            1 */
    884     bcmSwitchL2DstHitClear = 488,       /* Clear L2 destination hit bits when
    885                                            set to 1 */
    886     bcmSwitchL3HostHitClear = 489,      /* Clear L3 host hit bits when set to 1 */
    887     bcmSwitchL3RouteHitClear = 490,     /* Clear L3 route hit bits when set to 1 */
    888     bcmSwitchIpmcSameVlanPruning = 491, /* Allow both L2 and L3 copies of a
    889                                            packet to go out on a physical port
    890                                            if it happens to be a member of both
    891                                            the L2 and L3 bitmaps of the
    892                                            replication group. */
    893     bcmSwitchDeprecated492 = 492,       /* Deprecated. Do not use. */
    894     bcmSwitchDeprecated493 = 493,       /* Deprecated. Do not use. */
    895     bcmSwitchL2McIdxRetType = 494,      /* When set to 1, L2 multicast API will
    896                                            return multicast index as
    897                                            bcm_multicast_t instead of hardware
    898                                            multicast index. */
    899     bcmSwitchL3McIdxRetType = 495,      /* When set to 1, IP multicast API will
    900                                            return multicast index as
    901                                            bcm_multicast_t instead of hardware
    902                                            multicast index. */
    903     bcmSwitchDeprecated496 = 496,       /* Deprecated. Do not use. */
    904     bcmSwitchDeprecated497 = 497,       /* Deprecated. Do not use. */
    905     bcmSwitchDeprecated498 = 498,       /* Deprecated. Do not use. */
    906     bcmSwitchDeprecated499 = 499,       /* Deprecated. Do not use. */
    907     bcmSwitchDeprecated500 = 500,       /* Deprecated. Do not use. */
    908     bcmSwitchArpDhcpToCpu = 501,        /* Set both ARP and DHCP to CPU. */
    909     bcmSwitchIgmpMldToCpu = 502,        /* Set the snooping mode on both IGMP
    910                                            and MLD together. */
    911     bcmSwitchLinkDownInfoSkip = 503,    /* Skip port information gathering
    912                                            during linkdown event
    913                                            notification */
    914     bcmSwitchDeprecated504 = 504,       /* Deprecated. Do not use. */
    915     bcmSwitchL2SourceDiscardMoveToCpu = 505, /* SRC MAC discard configuration to CPU */
    916     bcmSwitchNivEthertype = 506,        /* Set EtherType field in VNTAG */
    917     bcmSwitchNivPrioDropToCpu = 507,    /* NIV priority admittance drop to CPU */
    918     bcmSwitchNivInterfaceMissToCpu = 508, /* NIV forwarding lookup miss to CPU */
    919     bcmSwitchNivRpfFailToCpu = 509,     /* NIV RPF check fail to CPU */
    920     bcmSwitchNivTagInvalidToCpu = 510,  /* Invalid VNTAG to CPU */
    921     bcmSwitchNivTagDropToCpu = 511,     /* VNTAG present to CPU */
    922     bcmSwitchNivUntagDropToCpu = 512,   /* VNTAG not present to CPU */
    923     bcmSwitchEEEPipelineTime = 513,     /* Time (in system clock cycles) for MAC
    924                                            to ensure that the egress pipeline is
    925                                            empty prior to the assertion of the
    926                                            LPI control signal. */
    927     bcmSwitchEEEGlobalCongestionThreshold = 514, /* If this threshold is exceeded, EEE is
    928                                            disabled for all ports. */
    929     bcmSwitchDeprecated515 = 515,       /* Deprecated. Do not use. */
    930     bcmSwitchDeprecated516 = 516,       /* Deprecated. Do not use. */
    931     bcmSwitchDeprecated517 = 517,       /* Deprecated. Do not use. */
    932     bcmSwitchDeprecated518 = 518,       /* Deprecated. Do not use. */
    933     bcmSwitchDeprecated519 = 519,       /* Deprecated. Do not use. */
    934     bcmSwitchDeprecated520 = 520,       /* Deprecated. Do not use. */
    935     bcmSwitchDeprecated521 = 521,       /* Deprecated. Do not use. */
    936     bcmSwitchRemoteCpuSchanEnable = 522, /* Enables SCHAN requests for Remote CPU
    937                                            feature */
    938     bcmSwitchRemoteCpuFromCpuEnable = 523, /* Enables recieving packets from CPU
    939                                            for Remote CPU feature */
    940     bcmSwitchRemoteCpuToCpuEnable = 524, /* Enables sending packet to CPU for
    941                                            Remote CPU feature */
    942     bcmSwitchRemoteCpuCmicEnable = 525, /* Enables CMIC requests for Remote CPU
    943                                            feature */
    944     bcmSwitchRemoteCpuMatchLocalMac = 526, /* Local MAC addresses matching for
    945                                            Remote CPU feature */
    946     bcmSwitchRemoteCpuMatchVlan = 527,  /* VLAN matching for Remote CPU feature */
    947     bcmSwitchRemoteCpuVlan = 528,       /* VLAN tag to be inserted into Remote
    948                                            CPU packets */
    949     bcmSwitchRemoteCpuTpid = 529,       /* TPID tag to be inserted into Remote
    950                                            CPU packets */
    951     bcmSwitchRemoteCpuSignature = 530,  /* Unique Signature for Remote CPU
    952                                            packets */
    953     bcmSwitchRemoteCpuForceScheduling = 531, /* Remote CPU packets are forced to have
    954                                            COS value */
    955     bcmSwitchRemoteCpuToCpuDestPortAllReasons = 532, /* Remote CPU packets to be forwarded
    956                                            for all directed reasons */
    957     bcmSwitchRemoteCpuToCpuDestMacAllReasons = 533, /* Remote CPU packets to be forwarded
    958                                            for all reasons */
    959     bcmSwitchRxRedirectPktReasons = 534, /* All forwarding reasons for normal
    960                                            packets */
    961     bcmSwitchRxRedirectPktReasonsExtended = 535, /* All extended forwarding reasons for
    962                                            normal packets */
    963     bcmSwitchRxRedirectHigigPktReasons = 536, /* All forwarding reasons for higig
    964                                            packets */
    965     bcmSwitchRxRedirectHigigPktReasonsExtended = 537, /* All extended forwarding reasons for
    966                                            higig packets */
    967     bcmSwitchRxRedirectTruncatedPktReasons = 538, /* All forwarding reasons for truncated
    968                                            packets */
    969     bcmSwitchRxRedirectTruncatedPktReasonsExtended = 539, /* All extended forwarding reasons for
    970                                            truncated packets */
    971     bcmSwitchRxRedirectPktCos = 540,    /* All forwarding COS queue bitmap for
    972                                            normal packets */
    973     bcmSwitchRxRedirectPktCosExtended = 541, /* All extended forwarding COS queue
    974                                            bitmap for normal packets */
    975     bcmSwitchRemoteCpuLocalMacOui = 542, /* Higher 3 bytes of Local MAC address
    976                                            used for Remote CPU */
    977     bcmSwitchRemoteCpuLocalMacNonOui = 543, /* Lower 3 bytes of Local MAC address
    978                                            used for Remote CPU */
    979     bcmSwitchRemoteCpuDestMacOui = 544, /* Higher 3 bytes of Destination MAC
    980                                            address used for Remote CPU */
    981     bcmSwitchRemoteCpuDestMacNonOui = 545, /* Lower 3 bytes of Destination MAC
    982                                            address used for Remote CPU */
    983     bcmSwitchRemoteCpuEthertype = 546,  /* Remote CPU EtherType */
    984     bcmSwitchRemoteCpuDestPort = 547,   /* Remote CPU will direct raw data
    985                                            packets with SOBMH header to a given
    986                                            port */
    987     bcmSwitchRemoteCpuHigigDestPort = 548, /* Remote CPU will direct raw data
    988                                            packets with HiGig header to a given
    989                                            port */
    990     bcmSwitchRemoteCpuTcMappingMacOui = 549, /* Higher 3 bytes of Destination MAC
    991                                            address used to match received ToCPU
    992                                            packets */
    993     bcmSwitchRemoteCpuTcMappingMacNonOui = 550, /* Lower 3 bytes of Destination MAC
    994                                            address used to match received ToCPU
    995                                            packets */
    996     bcmSwitchRemoteCpuTcMappingEthertype = 551, /* EtherType used to match received
    997                                            ToCPU packets */
    998     bcmSwitchServiceTpidReplace = 552,  /* Replace TPID in Service Delimiting
    999                                            SD-TAG */
   1000     bcmSwitchEgressPktAge = 553,        /* Chip-wide egress packet age time,
   1001                                            msec. */
   1002     bcmSwitchFabricTrunkDynamicSampleRate = 554, /* Number of times average port egressed
   1003                                            bytes and queued bytes are computed
   1004                                            in a second */
   1005     bcmSwitchFabricTrunkDynamicEgressBytesExponent = 555, /* The exponent used in the calculation
   1006                                            of exponentially weighted moving
   1007                                            average of port egressed bytes */
   1008     bcmSwitchFabricTrunkDynamicQueuedBytesExponent = 556, /* The exponent used in the calculation
   1009                                            of exponentially weighted moving
   1010                                            average of port queued bytes */
   1011     bcmSwitchFabricTrunkDynamicEgressBytesDecreaseReset = 557, /* If set, the average port egressed
   1012                                            bytes is updated with the sampled
   1013                                            value if the sampled value is less
   1014                                            than the average */
   1015     bcmSwitchFabricTrunkDynamicQueuedBytesDecreaseReset = 558, /* If set, the average port queued bytes
   1016                                            is updated with the sampled value if
   1017                                            the sampled value is less than the
   1018                                            average */
   1019     bcmSwitchFabricTrunkDynamicEgressBytesMinThreshold = 559, /* The minimum threshold, in mbps, used
   1020                                            to quantize average port egressed
   1021                                            bytes */
   1022     bcmSwitchFabricTrunkDynamicEgressBytesMaxThreshold = 560, /* The maximum threshold, in mbps, used
   1023                                            to quantize average port egressed
   1024                                            bytes */
   1025     bcmSwitchFabricTrunkDynamicQueuedBytesMinThreshold = 561, /* The minimum threshold, in bytes, used
   1026                                            to quantize average port queued bytes */
   1027     bcmSwitchFabricTrunkDynamicQueuedBytesMaxThreshold = 562, /* The maximum threshold, in bytes, used
   1028                                            to quantize average port queued bytes */
   1029     bcmSwitchMacLowPower = 563,         /* Enable switch low power mode and set
   1030                                            the low power frequency, Khz */
   1031     bcmSwitchCongestionCntag = 564,     /* Enable/Disable CN-TAG processing */
   1032     bcmSwitchCongestionCntagEthertype = 565, /* EtherType for CN-TAG */
   1033     bcmSwitchCongestionCnm = 566,       /* Enable/Disable congestion
   1034                                            notification message handling */
   1035     bcmSwitchCongestionCnmEthertype = 567, /* EtherType for congestion notification
   1036                                            message */
   1037     bcmSwitchCongestionNotificationIdHigh = 568, /* Device identifier for contructing
   1038                                            congestion point identifier */
   1039     bcmSwitchCongestionNotificationIdLow = 569, /* Port identifier for constructing
   1040                                            congestion point identifier */
   1041     bcmSwitchCongestionNotificationIdQueue = 570, /* Queue mode of the congestion point
   1042                                            identifier. When set to 0 use
   1043                                            congestion managed queue id,
   1044                                            otherwise use queue number */
   1045     bcmSwitchCongestionUseOuterTpid = 571, /* Outer TPID to be used for congestion
   1046                                            notification message */
   1047     bcmSwitchCongestionUseOuterVlan = 572, /* Outer vlan to be used for congestion
   1048                                            notification message */
   1049     bcmSwitchCongestionUseOuterPktPri = 573, /* Outer priority to be used for
   1050                                            congestion notification message */
   1051     bcmSwitchCongestionUseOuterCfi = 574, /* Outer CFI to be used for congestion
   1052                                            notification message */
   1053     bcmSwitchCongestionUseInnerPktPri = 575, /* Inner priority to be used for
   1054                                            congestion notification message */
   1055     bcmSwitchCongestionUseInnerCfi = 576, /* Inner CFI to be used for congestion
   1056                                            notification message */
   1057     bcmSwitchCongestionMissingCntag = 577, /* Choose the CNM generation behavior
   1058                                            when congestion notification
   1059                                            threshold is reached but the incoming
   1060                                            sampled packet does not have CN-TAG */
   1061     bcmSwitchCongestionExcludeReplications = 578, /* Take the replicated packets in
   1062                                            account during the congestion test */
   1063     bcmSwitchMiMDefaultSVP = 579,       /* Enable MiM termination lookup miss
   1064                                            packets to be forwarded using default
   1065                                            SVP */
   1066     bcmSwitchMiMDefaultSVPValue = 580,  /* Default SVP  for Mac-in-Mac */
   1067     bcmSwitchEgressDroppedReportZeroLength = 581, /* Enable egress pipeline to report zero
   1068                                            length for dropped packets */
   1069     bcmSwitchLoadBalanceHashSelect = 582, /* Selects which hash function to use
   1070                                            for Load Balance computation */
   1071     bcmSwitchTrillEthertype = 583,      /* Set TRILL EtherType field. Value of
   1072                                            uint16 type */
   1073     bcmSwitchTrillISISEthertype = 584,  /* Set TRILL ISIS EtherType field. Value
   1074                                            of uint16 type */
   1075     bcmSwitchTrillISISDestMacOui = 585, /* Set TRILL All_ISIS_Rbridge MAC upper
   1076                                            3 bytes to match. */
   1077     bcmSwitchTrillBroadcastDestMacOui = 586, /* Set TRILL ALL_Rbridge MAC upper 3
   1078                                            bytes to match. */
   1079     bcmSwitchTrillEndStationDestMacOui = 587, /* Set TRILL ALL_ESADI MAC upper 3 bytes
   1080                                            to match. */
   1081     bcmSwitchTrillISISDestMacNonOui = 588, /* Set TRILL ALL_ISIS_Rbridge MAC lower
   1082                                            3 bytes to match. */
   1083     bcmSwitchTrillBroadcastDestMacNonOui = 589, /* Set TRILL ALL_Rbridge MAC lower 3
   1084                                            bytes to match. */
   1085     bcmSwitchTrillEndStationDestMacNonOui = 590, /* Set TRILL ALL_ESADI MAC lower 3 bytes
   1086                                            to match. */
   1087     bcmSwitchTrillMinTtl = 591,         /* Set minimum TTL for Egress and
   1088                                            Transit TRILL Rbridge. */
   1089     bcmSwitchTrillTtlCheckEnable = 592, /* Enable TTL check for Egress TRILL
   1090                                            Rbridge. */
   1091     bcmSwitchTrillTtlErrToCpu = 593,    /* Copy TRILL TTL failure packets to
   1092                                            CPU. */
   1093     bcmSwitchTrillHeaderErrToCpu = 594, /* Copy TRILL Header Error frame to CPU. */
   1094     bcmSwitchTrillMismatchToCpu = 595,  /* Copy TRILL mismatch error frame to
   1095                                            CPU. */
   1096     bcmSwitchTrillNameMissToCpu = 596,  /* Copy TRILL Rbridge lookup failure to
   1097                                            CPU. */
   1098     bcmSwitchTrillRpfFailToCpu = 597,   /* Copy TRILL RPF check fail to CPU. */
   1099     bcmSwitchTrillOptionsToCpu = 598,   /* Copy header Options to CPU. */
   1100     bcmSwitchTrillNameErrDrop = 599,    /* Set Drop setting for TRILL packets
   1101                                            with Ingress-name equal to
   1102                                            Egress-name. */
   1103     bcmSwitchTrillRpfFailDrop = 600,    /* Set Drop setting for TRILL multicast
   1104                                            packets that fail RPF check. */
   1105     bcmSwitchTrillHeaderVersionErrDrop = 601, /* Set Drop Setting for TRILL frames
   1106                                            received with a non-zero Version
   1107                                            field. */
   1108     bcmSwitchTrillNameMissDrop = 602,   /* Set Drop setting for TRILL Ingress
   1109                                            RBridge nickname lookup failure. */
   1110     bcmSwitchTrillAdjacencyFailDrop = 603, /* Set Drop setting for TRILL adjacency
   1111                                            failure. */
   1112     bcmSwitchTrillHeaderErrDrop = 604,  /* Set Drop Setting for TRILL header
   1113                                            error. */
   1114     bcmSwitchUdpPktActionEnable = 605,  /* Enable additional actions for UDP
   1115                                            packets */
   1116     bcmSwitchUdpPktRedirectPbmp = 606,  /* Replace the destination port bitmap
   1117                                            of UDP packets */
   1118     bcmSwitchUdpPktCopyToPbmp = 607,    /* Add the destination port bitmap of
   1119                                            UDP packets */
   1120     bcmSwitchUdpPktNewTc = 608,         /* Change the Traffic Class value of UDP
   1121                                            packets */
   1122     bcmSwitchL3TunnelIpV4ModeOnly = 609, /* Set L3 Tunnel to IPV4 mode only */
   1123     bcmSwitchL3SrcHitEnable = 610,      /* Enables/Disables source hit bit
   1124                                            lookup update in the L3 table */
   1125     bcmSwitchL2DstHitEnable = 611,      /* Enables/Disables destination hit bit
   1126                                            lookup update in the L2 table */
   1127     bcmSwitchWESPProtocolEnable = 612,  /* Enables/Disables parsing into WESP
   1128                                            payload */
   1129     bcmSwitchWESPProtocol = 613,        /* WESP protocol number */
   1130     bcmSwitchDeprecated614 = 614,       /* Deprecated. Do not use. */
   1131     bcmSwitchIp6CompressEnable = 615,   /* Enables/Disables IPv6 compression
   1132                                            support in the VFP table */
   1133     bcmSwitchIp6CompressDefaultOffset = 616, /* Set the offset value used to extract
   1134                                            26-bits from the IPv6 address field
   1135                                            of IPv6 packet */
   1136     bcmSwitchStableSaveLongIds = 617,   /* When saving FP information to storage
   1137                                            for level-2 warm boot, save full
   1138                                            entity ids (i.e. not compact) */
   1139     bcmSwitchGportAnyDefaultL2Learn = 618, /* Set default cml_value for Any Gport
   1140                                            type. */
   1141     bcmSwitchGportAnyDefaultL2Move = 619, /* Set default cml_station_move value
   1142                                            for Any Gport type */
   1143     bcmSwitchIngParseL2TunnelTermDipSipSelect = 620, /* Controls the values used to populate
   1144                                            the DIP+SIP containers for
   1145                                            L2-tunnel-terminated packets */
   1146     bcmSwitchIngParseL3L4IPv4 = 621,    /* Enable parsing of IPv4 L3/L4 headers */
   1147     bcmSwitchIngParseL3L4IPv6 = 622,    /* Enable parsing of IPv6 L3/L4 headers */
   1148     bcmSwitchL2LearnMode = 623,         /* Learning Mode */
   1149     bcmSwitchSetWredJitterMask = 624,   /* Set WRED Jitter value */
   1150     bcmSwitchSetMplsEntropyLabelTtl = 625, /* Set MPLS Entropy-Label TTL value */
   1151     bcmSwitchSetMplsEntropyLabelPri = 626, /* Set MPLS Entropy-Label PRI value */
   1152     bcmSwitchSetMplsEntropyLabelOffset = 627, /* Set MPLS Entropy-Label Hash Offset */
   1153     bcmSwitchPonOamFailsafeState = 628, /* Enables/Disables MPCP fail safe */
   1154     bcmSwitchEquipmentAlarmState = 629, /* Set equipment alarm report state */
   1155     bcmSwitchPowerAlarmState = 630,     /* Set power alarm report state */
   1156     bcmSwitchBatteryMissingAlarmState = 631, /* Set battery missing alarm report
   1157                                            state */
   1158     bcmSwitchBatteryFailureAlarmState = 632, /* Set battery failure alarm report
   1159                                            state */
   1160     bcmSwitchBatteryVoltLowAlarmState = 633, /* Set battery volt low alarm report
   1161                                            state */
   1162     bcmSwitchBatteryVoltLowAlarmReportThreshold = 634, /* Set battery volt low alarm report
   1163                                            threshold */
   1164     bcmSwitchBatteryVoltLowAlarmClearThreshold = 635, /* Set battery volt low alarm clear
   1165                                            threshold */
   1166     bcmSwitchPhysicalIntrusionAlarmState = 636, /* Set physical instrusion alarm report
   1167                                            state */
   1168     bcmSwitchSelfTestFailureAlarmState = 637, /* Set self test failure alarm report
   1169                                            state */
   1170     bcmSwitchPonIfSwitchAlarmState = 638, /* Set PON switchover alarm report state */
   1171     bcmSwitchL3IngressInterfaceMapSet = 639, /* Enable mode to configure
   1172                                            ingress-mapping of Vlan and L3
   1173                                            Ingress Interface */
   1174     bcmSwitchMplsPWControlWordToCpu = 640, /* Enable MPLS packets with PWACH
   1175                                            control word, to be copied to CPU */
   1176     bcmSwitchMplsPWControlTypeToCpu = 641, /* Enable MPLS packets with other
   1177                                            control word, to be copied to CPU */
   1178     bcmSwitchMplsPWControlWord = 642,   /* Set Control Word value */
   1179     bcmSwitchMplsPWCountPktsAll = 643,  /* Enable count-all MPLS packets
   1180                                            arriving on PWs */
   1181     bcmSwitchEntropyHashSet0Offset = 644, /* Selection for MPLS-Entropy-Label hash
   1182                                            bits. */
   1183     bcmSwitchEntropyHashSet1Offset = 645, /* Selection for MPLS-Entropy-Label hash
   1184                                            bits. */
   1185     bcmSwitchArpRequestMyStationIPToCPU = 646, /* APR reply packets with My IP address
   1186                                            should be sent to CPU. */
   1187     bcmSwitchArpRequestMyStationIPDrop = 647, /* APR reply packets with My IP address
   1188                                            should be dropped. */
   1189     bcmSwitchArpRequestMyStationIPFwd = 648, /* APR reply packets with given IP
   1190                                            address should not trapped/dropped. */
   1191     bcmSwitchL3SIPMoveToCpu = 649, 
   1192     bcmSwitchTrunkHashSrcPortEnable = 650, /* BCM886XX: Make Source port part of
   1193                                            the hash. */
   1194     bcmSwitchTrunkHashOffset = 651,     /* BCM886XX: Hash key is barrel shifted
   1195                                            by this value */
   1196     bcmSwitchTrunkHashMPLSLabelBOS = 652, /* In an mpls label stack, look for
   1197                                            label with bottom of stack bit set.
   1198                                            Valid values see
   1199                                            BCM_HASH_MPLS_LABEL_BOS_ */
   1200     bcmSwitchTrunkHashMPLSPWControlWord = 653, /* BCM886XX: Indicates control word is
   1201                                            present at end of MPLS headers. */
   1202     bcmSwitchTrunkHashSeed = 654,       /* BCM886XX: Initial seed value for
   1203                                            trunk hashing. */
   1204     bcmSwitchTrunkHashConfig = 655,     /* BCM886XX: Selects hashing polynomial. */
   1205     bcmSwitchTrunkHashPktHeaderCount = 656, /* BCM886XX: Number of headers to
   1206                                            consider in hashing. */
   1207     bcmSwitchTrunkHashPktHeaderSelect = 657, /* BCM886XX: Selects which starting
   1208                                            header to use for hashing. */
   1209     bcmSwitchECMPHashSrcPortEnable = 658, /* BCM886XX: Make Source port part of
   1210                                            the ECMP hash. */
   1211     bcmSwitchECMPHashOffset = 659,      /* BCM886XX: ECMP Hash key is barrel
   1212                                            shifted by this value. */
   1213     bcmSwitchECMPHashSeed = 660,        /* BCM886XX: Initial seed value for ECMP
   1214                                            hashing. */
   1215     bcmSwitchECMPHashConfig = 661,      /* BCM886XX: Selects hashing polynomial
   1216                                            for ECMP. */
   1217     bcmSwitchECMPHashPktHeaderCount = 662, /* BCM886XX: Number of headers to
   1218                                            consider in ECMP hashing. */
   1219     bcmSwitchTrunkDynamicHashOffset = 663, /* Enhanced hash selections for trunk
   1220                                            dynamic load balancing. */
   1221     bcmSwitchTrunkDynamicSampleRate = 664, /* Number of times historical member
   1222                                            load and queued bytes are computed in
   1223                                            a second */
   1224     bcmSwitchTrunkDynamicAccountingSelect = 665, /* 0 = physical link accounting, 1 =
   1225                                            virtual link accounting */
   1226     bcmSwitchTrunkDynamicEgressBytesExponent = 666, /* The exponent used in the calculation
   1227                                            of exponentially weighted moving
   1228                                            average of historical member load.
   1229                                            Applicable to physical link
   1230                                            accounting. */
   1231     bcmSwitchTrunkDynamicQueuedBytesExponent = 667, /* The exponent used in the calculation
   1232                                            of exponentially weighted moving
   1233                                            average of historical member queued
   1234                                            bytes. Applicable to physical link
   1235                                            accounting. */
   1236     bcmSwitchTrunkDynamicEgressBytesDecreaseReset = 668, /* If set, the historical member load is
   1237                                            reset to the instantaneous value if
   1238                                            the latter is smaller. Applicable to
   1239                                            physical link accounting. */
   1240     bcmSwitchTrunkDynamicQueuedBytesDecreaseReset = 669, /* If set, the historical member queued
   1241                                            bytes is updated with the
   1242                                            instantaneous value if the latter is
   1243                                            smaller. Applicable to physical link
   1244                                            accounting. */
   1245     bcmSwitchTrunkDynamicEgressBytesMinThreshold = 670, /* The minimum threshold, in mbps, used
   1246                                            to quantize historical member load.
   1247                                            Applicable to physical link
   1248                                            accounting. */
   1249     bcmSwitchTrunkDynamicEgressBytesMaxThreshold = 671, /* The maximum threshold, in mbps, used
   1250                                            to quantize historical member load.
   1251                                            Applicable to physical link
   1252                                            accounting. */
   1253     bcmSwitchTrunkDynamicQueuedBytesMinThreshold = 672, /* The minimum threshold, in bytes, used
   1254                                            to quantize historical member queued
   1255                                            bytes. Applicable to physical link
   1256                                            accounting. */
   1257     bcmSwitchTrunkDynamicQueuedBytesMaxThreshold = 673, /* The maximum threshold, in bytes, used
   1258                                            to quantize historical member queued
   1259                                            bytes. Applicable to physical link
   1260                                            accounting. */
   1261     bcmSwitchTrunkDynamicExpectedLoadMinThreshold = 674, /* The minimum threshold, in mbps, used
   1262                                            to quantize historical and
   1263                                            instantaneous expected member load.
   1264                                            Applicable to virtual link
   1265                                            accounting. */
   1266     bcmSwitchTrunkDynamicExpectedLoadMaxThreshold = 675, /* The maximum threshold, in mbps, used
   1267                                            to quantize historical and
   1268                                            instantaneous expected member load.
   1269                                            Applicable to virtual link
   1270                                            accounting. */
   1271     bcmSwitchTrunkDynamicImbalanceMinThreshold = 676, /* The minimum threshold, in percentage,
   1272                                            used to quantize historical and
   1273                                            instantaneous member load imbalance.
   1274                                            Applicable to virtual link
   1275                                            accounting. */
   1276     bcmSwitchTrunkDynamicImbalanceMaxThreshold = 677, /* The maximum threshold, in percentage,
   1277                                            used to quantize historical and
   1278                                            instantaneous member load imbalance.
   1279                                            Applicable to virtual link
   1280                                            accounting. */
   1281     bcmSwitchEcmpDynamicHashOffset = 678, /* Enhanced hash selections for L3 ECMP
   1282                                            dynamic load balancing. */
   1283     bcmSwitchEcmpDynamicSampleRate = 679, /* Number of times historical member
   1284                                            load and queued bytes are computed in
   1285                                            a second */
   1286     bcmSwitchEcmpDynamicAccountingSelect = 680, /* 0 = physical link accounting, 1 =
   1287                                            virtual link accounting */
   1288     bcmSwitchEcmpDynamicEgressBytesExponent = 681, /* The exponent used in the calculation
   1289                                            of exponentially weighted moving
   1290                                            average of historical member load.
   1291                                            Applicable to physical link
   1292                                            accounting. */
   1293     bcmSwitchEcmpDynamicQueuedBytesExponent = 682, /* The exponent used in the calculation
   1294                                            of exponentially weighted moving
   1295                                            average of historical member queued
   1296                                            bytes. Applicable to physical link
   1297                                            accounting. */
   1298     bcmSwitchEcmpDynamicEgressBytesDecreaseReset = 683, /* If set, the historical member load is
   1299                                            reset to the instantaneous value if
   1300                                            the latter is smaller. Applicable to
   1301                                            physical link accounting. */
   1302     bcmSwitchEcmpDynamicQueuedBytesDecreaseReset = 684, /* If set, the historical member queued
   1303                                            bytes is updated with the
   1304                                            instantaneous value if the latter is
   1305                                            smaller. Applicable to physical link
   1306                                            accounting. */
   1307     bcmSwitchEcmpDynamicEgressBytesMinThreshold = 685, /* The minimum threshold, in mbps, used
   1308                                            to quantize historical member load.
   1309                                            Applicable to physical link
   1310                                            accounting. */
   1311     bcmSwitchEcmpDynamicEgressBytesMaxThreshold = 686, /* The maximum threshold, in mbps, used
   1312                                            to quantize historical member load.
   1313                                            Applicable to physical link
   1314                                            accounting. */
   1315     bcmSwitchEcmpDynamicQueuedBytesMinThreshold = 687, /* The minimum threshold, in bytes, used
   1316                                            to quantize historical member queued
   1317                                            bytes. Applicable to physical link
   1318                                            accounting. */
   1319     bcmSwitchEcmpDynamicQueuedBytesMaxThreshold = 688, /* The maximum threshold, in bytes, used
   1320                                            to quantize historical member queued
   1321                                            bytes. Applicable to physical link
   1322                                            accounting. */
   1323     bcmSwitchEcmpDynamicExpectedLoadMinThreshold = 689, /* The minimum threshold, in mbps, used
   1324                                            to quantize historical and
   1325                                            instantaneous expected member load.
   1326                                            Applicable to virtual link
   1327                                            accounting. */
   1328     bcmSwitchEcmpDynamicExpectedLoadMaxThreshold = 690, /* The maximum threshold, in mbps, used
   1329                                            to quantize historical and
   1330                                            instantaneous expected member load.
   1331                                            Applicable to virtual link
   1332                                            accounting. */
   1333     bcmSwitchEcmpDynamicImbalanceMinThreshold = 691, /* The minimum threshold, in percentage,
   1334                                            used to quantize historical and
   1335                                            instantaneous member load imbalance.
   1336                                            Applicable to virtual link
   1337                                            accounting. */
   1338     bcmSwitchEcmpDynamicImbalanceMaxThreshold = 692, /* The maximum threshold, in percentage,
   1339                                            used to quantize historical and
   1340                                            instantaneous member load imbalance.
   1341                                            Applicable to virtual link
   1342                                            accounting. */
   1343     bcmSwitchFailoverDropToCpu = 693,   /* Protection data drop to CPU enable. */
   1344     bcmSwitchMplsReservedEntropyLabelToCpu = 694, /* Packet is copied to the CPU if the
   1345                                            entropy label falls between the
   1346                                            reserved range (0-15). */
   1347     bcmSwitchL3SrcBindMissToCpu = 695,  /* Send a copy of L3 packet to CPU if
   1348                                            SIP lookup fails in HPAE mode. */
   1349     bcmSwitchMplsGalAlertLabelToCpu = 696, /* When a GAL label is exposed in a
   1350                                            packet, such a packet will be
   1351                                            dropped. This control determines
   1352                                            whether such a packet gets copied to
   1353                                            CPU. */
   1354     bcmSwitchMplsRalAlertLabelToCpu = 697, /* When a RAL label is exposed in a
   1355                                            packet, such a packet will be
   1356                                            dropped. This control determines
   1357                                            whether such a packet gets copied to
   1358                                            CPU. */
   1359     bcmSwitchMplsIllegalReservedLabelToCpu = 698, /* Exposed an illegal reserved label to
   1360                                            CPU. For example, exposed GAL Label
   1361                                            has BOS=0. */
   1362     bcmSwitchMplsLookupsExceededToCpu = 699, /* Expose out of lookups to CPU */
   1363     bcmSwitchMplsUnknownAchTypeToCpu = 700, /* Packet has an unknown ACH Type. */
   1364     bcmSwitchMplsUnknownAchVersionToCpu = 701, /* The version number of ACH is not 1. */
   1365     bcmSwitchTimesyncIngressVersion = 702, /* Ingress 1588 version 0:V2 1:>V2. */
   1366     bcmSwitchTimesyncEgressVersion = 703, /* Egress 1588 version 0:V2 1:>V2. */
   1367     bcmSwitchTimesyncUnknownVersionToCpu = 704, /* The version number is not recognized. */
   1368     bcmSwitchCongestionCnmToCpu = 705,  /* Send ICNM packets to the CPU.
   1369                                            (Deprecated) */
   1370     bcmSwtichCongestionCnmProxyErrorToCpu = 706, /* Enable forwarding to CPU. */
   1371     bcmSwtichCongestionCnmProxyToCpu = 707, /* This is to copy the dropped CNM
   1372                                            packet to CPU if a network
   1373                                            administrator needs to look at them. */
   1374     bcmSwitchWlanTunnelErrorDrop = 708, /* WLAN Decryption offload enable. */
   1375     bcmSwitchMplsReservedEntropyLabelDrop = 709, /* When the value of the received
   1376                                            entropy label falls in the reserved
   1377                                            range(0-15), this control will
   1378                                            determine if the packet is dropped or
   1379                                            not. */
   1380     bcmSwitchRemoteProtectionTrust = 710, /* If set, use the Protection Status bit
   1381                                            in the received HiGig Header. */
   1382     bcmSwitchL2GreProtocolType = 711,   /* Set protocol-type for L2-GRE */
   1383     bcmSwitchL2GreVpnIdSizeSet = 712,   /* Set bit-size of VPNID within L2-GRE
   1384                                            key */
   1385     bcmSwitchL2GreVpnIdMissToCpu = 713, /* If set, send a copy of L2GRE packet
   1386                                            to CPU if VPNID lookup fails. */
   1387     bcmSwitchL2GreTunnelMissToCpu = 714, /* If set, send a copy of L2GRE packet
   1388                                            to CPU if SIP lookup fails. */
   1389     bcmSwitchMultipathCompressBuffer = 715, /* Set the size of the L3 ECMP table
   1390                                            defragmentation buffer. */
   1391     bcmSwitchMultipathCompress = 716,   /* Defragment L3 ECMP table. */
   1392     bcmSwitchBstEnable = 717,           /* Enable BST tracking. */
   1393     bcmSwitchBstTrackingMode = 718,     /* BST resource usage tracking mode. */
   1394     bcmSwitchL3McastL2 = 719,           /* if set to 0 then l2 key is <VID, DA>,
   1395                                            if set to 1 then l2 key is <RIF/VID,
   1396                                            DIP>. */
   1397     bcmSwitchMiMTeBvidLowerRange = 720, /* Configure the lower limit for Traffic
   1398                                            engineered BVID */
   1399     bcmSwitchMiMTeBvidUpperRange = 721, /* Configure the upper limit for Traffic
   1400                                            engineered BVID */
   1401     bcmSwitchRemoteEncapsulationMode = 722, /* If set, all packet replication is
   1402                                            performed on a remote device. 
   1403                                            Required egress encapsulation is
   1404                                            indicated by the HiGig2 header. */
   1405     bcmSwitchFabricTrunkAutoIncludeDisable = 723, /* If set, disable automatic inclusion
   1406                                            of other members of a HiGig trunk
   1407                                            group when one member is specified as
   1408                                            the steering destination for a remote
   1409                                            module. */
   1410     bcmSwitchTrunkHashNormalize = 724,  /* Enables using same hash in both
   1411                                            directions of a flow. Applies to both
   1412                                            MAC/IP addresses */
   1413     bcmSwitchMplsLabelCache = 725,      /* Enable Mpls Label Cache */
   1414     bcmSwitchMplsLabelCommit = 726,     /* Commit the MPLS Label Database to
   1415                                            hardware */
   1416     bcmSwitchTrillHopCount = 727,       /* Trill hop count */
   1417     bcmSwitchPolicerFairness = 728,     /* if set, packet is considered in
   1418                                            profile if bucket-level plus random
   1419                                            value are above packet-size. If not
   1420                                            set, packet is considered in profile
   1421                                            if bucket-level is above packet-size. */
   1422     bcmSwitchVxlanUdpDestPortSet = 729, /* Set UDP Destination port for VXLAN */
   1423     bcmSwitchVxlanEntropyEnable = 730,  /* Set UDP Source port for VXLAN Tunnel
   1424                                            Entropy(Value = TRUE/FALSE) */
   1425     bcmSwitchVxlanVnIdMissToCpu = 731,  /* Set VXLAN VN_ID lookup failure Copy
   1426                                            to CPU */
   1427     bcmSwitchVxlanTunnelMissToCpu = 732, /* If set, send a copy of VXLAN packet
   1428                                            to CPU if VXLAN Tunnel lookup fails. */
   1429     bcmSwitchECMPVxlanHashOffset = 733, /* Enhanced hash select for VxLAN ECMP
   1430                                            hashing . */
   1431     bcmSwitchECMPL2GreHashOffset = 734, /* Enhanced hash select for L2Gre ECMP
   1432                                            hashing . */
   1433     bcmSwitchECMPTrillHashOffset = 735, /* Enhanced hash select for Trill ECMP
   1434                                            hashing . */
   1435     bcmSwitchECMPMplsHashOffset = 736,  /* Enhanced hash select for Mpls ECMP
   1436                                            hashing . */
   1437     bcmSwitchVirtualPortDynamicHashOffset = 737, /* Enhanced hash select for Virtual Port
   1438                                            Aggregation. */
   1439     bcmSwitchTMDomain = 738,            /* Device TM-Domain. */
   1440     bcmSwitchPortHeaderType = 739,      /* Sets TM Port header type. */
   1441     bcmSwitchL2OverflowEvent = 740,     /* Enable/Disable L2 overflow event
   1442                                            processing. */
   1443     bcmSwitchLinkProvClear = 741,       /* Automatically clear provision for a
   1444                                            link when it is de-registered. */
   1445     bcmSwitchEtagEthertype = 742,       /* Set EtherType field in ETAG */
   1446     bcmSwitchEtagInvalidToCpu = 743,    /* Invalid ETAG to CPU */
   1447     bcmSwitchEtagDropToCpu = 744,       /* Packets dropped due to ETAG present
   1448                                            to CPU. Enable/disable or set
   1449                                            specific system port gport. */
   1450     bcmSwitchNonEtagDropToCpu = 745,    /* Packets dropped due to ETAG not
   1451                                            present to CPU */
   1452     bcmSwitchExtenderRpfFailToCpu = 746, /* Extender RPF check fail to CPU */
   1453     bcmSwitchExtenderInterfaceMissToCpu = 747, /* Extender forwarding lookup miss to
   1454                                            CPU */
   1455     bcmSwitchPrioDropToCpu = 748,       /* Priority admittance drop to CPU */
   1456     bcmSwitchExtenderMulticastLowerThreshold = 749, /* Lower threshold of multicast extended
   1457                                            port VID */
   1458     bcmSwitchExtenderMulticastHigherThreshold = 750, /* Higher threshold of multicast
   1459                                            extended port VID */
   1460     bcmSwitchL3NATEnable = 751,         /* Enable/Disable NAT on the switch. */
   1461     bcmSwitchL3DNATHairpinToCpu = 752,  /* If set send copy of DNAT hairpin
   1462                                            packets to CPU. */
   1463     bcmSwitchL3DNATMissToCpu = 753,     /* If set send copy of DNAT lookup miss
   1464                                            packets to CPU. */
   1465     bcmSwitchL3SNATMissToCpu = 754,     /* If set send copy of SNAT lookup miss
   1466                                            packets to CPU. */
   1467     bcmSwitchL3NatOtherToCpu = 755,     /* If set send copy of realm crossing
   1468                                            non-TCP, UDP or ICMP packets to CPU. */
   1469     bcmSwitchL3NatRealmCrossingIcmpToCpu = 756, /* If set send copy of realm crossing
   1470                                            ICMP packets to CPU. */
   1471     bcmSwitchL3NatFragmentsToCpu = 757, /* If set send copy of NAT fragment
   1472                                            packets to CPU. */
   1473     bcmSwitchHashL3DNATPool = 758,      /* Hash Select for DNAT address type
   1474                                            entry. */
   1475     bcmSwitchHashL3DNATPoolDual = 759,  /* Secondary Hash Select for DNAT
   1476                                            address type entry. */
   1477     bcmSwitchMcastTrunkHashMin = 760,   /* Minimal hushing value for a copy with
   1478                                            a given port as destination. Copies
   1479                                            with lower Hash values will be
   1480                                            dropped. */
   1481     bcmSwitchMcastTrunkHashMax = 761,   /* Maximal hushing value for a copy with
   1482                                            a given port as destination. Copies
   1483                                            with higher Hash values will be
   1484                                            dropped. */
   1485     bcmSwitchIp4Compress = 762,         /* compress IPv4 routing table. */
   1486     bcmSwitchEcmpResilientHashOffset = 763, /* Enhanced hash select for ECMP
   1487                                            resilient hashing . */
   1488     bcmSwitchTrunkResilientHashOffset = 764, /* Barrel shift the resilient hashing
   1489                                            LAG key. */
   1490     bcmSwitchFabricTrunkResilientHashOffset = 765, /* Enhanced hash select for HiGig trunk
   1491                                            resilient hashing . */
   1492     bcmSwitchShaperAdjust = 766,        /* Meter/Rate control with overhead on
   1493                                            wire accounted for per packet for
   1494                                            EFP. */
   1495     bcmSwitchHashVpVlanMemberIngress = 767, /* Select Hash algorithm for ingress vp
   1496                                            vlan membership check. */
   1497     bcmSwitchHashVpVlanMemberIngressDual = 768, /* Select secondary Hash algorithm for
   1498                                            ingress vp vlan membership check. */
   1499     bcmSwitchHashVpVlanMemberEgress = 769, /* Select Hash algorithm for Egress vp
   1500                                            vlan membership check. */
   1501     bcmSwitchHashVpVlanMemberEgressDual = 770, /* Select secondary Hash algorithm for
   1502                                            Egress vp vlan membership check. */
   1503     bcmSwitchHashL2Endpoint = 771,      /* Select hash algorithm for L2 Endpoint
   1504                                            table. */
   1505     bcmSwitchHashL2EndpointDual = 772,  /* Select secondary hash algorithm for
   1506                                            L2 Endpoint table. */
   1507     bcmSwitchHashEndpointQueueMap = 773, /* Select hash algorithm for Endpoint
   1508                                            Queue Map table. */
   1509     bcmSwitchHashEndpointQueueMapDual = 774, /* Select secondary hash algorithm for
   1510                                            Endpoint Queue Map table. */
   1511     bcmSwitchStackRouteHistoryBitmap1 = 775, /* Configures Stacking route history
   1512                                            bitmap stamping according to port
   1513                                            profile number 1. Uses for packet
   1514                                            pruning in Stacking system. */
   1515     bcmSwitchStackRouteHistoryBitmap2 = 776, /* Configures Stacking route history
   1516                                            bitmap stamping according to port
   1517                                            profile number 2. Uses for packet
   1518                                            pruning in Stacking system. */
   1519     bcmSwitchArpIPcheck = 777,          /* For ARP request, check if TPA is
   1520                                            known. */
   1521     bcmSwitchDeprecated778 = 778,       /* Deprecated. Do not use. */
   1522     bcmSwitchDeprecated779 = 779,       /* Deprecated. Do not use. */
   1523     bcmSwitchL2LearnLimitToCpu = 780,   /* Copy the frame to CPU once the learn
   1524                                            limitation occurred due to the hash
   1525                                            is full in L2 Table. */
   1526     bcmSwitchFlexibleMirrorDestinations = 781, /* Enable configuration of the maximum
   1527                                            number of mirror destinations. */
   1528     bcmSwitchEcmpMacroFlowHashEnable = 782, /* Enable ECMP macro-flow hashing. */
   1529     bcmSwitchOamVersionCheckDisable = 783, /* Disable version check for OAM packets
   1530                                            in pipeline. */
   1531     bcmSwitchOamOlpChipEtherType = 784, /* Ether Type to be used for OLP Chip
   1532                                            communication. */
   1533     bcmSwitchOamOlpChipTpid = 785,      /* TPID to be used for OLP Chip
   1534                                            communication. */
   1535     bcmSwitchOamOlpChipVlan = 786,      /* VLAN ID to be used for OLP Chip
   1536                                            communication. */
   1537     bcmSwitchDeprecated787 = 787,       /* Deprecated. Do not use. */
   1538     bcmSwitchEgressKeepSystemHeader = 788, /* Keep system headers on Tx packets for
   1539                                            a given port. */
   1540     bcmSwitchMacroFlowEcmpHashConcatEnable = 789, /* Enable hash concatenation for ecmp
   1541                                            macro flow. */
   1542     bcmSwitchMacroFlowLoadBalanceHashConcatEnable = 790, /* Enable hash concatenation for Load
   1543                                            balance macro flow. */
   1544     bcmSwitchMacroFlowTrunkHashConcatEnable = 791, /* Enable hash concatenation for Trunk
   1545                                            macro flow. */
   1546     bcmSwitchMacroFlowHigigTrunkHashConcatEnable = 792, /* Enable hash concatenation for HiGig
   1547                                            Trunk macro flow. */
   1548     bcmSwitchMacroFlowECMPHashSeed = 793, /* Set Hash seed for ecmp macro flow. */
   1549     bcmSwitchMacroFlowLoadBalanceHashSeed = 794, /* Set Hash Seed for Load balance macro
   1550                                            flow. */
   1551     bcmSwitchMacroFlowTrunkHashSeed = 795, /* Set Hash Seed for Trunk macro flow. */
   1552     bcmSwitchMacroFlowHigigTrunkHashSeed = 796, /* Set Hash Seed for HiGig Trunk macro
   1553                                            flow. */
   1554     bcmSwitchHashTrillPayloadSelect0 = 797, /* Set hash control to select TRILL
   1555                                            payload L2/L3 fields for Hash Block
   1556                                            A. */
   1557     bcmSwitchHashTrillPayloadSelect1 = 798, /* Set hash control to select TRILL
   1558                                            payload L2/L3 fields for Hash Block
   1559                                            B. */
   1560     bcmSwitchHashTrillTunnelSelect0 = 799, /* Set hash control to select TRILL
   1561                                            Tunnel L2/L3 fields for Hash Block A. */
   1562     bcmSwitchHashTrillTunnelSelect1 = 800, /* Set hash control to select TRILL
   1563                                            Tunnel L2/L3 fields for Hash Block B. */
   1564     bcmSwitchHashIP6AddrCollapseSelect0 = 801, /* Hash Control to collapse IPV6
   1565                                            addresses for hash block A. */
   1566     bcmSwitchHashIP6AddrCollapseSelect1 = 802, /* Hash Control to collapse IPV6
   1567                                            addresses for hash block B. */
   1568     bcmSwitchPrependTagEnable = 803,    /* Enable Prepend tag per Port. */
   1569     bcmSwitchHashL2VxlanField0 = 804,   /* Hash A Selection of L2 Payload for
   1570                                            Vxlan Packets */
   1571     bcmSwitchHashL2VxlanField1 = 805,   /* Hash B Selection of L2 Payload for
   1572                                            Vxlan Packets */
   1573     bcmSwitchHashL3VxlanField0 = 806,   /* Hash A Selection of L3 Payload for
   1574                                            Vxlan Packets */
   1575     bcmSwitchHashL3VxlanField1 = 807,   /* Hash B Selection of L3 Payload for
   1576                                            Vxlan Packets */
   1577     bcmSwitchHashL2L2GreField0 = 808,   /* Hash A Selection of L2 Payload for
   1578                                            L2Gre Packets */
   1579     bcmSwitchHashL2L2GreField1 = 809,   /* Hash B Selection of L2 Payload for
   1580                                            L2Gre Packets */
   1581     bcmSwitchHashL3L2GreField0 = 810,   /* Hash A Selection of L3 Payload for
   1582                                            L2Gre Packets */
   1583     bcmSwitchHashL3L2GreField1 = 811,   /* Hash B Selection of L3 Payload for
   1584                                            L2Gre Packets */
   1585     bcmSwitchMcastTrunkIngressCommit = 812, /* If set, the Multicast LAG packets use
   1586                                            the new LAG table definition for the
   1587                                            member resolution. */
   1588     bcmSwitchMcastTrunkEgressCommit = 813, /* If set, the new Multicast LAG table
   1589                                            is copied to the old one. It assumes
   1590                                            that all the devices are using the
   1591                                            new LAG table, after calling
   1592                                            bcmSwitchMcastTrunkIngressCommit. */
   1593     bcmSwitchMplsShortPipe = 814,       /* If Set device supports Short pipe
   1594                                            only. Otherwise Pipe only. */
   1595     bcmSwitchTraverseMode = 815,        /* Control the traverse mode, choose
   1596                                            mode from
   1597                                            bcm_switch_table_update_mode_t */
   1598     bcmSwitchTrunkResilientHashConfig = 816, /* Stateful LAG hashing function */
   1599     bcmSwitchTrunkResilientHashSeed = 817, /* Stateful LAG hashing seed */
   1600     bcmSwitchECMPResilientHashSeed = 818, /* Stateful ECMP hashing seed */
   1601     bcmSwitchResilientHashAgeTimer = 819, /* Resilient hash entry deletion time.
   1602                                            Units: seconds */
   1603     bcmSwitchFieldStageEgressToCpu = 820, /* Control to enable egress copy to CPU
   1604                                            action */
   1605     bcmSwitchHashOamEgress = 821,       /* Hash Select for egress OAM. */
   1606     bcmSwitchHashOamEgressDual = 822,   /* Secondary Hash Select for egress OAM. */
   1607     bcmSwitchColorL3L2Marking = 823,    /* Set the DP->Resolved-DP map (COS
   1608                                            marking) */
   1609     bcmSwitchWredForAllPkts = 824,      /* Apply WRED per color profiles on all
   1610                                            packets */
   1611     bcmSwitchFcoeNpvModeEnable = 825,   /* NPV mode */
   1612     bcmSwitchFcoeDomainRoutePrefixLength = 826, /* D-ID Bits to use for domain route
   1613                                            search */
   1614     bcmSwitchFcoeCutThroughEnable = 827, /* Enables Cut-Through mode for FCOE
   1615                                            packets */
   1616     bcmSwitchFcoeSourceBindCheckAction = 828, /* Sets the action to take when
   1617                                            Source-bind-check fails */
   1618     bcmSwitchFcoeSourceFpmaPrefixCheckAction = 829, /* Sets the action to take when
   1619                                            Source-fpma-prefix-check fails */
   1620     bcmSwitchFcoeVftHopCountExpiryToCpu = 830, /* If set, copy hopcount expired packets
   1621                                            to CPU */
   1622     bcmSwitchFcoeVftHopCountExpiryAction = 831, /* If set, send hopcount expired packets
   1623                                            with EOFni in FC trailer. Applicable
   1624                                            at egress. */
   1625     bcmSwitchFcoeFcEofT1Value = 832,    /* Sets the numerical value for EOFt */
   1626     bcmSwitchFcoeFcEofT2Value = 833,    /* Sets the numerical value for EOFt
   1627                                            (alternate) */
   1628     bcmSwitchFcoeFcEofA1Value = 834,    /* Sets the numerical value for EOFa */
   1629     bcmSwitchFcoeFcEofA2Value = 835,    /* Sets the numerical value for EOFa
   1630                                            (alternate) */
   1631     bcmSwitchFcoeFcEofN1Value = 836,    /* Sets the numerical value for EOFn */
   1632     bcmSwitchFcoeFcEofN2Value = 837,    /* Sets the numerical value for EOFn
   1633                                            (alternate) */
   1634     bcmSwitchFcoeFcEofNI1Value = 838,   /* Sets the numerical value for EOFni */
   1635     bcmSwitchFcoeFcEofNI2Value = 839,   /* Sets the numerical value for EOFni
   1636                                            (alternate) */
   1637     bcmSwitchFcoeZoneCheckFailToCpu = 840, /* Action to take when FCOE zone check
   1638                                            fails, 0 : no-op(default), 1 :
   1639                                            Copy-to-CPU */
   1640     bcmSwitchFcoeZoneCheckMissDrop = 841, /* Action to take when FCOE zone check
   1641                                            is a miss, 0 : no-op, 1 :
   1642                                            Drop(default) */
   1643     bcmSwitchHashUseL2GreTunnelGreKey0 = 842, /* Place the GRE key extracted from
   1644                                            L2GRE pkt header in Hash A buckets */
   1645     bcmSwitchHashUseL2GreTunnelGreKey1 = 843, /* Place the GRE key extracted from
   1646                                            L2GRE pkt header in Hash B buckets */
   1647     bcmSwitchHashL2GrePayloadSelect0 = 844, /* Select inner L2/L3 fields to derive
   1648                                            the Hash A buckets when an L2GRE pkt
   1649                                            is received and the L2GRE tunnel is
   1650                                            being terminated */
   1651     bcmSwitchHashL2GrePayloadSelect1 = 845, /* Select inner L2/L3 fields to derive
   1652                                            the Hash B buckets when an L2GRE pkt
   1653                                            is received and the L2GRE tunnel is
   1654                                            being terminated */
   1655     bcmSwitchHashL2GreNetworkPortPayloadDisable0 = 846, /* Disable using the l2gre payload for
   1656                                            hashing, for L2Gre pkts */
   1657     bcmSwitchHashL2GreNetworkPortPayloadDisable1 = 847, /* Disable using the l2gre payload for
   1658                                            hashing, for L2Gre pkts */
   1659     bcmSwitchSystemReservedVlan = 848,  /* System Reserved VLAN */
   1660     bcmSwitchProxySrcKnockout = 849,    /* If set, remove the source port during
   1661                                            a proxy lookup operation of a packet
   1662                                            which originated on this module. */
   1663     bcmSwitchNetworkGroupDepth = 850,   /* Number of split horizon groups
   1664                                            supported by the device */
   1665     bcmSwitchUnknownSubportPktTagToCpu = 851, /* If set, send packet to CPU on
   1666                                            following error conditions a. missing
   1667                                            subport pkt tag and b. unknown
   1668                                            subport pkt tag (lookup miss). */
   1669     bcmSwitchL3RoutedLearn = 852,       /* enable L2 learning for routed
   1670                                            packets. */
   1671     bcmSwitchSubportPktTagEthertype = 853, /* Set EtherType field in LLTAG */
   1672     bcmSwitchSubportPktTagToCpu = 854,  /* LLTAG present to CPU */
   1673     bcmSwitchNonSubportPktTagToCpu = 855, /* LLTAG not present to CPU */
   1674     bcmSwitchHashL2GreKeyMask0 = 856,   /* Set the mask which is AND-ed with
   1675                                            hash L2GRE key before hash generation
   1676                                            for hash A */
   1677     bcmSwitchHashL2GreKeyMask1 = 857,   /* Set the mask which is AND-ed with
   1678                                            hash L2GRE key before hash generation
   1679                                            for hash B */
   1680     bcmSwitchL3Max128BV6Entries = 858,  /* Max number of Number of 128B LPM
   1681                                            entries. */
   1682     bcmSwitchEEEQueueThresholdProfile0 = 859, /* Set EEE BB mode queue depth threshold
   1683                                            Profile 0 */
   1684     bcmSwitchEEEQueueThresholdProfile1 = 860, /* Set EEE BB mode queue depth threshold
   1685                                            Profile 1 */
   1686     bcmSwitchEEEQueueThresholdProfile2 = 861, /* Set EEE BB mode queue depth threshold
   1687                                            Profile 2 */
   1688     bcmSwitchEEEQueueThresholdProfile3 = 862, /* Set EEE BB mode queue depth threshold
   1689                                            Profile 3 */
   1690     bcmSwitchEEEPacketLatencyProfile0 = 863, /* Set EEE BB mode packet max latency
   1691                                            Profile 0 */
   1692     bcmSwitchEEEPacketLatencyProfile1 = 864, /* Set EEE BB mode packet max latency
   1693                                            Profile 1 */
   1694     bcmSwitchEEEPacketLatencyProfile2 = 865, /* Set EEE BB mode packet max latency
   1695                                            Profile 2 */
   1696     bcmSwitchEEEPacketLatencyProfile3 = 866, /* Set EEE BB mode packet max latency
   1697                                            Profile 3 */
   1698     bcmSwitchDosAttackV6MinFragEnable = 867, /* Enable Min pkt size check for
   1699                                            fragmented IPv6. */
   1700     bcmSwitchDosAttackV6MinFragSize = 868, /* Min pkt size for fragmented IPv6
   1701                                            check. */
   1702     bcmSwitchMirrorUnicastCosq = 869,   /* Unicast mirror COS. */
   1703     bcmSwitchMirrorMulticastCosq = 870, /* Multicast mirror COS. */
   1704     bcmSwitchMcQueueSchedMode = 871,    /* Schedule mode select for multicast
   1705                                            queues. */
   1706     bcmSwitchReserved872 = 872,         /* Reserved. */
   1707     bcmSwitchCacheTableUpdateAll = 873, /* Update all cached memories. */
   1708     bcmSwitchHashNivSrcIfEtagSvidSelect0 = 874, /* Select VN-TAG.src_vif or E-Tag.svid
   1709                                            for hashing computation in Hash A
   1710                                            buckets. */
   1711     bcmSwitchHashNivSrcIfEtagSvidSelect1 = 875, /* Select VN-TAG.src_vif or E-Tag.svid
   1712                                            for hashing computation in Hash B
   1713                                            buckets. */
   1714     bcmSwitchHashNivDstIfEtagVidSelect0 = 876, /* Select VN-TAG.dst_vif or E-Tag.vid
   1715                                            for hashing computation in Hash A
   1716                                            buckets. */
   1717     bcmSwitchHashNivDstIfEtagVidSelect1 = 877, /* Select VN-TAG.dst_vif or E-Tag.vid
   1718                                            for hashing computation in Hash B
   1719                                            buckets. */
   1720     bcmSwitchBstSnapshotEnable = 878,   /* BST resource usage SnapShot mode. */
   1721     bcmSwitchSymmetricHashControl = 879, /* Enable/Disable symmetric hash, for
   1722                                            Ip4, Ip6, FCoE packet, etc. */
   1723     bcmSwitchL2ExtLearn = 880,          /* Learn L2 addresses on EXT_L2_ENTRY */
   1724     bcmSwitchReserveHighTunnelId = 881, /* Set the highest inclusive bounds of
   1725                                            the Tunnel ID resources.  Get will
   1726                                            return the highest value supported by
   1727                                            the device.  Setting 0 will remove
   1728                                            the reserved range */
   1729     bcmSwitchReserveLowTunnelId = 882,  /* Set the lower inclusive bounds of the
   1730                                            Tunnel ID resources.  Get will return
   1731                                            the lowest value supported by the
   1732                                            device.  Setting 0 will remove the
   1733                                            reserved range */
   1734     bcmSwitchHigigCongestionClassEnable = 883, /* Enable the Congestion_Class field in
   1735                                            HIGIG2 header to store the int_cn
   1736                                            value in it. */
   1737     bcmSwitchEcnNonIpResponsive = 884,  /* Set the default responsive indication
   1738                                            value for NON-IP packets. */
   1739     bcmSwitchEcnNonIpIntCongestionNotification = 885, /* Set the internal congestion
   1740                                            notification (int_cn) value for
   1741                                            NON-IP packets. */
   1742     bcmSwitchMimPayloadTpidEnable = 886, /* Indicates which of MPLS_TPID[3:0] are
   1743                                            allowed to match the TPID of a
   1744                                            transit MinM frame's payload L2
   1745                                            header's outer VLAN tag. */
   1746     bcmSwitchHashMimUseTunnelHeader0 = 887, /* Indicates whether the tunnel or
   1747                                            payload fields must be used for
   1748                                            hashing for MIM traffic in field
   1749                                            selection block A. */
   1750     bcmSwitchHashMimUseTunnelHeader1 = 888, /* Indicates whether the tunnel or
   1751                                            payload fields must be used for
   1752                                            hashing for MIM traffic in field
   1753                                            selection block B. */
   1754     bcmSwitchMplsPipeTunnelLabelExpSet = 889, /* If set, MPLS pipe modes is supported
   1755                                            with EXP field set. In this case exp
   1756                                            is taken from the exp field in
   1757                                            bcm_mpls_egress_label_s struct in the
   1758                                            bcm_mpls_port_add api. Otherwise EXP
   1759                                            field will be copied from previous
   1760                                            label. Default is 0. */
   1761     bcmSwitchControlPortConfigInstall = 890, /* Port config install. */
   1762     bcmSwitchLoopbackMtuSize = 891,     /* MTU size in bytes check for packets
   1763                                            ingressed on loopback port. */
   1764     bcmSwitchHashVxlanPayloadSelect0 = 892, /* Set hash control to select VXLAN
   1765                                            payload L2/L3 fields for Hash Block
   1766                                            A. */
   1767     bcmSwitchHashVxlanPayloadSelect1 = 893, /* Set hash control to select VXLAN
   1768                                            payload L2/L3 fields for Hash Block
   1769                                            B. */
   1770     bcmSwitchCongestionCnmSrcMacNonOui = 894, /* Source MAC address in Congestion
   1771                                            Notification Message Lower 3 bytes of
   1772                                            MAC address to match */
   1773     bcmSwitchCongestionCnmSrcMacOui = 895, /* Source MAC address in Congestion
   1774                                            Notification Message Upper 3 bytes of
   1775                                            MAC address to match */
   1776     bcmSwitchHashL2MPLSPayloadSelect0 = 896, /* Set hash control to select L2 MPLS
   1777                                            payload L2/L3 fields for Hash Block
   1778                                            A. */
   1779     bcmSwitchHashL2MPLSPayloadSelect1 = 897, /* Set hash control to select L2 MPLS
   1780                                            payload L2/L3 fields for Hash Block
   1781                                            B. */
   1782     bcmSwitchHashL3L2MPLSField0 = 898,  /* Hash A Selection of L3 Payload for L2
   1783                                            MPLS Packets */
   1784     bcmSwitchHashL3L2MPLSField1 = 899,  /* Hash B Selection of L3 Payload for L2
   1785                                            MPLS Packets */
   1786     bcmSwitchHashIPSecSelect0 = 900,    /* Set hash control to select outer
   1787                                            L4_SRC/DST_PORT or IPSec SPI for hash
   1788                                            block A. */
   1789     bcmSwitchHashIPSecSelect1 = 901,    /* Set hash control to select outer
   1790                                            L4_SRC/DST_PORT or IPSec SPI for hash
   1791                                            block B. */
   1792     bcmSwitchECMPLevel1RandomSeed = 902, /* Seed for RNG used in ECMP Randomized
   1793                                            Load Balancing (at Level1 in Two
   1794                                            Level ECMP) */
   1795     bcmSwitchECMPLevel2RandomSeed = 903, /* Seed for RNG used in ECMP Randomized
   1796                                            Load Balancing at Level2 in Two Level
   1797                                            ECMP */
   1798     bcmSwitchTimesyncEgressTimestampingMode = 904, /* Selects 32bit or 48bit timestamping
   1799                                            mode for 1588 packets. */
   1800     bcmSwitchSubportCoEEtherType = 905, /* Set COE protocol ingress EtherType to
   1801                                            match */
   1802     bcmSwitchSubportEgressTpid = 906,   /* The TPID to use when the
   1803                                            bcmPortControlSubportTagSize is 4
   1804                                            Bytes */
   1805     bcmSwitchSubportEgressWideTpid = 907, /* The TPID to use when the
   1806                                            bcmPortControlSubportTagSize is 8
   1807                                            Bytes */
   1808     bcmSwitchIpmcSameVlanPruningOverride = 908, /* Set to override the IPMC same vlan
   1809                                            pruning */
   1810     bcmSwitchSynchronousPortClockSourceValid = 909, /* Returns whether synchronous clock can
   1811                                            be sucessfully recovered from the
   1812                                            port, configured via
   1813                                            bcmSwitchSynchronousPortClockSource */
   1814     bcmSwitchSynchronousPortClockSourceBkupValid = 910, /* Returns whether synchronous clock is
   1815                                            successfully recovered from the back
   1816                                            up port, configured via
   1817                                            bcmSwitchSynchronousPortClockSourceBkup */
   1818     bcmSwitchRemoteProtectionEnable = 911, /* Set the Protection Status bit in
   1819                                            HiGig Header */
   1820     bcmSwitchMirrorExclusive = 912,     /* Set Mirror exclusive behaviour
   1821                                            between FP and Port */
   1822     bcmSwitchEcnDelayMeasurementThreshold = 913, /* Set Ecn delay measurement threshold */
   1823     bcmSwitchMacroFlowHashUseMSB = 914, /* If enable, use MSB for Macroflow
   1824                                            based hashing */
   1825     bcmSwitchMplsDefaultTtlCopy = 915,  /* Default value that is used when
   1826                                            sending a packet from AC to PWE and
   1827                                            the push-profile is copy */
   1828     bcmSwitchOamStackingSupport = 916,  /* Use VC label field to carry OAM
   1829                                            endpoint context to egress XGS switch */
   1830     bcmSwitchHashOam = 917,             /* Hash select for OAM tables */
   1831     bcmSwitchHashOamDual = 918,         /* Secondary hash select for OAM tables */
   1832     bcmSwitchHashOamLeastFull = 919,    /* Use least full bank in dual hash OAM
   1833                                            tables */
   1834     bcmSwitchHashDualMoveDepthOam = 920, /* Maximum moves in dual hash mode for
   1835                                            OAM tables */
   1836     bcmSwitchPortVlanTranslationAdvanced = 921, /* Enable Port Advanced default vlan
   1837                                            Edit mode. 1 - enable, 0 - disable */
   1838     bcmSwitchForwardingLayerMtuFilter = 922, /* EnableDisable Forwarding Layer
   1839                                            filtering per header format */
   1840     bcmSwitchLinkLayerMtuFilter = 923,  /* EnableDisable Link Layer Filtering
   1841                                            per header format */
   1842     bcmSwitchForwardingLayerMtuSize = 924, /* Mtu size for Forwarding Layer
   1843                                            Filtering */
   1844     bcmSwitchLinkLayerMtuSize = 925,    /* MTU size for Link Layer Filtering */
   1845     bcmSwitchMimBvidInsertionControl = 926, /* If 0, BVID is inserted into the MiM
   1846                                            packet if the destination virtual
   1847                                            port(bcm_mim_port_t object) is a
   1848                                            Network port (legacy behavior). If
   1849                                            set to 1, BVID is inserted into the
   1850                                            MiM packet if the egress_tunnel_vlan
   1851                                            field of the corresponding
   1852                                            bcm_mim_port_t object contains a
   1853                                            valid vlan id (1 .. 4095) */
   1854     bcmSwitchL2CpuDeleteEvent = 927,    /* If enable, when SW initiates a DELETE
   1855                                            operation to l2 table, SDK can get
   1856                                            relative DELETE events from L2 Mode
   1857                                            FIFO. */
   1858     bcmSwitchL2LearnEvent = 928,        /* If enable, when HW does a LEARN
   1859                                            operation to l2 table, SDK can get
   1860                                            relative LEARN events from L2 Mode
   1861                                            FIFO. */
   1862     bcmSwitchL2CpuAddEvent = 929,       /* If enable, when SW initiates a INSERT
   1863                                            operation to l2 table, SDK can get
   1864                                            ADD events from L2 Mode FIFO. */
   1865     bcmSwitchL2AgingEvent = 930,        /* If enable, when HW does a AGE
   1866                                            operation to l2 table , SDK can get
   1867                                            AGE events from L2 Mode FIFO. */
   1868     bcmSwitchUdfHashEnable = 931,       /* Enable/Disable UDF hashing */
   1869     bcmSwitchOlpMatchRule = 932,        /* Set Match rule value that identifies
   1870                                            OLP packets when copied to CPU. */
   1871     bcmSwitchMplsExtendedLabelTtl = 933, /* Set the TTL of the new MPLS label
   1872                                            created when using extended label
   1873                                            feature. */
   1874     bcmSwitchMacroFlowHashOverlayMaxOffset = 934, /* Maximum offset value to be used in
   1875                                            overlay ECMP offset table */
   1876     bcmSwitchMacroFlowHashOverlayStrideOffset = 935, /* Offset increment to be used for
   1877                                            populating overlay ECMP offset table. */
   1878     bcmSwitchMacroFlowHashOverlayMinOffset = 936, /* Minimum offset value to be used in
   1879                                            overlay ECMP offset table */
   1880     bcmSwitchMacroFlowEcmpHashOverlayConcatEnable = 937, /* Enable hash concatenation for overlay
   1881                                            layer ecmp macro flow. */
   1882     bcmSwitchMacroFlowECMPOverlayHashSeed = 938, /* Hash Seed value for the overlay ECMP
   1883                                            calculation */
   1884     bcmSwitchECMPOverlayHashOffset = 939, /* Offset selections for enhanced
   1885                                            overlay L3 ECMP. */
   1886     bcmSwitchMacroFlowEcmpUnderlayHashConcatEnable = 940, /* 56960 Enable hash concatenation for
   1887                                            ecmp level 2 macro flow. */
   1888     bcmSwitchMacroFlowECMPUnderlayHashSeed = 941, /* 56960 Set Hash seed for ecmp level 2
   1889                                            macro flow. */
   1890     bcmSwitchECMPUnderlayVxlanHashOffset = 942, /* Enhanced hash select for VxLAN ECMP
   1891                                            Level 2 hashing . */
   1892     bcmSwitchECMPUnderlayL2GreHashOffset = 943, /* Enhanced hash select for L2Gre ECMP
   1893                                            Level 2 hashing . */
   1894     bcmSwitchECMPUnderlayTrillHashOffset = 944, /* Enhanced hash select for Trill ECMP
   1895                                            Level 2 hashing . */
   1896     bcmSwitchVirtualPortUnderlayDynamicHashOffset = 945, /* Enhanced hash select for Virtual Port
   1897                                            Aggregation at Level 2. */
   1898     bcmSwitchECMPUnderlayHashSet0Offset = 946, /* 56960 enhanced hash bits for ECMP
   1899                                            Level 2. */
   1900     bcmSwitchSampleFlexRandomSeed = 947, /* Set sFlow Flex RNG seed */
   1901     bcmSwitchNonUcVlanShapingEnable = 948, /*  Enable/disable the ability of
   1902                                            assigning single destination
   1903                                            non-unicast traffic to service-based
   1904                                            queues */
   1905     bcmSwitchCustomHeaderEncapPriorityOffset = 949, /* Set the offset of the priority value
   1906                                            in the encapsulated custom header */
   1907     bcmSwitchIngCapwapEnable = 950,     /* Enable or disable ingress CAPWAP
   1908                                            parser. */
   1909     bcmSwitchCapwapDataUdpDstPort = 951, /* UDP dest port number of CAPWAP data
   1910                                            packet. */
   1911     bcmSwitchCountCapwapPayloadBytesOnly = 952, /* If set, count only the CAPWAP's
   1912                                            wireless payload bytes for CAPWAP
   1913                                            data packets. */
   1914     bcmSwitchOamOlpStationMacOui = 953, /* Specify OUI bytes of BCM device MAC
   1915                                            address used during OLP communication
   1916                                            and OLP PKT sig match */
   1917     bcmSwitchOamOlpStationMacNonOui = 954, /* Specify NON OUI bytes of BCM device
   1918                                            MAC address used during OLP
   1919                                            communication and OLP PKT sig match */
   1920     bcmSwitchReserved955 = 955,         /* Reserved955 */
   1921     bcmSwitchPFCDeadlockDetectionTimeInterval = 956, /* Set and Get the PFC detection time
   1922                                            interval (0-100ms[default], 1-10ms). */
   1923     bcmSwitchPFCDeadlockRecoveryAction = 957, /* Set and Get Recovery action to be
   1924                                            performed in PFC deadlock recovery
   1925                                            state. 0-Transmit Packets (Default),
   1926                                            1-Drop. */
   1927     bcmSwitchRangeCheckersAPIType = 958, /* Setting this switch control to 0
   1928                                            allows to use only field APIs
   1929                                            (bcm_field_range_XXX) and setting it
   1930                                            to 1 allows to use only new range
   1931                                            module APIs (bcm_range_XXX). Default
   1932                                            value will be set to 0. */
   1933     bcmSwitchReserved958 = 959,         /* Reserved958 */
   1934     bcmSwitchEcmpGroupMemberMode = 960, /* Set/get ECMP group mode */
   1935     bcmSwitchMimlEncapInnerEthertype = 961, /* Set MIML-ETYPE (inner EtherType)
   1936                                            field in MiML for encapsulation.
   1937                                            Value of unit16 type. */
   1938     bcmSwitchHashMiMPayloadSelect0 = 962, /* Set hash control to select MiM L2/L3
   1939                                            payload fields for Hash Block A */
   1940     bcmSwitchHashMiMPayloadSelect1 = 963, /* Set hash control to select MiM L2/L3
   1941                                            payload fields for Hash Block B */
   1942     bcmSwitchHashL3MiMField0 = 964,     /* L3 MiM enhanced hash field for Hash
   1943                                            Block A */
   1944     bcmSwitchHashL3MiMField1 = 965,     /* L3 MiM enhanced hash field for Hash
   1945                                            Block B */
   1946     bcmSwitchHashMPLSUseLabelStack = 966, /* If there are more than 3 labels,
   1947                                            label stack (up to 5 labels) is used
   1948                                            for hashing else Top 3 MPLS labels +
   1949                                            payload IPV4/IPv6 fields will be
   1950                                            selected for hashing */
   1951     bcmSwitchHashMPLSExcludeGAL = 967,  /* To exclude GAL label from hash
   1952                                            computation */
   1953     bcmSwitchRedirectBufferThresholdPriorityLow = 968, /* Set the buffer threshold limit for
   1954                                            low priority redirected packets */
   1955     bcmSwitchRedirectBufferThresholdPriorityMedium = 969, /* Set the buffer threshold limit for
   1956                                            medium priority redirected packets */
   1957     bcmSwitchRedirectBufferThresholdPriorityHigh = 970, /* Set the buffer threshold limit for
   1958                                            high priority redirected packets */
   1959     bcmSwitchFlexIP6ExtHdr = 971,       /* Programmable value for user defined
   1960                                            extension header 1 & 2. */
   1961     bcmSwitchFlexIP6ExtHdrEgress = 972, /* Egress programmable value for user
   1962                                            defined extension header 1 & 2. */
   1963     bcmSwitchHashUseFlowSelMplsEcmp = 973, /* Enable/Disable flow based hashing for
   1964                                            MPLS ECMP. */
   1965     bcmSwitchV6L3SrcDstLocalLinkDropCancel = 974, /* Do not drop IPv6. It will override
   1966                                            drop control
   1967                                            bcmSwitchV6L3LocalLinkDrop if source
   1968                                            and destination are local link. */
   1969     bcmSwitchL3ClassIdForL2Enable = 975, /* Enable/Disable L3 Lookup to get
   1970                                            classids based on DIP & SIP for L2
   1971                                            Switched packets. */
   1972     bcmSwitchDropSobmhOnLinkDown = 976, /* Enable/Disable SOBMH blocking on link
   1973                                            down egress port */
   1974     bcmSwitchResilientHashCRC0ByteMask = 977, /* Set mask for CRC0 stateful hashing
   1975                                            function in 2Byte resolution */
   1976     bcmSwitchResilientHashCRC1ByteMask = 978, /* Set mask for CRC1 stateful hashing
   1977                                            function in 2Byte resolution */
   1978     bcmSwitchResilientHashCRC2ByteMask = 979, /* Set mask for CRC2 stateful hashing
   1979                                            function in 2Byte resolution */
   1980     bcmSwitchResilientHashCRC3ByteMask = 980, /* Set mask for CRC3 stateful hashing
   1981                                            function in 2Byte resolution */
   1982     bcmSwitchResilientHashCRCSeed = 981, /* Set seed for stateful CRC hashing
   1983                                            functions */
   1984     bcmSwitchECMPResilientHashKey0Shift = 982, /* Shift left the
   1985                                            Stateful-Hashing-Lb-Key(47 bit) to
   1986                                            create ECMP key-0 */
   1987     bcmSwitchECMPResilientHashKey1Shift = 983, /* Shift right the
   1988                                            Stateful-Hashing-Lb-Key(47 bit) to
   1989                                            create ECMP key-1 */
   1990     bcmSwitchVpnDetachPorts = 984,      /* Set VPN destroy mode to either delete
   1991                                            ports that are attached to the VSI or
   1992                                            ignore them. Default: 1 - Destroy
   1993                                            attached ports. */
   1994     bcmSwitchClassL3L2Marking = 985,    /* Set the
   1995                                            In-Lif-Profile->Resolved-In-Lif-Profile
   1996                                            map (In-Lif-Profile mapping */
   1997     bcmSwitchL3L2MarkingMode = 986,     /* Set the DP map mode */
   1998     bcmSwitchSTPDisabledFieldBypass = 987, /* Disable FP when STP state is
   1999                                            disabled. */
   2000     bcmSwitchHashSctpL4Port = 988,      /* To set that RTAG7 hashing can be
   2001                                            performed on SCTP. */
   2002     bcmSwitchReserved988 = 989,         /* Reserved988. */
   2003     bcmSwitchGlobalTpidEnable = 990,    /* Enable/Disable global TPIDs. */
   2004     bcmSwitchECMPResilientHashCombine = 991, /* Combine both regular and resilient
   2005                                            hashing for ECMP key. */
   2006     bcmSwitchHashSetTflowMode = 992,    /* enable/disable using hash offset
   2007                                            b0/b1 regardless of th_tflow_enabled */
   2008     bcmSwitchDowngrade = 993,           /* set the switch for a downgrade in
   2009                                            Warmboot */
   2010     bcmSwitchHashELISearch = 994,       /* Enable ELI search and the use of the
   2011                                            EL label for LAG and ECMP load
   2012                                            balancing. */
   2013     bcmSwitchCrashRecoveryMode = 995,   /* Determine the Crash recovery mode
   2014                                            0:off 1:API 2:on demand. */
   2015     bcmSwitchCrCommit = 996,            /* If woekinging in on demand CR, use
   2016                                            this to trigger a commit. */
   2017     bcmSwitchCrLastTransactionStatus = 997, /* Query after a crash if last
   2018                                            transaction went through. */
   2019     bcmSwitchCrCouldNotRecover = 998,   /* Query after A crash if program
   2020                                            succesfully recovered. */
   2021     bcmSwitchHWL2Freeze = 999,          /* Freeze/thaw L2 H/W activity. */
   2022     bcmSwitchHashIP6NextHeaderUseExtensionHeader0 = 1000, /* Hash Control to select the IPv6 Next
   2023                                            Header field for hash Block A. If
   2024                                            set, use Extension Header, else use
   2025                                            current Next Header field. */
   2026     bcmSwitchHashIP6NextHeaderUseExtensionHeader1 = 1001, /* Hash Control to select the IPv6 Next
   2027                                            Header field for hash Block B. If
   2028                                            set, use Extension Header, else use
   2029                                            current Next Header field. */
   2030     bcmSwitchHashUseFlowSelLbidNonUnicast = 1002, /* Enable/Disable flow based hashing for
   2031                                            non-unicast LBID. */
   2032     bcmSwitchHashUseFlowSelLbidUnicast = 1003, /* Enable/Disable flow based hashing for
   2033                                            unicast LBID. */
   2034     bcmSwitchHashUseFlowSelHigigTrunkNonUnicast = 1004, /* Enable/Disable flow based hashing for
   2035                                            non-unicast HiGig Trunk. */
   2036     bcmSwitchHashUseFlowSelHigigTrunkUnicast = 1005, /* Enable/Disable flow based hashing for
   2037                                            unicast HiGig Trunk. */
   2038     bcmSwitchHashUseFlowSelHigigTrunkFailover = 1006, /* Enable/Disable flow based hashing for
   2039                                            HiGig Trunk Failover. */
   2040     bcmSwitchHashUseFlowSelTrunkNonUnicast = 1007, /* Enable/Disable flow based hashing for
   2041                                            non-unicast Trunk. */
   2042     bcmSwitchHashUseFlowSelEntropy = 1008, /* Enable/Disable flow based hashing for
   2043                                            Entropy. */
   2044     bcmSwitchHashUseFlowSelVxlanEcmp = 1009, /* Enable/Disable flow based hashing for
   2045                                            VXLAN ECMP. */
   2046     bcmSwitchDefaultNativeOutVlanPort = 1010, /* Default native out VLAN Port. */
   2047     bcmSwitchDefaultEgressVlanEditClassId = 1011, /* Default Vlan Edit Class Id for Egress
   2048                                            VLAN translation. */
   2049     bcmSwitchGtpDetectEnable = 1012,    /* Enable/disable the capability for GTP
   2050                                            packet detection. */
   2051     bcmSwitchGtpHdrFirstByte = 1013,    /* Setup the value for GTP Header First
   2052                                            Byte. */
   2053     bcmSwitchGtpHdrFirstByteMask = 1014, /* Setup the mask for GTP Header First
   2054                                            Byte. */
   2055     bcmSwitchHashGtpTeidEnable0 = 1015, /* Enable using the Tunnel endpoint id
   2056                                            for hashing, for GTP pkts. */
   2057     bcmSwitchHashGtpTeidEnable1 = 1016, /* Enable using the Tunnel endpoint id
   2058                                            for hashing, for GTP pkts. */
   2059     bcmSwitchEccSingleBitErrorEvent = 1017, /* Enable/Disable 1bit ECC error
   2060                                            reporting for all the memories which
   2061                                            are protected by ECC logic and whose
   2062                                            Parity/ECC error could only be
   2063                                            corrected by H/W. */
   2064     bcmSwitchHeaderCompensationPerPacket = 1018, /* Set the header compensation of
   2065                                            packets according to the MSBs of its
   2066                                            CUD. */
   2067     bcmSwitch3rdTagStampMode = 1019,    /* Set the 3rd tag stamping mode,
   2068                                            0:Dsiable, 1: Enable. */
   2069     bcmSwitchMacroFlowHigigTrunkHashMinOffset = 1020, /* Minumum offset value to be used in
   2070                                            RTAG7 macroflow for HiGig Trunk */
   2071     bcmSwitchMacroFlowHigigTrunkHashMaxOffset = 1021, /* Maximum offset value to be used in
   2072                                            RTAG7 macroflow for HiGig Trunk */
   2073     bcmSwitchMacroFlowHigigTrunkHashStrideOffset = 1022, /* Offset increment value to be used in
   2074                                            RTAG7 macroflow for HiGig Trunk */
   2075     bcmSwitchMacroFlowTrunkHashMinOffset = 1023, /* Minumum offset value to be used in
   2076                                            RTAG7 macroflow for Trunk */
   2077     bcmSwitchMacroFlowTrunkHashMaxOffset = 1024, /* Maximum offset value to be used in
   2078                                            RTAG7 macroflow for Trunk */
   2079     bcmSwitchMacroFlowTrunkHashStrideOffset = 1025, /* Offset increment value to be used in
   2080                                            RTAG7 macroflow for Trunk */
   2081     bcmSwitchMacroFlowLoadBalanceEntropyHashMinOffset = 1026, /* Minumum offset value to be used in
   2082                                            RTAG7 macroflow for Load Balance
   2083                                            ID/Entropy */
   2084     bcmSwitchMacroFlowLoadBalanceEntropyHashMaxOffset = 1027, /* Maximum offset value to be used in
   2085                                            RTAG7 macroflow for Load Balance
   2086                                            ID/Entropy */
   2087     bcmSwitchMacroFlowLoadBalanceEntropyHashStrideOffset = 1028, /* Offset increment value to be used in
   2088                                            RTAG7 macroflow for Load Balance
   2089                                            ID/Entropy */
   2090     bcmSwitchCrTransactionStart = 1029, /* If working in on demand CR, use this
   2091                                            to start a new transaction. */
   2092     bcmSwitchUdpTunnelIPv4DstPort = 1030, /* UDP destination port for IPv4
   2093                                            encapsulation in UDP tunnel. */
   2094     bcmSwitchUdpTunnelIPv6DstPort = 1031, /* UDP destination port for IPv6
   2095                                            encapsulation in UDP tunnel. */
   2096     bcmSwitchUdpTunnelMplsDstPort = 1032, /* UDP destination port for MPLS
   2097                                            encapsulation in UDP tunnel. */
   2098     bcmSwitchECMPSecondHierHashOffset = 1033, /* BCM88680: ECMP second hierarchy Hash
   2099                                            key is barrel shifted by this value. */
   2100     bcmSwitchECMPSecondHierHashConfig = 1034, /* BCM88680: Selects hashing polynomial
   2101                                            for the second hierarchy of the ECMP. */
   2102     bcmSwitchIngressRateLimitMpps = 1035, /* Limit ingress rate in Mega Packets
   2103                                            Per Second. */
   2104     bcmSwitchMirrorSnoopForwardOriginalWhenDropped = 1036, /* When dropping the mirror and/or snoop
   2105                                            packet copies due to FIFOs being
   2106                                            full, do not drop the original
   2107                                            (forward) copy */
   2108     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesExponent = 1037, /* The exponent used in the calculation
   2109                                            of exponentially weighted moving
   2110                                            average of historical member bytes in
   2111                                            physical queue. */
   2112     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesDecreaseReset = 1038, /* If set, the historical member bytes
   2113                                            in physical queue is updated with the
   2114                                            instantaneous value if the latter is
   2115                                            smaller. */
   2116     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesMinThreshold = 1039, /* The minimum threshold, in bytes, used
   2117                                            to quantize historical member bytes
   2118                                            in physical queue. */
   2119     bcmSwitchFabricTrunkDynamicPhysicalQueuedBytesMaxThreshold = 1040, /* The maximum threshold, in bytes, used
   2120                                            to quantize historical member bytes
   2121                                            in physical queue. */
   2122     bcmSwitchTrunkDynamicPhysicalQueuedBytesExponent = 1041, /* The exponent used in the calculation
   2123                                            of exponentially weighted moving
   2124                                            average of historical member bytes in
   2125                                            physical queue. */
   2126     bcmSwitchTrunkDynamicPhysicalQueuedBytesDecreaseReset = 1042, /* If set, the historical member bytes
   2127                                            in physical queue is updated with the
   2128                                            instantaneous value if the latter is
   2129                                            smaller. */
   2130     bcmSwitchTrunkDynamicPhysicalQueuedBytesMinThreshold = 1043, /* The minimum threshold, in bytes, used
   2131                                            to quantize historical member bytes
   2132                                            in physical queue. */
   2133     bcmSwitchTrunkDynamicPhysicalQueuedBytesMaxThreshold = 1044, /* The maximum threshold, in bytes, used
   2134                                            to quantize historical member bytes
   2135                                            in physical queue. */
   2136     bcmSwitchEcmpDynamicPhysicalQueuedBytesExponent = 1045, /* The exponent used in the calculation
   2137                                            of exponentially weighted moving
   2138                                            average of historical member bytes in
   2139                                            physical queue. */
   2140     bcmSwitchEcmpDynamicPhysicalQueuedBytesDecreaseReset = 1046, /* If set, the historical member bytes
   2141                                            in physical queue is updated with the
   2142                                            instantaneous value if the latter is
   2143                                            smaller. */
   2144     bcmSwitchEcmpDynamicPhysicalQueuedBytesMinThreshold = 1047, /* The minimum threshold, in bytes, used
   2145                                            to quantize historical member bytes
   2146                                            in physical queue. */
   2147     bcmSwitchEcmpDynamicPhysicalQueuedBytesMaxThreshold = 1048, /* The maximum threshold, in bytes, used
   2148                                            to quantize historical member bytes
   2149                                            in physical queue. */
   2150     bcmSwitchFabricTrunkDynamicRandomSeed = 1049, /* Seed for RNG used in HiGig Trunk
   2151                                            Dynamic Load Balancing */
   2152     bcmSwitchTrunkDynamicRandomSeed = 1050, /* Seed for RNG used in Trunk Dynamic
   2153                                            Load Balancing */
   2154     bcmSwitchEcmpDynamicRandomSeed = 1051, /* Seed for RNG used in ECMP Dynamic
   2155                                            Load Balancing */
   2156     bcmSwitchHashMPLSExcludeReservedLabel = 1052, /* To exclude all reserved labels from
   2157                                            hash computation */
   2158     bcmSwitchMplsNonIpPayloadDefaultEcn = 1053, /* To set the default ECN for L2 MPLS
   2159                                            termination flows for non-IP payloads */
   2160     bcmSwitchECMPHashBitCountSelect = 1054, /* To select the most significant bits
   2161                                            of the 16-bit ECMP hash value before
   2162                                            the modulo function */
   2163     bcmSwitchEcnIpPayloadResponsive = 1055, /* To set to use payload IP header's IP
   2164                                            protocol field to determine
   2165                                            responsive attribute of the packet
   2166                                            for transiting tunnels */
   2167     bcmSwitchHashMultiMoveDepthExactMatch = 1056, /* Maximum moves in multi hash mode for
   2168                                            FPEM tables. */
   2169     bcmSwitchCrAbort = 1057,            /* If working in on demand CR, use this
   2170                                            to abort the current transaction. */
   2171     bcmSwitchLIUdpSrcPortSet = 1058,    /* Set UDP source port for Lawful
   2172                                            Interception tunnel. */
   2173     bcmSwitchRoce1Ethertype = 1059,     /* Set l2 EtherType to match RoCEv1
   2174                                            packets. */
   2175     bcmSwitchRoce2UdpDstPort = 1060,    /* Set udp dest port to match RoCEv2
   2176                                            packets. */
   2177     bcmSwitchHashUseFlowSelRoce2Ecmp = 1061, /* Enable/Disable flow based hashing for
   2178                                            RoCEv2 ECMP. */
   2179     bcmSwitchHashSelectControlExtended = 1062, /* Extended hash field selection control */
   2180     bcmSwitchHashField0Roce1FlowLabel = 1063, /* Enable RoCEv1 GRH(Global Route
   2181                                            Header) flow label for Block A Hash
   2182                                            Field Selection. */
   2183     bcmSwitchHashField1Roce1FlowLabel = 1064, /* Enable RoCEv1 GRH(Global Route
   2184                                            Header) flow label for Block B Hash
   2185                                            Field Selection. */
   2186     bcmSwitchHashField0Roce2FlowLabel = 1065, /* Enable RoCEv2 IPv6 flow label for
   2187                                            Block A Hash Field Selection. */
   2188     bcmSwitchHashField1Roce2FlowLabel = 1066, /* Enable RoCEv2 IPv6 flow label for
   2189                                            Block B Hash Field Selection. */
   2190     bcmSwitchHashRoce1Field0 = 1067,    /* Hash block A field selection for
   2191                                            RoCEv1 packets. */
   2192     bcmSwitchHashRoce1Field1 = 1068,    /* Hash block B field selection for
   2193                                            RoCEv1 packets. */
   2194     bcmSwitchHashRoce2IP4Field0 = 1069, /* Hash block A field selection for
   2195                                            RoCEv2 IPv4 packets. */
   2196     bcmSwitchHashRoce2IP4Field1 = 1070, /* Hash block B field selection for
   2197                                            RoCEv2 IPv4 packets. */
   2198     bcmSwitchHashRoce2IP6Field0 = 1071, /* Hash block A field selection for
   2199                                            RoCEv2 IPv6 packets. */
   2200     bcmSwitchHashRoce2IP6Field1 = 1072, /* Hash block B field selection for
   2201                                            RoCEv2 IPv6 packets. */
   2202     bcmSwitchEcmpRoce2HashOffset = 1073, /* Enhanced hash selection for RoCEv2
   2203                                            ECMP port based hashing. */
   2204     bcmSwitchVxlanUdpDestPortSet1 = 1074, /* Set UDP Destination port for VXLAN
   2205                                            (alternate). */
   2206     bcmSwitchVxlanEntropyEnableIP6 = 1075, /* Set IPv6 Flow Label for VXLAN Tunnel
   2207                                            Entropy (Value = TRUE/FALSE). */
   2208     bcmSwitchE2EFCReceiveDestMacOui = 1076, /* E2EFC message MAC upper 3 bytes to
   2209                                            match, only for E2EFC RX. */
   2210     bcmSwitchE2EFCReceiveDestMacNonOui = 1077, /* E2EFC message MAC lower 3 bytes to
   2211                                            match, only for E2EFC RX. */
   2212     bcmSwitchE2EFCReceiveEtherType = 1078, /* E2EFC message EtherType/length to
   2213                                            match, only for E2EFC RX. */
   2214     bcmSwitchE2EFCReceiveOpcode = 1079, /* E2EFC message opcode to match, only
   2215                                            for E2EFC RX. */
   2216     bcmSwitchHashUseFlowSelEcmpOverlay = 1080, /* Enable/Disable flow based hashing for
   2217                                            ECMP LEVEL 1. */
   2218     bcmSwitchMplsSpeculativeNibbleMap = 1081, /* Map first nibble after MPLS header to
   2219                                            speculative next protocol. */
   2220     bcmSwitchIpmcSameFwdDmnThreshold = 1082, /* Set the threshold for 1:1 mapped
   2221                                            VLANs and VPNs for IPMC packet flow
   2222                                            for RIOT */
   2223     bcmSwitchHashUseFlowSelVpTrunk = 1083, /* Enable/Disable flow based hashing for
   2224                                            VP Trunk. */
   2225     bcmSwitchHashUseFlowSelTrunkResilientHash = 1084, /* Enable/Disable flow based hashing for
   2226                                            Trunk RH. */
   2227     bcmSwitchMeterMef10dot3Enable = 1085, /* Enable meter mef 10.3 mode. */
   2228     bcmSwitchHashMultiMoveDepthVlanTranslate1 = 1086, /* Maximum moves in multi hash mode for
   2229                                            vlan translate1 tables. */
   2230     bcmSwitchHashMultiMoveDepthVlanTranslate2 = 1087, /* Maximum moves in multi hash mode for
   2231                                            vlan translate2 tables. */
   2232     bcmSwitchHashMultiMoveDepthEgressVlanTranslate1 = 1088, /* Maximum moves in multi hash mode for
   2233                                            vlan egress translate1 tables. */
   2234     bcmSwitchHashMultiMoveDepthEgressVlanTranslate2 = 1089, /* Maximum moves in multi hash mode for
   2235                                            vlan egress translate2 tables. */
   2236     bcmSwitchIntL4DestPort1 = 1090,     /* INT(Inband Network Telemetry) packet
   2237                                            UDP destination port1. */
   2238     bcmSwitchIntL4DestPort2 = 1091,     /* INT packet UDP destination port2. */
   2239     bcmSwitchIntProbeMarker1 = 1092,    /* INT header ProbeMarker1. */
   2240     bcmSwitchIntProbeMarker2 = 1093,    /* INT header ProbeMarker2. */
   2241     bcmSwitchIntVersion = 1094,         /* INT header version. */
   2242     bcmSwitchIntRequestVectorValue = 1095, /* INT header request vector. */
   2243     bcmSwitchIntRequestVectorMask = 1096, /* INT header request vector mask. */
   2244     bcmSwitchIntSwitchId = 1097,        /* INT payload switch ID. */
   2245     bcmSwitchIntEgressTimeDelta = 1098, /* Time in nano-second that is added to
   2246                                            current time stamp to adjust latency
   2247                                            from EP to port. */
   2248     bcmSwitchIntHopLimitCpuEnable = 1099, /* Enable copy to CPU on hop limit
   2249                                            condition. */
   2250     bcmSwitchIntTurnAroundCpuEnable = 1100, /* Enable copy to CPU on egress port as
   2251                                            turnaround port. */
   2252     bcmSwitchIntMaxPayloadLength = 1101, /* INT max payload length. Only apply to
   2253                                            devices using global value */
   2254     bcmSwitchForwardLookupNotFoundTrap = 1102, /* Set foward lookup not found Trap ID. */
   2255     bcmSwitchEtherTypeCustom1 = 1103,   /* Set Custom_1 Ethernet type. */
   2256     bcmSwitchEtherTypeCustom2 = 1104,   /* Set Custom_2 Ethernet type. */
   2257     bcmSwitchL3LpmHitbitEnable = 1105,  /* Enable hit bit lookup update in the
   2258                                            LPM table. */
   2259     bcmSwitchMplsCtrlPktToCpu = 1106,   /* MPLS control packets to CPU. */
   2260     bcmSwitchInvalidTpidToCpu = 1107,   /* Invalid tag protocol ID packets to
   2261                                            CPU. */
   2262     bcmSwitchFlowSelectMissToCpu = 1108, /* Packets that miss flow selection to
   2263                                            CPU. */
   2264     bcmSwitchL3HdrMismatchToCpu = 1109, /* L3 header mismatch packets to CPU. */
   2265     bcmSwitchMeterTrafficClass = 1110,  /* Meter Traffic Class value mapped from
   2266                                            internal Traffic Class */
   2267     bcmSwitchRoeEthertype = 1111,       /* EtherType value for ROE frames after
   2268                                            tunnel decap. */
   2269     bcmSwitchRoeCustomEthertype = 1112, /* EtherType value for ROE Custom frames
   2270                                            after tunnel decap. */
   2271     bcmSwitchRoeUdpDestPort = 1113,     /* Set UDP Destination port for ROE
   2272                                            frames. */
   2273     bcmSwitchRoeCustomUdpDestPort = 1114, /* Set UDP Destination port for ROE
   2274                                            Custom frames. */
   2275     bcmSwitchOamOlpHeaderAdd = 1115,    /* Enable or disable OLP header addition
   2276                                            to OAM packets copied to CPU. OLP
   2277                                            header addition is enabled by default
   2278                                            for OAM packets. Please note that
   2279                                            Embedded applications such as
   2280                                            Ethernet LM/DM and MPLS LM/DM will
   2281                                            not work correctly if OLP header
   2282                                            addition is disabled. */
   2283     bcmSwitchL2FreezeMode = 1116,       /* Use global forward mode for higher
   2284                                            efficiency or per port no learn mode
   2285                                            if some ports shouldn't forward. */
   2286     bcmSwitchL3McRpfDefaultRoute = 1117, /* Enable SIP base MC RPF default route
   2287                                            check. */
   2288     bcmSwitchIngParseL2TunnelTermArp = 1118, /* Enable parsing of payload ARP header
   2289                                            for L2 tunnel terminated packets. */
   2290     bcmSwitchIngParseL2TunnelTermRarp = 1119, /* Enable parsing of payload RARP header
   2291                                            for L2 tunnel terminated packets. */
   2292     bcmSwitchNoneEthernetPacketMeterPtr = 1120, /* Ethernet meter pointer for none
   2293                                            Ethernet packets. */
   2294     bcmSwitchEtherDscpRemark = 1121,    /* Enable copying IP header.TOS to
   2295                                            In-DSCP-EXP. */
   2296     bcmSwitchDosAttackTcpFirstOption = 1122, /* Configure TCP option number for
   2297                                            switch control
   2298                                            bcmSwitchDosAttackTcpFlagsSynOption.
   2299                                            Only first option in the TCP option
   2300                                            can be checked and compared to with
   2301                                            this value. */
   2302     bcmSwitchDosAttackInnerTcpFirstOption = 1123, /* Configure Inner TCP option number for
   2303                                            switch control
   2304                                            bcmSwitchDosAttackTcpFlagsSynOption.
   2305                                            Only first option in the TCP option
   2306                                            can be checked and compared to with
   2307                                            this value. */
   2308     bcmSwitchDosAttackTcpFlagsMask = 1124, /* Configure TCP control flags valid
   2309                                            bits for Dos Attack. This value is
   2310                                            used for generating Dos Attack for
   2311                                            bcmSwitchDosAttackTcpFlagsZero and/or
   2312                                            bcmSwitchDosAttackTcpFlagsResvdNonZero. */
   2313     bcmSwitchDosAttackInnerTcpFlagsMask = 1125, /* Configure Inner TCP control flags
   2314                                            valid bits for Dos Attack. This value
   2315                                            is used for generating Dos Attack for
   2316                                            bcmSwitchDosAttackTcpFlagsZero and/or
   2317                                            bcmSwitchDosAttackTcpFlagsResvdNonZero. */
   2318     bcmSwitchDosAttackTcpFlagsSR = 1126, /* Enable DOS attack checking for TCP
   2319                                            packet with SYN and RST Flags set. */
   2320     bcmSwitchDosAttackTcpFlagsZero = 1127, /* Enable DOS attack checking for TCP
   2321                                            packet in which TCP Control Flag is
   2322                                            Zero. Switch Control
   2323                                            bcmSwitchDosAttackTcpFlagsMask and/or
   2324                                            bcmSwitchDosAttackInnerTcpFlagsMask
   2325                                            must be configured to determine valid
   2326                                            TCP Flag bits. */
   2327     bcmSwitchDosAttackTcpFlagsSynOption = 1128, /* Enable DOS attack checking for TCP
   2328                                            packet with SYN Flag set and option
   2329                                            number in payload. Switch Control
   2330                                            bcmSwitchDosAttackTcpFirstOption
   2331                                            and/or
   2332                                            bcmSwitchDosAttackInnerTcpFirstOption
   2333                                            must be set required option number
   2334                                            for matching. */
   2335     bcmSwitchDosAttackTcpFlagsSynFirstFrag = 1129, /* Enable DOS attack checking for TCP
   2336                                            packet with SYN Flags set in first
   2337                                            fragment. */
   2338     bcmSwitchDosAttackTcpFlagsFinNoAck = 1130, /* Enable DOS attack checking for TCP
   2339                                            packet with flags FIN set and ACK not
   2340                                            set. */
   2341     bcmSwitchDosAttackTcpFlagsRstNoAck = 1131, /* Enable DOS attack checking for TCP
   2342                                            packet with flags RST set and ACK not
   2343                                            set. */
   2344     bcmSwitchDosAttackTcpFlagsNoSFRA = 1132, /* Enable DOS attack checking for TCP
   2345                                            packet with no SYN, FIN, RST, ACK
   2346                                            Flag set. */
   2347     bcmSwitchDosAttackTcpFlagsUrgNoUrgPtr = 1133, /* Enable DOS attack checking for TCP
   2348                                            packet with URG flag set and Null
   2349                                            Urgent Pointer. */
   2350     bcmSwitchDosAttackTcpFlagsNoUrgWithUrgPtr = 1134, /* Enable DOS attack checking for TCP
   2351                                            packet with URG flag not set and
   2352                                            non-null Urgent Pointer. */
   2353     bcmSwitchDosAttackTcpDstPortZero = 1135, /* Enable DOS attack checking for TCP
   2354                                            packet with Destination port as zero. */
   2355     bcmSwitchDosAttackTcpSrcPortZero = 1136, /* Enable DOS attack checking for TCP
   2356                                            packet with Source Port as zero. */
   2357     bcmSwitchDosAttackTcpFlagsResvdNonZero = 1137, /* Enable DOS attack checking for TCP
   2358                                            packet with Reserved flags non-zero.
   2359                                            Switch Control
   2360                                            bcmSwitchDosAttackTcpFlagsMask and/or
   2361                                            bcmSwitchDosAttackInnerTcpFlagsMask
   2362                                            must be configured to determine
   2363                                            reserved flag bits. */
   2364     bcmSwitchDosAttackTcpV4DstBcast = 1138, /* Enable DOS attack checking for TCP
   2365                                            packet with Ipv4 Broadcast DIP
   2366                                            address. */
   2367     bcmSwitchDosAttackTcpFlagsAck = 1139, /* Enable DOS attack checking for TCP
   2368                                            packet with ACK flag set and
   2369                                            Acknowledgement number is zero. */
   2370     bcmSwitchMirrorPsampFormat2Epoch = 1140, /* Set EPOCH value in PSAMP format2
   2371                                            header */
   2372     bcmSwitchL2StationExtendedMode = 1141, /* Set L2 station extended memory global
   2373                                            mode. */
   2374     bcmSwitchHashSeed = 1142,           /* Set the seed of the selected hash
   2375                                            function. */
   2376     bcmSwitchLayerRecordModeSelection = 1143, /* Select the working mode of the layer
   2377                                            records. */
   2378     bcmSwitchECMPThirdHierHashConfig = 1144, /* Selects hashing polynomial for the
   2379                                            third hierarchy of the ECMP. */
   2380     bcmSwitchNwkHashConfig = 1145,      /* Selects hashing polynomial for the
   2381                                            network load balancing key
   2382                                            generation. */
   2383     bcmSwitchMplsStack0HashSeed = 1146, /* Set the seed of the first MPLS stack
   2384                                            hash. */
   2385     bcmSwitchMplsStack1HashSeed = 1147, /* Set the seed of the second MPLS stack
   2386                                            hash. */
   2387     bcmSwitchParserHashSeed = 1148,     /* Set the seed of the parser stage
   2388                                            hashing. */
   2389     bcmSwitchMplsSpeculativeParse = 1149, /* Enable/disable the MPLS speculative
   2390                                            parsing. */
   2391     bcmSwitchExternalTcamSync = 1150,   /* Enum for external TCAM sync. */
   2392     bcmSwitchArpMyIp1 = 1151,           /* My-ARP trap configuration of IP 1. */
   2393     bcmSwitchArpMyIp2 = 1152,           /* My-ARP trap configuration of IP 2. */
   2394     bcmSwitchArpIgnoreDa = 1153,        /* ARP trap configuration of Ignore DA. */
   2395     bcmSwitchNdpMyIp1 = 1154,           /* My-NDP trap configuration of IP 1. */
   2396     bcmSwitchNdpMyIp2 = 1155,           /* My-NDP trap configuration of IP 2. */
   2397     bcmSwitchIcmpIgnoreDa = 1156,       /* ICMP trap configuration of Ignore DA. */
   2398     bcmSwitchVxlanEvpnEnable = 1157,    /* enable/disable VXLAN EVPN. */
   2399     bcmSwitchHashDualMoveDepthIngVpVlanMember = 1158, /* Maximum moves in dual hash mode for
   2400                                            ING_VP_VLAN_MEMBERSHIP table. */
   2401     bcmSwitchHashDualMoveDepthEgrVpVlanMember = 1159, /* Maximum moves in dual hash mode for
   2402                                            EGR_VP_VLAN_MEMBERSHIP table. */
   2403     bcmSwitchGpeEntropyEnable = 1160,   /* Set UDP Source port for GPE Tunnel
   2404                                            Entropy(Value = TRUE/FALSE). */
   2405     bcmSwitchGpeUdpDestPortSet = 1161,  /* Set UDP Destination port for GPE. */
   2406     bcmSwitchGeneveEntropyEnable = 1162, /* Set UDP Source port for GENEVE Tunnel
   2407                                            Entropy(Value = TRUE/FALSE). */
   2408     bcmSwitchGeneveUdpDestPortSet = 1163, /* Set UDP Destination port for GENEVE. */
   2409     bcmSwitchBfdRxDisable = 1164,       /* Disable BFD Rx packet processing. */
   2410     bcmSwitchDescCommit = 1165,         /* Commit descriptor DMA chain to HW. */
   2411     bcmSwitchDlbMonitorIngressRandomSeed = 1166, /* Set RNG seed for DLB flow monitoring */
   2412     bcmSwitchCounterAdjustEgressTm = 1167, /* Counter compensation specifically for
   2413                                            ETM. */
   2414     bcmSwitchCounterAdjustEgressPp = 1168, /* Counter compensation specifically for
   2415                                            ERPP. */
   2416     bcmSwitchTagPcpDeiSrc = 1169,       /* Set Source of PCP_DEi for SIT */
   2417     bcmSwitchBfdMyDipDestination = 1170, /* Set destination for BFD IP address
   2418                                            forwarding. */
   2419     bcmSwitchEndToEndLatencyPerDestinationPort = 1171, /* Define if end to end latency is made
   2420                                            per destination port or not. */
   2421     bcmSwitchExternalTcamInit = 1172,   /* Init/De-init External TCAM. */
   2422     bcmSwitchHashMultiMoveDepthL3Tunnel = 1173, /* Maximum moves in multi hash mode for
   2423                                            L3 Tunnel tables. */
   2424     bcmSwitchGbpEtherType = 1174,       /* Specify the EtherType to be used for
   2425                                            GBP protocol */
   2426     bcmSwitchVxlanUdpSrcPortSelect = 1175, /* Select UDP source port for VxLAN
   2427                                            tunnel */
   2428     bcmSwitchGpeUdpSrcPortSelect = 1176, /* Select UDP source port for GPE tunnel */
   2429     bcmSwitchGeneveUdpSrcPortSelect = 1177, /* Select UDP source port for GENEVE
   2430                                            tunnel */
   2431     bcmSwitchPreserveOtagBeforeItag = 1178, /* Control for preserved OTAG order wrt.
   2432                                            ITAG */
   2433     bcmSwitchMirrorCpuCosq = 1179,      /* Mirror COS for CPU port as MTP */
   2434     bcmSwitchIntProbeMarkerEnable = 1180, /* INT packet ProbeMarker(UDF) parser
   2435                                            Enable. */
   2436     bcmSwitchIntL4DestPortEnable = 1181, /* INT packet UDP destination port
   2437                                            parser Enable. */
   2438     bcmSwitchFtmhEtherType = 1182,      /* Set FTMH header EtherType to match */
   2439     bcmSwitchGbpSidDidMcastLookupMissClassid = 1183, /* Default class id to be used when
   2440                                            there is a miss in GBP SID_DID lookup
   2441                                            for multicast flows. */
   2442     bcmSwitchCustomOuterEthertype1 = 1184, /* Outer EtherType 1 used for extracting
   2443                                            packet fields in custom applications. */
   2444     bcmSwitchCustomOuterEthertype2 = 1185, /* Outer EtherType 2 used for extracting
   2445                                            packet fields in custom applications. */
   2446     bcmSwitchCustomInnerEthertype1 = 1186, /* Inner EtherType 1 used for extracting
   2447                                            packet fields in custom applications. */
   2448     bcmSwitchCustomInnerEthertype2 = 1187, /* Inner EtherType 2 used for extracting
   2449                                            packet fields in custom applications. */
   2450     bcmSwitchCustomOuterProtocolId1 = 1188, /* Outer Protocol ID 1 used for
   2451                                            extracting packet fields in custom
   2452                                            applications. */
   2453     bcmSwitchCustomOuterProtocolId2 = 1189, /* Outer Protocol ID 2 used for
   2454                                            extracting packet fields in custom
   2455                                            applications. */
   2456     bcmSwitchCustomInnerProtocolId1 = 1190, /* Inner Protocol ID 1 used for
   2457                                            extracting packet fields in custom
   2458                                            applications. */
   2459     bcmSwitchCustomInnerProtocolId2 = 1191, /* Inner Protocol ID 2 used for
   2460                                            extracting packet fields in custom
   2461                                            applications. */
   2462     bcmSwitchCustomOuterUdpDstPort1 = 1192, /* Outer UDP Dest Port 1 used for
   2463                                            extracting packet fields in custom
   2464                                            applications. */
   2465     bcmSwitchCustomOuterUdpDstPort2 = 1193, /* Outer UDP Dest Port 2 used for
   2466                                            extracting packet fields in custom
   2467                                            applications. */
   2468     bcmSwitchCustomInnerUdpDstPort1 = 1194, /* Inner UDP Dest Port 1 used for
   2469                                            extracting packet fields in custom
   2470                                            applications. */
   2471     bcmSwitchCustomInnerUdpDstPort2 = 1195, /* Inner UDP Dest Port 2 used for
   2472                                            extracting packet fields in custom
   2473                                            applications. */
   2474     bcmSwitchReservedEgressNextHop = 1196, /* Set reserved egress next hop, which
   2475                                            is used to generate L2 header for
   2476                                            IPMC packet that does not have L2
   2477                                            header after tunnel termination. */
   2478     bcmSwitchConcatAppHeader = 1197,    /* Concat app header to master key in
   2479                                            ELK. */
   2480     bcmSwitchVxlanGpeUdpDestPortSet = 1198, /* Set UDP Destination port for
   2481                                            VXLAN-GPE. */
   2482     bcmSwitchSystemPortOverride = 1199, /* When set, port group id used for 
   2483                                            egress VLAN translation is replaced 
   2484                                            with destination global logical port
   2485                                            (mod, port). */
   2486     bcmSwitchSRV6EgressPSPEnable = 1200, /* When set, device supports SRv6 Egress
   2487                                            PSP mode. */
   2488     bcmSwitchSRV6ReducedModeEnable = 1201, /* When set, device supports SRv6
   2489                                            Reduced encapsulation mode. */
   2490     bcmSwitchHashL4Field = 1202,        /* Hash selections for L4 headers. */
   2491     bcmSwitchL3UcLargeNATEnable = 1203, /* Requires BROADCOM_PREMIUM license */
   2492     bcmSwitchL3UcLargeDNAT = 1204,      /* Requires BROADCOM_PREMIUM license */
   2493     bcmSwitchL3UcLargeSNAT = 1205,      /* Requires BROADCOM_PREMIUM license */
   2494     bcmSwitchL3UcLargeDNATSNAT = 1206,  /* Requires BROADCOM_PREMIUM license */
   2495     bcmSwitchL3UcLargeDNAPT = 1207,     /* Requires BROADCOM_PREMIUM license */
   2496     bcmSwitchL3UcLargeSNAPT = 1208,     /* Requires BROADCOM_PREMIUM license */
   2497     bcmSwitchL3UcLargeDNAPTSNAPT = 1209, /* Requires BROADCOM_PREMIUM license */
   2498     bcmSwitchL3McLargeNATEnable = 1210, /* Requires BROADCOM_PREMIUM license */
   2499     bcmSwitchL3McLargeNATRewriteType0 = 1211, /* Requires BROADCOM_PREMIUM license */
   2500     bcmSwitchL3McLargeNATRewriteType1 = 1212, /* Requires BROADCOM_PREMIUM license */
   2501     bcmSwitchL3McLargeNATRewriteType2 = 1213, /* Requires BROADCOM_PREMIUM license */
   2502     bcmSwitchL2ChangeFieldsEnable = 1214, /* Requires BROADCOM_PREMIUM license */
   2503     bcmSwitchModuleVerifyEnable = 1215, /* Enable/disable input verification for
   2504                                            a particular module from the list
   2505                                            bcm_module_verify_e. */
   2506     bcmSwitchTraverseCommitDone = 1216, /* Return 0 if the flush machine is
   2507                                            running. Return 1 if the flush
   2508                                            machine is idle. */
   2509     bcmSwitchHashIP4InnerField = 1217,  /* Hash selections for inner IPv4
   2510                                            headers. */
   2511     bcmSwitchHashIP4OuterField = 1218,  /* Hash selections for outer IPv4
   2512                                            headers. */
   2513     bcmSwitchHashIP6InnerField = 1219,  /* Hash selections for inner IPv6
   2514                                            headers. */
   2515     bcmSwitchHashIP6OuterField = 1220,  /* Hash selections for outer IPv6
   2516                                            headers. */
   2517     bcmSwitchHashL2InnerField = 1221,   /* Hash selections for inner L2 headers. */
   2518     bcmSwitchHashL2OuterField = 1222,   /* Hash selections for outer L2 headers. */
   2519     bcmSwitchMirrorPsampIpfixVersion = 1223, /* Set packet sampling (PSAMP) IP flow
   2520                                            information export (IPFIX) version
   2521                                            number. */
   2522     bcmSwitchLlcHeaderControlMode = 1224, /* When set vlaue=1 LLC header control
   2523                                            bits located in 1:0 selected, value=0
   2524                                            bits 7:6 selected. */
   2525     bcmSwitchPcieHotSwapDisable = 1225, /* When set vlaue=1 PCIE Hot swap
   2526                                            manager is disabled. Applicable for
   2527                                            CMICX based devices only */
   2528     bcmSwitchTrunkDynamicMonitorIngressRandomSeed = 1226, /* Set RNG seed for DLB trunk flow
   2529                                            monitoring. */
   2530     bcmSwitchL2TunnelTpid = 1227,       /* TPID used for outer L2 header VLAN
   2531                                            tag insertion during L2 tunnel
   2532                                            encapsulation. */
   2533     bcmSwitchEcnNonTcpResponsive = 1228, /* Set default responsive indication
   2534                                            value for NON-TCP packets, including
   2535                                            NON-IP packets. */
   2536     bcmSwitchHigig3Ethertype = 1229,    /* Set High 10 bits of HiGig3 EtherType. */
   2537     bcmSwitchIPv4DoNotVerifyIncomingChecksum = 1230, /* Requires BROADCOM_PREMIUM license */
   2538     bcmSwitchHashUseFlowSelTrunkFailover = 1231, /* Enable/Disable flow based hashing for
   2539                                            Trunk failover. */
   2540     bcmSwitchHashUseFlowSelHigigTrunk = 1232, /* Enable/Disable flow based hashing for
   2541                                            HiGig Trunk. */
   2542     bcmSwitchHashUseFlowSelTrunkDynamic = 1233, /* Enable/Disable flow based hashing for
   2543                                            Trunk dynamic load balance. */
   2544     bcmSwitchHashUseHigig3EntropyTrunkNonUnicast = 1234, /* Enable/Disable HiGig3 Entropy based
   2545                                            hashing for non-unicast Trunk. */
   2546     bcmSwitchTrunkUnicastHashOffset = 1235, /* Enhanced hash offset selections for
   2547                                            trunk unicast packet. */
   2548     bcmSwitchTrunkNonUnicastHashOffset = 1236, /* Enhanced hash offset selections for
   2549                                            trunk non-unicast packet. */
   2550     bcmSwitchHigigTrunkHashOffset = 1237, /* Enhanced hash offset selections for
   2551                                            higig trunk. */
   2552     bcmSwitchVpTrunkHashOffset = 1238,  /* Enhanced hash offset selections for
   2553                                            higig trunk. */
   2554     bcmSwitchMacroFlowTrunkUnicastHashConcatEnable = 1239, /* Enable hash concatenation for HiGig
   2555                                            Trunk unicast macro flow. */
   2556     bcmSwitchMacroFlowTrunkNonUnicastHashConcatEnable = 1240, /* Enable hash concatenation for HiGig
   2557                                            Trunk non-unicast macro flow. */
   2558     bcmSwitchMacroFlowTrunkFailoverHashConcatEnable = 1241, /* Enable hash concatenation for Trunk
   2559                                            failover macro flow. */
   2560     bcmSwitchMacroFlowHigigTrunkFailoverHashConcatEnable = 1242, /* Enable hash concatenation for HiGig
   2561                                            Trunk failover macro flow. */
   2562     bcmSwitchMacroFlowTrunkDynamicHashConcatEnable = 1243, /* Enable hash concatenation for trunk
   2563                                            dynamic load balance macro flow. */
   2564     bcmSwitchMacroFlowVpTrunkHashConcatEnable = 1244, /* Enable hash concatenation for virtual
   2565                                            port trunk group. */
   2566     bcmSwitchMacroFlowTrunkUnicastHashSeed = 1245, /* Set Hash Seed for Trunk unicast macro
   2567                                            flow. */
   2568     bcmSwitchMacroFlowTrunkNonUnicastHashSeed = 1246, /* Set Hash Seed for Trunk non-unicast
   2569                                            macro flow. */
   2570     bcmSwitchMacroFlowTrunkFailoverHashSeed = 1247, /* Set Hash Seed for Trunk failover
   2571                                            macro flow. */
   2572     bcmSwitchMacroFlowHigigTrunkFailoverHashSeed = 1248, /* Set Hash Seed for HiGig Trunk
   2573                                            failover macro flow. */
   2574     bcmSwitchMacroFlowTrunkDynamicHashSeed = 1249, /* Set Hash Seed for Trunk dynamic load
   2575                                            balance macro flow. */
   2576     bcmSwitchMacroFlowVpTrunkHashSeed = 1250, /* Set Hash Seed for virtual port Trunk
   2577                                            group macro flow. */
   2578     bcmSwitchMacroFlowTrunkUnicastHashMinOffset = 1251, /* Minimum offset value to be used in
   2579                                            trunk unicast offset table. */
   2580     bcmSwitchMacroFlowTrunkUnicastHashMaxOffset = 1252, /* Maximum offset value to be used in
   2581                                            trunk unicast offset table. */
   2582     bcmSwitchMacroFlowTrunkUnicastHashStrideOffset = 1253, /* Offset increment to be used for
   2583                                            populating trunk unicast offset
   2584                                            table. */
   2585     bcmSwitchMacroFlowTrunkNonUnicastHashMinOffset = 1254, /* Minimum offset value to be used in
   2586                                            trunk non-unicast offset table. */
   2587     bcmSwitchMacroFlowTrunkNonUnicastHashMaxOffset = 1255, /* Maximum offset value to be used in
   2588                                            trunk non-unicast offset table. */
   2589     bcmSwitchMacroFlowTrunkNonUnicastHashStrideOffset = 1256, /* Offset increment to be used for
   2590                                            populating trunk non-unicast offset
   2591                                            table. */
   2592     bcmSwitchMacroFlowTrunkFailoverHashMinOffset = 1257, /* Minimum offset value to be used in
   2593                                            trunk failover offset table. */
   2594     bcmSwitchMacroFlowTrunkFailoverHashMaxOffset = 1258, /* Maximum offset value to be used in
   2595                                            trunk failover offset table. */
   2596     bcmSwitchMacroFlowTrunkFailoverHashStrideOffset = 1259, /* Offset increment to be used for
   2597                                            populating trunk failover offset
   2598                                            table. */
   2599     bcmSwitchMacroFlowHigigTrunkFailoverHashMinOffset = 1260, /* Minimum offset value to be used in
   2600                                            higig trunk failover offset table. */
   2601     bcmSwitchMacroFlowHigigTrunkFailoverHashMaxOffset = 1261, /* Maximum offset value to be used in
   2602                                            higig trunk failover offset table. */
   2603     bcmSwitchMacroFlowHigigTrunkFailoverHashStrideOffset = 1262, /* Offset increment to be used for
   2604                                            populating higig trunk failover
   2605                                            offset table. */
   2606     bcmSwitchMacroFlowTrunkDynamicHashMinOffset = 1263, /* Minimum offset value to be used in
   2607                                            trunk dynamic load balance offset
   2608                                            table. */
   2609     bcmSwitchMacroFlowTrunkDynamicHashMaxOffset = 1264, /* Maximum offset value to be used in
   2610                                            trunk dynamic load balance offset
   2611                                            table. */
   2612     bcmSwitchMacroFlowTrunkDynamicHashStrideOffset = 1265, /* Offset increment to be used for trunk
   2613                                            populating dynamic load balance
   2614                                            offset table. */
   2615     bcmSwitchMacroFlowVpTrunkHashMinOffset = 1266, /* Minimum offset value to be used in
   2616                                            virtual port trunk group offset
   2617                                            table. */
   2618     bcmSwitchMacroFlowVpTrunkHashMaxOffset = 1267, /* Maximum offset value to be used in
   2619                                            virtual port trunk group offset
   2620                                            table. */
   2621     bcmSwitchMacroFlowVpTrunkHashStrideOffset = 1268, /* Offset increment to be used for
   2622                                            populating virtual port trunk group
   2623                                            offset table. */
   2624     bcmSwitchTrunkRandomSeed = 1269,    /* Seed for RNG used in Trunk hashing. */
   2625     bcmSwitchHigigTrunkRandomSeed = 1270, /* Seed for RNG used in HiGig Trunk
   2626                                            hashing. */
   2627     bcmSwitchVPTrunkRandomSeed = 1271,  /* Seed for RNG used in virtal port
   2628                                            Trunk hashing. */
   2629     bcmSwitchModuleErrorRecoveryEnable = 1272, /* Flag for switch module error recovery
   2630                                            enable. */
   2631     bcmSwitchHashMultiMoveDepthVlanTranslate3 = 1273, /* Maximum moves in multi hash mode for
   2632                                            vlan vranslate 3 tables. */
   2633     bcmSwitchHashMultiMoveDepthL2Tunnel = 1274, /* Maximum moves in multi hash mode for
   2634                                            L2 tunnel termination tables. */
   2635     bcmSwitchHashMultiMoveDepthL2TunnelVnid = 1275, /* Maximum moves in multi hash mode for
   2636                                            L2 tunnel VNID tables. */
   2637     bcmSwitchHashMultiMoveDepthFlowTracker = 1276, /* Maximum moves in multi hash mode for
   2638                                            flow tracker tables. */
   2639     bcmSwitchHashMultiMoveDepthIpmcGroup = 1277, /* Maximum moves in multi hash mode for
   2640                                            L3 IPv4/IPv6 multicast (*,G) tables. */
   2641     bcmSwitchHashMultiMoveDepthIpmcSourceGroup = 1278, /* Maximum moves in multi hash mode for
   2642                                            L3 IPv4/IPv6 multicast (S,G) tables. */
   2643     bcmSwitchHashMultiMoveDepthL2mc = 1279, /* Maximum moves in multi hash mode for
   2644                                            L2 IPv4/IPv6 multicast tables. */
   2645     bcmSwitchMactAgeRefreshMode = 1280, /* Select the hit bit mode */
   2646     bcmSwitchDosAttackMaxIpPayloadEnable = 1281, /* Enable outer IP payload maximum size
   2647                                            check. 1: enable, 0(default):
   2648                                            disable. */
   2649     bcmSwitchDosAttackMaxIpPayloadSize = 1282, /* Maximum outer IP payload size value
   2650                                            for outer IP payload maximum size
   2651                                            check. */
   2652     bcmSwitchDosAttackMinIpPayloadEnable = 1283, /* Enable outer IP payload minimum size
   2653                                            check. 1: enable, 0(default):
   2654                                            disable. */
   2655     bcmSwitchDosAttackMinIpPayloadSize = 1284, /* Minimum outer IP payload size value
   2656                                            for outer IP payload minimum size
   2657                                            check. */
   2658     bcmSwitchDosAttackMaxInnerIpPayloadEnable = 1285, /* Enable inner IP payload maximum size
   2659                                            check. 1: enable, 0(default):
   2660                                            disable. */
   2661     bcmSwitchDosAttackMaxInnerIpPayloadSize = 1286, /* Maximum inner IP payload size value
   2662                                            for inner IP payload maximum size
   2663                                            check. */
   2664     bcmSwitchDosAttackMinInnerIpPayloadEnable = 1287, /* Enable inner IP payload minimum size
   2665                                            check. 1: enable, 0(default):
   2666                                            disable. */
   2667     bcmSwitchDosAttackMinInnerIpPayloadSize = 1288, /* Minimum inner IP payload size value
   2668                                            for inner IP payload minimum size
   2669                                            check. */
   2670     bcmSwitchEccSingleBitBusBufferErrorEvent = 1289, /* Enable/Disable 1bit ECC error
   2671                                            reporting for internal bus and buffer
   2672                                            which are protected by ECC logic. */
   2673     bcmSwitchHashLayersDisable = 1290,  /* disable selected load balancing hash
   2674                                            layers using the
   2675                                            BCM_HASH_LAYER_XXX_DISABLE flags */
   2676     bcmSwitchMplsAlternateMarkingSpecialLabel = 1291, /* Special Label Indicator value for
   2677                                            Alternate Marking */
   2678     bcmSwitchSvtagSciProfile = 1292,    /* SVTag Secutre Context Index Profile */
   2679     bcmSwitchSvtagErrCodeProfile = 1293, /* SVTag Error Code Profile */
   2680     bcmSwitchLatencyEcnMarkMode = 1294, /* Latency-based ECN mark mode, choose
   2681                                            mode from
   2682                                            bcm_switch_latency_ecn_mark_mode_t. */
   2683     bcmSwitchGlobalTodMode = 1295,      /* Define the global TOD mode. See
   2684                                            bcm_switch_tod_mode_t for details. */
   2685     bcmSwitchTimesyncLiveWireToD = 1296, /* Enable live wire simultaneous NTP/PTP
   2686                                            Time of Day in pipeline. */
   2687     bcmSwitchL3TunnelCollapseDisable = 1297, /* Disables UDP Tunnel Collapsing for
   2688                                            the specified protocol */
   2689     bcmSwitchControlOamBfdFailoverStateIgnore = 1298, /* Enable/Disable ignoring protection
   2690                                            state for OAMP inject packets. */
   2691     bcmSwitchEntropyHashOffset = 1299,  /* Enhanced hash select for Entropy
   2692                                            hashing. */
   2693     bcmSwitchMacroFlowEntropyHashConcatEnable = 1300, /* Enable hash concatenation for Entropy
   2694                                            hashing flow. */
   2695     bcmSwitchMacroFlowEntropyHashSeed = 1301, /* Set Hash Seed for Entropy hashing
   2696                                            flow. */
   2697     bcmSwitchSubportLowPriPfcSel = 1302, /* Select the Low priority PFC class for
   2698                                            the Subports. */
   2699     bcmSwitchSubportHighPriPfcSel = 1303, /* Select the High priority PFC class
   2700                                            for the Subports. */
   2701     bcmSwitchExactMatchInit = 1304,     /* Initialize Exact Match databases */
   2702     bcmSwitchRangeTypeSelect = 1305,    /* Select Range Type for L4 OPS Extended
   2703                                            (Indexed) */
   2704     bcmSwitchRangeOperator = 1306,      /* Select Operator between range types
   2705                                            for L4 OPS Extended */
   2706     bcmSwitchRangeResultMap = 1307,     /* Select result mapping for L4 OPS
   2707                                            Extended's Encoders (Indexed) */
   2708     bcmSwitchIFA2Enable = 1308,         /* Requires BROADCOM_PREMIUM license */
   2709     bcmSwitchIFA2HeaderType = 1309,     /* Requires BROADCOM_PREMIUM license */
   2710     bcmSwitchIFA2MetaDataFirstLookupType = 1310, /* Requires BROADCOM_PREMIUM license */
   2711     bcmSwitchIFA2MetaDataSecondLookupType = 1311, /* Requires BROADCOM_PREMIUM license */
   2712     bcmSwitchMacroFlowEcmpDynamicHashConcatEnable = 1312, /* Enable hash concatenation for ECMP
   2713                                            dynamic load balance macro flow. */
   2714     bcmSwitchMacroFlowEcmpDynamicHashSeed = 1313, /* Set Hash Seed for ECMP dynamic load
   2715                                            balance macro flow. */
   2716     bcmSwitchMacroFlowEcmpDynamicHashMinOffset = 1314, /* Minimum offset value to be used in
   2717                                            ECMP dynamic load balance offset
   2718                                            table. */
   2719     bcmSwitchMacroFlowEcmpDynamicHashMaxOffset = 1315, /* Maximum offset value to be used in
   2720                                            ECMP dynamic load balance offset
   2721                                            table. */
   2722     bcmSwitchMacroFlowEcmpDynamicHashStrideOffset = 1316, /* Offset increment to be used for ECMP
   2723                                            populating dynamic load balance
   2724                                            offset table. */
   2725     bcmSwitchTrunkUnicastHashBitCountSelect = 1317, /* To specify the number of bits
   2726                                            required in the final hash result for
   2727                                            trunk unicast hash before the modulo
   2728                                            function */
   2729     bcmSwitchTrunkNonunicastHashBitCountSelect = 1318, /* To specify the number of bits
   2730                                            required in the final hash result for
   2731                                            trunk non-unicast hash before the
   2732                                            modulo function */
   2733     bcmSwitchTrunkFailoverHashBitCountSelect = 1319, /* To specify the number of bits
   2734                                            required in the final hash result for
   2735                                            trunk failover hash before the modulo
   2736                                            function */
   2737     bcmSwitchHigigTrunkHashBitCountSelect = 1320, /* To specify the number of bits
   2738                                            required in the final hash result for
   2739                                            higig trunk hash before the modulo
   2740                                            function */
   2741     bcmSwitchHigigTrunkFailoverHashBitCountSelect = 1321, /* To specify the number of bits
   2742                                            required in the final hash result for
   2743                                            higig trunk failover hash before the
   2744                                            modulo function */
   2745     bcmSwitchTrunkDynamicHashBitCountSelect = 1322, /* To specify the number of bits
   2746                                            required in the final hash result for
   2747                                            DLB trunk hash before the modulo
   2748                                            function */
   2749     bcmSwitchVpTrunkHashBitCountSelect = 1323, /* To specify the number of bits
   2750                                            required in the final hash result for
   2751                                            VPLAG hash before the modulo function */
   2752     bcmSwitchEntropyHashBitCountSelect = 1324, /* To specify the number of bits
   2753                                            required in the final hash result for
   2754                                            entropy hash before the modulo
   2755                                            function */
   2756     bcmSwitchEcmpOverlayHashBitCountSelect = 1325, /* To specify the number of bits
   2757                                            required in the final hash result for
   2758                                            ECMP overlay hash before the modulo
   2759                                            function */
   2760     bcmSwitchEcmpDynamicHashBitCountSelect = 1326, /* To specify the number of bits
   2761                                            required in the final hash result for
   2762                                            DLB ECMP hash before the modulo
   2763                                            function */
   2764     bcmSwitchGpeNextProtoGbp = 1327,    /* GPE header next protocol value to
   2765                                            parse/insert GBP header. */
   2766     bcmSwitchIoamMaxPayloadLength = 1328, /* Maximum Length of IOAM payload. */
   2767     bcmSwitchIoamNameSpaceId = 1329,    /* Value of NAMESPACE_ID field in IOAM
   2768                                            payload to match. */
   2769     bcmSwitchGpeNextProtoIoam = 1330,   /* GPE header next protocol value to
   2770                                            parse IOAM header. */
   2771     bcmSwitchGpeNextProtoIoamE2e = 1331, /* GPE header next protocol value to
   2772                                            parse/insert IOAM E2E header. */
   2773     bcmSwitchPFCStopInterfaceBitmap = 1332, /* Stop the whole interface when
   2774                                            received configured PFC priorities. */
   2775     bcmSwitchIFAMetaDataAdaptTable = 1333, /* Requires BROADCOM_PREMIUM license */
   2776     bcmSwitchL3UcSameInterfaceDrop = 1334, /* Enable dropping of L3 unicast packets
   2777                                            to the same L3 incoming interface. */
   2778     bcmSwitchL2ApplCallbackSuppress = 1335, /* BCM56980 Enable/Disable suppression
   2779                                            of application callbacks for L2
   2780                                            entries added/deleted through
   2781                                            bcm_l2_addr_add/bcm_l2_addr_delete
   2782                                            APIs. This feature is disabled by
   2783                                            default */
   2784     bcmSwitchOtpAvsValue = 1336,        /* AVS value from OTP. */
   2785     bcmSwitchSampleVersion = 1337,      /* Set sFlow version number. */
   2786     bcmSwitchHashUseFlowSelEcmpWeighted = 1338, /* Enable/Disable flow based hashing for
   2787                                            weighted ECMP. */
   2788     bcmSwitchEcmpWeightedHashOffset = 1339, /* Weighted ECMP Hash key is barrel
   2789                                            shifted by this value. */
   2790     bcmSwitchMacroFlowEcmpWeightedHashMinOffset = 1340, /* Minumum offset value to be used in
   2791                                            RTAG7 macroflow for weighted ECMP. */
   2792     bcmSwitchMacroFlowEcmpWeightedHashMaxOffset = 1341, /* Maximum offset value to be used in
   2793                                            RTAG7 macroflow for weighted ECMP. */
   2794     bcmSwitchMacroFlowEcmpWeightedHashStrideOffset = 1342, /* Offset increment value to be used in
   2795                                            RTAG7 macroflow for weighted ECMP. */
   2796     bcmSwitchMacroFlowEcmpWeightedHashConcatEnable = 1343, /* Enable hash concatenation for
   2797                                            weighted ECMP macro flow. */
   2798     bcmSwitchMplsPwControlWordUpperClear = 1344, /* Clear the upper 2 bytes of the
   2799                                            control word. */
   2800     bcmSwitchMplsPwControlWordLowerClear = 1345, /* Clear the lower 2 bytes of the
   2801                                            control word. */
   2802     bcmSwitchMplsGal = 1346,            /* Specify the GAL value for GAL label
   2803                                            match. */
   2804     bcmSwitchMplsEli = 1347,            /* Specify the ELI value for ELI label
   2805                                            match. */
   2806     bcmSwitchMplsPwTermSeqNumberRange = 1348, /* Specify the PW decapsulation sequence
   2807                                            number range. */
   2808     bcmSwitchEgressVlanTranslate2Enable = 1349, /* Enable egress vlan translation table
   2809                                            2 for fixed flows. */
   2810     bcmSwitchPointToPointAccessVlanCheckEnable = 1350, /* Enable access vlan check for point to
   2811                                            point service. */
   2812     bcmSwitchNshEgressAdaptationKeySelect = 1351, /* Select egress adaptation key type for
   2813                                            NSH encapsulation. Valid values are
   2814                                            BCM_SWITCH_NSH_EGR_ADAPT_KEY_xxx */
   2815     bcmSwitchNshMetaDataSourceInterfaceSelect = 1352, /* Select the source of NSH metadata
   2816                                            source interface. Valid values are
   2817                                            BCM_SWITCH_NSH_METADATA_SRC_INTF_xxx */
   2818     bcmSwitchNshMetaDataTenantIdSelect = 1353, /* Select the source of NSH metadata
   2819                                            tenant ID. Valid values are
   2820                                            BCM_SWITCH_NSH_METADATA_TENANT_ID_xxx */
   2821     bcmSwitchNshTenantIdMappingMissDropEnable = 1354, /* Enable NSH tenant ID mapping miss
   2822                                            drop */
   2823     bcmSwitchNshEthertype = 1355,       /* Set the NSH protocol etherType */
   2824     bcmSwitchNshEthertypeEnable = 1356, /* Enable to match the NSH protocol
   2825                                            etherType */
   2826     bcmSwitchL3IngTagActionsEnable = 1357, /* Requires BROADCOM_PREMIUM license */
   2827     bcmSwitchECMPRandomSeed = 1358,     /* Seed for RNG used in random load
   2828                                            balancing for single level ECMP. */
   2829     bcmSwitchHashVersatileInitValue0 = 1359, /* Initial value 0 for both versatile
   2830                                            hash block A and B. */
   2831     bcmSwitchHashVersatileInitValue1 = 1360, /* Initial value 1 for both versatile
   2832                                            hash block A and B. */
   2833     bcmSwitchHash0VersatileInitValue0 = 1361, /* Initial value 0 for versatile hash
   2834                                            block A. */
   2835     bcmSwitchHash0VersatileInitValue1 = 1362, /* Initial value 1 for versatile hash
   2836                                            block A. */
   2837     bcmSwitchHash1VersatileInitValue0 = 1363, /* Initial value 0 for versatile hash
   2838                                            block B. */
   2839     bcmSwitchHash1VersatileInitValue1 = 1364, /* Initial value 1 for versatile hash
   2840                                            block B. */
   2841     bcmSwitchIoamE2eNextProtoGbp = 1365, /* IAOM E2E header (GPE -> IOAM_E2E ->
   2842                                            GBP) next protocol value to
   2843                                            parse/insert GBP header. */
   2844     bcmSwitchMirrorUnicastCosqEnable = 1366, /* Enable to use multicast COS from
   2845                                            mirroring for unicast mirror. */
   2846     bcmSwitchFlowCountHashShift = 1367, /* Specify the right shift amount
   2847                                            applied to the hash value generated
   2848                                            by RTAG7 hash for prefix length
   2849                                            calculation. */
   2850     bcmSwitchFlowCountHashMask = 1368,  /* Specify the mask ORed to shifted hash
   2851                                            value for prefix length calculation. */
   2852     bcmSwitchFlowCountFlexCtrIngAction = 1369, /* Specify the ingress enhanced flex
   2853                                            counter action by using
   2854                                            bcmFlexctrObjectStaticIngFlowCountPrefixLength. */
   2855     bcmSwitchSLLBDestinationNotFound = 1370, /* Default destination applied for SLLB
   2856                                            routing lookups miss. */
   2857     bcmSwitchVIPEcmpTableSize = 1371,   /* SLLB ECMP Consistent Hash table size. */
   2858     bcmSwitchVIPL3EgressIDMin = 1372,   /* Minumum VIP ECMP FEC Id in the
   2859                                            reserved FEC range. */
   2860     bcmSwitchVIPL3EgressIDMax = 1373,   /* Maximum VIP ECMP FEC Id in the
   2861                                            reserved range. */
   2862     bcmSwitchPCCAgeTimer = 1374,        /* LEM PCC State Table age timer in
   2863                                            seconds. */
   2864     bcmSwitchPCCLearnLimit = 1375,      /* LEM PCC State Table learn limit. */
   2865     bcmSwitchFlexeOamAlmCollectionTimerStep = 1376, /* The Timer step for collecting FlexE
   2866                                            OAM alarms. */
   2867     bcmSwitchFlexeOamAlmCollectionStepCount = 1377, /* The number of steps for FlexE OAM
   2868                                            alarm collection period. The final
   2869                                            period should be timer_step *
   2870                                            step_count * 1024 / 833Mhz */
   2871     bcmSwitchIfaVersion = 1378,         /* IFA version number. */
   2872     bcmSwitchIfaProtocol = 1379,        /* Protocol value to be compared against
   2873                                            the packet IP protocol or next header
   2874                                            field in order to identify and parse
   2875                                            IFA packets. */
   2876     bcmSwitchIoamGreProtocolParse = 1380, /* Enable to parse IOAM packet with GRE
   2877                                            encapsulation. */
   2878     bcmSwitchIoamGreProtocol = 1381,    /* Set the protocol value to be compared
   2879                                            against the IP protocol field in the
   2880                                            GRE header in order to identify and
   2881                                            parse IOAM packets. */
   2882     bcmSwitchIoamOptionIncrementalParse = 1382, /* Enable to parse IOAM packet with IPV6
   2883                                            encapsulation. */
   2884     bcmSwitchIoamOptionIncremental = 1383, /* Set the option type value to be
   2885                                            compared against the option type in
   2886                                            the IPv6 Hop-by-Hop or destination
   2887                                            extension header in order to identify
   2888                                            and parse IOAM packets. */
   2889     bcmSwitchIoamType = 1384,           /* Set IOAM type value to be compared
   2890                                            against the IOAM type in the GRE
   2891                                            header or the IPv6 extension header
   2892                                            in order to identify and parse IOAM
   2893                                            packets. */
   2894     bcmSwitchIntVectorMatchMissAction = 1385, /* Action for inband telemetry packets
   2895                                            with no vector match. 0: Drop, 1:
   2896                                            Forward as non-INT packet. */
   2897     bcmSwitch1588ClockAddressOui = 1386, /* OUI portion (first 3 octets) of the
   2898                                            IEEE 1588 clock address representing
   2899                                            this system. */
   2900     bcmSwitch1588ClockAddressNonOui = 1387, /* Non-OUI portion (last 3 octets) of
   2901                                            the IEEE 1588 clock address
   2902                                            representing this system. */
   2903     bcmSwitchHashUseFlowSelL2Ecmp = 1388, /* Enable/Disable flow based hashing for
   2904                                            L2 ECMP. */
   2905     bcmSwitchHashUseFlowSelL2EcmpOverlay = 1389, /* Enable/Disable flow based hashing for
   2906                                            overlay L2 ECMP. */
   2907     bcmSwitchHashUseFlowSelEcmpResilientHash = 1390, /* Enable/Disable flow based hashing for
   2908                                            ECMP resilient hashing. */
   2909     bcmSwitchHashUseFlowSelEcmpOverlayResilientHash = 1391, /* Enable/Disable flow based hashing for
   2910                                            overlay ECMP resilient hashing. */
   2911     bcmSwitchHashUseFlowSelEcmpWeightedOverlay = 1392, /* Enable/Disable flow based hashing for
   2912                                            overlay weighted ECMP. */
   2913     bcmSwitchEcmpOverlayResilientHashOffset = 1393, /* Enhanced hash select for overlay ECMP
   2914                                            resilient hashing. */
   2915     bcmSwitchEcmpOverlayMplsHashOffset = 1394, /* Enhanced hash select for overlay MPLS
   2916                                            ECMP hashing. */
   2917     bcmSwitchEcmpOverlayHashOffset = 1395, /* Enhanced hash select for overlay ECMP
   2918                                            hashing. */
   2919     bcmSwitchEcmpOverlayWeightedHashOffset = 1396, /* Enhanced hash select for overlay
   2920                                            weighted ECMP hashing. */
   2921     bcmSwitchL2EcmpHashOffset = 1397,   /* Enhanced hash select for L2 ECMP
   2922                                            hashing. */
   2923     bcmSwitchL2EcmpOverlayHashOffset = 1398, /* Enhanced hash select for overlay L2
   2924                                            ECMP hashing. */
   2925     bcmSwitchMacroFlowEcmpResilientHashConcatEnable = 1399, /* Enable hash concatenation for ECMP
   2926                                            resilient hashing macroflow. */
   2927     bcmSwitchMacroFlowEcmpResilientHashMinOffset = 1400, /* Minimum offset value to be used in
   2928                                            RTAG7 macroflow for ECMP resilient
   2929                                            hashing. */
   2930     bcmSwitchMacroFlowEcmpResilientHashMaxOffset = 1401, /* Maximum Offset value to be used in
   2931                                            RTAG7 macroflow for ECMP resilient
   2932                                            hashing. */
   2933     bcmSwitchMacroFlowEcmpResilientHashStrideOffset = 1402, /* Offset increment value to be used in
   2934                                            RTAG7 macroflow for ECMP resilient
   2935                                            hashing. */
   2936     bcmSwitchMacroFlowEcmpOverlayResilientHashConcatEnable = 1403, /* Enable hash concatenation for overlay
   2937                                            ECMP resilient hashing macroflow. */
   2938     bcmSwitchMacroFlowEcmpOverlayResilientHashMinOffset = 1404, /* Minimum offset value to be used in
   2939                                            RTAG7 macroflow for overlay ECMP
   2940                                            resilient hashing. */
   2941     bcmSwitchMacroFlowEcmpOverlayResilientHashMaxOffset = 1405, /* Maximum offset value to be used in
   2942                                            RTAG7 macroflow for overlay ECMP
   2943                                            resilient hashing. */
   2944     bcmSwitchMacroFlowEcmpOverlayResilientHashStrideOffset = 1406, /* Offset increment value to be used in
   2945                                            RTAG7 macroflow for overlay ECMP
   2946                                            resilient hashing. */
   2947     bcmSwitchMacroFlowEcmpMplsHashConcatEnable = 1407, /* Enable hash concatenation for MPLS
   2948                                            ECMP macroflow. */
   2949     bcmSwitchMacroFlowEcmpMplsHashMinOffset = 1408, /* Minimum offset value to be used in
   2950                                            RTAG7 macroflow for MPLS ECMP. */
   2951     bcmSwitchMacroFlowEcmpMplsHashMaxOffset = 1409, /* Maximum Offset value to be used in
   2952                                            RTAG7 macroflow for MPLS ecmp. */
   2953     bcmSwitchMacroFlowEcmpMplsHashStrideOffset = 1410, /* Offset increment value to be used in
   2954                                            RTAG7 macroflow for MPLS ecmp. */
   2955     bcmSwitchMacroFlowEcmpOverlayMplsHashConcatEnable = 1411, /* Enable hash concatenation for overlay
   2956                                            MPLS ECMP macroflow. */
   2957     bcmSwitchMacroFlowEcmpOverlayMplsHashMinOffset = 1412, /* Minimum offset value to be used in
   2958                                            RTAG7 macroflow for overlay MPLS
   2959                                            ECMP. */
   2960     bcmSwitchMacroFlowEcmpOverlayMplsHashMaxOffset = 1413, /* Maximum Offset value to be used in
   2961                                            RTAG7 macroflow for overlay MPLS
   2962                                            ECMP. */
   2963     bcmSwitchMacroFlowEcmpOverlayMplsHashStrideOffset = 1414, /* Offset increment value to be used in
   2964                                            RTAG7 macroflow for overlay MPLS
   2965                                            ECMP. */
   2966     bcmSwitchMacroFlowL2EcmpHashConcatEnable = 1415, /* Enable hash concatenation for L2 ECMP
   2967                                            macroflow. */
   2968     bcmSwitchMacroFlowL2EcmpHashMinOffset = 1416, /* Minimum offset value to be used in
   2969                                            RTAG7 macroflow for L2 ECMP. */
   2970     bcmSwitchMacroFlowL2EcmpHashMaxOffset = 1417, /* Maximum offset value to be used in
   2971                                            RTAG7 macroflow for L2 ECMP. */
   2972     bcmSwitchMacroFlowL2EcmpHashStrideOffset = 1418, /* Offset increment value to be used in
   2973                                            RTAG7 macroflow for L2 ECMP. */
   2974     bcmSwitchMacroFlowL2EcmpOverlayHashConcatEnable = 1419, /* Enable hash concatenation for overlay
   2975                                            L2 ECMP macroflow. */
   2976     bcmSwitchMacroFlowL2EcmpOverlayHashMinOffset = 1420, /* Minimum offset value to be used in
   2977                                            RTAG7 macroflow for overlay L2 ECMP. */
   2978     bcmSwitchMacroFlowL2EcmpOverlayHashMaxOffset = 1421, /* Maximum offset value to be used in
   2979                                            RTAG7 macroflow for overlay L2 ECMP. */
   2980     bcmSwitchMacroFlowL2EcmpOverlayHashStrideOffset = 1422, /* Offset increment value to be used in
   2981                                            RTAG7 macroflow for overlay L2 ECMP. */
   2982     bcmSwitchMacroFlowEcmpWeightedOverlayHashConcatEnable = 1423, /* Enable hash concatenation for overlay
   2983                                            weighted ECMP macroflow. */
   2984     bcmSwitchMacroFlowEcmpWeightedOverlayHashMinOffset = 1424, /* Minimum offset value to be used in
   2985                                            RTAG7 macroflow for overlay weighted
   2986                                            ECMP. */
   2987     bcmSwitchMacroFlowEcmpWeightedOverlayHashMaxOffset = 1425, /* Maximum offset value to be used in
   2988                                            RTAG7 macroflow for overlay weighted
   2989                                            ECMP. */
   2990     bcmSwitchMacroFlowEcmpWeightedOverlayHashStrideOffset = 1426, /* Offset increment value to be used in
   2991                                            RTAG7 macroflow for overlay weighted
   2992                                            ECMP. */
   2993     bcmSwitchHashUseFlowSelMplsEcmpOverlay = 1427, /* Enable/Disable flow based hashing for
   2994                                            MPLS Overlay ECMP. */
   2995     bcmSwitchExemScanPeriod = 1428,     /* EXEM flush-machine scan period in
   2996                                            uSec. */
   2997     bcmSwitchVxlanHeaderFlags = 1429,   /* Set the flags value to fill into the
   2998                                            flags field in the VXLAN header
   2999                                            during VXLAN tunnel initiation. */
   3000     bcmSwitchVxlanHeaderMatchFlags = 1430, /* Set the flags value to match against
   3001                                            the flags field in the VXLAN header
   3002                                            during VXLAN tunnel termination. */
   3003     bcmSwitchVxlanHeaderFlagsMask = 1431, /* Set the mask to be applied to the
   3004                                            flags field in the VXLAN header
   3005                                            before matching with
   3006                                            bcmSwitchVxlanHeaderMatchFlags. */
   3007     bcmSwitchVxlanHeaderFlagsMismatchDrop = 1432, /* Drop VXLAN packets if the flags field
   3008                                            in the VXLAN header is not matched
   3009                                            with bcmSwitchVxlanHeaderMatchFlags
   3010                                            after masked by
   3011                                            bcmSwitchVxlanHeaderFlagsMask. */
   3012     bcmSwitchVxlanHeaderReserved1 = 1433, /* Set the value to fill into the
   3013                                            RESERVED_1 field in the VXLAN header
   3014                                            during VXLAN tunnel initiation. */
   3015     bcmSwitchVxlanHeaderReserved2 = 1434, /* Set the value to fill into the
   3016                                            RESERVED_2 field in the VXLAN header
   3017                                            during VXLAN tunnel initiation. */
   3018     bcmSwitchFlexeSarCellMode = 1435,   /* FlexE SAR cell mode, see
   3019                                            bcm_switch_flexe_sar_cell_mode_t */
   3020     bcmSwitchMplsSpecialLabelAutoTerminateDisable = 1436, /* Disable the auto termination for MPLS
   3021                                            special label */
   3022     bcmSwitchExternalTableCapacity = 1437, /* Capacity for external tables */
   3023     bcmSwitchExemFlushProfilePayloadOffset = 1438, /* EXEM flush profile payload offset */
   3024     bcmSwitchNtpL4DestPort = 1439,      /* UDP destination port number to
   3025                                            identify NTP packets. */
   3026     bcmSwitchNtpResidenceTimeUpdate = 1440, /* Enable to update the timestamp field
   3027                                            in NTP packet based on the internal
   3028                                            residence time. */
   3029     bcmSwitchV6L3LocalLinkSrcDisposition = 1441, /* Select drop behavior for packets with
   3030                                            IPv6 link-local addresses */
   3031     bcmSwitchMirrorAllowDuplicateMirroredPackets = 1442, /* Enable to allow duplicate mirror
   3032                                            packets with the same encapsulation
   3033                                            format sent to the same destination
   3034                                            port. */
   3035     bcmSwitchEgressStgCheckIngressEnable = 1443, /* Enable egress port's spanning tree
   3036                                            check before enqueuing the packet to
   3037                                            the MMU for L2 forwarding. */
   3038     bcmSwitchVxlanIPv4TunnelVlanTranslateEnable = 1444, /* Requires BROADCOM_PREMIUM license */
   3039     bcmSwitchVxlanIPv6TunnelVlanTranslateEnable = 1445, /* Requires BROADCOM_PREMIUM license */
   3040     bcmSwitchEgressFlexCounterPresel = 1446, /* Pre-select to count mirror packets or
   3041                                            copy to CPU packets in egress flex
   3042                                            counter. */
   3043     bcmSwitch__Count = 1447             /* Must be last.  Not a usable value. */
   3044 } bcm_switch_control_t;
   3045 
   3046 #define BCM_SWITCH_CONTROL_STR \
   3047     "HgHdrErrToCpu", \
   3048     "ClassTagPacketsToCpu", \
   3049     "IpmcTunnelToCpu", \
   3050     "StationMoveOverLearnLimitToCpu", \
   3051     "McastUnknownErrToCpu", \
   3052     "LearnLimitPriority", \
   3053     "ControlOpcodePriority", \
   3054     "CpuProtoBpduPriority", \
   3055     "CpuProtoArpPriority", \
   3056     "CpuProtoIgmpPriority", \
   3057     "CpuProtoDhcpPriority", \
   3058     "CpuProtoIpmcReservedPriority", \
   3059     "CpuProtoIpOptionsPriority", \
   3060     "CpuProtoExceptionsPriority", \
   3061     "CpuProtocolPrio", \
   3062     "CpuUnknownPrio", \
   3063     "CpuSamplePrio", \
   3064     "CpuDefaultPrio", \
   3065     "L2StaticMoveToCpu", \
   3066     "UnknownIpmcToCpu", \
   3067     "UnknownMcastToCpu", \
   3068     "UnknownUcastToCpu", \
   3069     "NonIpL3ErrToCpu", \
   3070     "L3HeaderErrToCpu", \
   3071     "UnknownVlanToCpu", \
   3072     "UnknownL3SrcToCpu", \
   3073     "UnknownL3DestToCpu", \
   3074     "IpmcPortMissToCpu", \
   3075     "IpmcErrorToCpu", \
   3076     "VCLabelMissToCpu", \
   3077     "SourceRouteToCpu", \
   3078     "SampleIngressRandomSeed", \
   3079     "SampleEgressRandomSeed", \
   3080     "CpuFpCopyPrio", \
   3081     "CpuIcmpRedirectPrio", \
   3082     "CpuMtuFailPrio", \
   3083     "CpuMirrorPrio", \
   3084     "CpuLookupFpCopyPrio", \
   3085     "L2NonStaticMoveToCpu", \
   3086     "V6L3ErrToCpu", \
   3087     "V6L3DstMissToCpu", \
   3088     "V6L3LocalLinkDrop", \
   3089     "V4L3ErrToCpu", \
   3090     "V4L3DstMissToCpu", \
   3091     "TunnelErrToCpu", \
   3092     "MartianAddrToCpu", \
   3093     "MartianAddr", \
   3094     "L3UcTtlErrToCpu", \
   3095     "L3SlowpathToCpu", \
   3096     "IpmcTtlErrToCpu", \
   3097     "DosAttackToCpu", \
   3098     "DosAttackSipEqualDip", \
   3099     "DosAttackMinTcpHdrSize", \
   3100     "DosAttackV4FirstFrag", \
   3101     "DosAttackTcpFlags", \
   3102     "DosAttackL4Port", \
   3103     "DosAttackTcpFrag", \
   3104     "DosAttackIcmp", \
   3105     "DosAttackIcmpV4", \
   3106     "DosAttackIcmpV6", \
   3107     "DosAttackIcmpPktOversize", \
   3108     "DosAttackMACSAEqualMACDA", \
   3109     "DosAttackIcmpV6PingSize", \
   3110     "DosAttackIcmpFragments", \
   3111     "DosAttackTcpOffset", \
   3112     "DosAttackUdpPortsEqual", \
   3113     "DosAttackTcpPortsEqual", \
   3114     "DosAttackTcpFlagsSF", \
   3115     "DosAttackTcpFlagsFUP", \
   3116     "DosAttackTcpHdrPartial", \
   3117     "DosAttackPingFlood", \
   3118     "DosAttackSynFlood", \
   3119     "DosAttackTcpSmurf", \
   3120     "DosAttackTcpXMas", \
   3121     "DosAttackL3Header", \
   3122     "IcmpRedirectToCpu", \
   3123     "MplsSequenceErrToCpu", \
   3124     "MplsLabelMissToCpu", \
   3125     "MplsTtlErrToCpu", \
   3126     "MplsInvalidL3PayloadToCpu", \
   3127     "MplsInvalidActionToCpu", \
   3128     "SharedVlanMismatchToCpu", \
   3129     "L3SrcUrpfErrToCpu", \
   3130     "GreKeyToVlan", \
   3131     "ArpReplyToCpu", \
   3132     "ArpReplyDrop", \
   3133     "ArpRequestToCpu", \
   3134     "ArpRequestDrop", \
   3135     "ArpReplyMyStationL2ToCPU", \
   3136     "NdPktToCpu", \
   3137     "NdPktDrop", \
   3138     "McastFloodBlocking", \
   3139     "IgmpPktToCpu", \
   3140     "IgmpPktDrop", \
   3141     "DhcpPktToCpu", \
   3142     "DhcpPktDrop", \
   3143     "MldPktToCpu", \
   3144     "MldPktDrop", \
   3145     "V4ResvdMcPktToCpu", \
   3146     "V4ResvdMcPktDrop", \
   3147     "V4ResvdMcPktFlood", \
   3148     "V6ResvdMcPktToCpu", \
   3149     "V6ResvdMcPktDrop", \
   3150     "V6ResvdMcPktFlood", \
   3151     "IgmpReportLeaveToCpu", \
   3152     "IgmpReportLeaveDrop", \
   3153     "IgmpReportLeaveFlood", \
   3154     "IgmpQueryToCpu", \
   3155     "IgmpQueryDrop", \
   3156     "IgmpQueryFlood", \
   3157     "IgmpUnknownToCpu", \
   3158     "IgmpUnknownDrop", \
   3159     "IgmpUnknownFlood", \
   3160     "MldReportDoneToCpu", \
   3161     "MldReportDoneDrop", \
   3162     "MldReportDoneFlood", \
   3163     "MldQueryToCpu", \
   3164     "MldQueryDrop", \
   3165     "MldQueryFlood", \
   3166     "IpmcV4RouterDiscoveryToCpu", \
   3167     "IpmcV4RouterDiscoveryDrop", \
   3168     "IpmcV4RouterDiscoveryFlood", \
   3169     "IpmcV6RouterDiscoveryToCpu", \
   3170     "IpmcV6RouterDiscoveryDrop", \
   3171     "IpmcV6RouterDiscoveryFlood", \
   3172     "DirectedMirroring", \
   3173     "PktAge", \
   3174     "McastFloodDefault", \
   3175     "ParityErrorToCpu", \
   3176     "L3MtuFailToCpu", \
   3177     "MeterAdjust", \
   3178     "CounterAdjust", \
   3179     "MeterAdjustInterframeGap", \
   3180     "HashL2", \
   3181     "HashL3", \
   3182     "HashMultipath", \
   3183     "HashControl", \
   3184     "FieldMultipathHashSelect", \
   3185     "FieldMultipathHashSeed", \
   3186     "MirrorStackMode", \
   3187     "MirrorSrcModCheck", \
   3188     "MirrorUnmarked", \
   3189     "DestPortHGTrunk", \
   3190     "ColorSelect", \
   3191     "ModuleLoopback", \
   3192     "SrcModBlockMirrorCopy", \
   3193     "SrcModBlockMirrorOnly", \
   3194     "HashSeed0", \
   3195     "HashSeed1", \
   3196     "HashField0PreProcessEnable", \
   3197     "HashField1PreProcessEnable", \
   3198     "HashField0Config", \
   3199     "HashField0Config1", \
   3200     "HashField1Config", \
   3201     "HashField1Config1", \
   3202     "MacroFlowHashFieldConfig", \
   3203     "HashSelectControl", \
   3204     "HashIP4Field0", \
   3205     "HashIP4Field1", \
   3206     "HashIP4TcpUdpField0", \
   3207     "HashIP4TcpUdpField1", \
   3208     "HashIP4TcpUdpPortsEqualField0", \
   3209     "HashIP4TcpUdpPortsEqualField1", \
   3210     "HashIP6Field0", \
   3211     "HashIP6Field1", \
   3212     "HashIP6TcpUdpField0", \
   3213     "HashIP6TcpUdpField1", \
   3214     "HashIP6TcpUdpPortsEqualField0", \
   3215     "HashIP6TcpUdpPortsEqualField1", \
   3216     "HashL2Field0", \
   3217     "HashL2Field1", \
   3218     "HashMPLSField0", \
   3219     "HashMPLSField1", \
   3220     "HashFCOEField0", \
   3221     "HashFCOEField1", \
   3222     "HashL2TrillField0", \
   3223     "HashL2TrillField1", \
   3224     "HashL3TrillField0", \
   3225     "HashL3TrillField1", \
   3226     "HashTrillTunnelField0", \
   3227     "HashTrillTunnelField1", \
   3228     "HashHG2UnknownField0", \
   3229     "HashHG2UnknownField1", \
   3230     "HashField0OverlayCntagRpidEnable", \
   3231     "HashField1OverlayCntagRpidEnable", \
   3232     "HashHg2PktFieldsEnable", \
   3233     "HashField0Ip6FlowLabel", \
   3234     "HashField1Ip6FlowLabel", \
   3235     "HashUseFlowSelTrunkUc", \
   3236     "HashUseFlowSelEcmp", \
   3237     "TrunkHashSet0UnicastOffset", \
   3238     "TrunkHashSet1UnicastOffset", \
   3239     "TrunkHashSet0NonUnicastOffset", \
   3240     "TrunkHashSet1NonUnicastOffset", \
   3241     "TrunkFailoverHashOffset", \
   3242     "FabricTrunkHashSet0UnicastOffset", \
   3243     "FabricTrunkHashSet1UnicastOffset", \
   3244     "FabricTrunkHashSet0NonUnicastOffset", \
   3245     "FabricTrunkHashSet1NonUnicastOffset", \
   3246     "FabricTrunkFailoverHashOffset", \
   3247     "FabricTrunkDynamicHashOffset", \
   3248     "LoadBalanceHashSet0UnicastOffset", \
   3249     "LoadBalanceHashSet1UnicastOffset", \
   3250     "LoadBalanceHashSet0NonUnicastOffset", \
   3251     "LoadBalanceHashSet1NonUnicastOffset", \
   3252     "MacroFlowHashMinOffset", \
   3253     "MacroFlowHashMaxOffset", \
   3254     "MacroFlowHashStrideOffset", \
   3255     "UniformUcastTrunkDistribution", \
   3256     "UniformFabricTrunkDistribution", \
   3257     "ECMPHashSet0Offset", \
   3258     "ECMPHashSet1Offset", \
   3259     "CpuToCpuEnable", \
   3260     "IgmpUcastEnable", \
   3261     "MldUcastEnable", \
   3262     "IgmpReservedMcastEnable", \
   3263     "MldReservedMcastEnable", \
   3264     "MldDirectAttachedOnly", \
   3265     "PortEgressBlockL2", \
   3266     "PortEgressBlockL3", \
   3267     "BpduInvalidVlanDrop", \
   3268     "MirrorInvalidVlanDrop", \
   3269     "MirrorPktChecksEnable", \
   3270     "RemoteLearnTrust", \
   3271     "SourceMacZeroDrop", \
   3272     "IpmcGroupMtu", \
   3273     "ModuleType", \
   3274     "Deprecated227", \
   3275     "Deprecated228", \
   3276     "Deprecated229", \
   3277     "L3EgressMode", \
   3278     "L3DefipMultipathCountUpdate", \
   3279     "L3IngressMode", \
   3280     "L3HostAsRouteReturnValue", \
   3281     "SourceModBlockUcast", \
   3282     "SourceModBlockControlOpcode", \
   3283     "EgressBlockUcast", \
   3284     "AlternateStoreForward", \
   3285     "WarmBoot", \
   3286     "StableSelect", \
   3287     "StableSize", \
   3288     "StableUsed", \
   3289     "StableConsistent", \
   3290     "ControlSync", \
   3291     "ControlAutoSync", \
   3292     "CallbackAbortOnError", \
   3293     "UnknownIpmcAsMcast", \
   3294     "TunnelUnknownIpmcDrop", \
   3295     "DhcpLearn", \
   3296     "IpmcTtl1ToCpu", \
   3297     "L3UcastTtl1ToCpu", \
   3298     "DosAttackFlagZeroSeqZero", \
   3299     "HgHdrExtLengthEnable", \
   3300     "DosAttackSynFrag", \
   3301     "Ip4McastL2DestCheck", \
   3302     "Ip6McastL2DestCheck", \
   3303     "L3InterfaceUrpfEnable", \
   3304     "L3TunnelUrpfMode", \
   3305     "L3TunnelUrpfDefaultRoute", \
   3306     "L3UrpfFailToCpu", \
   3307     "L3UrpfRouteEnable", \
   3308     "L3UrpfRouteEnableExternal", \
   3309     "L3UrpfMode", \
   3310     "L3UrpfDefaultRoute", \
   3311     "IngressRateLimitIncludeIFG", \
   3312     "RateLimitLinear", \
   3313     "HashL2Dual", \
   3314     "HashL3Dual", \
   3315     "HashDualMoveDepth", \
   3316     "HashDualMoveDepthL2", \
   3317     "HashDualMoveDepthL3", \
   3318     "HashDualMoveDepthVlan", \
   3319     "HashDualMoveDepthMpls", \
   3320     "HashDualMoveDepthEgressVlan", \
   3321     "HashDualMoveDepthWlanPort", \
   3322     "HashDualMoveDepthWlanClient", \
   3323     "HashMultiMoveDepth", \
   3324     "HashMultiMoveDepthL2", \
   3325     "HashMultiMoveDepthL3", \
   3326     "HashMultiMoveDepthVlan", \
   3327     "HashMultiMoveDepthMpls", \
   3328     "HashMultiMoveDepthEgressVlan", \
   3329     "HashL2DualLeastFull", \
   3330     "HashL3DualLeastFull", \
   3331     "HashMPLSDualLeastFull", \
   3332     "SharedVlanEnable", \
   3333     "SharedVlanL2McastEnable", \
   3334     "IpmcReplicationSharing", \
   3335     "IpmcReplicationAvailabilityThreshold", \
   3336     "VrfMax", \
   3337     "FailoverStackTrunk", \
   3338     "FailoverEtherTrunk", \
   3339     "ClassBasedMoveFailPktToCpu", \
   3340     "ClassBasedMoveFailPktDrop", \
   3341     "HgHdrMcastFlood", \
   3342     "HgHdrMcastFloodOverride", \
   3343     "HgHdrIpMcastFlood", \
   3344     "HgHdrIpMcastFloodOverride", \
   3345     "STPBlockedFieldBypass", \
   3346     "L2PortBlocking", \
   3347     "HashIpfixIngress", \
   3348     "HashIpfixIngressDual", \
   3349     "HashIpfixEgress", \
   3350     "HashIpfixEgressDual", \
   3351     "HashMPLS", \
   3352     "HashMPLSDual", \
   3353     "ForceForwardFabricTrunk", \
   3354     "UseGport", \
   3355     "HgHdrMcastVlanRange", \
   3356     "HgHdrMcastL2Range", \
   3357     "HgHdrMcastL3Range", \
   3358     "McastL2Range", \
   3359     "McastL3Range", \
   3360     "HashWlanPort", \
   3361     "HashWlanPortDual", \
   3362     "HashWlanClient", \
   3363     "HashWlanClientDual", \
   3364     "WlanClientAuthorizeAll", \
   3365     "WlanClientUnauthToCpu", \
   3366     "WlanClientRoamedOutErrorToCpu", \
   3367     "WlanClientSrcMacMissToCpu", \
   3368     "WlanClientDstMacMissToCpu", \
   3369     "OamHeaderErrorToCpu", \
   3370     "OamUnknownVersionToCpu", \
   3371     "OamUnknownVersionDrop", \
   3372     "OamUnexpectedPktToCpu", \
   3373     "OamCcmToCpu", \
   3374     "OamXconCcmToCpu", \
   3375     "OamXconOtherToCpu", \
   3376     "L3SrcBindFailToCpu", \
   3377     "TunnelIp4IdShared", \
   3378     "HashRegexAction", \
   3379     "HashRegexActionDual", \
   3380     "Deprecated333", \
   3381     "CpuCopyDestination", \
   3382     "CpuProtoTimeSyncPrio", \
   3383     "CpuProtoMmrpPrio", \
   3384     "CpuProtoSrpPrio", \
   3385     "TimeSyncPktToCpu", \
   3386     "TimeSyncPktDrop", \
   3387     "TimeSyncPktFlood", \
   3388     "MmrpPktToCpu", \
   3389     "MmrpPktDrop", \
   3390     "MmrpPktFlood", \
   3391     "SrpPktToCpu", \
   3392     "SrpPktDrop", \
   3393     "SrpPktFlood", \
   3394     "SRPEthertype", \
   3395     "MMRPEthertype", \
   3396     "TimeSyncEthertype", \
   3397     "FcoeEtherType", \
   3398     "SRPDestMacOui", \
   3399     "MMRPDestMacOui", \
   3400     "TimeSyncDestMacOui", \
   3401     "SRPDestMacNonOui", \
   3402     "MMRPDestMacNonOui", \
   3403     "TimeSyncDestMacNonOui", \
   3404     "TimeSyncMessageTypeBitmap", \
   3405     "TimeSyncClassAPktPrio", \
   3406     "TimeSyncClassBPktPrio", \
   3407     "TimeSyncClassAExeptionPktPrio", \
   3408     "TimeSyncClassBExeptionPktPrio", \
   3409     "L2McastAllRouterPortsAddEnable", \
   3410     "BypassMode", \
   3411     "IpmcSameVlanL3Route", \
   3412     "Deprecated365", \
   3413     "FieldCache", \
   3414     "FieldCommit", \
   3415     "IpmcCache", \
   3416     "IpmcCommit", \
   3417     "L2Cache", \
   3418     "L2Commit", \
   3419     "L2AgeDelete", \
   3420     "L2AgeScan", \
   3421     "L3HostCache", \
   3422     "L3HostCommit", \
   3423     "L3RouteCache", \
   3424     "L3RouteCommit", \
   3425     "L2InvalidCtlToCpu", \
   3426     "InvalidGreToCpu", \
   3427     "HashL2MPLSField0", \
   3428     "HashL2MPLSField1", \
   3429     "HashL3MPLSField0", \
   3430     "HashL3MPLSField1", \
   3431     "HashMPLSTunnelField0", \
   3432     "HashMPLSTunnelField1", \
   3433     "HashMIMTunnelField0", \
   3434     "HashMIMTunnelField1", \
   3435     "HashMIMField0", \
   3436     "HashMIMField1", \
   3437     "StgInvalidToCpu", \
   3438     "VlanTranslateEgressMissToCpu", \
   3439     "L3PktErrToCpu", \
   3440     "MtuFailureToCpu", \
   3441     "SrcKnockoutToCpu", \
   3442     "WlanTunnelMismatchToCpu", \
   3443     "WlanTunnelMismatchDrop", \
   3444     "WlanPortMissToCpu", \
   3445     "UnknownVlanToCpuCosq", \
   3446     "StgInvalidToCpuCosq", \
   3447     "VlanTranslateEgressMissToCpuCosq", \
   3448     "TunnelErrToCpuCosq", \
   3449     "L3HeaderErrToCpuCosq", \
   3450     "L3PktErrToCpuCosq", \
   3451     "IpmcTtlErrToCpuCosq", \
   3452     "MtuFailureToCpuCosq", \
   3453     "HgHdrErrToCpuCosq", \
   3454     "SrcKnockoutToCpuCosq", \
   3455     "WlanTunnelMismatchToCpuCosq", \
   3456     "WlanPortMissToCpuCosq", \
   3457     "IpfixRateViolationDataInsert", \
   3458     "IpfixRateViolationPersistent", \
   3459     "HashVlanTranslate", \
   3460     "HashVlanTranslateDual", \
   3461     "HashEgressVlanTranslate", \
   3462     "HashEgressVlanTranslateDual", \
   3463     "LayeredQoSResolution", \
   3464     "CustomerQueuing", \
   3465     "CosqStatThreshold", \
   3466     "CosqStatInterval", \
   3467     "EncapErrorToCpu", \
   3468     "MplsPortIndependentLowerRange1", \
   3469     "MplsPortIndependentUpperRange1", \
   3470     "MplsPortIndependentLowerRange2", \
   3471     "MplsPortIndependentUpperRange2", \
   3472     "MirrorEgressTrueColorSelect", \
   3473     "MirrorEgressTruePriority", \
   3474     "PFCClass0Queue", \
   3475     "PFCClass1Queue", \
   3476     "PFCClass2Queue", \
   3477     "PFCClass3Queue", \
   3478     "PFCClass4Queue", \
   3479     "PFCClass5Queue", \
   3480     "PFCClass6Queue", \
   3481     "PFCClass7Queue", \
   3482     "PFCClass0McastQueue", \
   3483     "PFCClass1McastQueue", \
   3484     "PFCClass2McastQueue", \
   3485     "PFCClass3McastQueue", \
   3486     "PFCClass4McastQueue", \
   3487     "PFCClass5McastQueue", \
   3488     "PFCClass6McastQueue", \
   3489     "PFCClass7McastQueue", \
   3490     "PFCClass0DestmodQueue", \
   3491     "PFCClass1DestmodQueue", \
   3492     "PFCClass2DestmodQueue", \
   3493     "PFCClass3DestmodQueue", \
   3494     "PFCClass4DestmodQueue", \
   3495     "PFCClass5DestmodQueue", \
   3496     "PFCClass6DestmodQueue", \
   3497     "PFCClass7DestmodQueue", \
   3498     "PFCQueue0Class", \
   3499     "PFCQueue1Class", \
   3500     "PFCQueue2Class", \
   3501     "PFCQueue3Class", \
   3502     "PFCQueue4Class", \
   3503     "PFCQueue5Class", \
   3504     "PFCQueue6Class", \
   3505     "PFCQueue7Class", \
   3506     "ReserveLowL3InterfaceId", \
   3507     "ReserveHighL3InterfaceId", \
   3508     "ReserveLowL3EgressId", \
   3509     "ReserveHighL3EgressId", \
   3510     "ReserveLowVlanPort", \
   3511     "ReserveHighVlanPort", \
   3512     "ReserveLowMplsPort", \
   3513     "ReserveHighMplsPort", \
   3514     "ReserveLowMimPort", \
   3515     "ReserveHighMimPort", \
   3516     "ReserveLowEncap", \
   3517     "ReserveHighEncap", \
   3518     "ReserveLowL2Egress", \
   3519     "ReserveHighL2Egress", \
   3520     "ReserveLowVpn", \
   3521     "ReserveHighVpn", \
   3522     "ReserveLowFailoverId", \
   3523     "ReserveHighFailoverId", \
   3524     "ReserveLowOamEndPointId", \
   3525     "ReserveHighOamEndPointId", \
   3526     "ReserveLowOamGroupId", \
   3527     "ReserveHighOamGroupId", \
   3528     "SnapNonZeroOui", \
   3529     "SynchronousPortClockSource", \
   3530     "SynchronousPortClockSourceBkup", \
   3531     "SynchronousPortClockSourceDivCtrl", \
   3532     "SynchronousPortClockSourceBkupDivCtrl", \
   3533     "L2HitClear", \
   3534     "L2SrcHitClear", \
   3535     "L2DstHitClear", \
   3536     "L3HostHitClear", \
   3537     "L3RouteHitClear", \
   3538     "IpmcSameVlanPruning", \
   3539     "Deprecated492", \
   3540     "Deprecated493", \
   3541     "L2McIdxRetType", \
   3542     "L3McIdxRetType", \
   3543     "Deprecated496", \
   3544     "Deprecated497", \
   3545     "Deprecated498", \
   3546     "Deprecated499", \
   3547     "Deprecated500", \
   3548     "ArpDhcpToCpu", \
   3549     "IgmpMldToCpu", \
   3550     "LinkDownInfoSkip", \
   3551     "Deprecated504", \
   3552     "L2SourceDiscardMoveToCpu", \
   3553     "NivEthertype", \
   3554     "NivPrioDropToCpu", \
   3555     "NivInterfaceMissToCpu", \
   3556     "NivRpfFailToCpu", \
   3557     "NivTagInvalidToCpu", \
   3558     "NivTagDropToCpu", \
   3559     "NivUntagDropToCpu", \
   3560     "EEEPipelineTime", \
   3561     "EEEGlobalCongestionThreshold", \
   3562     "Deprecated515", \
   3563     "Deprecated516", \
   3564     "Deprecated517", \
   3565     "Deprecated518", \
   3566     "Deprecated519", \
   3567     "Deprecated520", \
   3568     "Deprecated521", \
   3569     "RemoteCpuSchanEnable", \
   3570     "RemoteCpuFromCpuEnable", \
   3571     "RemoteCpuToCpuEnable", \
   3572     "RemoteCpuCmicEnable", \
   3573     "RemoteCpuMatchLocalMac", \
   3574     "RemoteCpuMatchVlan", \
   3575     "RemoteCpuVlan", \
   3576     "RemoteCpuTpid", \
   3577     "RemoteCpuSignature", \
   3578     "RemoteCpuForceScheduling", \
   3579     "RemoteCpuToCpuDestPortAllReasons", \
   3580     "RemoteCpuToCpuDestMacAllReasons", \
   3581     "RxRedirectPktReasons", \
   3582     "RxRedirectPktReasonsExtended", \
   3583     "RxRedirectHigigPktReasons", \
   3584     "RxRedirectHigigPktReasonsExtended", \
   3585     "RxRedirectTruncatedPktReasons", \
   3586     "RxRedirectTruncatedPktReasonsExtended", \
   3587     "RxRedirectPktCos", \
   3588     "RxRedirectPktCosExtended", \
   3589     "RemoteCpuLocalMacOui", \
   3590     "RemoteCpuLocalMacNonOui", \
   3591     "RemoteCpuDestMacOui", \
   3592     "RemoteCpuDestMacNonOui", \
   3593     "RemoteCpuEthertype", \
   3594     "RemoteCpuDestPort", \
   3595     "RemoteCpuHigigDestPort", \
   3596     "RemoteCpuTcMappingMacOui", \
   3597     "RemoteCpuTcMappingMacNonOui", \
   3598     "RemoteCpuTcMappingEthertype", \
   3599     "ServiceTpidReplace", \
   3600     "EgressPktAge", \
   3601     "FabricTrunkDynamicSampleRate", \
   3602     "FabricTrunkDynamicEgressBytesExponent", \
   3603     "FabricTrunkDynamicQueuedBytesExponent", \
   3604     "FabricTrunkDynamicEgressBytesDecreaseReset", \
   3605     "FabricTrunkDynamicQueuedBytesDecreaseReset", \
   3606     "FabricTrunkDynamicEgressBytesMinThreshold", \
   3607     "FabricTrunkDynamicEgressBytesMaxThreshold", \
   3608     "FabricTrunkDynamicQueuedBytesMinThreshold", \
   3609     "FabricTrunkDynamicQueuedBytesMaxThreshold", \
   3610     "MacLowPower", \
   3611     "CongestionCntag", \
   3612     "CongestionCntagEthertype", \
   3613     "CongestionCnm", \
   3614     "CongestionCnmEthertype", \
   3615     "CongestionNotificationIdHigh", \
   3616     "CongestionNotificationIdLow", \
   3617     "CongestionNotificationIdQueue", \
   3618     "CongestionUseOuterTpid", \
   3619     "CongestionUseOuterVlan", \
   3620     "CongestionUseOuterPktPri", \
   3621     "CongestionUseOuterCfi", \
   3622     "CongestionUseInnerPktPri", \
   3623     "CongestionUseInnerCfi", \
   3624     "CongestionMissingCntag", \
   3625     "CongestionExcludeReplications", \
   3626     "MiMDefaultSVP", \
   3627     "MiMDefaultSVPValue", \
   3628     "EgressDroppedReportZeroLength", \
   3629     "LoadBalanceHashSelect", \
   3630     "TrillEthertype", \
   3631     "TrillISISEthertype", \
   3632     "TrillISISDestMacOui", \
   3633     "TrillBroadcastDestMacOui", \
   3634     "TrillEndStationDestMacOui", \
   3635     "TrillISISDestMacNonOui", \
   3636     "TrillBroadcastDestMacNonOui", \
   3637     "TrillEndStationDestMacNonOui", \
   3638     "TrillMinTtl", \
   3639     "TrillTtlCheckEnable", \
   3640     "TrillTtlErrToCpu", \
   3641     "TrillHeaderErrToCpu", \
   3642     "TrillMismatchToCpu", \
   3643     "TrillNameMissToCpu", \
   3644     "TrillRpfFailToCpu", \
   3645     "TrillOptionsToCpu", \
   3646     "TrillNameErrDrop", \
   3647     "TrillRpfFailDrop", \
   3648     "TrillHeaderVersionErrDrop", \
   3649     "TrillNameMissDrop", \
   3650     "TrillAdjacencyFailDrop", \
   3651     "TrillHeaderErrDrop", \
   3652     "UdpPktActionEnable", \
   3653     "UdpPktRedirectPbmp", \
   3654     "UdpPktCopyToPbmp", \
   3655     "UdpPktNewTc", \
   3656     "L3TunnelIpV4ModeOnly", \
   3657     "L3SrcHitEnable", \
   3658     "L2DstHitEnable", \
   3659     "WESPProtocolEnable", \
   3660     "WESPProtocol", \
   3661     "Deprecated614", \
   3662     "Ip6CompressEnable", \
   3663     "Ip6CompressDefaultOffset", \
   3664     "StableSaveLongIds", \
   3665     "GportAnyDefaultL2Learn", \
   3666     "GportAnyDefaultL2Move", \
   3667     "IngParseL2TunnelTermDipSipSelect", \
   3668     "IngParseL3L4IPv4", \
   3669     "IngParseL3L4IPv6", \
   3670     "L2LearnMode", \
   3671     "SetWredJitterMask", \
   3672     "SetMplsEntropyLabelTtl", \
   3673     "SetMplsEntropyLabelPri", \
   3674     "SetMplsEntropyLabelOffset", \
   3675     "PonOamFailsafeState", \
   3676     "EquipmentAlarmState", \
   3677     "PowerAlarmState", \
   3678     "BatteryMissingAlarmState", \
   3679     "BatteryFailureAlarmState", \
   3680     "BatteryVoltLowAlarmState", \
   3681     "BatteryVoltLowAlarmReportThreshold", \
   3682     "BatteryVoltLowAlarmClearThreshold", \
   3683     "PhysicalIntrusionAlarmState", \
   3684     "SelfTestFailureAlarmState", \
   3685     "PonIfSwitchAlarmState", \
   3686     "L3IngressInterfaceMapSet", \
   3687     "MplsPWControlWordToCpu", \
   3688     "MplsPWControlTypeToCpu", \
   3689     "MplsPWControlWord", \
   3690     "MplsPWCountPktsAll", \
   3691     "EntropyHashSet0Offset", \
   3692     "EntropyHashSet1Offset", \
   3693     "ArpRequestMyStationIPToCPU", \
   3694     "ArpRequestMyStationIPDrop", \
   3695     "ArpRequestMyStationIPFwd", \
   3696     "L3SIPMoveToCpu", \
   3697     "TrunkHashSrcPortEnable", \
   3698     "TrunkHashOffset", \
   3699     "TrunkHashMPLSLabelBOS", \
   3700     "TrunkHashMPLSPWControlWord", \
   3701     "TrunkHashSeed", \
   3702     "TrunkHashConfig", \
   3703     "TrunkHashPktHeaderCount", \
   3704     "TrunkHashPktHeaderSelect", \
   3705     "ECMPHashSrcPortEnable", \
   3706     "ECMPHashOffset", \
   3707     "ECMPHashSeed", \
   3708     "ECMPHashConfig", \
   3709     "ECMPHashPktHeaderCount", \
   3710     "TrunkDynamicHashOffset", \
   3711     "TrunkDynamicSampleRate", \
   3712     "TrunkDynamicAccountingSelect", \
   3713     "TrunkDynamicEgressBytesExponent", \
   3714     "TrunkDynamicQueuedBytesExponent", \
   3715     "TrunkDynamicEgressBytesDecreaseReset", \
   3716     "TrunkDynamicQueuedBytesDecreaseReset", \
   3717     "TrunkDynamicEgressBytesMinThreshold", \
   3718     "TrunkDynamicEgressBytesMaxThreshold", \
   3719     "TrunkDynamicQueuedBytesMinThreshold", \
   3720     "TrunkDynamicQueuedBytesMaxThreshold", \
   3721     "TrunkDynamicExpectedLoadMinThreshold", \
   3722     "TrunkDynamicExpectedLoadMaxThreshold", \
   3723     "TrunkDynamicImbalanceMinThreshold", \
   3724     "TrunkDynamicImbalanceMaxThreshold", \
   3725     "EcmpDynamicHashOffset", \
   3726     "EcmpDynamicSampleRate", \
   3727     "EcmpDynamicAccountingSelect", \
   3728     "EcmpDynamicEgressBytesExponent", \
   3729     "EcmpDynamicQueuedBytesExponent", \
   3730     "EcmpDynamicEgressBytesDecreaseReset", \
   3731     "EcmpDynamicQueuedBytesDecreaseReset", \
   3732     "EcmpDynamicEgressBytesMinThreshold", \
   3733     "EcmpDynamicEgressBytesMaxThreshold", \
   3734     "EcmpDynamicQueuedBytesMinThreshold", \
   3735     "EcmpDynamicQueuedBytesMaxThreshold", \
   3736     "EcmpDynamicExpectedLoadMinThreshold", \
   3737     "EcmpDynamicExpectedLoadMaxThreshold", \
   3738     "EcmpDynamicImbalanceMinThreshold", \
   3739     "EcmpDynamicImbalanceMaxThreshold", \
   3740     "FailoverDropToCpu", \
   3741     "MplsReservedEntropyLabelToCpu", \
   3742     "L3SrcBindMissToCpu", \
   3743     "MplsGalAlertLabelToCpu", \
   3744     "MplsRalAlertLabelToCpu", \
   3745     "MplsIllegalReservedLabelToCpu", \
   3746     "MplsLookupsExceededToCpu", \
   3747     "MplsUnknownAchTypeToCpu", \
   3748     "MplsUnknownAchVersionToCpu", \
   3749     "TimesyncIngressVersion", \
   3750     "TimesyncEgressVersion", \
   3751     "TimesyncUnknownVersionToCpu", \
   3752     "CongestionCnmToCpu", \
   3753     "bcmSwtichCongestionCnmProxyErrorToCpu", \
   3754     "bcmSwtichCongestionCnmProxyToCpu", \
   3755     "WlanTunnelErrorDrop", \
   3756     "MplsReservedEntropyLabelDrop", \
   3757     "RemoteProtectionTrust", \
   3758     "L2GreProtocolType", \
   3759     "L2GreVpnIdSizeSet", \
   3760     "L2GreVpnIdMissToCpu", \
   3761     "L2GreTunnelMissToCpu", \
   3762     "MultipathCompressBuffer", \
   3763     "MultipathCompress", \
   3764     "BstEnable", \
   3765     "BstTrackingMode", \
   3766     "L3McastL2", \
   3767     "MiMTeBvidLowerRange", \
   3768     "MiMTeBvidUpperRange", \
   3769     "RemoteEncapsulationMode", \
   3770     "FabricTrunkAutoIncludeDisable", \
   3771     "TrunkHashNormalize", \
   3772     "MplsLabelCache", \
   3773     "MplsLabelCommit", \
   3774     "TrillHopCount", \
   3775     "PolicerFairness", \
   3776     "VxlanUdpDestPortSet", \
   3777     "VxlanEntropyEnable", \
   3778     "VxlanVnIdMissToCpu", \
   3779     "VxlanTunnelMissToCpu", \
   3780     "ECMPVxlanHashOffset", \
   3781     "ECMPL2GreHashOffset", \
   3782     "ECMPTrillHashOffset", \
   3783     "ECMPMplsHashOffset", \
   3784     "VirtualPortDynamicHashOffset", \
   3785     "TMDomain", \
   3786     "PortHeaderType", \
   3787     "L2OverflowEvent", \
   3788     "LinkProvClear", \
   3789     "EtagEthertype", \
   3790     "EtagInvalidToCpu", \
   3791     "EtagDropToCpu", \
   3792     "NonEtagDropToCpu", \
   3793     "ExtenderRpfFailToCpu", \
   3794     "ExtenderInterfaceMissToCpu", \
   3795     "PrioDropToCpu", \
   3796     "ExtenderMulticastLowerThreshold", \
   3797     "ExtenderMulticastHigherThreshold", \
   3798     "L3NATEnable", \
   3799     "L3DNATHairpinToCpu", \
   3800     "L3DNATMissToCpu", \
   3801     "L3SNATMissToCpu", \
   3802     "L3NatOtherToCpu", \
   3803     "L3NatRealmCrossingIcmpToCpu", \
   3804     "L3NatFragmentsToCpu", \
   3805     "HashL3DNATPool", \
   3806     "HashL3DNATPoolDual", \
   3807     "McastTrunkHashMin", \
   3808     "McastTrunkHashMax", \
   3809     "Ip4Compress", \
   3810     "EcmpResilientHashOffset", \
   3811     "TrunkResilientHashOffset", \
   3812     "FabricTrunkResilientHashOffset", \
   3813     "ShaperAdjust", \
   3814     "HashVpVlanMemberIngress", \
   3815     "HashVpVlanMemberIngressDual", \
   3816     "HashVpVlanMemberEgress", \
   3817     "HashVpVlanMemberEgressDual", \
   3818     "HashL2Endpoint", \
   3819     "HashL2EndpointDual", \
   3820     "HashEndpointQueueMap", \
   3821     "HashEndpointQueueMapDual", \
   3822     "StackRouteHistoryBitmap1", \
   3823     "StackRouteHistoryBitmap2", \
   3824     "ArpIPcheck", \
   3825     "Deprecated778", \
   3826     "Deprecated779", \
   3827     "L2LearnLimitToCpu", \
   3828     "FlexibleMirrorDestinations", \
   3829     "EcmpMacroFlowHashEnable", \
   3830     "OamVersionCheckDisable", \
   3831     "OamOlpChipEtherType", \
   3832     "OamOlpChipTpid", \
   3833     "OamOlpChipVlan", \
   3834     "Deprecated787", \
   3835     "EgressKeepSystemHeader", \
   3836     "MacroFlowEcmpHashConcatEnable", \
   3837     "MacroFlowLoadBalanceHashConcatEnable", \
   3838     "MacroFlowTrunkHashConcatEnable", \
   3839     "MacroFlowHigigTrunkHashConcatEnable", \
   3840     "MacroFlowECMPHashSeed", \
   3841     "MacroFlowLoadBalanceHashSeed", \
   3842     "MacroFlowTrunkHashSeed", \
   3843     "MacroFlowHigigTrunkHashSeed", \
   3844     "HashTrillPayloadSelect0", \
   3845     "HashTrillPayloadSelect1", \
   3846     "HashTrillTunnelSelect0", \
   3847     "HashTrillTunnelSelect1", \
   3848     "HashIP6AddrCollapseSelect0", \
   3849     "HashIP6AddrCollapseSelect1", \
   3850     "PrependTagEnable", \
   3851     "HashL2VxlanField0", \
   3852     "HashL2VxlanField1", \
   3853     "HashL3VxlanField0", \
   3854     "HashL3VxlanField1", \
   3855     "HashL2L2GreField0", \
   3856     "HashL2L2GreField1", \
   3857     "HashL3L2GreField0", \
   3858     "HashL3L2GreField1", \
   3859     "McastTrunkIngressCommit", \
   3860     "McastTrunkEgressCommit", \
   3861     "MplsShortPipe", \
   3862     "TraverseMode", \
   3863     "TrunkResilientHashConfig", \
   3864     "TrunkResilientHashSeed", \
   3865     "ECMPResilientHashSeed", \
   3866     "ResilientHashAgeTimer", \
   3867     "FieldStageEgressToCpu", \
   3868     "HashOamEgress", \
   3869     "HashOamEgressDual", \
   3870     "ColorL3L2Marking", \
   3871     "WredForAllPkts", \
   3872     "FcoeNpvModeEnable", \
   3873     "FcoeDomainRoutePrefixLength", \
   3874     "FcoeCutThroughEnable", \
   3875     "FcoeSourceBindCheckAction", \
   3876     "FcoeSourceFpmaPrefixCheckAction", \
   3877     "FcoeVftHopCountExpiryToCpu", \
   3878     "FcoeVftHopCountExpiryAction", \
   3879     "FcoeFcEofT1Value", \
   3880     "FcoeFcEofT2Value", \
   3881     "FcoeFcEofA1Value", \
   3882     "FcoeFcEofA2Value", \
   3883     "FcoeFcEofN1Value", \
   3884     "FcoeFcEofN2Value", \
   3885     "FcoeFcEofNI1Value", \
   3886     "FcoeFcEofNI2Value", \
   3887     "FcoeZoneCheckFailToCpu", \
   3888     "FcoeZoneCheckMissDrop", \
   3889     "HashUseL2GreTunnelGreKey0", \
   3890     "HashUseL2GreTunnelGreKey1", \
   3891     "HashL2GrePayloadSelect0", \
   3892     "HashL2GrePayloadSelect1", \
   3893     "HashL2GreNetworkPortPayloadDisable0", \
   3894     "HashL2GreNetworkPortPayloadDisable1", \
   3895     "SystemReservedVlan", \
   3896     "ProxySrcKnockout", \
   3897     "NetworkGroupDepth", \
   3898     "UnknownSubportPktTagToCpu", \
   3899     "L3RoutedLearn", \
   3900     "SubportPktTagEthertype", \
   3901     "SubportPktTagToCpu", \
   3902     "NonSubportPktTagToCpu", \
   3903     "HashL2GreKeyMask0", \
   3904     "HashL2GreKeyMask1", \
   3905     "L3Max128BV6Entries", \
   3906     "EEEQueueThresholdProfile0", \
   3907     "EEEQueueThresholdProfile1", \
   3908     "EEEQueueThresholdProfile2", \
   3909     "EEEQueueThresholdProfile3", \
   3910     "EEEPacketLatencyProfile0", \
   3911     "EEEPacketLatencyProfile1", \
   3912     "EEEPacketLatencyProfile2", \
   3913     "EEEPacketLatencyProfile3", \
   3914     "DosAttackV6MinFragEnable", \
   3915     "DosAttackV6MinFragSize", \
   3916     "MirrorUnicastCosq", \
   3917     "MirrorMulticastCosq", \
   3918     "McQueueSchedMode", \
   3919     "Reserved872", \
   3920     "CacheTableUpdateAll", \
   3921     "HashNivSrcIfEtagSvidSelect0", \
   3922     "HashNivSrcIfEtagSvidSelect1", \
   3923     "HashNivDstIfEtagVidSelect0", \
   3924     "HashNivDstIfEtagVidSelect1", \
   3925     "BstSnapshotEnable", \
   3926     "SymmetricHashControl", \
   3927     "L2ExtLearn", \
   3928     "ReserveHighTunnelId", \
   3929     "ReserveLowTunnelId", \
   3930     "HigigCongestionClassEnable", \
   3931     "EcnNonIpResponsive", \
   3932     "EcnNonIpIntCongestionNotification", \
   3933     "MimPayloadTpidEnable", \
   3934     "HashMimUseTunnelHeader0", \
   3935     "HashMimUseTunnelHeader1", \
   3936     "MplsPipeTunnelLabelExpSet", \
   3937     "ControlPortConfigInstall", \
   3938     "LoopbackMtuSize", \
   3939     "HashVxlanPayloadSelect0", \
   3940     "HashVxlanPayloadSelect1", \
   3941     "CongestionCnmSrcMacNonOui", \
   3942     "CongestionCnmSrcMacOui", \
   3943     "HashL2MPLSPayloadSelect0", \
   3944     "HashL2MPLSPayloadSelect1", \
   3945     "HashL3L2MPLSField0", \
   3946     "HashL3L2MPLSField1", \
   3947     "HashIPSecSelect0", \
   3948     "HashIPSecSelect1", \
   3949     "ECMPLevel1RandomSeed", \
   3950     "ECMPLevel2RandomSeed", \
   3951     "TimesyncEgressTimestampingMode", \
   3952     "SubportCoEEtherType", \
   3953     "SubportEgressTpid", \
   3954     "SubportEgressWideTpid", \
   3955     "IpmcSameVlanPruningOverride", \
   3956     "SynchronousPortClockSourceValid", \
   3957     "SynchronousPortClockSourceBkupValid", \
   3958     "RemoteProtectionEnable", \
   3959     "MirrorExclusive", \
   3960     "EcnDelayMeasurementThreshold", \
   3961     "MacroFlowHashUseMSB", \
   3962     "MplsDefaultTtlCopy", \
   3963     "OamStackingSupport", \
   3964     "HashOam", \
   3965     "HashOamDual", \
   3966     "HashOamLeastFull", \
   3967     "HashDualMoveDepthOam", \
   3968     "PortVlanTranslationAdvanced", \
   3969     "ForwardingLayerMtuFilter", \
   3970     "LinkLayerMtuFilter", \
   3971     "ForwardingLayerMtuSize", \
   3972     "LinkLayerMtuSize", \
   3973     "MimBvidInsertionControl", \
   3974     "L2CpuDeleteEvent", \
   3975     "L2LearnEvent", \
   3976     "L2CpuAddEvent", \
   3977     "L2AgingEvent", \
   3978     "UdfHashEnable", \
   3979     "OlpMatchRule", \
   3980     "MplsExtendedLabelTtl", \
   3981     "MacroFlowHashOverlayMaxOffset", \
   3982     "MacroFlowHashOverlayStrideOffset", \
   3983     "MacroFlowHashOverlayMinOffset", \
   3984     "MacroFlowEcmpHashOverlayConcatEnable", \
   3985     "MacroFlowECMPOverlayHashSeed", \
   3986     "ECMPOverlayHashOffset", \
   3987     "MacroFlowEcmpUnderlayHashConcatEnable", \
   3988     "MacroFlowECMPUnderlayHashSeed", \
   3989     "ECMPUnderlayVxlanHashOffset", \
   3990     "ECMPUnderlayL2GreHashOffset", \
   3991     "ECMPUnderlayTrillHashOffset", \
   3992     "VirtualPortUnderlayDynamicHashOffset", \
   3993     "ECMPUnderlayHashSet0Offset", \
   3994     "SampleFlexRandomSeed", \
   3995     "NonUcVlanShapingEnable", \
   3996     "CustomHeaderEncapPriorityOffset", \
   3997     "IngCapwapEnable", \
   3998     "CapwapDataUdpDstPort", \
   3999     "CountCapwapPayloadBytesOnly", \
   4000     "OamOlpStationMacOui", \
   4001     "OamOlpStationMacNonOui", \
   4002     "Reserved955", \
   4003     "PFCDeadlockDetectionTimeInterval", \
   4004     "PFCDeadlockRecoveryAction", \
   4005     "RangeCheckersAPIType", \
   4006     "Reserved958", \
   4007     "EcmpGroupMemberMode", \
   4008     "MimlEncapInnerEthertype", \
   4009     "HashMiMPayloadSelect0", \
   4010     "HashMiMPayloadSelect1", \
   4011     "HashL3MiMField0", \
   4012     "HashL3MiMField1", \
   4013     "HashMPLSUseLabelStack", \
   4014     "HashMPLSExcludeGAL", \
   4015     "RedirectBufferThresholdPriorityLow", \
   4016     "RedirectBufferThresholdPriorityMedium", \
   4017     "RedirectBufferThresholdPriorityHigh", \
   4018     "FlexIP6ExtHdr", \
   4019     "FlexIP6ExtHdrEgress", \
   4020     "HashUseFlowSelMplsEcmp", \
   4021     "V6L3SrcDstLocalLinkDropCancel", \
   4022     "L3ClassIdForL2Enable", \
   4023     "DropSobmhOnLinkDown", \
   4024     "ResilientHashCRC0ByteMask", \
   4025     "ResilientHashCRC1ByteMask", \
   4026     "ResilientHashCRC2ByteMask", \
   4027     "ResilientHashCRC3ByteMask", \
   4028     "ResilientHashCRCSeed", \
   4029     "ECMPResilientHashKey0Shift", \
   4030     "ECMPResilientHashKey1Shift", \
   4031     "VpnDetachPorts", \
   4032     "ClassL3L2Marking", \
   4033     "L3L2MarkingMode", \
   4034     "STPDisabledFieldBypass", \
   4035     "HashSctpL4Port", \
   4036     "Reserved988", \
   4037     "GlobalTpidEnable", \
   4038     "ECMPResilientHashCombine", \
   4039     "HashSetTflowMode", \
   4040     "Downgrade", \
   4041     "HashELISearch", \
   4042     "CrashRecoveryMode", \
   4043     "CrCommit", \
   4044     "CrLastTransactionStatus", \
   4045     "CrCouldNotRecover", \
   4046     "HWL2Freeze", \
   4047     "HashIP6NextHeaderUseExtensionHeader0", \
   4048     "HashIP6NextHeaderUseExtensionHeader1", \
   4049     "HashUseFlowSelLbidNonUnicast", \
   4050     "HashUseFlowSelLbidUnicast", \
   4051     "HashUseFlowSelHigigTrunkNonUnicast", \
   4052     "HashUseFlowSelHigigTrunkUnicast", \
   4053     "HashUseFlowSelHigigTrunkFailover", \
   4054     "HashUseFlowSelTrunkNonUnicast", \
   4055     "HashUseFlowSelEntropy", \
   4056     "HashUseFlowSelVxlanEcmp", \
   4057     "DefaultNativeOutVlanPort", \
   4058     "DefaultEgressVlanEditClassId", \
   4059     "GtpDetectEnable", \
   4060     "GtpHdrFirstByte", \
   4061     "GtpHdrFirstByteMask", \
   4062     "HashGtpTeidEnable0", \
   4063     "HashGtpTeidEnable1", \
   4064     "EccSingleBitErrorEvent", \
   4065     "HeaderCompensationPerPacket", \
   4066     "3rdTagStampMode", \
   4067     "MacroFlowHigigTrunkHashMinOffset", \
   4068     "MacroFlowHigigTrunkHashMaxOffset", \
   4069     "MacroFlowHigigTrunkHashStrideOffset", \
   4070     "MacroFlowTrunkHashMinOffset", \
   4071     "MacroFlowTrunkHashMaxOffset", \
   4072     "MacroFlowTrunkHashStrideOffset", \
   4073     "MacroFlowLoadBalanceEntropyHashMinOffset", \
   4074     "MacroFlowLoadBalanceEntropyHashMaxOffset", \
   4075     "MacroFlowLoadBalanceEntropyHashStrideOffset", \
   4076     "CrTransactionStart", \
   4077     "UdpTunnelIPv4DstPort", \
   4078     "UdpTunnelIPv6DstPort", \
   4079     "UdpTunnelMplsDstPort", \
   4080     "ECMPSecondHierHashOffset", \
   4081     "ECMPSecondHierHashConfig", \
   4082     "IngressRateLimitMpps", \
   4083     "MirrorSnoopForwardOriginalWhenDropped", \
   4084     "FabricTrunkDynamicPhysicalQueuedBytesExponent", \
   4085     "FabricTrunkDynamicPhysicalQueuedBytesDecreaseReset", \
   4086     "FabricTrunkDynamicPhysicalQueuedBytesMinThreshold", \
   4087     "FabricTrunkDynamicPhysicalQueuedBytesMaxThreshold", \
   4088     "TrunkDynamicPhysicalQueuedBytesExponent", \
   4089     "TrunkDynamicPhysicalQueuedBytesDecreaseReset", \
   4090     "TrunkDynamicPhysicalQueuedBytesMinThreshold", \
   4091     "TrunkDynamicPhysicalQueuedBytesMaxThreshold", \
   4092     "EcmpDynamicPhysicalQueuedBytesExponent", \
   4093     "EcmpDynamicPhysicalQueuedBytesDecreaseReset", \
   4094     "EcmpDynamicPhysicalQueuedBytesMinThreshold", \
   4095     "EcmpDynamicPhysicalQueuedBytesMaxThreshold", \
   4096     "FabricTrunkDynamicRandomSeed", \
   4097     "TrunkDynamicRandomSeed", \
   4098     "EcmpDynamicRandomSeed", \
   4099     "HashMPLSExcludeReservedLabel", \
   4100     "MplsNonIpPayloadDefaultEcn", \
   4101     "ECMPHashBitCountSelect", \
   4102     "EcnIpPayloadResponsive", \
   4103     "HashMultiMoveDepthExactMatch", \
   4104     "CrAbort", \
   4105     "LIUdpSrcPortSet", \
   4106     "Roce1Ethertype", \
   4107     "Roce2UdpDstPort", \
   4108     "HashUseFlowSelRoce2Ecmp", \
   4109     "HashSelectControlExtended", \
   4110     "HashField0Roce1FlowLabel", \
   4111     "HashField1Roce1FlowLabel", \
   4112     "HashField0Roce2FlowLabel", \
   4113     "HashField1Roce2FlowLabel", \
   4114     "HashRoce1Field0", \
   4115     "HashRoce1Field1", \
   4116     "HashRoce2IP4Field0", \
   4117     "HashRoce2IP4Field1", \
   4118     "HashRoce2IP6Field0", \
   4119     "HashRoce2IP6Field1", \
   4120     "EcmpRoce2HashOffset", \
   4121     "VxlanUdpDestPortSet1", \
   4122     "VxlanEntropyEnableIP6", \
   4123     "E2EFCReceiveDestMacOui", \
   4124     "E2EFCReceiveDestMacNonOui", \
   4125     "E2EFCReceiveEtherType", \
   4126     "E2EFCReceiveOpcode", \
   4127     "HashUseFlowSelEcmpOverlay", \
   4128     "MplsSpeculativeNibbleMap", \
   4129     "IpmcSameFwdDmnThreshold", \
   4130     "HashUseFlowSelVpTrunk", \
   4131     "HashUseFlowSelTrunkResilientHash", \
   4132     "MeterMef10dot3Enable", \
   4133     "HashMultiMoveDepthVlanTranslate1", \
   4134     "HashMultiMoveDepthVlanTranslate2", \
   4135     "HashMultiMoveDepthEgressVlanTranslate1", \
   4136     "HashMultiMoveDepthEgressVlanTranslate2", \
   4137     "IntL4DestPort1", \
   4138     "IntL4DestPort2", \
   4139     "IntProbeMarker1", \
   4140     "IntProbeMarker2", \
   4141     "IntVersion", \
   4142     "IntRequestVectorValue", \
   4143     "IntRequestVectorMask", \
   4144     "IntSwitchId", \
   4145     "IntEgressTimeDelta", \
   4146     "IntHopLimitCpuEnable", \
   4147     "IntTurnAroundCpuEnable", \
   4148     "IntMaxPayloadLength", \
   4149     "ForwardLookupNotFoundTrap", \
   4150     "EtherTypeCustom1", \
   4151     "EtherTypeCustom2", \
   4152     "L3LpmHitbitEnable", \
   4153     "MplsCtrlPktToCpu", \
   4154     "InvalidTpidToCpu", \
   4155     "FlowSelectMissToCpu", \
   4156     "L3HdrMismatchToCpu", \
   4157     "MeterTrafficClass", \
   4158     "RoeEthertype", \
   4159     "RoeCustomEthertype", \
   4160     "RoeUdpDestPort", \
   4161     "RoeCustomUdpDestPort", \
   4162     "OamOlpHeaderAdd", \
   4163     "L2FreezeMode", \
   4164     "L3McRpfDefaultRoute", \
   4165     "IngParseL2TunnelTermArp", \
   4166     "IngParseL2TunnelTermRarp", \
   4167     "NoneEthernetPacketMeterPtr", \
   4168     "EtherDscpRemark", \
   4169     "DosAttackTcpFirstOption", \
   4170     "DosAttackInnerTcpFirstOption", \
   4171     "DosAttackTcpFlagsMask", \
   4172     "DosAttackInnerTcpFlagsMask", \
   4173     "DosAttackTcpFlagsSR", \
   4174     "DosAttackTcpFlagsZero", \
   4175     "DosAttackTcpFlagsSynOption", \
   4176     "DosAttackTcpFlagsSynFirstFrag", \
   4177     "DosAttackTcpFlagsFinNoAck", \
   4178     "DosAttackTcpFlagsRstNoAck", \
   4179     "DosAttackTcpFlagsNoSFRA", \
   4180     "DosAttackTcpFlagsUrgNoUrgPtr", \
   4181     "DosAttackTcpFlagsNoUrgWithUrgPtr", \
   4182     "DosAttackTcpDstPortZero", \
   4183     "DosAttackTcpSrcPortZero", \
   4184     "DosAttackTcpFlagsResvdNonZero", \
   4185     "DosAttackTcpV4DstBcast", \
   4186     "DosAttackTcpFlagsAck", \
   4187     "MirrorPsampFormat2Epoch", \
   4188     "L2StationExtendedMode", \
   4189     "HashSeed", \
   4190     "LayerRecordModeSelection", \
   4191     "ECMPThirdHierHashConfig", \
   4192     "NwkHashConfig", \
   4193     "MplsStack0HashSeed", \
   4194     "MplsStack1HashSeed", \
   4195     "ParserHashSeed", \
   4196     "MplsSpeculativeParse", \
   4197     "ExternalTcamSync", \
   4198     "ArpMyIp1", \
   4199     "ArpMyIp2", \
   4200     "ArpIgnoreDa", \
   4201     "NdpMyIp1", \
   4202     "NdpMyIp2", \
   4203     "IcmpIgnoreDa", \
   4204     "VxlanEvpnEnable", \
   4205     "HashDualMoveDepthIngVpVlanMember", \
   4206     "HashDualMoveDepthEgrVpVlanMember", \
   4207     "GpeEntropyEnable", \
   4208     "GpeUdpDestPortSet", \
   4209     "GeneveEntropyEnable", \
   4210     "GeneveUdpDestPortSet", \
   4211     "BfdRxDisable", \
   4212     "DescCommit", \
   4213     "DlbMonitorIngressRandomSeed", \
   4214     "CounterAdjustEgressTm", \
   4215     "CounterAdjustEgressPp", \
   4216     "TagPcpDeiSrc", \
   4217     "BfdMyDipDestination", \
   4218     "EndToEndLatencyPerDestinationPort", \
   4219     "ExternalTcamInit", \
   4220     "HashMultiMoveDepthL3Tunnel", \
   4221     "GbpEtherType", \
   4222     "VxlanUdpSrcPortSelect", \
   4223     "GpeUdpSrcPortSelect", \
   4224     "GeneveUdpSrcPortSelect", \
   4225     "PreserveOtagBeforeItag", \
   4226     "MirrorCpuCosq", \
   4227     "IntProbeMarkerEnable", \
   4228     "IntL4DestPortEnable", \
   4229     "FtmhEtherType", \
   4230     "GbpSidDidMcastLookupMissClassid", \
   4231     "CustomOuterEthertype1", \
   4232     "CustomOuterEthertype2", \
   4233     "CustomInnerEthertype1", \
   4234     "CustomInnerEthertype2", \
   4235     "CustomOuterProtocolId1", \
   4236     "CustomOuterProtocolId2", \
   4237     "CustomInnerProtocolId1", \
   4238     "CustomInnerProtocolId2", \
   4239     "CustomOuterUdpDstPort1", \
   4240     "CustomOuterUdpDstPort2", \
   4241     "CustomInnerUdpDstPort1", \
   4242     "CustomInnerUdpDstPort2", \
   4243     "ReservedEgressNextHop", \
   4244     "ConcatAppHeader", \
   4245     "VxlanGpeUdpDestPortSet", \
   4246     "SystemPortOverride", \
   4247     "SRV6EgressPSPEnable", \
   4248     "SRV6ReducedModeEnable", \
   4249     "HashL4Field", \
   4250     "L3UcLargeNATEnable", \
   4251     "L3UcLargeDNAT", \
   4252     "L3UcLargeSNAT", \
   4253     "L3UcLargeDNATSNAT", \
   4254     "L3UcLargeDNAPT", \
   4255     "L3UcLargeSNAPT", \
   4256     "L3UcLargeDNAPTSNAPT", \
   4257     "L3McLargeNATEnable", \
   4258     "L3McLargeNATRewriteType0", \
   4259     "L3McLargeNATRewriteType1", \
   4260     "L3McLargeNATRewriteType2", \
   4261     "L2ChangeFieldsEnable", \
   4262     "ModuleVerifyEnable", \
   4263     "TraverseCommitDone", \
   4264     "HashIP4InnerField", \
   4265     "HashIP4OuterField", \
   4266     "HashIP6InnerField", \
   4267     "HashIP6OuterField", \
   4268     "HashL2InnerField", \
   4269     "HashL2OuterField", \
   4270     "MirrorPsampIpfixVersion", \
   4271     "LlcHeaderControlMode", \
   4272     "PcieHotSwapDisable", \
   4273     "TrunkDynamicMonitorIngressRandomSeed", \
   4274     "L2TunnelTpid", \
   4275     "EcnNonTcpResponsive", \
   4276     "Higig3Ethertype", \
   4277     "IPv4DoNotVerifyIncomingChecksum", \
   4278     "HashUseFlowSelTrunkFailover", \
   4279     "HashUseFlowSelHigigTrunk", \
   4280     "HashUseFlowSelTrunkDynamic", \
   4281     "HashUseHigig3EntropyTrunkNonUnicast", \
   4282     "TrunkUnicastHashOffset", \
   4283     "TrunkNonUnicastHashOffset", \
   4284     "HigigTrunkHashOffset", \
   4285     "VpTrunkHashOffset", \
   4286     "MacroFlowTrunkUnicastHashConcatEnable", \
   4287     "MacroFlowTrunkNonUnicastHashConcatEnable", \
   4288     "MacroFlowTrunkFailoverHashConcatEnable", \
   4289     "MacroFlowHigigTrunkFailoverHashConcatEnable", \
   4290     "MacroFlowTrunkDynamicHashConcatEnable", \
   4291     "MacroFlowVpTrunkHashConcatEnable", \
   4292     "MacroFlowTrunkUnicastHashSeed", \
   4293     "MacroFlowTrunkNonUnicastHashSeed", \
   4294     "MacroFlowTrunkFailoverHashSeed", \
   4295     "MacroFlowHigigTrunkFailoverHashSeed", \
   4296     "MacroFlowTrunkDynamicHashSeed", \
   4297     "MacroFlowVpTrunkHashSeed", \
   4298     "MacroFlowTrunkUnicastHashMinOffset", \
   4299     "MacroFlowTrunkUnicastHashMaxOffset", \
   4300     "MacroFlowTrunkUnicastHashStrideOffset", \
   4301     "MacroFlowTrunkNonUnicastHashMinOffset", \
   4302     "MacroFlowTrunkNonUnicastHashMaxOffset", \
   4303     "MacroFlowTrunkNonUnicastHashStrideOffset", \
   4304     "MacroFlowTrunkFailoverHashMinOffset", \
   4305     "MacroFlowTrunkFailoverHashMaxOffset", \
   4306     "MacroFlowTrunkFailoverHashStrideOffset", \
   4307     "MacroFlowHigigTrunkFailoverHashMinOffset", \
   4308     "MacroFlowHigigTrunkFailoverHashMaxOffset", \
   4309     "MacroFlowHigigTrunkFailoverHashStrideOffset", \
   4310     "MacroFlowTrunkDynamicHashMinOffset", \
   4311     "MacroFlowTrunkDynamicHashMaxOffset", \
   4312     "MacroFlowTrunkDynamicHashStrideOffset", \
   4313     "MacroFlowVpTrunkHashMinOffset", \
   4314     "MacroFlowVpTrunkHashMaxOffset", \
   4315     "MacroFlowVpTrunkHashStrideOffset", \
   4316     "TrunkRandomSeed", \
   4317     "HigigTrunkRandomSeed", \
   4318     "VPTrunkRandomSeed", \
   4319     "ModuleErrorRecoveryEnable", \
   4320     "HashMultiMoveDepthVlanTranslate3", \
   4321     "HashMultiMoveDepthL2Tunnel", \
   4322     "HashMultiMoveDepthL2TunnelVnid", \
   4323     "HashMultiMoveDepthFlowTracker", \
   4324     "HashMultiMoveDepthIpmcGroup", \
   4325     "HashMultiMoveDepthIpmcSourceGroup", \
   4326     "HashMultiMoveDepthL2mc", \
   4327     "MactAgeRefreshMode", \
   4328     "DosAttackMaxIpPayloadEnable", \
   4329     "DosAttackMaxIpPayloadSize", \
   4330     "DosAttackMinIpPayloadEnable", \
   4331     "DosAttackMinIpPayloadSize", \
   4332     "DosAttackMaxInnerIpPayloadEnable", \
   4333     "DosAttackMaxInnerIpPayloadSize", \
   4334     "DosAttackMinInnerIpPayloadEnable", \
   4335     "DosAttackMinInnerIpPayloadSize", \
   4336     "EccSingleBitBusBufferErrorEvent", \
   4337     "HashLayersDisable", \
   4338     "MplsAlternateMarkingSpecialLabel", \
   4339     "SvtagSciProfile", \
   4340     "SvtagErrCodeProfile", \
   4341     "LatencyEcnMarkMode", \
   4342     "GlobalTodMode", \
   4343     "TimesyncLiveWireToD", \
   4344     "L3TunnelCollapseDisable", \
   4345     "ControlOamBfdFailoverStateIgnore", \
   4346     "EntropyHashOffset", \
   4347     "MacroFlowEntropyHashConcatEnable", \
   4348     "MacroFlowEntropyHashSeed", \
   4349     "SubportLowPriPfcSel", \
   4350     "SubportHighPriPfcSel", \
   4351     "ExactMatchInit", \
   4352     "RangeTypeSelect", \
   4353     "RangeOperator", \
   4354     "RangeResultMap", \
   4355     "IFA2Enable", \
   4356     "IFA2HeaderType", \
   4357     "IFA2MetaDataFirstLookupType", \
   4358     "IFA2MetaDataSecondLookupType", \
   4359     "MacroFlowEcmpDynamicHashConcatEnable", \
   4360     "MacroFlowEcmpDynamicHashSeed", \
   4361     "MacroFlowEcmpDynamicHashMinOffset", \
   4362     "MacroFlowEcmpDynamicHashMaxOffset", \
   4363     "MacroFlowEcmpDynamicHashStrideOffset", \
   4364     "TrunkUnicastHashBitCountSelect", \
   4365     "TrunkNonunicastHashBitCountSelect", \
   4366     "TrunkFailoverHashBitCountSelect", \
   4367     "HigigTrunkHashBitCountSelect", \
   4368     "HigigTrunkFailoverHashBitCountSelect", \
   4369     "TrunkDynamicHashBitCountSelect", \
   4370     "VpTrunkHashBitCountSelect", \
   4371     "EntropyHashBitCountSelect", \
   4372     "EcmpOverlayHashBitCountSelect", \
   4373     "EcmpDynamicHashBitCountSelect", \
   4374     "GpeNextProtoGbp", \
   4375     "IoamMaxPayloadLength", \
   4376     "IoamNameSpaceId", \
   4377     "GpeNextProtoIoam", \
   4378     "GpeNextProtoIoamE2e", \
   4379     "PFCStopInterfaceBitmap", \
   4380     "IFAMetaDataAdaptTable", \
   4381     "L3UcSameInterfaceDrop", \
   4382     "L2ApplCallbackSuppress", \
   4383     "OtpAvsValue", \
   4384     "SampleVersion", \
   4385     "HashUseFlowSelEcmpWeighted", \
   4386     "EcmpWeightedHashOffset", \
   4387     "MacroFlowEcmpWeightedHashMinOffset", \
   4388     "MacroFlowEcmpWeightedHashMaxOffset", \
   4389     "MacroFlowEcmpWeightedHashStrideOffset", \
   4390     "MacroFlowEcmpWeightedHashConcatEnable", \
   4391     "MplsPwControlWordUpperClear", \
   4392     "MplsPwControlWordLowerClear", \
   4393     "MplsGal", \
   4394     "MplsEli", \
   4395     "MplsPwTermSeqNumberRange", \
   4396     "EgressVlanTranslate2Enable", \
   4397     "PointToPointAccessVlanCheckEnable", \
   4398     "NshEgressAdaptationKeySelect", \
   4399     "NshMetaDataSourceInterfaceSelect", \
   4400     "NshMetaDataTenantIdSelect", \
   4401     "NshTenantIdMappingMissDropEnable", \
   4402     "NshEthertype", \
   4403     "NshEthertypeEnable", \
   4404     "L3IngTagActionsEnable", \
   4405     "ECMPRandomSeed", \
   4406     "HashVersatileInitValue0", \
   4407     "HashVersatileInitValue1", \
   4408     "Hash0VersatileInitValue0", \
   4409     "Hash0VersatileInitValue1", \
   4410     "Hash1VersatileInitValue0", \
   4411     "Hash1VersatileInitValue1", \
   4412     "IoamE2eNextProtoGbp", \
   4413     "MirrorUnicastCosqEnable", \
   4414     "FlowCountHashShift", \
   4415     "FlowCountHashMask", \
   4416     "FlowCountFlexCtrIngAction", \
   4417     "SLLBDestinationNotFound", \
   4418     "VIPEcmpTableSize", \
   4419     "VIPL3EgressIDMin", \
   4420     "VIPL3EgressIDMax", \
   4421     "PCCAgeTimer", \
   4422     "PCCLearnLimit", \
   4423     "FlexeOamAlmCollectionTimerStep", \
   4424     "FlexeOamAlmCollectionStepCount", \
   4425     "IfaVersion", \
   4426     "IfaProtocol", \
   4427     "IoamGreProtocolParse", \
   4428     "IoamGreProtocol", \
   4429     "IoamOptionIncrementalParse", \
   4430     "IoamOptionIncremental", \
   4431     "IoamType", \
   4432     "IntVectorMatchMissAction", \
   4433     "1588ClockAddressOui", \
   4434     "1588ClockAddressNonOui", \
   4435     "HashUseFlowSelL2Ecmp", \
   4436     "HashUseFlowSelL2EcmpOverlay", \
   4437     "HashUseFlowSelEcmpResilientHash", \
   4438     "HashUseFlowSelEcmpOverlayResilientHash", \
   4439     "HashUseFlowSelEcmpWeightedOverlay", \
   4440     "EcmpOverlayResilientHashOffset", \
   4441     "EcmpOverlayMplsHashOffset", \
   4442     "EcmpOverlayHashOffset", \
   4443     "EcmpOverlayWeightedHashOffset", \
   4444     "L2EcmpHashOffset", \
   4445     "L2EcmpOverlayHashOffset", \
   4446     "MacroFlowEcmpResilientHashConcatEnable", \
   4447     "MacroFlowEcmpResilientHashMinOffset", \
   4448     "MacroFlowEcmpResilientHashMaxOffset", \
   4449     "MacroFlowEcmpResilientHashStrideOffset", \
   4450     "MacroFlowEcmpOverlayResilientHashConcatEnable", \
   4451     "MacroFlowEcmpOverlayResilientHashMinOffset", \
   4452     "MacroFlowEcmpOverlayResilientHashMaxOffset", \
   4453     "MacroFlowEcmpOverlayResilientHashStrideOffset", \
   4454     "MacroFlowEcmpMplsHashConcatEnable", \
   4455     "MacroFlowEcmpMplsHashMinOffset", \
   4456     "MacroFlowEcmpMplsHashMaxOffset", \
   4457     "MacroFlowEcmpMplsHashStrideOffset", \
   4458     "MacroFlowEcmpOverlayMplsHashConcatEnable", \
   4459     "MacroFlowEcmpOverlayMplsHashMinOffset", \
   4460     "MacroFlowEcmpOverlayMplsHashMaxOffset", \
   4461     "MacroFlowEcmpOverlayMplsHashStrideOffset", \
   4462     "MacroFlowL2EcmpHashConcatEnable", \
   4463     "MacroFlowL2EcmpHashMinOffset", \
   4464     "MacroFlowL2EcmpHashMaxOffset", \
   4465     "MacroFlowL2EcmpHashStrideOffset", \
   4466     "MacroFlowL2EcmpOverlayHashConcatEnable", \
   4467     "MacroFlowL2EcmpOverlayHashMinOffset", \
   4468     "MacroFlowL2EcmpOverlayHashMaxOffset", \
   4469     "MacroFlowL2EcmpOverlayHashStrideOffset", \
   4470     "MacroFlowEcmpWeightedOverlayHashConcatEnable", \
   4471     "MacroFlowEcmpWeightedOverlayHashMinOffset", \
   4472     "MacroFlowEcmpWeightedOverlayHashMaxOffset", \
   4473     "MacroFlowEcmpWeightedOverlayHashStrideOffset", \
   4474     "HashUseFlowSelMplsEcmpOverlay", \
   4475     "ExemScanPeriod", \
   4476     "VxlanHeaderFlags", \
   4477     "VxlanHeaderMatchFlags", \
   4478     "VxlanHeaderFlagsMask", \
   4479     "VxlanHeaderFlagsMismatchDrop", \
   4480     "VxlanHeaderReserved1", \
   4481     "VxlanHeaderReserved2", \
   4482     "FlexeSarCellMode", \
   4483     "MplsSpecialLabelAutoTerminateDisable", \
   4484     "ExternalTableCapacity", \
   4485     "ExemFlushProfilePayloadOffset", \
   4486     "NtpL4DestPort", \
   4487     "NtpResidenceTimeUpdate", \
   4488     "V6L3LocalLinkSrcDisposition", \
   4489     "MirrorAllowDuplicateMirroredPackets", \
   4490     "EgressStgCheckIngressEnable", \
   4491     "VxlanIPv4TunnelVlanTranslateEnable", \
   4492     "VxlanIPv6TunnelVlanTranslateEnable", \
   4493     "EgressFlexCounterPresel" 
   4494 
   4495 /* 
   4496  * NSH Egress adaptation key types used by
   4497  * bcmSwitchNshEgressAdaptationKeySelect.
   4498  */
   4499 #define BCM_SWITCH_NSH_EGR_ADAPT_KEY_OPAQUE_OBJECT (0)        /* NSH egress adaptation
   4500                                                           key is opaque object. */
   4501 #define BCM_SWITCH_NSH_EGR_ADAPT_KEY_OPAQUE_OBJECT_VRF (1)        /* NSH egress adaptation
   4502                                                           key is opaque object
   4503                                                           and VRF ID. */
   4504 
   4505 /* 
   4506  * NSH metadata source interface types used by
   4507  * bcmSwitchNshMetaDataSourceInterfaceSelect.
   4508  */
   4509 #define BCM_SWITCH_NSH_METADATA_SRC_INTF_SGPP (0)        /* NSH metadata source
   4510                                                           interface is SGPP. */
   4511 #define BCM_SWITCH_NSH_METADATA_SRC_INTF_FROM_EGR_ADAPT (1)        /* NSH metadata source
   4512                                                           interface is from
   4513                                                           egress adaptation
   4514                                                           lookup. */
   4515 
   4516 /* 
   4517  * NSH metadata tenant ID source used by
   4518  * bcmSwitchNshMetaDataTenantIdSelect.
   4519  */
   4520 #define BCM_SWITCH_NSH_METADATA_TENANT_ID_VRF (0)        /* NSH metadata tenant ID
   4521                                                           is VRF ID. */
   4522 #define BCM_SWITCH_NSH_METADATA_TENANT_ID_FROM_EGR_ADAPT (1)        /* NSH metadata tenant ID
   4523                                                           is from egress
   4524                                                           adaptation lookup. */
   4525 
   4526 /* Requires BROADCOM_PREMIUM license */
   4527 #define BCM_SWITCH_IFA_METADATA_ADAPT1_SINGLE 0          /* Select single wide
   4528                                                           adaptation table 1 for
   4529                                                           IFA metadata. */
   4530 #define BCM_SWITCH_IFA_METADATA_ADAPT1_DOUBLE 1          /* Select double wide
   4531                                                           adaptation table 1 for
   4532                                                           IFA metadata. */
   4533 #define BCM_SWITCH_IFA_METADATA_ADAPT2_SINGLE 2          /* Select single wide
   4534                                                           adaptation table 2 for
   4535                                                           IFA metadata. */
   4536 #define BCM_SWITCH_IFA_METADATA_ADAPT2_DOUBLE 3          /* Select double wide
   4537                                                           adaptation table 2 for
   4538                                                           IFA metadata. */
   4539 
   4540 /* ecmp hash bit count enums */
   4541 typedef enum bcm_switch_ecmp_hash_bit_count_e {
   4542     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_10 = 0, 
   4543     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_11 = 1, 
   4544     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_12 = 2, 
   4545     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_13 = 3, 
   4546     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_14 = 4, 
   4547     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_15 = 5, 
   4548     BCM_SWITCH_ECMP_HASH_BIT_COUNT_LOWER_16 = 6 
   4549 } bcm_switch_ecmp_hash_bit_count_t;
   4550 
   4551 /* 
   4552  * Values passed for setting switch control
   4553  * bcmSwitchPFCDeadlockRecoveryAction.
   4554  */
   4555 typedef enum bcm_switch_pfc_deadlock_action_e {
   4556     bcmSwitchPFCDeadlockActionTransmit = 0, /* Transmit packets in Recovery state
   4557                                            (ignoring the PFC state)-Default
   4558                                            Action */
   4559     bcmSwitchPFCDeadlockActionDrop = 1, /* Drop packets in Recovery state. */
   4560     bcmSwitchPFCDeadlockActionMaxCount = 2 /* Maximum PFC Deadlock Recovery action
   4561                                            type count */
   4562 } bcm_switch_pfc_deadlock_action_t;
   4563 
   4564 /* 
   4565  * Values passed for setting switch control
   4566  * bcmSwitchPFCDeadlockDetectionTimeInterval..
   4567  */
   4568 typedef enum bcm_switch_pfc_deadlock_detection_interval_e {
   4569     bcmSwitchPFCDeadlockDetectionInterval100MiliSecond = 0, /* 100 ms interval for Detection
   4570                                            interval (default) */
   4571     bcmSwitchPFCDeadlockDetectionInterval10MiliSecond = 1, /* 10ms interval for Detection interval */
   4572     bcmSwitchPFCDeadlockDetectionIntervalCount = 2 /* Maximum PFC deadlock detecion type
   4573                                            count */
   4574 } bcm_switch_pfc_deadlock_detection_interval_t;
   4575 
   4576 /* Values passed for setting switch control bcmSwitchOamStackingSupport */
   4577 typedef enum bcm_switch_oam_stacking_support_e {
   4578     bcmSwitchOamStackingSupportNone = 0, /* Do not carry OAM endpoint context in
   4579                                            place of VC label in stacking header */
   4580     bcmSwitchOamStackingSupportOamContextInStackingHeader = 1 /* Carry OAM endpoint context in place
   4581                                            of VC label in stacking header */
   4582 } bcm_switch_oam_stacking_support_t;
   4583 
   4584 /* Values passed for setting switch control bcmSwitchGlobalTodMode */
   4585 typedef enum bcm_switch_tod_mode_e {
   4586     bcmSwitchTodModeNone = 0,       /* No TOD mode */
   4587     bcmSwitchTodModeOam = 1,        /* The TOD mode is OAM */
   4588     bcmSwitchTodModeNtp = 2,        /* The TOD mode is NTP */
   4589     bcmSwitchTodModeOamAndNtp = 3,  /* The TOD mode is OAM and NTP */
   4590     bcmSwitchTodModeCount = 4       /* Maximum TOD mode count */
   4591 } bcm_switch_tod_mode_t;
   4592 
   4593 /* Values passed for setting switch control bcmSwitchFlexeSarCellMode */
   4594 typedef enum bcm_switch_flexe_sar_cell_mode_e {
   4595     bcmSwitchFlexeSarCellMode28x66b = 0, /* The SAR cell mode is 28x66b, the
   4596                                            actual cell size is 236B(including
   4597                                            SAR OH) */
   4598     bcmSwitchFlexeSarCellMode29x66b = 1, /* The SAR cell mode is 29x66b, the
   4599                                            actual cell size is 244B(including
   4600                                            SAR OH) */
   4601     bcmSwitchFlexeSarCellModeCount = 2  /* Maximum SAR cell mode count */
   4602 } bcm_switch_flexe_sar_cell_mode_t;
   4603 
   4604 typedef enum bcm_switch_external_table_e {
   4605     bcmSwitchExternalTableIp4Unicast = 0, 
   4606     bcmSwitchExternalTableIp4UnicastOptimized = 1, 
   4607     bcmSwitchExternalTableIp4Rpf = 2, 
   4608     bcmSwitchExternalTableIp6Unicast = 3, 
   4609     bcmSwitchExternalTableIp6UnicastOptimized = 4, 
   4610     bcmSwitchExternalTableIp6Rpf = 5, 
   4611     bcmSwitchExternalTableIp4Multicast = 6, 
   4612     bcmSwitchExternalTableIp6Multicast = 7, 
   4613     bcmSwitchExternalTableNat = 8 
   4614 } bcm_switch_external_table_t;
   4615 
   4616 /* Requires BROADCOM_PREMIUM license */
   4617 #define BCM_L3UC_NAT_NONE       0          /* Disable the specified NAT update. */
   4618 #define BCM_L3UC_NAT_TCP        1          /* Enable Unicast NAT updates for TCP
   4619                                               packets only. */
   4620 #define BCM_L3UC_NAT_UDP        2          /* Enable Unicast NAT updates for UDP
   4621                                               packets only. */
   4622 #define BCM_L3UC_NAT            3          /* Enable Unicast NAT updates for any
   4623                                               IPV4 packet. */
   4624 
   4625 /* Requires BROADCOM_PREMIUM license */
   4626 #define BCM_L3MC_NAT_NONE                   0          /* Disable the specified
   4627                                                           NAT update. */
   4628 #define BCM_L3MC_DNAT                       1          /* Enable Multicast DNAT
   4629                                                           updates. */
   4630 #define BCM_L3MC_DNAT_WITH_MACDA_UPDATE     2          /* Enable Multicast DNAT
   4631                                                           updates and MACDA
   4632                                                           update. */
   4633 #define BCM_L3MC_SNAT                       3          /* Enable Multicast SNAT
   4634                                                           updates. */
   4635 #define BCM_L3MC_DNAT_SNAT                  4          /* Enable both Multicast
   4636                                                           DNAT and SNAT updates. */
   4637 #define BCM_L3MC_DNAT_SNAT_WITH_MACDA_UPDATE 5          /* Enable both Multicast
   4638                                                           DNAT and SNAT updates
   4639                                                           and MACDA update. */
   4640 #define BCM_L3MC_DNAPT                      6          /* Enable Multicast DNAPT
   4641                                                           updates. */
   4642 #define BCM_L3MC_DNAPT_WITH_MACDA_UPDATE    7          /* Enable Multicast DNAPT
   4643                                                           updates and MACDA
   4644                                                           update. */
   4645 #define BCM_L3MC_SNAPT                      8          /* Enable Multicast SNAPT
   4646                                                           updates. */
   4647 #define BCM_L3MC_DNAPT_SNAPT                9          /* Enable both Multicast
   4648                                                           DNAPT and SNAPT
   4649                                                           updates. */
   4650 #define BCM_L3MC_DNAPT_SNAPT_WITH_MACDA_UPDATE 10         /* Enable both Multicast
   4651                                                           DNAPT and SNAPT
   4652                                                           updates and MACDA
   4653                                                           update. */
   4654 
   4655 #define BCM_SWITCH_CONTROL_L3_LEARN_NONE    0          /* Disable L2 learning
   4656                                                           for all routed
   4657                                                           packets. */
   4658 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV4_UC 0x1        /* Enable L2 learning for
   4659                                                           IPv4 Unicast packets. */
   4660 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV4_MC 0x2        /* Enable L2 learning for
   4661                                                           IPv4 Multicast
   4662                                                           packets. */
   4663 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV6_UC 0x4        /* Enable L2 learning for
   4664                                                           IPv6 Unicast packets. */
   4665 #define BCM_SWITCH_CONTROL_L3_LEARN_IPV6_MC 0x8        /* Enable L2 learning for
   4666                                                           IPv6 Multicast
   4667                                                           packets. */
   4668 #define BCM_SWITCH_CONTROL_L3_LEARN_MPLS    0x10       /* Enable L2 learning for
   4669                                                           MPLS packets. */
   4670 #define BCM_SWITCH_CONTROL_L3_LEARN_ALL     0xffffffff /* Enable L2 learning for
   4671                                                           all routed packets. */
   4672 
   4673 /* Module types for bcmSwitchModuleType. */
   4674 #define BCM_SWITCH_MODULE_UNKNOWN   0          
   4675 #define BCM_SWITCH_MODULE_XGS1      1          
   4676 #define BCM_SWITCH_MODULE_XGS2      2          
   4677 #define BCM_SWITCH_MODULE_XGS3      3          
   4678 
   4679 /* Unicast RPF lookup modes. */
   4680 #define BCM_SWITCH_URPF_DISABLE (0)        
   4681 #define BCM_SWITCH_URPF_LOOSE   (1)        
   4682 #define BCM_SWITCH_URPF_STRICT  (2)        
   4683 
   4684 /* Port header type. */
   4685 #define BCM_SWITCH_PORT_HEADER_TYPE_NONE    (0)        
   4686 #define BCM_SWITCH_PORT_HEADER_TYPE_ETH     (1)        
   4687 #define BCM_SWITCH_PORT_HEADER_TYPE_RAW     (2)        
   4688 #define BCM_SWITCH_PORT_HEADER_TYPE_TM      (3)        
   4689 #define BCM_SWITCH_PORT_HEADER_TYPE_PROG    (4)        
   4690 #define BCM_SWITCH_PORT_HEADER_TYPE_CPU     (5)        
   4691 #define BCM_SWITCH_PORT_HEADER_TYPE_STACKING (6)        
   4692 #define BCM_SWITCH_PORT_HEADER_TYPE_TDM     (7)        
   4693 #define BCM_SWITCH_PORT_HEADER_TYPE_TDM_RAW (8)        
   4694 #define BCM_SWITCH_PORT_HEADER_TYPE_MPLS_RAW (9)        
   4695 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2_PP (10)       
   4696 #define BCM_SWITCH_PORT_HEADER_TYPE_TM_SSP  (11)       
   4697 #define BCM_SWITCH_PORT_HEADER_TYPE_TM_ENCAP (12)       
   4698 #define BCM_SWITCH_PORT_HEADER_TYPE_TM_SSP_ENCAP (13)       
   4699 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2 (14)       
   4700 #define BCM_SWITCH_PORT_HEADER_TYPE_RCH_0   (15)       
   4701 #define BCM_SWITCH_PORT_HEADER_TYPE_RCH_1   (16)       
   4702 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2_PP_JR1_MODE (17)       
   4703 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED_2_JR1_MODE (18)       
   4704 #define BCM_SWITCH_PORT_HEADER_TYPE_ENCAP_EXTERNAL_CPU (19)       
   4705 #define BCM_SWITCH_PORT_HEADER_TYPE_TDM_ETH (20)       
   4706 #define BCM_SWITCH_PORT_HEADER_TYPE_INJECTED (21)       
   4707 
   4708 /* ECMP group mode. */
   4709 #define BCM_SWITCH_ECMP_GROUP_MEMBER_MODE_256 (0)        
   4710 #define BCM_SWITCH_ECMP_GROUP_MEMBER_MODE_1K (1)        
   4711 
   4712 /* Argument formatting macro for bcmSwitchModuleType. */
   4713 #define BCM_SWITCH_CONTROL_MOD_TYPE_PACK(modid, mod_type)  \
   4714     (((modid) << 16) | (mod_type & 0xFFFF)) 
   4715 #define BCM_SWITCH_CONTROL_MODID_UNPACK(arg)  \
   4716     (((arg) >> 16) & 0xFFFF) 
   4717 #define BCM_SWITCH_CONTROL_MODTYPE_UNPACK(arg)  \
   4718     (((arg) >> 0) & 0xFFFF) 
   4719 
   4720 /* Stable locations for bcmSwitchStableSelect */
   4721 #define BCM_SWITCH_STABLE_NONE              (_SHR_SWITCH_STABLE_NONE) 
   4722 #define BCM_SWITCH_STABLE_DEVICE_NEXT_HOP   (_SHR_SWITCH_STABLE_DEVICE_NEXT_HOP) 
   4723 #define BCM_SWITCH_STABLE_DEVICE_EXT_MEM    (_SHR_SWITCH_STABLE_DEVICE_EXT_MEM) 
   4724 #define BCM_SWITCH_STABLE_APPLICATION       (_SHR_SWITCH_STABLE_APPLICATION) 
   4725 #define BCM_SWITCH_STABLE_SHARED_MEM        (_SHR_SWITCH_STABLE_SHARED_MEM) 
   4726 
   4727 /* Flags for automatic link provision clear. */
   4728 #define BCM_SWITCH_LINK_PROV_AUTO_CLEAR     0x00000001 /* Clear link provision
   4729                                                           automatically. */
   4730 #define BCM_SWITCH_LINK_PROV_ALLOW_LIST_EXCLUDE 0x00000002 /* Retain allow list when
   4731                                                           clearing link
   4732                                                           provision. */
   4733 #define BCM_SWITCH_LINK_PROV_BLOCK_LIST_EXCLUDE 0x00000004 /* Retain block list when
   4734                                                           clearing link
   4735                                                           provision. */
   4736 
   4737 /* 
   4738  * Egress flex counter preselect, used for
   4739  * bcmSwitchEgressFlexCounterPresel.
   4740  */
   4741 typedef enum bcm_switch_egress_flex_counter_presel_e {
   4742     bcmSwitchEgressFlexCounterPreselMirror = 0, /* Pre-select to determine if counting
   4743                                            mirror packets or not. */
   4744     bcmSwitchEgressFlexCounterPreselCopyToCpu = 1, /* Pre-select to determine if counting
   4745                                            copy to CPU packets or not. */
   4746     bcmSwitchEgressFlexCounterPreselMirrorAndCopyToCpu = 2, /* Pre-select to determine if counting
   4747                                            both mirror and copy to CPU packets
   4748                                            or not. */
   4749     bcmSwitchEgressFlexCounterPreselCount = 3 /* Must be last. Not a usable value. */
   4750 } bcm_switch_egress_flex_counter_presel_t;
   4751 
   4752 #ifndef BCM_HIDE_DISPATCHABLE
   4753 
   4754 /* 
   4755  * Configure port-specific and device-wide operating modes. Device wide
   4756  * operating
   4757  * modes are configured on all ports, except the stack ports.
   4758  */
   4759 extern int bcm_switch_control_get(
   4760     int unit, 
   4761     bcm_switch_control_t type, 
   4762     int *arg);
   4763 
   4764 /* 
   4765  * Configure port-specific and device-wide operating modes. Device wide
   4766  * operating
   4767  * modes are configured on all ports, except the stack ports.
   4768  */
   4769 extern int bcm_switch_control_set(
   4770     int unit, 
   4771     bcm_switch_control_t type, 
   4772     int arg);
   4773 
   4774 /* 
   4775  * Configure port-specific and device-wide operating modes. Device wide
   4776  * operating
   4777  * modes are configured on all ports, except the stack ports.
   4778  */
   4779 extern int bcm_switch_control_port_get(
   4780     int unit, 
   4781     bcm_port_t port, 
   4782     bcm_switch_control_t type, 
   4783     int *arg);
   4784 
   4785 /* 
   4786  * Configure port-specific and device-wide operating modes. Device wide
   4787  * operating
   4788  * modes are configured on all ports, except the stack ports.
   4789  */
   4790 extern int bcm_switch_control_port_set(
   4791     int unit, 
   4792     bcm_port_t port, 
   4793     bcm_switch_control_t type, 
   4794     int arg);
   4795 
   4796 /* Configure encapsulation priority for the internal priority queue. */
   4797 extern int bcm_switch_rcpu_encap_priority_map_set(
   4798     int unit, 
   4799     uint32 flags, 
   4800     int internal_cpu_pri, 
   4801     int encap_pri);
   4802 
   4803 /* Retrieve encapsulation priority of the internal priority queue. */
   4804 extern int bcm_switch_rcpu_encap_priority_map_get(
   4805     int unit, 
   4806     uint32 flags, 
   4807     int internal_cpu_pri, 
   4808     int *encap_pri);
   4809 
   4810 /* Configure decapsulation priority for the internal priority queue. */
   4811 extern int bcm_switch_rcpu_decap_priority_map_set(
   4812     int unit, 
   4813     int decap_pri, 
   4814     int internal_cpu_pri);
   4815 
   4816 /* Retrieve decapsulation priority of the internal priority queue. */
   4817 extern int bcm_switch_rcpu_decap_priority_map_get(
   4818     int unit, 
   4819     int decap_pri, 
   4820     int *internal_cpu_pri);
   4821 
   4822 #endif /* BCM_HIDE_DISPATCHABLE */
   4823 
   4824 /* Hash tables. */
   4825 typedef enum bcm_switch_hash_table_e {
   4826     bcmHashTableL2 = 0,                 /* L2 hash table. */
   4827     bcmHashTableL3 = 1,                 /* L3 hash table. */
   4828     bcmHashTableVlanTranslate = 2,      /* VLAN Translate hash table. */
   4829     bcmHashTableEgressVlanTranslate = 3, /* Egress VLAN Translate hash table. */
   4830     bcmHashTableMPLS = 4,               /* MPLS hash table. */
   4831     bcmHashTableFlowtrackerEntry = 5,   /* Flowtracker Entry hash table. */
   4832     bcmHashTableL2Tunnel = 6,           /* L2 tunnel termination hash table. */
   4833     bcmHashTableL2TunnelVnid = 7,       /* L2 tunnel VNID hash table. */
   4834     bcmHashTableL3Tunnel = 8,           /* L3 tunnel termination hash table. */
   4835     bcmHashTableExactMatch = 9,         /* FP exact match hash table. */
   4836     bcmHashTableIpmcGroup = 10,         /* L3 IPv4/IPv6 multicast (*,G) hash
   4837                                            table. */
   4838     bcmHashTableIpmcSourceGroup = 11,   /* L3 IPv4/IPv6 multicast (S,G) hash
   4839                                            table. */
   4840     bcmHashTableL2mc = 12,              /* L2 IPv4/IPv6 multicast hash table. */
   4841     bcmHashTable__Num = 13 
   4842 } bcm_switch_hash_table_t;
   4843 
   4844 /* L2 address learning modes. */
   4845 typedef enum bcm_switch_l2_location_e {
   4846     bcmSwitchL2LocInternal = 0, /* L2 addresses will be learnt on Internal TCAM */
   4847     bcmSwitchL2LocExternal = 1, /* L2 addresses will be learnt on External TCAM */
   4848     bcmSwitchL2LocIntAndExt = 2 /* L2 addresses are learnt either on internal or
   4849                                    external Tcam */
   4850 } bcm_switch_l2_location_t;
   4851 
   4852 /* Switch table update mode tables. */
   4853 typedef enum bcm_switch_table_update_mode_e {
   4854     bcmSwitchTableUpdateNormal = 0,     /* Calling traverse API e.g.
   4855                                            l2_replace() will act in normal mode,
   4856                                            i.e. set match rule and action and
   4857                                            perform the replace */
   4858     bcmSwitchTableUpdateRuleAdd = 1,    /* Calling traverse API e.g.
   4859                                            l2_replace() will add rule  without
   4860                                            perform the replace */
   4861     bcmSwitchTableUpdateRuleClear = 2,  /* clear all rules e.g. l2_replace()
   4862                                            Calling traverse API */
   4863     bcmSwitchTableUpdateRuleCommit = 3, /* Run traverse API e.g. l2_replace()
   4864                                            with configured rules */
   4865     bcmSwitchTableUpdateRuleCommitNonBlocking = 4 /* Start the flush machine and don't
   4866                                            wait for it to finish. */
   4867 } bcm_switch_table_update_mode_t;
   4868 
   4869 /* Opaque handle to a hash entry. */
   4870 typedef int bcm_hash_entry_t;
   4871 
   4872 /* Use config structure to setup the offset and mask. */
   4873 #define BCM_SWITCH_HASH_USE_CONFIG  (~0U)      
   4874 
   4875 /* mask length in config struct. */
   4876 #define BCM_SWITCH_HASH_ENTRY_CONFIG_MASK_LENGTH 4          
   4877 
   4878 /* field selection in flexible hash RAM table */
   4879 typedef enum bcm_switch_hash_field_e {
   4880     bcmSwitchFlexHashField0 = 0,        /* field 0 in flexible hash RAM table */
   4881     bcmSwitchFlexHashField1 = 1,        /* field 1 in flexible hash RAM table */
   4882     bcmSwitchFlexHashField2 = 2,        /* field 2 in flexible hash RAM table,
   4883                                            fed to RTAG7 bin 4, support only UDF
   4884                                            type field */
   4885     bcmSwitchFlexHashField3 = 3,        /* field 3 in flexible hash RAM table,
   4886                                            fed to RTAG7 bin 5, support only UDF
   4887                                            type field */
   4888     bcmSwitchFlexHashField4 = 4,        /* field 4 in flexible hash RAM table,
   4889                                            fed to RTAG7 bin 6, support only UDF
   4890                                            type field */
   4891     bcmSwitchFlexHashField5 = 5,        /* field 5 in flexible hash RAM table,
   4892                                            fed to RTAG7 bin 7, support only UDF
   4893                                            type field */
   4894     bcmSwitchFlexHashField6 = 6,        /* field 6 in flexible hash RAM table,
   4895                                            fed to RTAG7 bin 8, support only UDF
   4896                                            type field */
   4897     bcmSwitchFlexHashField7 = 7,        /* field 7 in flexible hash RAM table,
   4898                                            fed to RTAG7 bin 9, support only UDF
   4899                                            type field */
   4900     bcmSwitchFlexHashField8 = 8,        /* field 8 in flexible hash RAM table,
   4901                                            fed to RTAG7 bin 10, support only UDF
   4902                                            type field */
   4903     bcmSwitchFlexHashField9 = 9,        /* field 9 in flexible hash RAM table,
   4904                                            fed to RTAG7 bin 11, support only UDF
   4905                                            type field */
   4906     bcmSwitchFlexHashField10 = 10,      /* field 10 in flexible hash RAM table,
   4907                                            fed to RTAG7 bin 12, support only UDF
   4908                                            type field */
   4909     bcmSwitchFlexHashField11 = 11,      /* field 11 in flexible hash RAM table,
   4910                                            fed to RTAG7 bin 13, support only UDF
   4911                                            type field */
   4912     bcmSwitchFlexHashField12 = 12,      /* field 12 in flexible hash RAM table,
   4913                                            fed to RTAG7 bin 1, support only UDF
   4914                                            type field */
   4915     bcmSwitchFlexHashFieldCount = 13    /* field count in flexible hash RAM
   4916                                            table */
   4917 } bcm_switch_hash_field_t;
   4918 
   4919 /* Values passed for setting switch control bcmSwitchLatencyEcnMode. */
   4920 typedef enum bcm_switch_latency_ecn_mark_mode_e {
   4921     bcmSwitchLatencyEcnMarkInstant = 0, /*  Instantaneous mode. */
   4922     bcmSwitchLatencyEcnMarkAverage = 1, /*  Average mode. */
   4923     bcmSwitchLatencyEcnMarkCount = 2    /*  Must be last. Not a usable value. */
   4924 } bcm_switch_latency_ecn_mark_mode_t;
   4925 
   4926 /* Flags for flex hash entry configration. */
   4927 #define BCM_SWITCH_HASH_FIELD_TYPE_UDF  1          
   4928 
   4929 /* flexible hash entry configuration struct. */
   4930 typedef struct bcm_switch_hash_entry_config_s {
   4931     uint32 flags;                       /* control flags, default value
   4932                                            indicates offset type flex hash */
   4933     bcm_switch_hash_field_t field;      /* field selector, currently there are
   4934                                            two fields in flex hash ram table */
   4935     uint32 offset;                      /* hash offset when field type is
   4936                                            offset, relative offset in bits from
   4937                                            start in udf_id_t when field type is
   4938                                            udf. The value of (start + offset)
   4939                                            should be a multiple of (8*2) to
   4940                                            ensure the interested field starts at
   4941                                            even byte in a packet */
   4942     int mask_length;                    /* number of bytes in the mask */
   4943     uint8 mask[BCM_SWITCH_HASH_ENTRY_CONFIG_MASK_LENGTH]; /* hash mask */
   4944     bcm_udf_layer_t base_layer;         /* this is unsupported for now */
   4945     bcm_udf_id_t udf_id;                /* udf id when field type is udf chunk */
   4946 } bcm_switch_hash_entry_config_t;
   4947 
   4948 /* Initialize a bcm_switch_hash_entry_config_t structure. */
   4949 extern void bcm_switch_hash_entry_config_t_init(
   4950     bcm_switch_hash_entry_config_t *config);
   4951 
   4952 #ifndef BCM_HIDE_DISPATCHABLE
   4953 
   4954 /* Set a flex hash entry configuration information. */
   4955 extern int bcm_switch_hash_entry_set(
   4956     int unit, 
   4957     bcm_hash_entry_t entry, 
   4958     bcm_switch_hash_entry_config_t *config);
   4959 
   4960 /* Get a flex hash entry configuration information. */
   4961 extern int bcm_switch_hash_entry_get(
   4962     int unit, 
   4963     bcm_hash_entry_t entry, 
   4964     bcm_switch_hash_entry_config_t *config);
   4965 
   4966 #endif /* BCM_HIDE_DISPATCHABLE */
   4967 
   4968 /* flexible hash CAM/RAM table traverse callback */
   4969 typedef int (*bcm_switch_hash_entry_traverse_cb)(
   4970     int unit, 
   4971     int flags, 
   4972     bcm_hash_entry_t entry, 
   4973     void *user_data);
   4974 
   4975 #ifndef BCM_HIDE_DISPATCHABLE
   4976 
   4977 /* Traverse all configured flex hash entry to callback. */
   4978 extern int bcm_switch_hash_entry_traverse(
   4979     int unit, 
   4980     int flags, 
   4981     bcm_switch_hash_entry_traverse_cb cb_fn, 
   4982     void *user_data);
   4983 
   4984 /* Set a flex hash entry configuration information. */
   4985 extern int bcm_switch_hash_qualify_udf(
   4986     int unit, 
   4987     bcm_hash_entry_t entry, 
   4988     bcm_udf_id_t udf_id, 
   4989     int length, 
   4990     uint8 *data, 
   4991     uint8 *mask);
   4992 
   4993 /* Get a flex hash entry configuration information. */
   4994 extern int bcm_switch_hash_qualify_udf_get(
   4995     int unit, 
   4996     bcm_hash_entry_t entry, 
   4997     bcm_udf_id_t udf_id, 
   4998     int max_length, 
   4999     uint8 *data, 
   5000     uint8 *mask, 
   5001     int *actual_length);
   5002 
   5003 /* Installs a flex hash entry into the hardware tables. */
   5004 extern int bcm_switch_hash_entry_install(
   5005     int unit, 
   5006     bcm_hash_entry_t entry, 
   5007     uint32 offset);
   5008 
   5009 /* Re-Install a flex hash entry into the hardware tables. */
   5010 extern int bcm_switch_hash_entry_reinstall(
   5011     int unit, 
   5012     bcm_hash_entry_t entry, 
   5013     uint32 offset);
   5014 
   5015 /* Remove a flex hash entry from the hardware tables. */
   5016 extern int bcm_switch_hash_entry_remove(
   5017     int unit, 
   5018     bcm_hash_entry_t entry);
   5019 
   5020 /* Create a blank flex hash entry. */
   5021 extern int bcm_switch_hash_entry_create(
   5022     int unit, 
   5023     bcm_field_group_t group, 
   5024     bcm_hash_entry_t *entry);
   5025 
   5026 /* Create a blank flex hash entry. */
   5027 extern int bcm_switch_hash_entry_create_qset(
   5028     int unit, 
   5029     bcm_field_qset_t qset, 
   5030     bcm_hash_entry_t *entry);
   5031 
   5032 /* Destroy a blank flex hash entry. */
   5033 extern int bcm_switch_hash_entry_destroy(
   5034     int unit, 
   5035     bcm_hash_entry_t entry);
   5036 
   5037 /* Add flexible hashing data field qualifiers */
   5038 extern int bcm_switch_hash_qualify_data(
   5039     int unit, 
   5040     bcm_hash_entry_t entry, 
   5041     int qual_id, 
   5042     uint32 data, 
   5043     uint32 mask);
   5044 
   5045 /* Get number of banks for a hash table */
   5046 extern int bcm_switch_hash_banks_max_get(
   5047     int unit, 
   5048     bcm_switch_hash_table_t hash_table, 
   5049     uint32 *bank_count);
   5050 
   5051 /* Set/Get hash type for a multi bank hash table */
   5052 extern int bcm_switch_hash_banks_config_set(
   5053     int unit, 
   5054     bcm_switch_hash_table_t hash_table, 
   5055     uint32 bank_num, 
   5056     int hash_type, 
   5057     uint32 hash_offset);
   5058 
   5059 /* Set/Get hash type for a multi bank hash table */
   5060 extern int bcm_switch_hash_banks_config_get(
   5061     int unit, 
   5062     bcm_switch_hash_table_t hash_table, 
   5063     uint32 bank_num, 
   5064     int *hash_type, 
   5065     uint32 *hash_offset);
   5066 
   5067 #endif /* BCM_HIDE_DISPATCHABLE */
   5068 
   5069 /* Entry type for retrieving temperature values. */
   5070 typedef _shr_switch_temperature_monitor_t bcm_switch_temperature_monitor_t;
   5071 
   5072 #ifndef BCM_HIDE_DISPATCHABLE
   5073 
   5074 /* 
   5075  * There are temperature monitors embedded in the various points of some
   5076  * switch chips for the purpose of monitoring the health of the chip.
   5077  * This API retrieves each temperature monitor's current value and
   5078  * peak value. The value unit is 0.1 celsius degree. Table \ref
   5079  * bcm_switch_temperature_monitor_t
   5080  * describes the meaning of each field of the structure
   5081  * bcm_switch_temperature_monitor_t.
   5082  */
   5083 extern int bcm_switch_temperature_monitor_get(
   5084     int unit, 
   5085     int temperature_max, 
   5086     bcm_switch_temperature_monitor_t *temperature_array, 
   5087     int *temperature_count);
   5088 
   5089 #endif /* BCM_HIDE_DISPATCHABLE */
   5090 
   5091 /* Switch packet info flags. */
   5092 #define BCM_SWITCH_PKT_INFO_SRC_GPORT       (1 << 0)   /* Source gport (module,
   5093                                                           port) field valid. */
   5094 #define BCM_SWITCH_PKT_INFO_VLAN            (1 << 1)   /* VLAN identifier field
   5095                                                           valid. */
   5096 #define BCM_SWITCH_PKT_INFO_ETHERTYPE       (1 << 2)   /* EtherType field valid. */
   5097 #define BCM_SWITCH_PKT_INFO_SRC_MAC         (1 << 3)   /* Source MAC address
   5098                                                           field valid. */
   5099 #define BCM_SWITCH_PKT_INFO_DST_MAC         (1 << 4)   /* Destination MAC
   5100                                                           address field valid. */
   5101 #define BCM_SWITCH_PKT_INFO_SRC_IP          (1 << 5)   /* Source IPv4 address
   5102                                                           field valid. */
   5103 #define BCM_SWITCH_PKT_INFO_DST_IP          (1 << 6)   /* Destination IPv4
   5104                                                           address field valid. */
   5105 #define BCM_SWITCH_PKT_INFO_SRC_IPV6        (1 << 7)   /* Source IPv6 address
   5106                                                           field valid. */
   5107 #define BCM_SWITCH_PKT_INFO_DST_IPV6        (1 << 8)   /* Destination IPv6
   5108                                                           address field valid. */
   5109 #define BCM_SWITCH_PKT_INFO_PROTOCOL        (1 << 9)   /* IP protocol field
   5110                                                           valid. */
   5111 #define BCM_SWITCH_PKT_INFO_SRC_L4_PORT     (1 << 10)  /* Source L4 port field
   5112                                                           valid. */
   5113 #define BCM_SWITCH_PKT_INFO_DST_L4_PORT     (1 << 11)  /* Destination L4 port
   5114                                                           field valid. */
   5115 #define BCM_SWITCH_PKT_INFO_HASH_TRUNK      (1 << 12)  /* Retrieve trunk hash
   5116                                                           result. */
   5117 #define BCM_SWITCH_PKT_INFO_HASH_MULTIPATH  (1 << 13)  /* Retrieve ECMP hash
   5118                                                           result. */
   5119 #define BCM_SWITCH_PKT_INFO_HASH_UDP_SOURCE_PORT (1 << 14)  /* Retrieve Entropy Value
   5120                                                           of VXLan packet. */
   5121 #define BCM_SWITCH_PKT_INFO_HASH_LBID       (1 << 15)  /* Retrieve LBID. */
   5122 #define BCM_SWITCH_PKT_INFO_HASH_OVERLAY    (1 << 16)  /* Retrieve ECMP hash
   5123                                                           result for overlay
   5124                                                           layer. */
   5125 #define BCM_SWITCH_PKT_INFO_TOP_LABEL       (1 << 17)  /* First label in MPLS
   5126                                                           stack. */
   5127 #define BCM_SWITCH_PKT_INFO_2ND_LABEL       (1 << 18)  /* Secondt label in MPLS
   5128                                                           stack. */
   5129 #define BCM_SWITCH_PKT_INFO_3RD_LABEL       (1 << 19)  /* Third label in MPLS
   5130                                                           stack. */
   5131 #define BCM_SWITCH_PKT_INFO_LABELS_4MSB     (1 << 20)  /* 4MSB of top, second
   5132                                                           and third label in
   5133                                                           MPLS stack. */
   5134 
   5135 /* Packet forward reason for hash calculation. */
   5136 typedef enum bcm_switch_pkt_hash_info_fwd_reason_e {
   5137     bcmSwitchPktHashInfoFwdReasonUnicast = 0, /* Known unicast packet */
   5138     bcmSwitchPktHashInfoFwdReasonIpmc = 1, /* L3 multicast packet */
   5139     bcmSwitchPktHashInfoFwdReasonL2mc = 2, /* L2 multicast packet */
   5140     bcmSwitchPktHashInfoFwdReasonBcast = 3, /* Broadcast packet */
   5141     bcmSwitchPktHashInfoFwdReasonDlf = 4 /* Destination lookup failed packet */
   5142 } bcm_switch_pkt_hash_info_fwd_reason_t;
   5143 
   5144 #define BCM_SWITCH_PKT_HASH_INFO_FWD_REASON_STRINGS \
   5145     "Unicast", \
   5146     "Ipmc", \
   5147     "L2mc", \
   5148     "Bcast", \
   5149     "Dlf" 
   5150 
   5151 /* 
   5152  * Switch packet info structure.
   5153  * 
   5154  * Contains packet fields for calculating aggregate link hash values.
   5155  */
   5156 typedef struct bcm_switch_pkt_info_s {
   5157     uint32 flags;                       /* BCM_SWITCH_PKT_INFO_xxx flags for
   5158                                            packet parameter hashing. */
   5159     bcm_gport_t src_gport;              /* Source module and port,
   5160                                            BCM_GPORT_INVALID to wildcard. */
   5161     bcm_vlan_t vid;                     /* VLAN ID. */
   5162     bcm_ethertype_t ethertype;          /* EtherType */
   5163     bcm_mac_t src_mac;                  /* Source MAC address. */
   5164     bcm_mac_t dst_mac;                  /* Destination MAC address. */
   5165     bcm_ip_t sip;                       /* Source host IP address (IPv4). */
   5166     bcm_ip_t dip;                       /* Destination host IP address (IPv4). */
   5167     bcm_ip6_t sip6;                     /* Source host IP address (IPv6). */
   5168     bcm_ip6_t dip6;                     /* Destination host IP address (IPv6). */
   5169     uint8 protocol;                     /* IP protocol */
   5170     uint32 src_l4_port;                 /* Source L4 port */
   5171     uint32 dst_l4_port;                 /* Destination L4 port. */
   5172     bcm_gport_t trunk_gport;            /* Gport of trunk type on which packet
   5173                                            will egress. */
   5174     bcm_if_t mpintf;                    /* Multipath egress forwarding object. */
   5175     bcm_switch_pkt_hash_info_fwd_reason_t fwd_reason; /* Packet forward reason. */
   5176     bcm_mpls_label_t top_label;         /* First label in MPLS stack. */
   5177     bcm_mpls_label_t second_label;      /* Second label in MPLS stack. */
   5178     bcm_mpls_label_t third_label;       /* Third label in MPLS stack. */
   5179 } bcm_switch_pkt_info_t;
   5180 
   5181 /* Initialize a bcm_switch_pkt_info_t structure. */
   5182 extern void bcm_switch_pkt_info_t_init(
   5183     bcm_switch_pkt_info_t *pkt_info);
   5184 
   5185 #ifndef BCM_HIDE_DISPATCHABLE
   5186 
   5187 /* 
   5188  * Gets the hash result for the specified link aggregation method using
   5189  * provided packet parameters and device configuration.
   5190  */
   5191 extern int bcm_switch_pkt_info_hash_get(
   5192     int unit, 
   5193     bcm_switch_pkt_info_t *pkt_info, 
   5194     bcm_gport_t *dst_gport, 
   5195     bcm_if_t *dst_intf);
   5196 
   5197 #endif /* BCM_HIDE_DISPATCHABLE */
   5198 
   5199 /* 
   5200  * Read function signature to register for the application provided
   5201  * stable for Level 2 Warm Boot
   5202  */
   5203 typedef int (*bcm_switch_read_func_t)(
   5204     int unit, 
   5205     uint32 *buf, 
   5206     int offset, 
   5207     int nbytes);
   5208 
   5209 /* 
   5210  * Write function signature to register for the application provided
   5211  * stable for Level 2 Warm Boot
   5212  */
   5213 typedef int (*bcm_switch_write_func_t)(
   5214     int unit, 
   5215     uint32 *buf, 
   5216     int offset, 
   5217     int nbytes);
   5218 
   5219 #ifndef BCM_HIDE_DISPATCHABLE
   5220 
   5221 /* 
   5222  * Register read/write functions for the application provided stable for
   5223  * Level 2 Warm Boot
   5224  */
   5225 extern int bcm_switch_stable_register(
   5226     int unit, 
   5227     bcm_switch_read_func_t rf, 
   5228     bcm_switch_write_func_t wf);
   5229 
   5230 #endif /* BCM_HIDE_DISPATCHABLE */
   5231 
   5232 /* Call back function signature to register */
   5233 typedef void (*bcm_switch_event_cb_t)(
   5234     int unit, 
   5235     bcm_switch_event_t event, 
   5236     uint32 arg1, 
   5237     uint32 arg2, 
   5238     uint32 arg3, 
   5239     void *userdata);
   5240 
   5241 #ifndef BCM_HIDE_DISPATCHABLE
   5242 
   5243 /* Registers/Unregisters a callback function for switch critical events */
   5244 extern int bcm_switch_event_register(
   5245     int unit, 
   5246     bcm_switch_event_cb_t cb, 
   5247     void *userdata);
   5248 
   5249 /* Registers/Unregisters a callback function for switch critical events */
   5250 extern int bcm_switch_event_unregister(
   5251     int unit, 
   5252     bcm_switch_event_cb_t cb, 
   5253     void *userdata);
   5254 
   5255 #endif /* BCM_HIDE_DISPATCHABLE */
   5256 
   5257 /* Backward compatibility. */
   5258 #define bcm_switch_port_control_get bcm_switch_control_port_set 
   5259 #define bcm_switch_port_control_set bcm_switch_control_port_set 
   5260 
   5261 #define BCM_HASH_ZERO           0x00000001 /* Always return 0 (debug only). */
   5262 #define BCM_HASH_LSB            0x00000002 /* Return LSB of key. */
   5263 #define BCM_HASH_CRC16L         0x00000003 /* Lower bits of CRC-16. */
   5264 #define BCM_HASH_CRC16U         0x00000004 /* Upper bits of CRC-16. */
   5265 #define BCM_HASH_CRC32L         0x00000005 /* Lower bits of CRC-32. */
   5266 #define BCM_HASH_CRC32U         0x00000006 /* Upper bits of CRC-32. */
   5267 #define BCM_HASH_XORU           0x00000007 /* Upper bits of byte by byte XOR. */
   5268 #define BCM_HASH_XORL           0x00000008 /* Lower bits of byte by byte XOR. */
   5269 #define BCM_HASH_OFFSET         0x10000000 /* Use supplied offset value into the
   5270                                               hash value. */
   5271 
   5272 /* Multipath (ECMP/WCMP) hashing. */
   5273 #define BCM_HASH_CONTROL_MULTIPATH_L4PORTS  0x0001     /* Use TCP/UDP ports. */
   5274 #define BCM_HASH_CONTROL_MULTIPATH_DIP      0x0002     /* Use destination IP
   5275                                                           address. */
   5276 #define BCM_HASH_CONTROL_MULTIPATH_USERDEF(_val)  \
   5277     (((_val) & 0xff) << 24) 
   5278 #define BCM_HASH_CONTROL_MULTIPATH_USERDEF_VAL(c)  \
   5279     ((c) >> 24 & 0xff) 
   5280 
   5281 /* Unicast trunk hash controls. */
   5282 #define BCM_HASH_CONTROL_TRUNK_UC_XGS2      0x0004     /* 5695 compatible hash. */
   5283 #define BCM_HASH_CONTROL_TRUNK_UC_SRCPORT   0x0008     /* Use source port. */
   5284 
   5285 /* Non-unicast trunk block mask hash controls. */
   5286 #define BCM_HASH_CONTROL_TRUNK_NUC_DST      0x0010     /* Use destination MAC or
   5287                                                           IP address. */
   5288 #define BCM_HASH_CONTROL_TRUNK_NUC_SRC      0x0020     /* Use source MAC or IP
   5289                                                           address. */
   5290 #define BCM_HASH_CONTROL_TRUNK_NUC_MODPORT  0x0040     /* Use module ID and
   5291                                                           port. */
   5292 
   5293 /* Use enhanced (aka. RTAG7) hashing algorithm. */
   5294 #define BCM_HASH_CONTROL_ECMP_ENHANCE       0x0080     /* Use enhanced ECMP
   5295                                                           hashing. */
   5296 #define BCM_HASH_CONTROL_TRUNK_NUC_ENHANCE  0x0100     /* Use enhanced
   5297                                                           non-unicast trunk
   5298                                                           hashing. */
   5299 #define BCM_HASH_CONTROL_ECMP_OVERLAY_ENHANCE 0x0200     /* Use enhanced ECMP
   5300                                                           hashing for overlay
   5301                                                           layer. */
   5302 
   5303 /* Enhanced hash field config control. */
   5304 #define BCM_HASH_FIELD_CONFIG_CRC16XOR8     0x00000001 /* 8-bit CRC16 + 8-bit
   5305                                                           XOR8. */
   5306 #define BCM_HASH_FIELD_CONFIG_CRC16XOR4     0x00000002 /* 8-bit CRC16 + 8-bit
   5307                                                           XOR4. */
   5308 #define BCM_HASH_FIELD_CONFIG_CRC16XOR2     0x00000003 /* 8-bit CRC16 + 8-bit
   5309                                                           XOR2. */
   5310 #define BCM_HASH_FIELD_CONFIG_CRC16XOR1     0x00000004 /* 8-bit CRC16 + 8-bit
   5311                                                           XOR1. */
   5312 #define BCM_HASH_FIELD_CONFIG_CRC16         0x00000005 /* 16-bit CRC16. */
   5313 #define BCM_HASH_FIELD_CONFIG_XOR16         0x00000006 /* 16-bit XOR. */
   5314 #define BCM_HASH_FIELD_CONFIG_CRC16CCITT    0x00000007 /* 16-bit CRC using CCITT
   5315                                                           polynomial. */
   5316 #define BCM_HASH_FIELD_CONFIG_CRC32LO       0x00000008 /* Lower 16-bit of CRC32. */
   5317 #define BCM_HASH_FIELD_CONFIG_CRC32HI       0x00000009 /* Higher 16-bit of
   5318                                                           CRC32. */
   5319 #define BCM_HASH_FIELD_CONFIG_CRC32_ETH_LO  0x0000000a /* Lower 16-bit of
   5320                                                           Ethernet CRC32. */
   5321 #define BCM_HASH_FIELD_CONFIG_CRC32_ETH_HI  0x0000000b /* Higher 16-bit of
   5322                                                           Ethernet CRC32. */
   5323 #define BCM_HASH_FIELD_CONFIG_CRC32_KOOPMAN_LO 0x0000000c /* Lower 16-bit of
   5324                                                           Koopman CRC32. */
   5325 #define BCM_HASH_FIELD_CONFIG_CRC32_KOOPMAN_HI 0x0000000d /* Higher 16-bit of
   5326                                                           Koopman CRC32. */
   5327 #define BCM_HASH_FIELD_CONFIG_VERSATILE_HASH_LO 0x0000000e /* Lower 16-bit of
   5328                                                           Versatile Hash. */
   5329 #define BCM_HASH_FIELD_CONFIG_VERSATILE_HASH_HI 0x0000000f /* Higher 16-bit of
   5330                                                           Versatile Hash. */
   5331 
   5332 /* Enhanced hash field selection disable control. */
   5333 #define BCM_HASH_FIELD0_DISABLE_IP4         0x00000001 /* Selection 0 for IPv4
   5334                                                           packets. */
   5335 #define BCM_HASH_FIELD1_DISABLE_IP4         0x00000002 /* Selection 1 for IPv4
   5336                                                           packets. */
   5337 #define BCM_HASH_FIELD0_DISABLE_IP6         0x00000004 /* Selection 0 for IPv6
   5338                                                           packets. */
   5339 #define BCM_HASH_FIELD1_DISABLE_IP6         0x00000008 /* Selection 1 for IPv6
   5340                                                           packets. */
   5341 #define BCM_HASH_FIELD0_DISABLE_MPLS        0x00000010 /* Selection 0 for MPLS
   5342                                                           packets. */
   5343 #define BCM_HASH_FIELD1_DISABLE_MPLS        0x00000020 /* Selection 1 for MPLS
   5344                                                           packets. */
   5345 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_IP 0x00000040 /* Selection 0 for tunnel
   5346                                                           IPv4 over IPv4
   5347                                                           packets. */
   5348 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_IP 0x00000080 /* Selection 1 for tunnel
   5349                                                           IPv4 over IPv4
   5350                                                           packets. */
   5351 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_IP 0x00000100 /* Selection 0 for tunnel
   5352                                                           IPv6 over IPv4
   5353                                                           packets. */
   5354 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_IP 0x00000200 /* Selection 1 for tunnel
   5355                                                           IPv6 over IPv4
   5356                                                           packets. */
   5357 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_GRE 0x00000400 /* Selection 0 for tunnel
   5358                                                           IPv4 over GRE packets. */
   5359 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_GRE 0x00000800 /* Selection 1 for tunnel
   5360                                                           IPv4 over GRE packets. */
   5361 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_GRE 0x00001000 /* Selection 0 for tunnel
   5362                                                           IPv6 over GRE packets. */
   5363 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_GRE 0x00002000 /* Selection 1 for tunnel
   5364                                                           IPv6 over GRE packets. */
   5365 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_IP6 0x00004000 /* Selection 0 for tunnel
   5366                                                           IPv4 over IPv6
   5367                                                           packets. */
   5368 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_IP6 0x00008000 /* Selection 1 for tunnel
   5369                                                           IPv4 over IPv6
   5370                                                           packets. */
   5371 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_IP6 0x00010000 /* Selection 0 for tunnel
   5372                                                           IPv6 over IPv6
   5373                                                           packets. */
   5374 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_IP6 0x00020000 /* Selection 1 for tunnel
   5375                                                           IPv6 over IPv6
   5376                                                           packets. */
   5377 #define BCM_HASH_FIELD0_DISABLE_MIM         0x00040000 /* Selection 0 for MIM
   5378                                                           packets. */
   5379 #define BCM_HASH_FIELD1_DISABLE_MIM         0x00080000 /* Selection 1 for MIM
   5380                                                           packets. */
   5381 #define BCM_HASH_FIELD0_DISABLE_FCOE        0x00100000 /* Selection 0 for FCoE
   5382                                                           packets. */
   5383 #define BCM_HASH_FIELD1_DISABLE_FCOE        0x00200000 /* Selection 1 for FCoE
   5384                                                           packets. */
   5385 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_GRE_IP4 0x00400000 /* Selection 0 for tunnel
   5386                                                           IPv4 over GRE IPv4
   5387                                                           packets. */
   5388 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP4_GRE_IP6 0x00800000 /* Selection 0 for tunnel
   5389                                                           IPv4 over GRE IPv6
   5390                                                           packets. */
   5391 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_GRE_IP4 0x01000000 /* Selection 1 for tunnel
   5392                                                           IPv4 over GRE IPv4
   5393                                                           packets. */
   5394 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP4_GRE_IP6 0x02000000 /* Selection 1 for tunnel
   5395                                                           IPv4 over GRE IPv6
   5396                                                           packets. */
   5397 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_GRE_IP4 0x04000000 /* Selection 0 for tunnel
   5398                                                           IPv6 over GRE IPv4
   5399                                                           packets. */
   5400 #define BCM_HASH_FIELD0_DISABLE_TUNNEL_IP6_GRE_IP6 0x08000000 /* Selection 0 for tunnel
   5401                                                           IPv6 over GRE IPv6
   5402                                                           packets. */
   5403 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_GRE_IP4 0x10000000 /* Selection 1 for tunnel
   5404                                                           IPv6 over GRE IPv4
   5405                                                           packets. */
   5406 #define BCM_HASH_FIELD1_DISABLE_TUNNEL_IP6_GRE_IP6 0x20000000 /* Selection 1 for tunnel
   5407                                                           IPv6 over GRE IPv6
   5408                                                           packets. */
   5409 #define BCM_HASH_FIELD0_DISABLE_VXLAN       0x40000000 /* Selection 0 for tunnel
   5410                                                           VXLAN packets. */
   5411 #define BCM_HASH_FIELD1_DISABLE_VXLAN       0x80000000 /* Selection 1 for tunnel
   5412                                                           VXLAN packets. */
   5413 
   5414 /* 
   5415  * Extended flags for bcmSwitchHashSelectControlExtended switch control
   5416  * type to disable enhanced hash field selection control.
   5417  */
   5418 #define BCM_HASH_FIELD0_DISABLE_ROCE1       0x00000001 /* Hash block A field
   5419                                                           selection disable for
   5420                                                           RoCEv1 packet. */
   5421 #define BCM_HASH_FIELD1_DISABLE_ROCE1       0x00000002 /* Hash block B field
   5422                                                           selection disable for
   5423                                                           RoCEv1 packet. */
   5424 #define BCM_HASH_FIELD0_DISABLE_ROCE2_IP4   0x00000004 /* Hash block A field
   5425                                                           selection disable for
   5426                                                           RoCEv2 IPv4 packet. */
   5427 #define BCM_HASH_FIELD1_DISABLE_ROCE2_IP4   0x00000008 /* Hash block B field
   5428                                                           selection disable for
   5429                                                           RoCEv2 IPv4 packet. */
   5430 #define BCM_HASH_FIELD0_DISABLE_ROCE2_IP6   0x00000010 /* Hash block A field
   5431                                                           selection disable for
   5432                                                           RoCEv2 IPv6 packet. */
   5433 #define BCM_HASH_FIELD1_DISABLE_ROCE2_IP6   0x00000020 /* Hash block B field
   5434                                                           selection disable for
   5435                                                           RoCEv2 IPv6 packet. */
   5436 
   5437 /* UDF hashing select. */
   5438 #define BCM_HASH_FIELD0_ENABLE_UDFHASH  0x00000001 /* UDF hashing enable on
   5439                                                       engine 0. */
   5440 #define BCM_HASH_FIELD1_ENABLE_UDFHASH  0x00000002 /* UDF hashing enable on
   5441                                                       engine 1. */
   5442 
   5443 /* Enhanced hash field selection. */
   5444 #define BCM_HASH_FIELD_DSTMOD           0x00000001 /* Destination module ID. */
   5445 #define BCM_HASH_NON_SYMMETRICAL        BCM_HASH_FIELD_DSTMOD /* Non symmetrical hashing. */
   5446 #define BCM_HASH_FIELD_DSTPORT          0x00000002 /* Destination port ID. */
   5447 #define BCM_HASH_FIELD_SRCMOD           0x00000004 /* Source modle ID. */
   5448 #define BCM_HASH_FIELD_SRCPORT          0x00000008 /* Souce port ID. */
   5449 #define BCM_HASH_FIELD_PROTOCOL         0x00000010 /* Protocol ID. */
   5450 #define BCM_HASH_FIELD_DSTL4            0x00000020 /* Destination L4 port. */
   5451 #define BCM_HASH_FIELD_SRCL4            0x00000040 /* Source L4 port. */
   5452 #define BCM_HASH_FIELD_L4               (BCM_HASH_FIELD_SRCL4 | BCM_HASH_FIELD_DSTL4) /* The entire L4 field. */
   5453 #define BCM_HASH_FIELD_VLAN             0x00000080 /* VLAN ID. */
   5454 #define BCM_HASH_FIELD_IP4DST_LO        0x00000100 /* IPv4 destination address
   5455                                                       lower 16 bits. */
   5456 #define BCM_HASH_FIELD_IP4DST_HI        0x00000200 /* IPv4 destination address
   5457                                                       upper 16 bits. */
   5458 #define BCM_HASH_FIELD_IP4SRC_LO        0x00000400 /* IPv4 source address lower
   5459                                                       16 bits. */
   5460 #define BCM_HASH_FIELD_IP4SRC_HI        0x00000800 /* IPv4 source address upper
   5461                                                       16 bits. */
   5462 #define BCM_HASH_FIELD_IPV4_ADDRESS     (BCM_HASH_FIELD_IP4DST_LO | BCM_HASH_FIELD_IP4DST_HI | BCM_HASH_FIELD_IP4SRC_LO | BCM_HASH_FIELD_IP4SRC_HI) /* The entire IPv4 address
   5463                                                       field including the source
   5464                                                       and the destination
   5465                                                       addresses. */
   5466 #define BCM_HASH_FIELD_IP6DST_LO        0x00001000 /* IPv6 collapsed destination
   5467                                                       address lower 16 bits. */
   5468 #define BCM_HASH_FIELD_IP6DST_HI        0x00002000 /* IPv6 collapsed destination
   5469                                                       address upper 16 bits. */
   5470 #define BCM_HASH_FIELD_IP6SRC_LO        0x00004000 /* IPv6 collapsed source
   5471                                                       address lower 16 bits. */
   5472 #define BCM_HASH_FIELD_IP6SRC_HI        0x00008000 /* IPv6 collapsed source
   5473                                                       address upper 16 bits. */
   5474 #define BCM_HASH_FIELD_IPV6_ADDRESS     (BCM_HASH_FIELD_IP6DST_LO | BCM_HASH_FIELD_IP6DST_HI | BCM_HASH_FIELD_IP6SRC_LO | BCM_HASH_FIELD_IP6SRC_HI) /* The entire IPv6 address
   5475                                                       field including the source
   5476                                                       and the destination
   5477                                                       addresses. */
   5478 #define BCM_HASH_FIELD_FLOWLABEL_LO     BCM_HASH_FIELD_DSTMOD /* IPv6 flow label lower 16
   5479                                                       bits. */
   5480 #define BCM_HASH_FIELD_FLOWLABEL_HI     BCM_HASH_FIELD_DSTPORT /* IPv6 flow label upper 4
   5481                                                       bits. */
   5482 #define BCM_HASH_FIELD_FLOW_LABEL       (BCM_HASH_FIELD_FLOWLABEL_LO | BCM_HASH_FIELD_FLOWLABEL_HI) /* IPv6 flow label. */
   5483 #define BCM_HASH_FIELD_NXT_HDR          0x00010000 /* Next header. */
   5484 #define BCM_HASH_FIELD_ETHER_TYPE       0x00020000 /* Ether type. */
   5485 #define BCM_HASH_FIELD_MACDA_LO         0x00040000 /* MAC destination address
   5486                                                       lower 16 bits. */
   5487 #define BCM_HASH_FIELD_MACDA_MI         0x00080000 /* MAC destination address
   5488                                                       middle 16 bits. */
   5489 #define BCM_HASH_FIELD_MACDA_HI         0x00100000 /* MAC destination address
   5490                                                       upper 16 bits. */
   5491 #define BCM_HASH_FIELD_MACSA_LO         0x00200000 /* MAC source address lower
   5492                                                       16 bits. */
   5493 #define BCM_HASH_FIELD_MACSA_MI         0x00400000 /* MAC source address middle
   5494                                                       16 bits. */
   5495 #define BCM_HASH_FIELD_MACSA_HI         0x00800000 /* MAC source address upper
   5496                                                       16 bits. */
   5497 #define BCM_HASH_FIELD_MAC_ADDRESS      (BCM_HASH_FIELD_MACDA_LO | BCM_HASH_FIELD_MACDA_MI | BCM_HASH_FIELD_MACDA_HI | BCM_HASH_FIELD_MACSA_LO | BCM_HASH_FIELD_MACSA_MI | BCM_HASH_FIELD_MACSA_HI) /* MAC source and destination
   5498                                                       address. */
   5499 #define BCM_HASH_FIELD_LOAD_BALANCE     0x01000000 /* Load balance ID - HiGig2
   5500                                                       only. */
   5501 #define BCM_HASH_FIELD_RSVD_LABELS      0x02000000 /* Reserved second label, top
   5502                                                       label. */
   5503 #define BCM_HASH_FIELD_2ND_LABEL        0x04000000 /* Second label. */
   5504 #define BCM_HASH_FIELD_TOP_LABEL        0x08000000 /* Top label. */
   5505 #define BCM_HASH_FIELD_LOOKUP_ID_LO     0x10000000 /* Used for ISID[15:0]. */
   5506 #define BCM_HASH_FIELD_LOOKUP_ID_HI     0x20000000 /* Used for ISID[23:16]. */
   5507 #define BCM_HASH_FIELD_CNTAG_FLOW_ID    0x40000000 /* CNTAG flow ID. */
   5508 #define BCM_HASH_MPLS_ALL_LABELS        0x80000000 /* All the MPLS labels. */
   5509 
   5510 /* Enhanced field selection bit map for RoCE hash field selection. */
   5511 #define BCM_HASH_ROCE_FIELD_DSTMOD          BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   5512 #define BCM_HASH_ROCE_FIELD_DSTPORT         BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   5513 #define BCM_HASH_ROCE_FIELD_SRCMOD          BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   5514 #define BCM_HASH_ROCE_FIELD_SRCPORT         BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   5515 #define BCM_HASH_ROCE_FIELD_FLOWLABEL_LO    BCM_HASH_FIELD_DSTMOD /* RoCE flow label lower
   5516                                                           16 bits. */
   5517 #define BCM_HASH_ROCE_FIELD_FLOWLABEL_HI    BCM_HASH_FIELD_DSTPORT /* RoCE flow label upper
   5518                                                           4 bits. */
   5519 #define BCM_HASH_ROCE_FIELD_DSTL4           BCM_HASH_FIELD_DSTL4 /* RoCEv2 L4 destination
   5520                                                           port. */
   5521 #define BCM_HASH_ROCE_FIELD_SRCL4           BCM_HASH_FIELD_SRCL4 /* RoCEv2 L4 source port. */
   5522 #define BCM_HASH_ROCE_FIELD_VLAN            BCM_HASH_FIELD_VLAN /* VLAN ID. */
   5523 #define BCM_HASH_ROCE_FIELD_MACDA_LO        BCM_HASH_FIELD_MACDA_LO /* RoCEv1 MAC destination
   5524                                                           address lower 16 bits. */
   5525 #define BCM_HASH_ROCE_FIELD_MACDA_MI        BCM_HASH_FIELD_MACDA_MI /* RoCEv1 MAC destination
   5526                                                           address middle 16
   5527                                                           bits. */
   5528 #define BCM_HASH_ROCE_FIELD_MACDA_HI        BCM_HASH_FIELD_MACDA_HI /* RoCEv1 MAC destination
   5529                                                           address upper 16 bits. */
   5530 #define BCM_HASH_ROCE_FIELD_MACSA_LO        BCM_HASH_FIELD_MACSA_LO /* RoCEv1 MAC source
   5531                                                           address lower 16 bits. */
   5532 #define BCM_HASH_ROCE_FIELD_MACSA_MI        BCM_HASH_FIELD_MACSA_MI /* RoCEv1 MAC source
   5533                                                           address middle 16
   5534                                                           bits. */
   5535 #define BCM_HASH_ROCE_FIELD_MACSA_HI        BCM_HASH_FIELD_MACSA_HI /* RoCEv1 MAC source
   5536                                                           address upper16 bits. */
   5537 #define BCM_HASH_ROCE_FIELD_IP4DST_LO       BCM_HASH_FIELD_IP4DST_LO /* RoCEv2 IPv4
   5538                                                           destination address
   5539                                                           lower 16 bits. */
   5540 #define BCM_HASH_ROCE_FIELD_IP4DST_HI       BCM_HASH_FIELD_IP4DST_HI /* RoCEv2 IPv4
   5541                                                           destination address
   5542                                                           upper 16 bits. */
   5543 #define BCM_HASH_ROCE_FIELD_IP4SRC_LO       BCM_HASH_FIELD_IP4SRC_LO /* RoCEv2 IPv4 source
   5544                                                           address lower 16 bits. */
   5545 #define BCM_HASH_ROCE_FIELD_IP4SRC_HI       BCM_HASH_FIELD_IP4SRC_HI /* RoCEv2 IPv4 source
   5546                                                           address upper 16 bits. */
   5547 #define BCM_HASH_ROCE_FIELD_IP6DST_LO       BCM_HASH_FIELD_IP6DST_LO /* RoCEv2 IPv6 collapsed
   5548                                                           destination address
   5549                                                           lower 16 bits. */
   5550 #define BCM_HASH_ROCE_FIELD_IP6DST_HI       BCM_HASH_FIELD_IP6DST_HI /* RoCEv2 IPv6 collapsed
   5551                                                           destination address
   5552                                                           upper 16 bits. */
   5553 #define BCM_HASH_ROCE_FIELD_IP6SRC_LO       BCM_HASH_FIELD_IP6SRC_LO /* RoCEv2 IPv6 collapsed
   5554                                                           source address lower
   5555                                                           16 bits. */
   5556 #define BCM_HASH_ROCE_FIELD_IP6SRC_HI       BCM_HASH_FIELD_IP6SRC_HI /* RoCEv2 IPv6 collapsed
   5557                                                           source address upper
   5558                                                           16 bits. */
   5559 #define BCM_HASH_ROCE_FIELD_BTH_DSTQP_COLLAPSED 0x00010000 /* RoCE Collapsed
   5560                                                           Destination Queue Pair
   5561                                                           in BTH (Base Transport
   5562                                                           Header). */
   5563 #define BCM_HASH_ROCE_FIELD_BTH_PARTITION_KEY 0x00020000 /* RoCE Partition Key in
   5564                                                           BTH (Base Transport
   5565                                                           Header). */
   5566 
   5567 /* Enhanced hash MPLS field selection. */
   5568 #define BCM_HASH_MPLS_FIELD_DSTMOD          BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   5569 #define BCM_HASH_MPLS_FIELD_DSTPORT         BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   5570 #define BCM_HASH_MPLS_FIELD_SRCMOD          BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   5571 #define BCM_HASH_MPLS_FIELD_SRCPORT         BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   5572 #define BCM_HASH_MPLS_FIELD_3RD_LABEL       0x00000010 /* Third label. */
   5573 #define BCM_HASH_MPLS_FIELD_LABELS_4MSB     0x00000020 /* Most significant 4
   5574                                                           bits of top, second,
   5575                                                           and third label. */
   5576 #define BCM_HASH_MPLS_FIELD_IP4DST_LO       BCM_HASH_FIELD_IP4DST_LO /* IPv4 destination
   5577                                                           address lower 16 bits. */
   5578 #define BCM_HASH_MPLS_FIELD_IP4DST_HI       BCM_HASH_FIELD_IP4DST_HI /* IPv4 destination
   5579                                                           address upper 16 bits. */
   5580 #define BCM_HASH_MPLS_FIELD_IP4SRC_LO       BCM_HASH_FIELD_IP4SRC_LO /* IPv4 source address
   5581                                                           lower 16 bits. */
   5582 #define BCM_HASH_MPLS_FIELD_IP4SRC_HI       BCM_HASH_FIELD_IP4SRC_HI /* IPv4 source address
   5583                                                           upper 16 bits. */
   5584 #define BCM_HASH_MPLS_FIELD_3RD_LABEL_4MSB_5TH_LABEL BCM_HASH_FIELD_IP6DST_LO /* Third label or 4 most
   5585                                                           significant bits of
   5586                                                           5th label. */
   5587 #define BCM_HASH_MPLS_FIELD_LABELS_4MSB_3RD_LABEL BCM_HASH_FIELD_IP6DST_HI /* Most significant 4
   5588                                                           bits of top, second,
   5589                                                           and third label or 3rd
   5590                                                           label alone. */
   5591 #define BCM_HASH_MPLS_FIELD_IP4DST_IP6DST_LO_5TH_LABEL BCM_HASH_FIELD_IP6SRC_LO /* IPv4 destination
   5592                                                           address lower 16 bits
   5593                                                           or IPv6 collapsed
   5594                                                           destination address
   5595                                                           lower 16 bits or 5th
   5596                                                           label. */
   5597 #define BCM_HASH_MPLS_FIELD_IP4DST_IP6DST_HI_4TH_LABEL BCM_HASH_FIELD_IP6SRC_HI /* IPv4 destination
   5598                                                           address upper 16 bits
   5599                                                           or IPv6 collapsed
   5600                                                           destination address
   5601                                                           upper 16 bits or 4th
   5602                                                           label. */
   5603 #define BCM_HASH_MPLS_FIELD_IP4SRC_IP6SRC_LO_4MSB_4TH_LABEL BCM_HASH_FIELD_NXT_HDR /* IPv4 source address
   5604                                                           lower 16 bits or IPv6
   5605                                                           collapsed source
   5606                                                           address lower 16 bits
   5607                                                           or 4 most significant
   5608                                                           bits of 4th label. */
   5609 #define BCM_HASH_MPLS_FIELD_IP4SRC_IP6SRC_HI_4MSB BCM_HASH_FIELD_ETHER_TYPE /* IPv4 source address
   5610                                                           upper 16 bits or IPv6
   5611                                                           collapsed source
   5612                                                           address upper 16 bits
   5613                                                           or 4 most significant
   5614                                                           bits of 1st,2nd,3rd
   5615                                                           labels. */
   5616 #define BCM_HASH_MPLS_FIELD_2ND_LABEL       BCM_HASH_FIELD_2ND_LABEL /* Second label. */
   5617 #define BCM_HASH_MPLS_FIELD_TOP_LABEL       BCM_HASH_FIELD_TOP_LABEL /* Top label. */
   5618 #define BCM_HASH_MPLS_FIELD_CNTAG_FLOW_ID   BCM_HASH_FIELD_CNTAG_FLOW_ID /* CNTAG flow ID. */
   5619 
   5620 /* Enhanced hash FCOE field selection. */
   5621 #define BCM_HASH_FCOE_FIELD_DSTMOD          BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   5622 #define BCM_HASH_FCOE_FIELD_DSTPORT         BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   5623 #define BCM_HASH_FCOE_FIELD_SRCMOD          BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   5624 #define BCM_HASH_FCOE_FIELD_SRCPORT         BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   5625 #define BCM_HASH_FCOE_FIELD_VLAN            0x00000010 /* VLAN ID. */
   5626 #define BCM_HASH_FCOE_FIELD_VIRTUAL_FABRIC_ID 0x00000020 /* Virtual Fabric ID. */
   5627 #define BCM_HASH_FCOE_FIELD_RESPONDER_EXCHANGE_ID 0x00000040 /* Responder Exchange_ID. */
   5628 #define BCM_HASH_FCOE_FIELD_ORIGINATOR_EXCHANGE_ID 0x00000080 /* Originator
   5629                                                           Exchange_ID. */
   5630 #define BCM_HASH_FCOE_FIELD_DST_ID_LO       0x00000100 /* Destination_ID lower
   5631                                                           16 bits. */
   5632 #define BCM_HASH_FCOE_FIELD_DST_ID_HI       0x00000200 /* Destination_ID upper
   5633                                                           16 bits. */
   5634 #define BCM_HASH_FCOE_FIELD_SRC_ID_LO       0x00000400 /* Source_ID lower 16
   5635                                                           bits. */
   5636 #define BCM_HASH_FCOE_FIELD_SRC_ID_HI       0x00000800 /* Source_ID upper 16
   5637                                                           bits. */
   5638 #define BCM_HASH_FCOE_FIELD_CNTAG_FLOW_ID   BCM_HASH_FIELD_CNTAG_FLOW_ID /* CNTAG flow ID. */
   5639 
   5640 /* Enhanced hash Trill field selection. */
   5641 #define BCM_HASH_TRILL_FIELD_DSTMOD         BCM_HASH_FIELD_DSTMOD /* Destination module ID. */
   5642 #define BCM_HASH_TRILL_FIELD_DSTPORT        BCM_HASH_FIELD_DSTPORT /* Destination port ID. */
   5643 #define BCM_HASH_TRILL_FIELD_SRCMOD         BCM_HASH_FIELD_SRCMOD /* Source modle ID. */
   5644 #define BCM_HASH_TRILL_FIELD_SRCPORT        BCM_HASH_FIELD_SRCPORT /* Souce port ID. */
   5645 #define BCM_HASH_TRILL_FIELD_VLAN           0x00000010 /* VLAN ID. */
   5646 #define BCM_HASH_TRILL_FIELD_ETHER_TYPE     0x00000020 /* Ether type. */
   5647 #define BCM_HASH_TRILL_FIELD_MACDA_LO       0x00000040 /* MAC destination
   5648                                                           address lower 16 bits. */
   5649 #define BCM_HASH_TRILL_FIELD_MACDA_MI       0x00000080 /* MAC destination
   5650                                                           address middle 16
   5651                                                           bits. */
   5652 #define BCM_HASH_TRILL_FIELD_MACSA_LO       0x00000100 /* MAC source address
   5653                                                           lower 16 bits. */
   5654 #define BCM_HASH_TRILL_FIELD_MACSA_MI       0x00000200 /* MAC source address
   5655                                                           middle 16 bits. */
   5656 #define BCM_HASH_TRILL_FIELD_ING_RBRIDGE_NAME 0x00000400 /* Ingress RBridge
   5657                                                           Nickname. */
   5658 #define BCM_HASH_TRILL_FIELD_EGR_RBRIDGE_NAME 0x00000800 /* Egress RBridge
   5659                                                           Nickname. */
   5660 
   5661 /* Stacking mode select. */
   5662 #define BCM_MIRROR_STACK_MODE_XGS3  0          /* Stacking with BCM5650x
   5663                                                   (BCM5610x, BCM5630x). */
   5664 #define BCM_MIRROR_STACK_MODE_XGS1  1          /* Stacking with BCM5670. */
   5665 #define BCM_MIRROR_STACK_MODE_XGS2  2          /* Stacking with BCM5675-A0. */
   5666 
   5667 #define BCM_COLOR_PRIORITY      0          /* Priority->COLOR mapping. */
   5668 #define BCM_COLOR_OUTER_CFI     1          /* SPVLAN CFI->COLOR mapping. */
   5669 #define BCM_COLOR_INNER_CFI     2          /* CVLAN CFI->COLOR mapping. */
   5670 
   5671 #define BCM_HASH_MPLS_LABEL_NONE        0          /* Normal processing for MPLS
   5672                                                       label stack, i.e. hash
   5673                                                       according to forwarding
   5674                                                       header configuration. */
   5675 #define BCM_HASH_MPLS_LABEL_BOS_START   1          /* Hashing from BOS label,
   5676                                                       skipping all other label. */
   5677 #define BCM_HASH_MPLS_LABEL_BOS_SKIP    2          /* Hashing from header next
   5678                                                       to BOS label, skipping all
   5679                                                       MPLS labels. */
   5680 
   5681 /* IGM/MLD Action select. */
   5682 #define BCM_SWITCH_FORWARD      0x00000001 
   5683 #define BCM_SWITCH_FLOOD        0x00000002 
   5684 #define BCM_SWITCH_DROP         0x00000004 
   5685 #define BCM_SWITCH_CPU          0x00000008 
   5686 
   5687 /* Switch features bypass mode */
   5688 #define BCM_SWITCH_BYPASS_NONE      0          /* No switch logic bypassed. */
   5689 #define BCM_SWITCH_BYPASS_L3_ONLY   1          /* L3 switch logic bypassed. */
   5690 #define BCM_SWITCH_BYPASS_L3_AND_FP 2          /* L3 and FP switch logic
   5691                                                   bypassed. */
   5692 
   5693 /* Switch Remote CPU packet encapsulation priority mapping options. */
   5694 #define BCM_SWITCH_REMOTE_CPU_ENCAP_IEEE    0x00000001 /* Use 802.1P Priority
   5695                                                           mapping for Remote CPU
   5696                                                           packet encapsulation. */
   5697 #define BCM_SWITCH_REMOTE_CPU_ENCAP_HIGIG2  0x00000002 /* Use module header
   5698                                                           traffic class mapping
   5699                                                           for Remote CPU packet
   5700                                                           encapsulation. */
   5701 #define BCM_SWITCH_REMOTE_CPU_ENCAP_IEEE_CPU_TC 0x00000004 /* Use status header
   5702                                                           traffic class mapping
   5703                                                           for Remote CPU packet
   5704                                                           encapsulation. */
   5705 
   5706 /* Switch features filter bypass control modes */
   5707 #define BCM_FILTER_NONE             _SHR_SWITCH_FILTER_NONE /* No switch filter bypass. */
   5708 #define BCM_FILTER_RX_CRCCHK        _SHR_SWITCH_FILTER_RX_CRCCHK /* RX filter bypass CRC check. */
   5709 #define BCM_FILTER_DOS_TOCPU        _SHR_SWITCH_FILTER_DOS_TOCPU /* DOS filter bypass at the frame
   5710                                                   to CPU. */
   5711 #define BCM_FILTER_STP_USERADDR     _SHR_SWITCH_FILTER_STP_USERADDR /* STP filter bypass L2 User
   5712                                                   address. */
   5713 #define BCM_FILTER_STP_MAC0X        _SHR_SWITCH_FILTER_STP_MAC0X /* STP filter bypass the frame at
   5714                                                   MAC=0180c2-00000x. */
   5715 #define BCM_FILTER_VLAN_IGMP_MLD    _SHR_SWITCH_FILTER_VLAN_IGMP_MLD /* VLAN filter bypass IGMP and
   5716                                                   MLD. */
   5717 #define BCM_FILTER_VLAN_ARP_DHCP    _SHR_SWITCH_FILTER_VLAN_ARP_DHCP /* VLAN filter bypass ARP and
   5718                                                   DHCP */
   5719 #define BCM_FILTER_VLAN_MIIM        _SHR_SWITCH_FILTER_VLAN_MIIM /* VLAN filter bypass IMP ingress
   5720                                                   frame. */
   5721 #define BCM_FILTER_VLAN_MCAST       _SHR_SWITCH_FILTER_VLAN_MCAST /* VLAN filter bypass MCAST
   5722                                                   frame. */
   5723 #define BCM_FILTER_VLAN_RSV_MCAST   _SHR_SWITCH_FILTER_VLAN_RSV_MCAST /* VLAN filter bypass Reserved
   5724                                                   MCAST frame. */
   5725 #define BCM_FILTER_VLAN_USERADDR    _SHR_SWITCH_FILTER_VLAN_USERADDR /* VLAN filter bypass L2 User
   5726                                                   address. */
   5727 #define BCM_FILTER_EAP_USERADDR     _SHR_SWITCH_FILTER_EAP_USERADDR /* EAP filter bypass L2 User
   5728                                                   address. */
   5729 #define BCM_FILTER_EAP_DHCP         _SHR_SWITCH_FILTER_EAP_DHCP /* EAP filter bypass DHCP. */
   5730 #define BCM_FILTER_EAP_ARP          _SHR_SWITCH_FILTER_EAP_ARP /* EAP filter bypass EAP and ARP. */
   5731 #define BCM_FILTER_EAP_MAC_22_2F    _SHR_SWITCH_FILTER_EAP_MAC_22_2F /* EAP filter bypass the frame at
   5732                                                   MAC=0180c2-000021 to
   5733                                                   0180c2-00002F. */
   5734 #define BCM_FILTER_EAP_MAC_21       _SHR_SWITCH_FILTER_EAP_MAC_21 /* EAP filter bypass the frame at
   5735                                                   MAC=0180c2-000021. */
   5736 #define BCM_FILTER_EAP_MAC_20       _SHR_SWITCH_FILTER_EAP_MAC_20 /* EAP filter bypass the frame at
   5737                                                   MAC=0180c2-000020. */
   5738 #define BCM_FILTER_EAP_MAC_11_1F    _SHR_SWITCH_FILTER_EAP_MAC_11_1F /* EAP filter bypass the frame at
   5739                                                   MAC=0180c2-000011 to
   5740                                                   0180c2-00001F. */
   5741 #define BCM_FILTER_EAP_MAC_10       _SHR_SWITCH_FILTER_EAP_MAC_10 /* EAP filter bypass the frame at
   5742                                                   MAC=0180c2-000010. */
   5743 #define BCM_FILTER_EAP_MAC_0X       _SHR_SWITCH_FILTER_EAP_MAC_0X /* EAP filter bypass the frame at
   5744                                                   MAC=0180c2-00000x. */
   5745 #define BCM_FILTER_EAP_BPDU         _SHR_SWITCH_FILTER_EAP_BPDU /* EAP filter bypass BPDU frame. */
   5746 #define BCM_FILTER_CONTROL_COUNT    _SHR_SWITCH_FILTER_CONTROL_COUNT /* The count of filter bypass
   5747                                                   control items. */
   5748 
   5749 /* LED functions group */
   5750 #define BCM_LED_FUNCGRP_0       _SHR_SWITCH_LED_FUNCGRP_0 
   5751 #define BCM_LED_FUNCGRP_1       _SHR_SWITCH_LED_FUNCGRP_1 
   5752 
   5753 /* LED function items */
   5754 #define BCM_LED_FUNC_NONE           _SHR_SWITCH_LED_FUNC_NONE 
   5755 #define BCM_LED_FUNC_PHYLED4        _SHR_SWITCH_LED_FUNC_PHYLED4 
   5756 #define BCM_LED_FUNC_LNK            _SHR_SWITCH_LED_FUNC_LNK 
   5757 #define BCM_LED_FUNC_DPX            _SHR_SWITCH_LED_FUNC_DPX 
   5758 #define BCM_LED_FUNC_ACT            _SHR_SWITCH_LED_FUNC_ACT 
   5759 #define BCM_LED_FUNC_COL            _SHR_SWITCH_LED_FUNC_COL 
   5760 #define BCM_LED_FUNC_LINK_ACT       _SHR_SWITCH_LED_FUNC_LINK_ACT 
   5761 #define BCM_LED_FUNC_DPX_COL        _SHR_SWITCH_LED_FUNC_DPX_COL 
   5762 #define BCM_LED_FUNC_SP_10          _SHR_SWITCH_LED_FUNC_SP_10 
   5763 #define BCM_LED_FUNC_SP_100         _SHR_SWITCH_LED_FUNC_SP_100 
   5764 #define BCM_LED_FUNC_SP_1G          _SHR_SWITCH_LED_FUNC_SP_1G 
   5765 #define BCM_LED_FUNC_10_ACT         _SHR_SWITCH_LED_FUNC_10_ACT 
   5766 #define BCM_LED_FUNC_100_ACT        _SHR_SWITCH_FILTER_EAP_DHCP 
   5767 #define BCM_LED_FUNC_10_100_ACT     _SHR_SWITCH_LED_FUNC_10_100_ACT 
   5768 #define BCM_LED_FUNC_1G_ACT         _SHR_SWITCH_LED_FUNC_1G_ACT 
   5769 #define BCM_LED_FUNC_EAV_LINK       _SHR_SWITCH_LED_FUNC_EAV_LINK 
   5770 #define BCM_LED_FUNC_PHYLED3        _SHR_SWITCH_LED_FUNC_PHYLED3 
   5771 #define BCM_LED_FUNC_SP_100_200     _SHR_SWITCH_LED_FUNC_SP_100_200 
   5772 #define BCM_LED_FUNC_100_200_ACT    _SHR_SWITCH_LED_FUNC_100_200_ACT 
   5773 #define BCM_LED_FUNC_SP_LNK_ACT_SP  _SHR_SWITCH_LED_FUNC_LNK_ACT_SP 
   5774 
   5775 /* LED working mode */
   5776 #define BCM_LED_MODE_OFF        _SHR_SWITCH_LED_MODE_OFF 
   5777 #define BCM_LED_MODE_ON         _SHR_SWITCH_LED_MODE_ON 
   5778 #define BCM_LED_MODE_BLINK      _SHR_SWITCH_LED_MODE_BLINK 
   5779 #define BCM_LED_MODE_AUTO       _SHR_SWITCH_LED_MODE_AUTO 
   5780 
   5781 /* types for bcmSwitchL2LearnMode */
   5782 #define BCM_L2_INGRESS_CENT         0x1        /* Ingress and Centralized
   5783                                                   Learning */
   5784 #define BCM_L2_INGRESS_DIST         0x2        /* Ingress and Centralized
   5785                                                   Learning */
   5786 #define BCM_L2_EGRESS_DIST          0x4        /* Egress and Distributed
   5787                                                   Learning */
   5788 #define BCM_L2_EGRESS_CENT          0x8        /* Egress and Centralized
   5789                                                   Learning */
   5790 #define BCM_L2_EGRESS_INDEPENDENT   0x10       /* Egress and Independent
   5791                                                   Learning */
   5792 #define BCM_L2_LEARN_CPU            0x20       /* Learning events handled by CPU */
   5793 #define BCM_L2_LEARN_DISABLE        0x40       /* Disabled learning */
   5794 
   5795 /* Hashing function enumeration. */
   5796 typedef enum bcm_switch_hash_config_e {
   5797     BCM_HASH_CONFIG_NONE = 1,           /* Indication to not hash */
   5798     BCM_HASH_CONFIG_CRC8_0x14D = 2,     /* CRC8 with 0x14D polynomial */
   5799     BCM_HASH_CONFIG_CRC8_0x1C3 = 3,     /* CRC8 with 0x1C3 polynomial */
   5800     BCM_HASH_CONFIG_CRC8_0x1CF = 4,     /* CRC8 with 0x1CF polynomial */
   5801     BCM_HASH_CONFIG_CRC16_0x17111 = 5,  /* CRC16 with 0x17111 polynomial */
   5802     BCM_HASH_CONFIG_CRC16_0x10491 = 6,  /* CRC16 with 0x10491 polynomial */
   5803     BCM_HASH_CONFIG_CRC16_0x155F5 = 7,  /* CRC16 with 0x155F5 polynomial */
   5804     BCM_HASH_CONFIG_CRC16_0x1013D = 8,  /* CRC16 with 0x1013D polynomial */
   5805     BCM_HASH_CONFIG_CRC16_0x13965 = 9,  /* CRC16 with 0x13965 polynomial */
   5806     BCM_HASH_CONFIG_CRC16_0x1698D = 10, /* CRC16 with 0x1698D polynomial */
   5807     BCM_HASH_CONFIG_CRC16_0x1105D = 11, /* CRC16 with 0x1105D polynomial */
   5808     BCM_HASH_CONFIG_CRC16_0x10861 = 12, /* CRC16 with 0x10861 polynomial */
   5809     BCM_HASH_CONFIG_CRC16_0x10285 = 13, /* CRC16 with 0x10285 polynomial */
   5810     BCM_HASH_CONFIG_CRC16_0x101a1 = 14, /* CRC16 with 0x101a1 polynomial */
   5811     BCM_HASH_CONFIG_CRC16_0x12499 = 15, /* CRC16 with 0x12499 polynomial */
   5812     BCM_HASH_CONFIG_CRC16_0x1f801 = 16, /* CRC16 with 0x1f801 polynomial */
   5813     BCM_HASH_CONFIG_CRC16_0x172e1 = 17, /* CRC16 with 0x172e1 polynomial */
   5814     BCM_HASH_CONFIG_CRC16_0x1eb21 = 18, /* CRC16 with 0x1eb21 polynomial */
   5815     BCM_HASH_CONFIG_FP_DATA = 19,       /* Use only data calculated by FP */
   5816     BCM_HASH_CONFIG_ROUND_ROBIN = 20,   /* Round robin between ports per packet */
   5817     BCM_HASH_CONFIG_CLOCK_BASED = 21,   /* Result based in clock (random) */
   5818     BCM_HASH_CONFIG_CRC16_0x8003 = 22,  /* CRC16 with 0x8003 polynomial */
   5819     BCM_HASH_CONFIG_CRC16_0x8011 = 23,  /* CRC16 with 0x8011 polynomial */
   5820     BCM_HASH_CONFIG_CRC16_0x8423 = 24,  /* CRC16 with 0x8423 polynomial */
   5821     BCM_HASH_CONFIG_CRC16_0x8101 = 25,  /* CRC16 with 0x8101 polynomial */
   5822     BCM_HASH_CONFIG_CRC16_0x84a1 = 26,  /* CRC16 with 0x84a1 polynomial */
   5823     BCM_HASH_CONFIG_CRC16_0x9019 = 27,  /* CRC16 with 0x9019 polynomial */
   5824     BCM_HASH_CONFIG_CRC16_0x1015d = 28, /* CRC16 with 0x1015d polynomial */
   5825     BCM_HASH_CONFIG_CRC16_0x100d7 = 29, /* CRC16 with 0x100d7 polynomial */
   5826     BCM_HASH_CONFIG_CRC16_0x10039 = 30, /* CRC16 with 0x10039 polynomial */
   5827     BCM_HASH_CONFIG_CRC16_0x10ac5 = 31, /* CRC16 with 0x10ac5 polynomial */
   5828     BCM_HASH_CONFIG_CRC16_0x109e7 = 32, /* CRC16 with 0x109e7 polynomial */
   5829     BCM_HASH_CONFIG_CRC16_0x10939 = 33, /* CRC16 with 0x10939 polynomial */
   5830     BCM_HASH_CONFIG_CRC16_0x12105 = 34, /* CRC16 with 0x12105 polynomial */
   5831     BCM_HASH_CONFIG_CRC16_0x1203d = 35, /* CRC16 with 0x1203d polynomial */
   5832     BCM_HASH_CONFIG_COUNT               /* Must be last */
   5833 } bcm_switch_hash_config_t;
   5834 
   5835 /* RTAG7 Hash Field Control selection of payload and tunnel fields. */
   5836 #define BCM_HASH_SELECT_INNER_L2        0x1        /* Select the inner L2 fields
   5837                                                       for hash fields selection. */
   5838 #define BCM_HASH_SELECT_OUTER_L2        0x2        /* Select the outer L2 fields
   5839                                                       for hash fields selection. */
   5840 #define BCM_HASH_SELECT_INNER_L3        0x3        /* Select the inner L3 fields
   5841                                                       for hash fields selection. */
   5842 #define BCM_HASH_SELECT_OUTER_L3        0x4        /* Select the outer L3 fields
   5843                                                       for hash fields selection. */
   5844 #define BCM_HASH_SELECT_TUNNEL_INNER_L2 0x5        /* Select tunnel header and
   5845                                                       inner L2 fields for hash
   5846                                                       fields selection. */
   5847 
   5848 /* IPv6 Collapse Methods for RTAG7 Hashing */
   5849 #define BCM_HASH_IP6_COLLAPSE_XOR   0x1        /* Select XOR method to collapse
   5850                                                   IPv6 Addresses for RTAG7
   5851                                                   hashing in field selection
   5852                                                   block */
   5853 #define BCM_HASH_IP6_COLLAPSE_LSB   0x2        /* Select LSB method to collapse
   5854                                                   IPv6 Addresses for RTAG7
   5855                                                   hashing in field selection
   5856                                                   block */
   5857 
   5858 /* IPSec selection for RTAG7 Hashing */
   5859 #define BCM_HASH_IPSEC_SELECT_OUTER_L4_PORT 0x1        /* Select OUTER
   5860                                                           L4_SRC/DST_PORT for
   5861                                                           RTAG7 hashing in field
   5862                                                           selection block */
   5863 #define BCM_HASH_IPSEC_SELECT_SPI           0x2        /* Select IPv6 SPI for
   5864                                                           RTAG7 hashing in field
   5865                                                           selection block */
   5866 
   5867 /* header selection for trunk hashing */
   5868 #define BCM_HASH_HEADER_FORWARD     0x00000001 /* Select the forward header as
   5869                                                   starting header for hashing */
   5870 #define BCM_HASH_HEADER_TERMINATED  0x00000002 /* Select the last terminated
   5871                                                   header as starting header for
   5872                                                   hashing */
   5873 
   5874 /* Symmetric hash field selection. */
   5875 #define BCM_SYMMETRIC_HASH_0_IP4_ENABLE     0x00000001 /* Enable symmetric key
   5876                                                           hashing on Hash A for
   5877                                                           IPV4 packets. */
   5878 #define BCM_SYMMETRIC_HASH_1_IP4_ENABLE     0x00000002 /* Enable symmetric key
   5879                                                           hashing on Hash B for
   5880                                                           IPV4 packets. */
   5881 #define BCM_SYMMETRIC_HASH_0_IP6_ENABLE     0x00000004 /* Enable symmetric key
   5882                                                           hashing on Hash A for
   5883                                                           IPV6 packets. */
   5884 #define BCM_SYMMETRIC_HASH_1_IP6_ENABLE     0x00000008 /* Enable symmetric key
   5885                                                           hashing on Hash B for
   5886                                                           IPV6 packets. */
   5887 #define BCM_SYMMETRIC_HASH_0_SUPPRESS_UNIDIR_FIELD_ENABLE 0x00000010 /* Enable setting SPI,
   5888                                                           TEID, L2 GRE Key to
   5889                                                           zero for Hash A
   5890                                                           calculation. */
   5891 #define BCM_SYMMETRIC_HASH_1_SUPPRESS_UNIDIR_FIELD_ENABLE 0x00000020 /* Enable setting SPI,
   5892                                                           TEID, L2 GRE Key to
   5893                                                           zero for Hash B
   5894                                                           calculation. */
   5895 #define BCM_SYMMETRIC_HASH_0_FCOE_ENABLE    0x00000040 /* Enable symmetric key
   5896                                                           hashing on Hash A for
   5897                                                           FCoE packets. */
   5898 #define BCM_SYMMETRIC_HASH_1_FCOE_ENABLE    0x00000080 /* Enable symmetric key
   5899                                                           hashing on Hash B for
   5900                                                           FCoE packets. */
   5901 
   5902 /* Switch Event Control for event selection */
   5903 #define BCM_SWITCH_EVENT_CONTROL_ALL    (-1)       /* Selects All
   5904                                                       interrupts-causes. */
   5905 
   5906 /* Switch event action controls. */
   5907 typedef enum bcm_switch_event_control_action_e {
   5908     bcmSwitchEventMask = _SHR_SWITCH_EVENT_MASK, /* Mask (disable) or unmask (enable) the
   5909                                            event */
   5910     bcmSwitchEventClear = _SHR_SWITCH_EVENT_CLEAR, /* Clear the event */
   5911     bcmSwitchEventRead = _SHR_SWITCH_EVENT_READ, /* read the event */
   5912     bcmSwitchEventForce = _SHR_SWITCH_EVENT_FORCE, /* Activate/diactivate forcing the event */
   5913     bcmSwitchEventStormTimedCount = _SHR_SWITCH_EVENT_STORM_TIMED_COUNT, /* If more then
   5914                                            bcmSwitchEventStormTimedCount
   5915                                            interrupts occur in
   5916                                            bcmSwitchEventStormTimedPeriod
   5917                                            period, an interrupt storm is
   5918                                            indicated (default hanling same as
   5919                                            for bcmSwitchEventStormNominal
   5920                                            threshold) */
   5921     bcmSwitchEventStormTimedPeriod = _SHR_SWITCH_EVENT_STORM_TIMED_PERIOD, /* If more then
   5922                                            bcmSwitchEventStormTimedCount
   5923                                            interrupts occur in
   5924                                            bcmSwitchEventStormTimedPeriod
   5925                                            period, an interrupt storm is
   5926                                            indicated (default hanling same as
   5927                                            for bcmSwitchEventStormNominal
   5928                                            threshold) */
   5929     bcmSwitchEventStormNominal = _SHR_SWITCH_EVENT_STORM_NOMINAL, /* Nominal threshold for interrupt storm
   5930                                            detection. If an interrupt occurs
   5931                                            more times then the threshold, an
   5932                                            interrupt storm is indicated. The
   5933                                            default handling for such an
   5934                                            interrupt is holding it in masked
   5935                                            condition */
   5936     bcmSwitchEventPriority = _SHR_SWITCH_EVENT_PRIORITY, /* Change handling priority in case of
   5937                                            multiple interrupts */
   5938     bcmSwitchEventLog = _SHR_SWITCH_EVENT_LOG, /* Activate/Diactivate log prints on
   5939                                            event */
   5940     bcmSwitchEventStat = _SHR_SWITCH_EVENT_STAT, /* Enable to Clear/Read event statistics */
   5941     bcmSwitchEventCorrActOverride = _SHR_SWITCH_EVENT_CORR_ACT_OVERRIDE, /* Enable to override application
   5942                                            callback */
   5943     bcmSwitchEventUnmaskAndClearDisable = _SHR_SWITCH_EVENT_UNMASK_AND_CLEAR_DISABLE, /* Skip clearing and enabling the
   5944                                            asserted interrupt at the end of
   5945                                            event corrective action */
   5946     bcmSwitchEventForceUnmask = _SHR_SWITCH_EVENT_FORCE_UNMASK /* Skip enable interrupt action for
   5947                                            asserted interrupt at the end of
   5948                                            event corrective action, if the
   5949                                            interrupt is not cleared */
   5950 } bcm_switch_event_control_action_t;
   5951 
   5952 /* Interrupt event operation */
   5953 typedef struct bcm_switch_event_control_s {
   5954     int event_id;                       /* Event identifier, e.g. for interrupt
   5955                                            event, device-specific enumerator per
   5956                                            interrupt-cause. */
   5957     int index;                          /* If multi-instance blocks represent
   5958                                            the specific block index. */
   5959     bcm_switch_event_control_action_t action; /* The action to perform on the
   5960                                            indicated event. */
   5961 } bcm_switch_event_control_t;
   5962 
   5963 #ifndef BCM_HIDE_DISPATCHABLE
   5964 
   5965 /* Set event control. */
   5966 extern int bcm_switch_event_control_set(
   5967     int unit, 
   5968     bcm_switch_event_t event, 
   5969     bcm_switch_event_control_t type, 
   5970     uint32 value);
   5971 
   5972 /* Get event control. */
   5973 extern int bcm_switch_event_control_get(
   5974     int unit, 
   5975     bcm_switch_event_t event, 
   5976     bcm_switch_event_control_t type, 
   5977     uint32 *value);
   5978 
   5979 #endif /* BCM_HIDE_DISPATCHABLE */
   5980 
   5981 typedef enum bcm_switch_bst_tracking_mode_e {
   5982     bcmSwitchBstTrackCurrent = 0,   /* Track the current usage. */
   5983     bcmSwitchBstTrackPeak = 1       /* Track the peak usage. */
   5984 } bcm_switch_bst_tracking_mode_t;
   5985 
   5986 /* Split Horizon network group configuration flags */
   5987 #define BCM_SWITCH_NETWORK_GROUP_MCAST_REMAP_ENABLE 0x00000001 
   5988 #define BCM_SWITCH_NETWORK_GROUP_INGRESS_PRUNE_ENABLE 0x00000002 
   5989 #define BCM_SWITCH_NETWORK_GROUP_EGRESS_PRUNE_ENABLE 0x00000004 
   5990 
   5991 /* Split Horizon destination network group configuration information */
   5992 typedef struct bcm_switch_network_group_config_s {
   5993     bcm_switch_network_group_t dest_network_group_id; /* Split Horizon Destination Network
   5994                                            Group Identifier */
   5995     uint32 config_flags;                /* BCM_SWITCH_NETWORK_GROUP_XXX flags */
   5996 } bcm_switch_network_group_config_t;
   5997 
   5998 /* Initialize a bcm_switch_network_group_config_t structure. */
   5999 extern void bcm_switch_network_group_config_t_init(
   6000     bcm_switch_network_group_config_t *config);
   6001 
   6002 #ifndef BCM_HIDE_DISPATCHABLE
   6003 
   6004 /* 
   6005  * Configures the split horizon network group configuration for a given
   6006  * pair of source and destination network group.
   6007  */
   6008 extern int bcm_switch_network_group_config_set(
   6009     int unit, 
   6010     bcm_switch_network_group_t source_network_group_id, 
   6011     bcm_switch_network_group_config_t *config);
   6012 
   6013 /* 
   6014  * Gets the split horizon network group configuration for a given pair of
   6015  * source and destination network group.
   6016  */
   6017 extern int bcm_switch_network_group_config_get(
   6018     int unit, 
   6019     bcm_switch_network_group_t source_network_group_id, 
   6020     bcm_switch_network_group_config_t *config);
   6021 
   6022 #endif /* BCM_HIDE_DISPATCHABLE */
   6023 
   6024 /* User buffer type. */
   6025 typedef enum bcm_switch_user_buffer_type_e {
   6026     bcmSwitchUserBufferTypeDram = 0 /* Dram User Buffer. */
   6027 } bcm_switch_user_buffer_type_t;
   6028 
   6029 #ifndef BCM_HIDE_DISPATCHABLE
   6030 
   6031 /* Writes data to the user buffer */
   6032 extern int bcm_switch_user_buffer_write(
   6033     int unit, 
   6034     uint32 flags, 
   6035     bcm_switch_user_buffer_type_t buff_type, 
   6036     uint8 *buf, 
   6037     int offset, 
   6038     int nbytes);
   6039 
   6040 /* Reads data from the user buffer */
   6041 extern int bcm_switch_user_buffer_read(
   6042     int unit, 
   6043     uint32 flags, 
   6044     bcm_switch_user_buffer_type_t buff_type, 
   6045     uint8 *buf, 
   6046     int offset, 
   6047     int nbytes);
   6048 
   6049 #endif /* BCM_HIDE_DISPATCHABLE */
   6050 
   6051 /* header selection for trunk hashing */
   6052 #define BCM_SWITCH_USER_BUFFER_LOGICAL2PHY_TRANS 0x00000001 /* User buffer flag for
   6053                                                           using logical to
   6054                                                           physical translation,
   6055                                                           instead of using
   6056                                                           logical adresses */
   6057 
   6058 #ifndef BCM_HIDE_DISPATCHABLE
   6059 
   6060 /* Sets Ipv6 reserved multicast address and mask of the device. */
   6061 extern int bcm_switch_ipv6_reserved_multicast_addr_set(
   6062     int unit, 
   6063     bcm_ip6_t ip6_addr, 
   6064     bcm_ip6_t ip6_mask);
   6065 
   6066 /* Gets Ipv6 reserved multicast address and mask of the device. */
   6067 extern int bcm_switch_ipv6_reserved_multicast_addr_get(
   6068     int unit, 
   6069     bcm_ip6_t *ip6_addr, 
   6070     bcm_ip6_t *ip6_mask);
   6071 
   6072 /* Set/get multiple ipv6 reserved multicast address and mask. */
   6073 extern int bcm_switch_ipv6_reserved_multicast_addr_multi_set(
   6074     int unit, 
   6075     int inner, 
   6076     int num, 
   6077     bcm_ip6_t *ip6_addr, 
   6078     bcm_ip6_t *ip6_mask);
   6079 
   6080 /* Set/get multiple ipv6 reserved multicast address and mask. */
   6081 extern int bcm_switch_ipv6_reserved_multicast_addr_multi_get(
   6082     int unit, 
   6083     int inner, 
   6084     int num, 
   6085     bcm_ip6_t *ip6_addr, 
   6086     bcm_ip6_t *ip6_mask);
   6087 
   6088 #endif /* BCM_HIDE_DISPATCHABLE */
   6089 
   6090 typedef enum bcm_switch_object_e {
   6091     bcmSwitchObjectL2EntryCurrent = 0,  /* Statistics of current L2 Entry. */
   6092     bcmSwitchObjectVlanCurrent = 1,     /* Statistics of current Vlan Entry. */
   6093     bcmSwitchObjectL3HostCurrent = 2,   /* Statistics of current L3 Hosts. */
   6094     bcmSwitchObjectL3RouteCurrent = 3,  /* Statistics of current L3 Routes. */
   6095     bcmSwitchObjectL3EgressCurrent = 4, /* Statistics of current L3 Egress
   6096                                            objects. */
   6097     bcmSwitchObjectIpmcCurrent = 5,     /* Statistics of current IP Multicast
   6098                                            Objects. */
   6099     bcmSwitchObjectEcmpCurrent = 6,     /* Statistics of current ECMP objects. */
   6100     bcmSwitchObjectL3RouteV4RoutesMax = 7, /* Maximum number of v4 routes possible */
   6101     bcmSwitchObjectL3RouteV4RoutesFree = 8, /* Maximum number of v4 routes that can
   6102                                            be added in current state */
   6103     bcmSwitchObjectL3RouteV4RoutesUsed = 9, /* Used count of v4 routes */
   6104     bcmSwitchObjectL3RouteV6Routes64bMax = 10, /* Maximum number of 64bv6 routes
   6105                                            possible */
   6106     bcmSwitchObjectL3RouteV6Routes64bFree = 11, /* Maximum number of 64bV6 routes that
   6107                                            can be added in current state */
   6108     bcmSwitchObjectL3RouteV6Routes64bUsed = 12, /* Used count of 64bv6 routes */
   6109     bcmSwitchObjectL3RouteV6Routes128bMax = 13, /* Maximum number of 128bV6 routes
   6110                                            possible */
   6111     bcmSwitchObjectL3RouteV6Routes128bFree = 14, /* Maximum number of 128bV6 routes that
   6112                                            can be added in current state */
   6113     bcmSwitchObjectL3RouteV6Routes128bUsed = 15, /* Used count of 128bv6 routes */
   6114     bcmSwitchObjectL3RouteTotalUsedRoutes = 16, /* Sum of 44 + 64bv6 + 128bv6 routes */
   6115     bcmSwitchObjectIpmcHeadTableFree = 17, /* Number of free entries in the
   6116                                            replication head table */
   6117     bcmSwitchObjectL3HostV4Used = 18,   /* Statistics of L3 Hosts used by IPv4 */
   6118     bcmSwitchObjectL3HostV6Used = 19,   /* Statistics of L3 Hosts used by IPv6 */
   6119     bcmSwitchObjectEcmpMax = 20,        /* Maximum number of Ecmp groups
   6120                                            possible */
   6121     bcmSwitchObjectPFCDeadlockCosMax = 21, /* Get the Max COS supported for PFC
   6122                                            Deadlock detection and recovery. */
   6123     bcmSwitchObjectL3HostV4Max = 22,    /* Maximum number of IPv4 routes
   6124                                            possible in L3 host table. */
   6125     bcmSwitchObjectL3HostV6Max = 23,    /* Maximum number of IPv6 routes
   6126                                            possible in L3 host table. */
   6127     bcmSwitchObjectL3RouteV4RoutesMinGuaranteed = 24, /* Guaranteed number of IPv4 routes in
   6128                                            ALPM mode. */
   6129     bcmSwitchObjectL3RouteV6Routes64bMinGuaranteed = 25, /* Guaranteed number of IPv6 64bits
   6130                                            routes in ALPM mode. */
   6131     bcmSwitchObjectL3RouteV6Routes128bMinGuaranteed = 26, /* Guaranteed number of IPv6 128bits
   6132                                            routes in ALPM mode. */
   6133     bcmSwitchObjectL3EgressMax = 27,    /* Maximum number of L3 Egress objects
   6134                                            possible. */
   6135     bcmSwitchObjectIpmcV4Used = 28,     /* Statistics of used IPv4 Multicast
   6136                                            entries. */
   6137     bcmSwitchObjectIpmcV6Used = 29,     /* Statistics of used IPv6 Multicast
   6138                                            entries. */
   6139     bcmSwitchObjectIpmcV4Max = 30,      /* Maximum number of IPv4 Multicast
   6140                                            entries possible. */
   6141     bcmSwitchObjectIpmcV6Max = 31,      /* Maximum number of IPv6 Multicast
   6142                                            entries possible. */
   6143     bcmSwitchObjectL2EntryMax = 32,     /* Maximum number of L2 entries
   6144                                            possible. */
   6145     bcmSwitchObjectL3HostUcV4Max = 33,  /* Maximum number of L3 IPv4 unicast
   6146                                            host entries possible. */
   6147     bcmSwitchObjectL3HostUcV6Max = 34,  /* Maximum number of L3 IPv6 unicast
   6148                                            host entries possible. */
   6149     bcmSwitchObjectL3HostUcV4Used = 35, /* Statistics number of used L3 IPv4
   6150                                            unicast host entries. */
   6151     bcmSwitchObjectL3HostUcV6Used = 36, /* Statistics number of used L3 IPv6
   6152                                            unicast host entries. */
   6153     bcmSwitchObjectIpmcSrcGroupV4Max = 37, /* Maximum number of L3 IPv4 (S, G)
   6154                                            Multicast host entries possible. */
   6155     bcmSwitchObjectIpmcSrcGroupV6Max = 38, /* Maximum number of L3 IPv6 (S, G)
   6156                                            Multicast host entries possible. */
   6157     bcmSwitchObjectIpmcSrcGroupV4Used = 39, /* Statistics number of used L3 IPv4 (S,
   6158                                            G) Multicast host entries. */
   6159     bcmSwitchObjectIpmcSrcGroupV6Used = 40, /* Statistics number of used L3 IPv6 (S,
   6160                                            G) Multicast host entries. */
   6161     bcmSwitchObjectIpmcGroupV4Max = 41, /* Maximum number of L3 IPv4 (*, G)
   6162                                            Multicast host entries possible. */
   6163     bcmSwitchObjectIpmcGroupV6Max = 42, /* Maximum number of L3 IPv6 (*, G)
   6164                                            Multicast host entries possible. */
   6165     bcmSwitchObjectIpmcGroupV4Used = 43, /* Statistics number of used L3 IPv4 (*,
   6166                                            G) Multicast host entries. */
   6167     bcmSwitchObjectIpmcGroupV6Used = 44, /* Statistics number of used L3 IPv6 (*,
   6168                                            G) Multicast host entries. */
   6169     bcmSwitchObjectL3RoutePrivateV4RouteProjection = 45, /* Projected maximum IPv4 private VRF
   6170                                            routes in ALPM mode. */
   6171     bcmSwitchObjectL3RouteGlobalV4RouteProjection = 46, /* Projected maximum IPv4 global low
   6172                                            routes in ALPM mode. */
   6173     bcmSwitchObjectL3RouteOverrideV4RouteProjection = 47, /* Projected maximum IPv4 override
   6174                                            (global high) routes in ALPM mode. */
   6175     bcmSwitchObjectL3RoutePrivateV6RouteProjection = 48, /* Projected maximum IPv6 private VRF
   6176                                            routes in ALPM mode. */
   6177     bcmSwitchObjectL3RouteGlobalV6RouteProjection = 49, /* Projected maximum IPv6 global low
   6178                                            routes in ALPM mode. */
   6179     bcmSwitchObjectL3RouteOverrideV6RouteProjection = 50, /* Projected maximum IPv6 override
   6180                                            (global high) routes in ALPM mode. */
   6181     bcmSwitchObjectCount                /* Maximum object count. This is not an
   6182                                            object and should always be in the
   6183                                            last */
   6184 } bcm_switch_object_t;
   6185 
   6186 #ifndef BCM_HIDE_DISPATCHABLE
   6187 
   6188 /* Retrieving the statistics on the number of API objects. */
   6189 extern int bcm_switch_object_count_get(
   6190     int unit, 
   6191     bcm_switch_object_t object, 
   6192     int *entries);
   6193 
   6194 /* 
   6195  * Retrieving the statistics on the number of API objects. This retrieves
   6196  * for multiple objects.
   6197  */
   6198 extern int bcm_switch_object_count_multi_get(
   6199     int unit, 
   6200     int object_size, 
   6201     bcm_switch_object_t *object_array, 
   6202     int *entries);
   6203 
   6204 #endif /* BCM_HIDE_DISPATCHABLE */
   6205 
   6206 /* Services types. */
   6207 typedef enum bcm_switch_service_e {
   6208     bcmServiceCounterCollection = 0,    /* Counters collection service. */
   6209     bcmServiceRxLOS = 1,                /* RX LOS service. */
   6210     bcmServiceCount                     /* Maximum object count. This is not an
   6211                                            object and should always be in the
   6212                                            last */
   6213 } bcm_switch_service_t;
   6214 
   6215 /* Service enable configuration options. */
   6216 typedef enum bcm_switch_service_enabled_e {
   6217     bcmServiceStateDisabled = 0,    /* Service disabled. */
   6218     bcmServiceStateEnabled = 1,     /* Service enabled. */
   6219     bcmServiceEnabledCount          /* Maximum object count. This is not an
   6220                                        object and should always be in the last */
   6221 } bcm_switch_service_enabled_t;
   6222 
   6223 /* Service configuration structure. */
   6224 typedef struct bcm_switch_service_config_s {
   6225     uint32 flags;                       /* Option flags. */
   6226     bcm_switch_service_enabled_t enabled; /* Service enable configuration. */
   6227 } bcm_switch_service_config_t;
   6228 
   6229 /* Initialize a bcm_switch_service_config_t_init structure. */
   6230 extern void bcm_switch_service_config_t_init(
   6231     bcm_switch_service_config_t *config);
   6232 
   6233 #ifndef BCM_HIDE_DISPATCHABLE
   6234 
   6235 /* Change/read configuration of specific service. */
   6236 extern int bcm_switch_service_set(
   6237     int unit, 
   6238     bcm_switch_service_t service, 
   6239     bcm_switch_service_config_t *config);
   6240 
   6241 /* Change/read configuration of specific service. */
   6242 extern int bcm_switch_service_get(
   6243     int unit, 
   6244     bcm_switch_service_t service, 
   6245     bcm_switch_service_config_t *config);
   6246 
   6247 #endif /* BCM_HIDE_DISPATCHABLE */
   6248 
   6249 /* MC queue group mode. */
   6250 typedef enum bcm_switch_control_mc_queue_config_mode_e {
   6251     bcmSwitchMcUcPairGroupMode = 0, /* Each MC queue is paired with one UC queue */
   6252     bcmSwitchAllMcGroupMode = 1     /* All MC queues are grouped together */
   6253 } bcm_switch_control_mc_queue_config_mode_t;
   6254 
   6255 /* Flags for bcm_switch_l3_protocol_group_set / get */
   6256 #define BCM_SWITCH_L3_PROTOCOL_GROUP_NONE   0x0000     /* No protocols in this
   6257                                                           group */
   6258 #define BCM_SWITCH_L3_PROTOCOL_GROUP_IPV4   0x0001     /* Add IPv4 to the group. */
   6259 #define BCM_SWITCH_L3_PROTOCOL_GROUP_IPV6   0x0002     /* Add IPv6 to the group. */
   6260 #define BCM_SWITCH_L3_PROTOCOL_GROUP_ARP    0x0004     /* Add ARP to the group. */
   6261 #define BCM_SWITCH_L3_PROTOCOL_GROUP_MPLS   0x0008     /* Add MPLS to the group. */
   6262 #define BCM_SWITCH_L3_PROTOCOL_GROUP_MIM    0x0010     /* Add MiM to the group. */
   6263 #define BCM_SWITCH_L3_PROTOCOL_GROUP_TRILL  0x0020     /* Add trill to the
   6264                                                           group. */
   6265 #define BCM_SWITCH_L3_PROTOCOL_GROUP_FCOE   0x0040     /* Add FCOE to the group. */
   6266 
   6267 /* 
   6268  * Protocol group to which l3 protocols will be mapped for multiple mymac
   6269  * termination
   6270  */
   6271 typedef uint32 bcm_l3_protocol_group_id_t;
   6272 
   6273 #ifndef BCM_HIDE_DISPATCHABLE
   6274 
   6275 /* Assign/get protocol groups for multiple mymac termination */
   6276 extern int bcm_switch_l3_protocol_group_set(
   6277     int unit, 
   6278     uint32 group_members, 
   6279     bcm_l3_protocol_group_id_t group_id);
   6280 
   6281 /* Assign/get protocol groups for multiple mymac termination */
   6282 extern int bcm_switch_l3_protocol_group_get(
   6283     int unit, 
   6284     uint32 *group_members, 
   6285     bcm_l3_protocol_group_id_t *group_id);
   6286 
   6287 #endif /* BCM_HIDE_DISPATCHABLE */
   6288 
   6289 /* profile mapping type. */
   6290 typedef enum bcm_switch_profile_mapping_type_e {
   6291     bcmCosqIngressQueueToRateClass = 0, /* ingress queue to rate class mapping */
   6292     bcmCosqIngressQueuesToLatencyProfile = 1, /* ingress queues to ingress latency
   6293                                            profile mapping */
   6294     bcmCosqPortToEndToEndLatencyProfile = 2 /* destination local port to end to end
   6295                                            latency profile mapping */
   6296 } bcm_switch_profile_mapping_type_t;
   6297 
   6298 /* profile mapping struct. */
   6299 typedef struct bcm_switch_profile_mapping_s {
   6300     bcm_switch_profile_mapping_type_t profile_type; /* The type of profile to be mapped to. */
   6301     bcm_gport_t mapped_profile;         /* mapped profile handle */
   6302 } bcm_switch_profile_mapping_t;
   6303 
   6304 /* Initialize a bcm_switch_profile_mapping_t structure */
   6305 extern void bcm_switch_profile_mapping_t_init(
   6306     bcm_switch_profile_mapping_t *profile_mapping);
   6307 
   6308 /* Global TPID type. */
   6309 typedef enum bcm_switch_tpid_type_e {
   6310     bcmTpidTypeOuter = 0,               /* Global Outer TPID */
   6311     bcmTpidTypeInner = 1,               /* Global Inner TPID */
   6312     bcmTpidTypeVntag = 2,               /* Global TPID for Vntag */
   6313     bcmTpidTypeEtag = 3,                /* Global TPID for Etag */
   6314     bcmTpidTypeCapwapPayloadOuter = 4,  /* Global Outer TPID of CAPWAP wireless
   6315                                            payload */
   6316     bcmTpidTypeCapwapPayloadInner = 5,  /* Global Inner TPID of CAPWAP wireless
   6317                                            payload */
   6318     bcmTpidTypeL2TunnelPayloadInner = 6, /* Global Inner TPID of L2 Tunnel
   6319                                            payload */
   6320     bcmTpidTypeMimPayloadOuter = 7,     /* Matched TPID of Transit MIM Payload
   6321                                            for Parser */
   6322     bcmTpidTypeVxlanPayloadOuter = 8,   /* Matched TPID of Transit VXLAN Payload
   6323                                            for Parser */
   6324     bcmTpidTypeL2grePayloadOuter = 9,   /* Matched TPID of Transit L2GRE Payload
   6325                                            for Parser */
   6326     bcmTpidTypeVxlanPayloadInner = 10,  /* Matched inner TPID of Transit VXLAN
   6327                                            Payload for Parser */
   6328     bcmTpidTypeItag = 11,               /* Global TPID value for I-Tag */
   6329     bcmTpidTypeCount = 12               /* Always Last, not a usable value */
   6330 } bcm_switch_tpid_type_t;
   6331 
   6332 /* Global TPID information */
   6333 typedef struct bcm_switch_tpid_info_s {
   6334     bcm_switch_tpid_type_t tpid_type;   /* The type of TPID to be set */
   6335     uint16 tpid_value;                  /* The value of TPID to be set */
   6336     uint32 flags;                       /* Future expansion, BCM_SWITCH_TPID_XXX
   6337                                            flags */
   6338     int color;                          /* Color mode for TPID */
   6339 } bcm_switch_tpid_info_t;
   6340 
   6341 /* Global TPID information flags */
   6342 #define BCM_SWITCH_TPID_VALUE_INVALID   0x0000     /* TPID value 0x0000 is not
   6343                                                       valid. See the Programming
   6344                                                       Guide PP document for full
   6345                                                       details */
   6346 
   6347 #ifndef BCM_HIDE_DISPATCHABLE
   6348 
   6349 /* Add a global TPID. */
   6350 extern int bcm_switch_tpid_add(
   6351     int unit, 
   6352     uint32 options, 
   6353     bcm_switch_tpid_info_t *tpid_info);
   6354 
   6355 /* Delete a global TPID. */
   6356 extern int bcm_switch_tpid_delete(
   6357     int unit, 
   6358     bcm_switch_tpid_info_t *tpid_info);
   6359 
   6360 /* Delete all global TPIDs. */
   6361 extern int bcm_switch_tpid_delete_all(
   6362     int unit);
   6363 
   6364 /* Get a global TPID. */
   6365 extern int bcm_switch_tpid_get(
   6366     int unit, 
   6367     bcm_switch_tpid_info_t *tpid_info);
   6368 
   6369 /* Get global TPID count or TPIDs. */
   6370 extern int bcm_switch_tpid_get_all(
   6371     int unit, 
   6372     int size, 
   6373     bcm_switch_tpid_info_t *tpid_info_array, 
   6374     int *count);
   6375 
   6376 #endif /* BCM_HIDE_DISPATCHABLE */
   6377 
   6378 /* TPID class match type. */
   6379 typedef enum bcm_switch_tpid_class_match_e {
   6380     bcmSwitchTpidClassMatchPort = 0,    /* tpid_class_id from port. */
   6381     bcmSwitchTpidClassMatchIngVlanActionId = 1, /* tpid_class_id from Ingress vlan
   6382                                            translation action id */
   6383     bcmSwitchTpidClassMatch_Count = 2   /* Number of match criterion */
   6384 } bcm_switch_tpid_class_match_t;
   6385 
   6386 /* TPID class retrieval information */
   6387 typedef struct bcm_switch_tpid_class_s {
   6388     uint32 flags;                       /* BCM_SWITCH_TPID_CLASS_XXX, unused
   6389                                            now. */
   6390     bcm_switch_tpid_class_match_t match; /* Match criteria for tpid_class_id */
   6391     bcm_gport_t port;                   /* Port ID */
   6392     int vlan_translation_action_id;     /* Vlan Translation action ID */
   6393     uint32 tpid_class_id;               /* TPID-profile */
   6394 } bcm_switch_tpid_class_t;
   6395 
   6396 /* Initialize a bcm_switch_tpid_class_t structure. */
   6397 extern void bcm_switch_tpid_class_t_init(
   6398     bcm_switch_tpid_class_t *tpid_class);
   6399 
   6400 #ifndef BCM_HIDE_DISPATCHABLE
   6401 
   6402 /* 
   6403  * Get the tpid profile from a given port or ingress vlan translation
   6404  * action ID.
   6405  */
   6406 extern int bcm_switch_tpid_class_get(
   6407     int unit, 
   6408     bcm_switch_tpid_class_t *tpid_class);
   6409 
   6410 #endif /* BCM_HIDE_DISPATCHABLE */
   6411 
   6412 /* packet trace lookup result enums */
   6413 typedef enum bcm_switch_pkt_trace_lookup_e {
   6414     bcmSwitchPktTraceLookupInvalid = 0, 
   6415     bcmSwitchPktTraceLookupFirstVlanTranslationHit = 1, 
   6416     bcmSwitchPktTraceLookupSecondVlanTranslationHit = 2, 
   6417     bcmSwitchPktTraceLookupForwardingVlanValid = 3, 
   6418     bcmSwitchPktTraceLookupL2SrcHit = 6, 
   6419     bcmSwitchPktTraceLookupL2SrcStatic = 7, 
   6420     bcmSwitchPktTraceLookupL2DstHit = 8, 
   6421     bcmSwitchPktTraceLookupL2CacheHit = 9, 
   6422     bcmSwitchPktTraceLookupL3SrcHostHit = 10, 
   6423     bcmSwitchPktTraceLookupL3DestHostHit = 11, 
   6424     bcmSwitchPktTraceLookupL3DestRouteHit = 12, 
   6425     bcmSwitchPktTraceLookupL2SrcMiss = 13, 
   6426     bcmSwitchPktTraceLookupDosAttack = 14, 
   6427     bcmSwitchPktTraceLookupIpTunnelHit = 15, 
   6428     bcmSwitchPktTraceLookupMplsLabel1Hit = 16, 
   6429     bcmSwitchPktTraceLookupMplsLabel2Hit = 17, 
   6430     bcmSwitchPktTraceLookupMplsTerminated = 18, 
   6431     bcmSwitchPktTraceLookupMystationHit = 19, 
   6432     bcmSwitchPktTraceLookupCount = 20 
   6433 } bcm_switch_pkt_trace_lookup_t;
   6434 
   6435 /* lookup result set bit map */
   6436 typedef struct bcm_switch_pkt_trace_lookup_result_s {
   6437     SHR_BITDCL pkt_trace_status_bitmap[_SHR_BITDCLSIZE(bcmSwitchPktTraceLookupCount)]; /* bit map for packet trace lookup
   6438                                            result set */
   6439 } bcm_switch_pkt_trace_lookup_result_t;
   6440 
   6441 /* packet trace resolution enums */
   6442 typedef enum bcm_switch_pkt_trace_resolution_e {
   6443     bcmSwitchPktTraceResolutionUnkown = 0, 
   6444     bcmSwitchPktTraceResolutionControlPkt = 1, /* 1 */
   6445     bcmSwitchPktTraceResolutionOamPkt = 2, 
   6446     bcmSwitchPktTraceResolutionBfdPkt = 3, 
   6447     bcmSwitchPktTraceResolutionBpduPkt = 4, 
   6448     bcmSwitchPktTraceResolution1588Pkt = 6, 
   6449     bcmSwitchPktTraceResolutionKnownL2UcPkt = 8, 
   6450     bcmSwitchPktTraceResolutionUnknownL2UcPkt = 9, 
   6451     bcmSwitchPktTraceResolutionKnownL2McPkt = 10, 
   6452     bcmSwitchPktTraceResolutionUnknownL2McPkt = 11, 
   6453     bcmSwitchPktTraceResolutionL2BcPkt = 12, 
   6454     bcmSwitchPktTraceResolutionKnownL3UcPkt = 16, 
   6455     bcmSwitchPktTraceResolutionUnknownL3UcPkt = 17, 
   6456     bcmSwitchPktTraceResolutionKnownIpmcPkt = 18, 
   6457     bcmSwitchPktTraceResolutionUnknownIpmcPkt = 19, 
   6458     bcmSwitchPktTraceResolutionKnownMplsL2Pkt = 24, 
   6459     bcmSwitchPktTraceResolutionUnknownMplsPkt = 25, 
   6460     bcmSwitchPktTraceResolutionKnownMplsL3Pkt = 26, 
   6461     bcmSwitchPktTraceResolutionKnownMplsPkt = 28, 
   6462     bcmSwitchPktTraceResolutionKnownMimPkt = 32, 
   6463     bcmSwitchPktTraceResolutionUnknownMimPkt = 33, 
   6464     bcmSwitchPktTraceResolutionKnownTrillPkt = 40, 
   6465     bcmSwitchPktTraceResolutionUnknownTrillPkt = 41, 
   6466     bcmSwitchPktTraceResolutionKnownNivPkt = 48, 
   6467     bcmSwitchPktTraceResolutionUnknownNivPkt = 49, 
   6468     bcmSwitchPktTraceResolutionKnownL2GrePkt = 50, 
   6469     bcmSwitchPktTraceResolutionKnownVxlanPkt = 51, 
   6470     bcmSwitchPktTraceResolutionKnownFCOEPkt = 52, 
   6471     bcmSwitchPktTraceResolutionUnknownFCOEPkt = 53, 
   6472     bcmSwitchPktTraceResolutionCount = 54 
   6473 } bcm_switch_pkt_trace_resolution_t;
   6474 
   6475 #define BCM_SWITCH_PKT_TRACE_ECMP_1         0x0001     /* level 1 ecmp hashing
   6476                                                           resolution done */
   6477 #define BCM_SWITCH_PKT_TRACE_ECMP_2         0x0002     /* level 2 ecmp hashing
   6478                                                           resolution done */
   6479 #define BCM_SWITCH_PKT_TRACE_TRUNK          0x0004     /* trunk hashing
   6480                                                           resolution done */
   6481 #define BCM_SWITCH_PKT_TRACE_FABRIC_TRUNK   0x0008     /* hg trunk hashing
   6482                                                           resolution done */
   6483 
   6484 /* packet hashing resolution information */
   6485 typedef struct bcm_switch_pkt_trace_hashing_info_s {
   6486     uint32 flags;                       /* flag containing
   6487                                            BCM_SWITCH_PKT_TRACE_ECMP/TRUNK/FABRIC_TRUNK,
   6488                                            0 == no hashing resolution done */
   6489     bcm_if_t ecmp_1_group;              /* multipath egress forwarding object. */
   6490     bcm_if_t ecmp_1_egress;             /* ecmp destination interface */
   6491     bcm_if_t ecmp_2_group;              /* multipath egress forwarding object. */
   6492     bcm_if_t ecmp_2_egress;             /* ecmp destination interface */
   6493     bcm_gport_t trunk;                  /* destination trunk group */
   6494     bcm_gport_t trunk_member;           /* destination member port which packet
   6495                                            egress. */
   6496     bcm_gport_t fabric_trunk;           /* destination hg trunk group */
   6497     bcm_gport_t fabric_trunk_member;    /* destination member hg port which
   6498                                            packet will egress. */
   6499 } bcm_switch_pkt_trace_hashing_info_t;
   6500 
   6501 /* packet forward destination enums */
   6502 #define BCM_SWITCH_PKT_TRACE_FWD_DST_INVALID 0          /* Forward destination
   6503                                                           invalid. */
   6504 #define BCM_SWITCH_PKT_TRACE_FWD_DST_NH     0x0001     /* Forward destination
   6505                                                           Next hop egress
   6506                                                           object. */
   6507 #define BCM_SWITCH_PKT_TRACE_FWD_DST_L2MC   0x0002     /* Forward destination
   6508                                                           L2MC. */
   6509 #define BCM_SWITCH_PKT_TRACE_FWD_DST_IPMC   0x0004     /* Forward destination
   6510                                                           IPMC. */
   6511 #define BCM_SWITCH_PKT_TRACE_FWD_DST_DGPP   0x0008     /* Forward destination
   6512                                                           DGPP */
   6513 #define BCM_SWITCH_PKT_TRACE_FWD_DST_VLAN   0x0010     /* Forward destination
   6514                                                           VLAN */
   6515 #define BCM_SWITCH_PKT_TRACE_FWD_DST_DVP    0x0020     /* Forward destination
   6516                                                           DVP */
   6517 
   6518 /* packet forward destination information */
   6519 typedef struct bcm_switch_pkt_trace_fwd_dst_info_s {
   6520     uint32 flags;               /* flag containing
   6521                                    BCM_SWITCH_PKT_TRACE_FWD_DST_NH/L2MC/IPMC/DGPP/DVP/VLAN/INVALID,
   6522                                    0 == no forward destination resolution done */
   6523     bcm_if_t egress_intf;       /* egress forwarding destination interface. */
   6524     bcm_multicast_t mc_group;   /* Multicast group. */
   6525     bcm_gport_t port;           /* DGPP - destination port. */
   6526     bcm_gport_t dvp;            /* DVP - destination virtual port. */
   6527     bcm_vlan_t fwd_vlan;        /* Destination forward vlan. */
   6528 } bcm_switch_pkt_trace_fwd_dst_info_t;
   6529 
   6530 #define BCM_SWITCH_PKT_TRACE_DROP_REASON_MAX 4          /* drop reason bitmap
   6531                                                           length */
   6532 
   6533 /* packet trace drop reason enums */
   6534 typedef enum bcm_switch_pkt_trace_drop_reason_e {
   6535     bcmSwitchPktTraceNoDrop = 0,        /* No packet drop */
   6536     bcmSwitchPktTraceDropReasonInternal = 1, /* Packet dropped due to internal reason */
   6537     bcmSwitchPktTraceDropReasonMplsLabelLookupMiss = 2, /* Packet dropped due to MPLS label
   6538                                            lookup miss */
   6539     bcmSwitchPktTraceDropReasonMplsInvalidAction = 3, /* Packet dropped due to MPLS invalid
   6540                                            action */
   6541     bcmSwitchPktTraceDropReasonMplsInvalidPayload = 4, /* Packet dropped due to MPLS invalid
   6542                                            payload */
   6543     bcmSwitchPktTraceDropReasonMplsTtlCheckFail = 5, /* Packet dropped due to MPLS TTL check
   6544                                            fail */
   6545     bcmSwitchPktTraceDropReasonMplsInvalidControlWord = 6, /* Packet dropped due to MPLS invalid
   6546                                            control word */
   6547     bcmSwitchPktTraceDropReasonL2greSipLookupMiss = 7, /* Packet dropped due to L2GRE SIP
   6548                                            lookup miss */
   6549     bcmSwitchPktTraceDropReasonL2greVpnLookupMiss = 8, /* Packet dropped due to L2GRE VPNID
   6550                                            lookup miss */
   6551     bcmSwitchPktTraceDropReasonL2greTunnelError = 9, /* Packet dropped due to L2GRE Tunnel
   6552                                            Error */
   6553     bcmSwitchPktTraceDropReasonVxlanSipLookupMiss = 10, /* Packet dropped due to VXLAN SIP
   6554                                            lookup miss */
   6555     bcmSwitchPktTraceDropReasonVxlanVnidLookupMiss = 11, /* Packet dropped due to VXLAN VN_ID
   6556                                            lookup miss */
   6557     bcmSwitchPktTraceDropReasonVxlanTunnelError = 12, /* Packet dropped due to VXLAN Tunnel
   6558                                            Error */
   6559     bcmSwitchPktTraceDropReasonVlanNotValid = 13, /* Packet dropped due to VLAN not valid */
   6560     bcmSwitchPktTraceDropReasonIngressPortNotInVlanMember = 14, /* Packet dropped due to ingress port
   6561                                            not in VLAN member */
   6562     bcmSwitchPktTraceDropReasonTpidMismatch = 15, /* Packet dropped due to TPID mismatch */
   6563     bcmSwitchPktTraceDropReasonIpv4ProtocolError = 16, /* IPV4 protocol error drop */
   6564     bcmSwitchPktTraceDropReasonHigigLoopback = 17, /* HiGig loopback drop */
   6565     bcmSwitchPktTraceDropReasonHigigMirrorOnly = 18, /* HiGig mirror only drop */
   6566     bcmSwitchPktTraceDropReasonHigigUnknownHeader = 19, /* HiGig unknown header drop */
   6567     bcmSwitchPktTraceDropReasonHigigUnknownOpcode = 20, /* HiGig unknown opcode drop */
   6568     bcmSwitchPktTraceDropReasonLagFailLoopback = 21, /* LAG fail loopback drop */
   6569     bcmSwitchPktTraceDropReasonL2SrcEqualL2Dst = 22, /* Src MAC equals Dst MAC drop */
   6570     bcmSwitchPktTraceDropReasonIpv6ProtocolError = 23, /* IPV6 protocol error drop */
   6571     bcmSwitchPktTraceDropReasonNivVntagPresent = 24, /* NIV VNTAG present drop */
   6572     bcmSwitchPktTraceDropReasonNivVntagNotPresent = 25, /* NIV VNTAG not present drop */
   6573     bcmSwitchPktTraceDropReasonNivVntagFormat = 26, /* NIV VNTAG format drop */
   6574     bcmSwitchPktTraceDropReasonTrillErrorFrame = 27, /* Trill error frame drop */
   6575     bcmSwitchPktTraceDropReasonBpdu = 28, /* BPDU drop */
   6576     bcmSwitchPktTraceDropReasonBadUdpChecksum = 29, /* Bad udp checksum drop */
   6577     bcmSwitchPktTraceDropReasonTunnlDecapEcnError = 30, /* Tunnel Decap ECN error drop */
   6578     bcmSwitchPktTraceDropReasonIpv4HeaderError = 31, /* Packet dropped due to IPv4 Header
   6579                                            error */
   6580     bcmSwitchPktTraceDropReasonIpv6HeaderError = 32, /* Packet dropped due to IPv6 Header
   6581                                            error */
   6582     bcmSwitchPktTraceDropReasonParityError = 33, /* Packet dropped due to parity error */
   6583     bcmSwitchPktTraceDropReasonRpfCheckFail = 34, /* Packet dropped due to unicast RPF
   6584                                            check fail */
   6585     bcmSwitchPktTraceDropReasonStageLookup = 35, /* Packet dropped on field lookup stage */
   6586     bcmSwitchPktTraceDropReasonStageIngress = 36, /* Packet dropped on field ingress stage */
   6587     bcmSwitchPktTraceDropReasonTunnelObjectValidationFail = 37, /* Packet dropped due to Tunnel
   6588                                            termination can't be done as not all
   6589                                            packet forwarding objects got
   6590                                            assigned. */
   6591     bcmSwitchPktTraceDropReasonTunnelShimHeaderError = 38, /* Packet dropped due to tunnel shim
   6592                                            header error. */
   6593     bcmSwitchPktTraceDropReasonTunnelTTLError = 39, /* Packet dropped due to tunnel TTL
   6594                                            check fail. */
   6595     bcmSwitchPktTraceDropReasonTunnelInterfaceCheckFail = 40, /* Packet dropped due to tunnel
   6596                                            interface check failure. */
   6597     bcmSwitchPktTraceDropReasonTunnelError = 41, /* Packet dropped due to tunnel error. */
   6598     bcmSwitchPktTraceDropReasonTunnelAdapt1LookupMiss = 42, /* Packcet dropped due to tunnel
   6599                                            adaptation table 1 lookup miss. */
   6600     bcmSwitchPktTraceDropReasonTunnelAdapt2LookupMiss = 43, /* Packcet dropped due to tunnel
   6601                                            adaptation table 2 lookup miss. */
   6602     bcmSwitchPktTraceDropReasonTunnelAdapt3LookupMiss = 44, /* Packcet dropped due to tunnel
   6603                                            adaptation table 3 lookup miss. */
   6604     bcmSwitchPktTraceDropReasonTunnelAdapt4LookupMiss = 45, /* Packcet dropped due to tunnel
   6605                                            adaptation table 4 lookup miss. */
   6606     bcmSwitchPktTraceDropReasonControlFrame = 46, /* Packcet dropped due to control frame
   6607                                            drop. */
   6608     bcmSwitchPktTraceDropReasonHigigHdrError = 47, /* Packcet dropped due to higig header
   6609                                            error. */
   6610     bcmSwitchPktTraceDropReasonNivDot1p = 48, /* Packcet dropped due to niv dot1p. */
   6611     bcmSwitchPktTraceDropReasonMplsGalLabel = 49, /* Packcet dropped due to mpls gal
   6612                                            label. */
   6613     bcmSwitchPktTraceDropReasonStpNotForwarding = 50, /* Packcet dropped due to stp not
   6614                                            forwarding. */
   6615     bcmSwitchPktTraceDropReasonMcastIndexError = 51, /* Packcet dropped due to multicast
   6616                                            index error. */
   6617     bcmSwitchPktTraceDropReasonProtocolPkt = 52, /* Packcet dropped due to protocol pkt
   6618                                            drop. */
   6619     bcmSwitchPktTraceDropReasonUnknownSrcMac = 53, /* Packcet dropped due to unknown src
   6620                                            mac. */
   6621     bcmSwitchPktTraceDropReasonSrcRoute = 54, /* Packcet dropped due to source route. */
   6622     bcmSwitchPktTraceDropReasonL2SrcDiscard = 55, /* Packcet dropped due to L2 source
   6623                                            discard. */
   6624     bcmSwitchPktTraceDropReasonL2SrcStaticMove = 56, /* Packcet dropped due to L2 source
   6625                                            static move. */
   6626     bcmSwitchPktTraceDropReasonL2DstDiscard = 57, /* Packcet dropped due to L2 dest
   6627                                            discard. */
   6628     bcmSwitchPktTraceDropReasonSrcMacZero = 58, /* Packcet dropped due to source mac
   6629                                            zero. */
   6630     bcmSwitchPktTraceDropReasonL2DstMissOrPbt = 59, /* Packcet dropped due to L2 dest miss
   6631                                            or pbt. */
   6632     bcmSwitchPktTraceDropReasonClassBasedStationMove = 60, /* Packcet dropped due to class based
   6633                                            station move. */
   6634     bcmSwitchPktTraceDropReasonTimeSyncPkt = 61, /* Packcet dropped due to time sync pkt
   6635                                            drop. */
   6636     bcmSwitchPktTraceDropReasonMyStation = 62, /* Packcet dropped due to my station
   6637                                            drop. */
   6638     bcmSwitchPktTraceDropReasonL3DstDiscard = 63, /* Packcet dropped due to L3 dest
   6639                                            discard. */
   6640     bcmSwitchPktTraceDropReasonMcastLookupMiss = 64, /* Packcet dropped due to multicast
   6641                                            lookup miss. */
   6642     bcmSwitchPktTraceDropReasonPortTagPresentError = 65, /* Packcet dropped due to port tag
   6643                                            present error. */
   6644     bcmSwitchPktTraceDropReasonPVlanVpEgressFilter = 66, /* Packcet dropped due to pvlan vp
   6645                                            egress filter. */
   6646     bcmSwitchPktTraceDropReasonPortBitmapZero = 67, /* Packcet dropped due to port bitmap
   6647                                            zero. */
   6648     bcmSwitchPktTraceDropReasonCount = 68 
   6649 } bcm_switch_pkt_trace_drop_reason_t;
   6650 
   6651 #define BCM_SWITCH_PKT_TRACE_RAW_DATA_MAX   112        /* max bytes of
   6652                                                           pkt_trace_info.raw_data */
   6653 
   6654 /* packet trace ingress process data */
   6655 typedef struct bcm_switch_pkt_trace_info_s {
   6656     bcm_switch_pkt_trace_lookup_result_t pkt_trace_lookup_status; /* packet trace lookup status set */
   6657     bcm_switch_pkt_trace_resolution_t pkt_trace_resolution; /* packet trace resolution result */
   6658     bcm_switch_pkt_trace_hashing_info_t pkt_trace_hash_info; /* packet trace hashing information */
   6659     bcm_stg_stp_t pkt_trace_stp_state;  /* packet trace ingress stp state */
   6660     uint32 pkt_trace_drop_reason[BCM_SWITCH_PKT_TRACE_DROP_REASON_MAX]; /* packet trace drop reason */
   6661     uint32 dest_pipe_num;               /* ingress pipeline number of the pkt
   6662                                            trace packet */
   6663     uint32 raw_data_length;             /* number of bytes returned as raw_data */
   6664     uint8 raw_data[BCM_SWITCH_PKT_TRACE_RAW_DATA_MAX]; /* packet trace process result data in
   6665                                            raw format */
   6666     bcm_switch_pkt_trace_fwd_dst_info_t pkt_trace_fwd_dst_info; /* packet trace forward destination
   6667                                            information */
   6668 } bcm_switch_pkt_trace_info_t;
   6669 
   6670 #ifndef BCM_HIDE_DISPATCHABLE
   6671 
   6672 /* Clear the visibility SW and HW configuration and states */
   6673 extern int bcm_switch_pkt_trace_info_clear(
   6674     int unit, 
   6675     bcm_port_t port);
   6676 
   6677 /* 
   6678  * Generate a visibility trace packet and/or read the result of the
   6679  * packets ingress processing information
   6680  */
   6681 extern int bcm_switch_pkt_trace_info_get(
   6682     int unit, 
   6683     uint32 options, 
   6684     uint8 port, 
   6685     int len, 
   6686     uint8 *data, 
   6687     bcm_switch_pkt_trace_info_t *pkt_trace_info);
   6688 
   6689 /* 
   6690  * Generate a visibility trace packet and then read the visibility packet
   6691  * debug information as raw data.
   6692  */
   6693 extern int bcm_switch_pkt_trace_raw_data_get(
   6694     int unit, 
   6695     uint32 options, 
   6696     uint8 port, 
   6697     int len, 
   6698     uint8 *data, 
   6699     uint32 raw_data_buf_size, 
   6700     uint8 *raw_data, 
   6701     uint32 *raw_data_size);
   6702 
   6703 #endif /* BCM_HIDE_DISPATCHABLE */
   6704 
   6705 /* 32bit or 48bit timestamping mode for 1588 packets */
   6706 typedef enum bcm_switch_timesync_timestamping_mode_e {
   6707     bcmTimesyncTimestampingMode32bit = 0, /* 32bit timestamping mode for 1588
   6708                                            packets */
   6709     bcmTimesyncTimestampingMode48bit = 1 /* 48bit timestamping mode for 1588
   6710                                            packets. */
   6711 } bcm_switch_timesync_timestamping_mode_t;
   6712 
   6713 /* 
   6714  * Flags for bcm_switch_lif_property_set / get - Correlates with
   6715  * bcmLifPropertyOutGlobalLifRangeType
   6716  */
   6717 #define BCM_SWITCH_LIF_PROPERTY_ID_RANGE_TYPE_MAPPED 0x0        /* global outlif mapped. */
   6718 #define BCM_SWITCH_LIF_PROPERTY_ID_RANGE_TYPE_DIRECT 0x1        /* global outlif direct. */
   6719 
   6720 /* 
   6721  * Flags for bcm_switch_lif_property_set / get - Correlates with
   6722  * bcmLifPropertyEEDBBankPhase
   6723  */
   6724 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_DYNAMIC 0x0        /* EEDB bank dynamic
   6725                                                           phase. */
   6726 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_1 0x1        /* EEDB bank phase 1. */
   6727 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_2 0x2        /* EEDB bank phase 2. */
   6728 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_3 0x4        /* EEDB bank phase 3. */
   6729 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_4 0x8        /* EEDB bank phase 4. */
   6730 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_5 0x10       /* EEDB bank phase 5. */
   6731 #define BCM_SWITCH_LIF_PROPERTY_EEDB_PHASE_6 0x20       /* EEDB bank phase 6. */
   6732 
   6733 /* 
   6734  * Flags for bcm_switch_lif_property_set / get - Correlates with
   6735  * bcmLifPropertyEEDBBankExtension
   6736  */
   6737 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_ENABLE 0x0        /* EEDB bank has
   6738                                                           extension. */
   6739 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_DISABLE 0x1        /* EEDB bank doesn't have
   6740                                                           extension. */
   6741 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_DYNAMIC 0x2        /* EEDB bank extension
   6742                                                           dynamic. */
   6743 
   6744 /* 
   6745  * Flags for bcm_switch_lif_property_set / get - Correlates with
   6746  * bcmLifPropertyEEDBBankExtensionType
   6747  */
   6748 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_TYPE_PROTECTION 0x0        /* EEDB bank extension
   6749                                                           type protection
   6750                                                           pointer. */
   6751 #define BCM_SWITCH_LIF_PROPERTY_EEDB_BANK_EXT_TYPE_DATA 0x1        /* EEDB bank extension
   6752                                                           type Data. */
   6753 
   6754 /* 
   6755  * lif property configuration parameters for
   6756  * bcm_switch_lif_property_set/get.
   6757  */
   6758 typedef enum bcm_switch_lif_property_e {
   6759     bcmLifPropertyOutGlobalLifRangeType = 0, /* per LIF range of 4K entries, specify
   6760                                            if it's Direct or Mapped. */
   6761     bcmLifPropertyEEDBBankPhase = 1,    /* per EEDB bank (0-23), specify if it's
   6762                                            Phase. */
   6763     bcmLifPropertyEEDBBankExtension = 2, /* per EEDB bank (0-21), specify if it
   6764                                            has an extension */
   6765     bcmLifPropertyEEDBBankExtensionType = 3 /* per EEDB bank (0-21), specify its
   6766                                            extension type: protection-ptr or
   6767                                            Data */
   6768 } bcm_switch_lif_property_t;
   6769 
   6770 /* 
   6771  * This structure describes the fields that need to be supplies for the
   6772  * configuration along with the property type.
   6773  */
   6774 typedef struct bcm_switch_lif_property_config_s {
   6775     uint32 key;     /* property key : 0-47  in case of
   6776                        bcmLifPropertyOutGlobalLifRangeType or 0-23 in case of
   6777                                               bcmLifPropertyEEDBBankPhase and
   6778                        bcmLifPropertyEEDBBankExtension */
   6779     uint32 value;   /* property value */
   6780 } bcm_switch_lif_property_config_t;
   6781 
   6782 #ifndef BCM_HIDE_DISPATCHABLE
   6783 
   6784 /* 
   6785  * Setup the LIF property along with the desired property and the
   6786  * configuration values
   6787  */
   6788 extern int bcm_switch_lif_property_set(
   6789     int unit, 
   6790     bcm_switch_lif_property_t lif_property, 
   6791     bcm_switch_lif_property_config_t *lif_config);
   6792 
   6793 /* 
   6794  * Get the LIF property along with the desired property and the
   6795  * configuration values.
   6796  */
   6797 extern int bcm_switch_lif_property_get(
   6798     int unit, 
   6799     bcm_switch_lif_property_t lif_property, 
   6800     bcm_switch_lif_property_config_t *lif_config);
   6801 
   6802 #endif /* BCM_HIDE_DISPATCHABLE */
   6803 
   6804 /* Key to be used for switch control indexed setget. */
   6805 typedef struct bcm_switch_control_key_s {
   6806     bcm_switch_control_t type;  /* Switch control type */
   6807     int index;                  /* Switch control index */
   6808 } bcm_switch_control_key_t;
   6809 
   6810 /* Info to be used for switch control indexed setget. */
   6811 typedef struct bcm_switch_control_info_s {
   6812     int value;  /* Switch control value */
   6813 } bcm_switch_control_info_t;
   6814 
   6815 #ifndef BCM_HIDE_DISPATCHABLE
   6816 
   6817 /* 
   6818  * Configure port-specific and device-wide operating modes. Device wide
   6819  * operating
   6820  * modes are configured on all ports, except the stack ports.
   6821  */
   6822 extern int bcm_switch_control_indexed_set(
   6823     int unit, 
   6824     bcm_switch_control_key_t key, 
   6825     bcm_switch_control_info_t value);
   6826 
   6827 /* 
   6828  * Configure port-specific and device-wide operating modes. Device wide
   6829  * operating
   6830  * modes are configured on all ports, except the stack ports.
   6831  */
   6832 extern int bcm_switch_control_indexed_get(
   6833     int unit, 
   6834     bcm_switch_control_key_t key, 
   6835     bcm_switch_control_info_t *value);
   6836 
   6837 #endif /* BCM_HIDE_DISPATCHABLE */
   6838 
   6839 /* 
   6840  * Specified MAC address is used as destination MAC address when BCM
   6841  * SWITCH device sends OLP encapsulated pkt from specified port towards
   6842  * offload processor
   6843  */
   6844 typedef struct bcm_switch_olp_l2_addr_s {
   6845     bcm_port_t port;    /* ingress port for this entry */
   6846     bcm_mac_t mac;      /* MAC address for this entry */
   6847 } bcm_switch_olp_l2_addr_t;
   6848 
   6849 /* Initialize a bcm_switch_olp_l2_addr_t structure. */
   6850 extern void bcm_switch_olp_l2_addr_t_init(
   6851     bcm_switch_olp_l2_addr_t *l2_addr);
   6852 
   6853 /* Replace the matching entry */
   6854 #define BCM_SWITCH_OLP_L2_ADDR_REPLACE  0x1        
   6855 
   6856 #ifndef BCM_HIDE_DISPATCHABLE
   6857 
   6858 /* Set/Replace MAC address assigned to Offload Processor connecting port. */
   6859 extern int bcm_switch_olp_l2_addr_add(
   6860     int unit, 
   6861     uint32 options, 
   6862     bcm_switch_olp_l2_addr_t *l2_addr);
   6863 
   6864 /* Delete OLP MAC address. */
   6865 extern int bcm_switch_olp_l2_addr_delete(
   6866     int unit, 
   6867     bcm_switch_olp_l2_addr_t *l2_addr);
   6868 
   6869 /* Delete all previously configured OLP mac addresses. */
   6870 extern int bcm_switch_olp_l2_addr_delete_all(
   6871     int unit);
   6872 
   6873 /* Get MAC address assigned to Offload Processor connecting port. */
   6874 extern int bcm_switch_olp_l2_addr_get(
   6875     int unit, 
   6876     bcm_switch_olp_l2_addr_t *l2_addr);
   6877 
   6878 #endif /* BCM_HIDE_DISPATCHABLE */
   6879 
   6880 /* OLP MAC address traverse callback */
   6881 typedef int (*bcm_switch_olp_l2_addr_traverse_cb)(
   6882     int unit, 
   6883     bcm_switch_olp_l2_addr_t *l2_addr, 
   6884     void *user_data);
   6885 
   6886 #ifndef BCM_HIDE_DISPATCHABLE
   6887 
   6888 /* 
   6889  * Traverse previously configured OLP MAC addresses and call callback
   6890  * function for each valid OLP MAC.
   6891  */
   6892 extern int bcm_switch_olp_l2_addr_traverse(
   6893     int unit, 
   6894     bcm_switch_olp_l2_addr_traverse_cb cb_fn, 
   6895     void *user_data);
   6896 
   6897 #endif /* BCM_HIDE_DISPATCHABLE */
   6898 
   6899 /* AGM Forwarding group type */
   6900 typedef enum bcm_switch_agm_type_e {
   6901     bcmSwitchAgmTypeTrunk = 0,          /* Forwarding group is a Trunk group */
   6902     bcmSwitchAgmTypeFabricTrunk = 1,    /* Forwarding group is a HiGig Trunk
   6903                                            group */
   6904     bcmSwitchAgmTypeL3Ecmp = 2,         /* Forwarding group is an Ecmp Trunk
   6905                                            group */
   6906     bcmSwitchAgmTypeL3EcmpOverlay = 3,  /* Forwarding group is an Overlay Ecmp
   6907                                            Trunk group */
   6908     bcmSwitchAgmTypeCount = 4           /* Maximum AGM type count */
   6909 } bcm_switch_agm_type_t;
   6910 
   6911 /* AGM period interval type */
   6912 typedef enum bcm_switch_agm_period_interval_e {
   6913     bcmSwitchAgmInterval1Second = 0,    /* 1s interval for each monitor period */
   6914     bcmSwitchAgmInterval100MiliSecond = 1, /* 100 ms interval for each monitor
   6915                                            period */
   6916     bcmSwtichAgmInterval10MiliSecond = 2, /* 10ms interval for each monitor period */
   6917     bcmSwitchAgmInterval1MiliSecond = 3, /* 1ms interval for each monitor period */
   6918     bcmSwitchAgmInterval100MacroSecond = 4, /* 100us interval for each monitor
   6919                                            period */
   6920     bcmSwitchAgmIntervalCount = 5       /* Maximum AGM period interval type
   6921                                            count */
   6922 } bcm_switch_agm_period_interval_t;
   6923 
   6924 /* AGM monitor info */
   6925 typedef struct bcm_switch_agm_info_s {
   6926     bcm_switch_agm_id_t agm_id;         /* AGM monitor id */
   6927     bcm_switch_agm_type_t agm_type;     /* Indicates forwarding group type using
   6928                                            this monitor */
   6929     int num_members;                    /* number of members for the forwarding
   6930                                            group */
   6931     int period_num;                     /* AGM period number to be monitored, 0
   6932                                            means continue counting traffic
   6933                                            indefinitely */
   6934     bcm_switch_agm_period_interval_t period_interval; /* interval for each period */
   6935 } bcm_switch_agm_info_t;
   6936 
   6937 /* AGM stat info */
   6938 typedef struct bcm_switch_agm_stat_s {
   6939     uint64 packets;         /* accumulated packets value */
   6940     uint64 bytes;           /* accumulated bytes value */
   6941     int period;             /* period number used by current stat */
   6942     bcm_gport_t gport_id;   /* If this AGM is for a Trunk/HiGigTrunk, indicates
   6943                                which trunk member using the counter */
   6944     bcm_if_t intf_id;       /* If this AGM is for an ECMP group, indicates which
   6945                                group member using the counter */
   6946 } bcm_switch_agm_stat_t;
   6947 
   6948 /* bcm_switch_agm_traverse_cb */
   6949 typedef int (*bcm_switch_agm_traverse_cb)(
   6950     int unit, 
   6951     bcm_switch_agm_info_t *agm_info, 
   6952     void *user_data);
   6953 
   6954 /* Initialize a bcm_switch_agm_info_t structure. */
   6955 extern void bcm_switch_agm_info_t_init(
   6956     bcm_switch_agm_info_t *agm_info);
   6957 
   6958 /* Initialize a bcm_switch_agm_stat_t structure. */
   6959 extern void bcm_switch_agm_stat_t_init(
   6960     bcm_switch_agm_stat_t *agm_stat);
   6961 
   6962 #ifndef BCM_HIDE_DISPATCHABLE
   6963 
   6964 /* Creates an aggregation monitoring entry. */
   6965 extern int bcm_switch_agm_create(
   6966     int unit, 
   6967     uint32 options, 
   6968     bcm_switch_agm_info_t *agm_info);
   6969 
   6970 /* Enable or disable the aggregation group monitoring on a given entry. */
   6971 extern int bcm_switch_agm_enable_set(
   6972     int unit, 
   6973     bcm_switch_agm_id_t agm_id, 
   6974     int enable);
   6975 
   6976 /* 
   6977  * Retrieve bandwidth and packet distribution information that were
   6978  * collected via aggregation group monitoring.
   6979  */
   6980 extern int bcm_switch_agm_stat_get(
   6981     int unit, 
   6982     bcm_switch_agm_id_t agm_id, 
   6983     int nstat, 
   6984     bcm_switch_agm_stat_t *stat_arr);
   6985 
   6986 /* 
   6987  * Clear stats of counter entries attached to the aggregation monitor
   6988  * (id).
   6989  */
   6990 extern int bcm_switch_agm_stat_clear(
   6991     int unit, 
   6992     bcm_switch_agm_id_t agm_id);
   6993 
   6994 /* Destroy an existing aggregation monitoring entry. */
   6995 extern int bcm_switch_agm_destroy(
   6996     int unit, 
   6997     bcm_switch_agm_id_t agm_id);
   6998 
   6999 /* Retrieve a (fabric) trunk_id where the monitor entry is attached. */
   7000 extern int bcm_switch_agm_trunk_attach_get(
   7001     int unit, 
   7002     bcm_switch_agm_id_t agm_id, 
   7003     bcm_trunk_t *trunk_id);
   7004 
   7005 /* Retrieve a l3 ecmp group id where the monitor entry is attached. */
   7006 extern int bcm_switch_agm_l3_ecmp_attach_get(
   7007     int unit, 
   7008     bcm_switch_agm_id_t agm_id, 
   7009     bcm_if_t *l3_ecmp_id);
   7010 
   7011 /* Retrieve an AGM monitor info if it's created. */
   7012 extern int bcm_switch_agm_get(
   7013     int unit, 
   7014     bcm_switch_agm_info_t *agm_info);
   7015 
   7016 /* Return a monitor entry's enable status. */
   7017 extern int bcm_switch_agm_enable_get(
   7018     int unit, 
   7019     bcm_switch_agm_id_t agm_id, 
   7020     int *enable);
   7021 
   7022 /* 
   7023  * Traverse all aggregation monitor entries and call callback function
   7024  * for each allocated entry.
   7025  */
   7026 extern int bcm_switch_agm_traverse(
   7027     int unit, 
   7028     int flags, 
   7029     bcm_switch_agm_traverse_cb trav_fn, 
   7030     void *user_data);
   7031 
   7032 #endif /* BCM_HIDE_DISPATCHABLE */
   7033 
   7034 /* Service type for Match */
   7035 typedef enum bcm_switch_match_service_e {
   7036     bcmSwitchMatchServiceMiml = 0,      /* Mac-in-Mac Lite(MiML). Required
   7037                                            fields: inner_ethtype, outer_ethtype. */
   7038     bcmSwitchMatchServiceCustomHeader = 1, /* Custom Header. Required fields:
   7039                                            value32, int_pri, color. */
   7040     bcmSwitchMatchServiceGtp = 2,       /* GPRS Tunnel Protocol packets.
   7041                                            Required fields: match_criteria,
   7042                                            src_port, dst_port. */
   7043     bcmSwitchMatchServicePrpHsrSupervision = 3, /* Seamless Redundancy PRP/HSR
   7044                                            supervision protocol. Required
   7045                                            fields: ethtype1 (for PRP), ethtype2
   7046                                            (for HSR), dst_mac, dst_mac_mask */
   7047     bcmSwitchMatchServiceDot1cbSupervision = 4, /* Seamless Redundancy 802.1CB
   7048                                            supervision protocol. Required
   7049                                            fields: ethtype1, dst_mac,
   7050                                            dst_mac_mask */
   7051     bcmSwitchMatchServiceLinkLocal = 5, /* Link-local MAC addresses. Required
   7052                                            fields: dst_mac, dst_mac_mask */
   7053     bcmSwitchMatchService__Count = 6    /* Must be last. */
   7054 } bcm_switch_match_service_t;
   7055 
   7056 /* Types for bcm_switch_match_config_info_t. */
   7057 #define BCM_SWITCH_GTP_MATCH_DST_PORT       0x1        /* Match only destination
   7058                                                           port of GTP packets */
   7059 #define BCM_SWITCH_GTP_MATCH_SRC_PORT       0x2        /* Match only source port
   7060                                                           of GTP packets */
   7061 #define BCM_SWITCH_GTP_MATCH_SRC_OR_DST_PORT 0x3        /* Match source port or
   7062                                                           destination port of
   7063                                                           GTP packets */
   7064 #define BCM_SWITCH_GTP_MATCH_SRC_AND_DST_PORT 0x4        /* Match source port and
   7065                                                           destination port of
   7066                                                           GTP packets */
   7067 
   7068 /* 
   7069  * This structure describes the fields that need to be supplies for the
   7070  * configuration along with the property type.
   7071  */
   7072 typedef struct bcm_switch_match_config_info_s {
   7073     uint32 value32;         /* 32-bit data value to match */
   7074     uint16 inner_ethtype;   /* 16-bit Inner EtherType to match */
   7075     uint16 outer_ethtype;   /* 16-bit Outer EtherType to match */
   7076     uint8 int_pri;          /* Internal packet priority to set when matched */
   7077     bcm_color_t color;      /* Packet Color to set when matched */
   7078     uint8 match_criteria;   /* Match criteria for GPRS Tunnel Protocol packets */
   7079     uint16 dst_port;        /* Matched destination port */
   7080     uint16 src_port;        /* Matched source port */
   7081     uint16 ethtype1;        /* 16-bit EtherType to match */
   7082     uint16 ethtype2;        /* 16-bit EtherType (alternate) to match */
   7083     bcm_mac_t dst_mac;      /* Destination MAC address to match */
   7084     bcm_mac_t dst_mac_mask; /* Mask for destination MAC address */
   7085 } bcm_switch_match_config_info_t;
   7086 
   7087 /* Initialize a bcm_switch_match_config_info_t structure */
   7088 extern void bcm_switch_match_config_info_t_init(
   7089     bcm_switch_match_config_info_t *config_info);
   7090 
   7091 #ifndef BCM_HIDE_DISPATCHABLE
   7092 
   7093 /* Add a match config. */
   7094 extern int bcm_switch_match_config_add(
   7095     int unit, 
   7096     bcm_switch_match_service_t match_service, 
   7097     bcm_switch_match_config_info_t *config_info, 
   7098     int *match_id);
   7099 
   7100 /* Delete a created match config. */
   7101 extern int bcm_switch_match_config_delete(
   7102     int unit, 
   7103     bcm_switch_match_service_t match_service, 
   7104     int match_id);
   7105 
   7106 /* Delete all created match objects. */
   7107 extern int bcm_switch_match_config_delete_all(
   7108     int unit, 
   7109     bcm_switch_match_service_t match_service);
   7110 
   7111 /* Set/Get the match config info. */
   7112 extern int bcm_switch_match_config_set(
   7113     int unit, 
   7114     bcm_switch_match_service_t match_service, 
   7115     int match_id, 
   7116     bcm_switch_match_config_info_t *config_info);
   7117 
   7118 /* Set/Get the match config info. */
   7119 extern int bcm_switch_match_config_get(
   7120     int unit, 
   7121     bcm_switch_match_service_t match_service, 
   7122     int match_id, 
   7123     bcm_switch_match_config_info_t *config_info);
   7124 
   7125 #endif /* BCM_HIDE_DISPATCHABLE */
   7126 
   7127 /* match table traverse callback. */
   7128 typedef int (*bcm_switch_match_config_traverse_cb)(
   7129     int unit, 
   7130     int match_id, 
   7131     bcm_switch_match_config_info_t *config_info, 
   7132     void *user_data);
   7133 
   7134 #ifndef BCM_HIDE_DISPATCHABLE
   7135 
   7136 /* 
   7137  * Traverse all created match objects and call callback function for each
   7138  * allocated entry.
   7139  */
   7140 extern int bcm_switch_match_config_traverse(
   7141     int unit, 
   7142     bcm_switch_match_service_t match_service, 
   7143     bcm_switch_match_config_traverse_cb cb_fn, 
   7144     void *user_data);
   7145 
   7146 #endif /* BCM_HIDE_DISPATCHABLE */
   7147 
   7148 /* Control type for match */
   7149 typedef enum bcm_switch_match_control_type_e {
   7150     bcmSwitchMatchControlPortEnable = 0, /* Enable/disable the capability for
   7151                                            match detection on a port. */
   7152     bcmSwitchMatchControlMatchMask = 1, /* Setup the mask for matching lookup. */
   7153     bcmSwitchMatchControl__Count        /* Must be last. */
   7154 } bcm_switch_match_control_type_t;
   7155 
   7156 /* 
   7157  * This structure describes the fields that need to be supplies for the
   7158  * configuration along with the property type.
   7159  */
   7160 typedef struct bcm_switch_match_control_info_s {
   7161     int port_enable;    /* Enable or disable (per-port) */
   7162     uint32 mask32;      /* Mask value for matching (32 bits) */
   7163 } bcm_switch_match_control_info_t;
   7164 
   7165 /* Initialize a bcm_switch_match_control_info_t structure */
   7166 extern void bcm_switch_match_control_info_t_init(
   7167     bcm_switch_match_control_info_t *control_info);
   7168 
   7169 #ifndef BCM_HIDE_DISPATCHABLE
   7170 
   7171 /* Set/Get the match control info. */
   7172 extern int bcm_switch_match_control_set(
   7173     int unit, 
   7174     bcm_switch_match_service_t match_service, 
   7175     bcm_switch_match_control_type_t control_type, 
   7176     bcm_gport_t gport, 
   7177     bcm_switch_match_control_info_t *control_info);
   7178 
   7179 /* Set/Get the match control info. */
   7180 extern int bcm_switch_match_control_get(
   7181     int unit, 
   7182     bcm_switch_match_service_t match_service, 
   7183     bcm_switch_match_control_type_t control_type, 
   7184     bcm_gport_t gport, 
   7185     bcm_switch_match_control_info_t *control_info);
   7186 
   7187 #endif /* BCM_HIDE_DISPATCHABLE */
   7188 
   7189 /* match control traverse callback. */
   7190 typedef int (*bcm_switch_match_control_traverse_cb)(
   7191     int unit, 
   7192     bcm_switch_match_control_type_t control_type, 
   7193     bcm_gport_t gport, 
   7194     bcm_switch_match_control_info_t *control_info, 
   7195     void *user_data);
   7196 
   7197 #ifndef BCM_HIDE_DISPATCHABLE
   7198 
   7199 /* 
   7200  * Traverse all match control info and call callback function for each
   7201  * allocated entry.
   7202  */
   7203 extern int bcm_switch_match_control_traverse(
   7204     int unit, 
   7205     bcm_switch_match_service_t match_service, 
   7206     bcm_switch_match_control_traverse_cb cb_fn, 
   7207     void *user_data);
   7208 
   7209 #endif /* BCM_HIDE_DISPATCHABLE */
   7210 
   7211 /* Encap service type. */
   7212 typedef enum bcm_switch_encap_service_e {
   7213     BCM_SWITCH_ENCAP_SERVICE_MIML = 0,  /* Mac-in-Mac Lite(MiML). Required
   7214                                            fields: egress_vlan, egress_srcmac,
   7215                                            egress_dstmac, pkt_pri, pkt_cfi,
   7216                                            pkt_type, iid and length. */
   7217     BCM_SWITCH_ENCAP_SERVICE_CUSTOM_HEADER = 1, /* Custom Header. Required fields:
   7218                                            value32. */
   7219     BCM_SWITCH_ENCAP_SERVICE_COUNT      /* Must be last */
   7220 } bcm_switch_encap_service_t;
   7221 
   7222 /* 
   7223  * Encap info structure.
   7224  * 
   7225  * The following parameters are required when the encap type is MIML:
   7226  * egress_vlan, egress_srcmac, egress_dstmac, pkt_pri, pkt_cfi, pkt_type,
   7227  * iid, length and port.
   7228  * 
   7229  * The following parameters are required when the encap type is
   7230  * CUSTOM_HEADER: value32.
   7231  * 
   7232  * The other optional configurations depend on "flags" definition per
   7233  * service: e.g. qos_map_id , higig_vlan.
   7234  */
   7235 typedef struct bcm_switch_encap_info_s {
   7236     bcm_switch_encap_service_t encap_service; /* Encapsulation Service Type. */
   7237     uint32 flags;                       /* Configuration flags. */
   7238     uint32 value32;                     /* 32-bit data value for encapsulation. */
   7239     int qos_map_id;                     /* QoS Mapped priority. */
   7240     bcm_gport_t port;                   /* Physical port/trunk, which is must
   7241                                            set for MiML to indicate the
   7242                                            destination port. */
   7243     bcm_vlan_t egress_vlan;             /* VID. */
   7244     bcm_mac_t egress_srcmac;            /* Source MAC address. */
   7245     bcm_mac_t egress_dstmac;            /* Dest MAC address. */
   7246     uint8 pkt_pri;                      /* Packet priority. */
   7247     uint8 pkt_cfi;                      /* Packet cfi. */
   7248     uint8 pkt_type;                     /* MiML Packet Type. */
   7249     uint16 iid;                         /* MiML IID. */
   7250     uint16 length;                      /* MiML Length. */
   7251     bcm_vlan_t higig_vlan;              /* MiML HiGig header OVID. */
   7252 } bcm_switch_encap_info_t;
   7253 
   7254 /* Switch encap flags for Custom Header. */
   7255 #define BCM_SWITCH_ENCAP_CUSTOM_HEADER_QOS_MAP_INT_PRI (1 << 0)   /* Encapsulation priority
   7256                                                           control per entry, map
   7257                                                           priority. Required
   7258                                                           fields: qos_map_id. */
   7259 
   7260 /* Switch encap flags for MiML. */
   7261 #define BCM_SWITCH_ENCAP_MIML_QOS_MAP_INT_PRI (1 << 0)   /* Encapsulation priority
   7262                                                           control per entry, map
   7263                                                           priority. Required
   7264                                                           fields: qos_map_id. */
   7265 #define BCM_SWITCH_ENCAP_MIML_OVERRIDE_HG_HEADER_VID (1 << 1)   /* Use higig_vlan value
   7266                                                           to override OVID field
   7267                                                           in HiGig header.
   7268                                                           Required fields:
   7269                                                           higig_vlan. */
   7270 
   7271 /* Initialize a bcm_switch_encap_info_t structure */
   7272 extern void bcm_switch_encap_info_t_init(
   7273     bcm_switch_encap_info_t *encap_info);
   7274 
   7275 #ifndef BCM_HIDE_DISPATCHABLE
   7276 
   7277 /* Create an encapuslation object. */
   7278 extern int bcm_switch_encap_create(
   7279     int unit, 
   7280     bcm_switch_encap_info_t *encap_info, 
   7281     bcm_if_t *encap_id);
   7282 
   7283 /* Destroy previously created encapuslation object. */
   7284 extern int bcm_switch_encap_destroy(
   7285     int unit, 
   7286     bcm_if_t encap_id);
   7287 
   7288 /* Destroy all encap objects. */
   7289 extern int bcm_switch_encap_destroy_all(
   7290     int unit);
   7291 
   7292 /* Modify the configuration of the encap object with the given encap_id. */
   7293 extern int bcm_switch_encap_set(
   7294     int unit, 
   7295     bcm_if_t encap_id, 
   7296     bcm_switch_encap_info_t *encap_info);
   7297 
   7298 /* Get the configuration of the encap object with the given encap_id. */
   7299 extern int bcm_switch_encap_get(
   7300     int unit, 
   7301     bcm_if_t encap_id, 
   7302     bcm_switch_encap_info_t *encap_info);
   7303 
   7304 #endif /* BCM_HIDE_DISPATCHABLE */
   7305 
   7306 /* Switch encap traverse callback. */
   7307 typedef int (*bcm_switch_encap_traverse_cb)(
   7308     int unit, 
   7309     bcm_if_t encap_id, 
   7310     bcm_switch_encap_info_t *encap_info, 
   7311     void *user_data);
   7312 
   7313 #ifndef BCM_HIDE_DISPATCHABLE
   7314 
   7315 /* 
   7316  * Traverse all created encapsulation objects and call callback function
   7317  * for each allocated entry.
   7318  */
   7319 extern int bcm_switch_encap_traverse(
   7320     int unit, 
   7321     bcm_switch_encap_traverse_cb cb_fn, 
   7322     void *user_data);
   7323 
   7324 #endif /* BCM_HIDE_DISPATCHABLE */
   7325 
   7326 /* Vendor Info Struct */
   7327 typedef struct bcm_switch_dram_vendor_info_s {
   7328     uint32 dram_density;    /* Dram Density */
   7329     uint32 fifo_depth;      /* FIFO Depth */
   7330     uint32 revision_id;     /* Revision Id */
   7331     uint32 manufacture_id;  /* Manufacture Id */
   7332 } bcm_switch_dram_vendor_info_t;
   7333 
   7334 #ifndef BCM_HIDE_DISPATCHABLE
   7335 
   7336 /* Get dram vendor info */
   7337 extern int bcm_switch_dram_vendor_info_get(
   7338     int unit, 
   7339     bcm_switch_dram_vendor_info_t *info);
   7340 
   7341 #endif /* BCM_HIDE_DISPATCHABLE */
   7342 
   7343 /* Thermo sensors enum */
   7344 typedef enum bcm_switch_thermo_sensor_type_e {
   7345     bcmSwitchThermoSensorInvalid = 0, 
   7346     bcmSwitchThermoSensorDram = 1, 
   7347     bcmSwitchThermoSensorSpare1 = 2, 
   7348     bcmSwitchThermoSensorSpare2 = 3, 
   7349     bcmSwitchThermoSensorCount = 4 
   7350 } bcm_switch_thermo_sensor_type_t;
   7351 
   7352 /* Thermo Sensor Struct */
   7353 typedef struct bcm_switch_thermo_sensor_s {
   7354     int thermo_sensor_min;      /* thermo sensor minimal read */
   7355     int thermo_sensor_max;      /* thermo sensor maximal read */
   7356     int thermo_sensor_current;  /* thermo sensor current read */
   7357 } bcm_switch_thermo_sensor_t;
   7358 
   7359 #ifndef BCM_HIDE_DISPATCHABLE
   7360 
   7361 /* Get switch thermo sensor data */
   7362 extern int bcm_switch_thermo_sensor_read(
   7363     int unit, 
   7364     bcm_switch_thermo_sensor_type_t sensor_type, 
   7365     int interface_id, 
   7366     bcm_switch_thermo_sensor_t *sensor_data);
   7367 
   7368 /* An API to get the Recommended Operational Value. */
   7369 extern int bcm_switch_rov_get(
   7370     int unit, 
   7371     uint32 flags, 
   7372     uint32 *rov);
   7373 
   7374 #endif /* BCM_HIDE_DISPATCHABLE */
   7375 
   7376 #define BCM_SWITCH_SDK_TO_WARMBOOT_VERSION_GET(_major_release, _minor_release, _patch_level, _warmboot_ver)  \
   7377     (_warmboot_ver) = ((((_major_release) & 0xFF) << 16 ) | (((_minor_release) & 0xFF) << 8 ) | (((_patch_level) & 0xFF))) 
   7378 
   7379 /* Nibble speculation. */
   7380 #define BCM_SWITCH_DEFAULT_NIBBLE_INDEX 16         /* Used to configure the
   7381                                                       nibbles default speculated
   7382                                                       protocol. */
   7383 
   7384 /* 
   7385  * Enumeration values that can be passed to API in order to set expected
   7386  * protocol after MPLS bos label based on nibble value.
   7387  */
   7388 typedef enum bcm_switch_mpls_next_protocol_e {
   7389     bcmSwitchMplsNextProtocolDefault = 0, /* Use the default speculation protocol. */
   7390     bcmSwitchMplsNextProtocolNone = 1,  /* Do not speculate any protocol. */
   7391     bcmSwitchMplsNextProtocolEthernet = 2, /* Speculate Ethernet after the MPLS
   7392                                            stack. */
   7393     bcmSwitchMplsNextProtocolIpv4 = 3,  /* Speculate IPv4 protocol after the
   7394                                            MPLS stack. */
   7395     bcmSwitchMplsNextProtocolIpv6 = 4,  /* Speculate IPv6 protocol after the
   7396                                            MPLS stack. */
   7397     bcmSwitchMplsNextProtocolControlWord = 5, /* Speculate CW protocol aftre the MPLS
   7398                                            stack. */
   7399     bcmSwitchMplsNextProtocolBierMpls = 6, /* Speculate BIER MPLS protocol after
   7400                                            the MPLS stack */
   7401     bcmSwitchMplsNextProtocolBierTi = 7, /* Speculate TI MPLS protocol after the
   7402                                            MPLS stack */
   7403     bcmSwitchMplsNextProtocolCount = 8  /* Should be last element in enum. */
   7404 } bcm_switch_mpls_next_protocol_t;
   7405 
   7406 /* 
   7407  * LPM hit bit table ids to be used with
   7408  * bcmSwitchL3LpmHitbitEnable/Disable.
   7409  */
   7410 typedef enum bcm_switch_l3_lpm_hitbit_tables_e {
   7411     bcmL3LpmHitbitTableIPv4UC = 0,      /* IPv4 UC table */
   7412     bcmL3LpmHitbitTableIPv4MC = 1,      /* IPv4 MC table. */
   7413     bcmL3LpmHitbitTableIPv6UC = 2,      /* IPv6 UC table */
   7414     bcmL3LpmHitbitTableIPv6MC = 3,      /* IPv6 MC table */
   7415     bcmL3LpmHitbitTableIPv4UCScale = 4, /* IPv4 UC scale table */
   7416     bcmL3LpmHitbitTableIPv6UCScale = 5, /* IPv6 UC scale table */
   7417     bcmL3LpmHitbitTableCount = 6        /* Always Last, not a usable value */
   7418 } bcm_switch_l3_lpm_hitbit_tables_t;
   7419 
   7420 /* Switch module IDs */
   7421 typedef enum bcm_switch_module_e {
   7422     bcmModuleL3EgressFec = 0,   /* FEC module */
   7423     bcmModuleL3EgressEcmp = 1,  /* ECMP module */
   7424     bcmModuleCount = 2          /* Always Last, not a usable value */
   7425 } bcm_switch_module_t;
   7426 
   7427 #define BCM_SWITCH_L2_FREEZE_MODE_PORT      0          /* Reconfigure CML for
   7428                                                           each port to stop
   7429                                                           hardware learning. */
   7430 #define BCM_SWITCH_L2_FREEZE_MODE_GLOBAL    0x1        /* Use global CML
   7431                                                           override setting to
   7432                                                           put all ports in
   7433                                                           forward. */
   7434 
   7435 /* Chip info types */
   7436 typedef enum bcm_switch_chip_info_e {
   7437     bcmSwitchChipInfoIcid = 0,  /* ICID - IC identification number. */
   7438     bcmSwitchChipInfoCount      /* Must be last.  Not a usable value. */
   7439 } bcm_switch_chip_info_t;
   7440 
   7441 #ifndef BCM_HIDE_DISPATCHABLE
   7442 
   7443 /* Get the specified chip info. */
   7444 extern int bcm_switch_chip_info_get(
   7445     int unit, 
   7446     bcm_switch_chip_info_t info_type, 
   7447     int max_size, 
   7448     void *data_buf, 
   7449     int *actual_size);
   7450 
   7451 #endif /* BCM_HIDE_DISPATCHABLE */
   7452 
   7453 /* Block type */
   7454 typedef enum bcm_switch_block_type_e {
   7455     bcmSwitchBlockTypeAll = -1,     /* All block types */
   7456     bcmSwitchBlockTypeMmu = 0,      /* Memory Management Unit */
   7457     bcmSwitchBlockTypeMmuGlb = 1,   /* MMU(Global) */
   7458     bcmSwitchBlockTypeMmuXpe = 2,   /* MMU(Crosspoint Element) */
   7459     bcmSwitchBlockTypeMmuSc = 3,    /* MMU(Slice Control) */
   7460     bcmSwitchBlockTypeMmuSed = 4,   /* MMU(Slice Enqueue Dequeue) */
   7461     bcmSwitchBlockTypeIpipe = 5,    /* Ingress pipeline */
   7462     bcmSwitchBlockTypeEpipe = 6,    /* Egress pipeline */
   7463     bcmSwitchBlockTypePgw = 7,      /* Packet GateWay */
   7464     bcmSwitchBlockTypeClport = 8,   /* CLPORT */
   7465     bcmSwitchBlockTypeXlport = 9,   /* XLPORT */
   7466     bcmSwitchBlockTypeMacsec = 10,  /* MACSEC */
   7467     bcmSwitchBlockTypePort = 11,    /* PORT */
   7468     bcmSwitchBlockTypeCount = 12    /* Must be last. */
   7469 } bcm_switch_block_type_t;
   7470 
   7471 /* SER error type */
   7472 typedef enum bcm_switch_error_type_e {
   7473     bcmSwitchErrorTypeAll = -1,         /* All error types */
   7474     bcmSwitchErrorTypeUnknown = 0,      /* Unknown error type */
   7475     bcmSwitchErrorTypeParity = 1,       /* Parity error */
   7476     bcmSwitchErrorTypeEccSingleBit = 2, /* Ecc single bit error */
   7477     bcmSwitchErrorTypeEccDoubleBit = 3, /* Ecc double bit error */
   7478     bcmSwitchErrorTypeCount = 4         /* Must be last. */
   7479 } bcm_switch_error_type_t;
   7480 
   7481 /* SER error correction type */
   7482 typedef enum bcm_switch_correction_type_e {
   7483     bcmSwitchCorrectTypeAll = -1,       /* All correction types */
   7484     bcmSwitchCorrectTypeNoAction = 0,   /* S/W takes no action when error
   7485                                            happens (Like some working memories) */
   7486     bcmSwitchCorrectTypeFailToCorrect = 1, /* S/W tries to correct error but fails */
   7487     bcmSwitchCorrectTypeEntryClear = 2, /* S/W writes NULL entry to clear the
   7488                                            error */
   7489     bcmSwitchCorrectTypeCacheRestore = 3, /* Restore entry from a valid S/W cache */
   7490     bcmSwitchCorrectTypeHwCacheRestore = 4, /* Restore entry from another pipe */
   7491     bcmSwitchCorrectTypeSpecial = 5,    /* Memory needs special correction
   7492                                            handling */
   7493     bcmSwitchCorrectTypeCount = 6       /* Must be last. */
   7494 } bcm_switch_correction_type_t;
   7495 
   7496 /* SER log info flags */
   7497 #define BCM_SWITCH_SER_LOG_MEM          0x00000001 /* Error happens on memory */
   7498 #define BCM_SWITCH_SER_LOG_REG          0x00000002 /* Error happens on register */
   7499 #define BCM_SWITCH_SER_LOG_MULTI        0x00000004 /* Parity errors detected
   7500                                                       more than once */
   7501 #define BCM_SWITCH_SER_LOG_CORRECTED    0x00000008 /* Error be corrected by S/W */
   7502 #define BCM_SWITCH_SER_LOG_ENTRY        0x00000010 /* Corrupt entry data is
   7503                                                       valid */
   7504 #define BCM_SWITCH_SER_LOG_CACHE        0x00000020 /* Cache data is valid */
   7505 
   7506 /* This structure describes SER log info. */
   7507 typedef struct bcm_switch_ser_log_info_s {
   7508     uint32 time;                        /* Error detected time */
   7509     uint32 addr;                        /* Error happened address */
   7510     uint32 flags;                       /* SER log info flags */
   7511     int mem_reg;                        /* Error happened memory or register id */
   7512     uint8 name[BCM_MAX_MEM_REG_NAME];   /* Error happened memory or register
   7513                                            name */
   7514     int index;                          /* Error happened memory/register index */
   7515     int port;                           /* Error happened port id */
   7516     int pipe;                           /* Pipe num */
   7517     int instance;                       /* Instance id (MMU) */
   7518     bcm_switch_block_type_t block_type; /* Block type */
   7519     bcm_switch_error_type_t error_type; /* Error type */
   7520     bcm_switch_correction_type_t correction_type; /* Correction type */
   7521     uint32 entry_data[BCM_MAX_MEM_WORDS]; /* Corrupted entry data */
   7522     uint32 cache_data[BCM_MAX_MEM_WORDS]; /* Cache entry data */
   7523 } bcm_switch_ser_log_info_t;
   7524 
   7525 /* An API to Initialize a bcm_switch_ser_log_info_t structure. */
   7526 extern void bcm_switch_ser_log_info_t_init(
   7527     bcm_switch_ser_log_info_t *info);
   7528 
   7529 #ifndef BCM_HIDE_DISPATCHABLE
   7530 
   7531 /* An API to get ser log info. */
   7532 extern int bcm_switch_ser_log_info_get(
   7533     int unit, 
   7534     int id, 
   7535     bcm_switch_ser_log_info_t *info);
   7536 
   7537 extern int bcm_switch_control_indexed_port_set(
   7538     int unit, 
   7539     bcm_port_t port, 
   7540     bcm_switch_control_key_t key, 
   7541     bcm_switch_control_info_t value);
   7542 
   7543 extern int bcm_switch_control_indexed_port_get(
   7544     int unit, 
   7545     bcm_port_t port, 
   7546     bcm_switch_control_key_t key, 
   7547     bcm_switch_control_info_t *value);
   7548 
   7549 #endif /* BCM_HIDE_DISPATCHABLE */
   7550 
   7551 #define BCM_SWITCH_CONTROL_SYNC_FULL    0xFFFFFFFF /* Used as arg value in API
   7552                                                       bcm_switch_control_set,
   7553                                                       type=bcmSwitchControlSync.
   7554                                                       indicates of doing full
   7555                                                       sequence of sw state sync.
   7556                                                       meaning stop activities
   7557                                                       that may write into the sw
   7558                                                       state before the sync is
   7559                                                       made */
   7560 
   7561 /* SER error statistics flags */
   7562 #define BCM_SWITCH_SER_STAT_TCAM    0x00000001 /* Error happens on TCAM memories */
   7563 
   7564 /* This structure describes SER error statistics type. */
   7565 typedef struct bcm_switch_ser_error_stat_type_s {
   7566     uint32 flags;                       /* SER error statistics flags */
   7567     bcm_switch_block_type_t block_type; /* Block type */
   7568     bcm_switch_error_type_t error_type; /* SER error type */
   7569     bcm_switch_correction_type_t correction_type; /* SER error correction type */
   7570 } bcm_switch_ser_error_stat_type_t;
   7571 
   7572 /* An API to initialize a bcm_switch_ser_error_stat_type_t structure. */
   7573 extern void bcm_switch_ser_error_stat_type_t_init(
   7574     bcm_switch_ser_error_stat_type_t *stat_type);
   7575 
   7576 #ifndef BCM_HIDE_DISPATCHABLE
   7577 
   7578 /* API to get SER error statistics for specified statistics type. */
   7579 extern int bcm_switch_ser_error_stat_get(
   7580     int unit, 
   7581     bcm_switch_ser_error_stat_type_t stat_type, 
   7582     uint32 *value);
   7583 
   7584 /* API to clear SER error statistics for specified statistics type. */
   7585 extern int bcm_switch_ser_error_stat_clear(
   7586     int unit, 
   7587     bcm_switch_ser_error_stat_type_t stat_type);
   7588 
   7589 #endif /* BCM_HIDE_DISPATCHABLE */
   7590 
   7591 #define BCM_SWITCH_MAX_NUM_OPAQUE_TAGS      2          /* Maximum number of
   7592                                                           opaque tags supported
   7593                                                           by the device. */
   7594 #define BCM_SWITCH_OPAQUE_TAG_SIZE_4_BYTES  0x1        /* Tag size of 4 bytes */
   7595 #define BCM_SWITCH_OPAQUE_TAG_SIZE_8_BYTES  0x2        /* Tag size of 8 bytes */
   7596 
   7597 /* Opaque tag parameters. */
   7598 typedef struct bcm_switch_opaque_tag_params_s {
   7599     uint16 ethertype;   /* EtherType to match when parsing for opaque tag */
   7600     uint8 tag_size;     /* Size of opaque tag (Only 1, 2 are valid values) */
   7601     uint8 tag_type;     /* User specified 2-bit value (0 is invalid value) */
   7602     uint8 valid;        /* Make config active(1) or not active in h/w(0) */
   7603 } bcm_switch_opaque_tag_params_t;
   7604 
   7605 /* Initialize bcm_switch_opaque_tag_params_t structure */
   7606 extern void bcm_switch_opaque_tag_config_t_init(
   7607     bcm_switch_opaque_tag_params_t *info);
   7608 
   7609 #ifndef BCM_HIDE_DISPATCHABLE
   7610 
   7611 /* Configure opaque tag parameters. */
   7612 extern int bcm_switch_opaque_tag_config_set(
   7613     int unit, 
   7614     int index, 
   7615     bcm_switch_opaque_tag_params_t *opaque_tag_config);
   7616 
   7617 /* Configure payload opaque tag parameters. */
   7618 extern int bcm_switch_payload_opaque_tag_config_set(
   7619     int unit, 
   7620     int index, 
   7621     bcm_switch_opaque_tag_params_t *opaque_tag_config);
   7622 
   7623 /* Read opaque tag parameters configured for a given set. */
   7624 extern int bcm_switch_opaque_tag_config_get(
   7625     int unit, 
   7626     int index, 
   7627     bcm_switch_opaque_tag_params_t *opaque_tag_config);
   7628 
   7629 /* Get payload opaque tag parameters. */
   7630 extern int bcm_switch_payload_opaque_tag_config_get(
   7631     int unit, 
   7632     int index, 
   7633     bcm_switch_opaque_tag_params_t *opaque_tag_config);
   7634 
   7635 #endif /* BCM_HIDE_DISPATCHABLE */
   7636 
   7637 #define BCM_SWITCH_OBM_PRIORITY_LOSSY_LOW   0          /* This obm_priority is
   7638                                                           mapped to OBM buffer
   7639                                                           partition Lossy Low */
   7640 #define BCM_SWITCH_OBM_PRIORITY_LOSSY_HIGH  1          /* This obm_priority is
   7641                                                           mapped to OBM buffer
   7642                                                           partition Lossy High */
   7643 #define BCM_SWITCH_OBM_PRIORITY_LOSSLESS0   2          /* This obm_priority is
   7644                                                           mapped to OBM buffer
   7645                                                           partition Lossless0 */
   7646 #define BCM_SWITCH_OBM_PRIORITY_LOSSLESS1   3          /* This obm_priority is
   7647                                                           mapped to OBM buffer
   7648                                                           partition Lossless1 */
   7649 #define BCM_SWITCH_OBM_PRIORITY_EXPRESS     4          /* This obm_priority is
   7650                                                           mapped to OBM buffer
   7651                                                           partition Express */
   7652 
   7653 /* OBM classifier code point */
   7654 typedef int bcm_switch_obm_code_point_t;
   7655 
   7656 /* OBM classifier ob_priority */
   7657 typedef int bcm_switch_obm_priority_t;
   7658 
   7659 /* OBM classifier types */
   7660 typedef enum bcm_switch_obm_classifier_type_e {
   7661     bcmSwitchObmClassifierDscp = 0,     /* OBM classifier of type DSCP */
   7662     bcmSwitchObmClassifierMpls = 1,     /* OBM classifier of type MPLS */
   7663     bcmSwitchObmClassifierEtag = 2,     /* OBM classifier of type ETAG */
   7664     bcmSwitchObmClassifierVlan = 3,     /* OBM classifier of type VLAN */
   7665     bcmSwitchObmClassifierHigig2 = 4,   /* OBM classifier of type HiGig2 */
   7666     bcmSwitchObmClassifierField = 5,    /* OBM classifier of type FIELD */
   7667     bcmSwitchObmClassifierHigig3 = 6,   /* OBM classifier of type Higig3 */
   7668     bcmSwitchObmClassifierCount = 7     /* OBM classifier count */
   7669 } bcm_switch_obm_classifier_type_t;
   7670 
   7671 /* OBM classifier parameters */
   7672 typedef struct bcm_switch_obm_classifier_s {
   7673     uint32 flags;                       /* For future use */
   7674     bcm_mac_t obm_destination_mac;      /* Destination MAC address */
   7675     bcm_mac_t obm_destination_mac_mask; /* Destination MAC address mask */
   7676     uint16 obm_ethertype;               /* EtherType to be matched */
   7677     uint16 obm_ethertype_mask;          /* Mask used in matching EtherType */
   7678     bcm_switch_obm_code_point_t obm_code_point; /*  Oversubscription Buffer Manager
   7679                                            classifier's code point.This field if
   7680                                            overloaded for providing DSCP, MPLS
   7681                                            traffic class, ETAG priority code
   7682                                            point, VLAN priority code point or
   7683                                            HiGig2 traffic class depending on the
   7684                                            type of classifier. This  will be
   7685                                            mapped to obm_priority value. */
   7686     bcm_switch_obm_priority_t obm_priority; /* Oversubscription Buffer Manager
   7687                                            classifier's priority for given
   7688                                            obm_code_point. */
   7689 } bcm_switch_obm_classifier_t;
   7690 
   7691 /* Initialize an OBM classifier structure. */
   7692 extern void bcm_switch_obm_classifier_t_init(
   7693     bcm_switch_obm_classifier_t *switch_obm_classifier);
   7694 
   7695 #ifndef BCM_HIDE_DISPATCHABLE
   7696 
   7697 /* 
   7698  * Set the mapping from code_point, Dest MAC and EtherType to a
   7699  * obm_priority based on OBM classifier type.For FIELD classifier always
   7700  * first entry is used.
   7701  */
   7702 extern int bcm_switch_obm_classifier_mapping_set(
   7703     int unit, 
   7704     bcm_gport_t gport, 
   7705     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   7706     bcm_switch_obm_classifier_t *switch_obm_classifier);
   7707 
   7708 /* 
   7709  * Get the mapping from code_point, Dest MAC and EtherType to a
   7710  * obm_priority based on OBM classifier type.
   7711  */
   7712 extern int bcm_switch_obm_classifier_mapping_get(
   7713     int unit, 
   7714     bcm_gport_t gport, 
   7715     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   7716     bcm_switch_obm_classifier_t *switch_obm_classifier);
   7717 
   7718 /* 
   7719  * Set multiple mapping from code_point, Dest MAC and EtherType to a
   7720  * obm_priority based on OBM classifier type.
   7721  */
   7722 extern int bcm_switch_obm_classifier_mapping_multi_set(
   7723     int unit, 
   7724     bcm_gport_t gport, 
   7725     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   7726     int array_count, 
   7727     bcm_switch_obm_classifier_t *switch_obm_classifier);
   7728 
   7729 /* 
   7730  * Get multiple mapping from port, Dest MAC and EtherType to a
   7731  * obm_priority based on OBM classifier type.
   7732  */
   7733 extern int bcm_switch_obm_classifier_mapping_multi_get(
   7734     int unit, 
   7735     bcm_gport_t port, 
   7736     bcm_switch_obm_classifier_type_t switch_obm_classifier_type, 
   7737     int array_max, 
   7738     bcm_switch_obm_classifier_t *switch_obm_classifier, 
   7739     int *array_count);
   7740 
   7741 #endif /* BCM_HIDE_DISPATCHABLE */
   7742 
   7743 /* Switch Dos Attack Events. */
   7744 typedef enum bcm_switch_dosattack_event_e {
   7745     bcmSwitchDosAttackEventMACSAEqualMACDA = 0, /* Dos Attack Event when Source MAC is
   7746                                            same as Destination MAC. */
   7747     bcmSwitchDosAttackEventIpFragOffset = 1, /* Dos Attack Event when Protocol field
   7748                                            Offset in IPv4 or IPv6 header is
   7749                                            equal to 1. */
   7750     bcmSwitchDosAttackEventV6Type0RoutingHdr = 2, /* Dos Attack Event when Type0 Routing
   7751                                            Extension header is present in IPv6. */
   7752     bcmSwitchDosAttackEventV6NonLastFragLT1280 = 3, /* Dos Attack Event when non-last
   7753                                            fragment of IPv6 Packet is less than
   7754                                            1280 bytes. */
   7755     bcmSwitchDosAttackEventTcpIpFirstFragSmall = 4, /* Dos Attack Event when First Fragment
   7756                                            of IP payload with TCP is smaller
   7757                                            than configured value. */
   7758     bcmSwitchDosAttackEventTcpOffset = 5, /* Dos Attack Event when L4 is TCP and
   7759                                            IP protocol offset is equal to 1. */
   7760     bcmSwitchDosAttackEventSynFrag = 6, /* Dos Attack Event when TCP SYN Packet
   7761                                            with Source Port 0-1023 for non-first
   7762                                            fragments tcp/udp port values are
   7763                                            always zero. */
   7764     bcmSwitchDosAttackEventFlagZeroSeqZero = 7, /* Dos Attack Event when TCP Packets
   7765                                            with control flags == 0 and sequence
   7766                                            number == 0. */
   7767     bcmSwitchDosAttackEventTcpFlagsFUP = 8, /* Dos Attack Event when TCP Packets
   7768                                            with FIN,URG & PSH bits set &
   7769                                            sequence number == 0. */
   7770     bcmSwitchDosAttackEventTcpFlagsSF = 9, /* Dos Attack Event when TCP packets
   7771                                            with SYN and FIN set. */
   7772     bcmSwitchDosAttackEventTcpPortsEqual = 10, /* Dos Attack Event when TCP Source and
   7773                                            Destination ports are same. */
   7774     bcmSwitchDosAttackEventUdpPortsEqual = 11, /* Dos Attack Event when UDP Source and
   7775                                            Destination ports are same. */
   7776     bcmSwitchDosAttackEventIcmp = 12,   /* Dos Attack Event when ICMP V4 and V6
   7777                                            ping packet with payload bigger than
   7778                                            configured value. */
   7779     bcmSwitchDosAttackEventIcmpFragments = 13, /* Dos Attack Event when IPv4/IPv6
   7780                                            fragmented ICMP packets. */
   7781     bcmSwitchDosAttackEventTcpFlagsSR = 14, /* Dos Attack Event when TCP packets
   7782                                            with SYN and RST set. */
   7783     bcmSwitchDosAttackEventTcpFlagsSynFirstFrag = 15, /* Dos Attack Event when TCP with SYN
   7784                                            set and first fragment of fragmented
   7785                                            IP packet. */
   7786     bcmSwitchDosAttackEventTcpFlagsFinNoAck = 16, /* Dos Attack Event when TCP packet with
   7787                                            FIN set but ACK not set. */
   7788     bcmSwitchDosAttackEventTcpFlagsRstNoAck = 17, /* Dos Attack Event when TCP packet with
   7789                                            RST set but ACK not set. */
   7790     bcmSwitchDosAttackEventTcpFlagsNoSFRA = 18, /* Dos Attack Event when TCP packet with
   7791                                            SYN, FIN, RST and ACK not set. */
   7792     bcmSwitchDosAttackEventTcpDstPortZero = 19, /* Dos Attack Event when TCP packet with
   7793                                            Destination port equals to 0. */
   7794     bcmSwitchDosAttackEventTcpSrcPortZero = 20, /* Dos Attack Event when TCP packet with
   7795                                            Source port equals to 0. */
   7796     bcmSwitchDosAttackEventTcpIpDstBcast = 21, /* Dos Attack Event when TCP Packet with
   7797                                            Destination IP Broadcast. */
   7798     bcmSwitchDosAttackEventTcpFlagsZero = 22, /* Dos Attack Event when configured TCP
   7799                                            flags is zero. */
   7800     bcmSwitchDosAttackEventTcpFlagsResvdNonZero = 23, /* Dos Attack Event when configured
   7801                                            Reserved flags is non-zero. */
   7802     bcmSwitchDosAttackEventTcpFlagsAck = 24, /* Dos Attack Event when TCP flag ACK is
   7803                                            set and Acknowledge number is zero. */
   7804     bcmSwitchDosAttackEventTcpFlagsUrgNoUrgPtr = 25, /* Dos Attack Event when TCP Flag URG
   7805                                            set and Urgent pointer is zero. */
   7806     bcmSwitchDosAttackEventTcpFlagsNoUrgWithUrgPtr = 26, /* Dos Attack Event when TCP Flag URG
   7807                                            not set and Urgent pointer is not
   7808                                            zero. */
   7809     bcmSwitchDosAttackEventTcpFlagsSynOption = 27, /* Dos Attack Event when TCP Flag SYN
   7810                                            set and Option same as configured
   7811                                            value. */
   7812     bcmSwitchDosAttackEventCount = 28   /* Must be last. Not a usable value. */
   7813 } bcm_switch_dosattack_event_t;
   7814 
   7815 #define BCM_SWITCH_DOSATTACK_EVENT_STR \
   7816 { \
   7817     "MACSAEqualMACDA", \
   7818     "IpFragOffset", \
   7819     "V6Type0RoutingHdr", \
   7820     "V6NonLastFragLT1280", \
   7821     "TcpIpFirstFragSmall", \
   7822     "TcpOffset", \
   7823     "SynFrag", \
   7824     "FlagZeroSeqZero", \
   7825     "TcpFlagsFUP", \
   7826     "TcpFlagsSF", \
   7827     "TcpPortsEqual", \
   7828     "UdpPortsEqual", \
   7829     "Icmp", \
   7830     "IcmpFragments", \
   7831     "TcpFlagsSR", \
   7832     "TcpFlagsSynFirstFrag", \
   7833     "TcpFlagsFinNoAck", \
   7834     "TcpFlagsRstNoAck", \
   7835     "TcpFlagsNoSFRA", \
   7836     "TcpDstPortZero", \
   7837     "TcpSrcPortZero", \
   7838     "TcpIpDstBcast", \
   7839     "TcpFlagsZero", \
   7840     "TcpFlagsResvdNonZero", \
   7841     "TcpFlagsAck", \
   7842     "TcpFlagsUrgNoUrgPtr", \
   7843     "TcpFlagsNoUrgWithUrgPtr", \
   7844     "TcpFlagsSynOption"  \
   7845 }
   7846 
   7847 /* Switch Dos Attack Events Flags. */
   7848 #define BCM_SWITCH_DOSATTACK_OUTER_HDR      (1 << 0)   /* Dos Attack events
   7849                                                           origin in outer header
   7850                                                           of packet. */
   7851 #define BCM_SWITCH_DOSATTACK_INNER_HDR      (1 << 1)   /* Dos Attack events
   7852                                                           origin in inner header
   7853                                                           of packet. */
   7854 #define BCM_SWITCH_DOSATTACK_FLOWTRACKER_PRESEL (1 << 2)   /* Dos Attack events used
   7855                                                           for qualifying in
   7856                                                           presel of flowtracker
   7857                                                           FP stage. */
   7858 
   7859 #ifndef BCM_HIDE_DISPATCHABLE
   7860 
   7861 /* 
   7862  * These API set/get dos attack event triggers for tracking or qualifying
   7863  * purposes.
   7864  */
   7865 extern int bcm_switch_dosattack_event_get(
   7866     int unit, 
   7867     uint32 flags, 
   7868     bcm_switch_dosattack_event_t event, 
   7869     int *arg);
   7870 
   7871 /* 
   7872  * These API set/get dos attack event triggers for tracking or qualifying
   7873  * purposes.
   7874  */
   7875 extern int bcm_switch_dosattack_event_set(
   7876     int unit, 
   7877     uint32 flags, 
   7878     bcm_switch_dosattack_event_t event, 
   7879     int arg);
   7880 
   7881 #endif /* BCM_HIDE_DISPATCHABLE */
   7882 
   7883 /* Tunnel UDP src port select */
   7884 typedef enum bcm_switch_tunnel_udp_src_port_select_e {
   7885     bcmSwitchTunnelUdpSrcPortStatic = 0, /* Use static value configured in tunnel
   7886                                            initiator */
   7887     bcmSwitchTunnelUdpSrcPortHashEntropy = 1, /* Calculate hash entropy to range [0,
   7888                                            65535] as src port */
   7889     bcmSwitchTunnelUdpSrcPortHashEntropyPrivate = 2, /* Calculate hash entropy to private
   7890                                            range [49152, 65535] as src port */
   7891     bcmSwitchTunnelUdpSrcPortCount = 3  /* Must be last */
   7892 } bcm_switch_tunnel_udp_src_port_select_t;
   7893 
   7894 #define BCM_MAX_NOF_SEGMENTS    16         /* Max number of segment for kbp
   7895                                               master key. */
   7896 #define BCM_ALIGN_MASTER_KEY    80         /* Align kbp master key to 80b. */
   7897 #define BCM_SEGMENT_NAME_SIZE   20         /* Segment name size. */
   7898 
   7899 /* Kbp master key segment info. */
   7900 typedef struct bcm_switch_kbp_master_key_segment_info_s {
   7901     uint8 *segment_name;    /* segment name */
   7902     int segment_size_bits;  /* segment size in bits */
   7903     int segment_type;       /* segment type */
   7904 } bcm_switch_kbp_master_key_segment_info_t;
   7905 
   7906 /* Switch kbp app type info structure. */
   7907 typedef struct bcm_switch_kbp_apptype_info_s {
   7908     int *inst_p;                        /* kbp_instruction_t* instruction
   7909                                            pointer */
   7910     int *fwd_db;                        /* struct kbp_db* fwd db */
   7911     int *rpf_db;                        /* struct kbp_db* rpf db */
   7912     int *dummy_db;                      /* struct kbp_db* dummy db */
   7913     int *fwd_ad_db;                     /* struct kbp_ad_db* ad fwd db */
   7914     int *rpf_ad_db;                     /* struct kbp_ad_db* ad rpf db */
   7915     int *dummy_ad_db;                   /* struct kbp_ad_db* ad dummy db */
   7916     bcm_switch_kbp_master_key_segment_info_t master_key_segment[BCM_MAX_NOF_SEGMENTS]; /* master key fields segments */
   7917     int total_segments_size;            /* total segments size in bits */
   7918     int opcode;                         /* opcode */
   7919     int ltr_index;                      /* ltr_index */
   7920     int master_key_nof_segments;        /* master key fields number of segments */
   7921     int is_valid;                       /* is apptype valid */
   7922 } bcm_switch_kbp_apptype_info_t;
   7923 
   7924 #define BCM_KBP_MAX_NOF_THREADS 2          /* KBP MAX NOF threads. */
   7925 
   7926 /* Switch kbp info structure. */
   7927 typedef struct bcm_switch_kbp_info_s {
   7928     int *device_p;                      /* struct kbp_device* device_p */
   7929     int *thread_p[BCM_KBP_MAX_NOF_THREADS]; /* kbp thread pointers */
   7930 } bcm_switch_kbp_info_t;
   7931 
   7932 #ifndef BCM_HIDE_DISPATCHABLE
   7933 
   7934 /* Get kbp pointer from SDK. */
   7935 extern int bcm_switch_kbp_info_get(
   7936     int unit, 
   7937     bcm_core_t core, 
   7938     bcm_switch_kbp_info_t *kbp_info);
   7939 
   7940 /* Get apptype info per apptype. */
   7941 extern int bcm_switch_kbp_apptype_info_get(
   7942     int unit, 
   7943     bcm_core_t core, 
   7944     bcm_field_AppType_t apptype, 
   7945     bcm_switch_kbp_apptype_info_t *apptype_info);
   7946 
   7947 #endif /* BCM_HIDE_DISPATCHABLE */
   7948 
   7949 #define BCM_SWITCH_RECORD_MODE_LSB  0          /* Use the LSB bits of the layer
   7950                                                   record for load balancing key
   7951                                                   generation. */
   7952 #define BCM_SWITCH_RECORD_MODE_MSB  1          /* Use the MSB bits of the layer
   7953                                                   record for load balancing key
   7954                                                   generation. */
   7955 
   7956 /* Callback function used to power down the DRAM */
   7957 typedef void (*bcm_switch_dram_power_down_callback_t)(
   7958     int unit, 
   7959     uint32 flags, 
   7960     void *userdata);
   7961 
   7962 #ifndef BCM_HIDE_DISPATCHABLE
   7963 
   7964 /* Registers/Unregisters a callback function for switch critical events */
   7965 extern int bcm_switch_dram_power_down_cb_register(
   7966     int unit, 
   7967     uint32 flags, 
   7968     bcm_switch_dram_power_down_callback_t callback, 
   7969     void *userdata);
   7970 
   7971 /* Registers/Unregisters a callback function for switch critical events */
   7972 extern int bcm_switch_dram_power_down_cb_unregister(
   7973     int unit, 
   7974     bcm_switch_dram_power_down_callback_t callback, 
   7975     void *userdata);
   7976 
   7977 /* API activates DRAM power down procedure */
   7978 extern int bcm_switch_dram_power_down(
   7979     int unit, 
   7980     uint32 flags);
   7981 
   7982 /* 
   7983  * DRAM partial init (after device power up) when powering back up the
   7984  * DRAM after it was powered down
   7985  */
   7986 extern int bcm_switch_dram_init(
   7987     int unit, 
   7988     uint32 flags);
   7989 
   7990 /* API enable/disable redirecting traffic to DRAM */
   7991 extern int bcm_switch_dram_traffic_enable_set(
   7992     int unit, 
   7993     uint32 flags, 
   7994     uint32 enable);
   7995 
   7996 #endif /* BCM_HIDE_DISPATCHABLE */
   7997 
   7998 /* Allocate encap for reflector with ID */
   7999 #define BCM_SWITCH_REFELCTOR_WITH_ID    0x1        
   8000 
   8001 /* Replace reflector encap data */
   8002 #define BCM_SWITCH_REFELCTOR_REPLACE    0x2        
   8003 
   8004 /* Reflector types */
   8005 typedef enum bcm_switch_reflector_type_e {
   8006     bcmSwitchReflectorUc = 0,           /* L2(UC external) or L3 (UC internal)
   8007                                            reflector */
   8008     bcmSwitchReflectorL2UcInternal = 1, /* L2 internal unicast reflector */
   8009     bcmSwitchReflectorL2McExternal = 2, /* L2 external multicast reflector */
   8010     bcmSwitchReflectorL2McInternal = 3, /* L2 external multicast reflector */
   8011     bcmSwitchReflectorTwampIp4 = 4,     /* TWAMP reflector over IPv4 */
   8012     bcmSwitchReflectorTwampIp6 = 5,     /* TWAMP reflector over IPv6 */
   8013     bcmSwitchReflectorSbfdIp4 = 6,      /* SBFD reflector over IPv4 */
   8014     bcmSwitchReflectorSbfdIp6 = 7,      /* SBFD reflector over IPv6 */
   8015     bcmSwitchReflectorSbfdMpls = 8      /* SBFD reflector over MPLS */
   8016 } bcm_switch_reflector_type_t;
   8017 
   8018 /* Reflector encap data */
   8019 typedef struct bcm_switch_reflector_data_s {
   8020     bcm_switch_reflector_type_t type;   /* reflector type */
   8021     bcm_mac_t mc_reflector_my_mac;      /* Source MAC address stamped on the
   8022                                            response packet. Relevant for MC
   8023                                            reflector only. */
   8024     uint32 error_estimate;              /* ERROR_ESTIMATE */
   8025     bcm_if_t next_encap_id;             /* Next pointer encap id for the RCH
   8026                                            Ethernet encapsulation */
   8027 } bcm_switch_reflector_data_t;
   8028 
   8029 /* data bcm_switch_reflector_data_t initialization */
   8030 extern void bcm_switch_reflector_data_t_init(
   8031     bcm_switch_reflector_data_t *data);
   8032 
   8033 /* Callback function for reflector traverse */
   8034 typedef void (*bcm_switch_reflector_traverse_cb)(
   8035     int unit, 
   8036     bcm_if_t encap_id, 
   8037     void *user_data);
   8038 
   8039 #ifndef BCM_HIDE_DISPATCHABLE
   8040 
   8041 /* 
   8042  * Create/Destroy/Get encap ID for L2/L3 relfectors (both unicast and
   8043  * multicast) .
   8044  */
   8045 extern int bcm_switch_reflector_create(
   8046     int unit, 
   8047     uint32 flags, 
   8048     bcm_if_t *encap_id, 
   8049     bcm_switch_reflector_data_t *data);
   8050 
   8051 /* 
   8052  * Create/Destroy/Get encap ID for L2/L3 relfectors (both unicast and
   8053  * multicast) .
   8054  */
   8055 extern int bcm_switch_reflector_get(
   8056     int unit, 
   8057     uint32 flags, 
   8058     bcm_if_t encap_id, 
   8059     bcm_switch_reflector_data_t *data);
   8060 
   8061 /* 
   8062  * Create/Destroy/Get encap ID for L2/L3 relfectors (both unicast and
   8063  * multicast) .
   8064  */
   8065 extern int bcm_switch_reflector_destroy(
   8066     int unit, 
   8067     uint32 flags, 
   8068     bcm_if_t encap_id);
   8069 
   8070 /* 
   8071  * Create/Destroy/Get encap ID for L2/L3 relfectors (both unicast and
   8072  * multicast) .
   8073  */
   8074 extern int bcm_switch_reflector_traverse(
   8075     int unit, 
   8076     uint32 flags, 
   8077     bcm_switch_reflector_traverse_cb traverse_cb, 
   8078     void *user_data);
   8079 
   8080 #endif /* BCM_HIDE_DISPATCHABLE */
   8081 
   8082 /* 
   8083  * Packet control options flags, common for integrity check API and
   8084  * protocol control API.
   8085  */
   8086 #define BCM_SWITCH_PKT_CONTROL_OPTIONS_REPLACE 0x00000001 /* Replace a packet
   8087                                                           control entry. */
   8088 
   8089 /* 
   8090  * Packet control action structure, common for integrity check API and
   8091  * protocol control API.
   8092  */
   8093 typedef struct bcm_switch_pkt_control_action_s {
   8094     uint8 discard;          /* Packet is discarded. */
   8095     uint8 copy_to_cpu;      /* Packet is copied to CPU. */
   8096     uint8 flood;            /* Packet is flooded to the forwarding domain. */
   8097     uint8 bpdu;             /* Packet is BPDU. */
   8098     uint8 opaque_ctrl_id;   /* Opaque control ID. */
   8099     uint32 class_id;        /* Class ID. */
   8100 } bcm_switch_pkt_control_action_t;
   8101 
   8102 /* An API to initialize a packet control action structure. */
   8103 extern void bcm_switch_pkt_control_action_t_init(
   8104     bcm_switch_pkt_control_action_t *action);
   8105 
   8106 /* Packet protocol match structure. */
   8107 typedef struct bcm_switch_pkt_protocol_match_s {
   8108     uint8 l2_iif_opaque_ctrl_id;        /* L2 iif based control id. */
   8109     uint8 l2_iif_opaque_ctrl_id_mask;   /* L2 iif based control id mask. */
   8110     bcm_vlan_t vfi;                     /* Virtual forwarding instance. */
   8111     bcm_vlan_t vfi_mask;                /* VFI mask. */
   8112     bcm_mac_t macda;                    /* Destination MAC address. */
   8113     bcm_mac_t macda_mask;               /* Destination MAC address mask. */
   8114     uint16 ethertype;                   /* Ethernet type. */
   8115     uint16 ethertype_mask;              /* Ethernet type mask. */
   8116     uint16 arp_rarp_opcode;             /* ARP/RARP packet operation code. */
   8117     uint16 arp_rarp_opcode_mask;        /* ARP/RARP packet operation code mask. */
   8118     uint8 icmp_type;                    /* ICMP type. */
   8119     uint8 icmp_type_mask;               /* ICMP type mask. */
   8120     uint8 igmp_type;                    /* IGMP type. */
   8121     uint8 igmp_type_mask;               /* IGMP type mask. */
   8122     uint8 l4_valid;                     /* If set, layer 4 header present. */
   8123     uint8 l4_valid_mask;                /* L4_valid mask. */
   8124     uint16 l4_src_port;                 /* Layer 4 source port. */
   8125     uint16 l4_src_port_mask;            /* Layer 4 source port mask. */
   8126     uint16 l4_dst_port;                 /* Layer 4 destination port. */
   8127     uint16 l4_dst_port_mask;            /* Layer 4 destination port mask. */
   8128     uint16 l5_bytes_0_1;                /* First 2 bytes of layer 5 header. */
   8129     uint16 l5_bytes_0_1_mask;           /* L5_bytes_0_1 mask. */
   8130     uint16 outer_l5_bytes_0_1;          /* Outer l5 bytes 0 1. */
   8131     uint16 outer_l5_bytes_0_1_mask;     /* Outer l5 bytes 0 1 mask. */
   8132     uint8 ip_last_protocol;             /* Protocol from IP extension header if
   8133                                            present, otherwise from IP header. */
   8134     uint8 ip_last_protocol_mask;        /* Ip_last_protocol mask. */
   8135     uint8 fixed_hve_result_set_1;       /* Fixed HVE result 1. */
   8136     uint8 fixed_hve_result_set_1_mask;  /* Fixed HVE result 1 mask. */
   8137     uint8 fixed_hve_result_set_5;       /* Fixed HVE result 5. */
   8138     uint8 fixed_hve_result_set_5_mask;  /* Fixed HVE result 5 mask. */
   8139     uint8 flex_hve_result_set_1;        /* Flex HVE result 1. */
   8140     uint8 flex_hve_result_set_1_mask;   /* Flex HVE result 1 mask. */
   8141     uint8 tunnel_processing_results_1;  /* Tunnel processing results 1. */
   8142     uint8 tunnel_processing_results_1_mask; /* Tunnel processing results 1 mask. */
   8143     uint8 vfp_opaque_ctrl_id;           /* VFP opaque ctrl id. */
   8144     uint8 vfp_opaque_ctrl_id_mask;      /* VFP opaque ctrl id mask. */
   8145     uint8 vlan_xlate_opaque_ctrl_id;    /* VLAN_XLATE opaque ctrl id: Bit 0 :
   8146                                            VLAN_XLATE drop; Bit 1 : VLAN_XLATE
   8147                                            copy to CPU; Bits 2-3: The highest 2
   8148                                            bits of VLAN_XLATE opaque control id. */
   8149     uint8 vlan_xlate_opaque_ctrl_id_mask; /* vlan_xlate_opaque_ctrl_id - Mask. */
   8150     uint8 vlan_xlate_opaque_ctrl_id_1;  /* VLAN_XLATE opaque ctrl id_1: Bits
   8151                                            0-3: The lowest 4 bits of VLAN_XLATE
   8152                                            opaque control id. */
   8153     uint8 vlan_xlate_opaque_ctrl_id_1_mask; /* vlan_xlate_opaque_ctrl_id_1 - Mask. */
   8154     uint8 l2_iif_opaque_ctrl_id_1;      /* L2 iif based control id_1. */
   8155     uint8 l2_iif_opaque_ctrl_id_1_mask; /* L2 iif based control id_1 mask. */
   8156     uint8 fixed_hve_result_set_4;       /* Fixed HVE result 4. */
   8157     uint8 fixed_hve_result_set_4_mask;  /* Fixed HVE result 4 mask. */
   8158 } bcm_switch_pkt_protocol_match_t;
   8159 
   8160 /* An API to initialize a protocol match structure. */
   8161 extern void bcm_switch_pkt_protocol_match_t_init(
   8162     bcm_switch_pkt_protocol_match_t *match);
   8163 
   8164 #ifndef BCM_HIDE_DISPATCHABLE
   8165 
   8166 /* An API to add a protocol control entry. */
   8167 extern int bcm_switch_pkt_protocol_control_add(
   8168     int unit, 
   8169     uint32 options, 
   8170     bcm_switch_pkt_protocol_match_t *match, 
   8171     bcm_switch_pkt_control_action_t *action, 
   8172     int priority);
   8173 
   8174 /* An API to get action and priority for a protocol control entry. */
   8175 extern int bcm_switch_pkt_protocol_control_get(
   8176     int unit, 
   8177     bcm_switch_pkt_protocol_match_t *match, 
   8178     bcm_switch_pkt_control_action_t *action, 
   8179     int *priority);
   8180 
   8181 /* An API to delete a protocol control entry. */
   8182 extern int bcm_switch_pkt_protocol_control_delete(
   8183     int unit, 
   8184     bcm_switch_pkt_protocol_match_t *match);
   8185 
   8186 #endif /* BCM_HIDE_DISPATCHABLE */
   8187 
   8188 /* Protocol control entry callback function prototype. */
   8189 typedef int (*bcm_switch_pkt_protocol_control_traverse_cb)(
   8190     int unit, 
   8191     bcm_switch_pkt_protocol_match_t *match, 
   8192     bcm_switch_pkt_control_action_t *action, 
   8193     int *priority, 
   8194     void *user_data);
   8195 
   8196 #ifndef BCM_HIDE_DISPATCHABLE
   8197 
   8198 /* Traverse all installed protocol control entries. */
   8199 extern int bcm_switch_pkt_protocol_control_traverse(
   8200     int unit, 
   8201     bcm_switch_pkt_protocol_control_traverse_cb cb, 
   8202     void *user_data);
   8203 
   8204 /* Delete all installed protocol control entries. */
   8205 extern int bcm_switch_pkt_protocol_control_delete_all(
   8206     int unit);
   8207 
   8208 #endif /* BCM_HIDE_DISPATCHABLE */
   8209 
   8210 /* Packet integrity match attribute structure. */
   8211 typedef struct bcm_switch_pkt_integrity_match_s {
   8212     uint8 tunnel_processing_results_1;  /* Tunnel processing results 1. */
   8213     uint8 tunnel_processing_results_1_mask; /* Tunnel processing results 1 mask. */
   8214     uint8 mpls_flow_type;               /* Mpls flow type. */
   8215     uint8 mpls_flow_type_mask;          /* Mpls flow type mask. */
   8216     uint8 my_station_1_hit;             /* My station 1 hit. */
   8217     uint8 my_station_1_hit_mask;        /* My station 1 hit mask. */
   8218     uint8 l4_valid;                     /* L4 valid. */
   8219     uint8 l4_valid_mask;                /* L4 valid mask. */
   8220     uint8 icmp_type;                    /* Icmp type. */
   8221     uint8 icmp_type_mask;               /* Icmp type mask. */
   8222     uint8 ip_last_protocol;             /* Ip last protocol. */
   8223     uint8 ip_last_protocol_mask;        /* Ip last protocol mask. */
   8224     uint16 tcp_hdr_len_and_flags;       /* Tcp hdr len and flags. */
   8225     uint16 tcp_hdr_len_and_flags_mask;  /* Tcp hdr len and flags mask. */
   8226     uint8 fixed_hve_result_0;           /* Fixed hve result 0. */
   8227     uint8 fixed_hve_result_0_mask;      /* Fixed hve result 0 mask. */
   8228     uint8 fixed_hve_result_1;           /* Fixed hve result 1. */
   8229     uint8 fixed_hve_result_1_mask;      /* Fixed hve result 1 mask. */
   8230     uint8 fixed_hve_result_2;           /* Fixed hve result 2. */
   8231     uint8 fixed_hve_result_2_mask;      /* Fixed hve result 2 mask. */
   8232     uint8 fixed_hve_result_3;           /* Fixed hve result 3. */
   8233     uint8 fixed_hve_result_3_mask;      /* Fixed hve result 3 mask. */
   8234     uint8 fixed_hve_result_4;           /* Fixed hve result 4. */
   8235     uint8 fixed_hve_result_4_mask;      /* Fixed hve result 4 mask. */
   8236     uint8 fixed_hve_result_5;           /* Fixed hve result 5. */
   8237     uint8 fixed_hve_result_5_mask;      /* Fixed hve result 5 mask. */
   8238     uint8 flex_hve_result_0;            /* Flex hve result 0. */
   8239     uint8 flex_hve_result_0_mask;       /* Flex hve result 0 mask. */
   8240     uint8 flex_hve_result_1;            /* Flex hve result 1. */
   8241     uint8 flex_hve_result_1_mask;       /* Flex hve result 1 mask. */
   8242     uint8 flex_hve_result_2;            /* Flex hve result 2. */
   8243     uint8 flex_hve_result_2_mask;       /* Flex hve result 2 mask. */
   8244 } bcm_switch_pkt_integrity_match_t;
   8245 
   8246 /* Initialize a packet integrity match attribute structure. */
   8247 extern void bcm_switch_pkt_integrity_match_t_init(
   8248     bcm_switch_pkt_integrity_match_t *match);
   8249 
   8250 #ifndef BCM_HIDE_DISPATCHABLE
   8251 
   8252 /* Add an entry into packet integrity check table. */
   8253 extern int bcm_switch_pkt_integrity_check_add(
   8254     int unit, 
   8255     uint32 options, 
   8256     bcm_switch_pkt_integrity_match_t *match, 
   8257     bcm_switch_pkt_control_action_t *action, 
   8258     int priority);
   8259 
   8260 /* Delete an entry from packet integrity check table. */
   8261 extern int bcm_switch_pkt_integrity_check_delete(
   8262     int unit, 
   8263     bcm_switch_pkt_integrity_match_t *match);
   8264 
   8265 /* Get an entry from packet integrity check table. */
   8266 extern int bcm_switch_pkt_integrity_check_get(
   8267     int unit, 
   8268     bcm_switch_pkt_integrity_match_t *match, 
   8269     bcm_switch_pkt_control_action_t *action, 
   8270     int *priority);
   8271 
   8272 #endif /* BCM_HIDE_DISPATCHABLE */
   8273 
   8274 /* 
   8275  * Monitor action definitions which are common to swith drop events and
   8276  * switch trace events.
   8277  */
   8278 #define BCM_SWITCH_MON_ACTION_NONE          0          /* Action none. */
   8279 #define BCM_SWITCH_MON_ACTION_COPY_TO_CPU   0x1        /* Enable to copy packets
   8280                                                           to CPU. */
   8281 #define BCM_SWITCH_MON_ACTION_LOOPBACK_DROP 0x2        /* Enable to drop
   8282                                                           loopback copy. */
   8283 
   8284 /* Switch drop event monitor structure. */
   8285 typedef struct bcm_switch_drop_event_mon_s {
   8286     bcm_pkt_drop_event_t drop_event;    /* Drop event. */
   8287     uint32 actions;                     /* BCM_SWITCH_MON_ACTION_XXX actions
   8288                                            definitions. */
   8289 } bcm_switch_drop_event_mon_t;
   8290 
   8291 /* Initialize a bcm_switch_drop_event_mon_t structure. */
   8292 extern void bcm_switch_drop_event_mon_t_init(
   8293     bcm_switch_drop_event_mon_t *monitor);
   8294 
   8295 #ifndef BCM_HIDE_DISPATCHABLE
   8296 
   8297 /* 
   8298  * These APIs set/get monitor configuration for drop events defined in
   8299  * <bcm/types.h>.
   8300  */
   8301 extern int bcm_switch_drop_event_mon_set(
   8302     int unit, 
   8303     bcm_switch_drop_event_mon_t *monitor);
   8304 
   8305 /* 
   8306  * These APIs set/get monitor configuration for drop events defined in
   8307  * <bcm/types.h>.
   8308  */
   8309 extern int bcm_switch_drop_event_mon_get(
   8310     int unit, 
   8311     bcm_switch_drop_event_mon_t *monitor);
   8312 
   8313 #endif /* BCM_HIDE_DISPATCHABLE */
   8314 
   8315 /* Switch trace event monitor structure. */
   8316 typedef struct bcm_switch_trace_event_mon_s {
   8317     bcm_pkt_trace_event_t trace_event;  /* Trace event. */
   8318     uint32 actions;                     /* BCM_SWITCH_MON_ACTION_XXX actions
   8319                                            definitions. */
   8320 } bcm_switch_trace_event_mon_t;
   8321 
   8322 /* Initialize a bcm_switch_trace_event_mon_t structure. */
   8323 extern void bcm_switch_trace_event_mon_t_init(
   8324     bcm_switch_trace_event_mon_t *monitor);
   8325 
   8326 #ifndef BCM_HIDE_DISPATCHABLE
   8327 
   8328 /* 
   8329  * These APIs set/get monitor configuration for trace events defined in
   8330  * <bcm/types.h>.
   8331  */
   8332 extern int bcm_switch_trace_event_mon_set(
   8333     int unit, 
   8334     bcm_switch_trace_event_mon_t *monitor);
   8335 
   8336 /* 
   8337  * These APIs set/get monitor configuration for trace events defined in
   8338  * <bcm/types.h>.
   8339  */
   8340 extern int bcm_switch_trace_event_mon_get(
   8341     int unit, 
   8342     bcm_switch_trace_event_mon_t *monitor);
   8343 
   8344 #endif /* BCM_HIDE_DISPATCHABLE */
   8345 
   8346 /* Hash banks. */
   8347 typedef enum bcm_switch_hash_bank_e {
   8348     bcmSwitchHashBank0 = 0,     /* Hash bank 0. */
   8349     bcmSwitchHashBank1 = 1,     /* Hash bank 1. */
   8350     bcmSwitchHashBank2 = 2,     /* Hash bank 2. */
   8351     bcmSwitchHashBank3 = 3,     /* Hash bank 3. */
   8352     bcmSwitchHashBank4 = 4,     /* Hash bank 4. */
   8353     bcmSwitchHashBank5 = 5,     /* Hash bank 5. */
   8354     bcmSwitchHashBank6 = 6,     /* Hash bank 6. */
   8355     bcmSwitchHashBank7 = 7,     /* Hash bank 7. */
   8356     bcmSwitchHashBank8 = 8,     /* Hash bank 8. */
   8357     bcmSwitchHashBank9 = 9,     /* Hash bank 9. */
   8358     bcmSwitchHashBank10 = 10,   /* Hash bank 10. */
   8359     bcmSwitchHashBank11 = 11,   /* Hash bank 11. */
   8360     bcmSwitchHashBank12 = 12,   /* Hash bank 12. */
   8361     bcmSwitchHashBank13 = 13,   /* Hash bank 13. */
   8362     bcmSwitchHashBank14 = 14,   /* Hash bank 14. */
   8363     bcmSwitchHashBank15 = 15,   /* Hash bank 15. */
   8364     bcmSwitchHashBank16 = 16,   /* Hash bank 16. */
   8365     bcmSwitchHashBank17 = 17,   /* Hash bank 17. */
   8366     bcmSwitchHashBank18 = 18,   /* Hash bank 18. */
   8367     bcmSwitchHashBank19 = 19,   /* Hash bank 19. */
   8368     bcmSwitchHashBank20 = 20,   /* Hash bank 20. */
   8369     bcmSwitchHashBank21 = 21,   /* Hash bank 21. */
   8370     bcmSwitchHashBank22 = 22,   /* Hash bank 22. */
   8371     bcmSwitchHashBank23 = 23,   /* Hash bank 23. */
   8372     bcmSwitchHashBank24 = 24,   /* Hash bank 24. */
   8373     bcmSwitchHashBank25 = 25,   /* Hash bank 25. */
   8374     bcmSwitchHashBank26 = 26,   /* Hash bank 26. */
   8375     bcmSwitchHashBank27 = 27,   /* Hash bank 27. */
   8376     bcmSwitchHashBank28 = 28,   /* Hash bank 28. */
   8377     bcmSwitchHashBank29 = 29,   /* Hash bank 29. */
   8378     bcmSwitchHashBank30 = 30,   /* Hash bank 30. */
   8379     bcmSwitchHashBank31 = 31,   /* Hash bank 31. */
   8380     bcmSwitchHashBankCount = 32 /* Must Be Last. Not A Valid Hash Bank. */
   8381 } bcm_switch_hash_bank_t;
   8382 
   8383 #ifndef BCM_HIDE_DISPATCHABLE
   8384 
   8385 /* Get the hash banks assigned to a hash table. */
   8386 extern int bcm_switch_hash_bank_multi_get(
   8387     int unit, 
   8388     bcm_switch_hash_table_t hash_table, 
   8389     int array_size, 
   8390     bcm_switch_hash_bank_t *bank_array, 
   8391     int *num_banks);
   8392 
   8393 /* Get a set of hash tables to which the given hash bank is assigned. */
   8394 extern int bcm_switch_hash_table_multi_get(
   8395     int unit, 
   8396     bcm_switch_hash_bank_t bank_num, 
   8397     int array_size, 
   8398     bcm_switch_hash_table_t *table_array, 
   8399     int *num_tables);
   8400 
   8401 #endif /* BCM_HIDE_DISPATCHABLE */
   8402 
   8403 /* Hash bank information structure. */
   8404 typedef struct bcm_switch_hash_bank_info_s {
   8405     bcm_switch_hash_bank_t bank_num;    /* Hash bank number. */
   8406     uint32 base_entry_width;            /* Width of base entry in bits. */
   8407     uint32 num_base_entries;            /* Number of base entries. */
   8408 } bcm_switch_hash_bank_info_t;
   8409 
   8410 /* Initialize a hash bank information structure. */
   8411 extern void bcm_switch_hash_bank_info_init(
   8412     bcm_switch_hash_bank_info_t *bank_info);
   8413 
   8414 #ifndef BCM_HIDE_DISPATCHABLE
   8415 
   8416 /* Get information about a hash bank. */
   8417 extern int bcm_switch_hash_bank_info_get(
   8418     int unit, 
   8419     bcm_switch_hash_bank_info_t *bank_info);
   8420 
   8421 #endif /* BCM_HIDE_DISPATCHABLE */
   8422 
   8423 /* 
   8424  * Hash bank control valid fields. Each flag indicates whether a member
   8425  * field in the bcm_switch_hash_bank_control_t structure is valid for the
   8426  * hash bank control get or set function.
   8427  */
   8428 #define BCM_SWITCH_HASH_BANK_CONTROL_ROBUST_VALID (1 << 0)   /* Robust field valid. */
   8429 #define BCM_SWITCH_HASH_BANK_CONTROL_HASH_TYPE_VALID (1 << 1)   /* Hash type field valid. */
   8430 #define BCM_SWITCH_HASH_BANK_CONTROL_OFFSET_VALID (1 << 2)   /* Offset field valid. */
   8431 #define BCM_SWITCH_HASH_BANK_CONTROL_SEED_VALID (1 << 3)   /* Robust hash seed field
   8432                                                           valid. */
   8433 
   8434 /* Hash bank control structure. */
   8435 typedef struct bcm_switch_hash_bank_control_s {
   8436     bcm_switch_hash_bank_t bank_num;    /* Hash bank number. */
   8437     uint32 valid_fields;                /* Bitmap of valid fields. */
   8438     int robust;                         /* 0 to disable robust hash or 1 to
   8439                                            enable robust hash. */
   8440     int hash_type;                      /* BCM_HASH_XXX definitions. */
   8441     uint32 offset;                      /* Hash offset. */
   8442     uint32 seed;                        /* Random seed for robust hash. */
   8443 } bcm_switch_hash_bank_control_t;
   8444 
   8445 /* Initialize a hash bank control structure. */
   8446 extern void bcm_switch_hash_bank_control_init(
   8447     bcm_switch_hash_bank_control_t *bank_control);
   8448 
   8449 #ifndef BCM_HIDE_DISPATCHABLE
   8450 
   8451 /* Hash bank control set/get function. */
   8452 extern int bcm_switch_hash_bank_control_set(
   8453     int unit, 
   8454     bcm_switch_hash_bank_control_t *bank_control);
   8455 
   8456 /* Hash bank control set/get function. */
   8457 extern int bcm_switch_hash_bank_control_get(
   8458     int unit, 
   8459     bcm_switch_hash_bank_control_t *bank_control);
   8460 
   8461 #endif /* BCM_HIDE_DISPATCHABLE */
   8462 
   8463 /* ISSU upgrade start. */
   8464 extern int bcm_switch_issu_upgrade_start(
   8465     const char *from_ver, 
   8466     const char *to_ver);
   8467 
   8468 /* ISSU upgrade done. */
   8469 extern int bcm_switch_issu_upgrade_done(void);
   8470 
   8471 /* Concat header type to master key in ELK */
   8472 typedef enum bcm_switch_concat_header_e {
   8473     bcmSwitchConcatHeaderNone = 0,      /* No extra header concate to master key
   8474                                            in ELK. */
   8475     bcmSwitchConcatHeaderForwarding = 1, /* Concate forwarding header to master
   8476                                            key in ELK. */
   8477     bcmSwitchConcatHeaderNextForwarding = 2, /* Concate header following the
   8478                                            forwarding header to master key in
   8479                                            ELK. */
   8480     bcmSwitchConcatHeader__Count        /* Must be last. */
   8481 } bcm_switch_concat_header_t;
   8482 
   8483 /* Callback function used for device hard reset */
   8484 typedef void (*bcm_switch_hard_reset_callback_t)(
   8485     int unit, 
   8486     uint32 flags, 
   8487     void *userdata);
   8488 
   8489 #ifndef BCM_HIDE_DISPATCHABLE
   8490 
   8491 /* 
   8492  * Registers/Unregisters a callback function for switch critical events -
   8493  * hard reset
   8494  */
   8495 extern int bcm_switch_hard_reset_cb_register(
   8496     int unit, 
   8497     uint32 flags, 
   8498     bcm_switch_hard_reset_callback_t callback, 
   8499     void *userdata);
   8500 
   8501 /* 
   8502  * Registers/Unregisters a callback function for switch critical events -
   8503  * hard reset
   8504  */
   8505 extern int bcm_switch_hard_reset_cb_unregister(
   8506     int unit, 
   8507     bcm_switch_hard_reset_callback_t callback, 
   8508     void *userdata);
   8509 
   8510 #endif /* BCM_HIDE_DISPATCHABLE */
   8511 
   8512 #define BCM_SWITCH_FEC_PROPERTY_1ST_HIERARCHY 0x1        /* First FEC Hierarchy. */
   8513 #define BCM_SWITCH_FEC_PROPERTY_2ND_HIERARCHY 0x2        /* Second FEC Hierarchy. */
   8514 #define BCM_SWITCH_FEC_PROPERTY_3RD_HIERARCHY 0x4        /* Third FEC Hierarchy. */
   8515 
   8516 /* 
   8517  * This structure contains the first and last FEC ID in the FEC IDs range
   8518  * of the given hierarchy.
   8519  */
   8520 typedef struct bcm_switch_fec_property_config_s {
   8521     uint32 flags;   /* BCM_SWITCH_FEC_PROPERTY_XXX */
   8522     int start;      /* Start ID */
   8523     int end;        /* End ID */
   8524 } bcm_switch_fec_property_config_t;
   8525 
   8526 #ifndef BCM_HIDE_DISPATCHABLE
   8527 
   8528 /* Get the available FEC IDs for each FEC hierarchy. */
   8529 extern int bcm_switch_fec_property_get(
   8530     int unit, 
   8531     bcm_switch_fec_property_config_t *fec_config);
   8532 
   8533 #endif /* BCM_HIDE_DISPATCHABLE */
   8534 
   8535 /* 
   8536  * An enum that represent a resource type to be used with
   8537  * bcm_dnx_switch_resource_utilization_get
   8538  */
   8539 typedef enum bcm_switch_resource_type_e {
   8540     bcmResourceTypeEM = 0, 
   8541     bcmResourceTypeLPM = 1, 
   8542     bcmResourceTypeDirect = 2, 
   8543     bcmResourceTypeNOF = 3      /* should always be last */
   8544 } bcm_switch_resource_type_t;
   8545 
   8546 /* 
   8547  * A struct that represent resource utilization Is used as output for
   8548  * bcm_switch_resource_utilization_get.
   8549  *                 Is used as output for
   8550  * bcm_switch_resource_utilization_get.
   8551  *                 Can be expanded in the future to represent more
   8552  * complex resources.
   8553  */
   8554 typedef struct bcm_switch_resource_utilization_s {
   8555     uint32 guaranteed_free; /* the maximum number of resources that are free for
   8556                                use in the worst case configuration sequence */
   8557 } bcm_switch_resource_utilization_t;
   8558 
   8559 /* 
   8560  * A struct that represent resource properties and can be used as input
   8561  * for bcm_switch_resource_utilization_get in order to get more accurate
   8562  * result
   8563  */
   8564 typedef struct bcm_switch_resource_utilization_query_s {
   8565     bcm_switch_resource_type_t type;    /* This field represent the type of the
   8566                                            resource */
   8567     uint32 id;                          /* This field can serve as a resource ID
   8568                                            if such is applicable for the
   8569                                            resource type */
   8570 } bcm_switch_resource_utilization_query_t;
   8571 
   8572 #ifndef BCM_HIDE_DISPATCHABLE
   8573 
   8574 /* 
   8575  * return the utilization for a specific resource the free field in the
   8576  * utilization output is represented as worst case and not average case.
   8577  */
   8578 extern int bcm_switch_resource_utilization_get(
   8579     int unit, 
   8580     bcm_switch_resource_utilization_query_t *resource, 
   8581     bcm_switch_resource_utilization_t *utilization);
   8582 
   8583 /* Get number of LED microcontrollers. */
   8584 extern int bcm_switch_led_uc_num_get(
   8585     int unit, 
   8586     int *led_uc_num);
   8587 
   8588 /* Load LED firmware binary. */
   8589 extern int bcm_switch_led_fw_load(
   8590     int unit, 
   8591     int led_uc, 
   8592     const uint8 *data, 
   8593     int len);
   8594 
   8595 /* Start/stop LED firmware. */
   8596 extern int bcm_switch_led_fw_start_set(
   8597     int unit, 
   8598     int led_uc, 
   8599     int data);
   8600 
   8601 /* Get if LED firmware is started or not. */
   8602 extern int bcm_switch_led_fw_start_get(
   8603     int unit, 
   8604     int led_uc, 
   8605     int *data);
   8606 
   8607 /* Write control data of LED firmware. */
   8608 extern int bcm_switch_led_control_data_write(
   8609     int unit, 
   8610     int led_uc, 
   8611     int offset, 
   8612     const uint8 *data, 
   8613     int len);
   8614 
   8615 /* Read control data of LED firmware. */
   8616 extern int bcm_switch_led_control_data_read(
   8617     int unit, 
   8618     int led_uc, 
   8619     int offset, 
   8620     uint8 *data, 
   8621     int len);
   8622 
   8623 /* Map physical port to LED microcontroller number and port index. */
   8624 extern int bcm_switch_led_port_to_uc_port_get(
   8625     int unit, 
   8626     int port, 
   8627     int *led_uc, 
   8628     int *led_uc_port);
   8629 
   8630 /* 
   8631  * Configure the mapping from physical port to LED microcontroller number
   8632  * and port index.
   8633  */
   8634 extern int bcm_switch_led_port_to_uc_port_set(
   8635     int unit, 
   8636     int port, 
   8637     int led_uc, 
   8638     int led_uc_port);
   8639 
   8640 #endif /* BCM_HIDE_DISPATCHABLE */
   8641 
   8642 /* Replace the existing encap id to destination mapping entry */
   8643 #define BCM_SWITCH_ENCAP_DEST_REPLACE   0x00000001 
   8644 
   8645 /* Encap destination struct */
   8646 typedef struct bcm_switch_encap_dest_s {
   8647     uint32 flags;       /* BCM_SWITCH_ENCAP_DEST_xxx flags. */
   8648     bcm_if_t encap_id;  /* Encap-ID. */
   8649     bcm_gport_t gport;  /* Gport for Destination. */
   8650 } bcm_switch_encap_dest_t;
   8651 
   8652 #ifndef BCM_HIDE_DISPATCHABLE
   8653 
   8654 /* Add an encap id to destination mapping entry. */
   8655 extern int bcm_switch_encap_dest_map_add(
   8656     int unit, 
   8657     bcm_switch_encap_dest_t *encap_info);
   8658 
   8659 /* 
   8660  * Delete the encap id to destination mapping entry with the given
   8661  * encap_id.
   8662  */
   8663 extern int bcm_switch_encap_dest_map_delete(
   8664     int unit, 
   8665     bcm_switch_encap_dest_t *encap_info);
   8666 
   8667 /* Get the destination with the given encap_id. */
   8668 extern int bcm_switch_encap_dest_map_get(
   8669     int unit, 
   8670     bcm_switch_encap_dest_t *encap_info);
   8671 
   8672 #endif /* BCM_HIDE_DISPATCHABLE */
   8673 
   8674 /* Switch encap dest map traverse callback. */
   8675 typedef int (*bcm_switch_encap_dest_map_traverse_cb)(
   8676     int unit, 
   8677     bcm_switch_encap_dest_t *encap_info, 
   8678     void *user_data);
   8679 
   8680 #ifndef BCM_HIDE_DISPATCHABLE
   8681 
   8682 /* Traverse the all added encap id to destination mapping entries. */
   8683 extern int bcm_switch_encap_dest_map_traverse(
   8684     int unit, 
   8685     bcm_switch_encap_dest_map_traverse_cb cb_fn, 
   8686     void *user_data);
   8687 
   8688 #endif /* BCM_HIDE_DISPATCHABLE */
   8689 
   8690 /* Values passed for setting switch control bcmSwitchMactAgeRefreshMode. */
   8691 typedef enum bcm_switch_age_refresh_mode_e {
   8692     bcmSwitchAgeRefreshModeSrc = 0,     /* Aging hit bit mode set to source
   8693                                            address */
   8694     bcmSwitchAgeRefreshModeDest = 1,    /* Aging hit bit mode set to destination
   8695                                            address */
   8696     bcmSwitchAgeRefreshModeSrcAndDest = 2, /* Aging hit bit mode set to source and
   8697                                            destination addresses */
   8698     bcmSwitchAgeRefreshModeSrcOrDest = 3 /* Aging hit bit mode set to source or
   8699                                            destination addresses */
   8700 } bcm_switch_age_refresh_mode_t;
   8701 
   8702 /* SVTAG flags. */
   8703 #define BCM_SWITCH_SVTAG_EGRESS_REPLACE     0x1        /* Replace an SVTAG
   8704                                                           entry. */
   8705 #define BCM_SWITCH_SVTAG_EGRESS_DEFAULT_ENTRY 0x2        /* Update the default
   8706                                                           entry values, used in
   8707                                                           case of not found. */
   8708 
   8709 /* SVTAG traverse flags. */
   8710 #define BCM_SWITCH_SVTAG_EGRESS_TRAVERSE_DELETE_ALL 0x1        /* Delete all the SVTAG
   8711                                                           entries. */
   8712 
   8713 /* SVTAG Egress info structure */
   8714 typedef struct bcm_switch_svtag_egress_info_s {
   8715     uint32 sci;                     /* secure context index. */
   8716     bcm_svtag_pkt_type_t pkt_type;  /* The packet type. */
   8717     uint32 offset_addr;             /* The offset addition to place the security
   8718                                        tag. */
   8719     uint32 signature;               /* The SVTAG signature value. */
   8720     uint8 ipv6_indication;          /* Indication of an IPv6 tunneling. */
   8721     uint8 accumulation;             /* accumulate the offset to the security
   8722                                        tag. */
   8723 } bcm_switch_svtag_egress_info_t;
   8724 
   8725 /* switch SVTAG egress traverse callback signature */
   8726 typedef int (*bcm_switch_svtag_egress_traverse_cb)(
   8727     int unit, 
   8728     uint32 flags, 
   8729     bcm_gport_t gport, 
   8730     bcm_switch_svtag_egress_info_t *svtag_info, 
   8731     void *user_data);
   8732 
   8733 #ifndef BCM_HIDE_DISPATCHABLE
   8734 
   8735 /* Adds an SVTAG entry the EM database. */
   8736 extern int bcm_switch_svtag_egress_entry_add(
   8737     int unit, 
   8738     uint32 flags, 
   8739     bcm_gport_t gport, 
   8740     bcm_switch_svtag_egress_info_t *svtag_info);
   8741 
   8742 /* Gets an SVTAG entry. */
   8743 extern int bcm_switch_svtag_egress_entry_get(
   8744     int unit, 
   8745     uint32 flags, 
   8746     bcm_gport_t gport, 
   8747     bcm_switch_svtag_egress_info_t *svtag_info);
   8748 
   8749 /* Delete an SVTAG entry. */
   8750 extern int bcm_switch_svtag_egress_entry_delete(
   8751     int unit, 
   8752     uint32 flags, 
   8753     bcm_gport_t gport);
   8754 
   8755 /* Traverse through the SVTAG egress entries and run callback. */
   8756 extern int bcm_switch_svtag_egress_entry_traverse(
   8757     int unit, 
   8758     uint32 flags, 
   8759     bcm_switch_svtag_egress_traverse_cb trav_fn, 
   8760     void *user_data);
   8761 
   8762 #endif /* BCM_HIDE_DISPATCHABLE */
   8763 
   8764 /* 
   8765  * Values of tunnel collapsing protocols that can be disabled by
   8766  * bcmSwitchL3TunnelCollapseDisable switch control
   8767  */
   8768 typedef enum bcm_switch_l3_tunnel_e {
   8769     bcmSwitchL3TunnelL2TP = 0,  /* L2TP */
   8770     bcmSwitchL3TunnelVxLan = 1, /* VxLan */
   8771     bcmSwitchL3TunnelGtpU = 2,  /* GTP-U */
   8772     bcmSwitchL3TunnelCount = 3  /* Count */
   8773 } bcm_switch_l3_tunnel_t;
   8774 
   8775 /* Application signature Identifier. */
   8776 typedef uint32 bcm_switch_appl_signature_t;
   8777 
   8778 #define BCM_SWITCH_APPL_SIGNATURE_L4_PAYLOAD_MATCH_LEN 32         /* Number of bytes that
   8779                                                           can be matched in L4
   8780                                                           payload. */
   8781 
   8782 #define BCM_SWITCH_APPL_SIGNATURE_TYPE_TCP  (1 << 0)   /* Application signature
   8783                                                           for TCP flow */
   8784 #define BCM_SWITCH_APPL_SIGNATURE_TYPE_UDP  (1 << 1)   /* Application signature
   8785                                                           for UDP flow */
   8786 #define BCM_SWITCH_APPL_SIGNATURE_TYPE_RESPONSE (1 << 2)   /* Application signature
   8787                                                           for Response packets */
   8788 
   8789 #define BCM_SWITCH_APPL_SIGNATURE_WITH_ID   (1 << 0)   /* Create Application
   8790                                                           signature with Id */
   8791 #define BCM_SWITCH_APPL_SIGNATURE_INNER_PAYLOAD (1 << 1)   /* Application signature
   8792                                                           for matching in inner
   8793                                                           payload */
   8794 
   8795 /* Application signature information */
   8796 typedef struct bcm_switch_appl_signature_info_s {
   8797     uint32 flags;                       /* control flags, default values
   8798                                            indicate tcp flow */
   8799     uint32 priority;                    /* priority of applicate signature entry */
   8800     uint16 l4protocol_port;             /* L4 Protocol port */
   8801     uint8 l4_payload[BCM_SWITCH_APPL_SIGNATURE_L4_PAYLOAD_MATCH_LEN]; /* L4 payload data array */
   8802     uint8 l4_payload_mask[BCM_SWITCH_APPL_SIGNATURE_L4_PAYLOAD_MATCH_LEN]; /* L4 payload data array */
   8803 } bcm_switch_appl_signature_info_t;
   8804 
   8805 /* Initialize a Application signature structure. */
   8806 extern void bcm_switch_appl_signature_info_t_init(
   8807     bcm_switch_appl_signature_info_t *appl_signature_info);
   8808 
   8809 #ifndef BCM_HIDE_DISPATCHABLE
   8810 
   8811 /* Create application signature entry. */
   8812 extern int bcm_switch_appl_signature_create(
   8813     int unit, 
   8814     uint32 options, 
   8815     bcm_switch_appl_signature_info_t *appl_signature_info, 
   8816     bcm_switch_appl_signature_t *appl_signature);
   8817 
   8818 /* Get application signature entry info. */
   8819 extern int bcm_switch_appl_signature_get(
   8820     int unit, 
   8821     uint32 options, 
   8822     bcm_switch_appl_signature_t appl_signature, 
   8823     bcm_switch_appl_signature_info_t *appl_signature_info);
   8824 
   8825 /* Get all application signature entries configured in the system. */
   8826 extern int bcm_switch_appl_signature_get_all(
   8827     int unit, 
   8828     uint32 options, 
   8829     int size, 
   8830     bcm_switch_appl_signature_t *appl_signature_array, 
   8831     int *count);
   8832 
   8833 /* Set priority of application signature entry. */
   8834 extern int bcm_switch_appl_signature_prio_set(
   8835     int unit, 
   8836     uint32 options, 
   8837     bcm_switch_appl_signature_t appl_signature, 
   8838     uint32 priority);
   8839 
   8840 /* Destroy application signature entry. */
   8841 extern int bcm_switch_appl_signature_destroy(
   8842     int unit, 
   8843     uint32 options, 
   8844     bcm_switch_appl_signature_t appl_signature);
   8845 
   8846 #endif /* BCM_HIDE_DISPATCHABLE */
   8847 
   8848 /* Values of the IPv6 address 32b word index */
   8849 typedef enum bcm_switch_ipv6_word_index_e {
   8850     bcmSwitchIPv6LowLsb = 0,    /* LSB Low */
   8851     bcmSwitchIPv6LowMsb = 1,    /* LSB Low */
   8852     bcmSwitchIPv6HighLsb = 2,   /* LSB Low */
   8853     bcmSwitchIPv6HighMsb = 3    /* LSB Low */
   8854 } bcm_switch_ipv6_word_index_t;
   8855 
   8856 /* Values of the SVTag Error Codes */
   8857 typedef enum bcm_switch_svtag_err_code_e {
   8858     bcmSwitchSvtagErrCodeNone = 0,      /* Error Code None */
   8859     bcmSwitchSvtagErrCodeSpTcamMiss = 1, 
   8860     bcmSwitchSvtagErrCodeTagCntrlPortDisabledPkt = 2, 
   8861     bcmSwitchSvtagErrCodeUntagCtrlPortDisabledPkt = 3, 
   8862     bcmSwitchSvtagErrCodeIpv4ChecksumMismatchOrMplsBosNotFound = 4, 
   8863     bcmSwitchSvtagErrCodeInvalidSectag = 5, 
   8864     bcmSwitchSvtagErrCodeScTcamMiss = 6, 
   8865     bcmSwitchSvtagErrCodeNoSa = 7, 
   8866     bcmSwitchSvtagErrCodeReplayFailure = 8, 
   8867     bcmSwitchSvtagErrCodeCount = 9 
   8868 } bcm_switch_svtag_err_code_t;
   8869 
   8870 /* 
   8871  * This enum contains values of operators that can be used on L4 OPS
   8872  * Extended Range Types
   8873  */
   8874 typedef enum bcm_switch_range_operator_e {
   8875     bcmSwitchRangeOperatorInvalid = -1, /* Param Invalid */
   8876     bcmSwitchRangeOperatorFirst = 0,    /* First Param (used for indexing) */
   8877     bcmSwitchRangeOperatorNone = bcmSwitchRangeOperatorFirst, /* Operator None (in3,in2,in1,in0) */
   8878     bcmSwitchRangeOperatorFirstPairAnd = 1, /* Operator First Pair And
   8879                                            (in3,in2,in1,in1&in0) */
   8880     bcmSwitchRangeOperatorSecondPairAnd = 2, /* Operator Second Pair And
   8881                                            (in3,in3&in2,in1,in0) */
   8882     bcmSwitchRangeOperatorBothPairAnd = 3, /* Operator Both Pair And
   8883                                            (in3,in3&in2,in1,in1&in0) */
   8884     bcmSwitchRangeOperator64bPairAndLow = 4, /* Operator 64b Pair And Low
   8885                                            (in3,in2,{in3,in2}&{in1,in0}) */
   8886     bcmSwitchRangeOperator64bPairAndHigh = 5, /* Operator 64b Pair And High
   8887                                            ({in3,in2}&{in1,in0},in1,in0) */
   8888     bcmSwitchRangeOperatorFirstPairOr = 6, /* Operator First Pair Or
   8889                                            (in3,in2,in1,in1|in0) */
   8890     bcmSwitchRangeOperatorSecondPairOr = 7, /* Operator Second Pair Or
   8891                                            (in3,in3|in2,in1,in0) */
   8892     bcmSwitchRangeOperatorBothPairOr = 8, /* Operator Both Pair Or
   8893                                            (in3,in3|in2,in1,in1|in0) */
   8894     bcmSwitchRangeOperator64bPairOrLow = 9, /* Operator 64b Pair Or Low
   8895                                            (in3,in2,{in3,in2}|{in1,in0}) */
   8896     bcmSwitchRangeOperator64bPairOrHigh = 10, /* Operator 64b Pair Or High
   8897                                            ({in3,in2}|{in1,in0},in1,in0) */
   8898     bcmSwitchRangeOperatorCount = 11    /* Count */
   8899 } bcm_switch_range_operator_t;
   8900 
   8901 #define BCM_SWITCH_RANGE_OPERATOR_STR \
   8902 { \
   8903     "None", \
   8904     "FirstPairAnd", \
   8905     "SecondPairAnd", \
   8906     "BothPairAnd", \
   8907     "64bPairAndLow", \
   8908     "64bPairAndHigh", \
   8909     "FirstPairOr", \
   8910     "SecondPairOr", \
   8911     "BothPairOr", \
   8912     "64bPairOrLow", \
   8913     "64bPairOrHigh"  \
   8914 }
   8915 
   8916 /* 
   8917  * This enum contains values of result map selection for L4 OPS Extended
   8918  * Encoders
   8919  */
   8920 typedef enum bcm_switch_range_result_map_e {
   8921     bcmSwitchRangeResultMapInvalid = -1, /* Param Invalid */
   8922     bcmSwitchRangeResultMapFirst = 0,   /* First Param (used for indexing) */
   8923     bcmSwitchRangeResultMapNone = bcmSwitchRangeResultMapFirst, /* Result None */
   8924     bcmSwitchRangeResultMapFirstOnly = 1, /* Result [First] (out0) */
   8925     bcmSwitchRangeResultMapSecondOnly = 2, /* Result [Second] (out1) */
   8926     bcmSwitchRangeResultMapThirdOnly = 3, /* Result [Third] (out2) */
   8927     bcmSwitchRangeResultMapForthOnly = 4, /* Result [Forth] (out3) */
   8928     bcmSwitchRangeResultMapFirstnSecond = 5, /* Result [First,Second] (out1,out0) */
   8929     bcmSwitchRangeResultMapFirstnThird = 6, /* Result {First,Third} (out2,out0) */
   8930     bcmSwitchRangeResultMapFirstnForth = 7, /* Result [First,Forth] (out3,out0) */
   8931     bcmSwitchRangeResultMapSecondnThird = 8, /* Result [Second,Third] (out2,out1) */
   8932     bcmSwitchRangeResultMapSecondnForth = 9, /* Result [Second,Forth] (out3,out1) */
   8933     bcmSwitchRangeResultMapThirdnForth = 10, /* Result [Third,Forth] (out3,out2) */
   8934     bcmSwitchRangeResultMapFirstnSecondnThird = 11, /* Result [First,Second,Third]
   8935                                            (out2,out1,out0) */
   8936     bcmSwitchRangeResultMapFirstnSecondnForth = 12, /* Result [First,Second,Forth]
   8937                                            (out3,out1,out0) */
   8938     bcmSwitchRangeResultMapFirstnThirdnForth = 13, /* Result [First,Third,Forth]
   8939                                            (out3,out2,out0) */
   8940     bcmSwitchRangeResultMapSecondnThirdnForth = 14, /* Result [Second,Third,Forth]
   8941                                            (out3,out2,out1) */
   8942     bcmSwitchRangeResultMapFirstnSecondnThirdnForth = 15, /* Result [First,Second,Third,Forth]
   8943                                            (out3,out2,out1,out0) */
   8944     bcmSwitchRangeResultMapCount = 16   /* Count */
   8945 } bcm_switch_range_result_map_t;
   8946 
   8947 #define BCM_SWITCH_RANGE_RESULT_MAP_STR \
   8948 { \
   8949     "None", \
   8950     "FirstOnly", \
   8951     "SecondOnly", \
   8952     "ThirdOnly", \
   8953     "ForthOnly", \
   8954     "FirstnSecond", \
   8955     "FirstnThird", \
   8956     "FirstnForth", \
   8957     "SecondnThird", \
   8958     "SecondnForth", \
   8959     "ThirdnForth", \
   8960     "FirstnSecondnThird", \
   8961     "FirstnSecondnForth", \
   8962     "FirstnThirdnForth", \
   8963     "SecondnThirdnForth", \
   8964     "FirstnSecondnThirdnForth"  \
   8965 }
   8966 
   8967 /* LIF hit type. */
   8968 #define BCM_SWITCH_LIF_HIT_INGRESS  0x1        /* Ingress Logical Interface. */
   8969 #define BCM_SWITCH_LIF_HIT_EGRESS   0x2        /* Egress Logical Interface */
   8970 #define BCM_SWITCH_LIF_HIT_L3_INTF  0x4        /* In case set, indicate L3
   8971                                                   interface is used, otherwise
   8972                                                   gport */
   8973 #define BCM_SWITCH_LIF_HIT_GET      0x8        /* Get LIF HIT indication */
   8974 #define BCM_SWITCH_LIF_HIT_CLEAR    0x10       /* Clear LIF HIT indication */
   8975 
   8976 /* 
   8977  * This structure describes the fields that need to be supplies for the
   8978  * LIF hit.
   8979  */
   8980 typedef struct bcm_switch_lif_hit_s {
   8981     uint32 flags;       /* LIF hit flags */
   8982     bcm_gport_t gport;  /* Gport ID */
   8983     bcm_if_t l3_intf;   /* L3 interface ID */
   8984     uint32 val;         /* HIT value */
   8985 } bcm_switch_lif_hit_t;
   8986 
   8987 #ifndef BCM_HIDE_DISPATCHABLE
   8988 
   8989 /* Get the LIF hit values */
   8990 extern int bcm_switch_lif_hit_get(
   8991     int unit, 
   8992     bcm_switch_lif_hit_t *lif_hit);
   8993 
   8994 #endif /* BCM_HIDE_DISPATCHABLE */
   8995 
   8996 /* Values passed for setting switch control bcmSwitchIoamType. */
   8997 typedef enum bcm_switch_ioam_type_e {
   8998     bcmSwitchIoamTypeIncrementalTrace = 0, /* IOAM incremental trace option type */
   8999     bcmSwitchIoamTypeCount = 1          /* Always last */
   9000 } bcm_switch_ioam_type_t;
   9001 
   9002 /* Action selection for bcmSwitchIntVectorMatchMissAction. */
   9003 #define BCM_SWITCH_INT_VECTOR_MATCH_MISS_DROP 0          /* Drop. */
   9004 #define BCM_SWITCH_INT_VECTOR_MATCH_MISS_FORWARD 1          /* Forward. */
   9005 
   9006 /* Enums to choose IPV6 L3 Local Link Src disposition. */
   9007 typedef enum bcm_switch_v6l3_local_link_select_e {
   9008     bcmSwitchV6L3LocalLinkSrcDrop = 2,  /*  Always drop packets with Link Local
   9009                                            SIP */
   9010     bcmSwitchV6L3LocalLinkSrcDstNotLocalDrop = 3, /* Drop packets with Link Local SIP only
   9011                                            if DIP is not local link.If DIP is
   9012                                            also Local Link, do not drop the
   9013                                            packets */
   9014     bcmSwitchV6L3LocalLinkSelectCount = 4 /* Always last */
   9015 } bcm_switch_v6l3_local_link_select_t;
   9016 
   9017 /* Specify the type of packets to be redirected or copied to CPU. */
   9018 typedef enum bcm_switch_ep_recirc_pkt_copy_type_e {
   9019     bcmSwitchEpRecircPktCopyTypeNoCopy = 0, /* No copy. */
   9020     bcmSwitchEpRecircPktCopyTypeDropped = 1, /* Copy only if the incoming packet is
   9021                                            dropped. */
   9022     bcmSwitchEpRecircPktCopyTypeNotDropped = 2, /* Copy only if the incoming packet is
   9023                                            not dropped. */
   9024     bcmSwitchEpRecircPktCopyTypeAll = 3, /* Copy all packets. */
   9025     bcmSwitchEpRecircPktCopyTypeCount = 4 /* Must be last. Not a usable value. */
   9026 } bcm_switch_ep_recirc_pkt_copy_type_t;
   9027 
   9028 /* 
   9029  * Specify how the residence time field is constructed in NIH or CPU DMA
   9030  * header.
   9031  */
   9032 typedef enum bcm_switch_ep_recirc_residence_time_field_select_e {
   9033     bcmSwitchEpRecircResidenceTimeFieldSelectTime = 0, /* Select residence time. */
   9034     bcmSwitchEpRecircResidenceTimeFieldSelectOpaqueObjBC = 1, /* Select opaque object B and C. */
   9035     bcmSwitchEpRecircResidenceTimeFieldSelectCount = 2 /* Must be last. Not a usable value. */
   9036 } bcm_switch_ep_recirc_residence_time_field_select_t;
   9037 
   9038 /* 
   9039  * Specify how the timestamp field is constructed in NIH or CPU DMA
   9040  * header.
   9041  */
   9042 typedef enum bcm_switch_ep_recirc_timestamp_select_e {
   9043     bcmSwitchEpRecircTimestampSelectIngress = 0, /* Select ingress timestamp. */
   9044     bcmSwitchEpRecircTimestampSelectEgress = 1, /* Select egress timestamp. */
   9045     bcmSwitchEpRecircTimestampSelectCount = 2 /* Must be last. Not a usable value. */
   9046 } bcm_switch_ep_recirc_timestamp_select_t;
   9047 
   9048 /* 
   9049  * Specify the set of contiguous trace events to be copied to the NIH
   9050  * header.
   9051  */
   9052 typedef enum bcm_switch_ep_recirc_nih_trace_event_select_e {
   9053     bcmSwitchEpRecircNihTraceEventDisable = 0, /* Disable the trace events from being
   9054                                            copied into the NIH header. */
   9055     bcmSwitchEpRecircNihTraceEvent_0_15 = 1, /* Select trace events 0-15. */
   9056     bcmSwitchEpRecircNihTraceEvent_16_31 = 2, /* Select trace events 16-31. */
   9057     bcmSwitchEpRecircNihTraceEvent_32_47 = 3, /* Select trace events 32-47. */
   9058     bcmSwitchEpRecircNihTraceEventCount = 4 /* Must be last. Not a usable value. */
   9059 } bcm_switch_ep_recirc_nih_trace_event_select_t;
   9060 
   9061 /* Specify the destination type for the redirected packets. */
   9062 typedef enum bcm_switch_ep_recirc_nih_dest_type_e {
   9063     bcmSwitchEpRecircNihDestTypeNone = 0, /* No destination specified. */
   9064     bcmSwitchEpRecircNihDestTypeFromOpaqueA = 1, /* The two fields destination_type and
   9065                                            destination in the NIH header will
   9066                                            carry values of the opaque control A
   9067                                            and opaque object A from the internal
   9068                                            bus. */
   9069     bcmSwitchEpRecircNihDestTypeEgressL2Interface = 2, /* Destination type is Egress L2
   9070                                            interface (L2 OIF). */
   9071     bcmSwitchEpRecircNihDestTypeCount = 3 /* Must be last. Not a usable value. */
   9072 } bcm_switch_ep_recirc_nih_dest_type_t;
   9073 
   9074 /* Flags for bcm_switch_ep_recirc_profile_t. */
   9075 #define BCM_SWITCH_EP_RECIRC_PROFILE_REPLACE (1U << 0)  /* Update a profile
   9076                                                           entry. */
   9077 #define BCM_SWITCH_EP_RECIRC_PROFILE_WITH_ID (1U << 1)  /* Create or update a
   9078                                                           profile with id. */
   9079 #define BCM_SWITCH_EP_RECIRC_DROP_SWITCHED_PACKET (1U << 2)  /* Drop the switched
   9080                                                           packet in the first
   9081                                                           pass. */
   9082 
   9083 /* 
   9084  * This structure configures the data that will be carried in the
   9085  * residence time field on the NIH header.
   9086  */
   9087 typedef struct bcm_switch_ep_recirc_nih_residence_time_field_config_s {
   9088     bcm_switch_ep_recirc_residence_time_field_select_t res_time_field_select; /* NIH header residence time field
   9089                                            selection. */
   9090     int nih_drop_code_en;               /* Enable to copy the highest and first
   9091                                            drop code to the NIH header. This
   9092                                            will overwrite the upper 16 bit of
   9093                                            residence time field. */
   9094     bcm_switch_ep_recirc_nih_trace_event_select_t nih_trace_event_select; /* Select one of the sets of contiguous
   9095                                            trace events to be copied to the NIH
   9096                                            header. This will overwrite the lower
   9097                                            16 bit of residence time field. */
   9098 } bcm_switch_ep_recirc_nih_residence_time_field_config_t;
   9099 
   9100 /* 
   9101  * EP Recirculate config structure for NIH construction for redirected
   9102  * packets.
   9103  */
   9104 typedef struct bcm_switch_ep_recirc_nih_config_s {
   9105     bcm_switch_ep_recirc_nih_dest_type_t destination_type; /* Destination type used for the
   9106                                            redirected packets. */
   9107     int destination;                    /* Destination of the redirected
   9108                                            packets. The meaning of the value
   9109                                            depends on the destination type. */
   9110     bcm_switch_ep_recirc_timestamp_select_t timestamp_select; /* Timestamp field selection. */
   9111     bcm_switch_ep_recirc_nih_residence_time_field_config_t res_time_field_cfg; /* Residence time field construction. */
   9112 } bcm_switch_ep_recirc_nih_config_t;
   9113 
   9114 /* 
   9115  * This structure configures the data that will be carried in the
   9116  * timestamp field on the CPU DMA header for packets copied to CPU.
   9117  */
   9118 typedef struct bcm_switch_ep_recirc_cpu_dma_timestamp_field_config_s {
   9119     bcm_switch_ep_recirc_timestamp_select_t timestamp_select; /* Timestamp field selection. */
   9120     int opaque_obj_a_en;                /* Enable to carry opaque object A. This
   9121                                            will overwrite the upper 16 bit of
   9122                                            timestamp field. */
   9123 } bcm_switch_ep_recirc_cpu_dma_timestamp_field_config_t;
   9124 
   9125 /* EP Recirculate config structure for CPU DMA header construction. */
   9126 typedef struct bcm_switch_ep_recirc_cpu_dma_config_s {
   9127     bcm_switch_ep_recirc_cpu_dma_timestamp_field_config_t timestamp_field_cfg; /* Timestamp field construction. */
   9128     bcm_switch_ep_recirc_residence_time_field_select_t res_time_field_select; /* Residence time field selection. */
   9129     uint32 cpu_dma_header_flex_word_bitmap; /* Bitmap to select which 32-bit words
   9130                                            from the internal bus to be copied to
   9131                                            the CPU DMA header flex portion for
   9132                                            packets copied to CPU. Users need to
   9133                                            refer to related documents for the
   9134                                            meaning of the words and the number
   9135                                            of words to choose from. */
   9136 } bcm_switch_ep_recirc_cpu_dma_config_t;
   9137 
   9138 /* EP Recirculate profile structure. */
   9139 typedef struct bcm_switch_ep_recirc_profile_s {
   9140     int recirc_profile_id;              /* Profile id. */
   9141     uint32 flags;                       /* See BCM_XXX_EP_RECIRC_PROFILE_XXX
   9142                                            flag definitions. */
   9143     bcm_switch_ep_recirc_pkt_copy_type_t redirect_type; /* Specify types of packets to be
   9144                                            redirected. */
   9145     bcm_switch_ep_recirc_pkt_copy_type_t tocpu_type; /* Specify types of packets to be copied
   9146                                            to CPU. */
   9147     int truncate_cell_length;           /* Truncated size (in cells) for the
   9148                                            recirc packet. 0 means no truncation. */
   9149     int buffer_priority;                /* Enqueue priority specified for the
   9150                                            redirect data buffer (RDB). */
   9151     bcm_switch_ep_recirc_nih_config_t nih_cfg; /* Config for NIH header construction
   9152                                            for redirected packets. */
   9153     bcm_switch_ep_recirc_cpu_dma_config_t cpu_dma_cfg; /* Config for CPU DMA header
   9154                                            construction for copy-to-CPU packets. */
   9155 } bcm_switch_ep_recirc_profile_t;
   9156 
   9157 /* 
   9158  * Initialize an EP Recirculate NIH residence time field config
   9159  * structure.
   9160  */
   9161 extern void bcm_switch_ep_recirc_nih_residence_time_field_config_t_init(
   9162     bcm_switch_ep_recirc_nih_residence_time_field_config_t *nih_residence_time_field);
   9163 
   9164 /* Initialize an EP Recirculate NIH config structure. */
   9165 extern void bcm_switch_ep_recirc_nih_config_t_init(
   9166     bcm_switch_ep_recirc_nih_config_t *nih_config);
   9167 
   9168 /* 
   9169  * Initialize an EP Recirculate CPU DMA header timestamp field config
   9170  * structure.
   9171  */
   9172 extern void bcm_switch_ep_recirc_cpu_dma_timestamp_field_config_t_init(
   9173     bcm_switch_ep_recirc_cpu_dma_timestamp_field_config_t *cpu_dma_timestamp_field);
   9174 
   9175 /* Initialize an EP Recirculate CPU DMA header config structure. */
   9176 extern void bcm_switch_ep_recirc_cpu_dma_config_t_init(
   9177     bcm_switch_ep_recirc_cpu_dma_config_t *cpu_dma_config);
   9178 
   9179 /* Initialize an EP Recirculate profile structure. */
   9180 extern void bcm_switch_ep_recirc_profile_t_init(
   9181     bcm_switch_ep_recirc_profile_t *recirc_profile);
   9182 
   9183 #ifndef BCM_HIDE_DISPATCHABLE
   9184 
   9185 /* Create an EP Recirculate profile. */
   9186 extern int bcm_switch_ep_recirc_profile_create(
   9187     int unit, 
   9188     bcm_switch_ep_recirc_profile_t *recirc_profile, 
   9189     int *recirc_profile_id);
   9190 
   9191 /* Destroy an EP Recirculate profile. */
   9192 extern int bcm_switch_ep_recirc_profile_destroy(
   9193     int unit, 
   9194     int recirc_profile_id);
   9195 
   9196 /* Get all EP Recirculate profile. */
   9197 extern int bcm_switch_ep_recirc_profile_get_all(
   9198     int unit, 
   9199     int *recirc_profile_id_array, 
   9200     int *count);
   9201 
   9202 /* Get an EP Recirculate profile. */
   9203 extern int bcm_switch_ep_recirc_profile_get(
   9204     int unit, 
   9205     int recirc_profile_id, 
   9206     bcm_switch_ep_recirc_profile_t *recirc_profile);
   9207 
   9208 #endif /* BCM_HIDE_DISPATCHABLE */
   9209 
   9210 /* EP Recirculate drop event control structure. */
   9211 typedef struct bcm_switch_ep_recirc_drop_event_control_s {
   9212     int recirc_en;          /* Enable for drop event to trigger EP Recirculate
   9213                                based on the configs of this structure. */
   9214     int threshold;          /* If highest drop code of a dropped packet is
   9215                                larger or equal to the threshold, trigger EP
   9216                                Recirculate based on the calculated profile index
   9217                                entry. Users need to refer to related documents
   9218                                for the list of drop codes. */
   9219     int profile_id_mask;    /* This mask is used to calculate the EP Recirculate
   9220                                profile id for the drop events. Final profile id
   9221                                = ((ing_profile_id & profile_id_mask) |
   9222                                profile_id_offset). Where ing_profile_id is the
   9223                                original id derived from the ingress pipeline. */
   9224     int profile_id_offset;  /* This offset is used to calculate the EP
   9225                                Recirculate profile id for the drop events. See
   9226                                above for how the final profile id is calculated. */
   9227 } bcm_switch_ep_recirc_drop_event_control_t;
   9228 
   9229 /* Initialize an EP Recirculate drop event control structure. */
   9230 extern void bcm_switch_ep_recirc_drop_event_control_t_init(
   9231     bcm_switch_ep_recirc_drop_event_control_t *drop_event_ctrl);
   9232 
   9233 #ifndef BCM_HIDE_DISPATCHABLE
   9234 
   9235 /* Set drop event based EP Recirculate control. */
   9236 extern int bcm_switch_ep_recirc_drop_event_control_set(
   9237     int unit, 
   9238     bcm_switch_ep_recirc_drop_event_control_t *drop_event_ctrl);
   9239 
   9240 /* Get drop event based EP Recirculate control. */
   9241 extern int bcm_switch_ep_recirc_drop_event_control_get(
   9242     int unit, 
   9243     bcm_switch_ep_recirc_drop_event_control_t *drop_event_ctrl);
   9244 
   9245 #endif /* BCM_HIDE_DISPATCHABLE */
   9246 
   9247 /* EP Recirculate trace event control structure. */
   9248 typedef struct bcm_switch_ep_recirc_trace_event_control_s {
   9249     int recirc_en;          /* Enable for trace event to trigger EP Recirculate
   9250                                based on the configs of this structure. */
   9251     int profile_id_mask;    /* This mask is used to calculate the EP Recirculate
   9252                                profile id for the trace events. Final profile id
   9253                                = ((ing_profile_id & profile_id_mask) |
   9254                                profile_id_offset). Where ing_profile_id is the
   9255                                original id derived from the ingress pipeline. */
   9256     int profile_id_offset;  /* This offset is used to calculate the EP
   9257                                Recirculate profile id for the trace events. See
   9258                                above for how the final profile id is calculated. */
   9259 } bcm_switch_ep_recirc_trace_event_control_t;
   9260 
   9261 /* Initialize an EP Recirculate trace event control structure. */
   9262 extern void bcm_switch_ep_recirc_trace_event_control_t_init(
   9263     bcm_switch_ep_recirc_trace_event_control_t *trace_event_ctrl);
   9264 
   9265 #ifndef BCM_HIDE_DISPATCHABLE
   9266 
   9267 /* Set trace event based EP Recirculate control. */
   9268 extern int bcm_switch_ep_recirc_trace_event_control_set(
   9269     int unit, 
   9270     bcm_switch_ep_recirc_trace_event_control_t *trace_event_ctrl);
   9271 
   9272 /* Get trace event based EP Recirculate control. */
   9273 extern int bcm_switch_ep_recirc_trace_event_control_get(
   9274     int unit, 
   9275     bcm_switch_ep_recirc_trace_event_control_t *trace_event_ctrl);
   9276 
   9277 /* Enable/disable a trace event to trigger EP Recirculate. */
   9278 extern int bcm_switch_ep_recirc_trace_event_enable_set(
   9279     int unit, 
   9280     bcm_pkt_trace_event_t trace_event, 
   9281     int enable);
   9282 
   9283 /* Get all enabled trace events for EP Recirculate. */
   9284 extern int bcm_switch_ep_recirc_trace_event_enable_get_all(
   9285     int unit, 
   9286     bcm_pkt_trace_event_t *trace_event_array, 
   9287     int *count);
   9288 
   9289 /* Get enabled status of a trace event for EP Recirculate. */
   9290 extern int bcm_switch_ep_recirc_trace_event_enable_get(
   9291     int unit, 
   9292     bcm_pkt_trace_event_t trace_event, 
   9293     int *enable);
   9294 
   9295 #endif /* BCM_HIDE_DISPATCHABLE */
   9296 
   9297 #define BCM_SWITCH_WIDE_DATA_EXTENSION_REPLACE 0x1        
   9298 
   9299 typedef struct bcm_switch_wide_data_extension_info_s {
   9300     uint32 wide_data_key; 
   9301     uint64 wide_data_result; 
   9302 } bcm_switch_wide_data_extension_info_t;
   9303 
   9304 #ifndef BCM_HIDE_DISPATCHABLE
   9305 
   9306 extern int bcm_switch_wide_data_extension_add(
   9307     int unit, 
   9308     uint32 flags, 
   9309     bcm_switch_wide_data_extension_info_t *info);
   9310 
   9311 extern int bcm_switch_wide_data_extension_get(
   9312     int unit, 
   9313     uint32 flags, 
   9314     bcm_switch_wide_data_extension_info_t *info);
   9315 
   9316 extern int bcm_switch_wide_data_extension_delete(
   9317     int unit, 
   9318     uint32 flags, 
   9319     bcm_switch_wide_data_extension_info_t *info);
   9320 
   9321 #endif /* BCM_HIDE_DISPATCHABLE */
   9322 
   9323 typedef int (*bcm_switch_wide_data_extension_traverse_cb)(
   9324     int unit, 
   9325     uint32 flags, 
   9326     bcm_switch_wide_data_extension_info_t *info, 
   9327     void *user_data);
   9328 
   9329 #ifndef BCM_HIDE_DISPATCHABLE
   9330 
   9331 extern int bcm_switch_wide_data_extension_traverse(
   9332     int unit, 
   9333     bcm_switch_wide_data_extension_traverse_cb cb, 
   9334     void *user_data);
   9335 
   9336 #endif /* BCM_HIDE_DISPATCHABLE */
   9337 
   9338 #endif /* __BCM_SWITCH_H__ */