-- *********************************************************************
-- CISCO-FCC-MIB.my Fibre Channel Congestion Control (FCC) MIB
--
-- Jul 2003, Sanjeev Joshi, Dinkar Sitaram
--
-- Copyright (c) 2003, 2004 by cisco Systems, Inc.
-- All rights reserved.
--
-- *********************************************************************

CISCO-FCC-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Counter32,Integer32
                FROM SNMPv2-SMI
        MODULE-COMPLIANCE, OBJECT-GROUP,NOTIFICATION-GROUP
                FROM SNMPv2-CONF
        TruthValue,TimeStamp, TEXTUAL-CONVENTION
                FROM SNMPv2-TC
        ciscoMgmt
                FROM CISCO-SMI
        ifIndex
                FROM IF-MIB
        FcAddressId, VsanIndex
                FROM CISCO-ST-TC;

ciscoFCCMIB MODULE-IDENTITY
        LAST-UPDATED        "200407080000Z"
        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-san@cisco.com"

        DESCRIPTION
                "The MIB module for the management of Fibre Channel
                 Congestion Control(FCC). FCC is a Cisco proprietary
                 flow control mechanism that alleviates congestion
                 on Fibre Channel networks. This MIB enables managers
                 to configure the FCC mechanism on the switch, provides 
                 statistics of the congestion control packets,
                 notification of congestion state changes of the 
                 FC port and monitoring of the congestion state of
                 the FC port."
        REVISION  "200407080000Z"
        DESCRIPTION
                "Added the following objects to the 'cFCCPortTable' :
                  - 'cFCCLastCongestionStartTime'  and
                  - 'cFCCIsRateLimitingApplied'."                    
        REVISION  "200402250000Z"
        DESCRIPTION
                "Changed the cFCCNotificationEnable DEFVAL to 'false'
                 instead of 1."                 
        REVISION  "200308060000Z"
        DESCRIPTION
                "Changed cFCCCongestionSourceID and 
                 cFCCCongestionDestinationID to be FC_IDs
                 instead of WWNs and added 
                 cFCCCongestionNotifyVSANIndex"
        REVISION  "200305260000Z"
        DESCRIPTION
                "Initial version of this MIB."
        ::= { ciscoMgmt 365 }

--
-- FCC-MIB object definitions
--

ciscoFCCMIBNotifs       OBJECT IDENTIFIER ::=  { ciscoFCCMIB 0 }
ciscoFCCMIBObjects      OBJECT IDENTIFIER ::=  { ciscoFCCMIB 1 }
ciscoFCCMIBConformance  OBJECT IDENTIFIER ::=  { ciscoFCCMIB 2 }

cFCCConfig              OBJECT IDENTIFIER ::= { ciscoFCCMIBObjects 1 }
cFCCPortEntries         OBJECT IDENTIFIER ::= { ciscoFCCMIBObjects 2 }
cFCCNotifObjects        OBJECT IDENTIFIER ::= { ciscoFCCMIBObjects 3 }

--
-- Textual Conventions
--

CiscoFCCCongestionState ::= TEXTUAL-CONVENTION
        STATUS   current
        DESCRIPTION
           "The FCC Congestion state. This is to indicate the severity
            of the Congestion 

                 noCongestion(1)       - No Congestion
                 Congested(2)          - Congested
                 SeverelyCongested(3)  - Severely Congested."
        SYNTAX         INTEGER {
                          noCongestion(1),
                          congested (2),
                          severelyCongested(3)
                        }
  
--
-- FCC Configuration
--

cFCCEnable OBJECT-TYPE
        SYNTAX         INTEGER {
                          enable(1),
                          disable(2)             
                       }
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION   
           "To enable/disable FCC on the device."
        DEFVAL { disable }
        ::= { cFCCConfig 1 }

cFCCPacketPriority OBJECT-TYPE
        SYNTAX         Integer32(0..7)
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION
           "The traffic Priority for the  FCC packets. The generated
            FCC quench packets should be granted high, but not
            highest priority, so that the FCC packet priority
            is higher than the normal data traffic priority but lower
            than control and critical traffic priority.  This ensures
            that the packets of the protocols guaranteeing the
            proper behavior of the fabric are not disturbed by
            quench packets.

            0 is the lowest priority and 7 is the highest."
        DEFVAL { 4 }
        ::= { cFCCConfig 2 }

cFCCNotificationEnable OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-write
        STATUS         current
        DESCRIPTION
                "This object specifies whether the agent should
                 generate the notifications defined in this MIB
                 module.
                 If the value of this object is 'true', then the
                 notifications are generated. 
                 If the value of this object is 'false', then the
                 notifications are not generated."
        DEFVAL { false }
        ::= { cFCCConfig 3 }

--
-- FCC Port Data
--

cFCCPortTable OBJECT-TYPE
        SYNTAX         SEQUENCE OF CFCCPortEntry
        MAX-ACCESS     not-accessible
        STATUS         current
        DESCRIPTION
           "A table providing statistics and status for FCC
            on a per FC Port basis."
        ::= { cFCCPortEntries 1 }
 
