-- *****************************************************************
-- CISCO-SWITCH-QOS-MIB
--   
-- September 2006, Edward Pham
--   
-- Copyright (c) 2006-2008 by cisco Systems Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-SWITCH-QOS-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    Counter64,
    Unsigned32
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    TruthValue,
    RowStatus
        FROM SNMPv2-TC
    ifIndex
        FROM IF-MIB
    entPhysicalIndex
        FROM ENTITY-MIB
    QosLayer2Cos,
    Percent
        FROM CISCO-QOS-PIB-MIB
    Dscp
        FROM DIFFSERV-DSCP-TC
    IfDirection
        FROM DIFFSERV-MIB
    QosIpPrecedence,
    QosQueueNumber,
    QosThresholdNumber,
    QosMplsExpValue,
    QosMutationMapName,
    QosMutationMapNameOrEmpty,
    QosPolicerType
        FROM CISCO-QOS-TC-MIB
    ciscoMgmt
        FROM CISCO-SMI;


ciscoSwitchQosMIB MODULE-IDENTITY
    LAST-UPDATED    "200703090000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal: 170 W Tasman Drive
            San Jose, CA 95134
            USA

            Tel: +1 800 553-NETS

            E-mail: cs-lan-switch-snmp@cisco.com"
    DESCRIPTION
        "This MIB module extends the CISCO-CLASS-BASED-QOS-MIB
        by defining configuration and statistics information
        specific to the quality of service (QoS) features of
        Layer2/3 switch functionality implemented in Cisco
        devices. It is applicable to a device which is fully
        within a single QoS domain, although one or more
        boundaries with other QoS domains can be immediately
        adjacent to this device.

        Configuration information available through this MIB
        includes:

        + Mappings between CoS, IP Precedence, MPLS-EXP value
          to DSCP value and vice versa for classification purpose.

        + Device level QoS configuration for DSCP rewrite,
          policing of ACL-redirected traffic, QoS port-queueing
          mode, statistics collection for policy that sets a 
          trust state. 

        + CoS, MPLS-EXP and DSCP mutation map name and mappings.
          These mutations can be configured so that they change
          the content of packets which cross QoS boundaries, either
          as they enter or leave this device. 

        + Interface QoS configuration such as default CoS value,
          trust state, packet assignment to queue and threshold
          based on CoS or DSCP value, drop algorithm and
          corresponding parameters, queue scheduling parameter
          such as WRR (Weighted Round Robin) weights, queue
          size allocation weight.

        Statistics available through this MIB includes:

        + Per module Multi-Layer Switching QoS statistics.

        + Per interface QoS queueing statistics.

        The following terms are used throughout this MIB:

        DSCP (Differentiated Services Code Point) is the six most
        significant bits of the ToS field in a IP packet header.

        DSCP Mutation: when a packet is being forwarded across an
        IP network, the previous hop(s) and the following hop(s)
        of a device may reside in a different QoS domain. A QoS
        domain refers to the set of QoS rules and conventions
        adopted by an administrative entity. For instance, a set
        of DSCP values may have a different meaning in different
        domains. DSCP mutation allows a DSCP set to be mutated or
        transformed in order to maintain semantic compatibility
        between adjacent domains. The mutation is done via mapping
        tables which maps the old DSCP value from one domain to a
        new DSCP value in the other domain. DSCP Mutation is applied 
        to egress traffic.

        IP precedence is the three most significant bits of the ToS
        field in a IP packet header.

        CoS (Class of Service) is the three bits in the layer 2
        header that indicates user priority value assigned to this
        packet.

        Trust state is a parameter configured at an interface to
        specify which QoS markings in packets arriving at that
        interface are acceptable as-is, rather than needing to be
        ignored/overwritten due to an 'untrusted' source or
        previous hop.

        MPLS-EXP:  MPLS experimental field in MPLS label."
    REVISION        "200703090000Z"
    DESCRIPTION
        "Add ciscoSwitchQosPolicerUsageGroup."
    REVISION        "200609180000Z"
    DESCRIPTION
        "Initial revision of this MIB module."
    ::= { ciscoMgmt 580 }


-- MIB object definitions

ciscoSwitchQosMIBNotifs  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIB 0 }

ciscoSwitchQosMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIB 1 }

ciscoSwitchQosMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIB 2 }

csqGlobals  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBObjects 1 }

csqMappings  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBObjects 2 }

csqMutations  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBObjects 3 }

csqInterface  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBObjects 4 }

csqStatistics  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBObjects 5 }

csqPolicerUsage  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBObjects 6 }


-- Global group

csqDscpRewriteEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether DSCP rewrite is enabled
        at a device-level of granularity, i.e., 'true' = enabled
        and 'false' = disabled.  If no other objects specify whether
        DSCP rewrite is enabled at any different level of granularity,
        then this object's value is not subject to any modifiers.
        However, some devices might support other object(s) which
        specify whether DSCP rewrite is enabled at different level(s)
        of granularity.  For such devices, the value of this object
        takes precedence over the values of such other object(s) when
        the value of this object is 'false'; in contrast, when the
        value of this object is 'true', the values of such other
        objects take precedence over the value of this object.

        if 'true', all outgoing packets will have their DSCP
        value rewritten based on the result of classification,
        policing or DSCP mutation configured in the device.

        if 'false', all outgoing packets will have their DSCP
        values unchanged from they arrived." 
    ::= { csqGlobals 1 }

csqPoliceRedirectedTrafficEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether ACL-redirected traffic
        policing is enabled at a device-level of granularity,
        i.e., 'true' = enabled and 'false' = disabled.  If no
        other objects specify whether ACL-redirected traffic
        is enabled at any different level of granularity,
        then this object's value is not subject to any modifiers.
        However, some devices might support other object(s) which
        specify whether ACL-redirected traffic policing is enabled
        at different level(s) of granularity. For such devices,
        the value of this object takes precedence over the values
        of such other object(s) when the value of this object is
        'false'; in contrast, when the value of this object is 'true',
        the values of such other objects take precedence over the
        value of this object.

        if 'true', ACL-redirected traffic is subject to policing.
        if 'false', ACL-redirected traffic is not policed." 
    ::= { csqGlobals 2 }

csqPortQueueingModeEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether port-queueing mode is enabled
        at a device-level of granularity, i.e., 'true' = enabled
        and 'false' = disabled.  If no other objects specify whether
        port-queueing mode is enabled at any different level of
        granularity, then this object's value is not subject to any
        modifiers.  However, some devices might support other object(s)
        which specify whether port-queueing mode is enabled at
        different level(s) of granularity.  For such devices, the
        value of this object takes precedence over the values of such
        other object(s) when the value of this object is 'false'; in
        contrast, when the value of this object is 'true', the values
        of such other objects take precedence over the value of this
        object.

        if 'true', port-queueing mode is enabled. In port-queueing
        mode, marking and policing is disabled. All queueing
        on receiving and transmitting is based on QoS tag in the
        incoming packet. For 802.1Q or ISL-encapsulated packets,
        queueing is based on the CoS value. Otherwise, queueing
        is based on the default interface CoS value denoted by
        csqIfDefaultCos object.

        if 'false', port-queueing mode is disabled." 
    ::= { csqGlobals 3 }

csqMarkingStatisticsEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies whether statistics collection for
        policy that sets a trust state is enabled at a device-level
        of granularity, i.e., 'true' = enabled and 'false' = disabled.
        If no other objects specify whether statistics collection for
        policy that sets a trust state is enabled at any different
        level of granularity, then this object's value is not subject
        to any modifiers. However, some devices might support other
        object(s) which specify whether statistics collection for
        policy that sets a trust state is enabled at different
        level(s) of granularity.  For such devices, the value of this
        object takes precedence over the values of such other object(s)
        when the value of this object is 'false'; in contrast, when the
        value of this object is 'true', the values of such other
        objects take precedence over the value of this object.

        if 'true', statistics collection is enabled. 
        if 'false', statistics collection is disabled." 
    ::= { csqGlobals 4 }
-- The csqCosToDscpTable

csqCosToDscpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqCosToDscpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains the mapping of CoS values to DSCP values.
        This mapping table consist of eight CoS values (0 through 7) and
        their corresponding DSCP values. The mapping given by this table
        is used for all packets received on an interface if and only if
        that interface has a trust state, as given by the value of
        csqIfTrustState for the interface, of 'trustCoS'."
    ::= { csqMappings 1 }

csqCosToDscpEntry OBJECT-TYPE
    SYNTAX          CsqCosToDscpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from a CoS value to a DSCP
        value."
    INDEX           { csqCosToDscpCos } 
    ::= { csqCosToDscpTable 1 }

CsqCosToDscpEntry ::= SEQUENCE {
        csqCosToDscpCos  QosLayer2Cos,
        csqCosToDscpDscp Dscp
}

csqCosToDscpCos OBJECT-TYPE
    SYNTAX          QosLayer2Cos
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The CoS value being mapped to the DSCP value." 
    ::= { csqCosToDscpEntry 1 }

csqCosToDscpDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The DSCP value which the CoS value maps to." 
    ::= { csqCosToDscpEntry 2 }
 

-- CsqIpPrecToDscpTable

csqIpPrecToDscpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIpPrecToDscpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains the mapping of IP Precedence to DSCP.
        This mapping table consist of eight IpPrecedence values
        (0 through 7) and their corresponding DSCP values. The
        mapping given by this table is used for all packets received
        on an interface if and only if that interface has a trust state,
        as given by the value of csqIfTrustState for the interface,
        of 'trustIpPrec'."
    ::= { csqMappings 2 }

csqIpPrecToDscpEntry OBJECT-TYPE
    SYNTAX          CsqIpPrecToDscpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from an IP Precedence value to
        a DSCP value."
    INDEX           { csqIpPrecToDscpIpPrec } 
    ::= { csqIpPrecToDscpTable 1 }

CsqIpPrecToDscpEntry ::= SEQUENCE {
        csqIpPrecToDscpIpPrec QosIpPrecedence,
        csqIpPrecToDscpDscp   Dscp
}

csqIpPrecToDscpIpPrec OBJECT-TYPE
    SYNTAX          QosIpPrecedence
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The IP Precedence value being mapped to the DSCP value." 
    ::= { csqIpPrecToDscpEntry 1 }

csqIpPrecToDscpDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The DSCP value which the IP Precedence value maps to." 
    ::= { csqIpPrecToDscpEntry 2 }
 

-- The csqExpToDscpTable

csqExpToDscpTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqExpToDscpEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains the mapping of MPLS-EXP values to DSCP
        values.  This mapping table consist of eight MPLS-EXP values
        (0 through 7) and their corresponding DSCP values."
    ::= { csqMappings 3 }

csqExpToDscpEntry OBJECT-TYPE
    SYNTAX          CsqExpToDscpEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from a EXP value to a DSCP
        value."
    INDEX           { csqExpToDscpExp } 
    ::= { csqExpToDscpTable 1 }

CsqExpToDscpEntry ::= SEQUENCE {
        csqExpToDscpExp  QosMplsExpValue,
        csqExpToDscpDscp Dscp
}

csqExpToDscpExp OBJECT-TYPE
    SYNTAX          QosMplsExpValue
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The EXP value being mapped to the DSCP value." 
    ::= { csqExpToDscpEntry 1 }

csqExpToDscpDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The DSCP value which the EXP value maps to." 
    ::= { csqExpToDscpEntry 2 }
 

-- csqDscpMappingTable

csqDscpMappingTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqDscpMappingEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table always has 64 entries, one for each DSCP value. The
        table contains four mappings from the DSCP value assigned to
        a packet. One mapping is to the egress CoS to be stored in the
        layer-2 frame headers for output on 802.1Q or ISL interfaces.
        Another mapping is to the EXP value to be stored in MPLS label.
        The other two mappings are to the remarked (or 'marked down')
        DSCP values which are used when a policer requires that 
        a packet's DSCP value to be modified. Of these two mappings,
        one is for a normal burst, and the other is for maximum burst."
    ::= { csqMappings 4 }

csqDscpMappingEntry OBJECT-TYPE
    SYNTAX          CsqDscpMappingEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from DSCP value to CoS value,
        MPLS-EXP value and policed DSCP."
    INDEX           { csqDscpMappingDscp } 
    ::= { csqDscpMappingTable 1 }

CsqDscpMappingEntry ::= SEQUENCE {
        csqDscpMappingDscp            Dscp,
        csqDscpMappingCos             QosLayer2Cos,
        csqDscpMappingExp             QosMplsExpValue,
        csqDscpMappingNormalBurstDscp Dscp,
        csqDscpMappingMaxBurstDscp    Dscp
}

csqDscpMappingDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The DSCP value being mapped to the CoS, EXP and
        policed DSCP value." 
    ::= { csqDscpMappingEntry 1 }

csqDscpMappingCos OBJECT-TYPE
    SYNTAX          QosLayer2Cos
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The CoS value which the DSCP values maps to." 
    ::= { csqDscpMappingEntry 2 }

csqDscpMappingExp OBJECT-TYPE
    SYNTAX          QosMplsExpValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The MPLS-EXP value which the DSCP values maps to." 
    ::= { csqDscpMappingEntry 3 }

csqDscpMappingNormalBurstDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The normal burst policed DSCP value which the DSCP values maps
        to." 
    ::= { csqDscpMappingEntry 4 }

csqDscpMappingMaxBurstDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The maximum burst policed DSCP value which the DSCP values maps
        to." 
    ::= { csqDscpMappingEntry 5 }
 


-- csqMutations group

csqMaxCosMutationMap OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of CoS mutation map that can be supported
        in the device." 
    ::= { csqMutations 1 }

csqCosMutationTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqCosMutationEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table indicates CoS mutation maps in the
        device."
    ::= { csqMutations 2 }

csqCosMutationEntry OBJECT-TYPE
    SYNTAX          CsqCosMutationEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the status of this instance. A row
        instance can be created or removed by setting
        the appropriate value of its RowStatus object. Once
        the number of entries in this table reaches the
        maximum number of CoS mutation map supported in
        the device denoted by csqMaxCosMutationMap object, user
        must delete an existing entry in this table in order to
        create a new entry."
    INDEX           { IMPLIED csqCosMutationMapName } 
    ::= { csqCosMutationTable 1 }

CsqCosMutationEntry ::= SEQUENCE {
        csqCosMutationMapName   QosMutationMapName,
        csqCosMutationRowStatus RowStatus
}

csqCosMutationMapName OBJECT-TYPE
    SYNTAX          QosMutationMapName
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The name of the CoS mutation map." 
    ::= { csqCosMutationEntry 1 }

csqCosMutationRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is used to manage the creation and deletion
        of rows in this table." 
    ::= { csqCosMutationEntry 2 }
 

-- The csqCosMutationMappingTable

csqCosMutationMappingTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqCosMutationMappingEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides management information for CoS
        mutation mapping. CoS mutation is applied to ingress
        traffic. This mutation occurs before the CoS to
        DSCP mapping for applicable traffic as specified in
        csqCosToDscpTable."
    ::= { csqMutations 3 }

csqCosMutationMappingEntry OBJECT-TYPE
    SYNTAX          CsqCosMutationMappingEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from a CoS value to another CoS
        value. When the entry for csqCosMutationMapName in the
        csqCosMutationTable is created, corresponding entries in this
        table are initialized with a default mapping which is the
        identity function. When the entry for csqCosMutationMapName
        in the csqCosMutationTable is removed, corresponding entries
        in this table will also be deleted."
    INDEX           {
                        csqCosMutationMapName,
                        csqCosMutationFromCos
                    } 
    ::= { csqCosMutationMappingTable 1 }

CsqCosMutationMappingEntry ::= SEQUENCE {
        csqCosMutationFromCos QosLayer2Cos,
        csqCosMutationToCos   QosLayer2Cos
}

csqCosMutationFromCos OBJECT-TYPE
    SYNTAX          QosLayer2Cos
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The input CoS value being mapped to the output CoS value in
        this mutation map." 
    ::= { csqCosMutationMappingEntry 1 }

csqCosMutationToCos OBJECT-TYPE
    SYNTAX          QosLayer2Cos
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The output CoS value which the input CoS value maps to." 
    ::= { csqCosMutationMappingEntry 2 }
 


csqMaxDscpMutationMap OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of DSCP mutation map that can be supported
        in the device." 
    ::= { csqMutations 4 }
-- csqDscpMutationTable

csqDscpMutationTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqDscpMutationEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table indicates DSCP mutation maps in the
        device."
    ::= { csqMutations 5 }

csqDscpMutationEntry OBJECT-TYPE
    SYNTAX          CsqDscpMutationEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the status of this instance. A row
        instance can be created or removed by setting
        the appropriate value of its RowStatus object. Once
        the number of entries in this table reaches the
        maximum number of DSCP mutation map supported in
        the device denoted by csqMaxDscpMutationMap
        object, user must delete an existing entry in this table
        in order to create a new entry."
    INDEX           { IMPLIED csqDscpMutationMapName } 
    ::= { csqDscpMutationTable 1 }

CsqDscpMutationEntry ::= SEQUENCE {
        csqDscpMutationMapName   QosMutationMapName,
        csqDscpMutationRowStatus RowStatus
}

csqDscpMutationMapName OBJECT-TYPE
    SYNTAX          QosMutationMapName
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The name of the DSCP mutation map." 
    ::= { csqDscpMutationEntry 1 }

csqDscpMutationRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is used to manage the creation and deletion
        of rows in this table." 
    ::= { csqDscpMutationEntry 2 }
 

-- The csqDscpMutationMappingTable

csqDscpMutationMappingTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqDscpMutationMappingEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides management information for DSCP
        mutation mapping. DSCP mutation is applied to egress
        traffic. This mutation occurs after the mappings
        specified in csqDscpMappingTable."
    ::= { csqMutations 6 }

csqDscpMutationMappingEntry OBJECT-TYPE
    SYNTAX          CsqDscpMutationMappingEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from an input DSCP value to
        an output DSCP value. When the entry for csqDscpMutationMapName
        in the csqDscpMutationTable is created, corresponding entries
        in this table are initialized with a default mapping which is
        the identity function. When the entry for
        csqDscpMutationMapName in the csqDscpMutationTable is removed,
        corresponding entries in this table will also be deleted."
    INDEX           {
                        csqDscpMutationMapName,
                        csqDscpMutationFromDscp
                    } 
    ::= { csqDscpMutationMappingTable 1 }

CsqDscpMutationMappingEntry ::= SEQUENCE {
        csqDscpMutationFromDscp Dscp,
        csqDscpMutationToDscp   Dscp
}

csqDscpMutationFromDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The input DSCP value being mapped to the output DSCP value in
        this mutation map." 
    ::= { csqDscpMutationMappingEntry 1 }

csqDscpMutationToDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The output DSCP value which the input DSCP value maps to." 
    ::= { csqDscpMutationMappingEntry 2 }
 


csqMaxExpMutationMap OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The maximum number of EXP mutation can be supported
        in the device." 
    ::= { csqMutations 7 }
-- csqExpMutationTable

csqExpMutationTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqExpMutationEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table indicates EXP mutation maps in the
        device."
    ::= { csqMutations 8 }

csqExpMutationEntry OBJECT-TYPE
    SYNTAX          CsqExpMutationEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the status of this instance. A row
        instance can be created or removed by setting
        the appropriate value of its RowStatus object. Once
        the number of entries in this table reaches the
        maximum number of EXP mutation map supported in
        the device denoted by csqMaxExpMutationMap object, user
        must delete an existing entry in this table in order to
        create a new entry."
    INDEX           { IMPLIED csqExpMutationMapName } 
    ::= { csqExpMutationTable 1 }

CsqExpMutationEntry ::= SEQUENCE {
        csqExpMutationMapName   QosMutationMapName,
        csqExpMutationRowStatus RowStatus
}

csqExpMutationMapName OBJECT-TYPE
    SYNTAX          QosMutationMapName
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The name of the EXP mutation map." 
    ::= { csqExpMutationEntry 1 }

csqExpMutationRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is used to manage the creation and deletion
        of rows in this table." 
    ::= { csqExpMutationEntry 2 }
 

-- The csqExpMutationMappingTable

csqExpMutationMappingTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqExpMutationMappingEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides management information for EXP
        mutation mapping. EXP mutation is applied to egress
        traffic. This mutation occurs after the mapping
        specified in csqExpToDscpTable."
    ::= { csqMutations 9 }