cFCCPortEntry OBJECT-TYPE
        SYNTAX      CFCCPortEntry
        MAX-ACCESS  not-accessible
        STATUS      current
        DESCRIPTION
           "Each entry contains the FCC statistics and 
            status for a particular FC port identified
            by the value of ifIndex."         
        INDEX { ifIndex
              }
        ::= { cFCCPortTable 1 }

CFCCPortEntry::=
        SEQUENCE {
           cFCCEdgeQuenchPktsRecd          Counter32,
           cFCCEdgeQuenchPktsSent          Counter32,
           cFCCPathQuenchPktsRecd          Counter32,
           cFCCPathQuenchPktsSent          Counter32,
           cFCCCurrentCongestionState      CiscoFCCCongestionState,
           cFCCLastCongestedTime           TimeStamp,
           cFCCLastCongestionStartTime     TimeStamp,
           cFCCIsRateLimitingApplied       TruthValue       
}

cFCCEdgeQuenchPktsRecd OBJECT-TYPE
        SYNTAX      Counter32
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "The number of Edge Quench packets received and processed
            on this Port."
        ::= { cFCCPortEntry 1 }

cFCCEdgeQuenchPktsSent OBJECT-TYPE
        SYNTAX         Counter32
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION
           "The number of Edge Quench packets generated on this
            Port as result of congestion."
        ::= { cFCCPortEntry 2 }

cFCCPathQuenchPktsRecd OBJECT-TYPE
        SYNTAX         Counter32
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION
           "The number of Path Quench packets recieved and processed
            on this Port."
        ::= { cFCCPortEntry 3 }

cFCCPathQuenchPktsSent OBJECT-TYPE
        SYNTAX         Counter32
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION
           "The number of Path Quench packets generated on this
            Port as result of congestion."
        ::= { cFCCPortEntry 4 }

cFCCCurrentCongestionState OBJECT-TYPE
        SYNTAX      CiscoFCCCongestionState
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "The current FCC congestion state of this Port indicating the
            severity of the congestion."
        ::= { cFCCPortEntry 5 }

cFCCLastCongestedTime OBJECT-TYPE
        SYNTAX      TimeStamp
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "The value of sysUpTime at the most recent time the
            congestion state of the Port changed to noCongestion(1) 
            from some other value.  0 if the congestion state of
            the Port has never transitioned to noCongestion(1) 
            since the last restart of the device."
        ::= { cFCCPortEntry 6 }
        
cFCCLastCongestionStartTime OBJECT-TYPE
        SYNTAX      TimeStamp
        MAX-ACCESS  read-only
        STATUS      current
        DESCRIPTION
           "The value of sysUpTime at the most recent time the
            congestion state (value of corresponding instance of
            'cFCCCurrentCongestionState') of the Port changed from
            'noCongestion' to some other value. 0 if the congestion
            state of the Port has never transitioned from 
            'noCongestion' to  some other value  since the last 
            restart of the device."
        ::= { cFCCPortEntry 7 }        
        
cFCCIsRateLimitingApplied OBJECT-TYPE
        SYNTAX         TruthValue
        MAX-ACCESS     read-only
        STATUS         current
        DESCRIPTION
                "The value of this object indicates if the rate
                 limiting is currently being applied on this Port.
                 If the value of this object is 'true', the rate
                 limiting is currently being applied on this  
                 Port. If the value of this object is 'false', the 
                 rate limiting is not being applied currently on 
                 this Port." 
        ::= { cFCCPortEntry 8 }
        
--
-- Objects for notification  only
--

cFCCCongestionSourceID OBJECT-TYPE
        SYNTAX         FcAddressId
        MAX-ACCESS     accessible-for-notify
        STATUS         current
        DESCRIPTION   
           "The FC_ID associated with the Source causing
            the congestion. The value is extracted from 
            the FCC congestion quench packet."
        ::= { cFCCNotifObjects 1 }

cFCCCongestionDestinationID OBJECT-TYPE
        SYNTAX         FcAddressId
        MAX-ACCESS     accessible-for-notify
        STATUS         current
        DESCRIPTION   
           "The  FC_ID associated with the Destination that
            is part of Source-Destination Flow causing the 
            congestion. The value is extracted from the 
            FCC congestion quench packet."
        ::= { cFCCNotifObjects 2 }

cFCCCongestionNotifyVSANIndex OBJECT-TYPE
        SYNTAX         VsanIndex
        MAX-ACCESS     accessible-for-notify
        STATUS         current
        DESCRIPTION   
           "Id of the VSAN containing the Source-Destination
           flow causing the congestion. The value is extracted 
           from the FCC congestion quench packet. This along 
           with cFCCCongestionSourceID and 
           cFCCCongestionDestinationID gives the Flow causing 
           the congestion."
        ::= { cFCCNotifObjects 3 }

cFCCCongestionState OBJECT-TYPE
        SYNTAX         CiscoFCCCongestionState
        MAX-ACCESS     accessible-for-notify
        STATUS         current
        DESCRIPTION   
           "This is to indicate the congestion state of the port."
        ::= { cFCCNotifObjects 4 }

--
-- Notifications
--

ciscoFCCCongestionStateChange NOTIFICATION-TYPE
        OBJECTS        {ifIndex ,
                        cFCCCongestionState}
        STATUS         current
        DESCRIPTION
           "Notification to indicate that the congestion state of
            this port has changed. cFCCCongestionState indicates
            the new state of the port."
        ::= { ciscoFCCMIBNotifs 1 }

ciscoFCCCongestionRateLimitStart NOTIFICATION-TYPE
        OBJECTS        {ifIndex,
                        cFCCCongestionSourceID,
                        cFCCCongestionDestinationID,
                        cFCCCongestionNotifyVSANIndex}
        STATUS         current
        DESCRIPTION
           "Notification to indicate that the rate limiting has
            begun on this port for a source-destination pair."
        ::= { ciscoFCCMIBNotifs 2 }

ciscoFCCCongestionRateLimitEnd NOTIFICATION-TYPE
        OBJECTS        {ifIndex,
                        cFCCCongestionSourceID,
                        cFCCCongestionDestinationID,
                        cFCCCongestionNotifyVSANIndex}
        STATUS         current
        DESCRIPTION
           "Notification to indicate that the rate limiting has
            been stopped on this port for a source-destination
            pair."
        ::= { ciscoFCCMIBNotifs 3 }

--
-- Conformance
--

ciscoFCCMIBCompliances OBJECT IDENTIFIER ::= {ciscoFCCMIBConformance 1}
ciscoFCCMIBGroups      OBJECT IDENTIFIER ::= {ciscoFCCMIBConformance 2}

ciscoFCCMIBCompliance MODULE-COMPLIANCE
        STATUS         deprecated -- superseded by
                                  -- ciscoFCCMIBComplianceRev1 
        DESCRIPTION
           "The compliance statement for entities which implement the
           CISCO-FCC-MIB."
        MODULE
          MANDATORY-GROUPS {cFCCConfigurationGroup,
                            cFCCPortEntriesGroup,
                            cFCCNotificationObjectsGroup,
                            cFCCNotificationGroup}

          ::= { ciscoFCCMIBCompliances 1 }

ciscoFCCMIBComplianceRev1 MODULE-COMPLIANCE
        STATUS         current
        DESCRIPTION
           "The compliance statement for entities which implement the
           CISCO-FCC-MIB."
        MODULE
          MANDATORY-GROUPS {cFCCConfigurationGroup,
                            cFCCPortEntriesGroupRev1,
                            cFCCNotificationObjectsGroup,
                            cFCCNotificationGroup}

          ::= { ciscoFCCMIBCompliances 2 }          
         
--
-- Units of Conformance
--

cFCCConfigurationGroup  OBJECT-GROUP
        OBJECTS        {cFCCEnable,
                        cFCCPacketPriority,
                        cFCCNotificationEnable}
        STATUS         current
        DESCRIPTION
           "A collection of objects for FCC configuration."
        ::= { ciscoFCCMIBGroups 1 }

cFCCPortEntriesGroup  OBJECT-GROUP
        OBJECTS        {cFCCEdgeQuenchPktsRecd,
                        cFCCEdgeQuenchPktsSent,
                        cFCCPathQuenchPktsRecd,
                        cFCCPathQuenchPktsSent,
                        cFCCCurrentCongestionState,
                        cFCCLastCongestedTime}
        STATUS         deprecated
        DESCRIPTION
           "A collection of objects for FCC Statistics and Status."
        ::= { ciscoFCCMIBGroups 2 }

cFCCNotificationObjectsGroup OBJECT-GROUP
        OBJECTS        {cFCCCongestionDestinationID,
                        cFCCCongestionSourceID,
                        cFCCCongestionNotifyVSANIndex,
                        cFCCCongestionState}
        STATUS         current
        DESCRIPTION
           "A collection of objects defined for notification only."
        ::= { ciscoFCCMIBGroups 3 }

cFCCNotificationGroup  NOTIFICATION-GROUP
        NOTIFICATIONS  {ciscoFCCCongestionStateChange,
                        ciscoFCCCongestionRateLimitStart,
                        ciscoFCCCongestionRateLimitEnd}
        STATUS         current
        DESCRIPTION
           "A collection of notifications for Congestion Monitoring."
        ::= { ciscoFCCMIBGroups 4 }

cFCCPortEntriesGroupRev1  OBJECT-GROUP
        OBJECTS        {cFCCEdgeQuenchPktsRecd,
                        cFCCEdgeQuenchPktsSent,
                        cFCCPathQuenchPktsRecd,
                        cFCCPathQuenchPktsSent,
                        cFCCCurrentCongestionState,
                        cFCCLastCongestedTime,
                        cFCCLastCongestionStartTime,
                        cFCCIsRateLimitingApplied}
        STATUS         current
        DESCRIPTION
           "A collection of objects for FCC Statistics and Status."
        ::= { ciscoFCCMIBGroups 5 }        
        
END
 