csqExpMutationMappingEntry OBJECT-TYPE
    SYNTAX          CsqExpMutationMappingEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row contains the mapping from input EXP to output EXP
        value. When the entry for csqExpMutationMapName in the
        csqExpMutationTable is created, corresponding entries in this
        table are initialized with a default mapping which is the
        identity function. When the entry for csqExpMutationMapName
        in the csqExpMutationTable is removed, corresponding entries
        in this table will also be deleted."
    INDEX           {
                        csqExpMutationMapName,
                        csqExpMutationFromExp
                    } 
    ::= { csqExpMutationMappingTable 1 }

CsqExpMutationMappingEntry ::= SEQUENCE {
        csqExpMutationFromExp QosMplsExpValue,
        csqExpMutationToExp   QosMplsExpValue
}

csqExpMutationFromExp OBJECT-TYPE
    SYNTAX          QosMplsExpValue
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The input EXP value being mapped to the output EXP value in
        this mutation map." 
    ::= { csqExpMutationMappingEntry 1 }

csqExpMutationToExp OBJECT-TYPE
    SYNTAX          QosMplsExpValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The output EXP value which the input EXP value maps to." 
    ::= { csqExpMutationMappingEntry 2 }
 

-- csqIfMutationConfigTable

csqIfMutationConfigTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfMutationConfigEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing the mutation configuration for
        mutation capable interface in the device. If a
        mutation capable interface does not have a row
        in this table, there is no mutation performed
        at such interface."
    ::= { csqMutations 10 }

csqIfMutationConfigEntry OBJECT-TYPE
    SYNTAX          CsqIfMutationConfigEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A row instance contains the name of CoS, DSCP and EXP
        mutation map and RowStatus object."
    INDEX           { ifIndex } 
    ::= { csqIfMutationConfigTable 1 }

CsqIfMutationConfigEntry ::= SEQUENCE {
        csqIfCosMutationMap    QosMutationMapNameOrEmpty,
        csqIfDscpMutationMap   QosMutationMapNameOrEmpty,
        csqIfExpMutationMap    QosMutationMapNameOrEmpty,
        csqIfMutationRowStatus RowStatus
}

csqIfCosMutationMap OBJECT-TYPE
    SYNTAX          QosMutationMapNameOrEmpty
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the name of CoS mutation map
        applied at this interface. If CoS mutation is not performed
        at the interface, then the value of this object is the
        zero-length string; otherwise, the value of this object must
        be the name of a row in the csqCosMutationTable.  If a row
        in the csqCosMutationTable is deleted, all instances of this
        object which referenced the deleted row get changed to the
        zero-length string." 
    ::= { csqIfMutationConfigEntry 1 }

csqIfDscpMutationMap OBJECT-TYPE
    SYNTAX          QosMutationMapNameOrEmpty
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the name of DSCP mutation map
        applied at this interface. If DSCP mutation is not performed
        at the interface, then the value of this object is the
        zero-length string; otherwise, the value of this object must
        be the name of a row in the csqDscpMutationTable.  If a row
        in the csqDscpMutationTable is deleted, all instances of this
        object which referenced the deleted row get changed to the
        zero-length string." 
    ::= { csqIfMutationConfigEntry 2 }

csqIfExpMutationMap OBJECT-TYPE
    SYNTAX          QosMutationMapNameOrEmpty
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies the name of EXP mutation map
        applied at this interface. If EXP mutation is not performed
        at the interface, then the value of this object is the
        zero-length string; otherwise, the value of this object must
        be the name of a row in the csqExpMutationTable.  If a row
        in the csqExpMutationTable is deleted, all instances of this
        object which referenced the deleted row get changed to the
        zero-length string." 
    ::= { csqIfMutationConfigEntry 3 }

csqIfMutationRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object is used to manage the creation, and deletion
        of rows in the table." 
    ::= { csqIfMutationConfigEntry 4 }
 

-- csqIfConfigTable

csqIfConfigTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfConfigEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides QoS configuration for QoS manageable
        interface in the device."
    ::= { csqInterface 1 }

csqIfConfigEntry OBJECT-TYPE
    SYNTAX          CsqIfConfigEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A row instance contains the default CoS value and trust
        state of a Qos manageable interface."
    INDEX           { ifIndex } 
    ::= { csqIfConfigTable 1 }

CsqIfConfigEntry ::= SEQUENCE {
        csqIfDefaultCos QosLayer2Cos,
        csqIfTrustState INTEGER
}

csqIfDefaultCos OBJECT-TYPE
    SYNTAX          QosLayer2Cos
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the default CoS value configured
        at this physical interface. This default value will be
        assigned to packet which does not have a CoS value in
        its layer-2 header when the packet arrives at this
        interface or if the value of csqIfTrustState object
        for this physical interface is 'untrusted'." 
    ::= { csqIfConfigEntry 1 }

csqIfTrustState OBJECT-TYPE
    SYNTAX          INTEGER  {
                        untrusted(1),
                        trustCoS(2),
                        trustIpPrec(3),
                        trustDscp(4)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object is used to set the trust state of an interface.
        (whether the packets arriving at an interface are trusted to
        carry the correct data for classification.)

        If the object is untrusted(1), then the DSCP assigned to the
        packet is the layer2 CoS value denoted by csqIfDefaultCos
        object mapped to a DSCP by the CoS-to-DSCP mapping defined in
        object csqCosToDscpDscp.

        If this object is trustCoS(2), then the DSCP assigned
        to the packet is the layer2 CoS of the packet mapped to a
        DSCP by the CoS-to-DSCP mapping defined in object
        csqCosToDscpDscp.

        When this object is trustIpPrec(3), a DSCP is assigned to
        an IP packet according to the IP-Precedence-to-DSCP mapping
        defined by the values contained in csqIpPrecToDscpTable. For
        non-IP packets, trustIpPrec(3) has identical behavior as
        trustCoS(2).

        When this object is trustDscp(4), the DSCP contained in an IP
        packet is trusted as being the correct value to assign to it.
        For non-IP packets, trustDscp(4) has identical behavior as
        trustCoS(2)." 
    ::= { csqIfConfigEntry 2 }
 

-- Cos to Queue assignment table

csqIfCosToQueueTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfCosToQueueEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides the information for and configuration of
        assigning packets to queues and thresholds based on their CoS
        value."
    ::= { csqInterface 2 }

csqIfCosToQueueEntry OBJECT-TYPE
    SYNTAX          CsqIfCosToQueueEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The assignment of packets at an interface to a pair of queue
        and threshold based on their CoS value and traffic direction."
    INDEX           {
                        ifIndex,
                        csqIfCosToQueueDirection,
                        csqIfCosToQueueCos
                    } 
    ::= { csqIfCosToQueueTable 1 }

CsqIfCosToQueueEntry ::= SEQUENCE {
        csqIfCosToQueueDirection       IfDirection,
        csqIfCosToQueueCos             QosLayer2Cos,
        csqIfCosToQueueQueueNumber     QosQueueNumber,
        csqIfCosToQueueThresholdNumber QosThresholdNumber
}

csqIfCosToQueueDirection OBJECT-TYPE
    SYNTAX          IfDirection
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The traffic direction of a packet." 
    ::= { csqIfCosToQueueEntry 1 }

csqIfCosToQueueCos OBJECT-TYPE
    SYNTAX          QosLayer2Cos
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The CoS value of the packet which the queue and threshold
        assignment is based on." 
    ::= { csqIfCosToQueueEntry 2 }

csqIfCosToQueueQueueNumber OBJECT-TYPE
    SYNTAX          QosQueueNumber
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The queue number where packet whose CoS value denoted by
        csqIfCosToQueueCos will be assigned to." 
    ::= { csqIfCosToQueueEntry 3 }

csqIfCosToQueueThresholdNumber OBJECT-TYPE
    SYNTAX          QosThresholdNumber
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The threshold number where packet whose CoS value denoted
        by csqIfCosToQueueCos will be assigned to." 
    ::= { csqIfCosToQueueEntry 4 }
 

-- DSCP to Queue assignment table

csqIfDscpToQueueTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfDscpToQueueEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table provides the information for and configuration of
        assigning packets to queues and thresholds based on their DSCP
        value and traffic direction."
    ::= { csqInterface 3 }

csqIfDscpToQueueEntry OBJECT-TYPE
    SYNTAX          CsqIfDscpToQueueEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The assignment of packets at an interface to a pair of queue
        and threshold based on their DSCP value and packets traffic
        direction."
    INDEX           {
                        ifIndex,
                        csqIfDscpToQueueDirection,
                        csqIfDscpToQueueDscp
                    } 
    ::= { csqIfDscpToQueueTable 1 }

CsqIfDscpToQueueEntry ::= SEQUENCE {
        csqIfDscpToQueueDirection       IfDirection,
        csqIfDscpToQueueDscp            Dscp,
        csqIfDscpToQueueQueueNumber     QosQueueNumber,
        csqIfDscpToQueueThresholdNumber QosThresholdNumber
}

csqIfDscpToQueueDirection OBJECT-TYPE
    SYNTAX          IfDirection
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The traffic direction of a packet." 
    ::= { csqIfDscpToQueueEntry 1 }

csqIfDscpToQueueDscp OBJECT-TYPE
    SYNTAX          Dscp
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "The DSCP value of the packet which the queue and threshold
        assignment is based on." 
    ::= { csqIfDscpToQueueEntry 2 }

csqIfDscpToQueueQueueNumber OBJECT-TYPE
    SYNTAX          QosQueueNumber
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The queue number where packet whose DSCP value denoted by
        csqIfDscpToQueueDscp will be assigned to." 
    ::= { csqIfDscpToQueueEntry 3 }

csqIfDscpToQueueThresholdNumber OBJECT-TYPE
    SYNTAX          QosThresholdNumber
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "The threshold number where packet whose DSCP value denoted by
        csqIfDscpToQueueDscp will be assigned to." 
    ::= { csqIfDscpToQueueEntry 4 }
 

-- The Interface Drop Table

csqIfDropConfigTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfDropConfigEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table maintains threshold parameters for the specified
        queue number and threshold number of an interface."
    ::= { csqInterface 4 }

csqIfDropConfigEntry OBJECT-TYPE
    SYNTAX          CsqIfDropConfigEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "For each threshold of a queue, there are parameters to set on
        the threshold. This entry contains the parameters."
    INDEX           {
                        ifIndex,
                        csqIfDropConfigDirection,
                        csqIfDropConfigQueueIndex,
                        csqIfDropConfigThresholdIndex
                    } 
    ::= { csqIfDropConfigTable 1 }

CsqIfDropConfigEntry ::= SEQUENCE {
        csqIfDropConfigDirection        IfDirection,
        csqIfDropConfigQueueIndex       QosQueueNumber,
        csqIfDropConfigThresholdIndex   QosThresholdNumber,
        csqIfDropConfigDropAlgorithm    INTEGER,
        csqIfDropConfigDropThreshold    Percent,
        csqIfDropConfigMinWredThreshold Percent,
        csqIfDropConfigMaxWredThreshold Percent
}

csqIfDropConfigDirection OBJECT-TYPE
    SYNTAX          IfDirection
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates the queue direction." 
    ::= { csqIfDropConfigEntry 1 }

csqIfDropConfigQueueIndex OBJECT-TYPE
    SYNTAX          QosQueueNumber
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates queue number." 
    ::= { csqIfDropConfigEntry 2 }

csqIfDropConfigThresholdIndex OBJECT-TYPE
    SYNTAX          QosThresholdNumber
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates threshold number." 
    ::= { csqIfDropConfigEntry 3 }

csqIfDropConfigDropAlgorithm OBJECT-TYPE
    SYNTAX          INTEGER  {
                        tailDrop(1),
                        wred(2)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Specifies the drop algorithm running at this queue and
        threshold.

        'tailDrop' indicates that this queue and threshold drops
        packet using tail-drop algorithm. This value is configurable 
        only if 'tailDrop' bit in the value of qosIfCapabilities object
        for the same ifIndex and traffic direction is set. 

        'wred' indicates that WRED algorithm is used. This value is
        configurable only if 'wred' bit in the value of 
        qosIfCapabilities object for the same ifIndex and traffic
        direction is set." 
    ::= { csqIfDropConfigEntry 4 }

csqIfDropConfigDropThreshold OBJECT-TYPE
    SYNTAX          Percent (1..100)
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the drop threshold parameter for a
        pair of queue and threshold of an interface when the
        drop algorithm is tail drop. Once the packets in the buffer is
        more than the value of this object, the incoming packets of the
        buffer are dropped. The value is a percentage of the full
        buffer.

        This object is configurable only if 'tailDrop' bit in 
        the value of qosIfCapabilities for the same ifIndex and traffic
        direction is set. If value of csqIfDropConfigAlgorithm is not
        'tailDrop', this object value is ignored." 
    ::= { csqIfDropConfigEntry 5 }

csqIfDropConfigMinWredThreshold OBJECT-TYPE
    SYNTAX          Percent
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the min WRED threshold parameter of a
        threshold number for the specific interface when WRED drop
        algorithm is used.

        WRED (Weighted Random Early Detect) is a mechanism which drops
        packets fairly during congestion so that adaptive applications
        can react to congestion. This object specifies a percentage of
        the buffer size.

        This object is configurable only if 'wred' bit in the value
        of qosIfCapabilities object for the same ifIndex and traffic
        direction is set. If value of csqIfDropConfigAlgorithm is not
        'wred', this object value is ignored." 
    ::= { csqIfDropConfigEntry 6 }

csqIfDropConfigMaxWredThreshold OBJECT-TYPE
    SYNTAX          Percent (1..100)
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object specifies the max WRED threshold parameter of a
        threshold number for the specific interface when WRED drop
        algorithm is used.

        This object is configurable only if 'wred' bit in the value
        of qosIfCapabilities object for the same ifIndex and traffic
        direction is set. If value of csqIfDropConfigAlgorithm is not
        'wred', this object value is ignored." 
    ::= { csqIfDropConfigEntry 7 }
 

-- The Queue Table

csqIfQueueTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfQueueEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing configuration parameter for each queue on
        a QOS managable interface."
    ::= { csqInterface 5 }

csqIfQueueEntry OBJECT-TYPE
    SYNTAX          CsqIfQueueEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A set of WRR weight and queue size allocation weight for
        ingress or egress of a specific queue."
    INDEX           {
                        ifIndex,
                        csqIfQueueDirection,
                        csqIfQueueNumber
                    } 
    ::= { csqIfQueueTable 1 }

CsqIfQueueEntry ::= SEQUENCE {
        csqIfQueueDirection        IfDirection,
        csqIfQueueNumber           QosQueueNumber,
        csqIfQueueWrrWeight        Unsigned32,
        csqIfQueueSizeWeight       Unsigned32,
        csqIfQueueStatsGranularity INTEGER
}

csqIfQueueDirection OBJECT-TYPE
    SYNTAX          IfDirection
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates the queue direction." 
    ::= { csqIfQueueEntry 1 }

csqIfQueueNumber OBJECT-TYPE
    SYNTAX          QosQueueNumber
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates queue number." 
    ::= { csqIfQueueEntry 2 }

csqIfQueueWrrWeight OBJECT-TYPE
    SYNTAX          Unsigned32 (1..255)
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Specifies the WRR weight." 
    ::= { csqIfQueueEntry 3 }

csqIfQueueSizeWeight OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Specifies the queue size weight." 
    ::= { csqIfQueueEntry 4 }

csqIfQueueStatsGranularity OBJECT-TYPE
    SYNTAX          INTEGER  {
                        perQueue(1),
                        perQueueThresh(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "Indicates whether QoS statistics is maintained per queue or
        per queue per threshold.

        'perQueue' indicates that QoS statistics is maintained per
        queue.

        'perQueueThresh' indicates that QoS statistics is maintained
        per queue per threshold." 
    ::= { csqIfQueueEntry 5 }
 

-- The Interface Mode Config Table

csqIfModeConfigTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfModeConfigEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table used to configure the QoS mode for layer-2
        interface."
    ::= { csqInterface 6 }

csqIfModeConfigEntry OBJECT-TYPE
    SYNTAX          CsqIfModeConfigEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing QoS mode information of layer-2
        interface."
    INDEX           { ifIndex } 
    ::= { csqIfModeConfigTable 1 }

CsqIfModeConfigEntry ::= SEQUENCE {
        csqIfVlanBasedQosModeEnable TruthValue
}

csqIfVlanBasedQosModeEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Specifies if VLAN-based mode is enabled or disabled at
        the specified interface.

        If 'true', policy map that is attached to this interface
        is ignored, and QoS is driven by the policy map that is
        attached to the corresponding VLAN interface that this
        interface belongs to. Otherwise, the value of this object
        is 'false'." 
    ::= { csqIfModeConfigEntry 1 }
 

-- The Interface Consistency Check Table

csqIfConsistencyCheckTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfConsistencyCheckEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table used to configure the QoS-port attribute consistency
        check for Port Channel interface identified by ifIndex.
        QoS-port attribute consistency check consists of but not
        limited to checking for members of a Port Channel interface
        having the same queue type."
    ::= { csqInterface 7 }

csqIfConsistencyCheckEntry OBJECT-TYPE
    SYNTAX          CsqIfConsistencyCheckEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry containing QoS-port attribute consistency check
        information of Port Channel interface."
    INDEX           { ifIndex } 
    ::= { csqIfConsistencyCheckTable 1 }

CsqIfConsistencyCheckEntry ::= SEQUENCE {
        csqIfConsistencyCheckEnable TruthValue
}

csqIfConsistencyCheckEnable OBJECT-TYPE
    SYNTAX          TruthValue
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "Specifies if QoS-port attribute consitency check is enabled
        or disabled at the specified channel interface.

        If 'true', QoS-port attribute consistency check is enabled. 
        If 'false', QoS-port attribute consistency check is disabled." 
    ::= { csqIfConsistencyCheckEntry 1 }
 

-- The Interface Statistics Table

csqIfStatsTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqIfStatsEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table containing QoS statistics counters per QoS manageable
        interface."
    ::= { csqStatistics 1 }

csqIfStatsEntry OBJECT-TYPE
    SYNTAX          CsqIfStatsEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry contains statistics, such as a drop packet
        counter, which are per interface (ifIndex), per  
        direction, per queue and per threshold."
    INDEX           {
                        ifIndex,
                        csqIfStatsDirection,
                        csqIfStatsQueueNumber,
                        csqIfStatsThresholdNumber
                    } 
    ::= { csqIfStatsTable 1 }

CsqIfStatsEntry ::= SEQUENCE {
        csqIfStatsDirection       IfDirection,
        csqIfStatsQueueNumber     QosQueueNumber,
        csqIfStatsThresholdNumber QosThresholdNumber,
        csqIfStatsDropPkts        Counter64
}

csqIfStatsDirection OBJECT-TYPE
    SYNTAX          IfDirection
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates traffic direction of an interface." 
    ::= { csqIfStatsEntry 1 }

csqIfStatsQueueNumber OBJECT-TYPE
    SYNTAX          QosQueueNumber
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates the queue number of the interface for which
        statistics are collected. For example : if the interface 
        has a queue type of oneP2Q2t, this index value can
        be 1, 2, 3." 
    ::= { csqIfStatsEntry 2 }

csqIfStatsThresholdNumber OBJECT-TYPE
    SYNTAX          QosThresholdNumber
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Indicates the threshold number of a queue on the interface for
        which statistics are collected. For example : if the interface 
        has a queue type of oneP2Q2t, this index value can be 1, 2. If
        the value of the corresponding csqIfQueueStatsGranularity for
        the queue that this csqIfStatsThresholdNumber belongs to is 
        'perQueue', this csqIfStatsThresholdNumber index value is
        always 1." 
    ::= { csqIfStatsEntry 3 }

csqIfStatsDropPkts OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of packets that have been received then dropped
        from the interface because they exceeded the threshold value
        configured at this queue and threshold of this interface." 
    ::= { csqIfStatsEntry 4 }
 

-- The Module Statistics Table

csqModuleStatsTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqModuleStatsEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A table decribes QoS statistics counters per module that
        is capable of providing this information. Such module is
        identified by the entPhysicalIndex in ENTITY-MIB."
    ::= { csqStatistics 2 }

csqModuleStatsEntry OBJECT-TYPE
    SYNTAX          CsqModuleStatsEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "An entry contains per-module (entPhysicalIndex) statistics such
        as the number of dropped packets due to policing, number of IP
        packets with their ToS and CoS value changed, number of non IP
        packets with their CoS value changed, and number of MPLS
        packets with their EXP value changed."
    INDEX           { entPhysicalIndex } 
    ::= { csqModuleStatsTable 1 }

CsqModuleStatsEntry ::= SEQUENCE {
        csqModuleDropByPolicingPackets  Counter64,
        csqModuleTosChangedIpPackets    Counter64,
        csqModuleCosChangedIpPackets    Counter64,
        csqModuleCosChangedNonIpPackets Counter64,
        csqModuleExpChangedMplsPackets  Counter64
}

csqModuleDropByPolicingPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of packets that have been dropped due to policing." 
    ::= { csqModuleStatsEntry 1 }

csqModuleTosChangedIpPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of IP packets that have the ToS value changed due
        to policing." 
    ::= { csqModuleStatsEntry 2 }

csqModuleCosChangedIpPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of IP packets that have the CoS value changed due
        to policing." 
    ::= { csqModuleStatsEntry 3 }

csqModuleCosChangedNonIpPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of non IP packets that have the CoS value changed
        due to policing." 
    ::= { csqModuleStatsEntry 4 }

csqModuleExpChangedMplsPackets OBJECT-TYPE
    SYNTAX          Counter64
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "The number of MPLS packets have the EXP value change
        due to policing." 
    ::= { csqModuleStatsEntry 5 }
 

-- csqPolicerUsage group
--   

--   
-- The csqPolicerUsageTable

csqPolicerUsageTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CsqPolicerUsageEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table contains the usage of QoS policers in the device."
    ::= { csqPolicerUsage 1 }

csqPolicerUsageEntry OBJECT-TYPE
    SYNTAX          CsqPolicerUsageEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "Each row describes the QoS policer usage information for every
        module, denoted by its entPhysicalIndex in ENTITY-MIB, which
        is capable of providing this information."
    INDEX           {
                        entPhysicalIndex,
                        csqPolicerType
                    } 
    ::= { csqPolicerUsageTable 1 }

CsqPolicerUsageEntry ::= SEQUENCE {
        csqPolicerType  QosPolicerType,
        csqPolicerUsed  Unsigned32,
        csqPolicerTotal Unsigned32
}

csqPolicerType OBJECT-TYPE
    SYNTAX          QosPolicerType
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object indicates the QoS policer type." 
    ::= { csqPolicerUsageEntry 1 }

csqPolicerUsed OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the number of QoS policer is currently
        in use." 
    ::= { csqPolicerUsageEntry 2 }

csqPolicerTotal OBJECT-TYPE
    SYNTAX          Unsigned32
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object indicates the total number of QoS policers
        that is supported." 
    ::= { csqPolicerUsageEntry 3 }
 

-- Conformance

ciscoSwitchQosMIBCompliances  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBConformance 1 }

ciscoSwitchQosMIBGroups  OBJECT IDENTIFIER
    ::= { ciscoSwitchQosMIBConformance 2 }


ciscoSwitchQosMIBCompliance MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for the CISCO-SWITCH-QOS-MIB.
        This compliance is superceded by 
        ciscoSwitchQosMIBComplianceRev2."
    MODULE          -- this module
    MANDATORY-GROUPS { ciscoSwitchQosIfConfigGroup }

    GROUP           ciscoSwitchQosIfStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support port statictics."

    GROUP           ciscoSwitchQosModuleStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support module statistics."

    GROUP           ciscoSwitchQosPortQueueingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support port queueing mode."

    GROUP           ciscoSwitchQosRedirectPolicingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support policing of ACL-redirected packets."

    GROUP           ciscoSwitchQosDscpRewriteGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support DSCP rewrite."

    GROUP           ciscoSwitchQosMappingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support mapping between CoS, IpPrecedence,
        MPLS-EXP and DSCP."

    GROUP           ciscoSwitchQosMutationGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support CoS, MPLS-EXP and DSCP mutation."

    GROUP           ciscoSwitchQosIfCosToQueueGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support CoS to queue assignment at an interface."

    GROUP           ciscoSwitchQosIfDscpAssignGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support Dscp to queue assignment at an interface."

    GROUP           ciscoSwitchQosIfDropConfigGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support drop threshold configuration at an interface."

    GROUP           ciscoSwitchQosIfQueueGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support queue configuration at an interface."

    GROUP           ciscoSwitchQosMarkingStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support marking statistics at the device."

    GROUP           ciscoSwitchQosIfModeConfigGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support VLAN-based Qos mode configuration at an interface."

    GROUP           ciscoSwitchQosIfCCGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support consistency check at an interface."

    OBJECT          csqCosMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqDscpMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqExpMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqIfMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqIfCosMutationMap
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDscpMutationMap
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfExpMutationMap
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpRewriteEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqPoliceRedirectedTrafficEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqPortQueueingModeEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqMarkingStatisticsEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqCosToDscpDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIpPrecToDscpDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqExpToDscpDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingCos
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingExp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingNormalBurstDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingMaxBurstDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqCosMutationToCos
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMutationToDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqExpMutationToExp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDefaultCos
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfTrustState
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfCosToQueueQueueNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfCosToQueueThresholdNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDscpToQueueQueueNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDscpToQueueThresholdNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigDropAlgorithm
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigDropThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigMinWredThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigMaxWredThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfQueueWrrWeight
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfQueueSizeWeight
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfVlanBasedQosModeEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfConsistencyCheckEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { ciscoSwitchQosMIBCompliances 1 }

-- ciscoSwitchQosMIBComplianceRev2

ciscoSwitchQosMIBComplianceRev2 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for the CISCO-SWITCH-QOS-MIB"
    MODULE          -- this module
    MANDATORY-GROUPS { ciscoSwitchQosIfConfigGroup }

    GROUP           ciscoSwitchQosIfStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support port statictics."

    GROUP           ciscoSwitchQosModuleStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support module statistics."

    GROUP           ciscoSwitchQosPortQueueingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support port queueing mode."

    GROUP           ciscoSwitchQosRedirectPolicingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support policing of ACL-redirected packets."

    GROUP           ciscoSwitchQosDscpRewriteGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support DSCP rewrite."

    GROUP           ciscoSwitchQosMappingGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support mapping between CoS, IpPrecedence,
        MPLS-EXP and DSCP."

    GROUP           ciscoSwitchQosMutationGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support CoS, MPLS-EXP and DSCP mutation."

    GROUP           ciscoSwitchQosIfCosToQueueGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support CoS to queue assignment at an interface."

    GROUP           ciscoSwitchQosIfDscpAssignGroup
    DESCRIPTION
        "This group is mandatory only for platforms
        which support Dscp to queue assignment at an interface."

    GROUP           ciscoSwitchQosIfDropConfigGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support drop threshold configuration at an interface."

    GROUP           ciscoSwitchQosIfQueueGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support queue configuration at an interface."

    GROUP           ciscoSwitchQosMarkingStatsGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support marking statistics at the device."

    GROUP           ciscoSwitchQosIfModeConfigGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support VLAN-based Qos mode configuration at an interface."

    GROUP           ciscoSwitchQosIfCCGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support consistency check at an interface."

    GROUP           ciscoSwitchQosPolicerUsageGroup
    DESCRIPTION
        "This group is mandatory only for platforms which
        support policer usage."

    OBJECT          csqCosMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqDscpMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqExpMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqIfMutationRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    MIN-ACCESS      read-only
    DESCRIPTION
        "Support for 'createAndWait' is not required."

    OBJECT          csqIfCosMutationMap
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDscpMutationMap
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfExpMutationMap
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpRewriteEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqPoliceRedirectedTrafficEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqPortQueueingModeEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqMarkingStatisticsEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqCosToDscpDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIpPrecToDscpDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqExpToDscpDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingCos
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingExp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingNormalBurstDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMappingMaxBurstDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqCosMutationToCos
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqDscpMutationToDscp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqExpMutationToExp
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDefaultCos
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfTrustState
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfCosToQueueQueueNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfCosToQueueThresholdNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDscpToQueueQueueNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDscpToQueueThresholdNumber
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigDropAlgorithm
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigDropThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigMinWredThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfDropConfigMaxWredThreshold
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfQueueWrrWeight
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfQueueSizeWeight
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfVlanBasedQosModeEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."

    OBJECT          csqIfConsistencyCheckEnable
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { ciscoSwitchQosMIBCompliances 2 }

-- Units of Conformance

ciscoSwitchQosMappingGroup OBJECT-GROUP
    OBJECTS         {
                        csqCosToDscpDscp,
                        csqIpPrecToDscpDscp,
                        csqExpToDscpDscp,
                        csqDscpMappingCos,
                        csqDscpMappingExp,
                        csqDscpMappingNormalBurstDscp,
                        csqDscpMappingMaxBurstDscp
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides the QoS mapping
        information in the device."
    ::= { ciscoSwitchQosMIBGroups 1 }

ciscoSwitchQosMutationGroup OBJECT-GROUP
    OBJECTS         {
                        csqMaxCosMutationMap,
                        csqMaxDscpMutationMap,
                        csqMaxExpMutationMap,
                        csqCosMutationRowStatus,
                        csqDscpMutationRowStatus,
                        csqExpMutationRowStatus,
                        csqCosMutationToCos,
                        csqDscpMutationToDscp,
                        csqExpMutationToExp,
                        csqIfCosMutationMap,
                        csqIfDscpMutationMap,
                        csqIfExpMutationMap,
                        csqIfMutationRowStatus
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides the QoS mutation
        information in the device."
    ::= { ciscoSwitchQosMIBGroups 2 }

ciscoSwitchQosIfConfigGroup OBJECT-GROUP
    OBJECTS         {
                        csqIfDefaultCos,
                        csqIfTrustState
                    }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides QoS configuration
        at an interface."
    ::= { ciscoSwitchQosMIBGroups 3 }

ciscoSwitchQosIfCosToQueueGroup OBJECT-GROUP
    OBJECTS         {
                        csqIfCosToQueueQueueNumber,
                        csqIfCosToQueueThresholdNumber
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides CoS assignment
        information at an interface."
    ::= { ciscoSwitchQosMIBGroups 4 }

ciscoSwitchQosIfDropConfigGroup OBJECT-GROUP
    OBJECTS         {
                        csqIfDropConfigDropAlgorithm,
                        csqIfDropConfigDropThreshold,
                        csqIfDropConfigMinWredThreshold,
                        csqIfDropConfigMaxWredThreshold
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides drop threshold
        information at an interface."
    ::= { ciscoSwitchQosMIBGroups 5 }

ciscoSwitchQosIfQueueGroup OBJECT-GROUP
    OBJECTS         {
                        csqIfQueueWrrWeight,
                        csqIfQueueSizeWeight,
                        csqIfQueueStatsGranularity
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides queue information
        at an interface."
    ::= { ciscoSwitchQosMIBGroups 6 }

ciscoSwitchQosIfStatsGroup OBJECT-GROUP
    OBJECTS         { csqIfStatsDropPkts }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides drop packets
        information at an interface."
    ::= { ciscoSwitchQosMIBGroups 7 }

ciscoSwitchQosModuleStatsGroup OBJECT-GROUP
    OBJECTS         {
                        csqModuleDropByPolicingPackets,
                        csqModuleTosChangedIpPackets,
                        csqModuleCosChangedIpPackets,
                        csqModuleCosChangedNonIpPackets,
                        csqModuleExpChangedMplsPackets
                    }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides QoS statistics
        information at each QoS capable module."
    ::= { ciscoSwitchQosMIBGroups 8 }

ciscoSwitchQosIfDscpAssignGroup OBJECT-GROUP
    OBJECTS         {
                        csqIfDscpToQueueQueueNumber,
                        csqIfDscpToQueueThresholdNumber
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides DSCP to queue
        assignment information at an interface."
    ::= { ciscoSwitchQosMIBGroups 9 }

ciscoSwitchQosDscpRewriteGroup OBJECT-GROUP
    OBJECTS         { csqDscpRewriteEnable }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides DSCP rewrite
        information."
    ::= { ciscoSwitchQosMIBGroups 10 }

ciscoSwitchQosRedirectPolicingGroup OBJECT-GROUP
    OBJECTS         { csqPoliceRedirectedTrafficEnable }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides information on
        policing of ACL-redirected traffic."
    ::= { ciscoSwitchQosMIBGroups 11 }

ciscoSwitchQosPortQueueingGroup OBJECT-GROUP
    OBJECTS         { csqPortQueueingModeEnable }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides information on
        port-queuing mode."
    ::= { ciscoSwitchQosMIBGroups 12 }

ciscoSwitchQosMarkingStatsGroup OBJECT-GROUP
    OBJECTS         { csqMarkingStatisticsEnable }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides information on
        marking statistics configuration."
    ::= { ciscoSwitchQosMIBGroups 13 }

ciscoSwitchQosIfCCGroup OBJECT-GROUP
    OBJECTS         { csqIfConsistencyCheckEnable }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides information on
        interface consistency check configuration."
    ::= { ciscoSwitchQosMIBGroups 14 }

ciscoSwitchQosIfModeConfigGroup OBJECT-GROUP
    OBJECTS         { csqIfVlanBasedQosModeEnable }
    STATUS          current
    DESCRIPTION
        "A collection of object which provides information on
        QoS mode configuration."
    ::= { ciscoSwitchQosMIBGroups 15 }

ciscoSwitchQosPolicerUsageGroup OBJECT-GROUP
    OBJECTS         {
                        csqPolicerUsed,
                        csqPolicerTotal
                    }
    STATUS          current
    DESCRIPTION
        "A collection of objects which provides information on
        QoS policer usage."
    ::= { ciscoSwitchQosMIBGroups 16 }

END
