// ===================================================================
// Title:  Device Infiniband
// $State: Exp $
// $Date: 2004/08/15 05:55:36 $
// $Source: /cvsroot/wbemservices/open/mof/dmtf/2.9/Device_IB.mof,v $
// $Revision: 1.1 $
// ===================================================================
//#pragma inLine ("Includes/copyright.inc")
// Copyright 1998-2004 Distributed Management Task Force, Inc. (DMTF).
// All rights reserved.
// DMTF is a not-for-profit association of industry members dedicated
// to promoting enterprise and systems management and interoperability.
// DMTF specifications and documents may be reproduced for uses
// consistent with this purpose by members and non-members,
// provided that correct attribution is given.
// As DMTF specifications may be revised from time to time,
// the particular version and release date should always be noted.
// 
// Implementation of certain elements of this standard or proposed
// standard may be subject to third party patent rights, including
// provisional patent rights (herein "patent rights"). DMTF makes
// no representations to users of the standard as to the existence
// of such rights, and is not responsible to recognize, disclose, or
// identify any or all such third party patent right, owners or
// claimants, nor for any incomplete or inaccurate identification or
// disclosure of such rights, owners or claimants. DMTF shall have no
// liability to any party, in any manner or circumstance, under any
// legal theory whatsoever, for failure to recognize, disclose, or
// identify any such third party patent rights, or for such party's
// reliance on the standard or incorporation thereof in its product,
// protocols or testing procedures. DMTF shall have no liability to
// any party implementing such standard, whether such implementation
// is foreseeable or not, nor to any patent owner or claimant, and shall
// have no liability or responsibility for costs or losses incurred if
// a standard is withdrawn or modified after publication, and shall be
// indemnified and held harmless by any party implementing the
// standard from any and all claims of infringement by a patent owner
// for such implementations.
// 
// For information about patents held by third-parties which have
// notified the DMTF that, in their opinion, such patent may relate to
// or impact implementations of DMTF standards, visit
// http://www.dmtf.org/about/policies/disclosures.php.
//#pragma inLine
// ===================================================================
// Description: The Device Model extends the management concepts that
//              are related to LogicalDevices. This file defines the
//              classes to manage Infiniband devices.
// 
//              The object classes below are listed in an order that
//              avoids forward references. Required objects, defined
//              by other working groups, are omitted.
// ==================================================================
// Change Log for v2.8 Final
// CR1202 - Move experiment IB  forward to 2.9
// 
// Change Log for 2.8 Preliminary
// CR1071 - Return experimental classes into 2.8.
// 
// Change Log for v2.7 Final
// CR962 - Fix the overlapping values defined for PortTypes.
// CR971 - Remove the experimental IB class definitions so they can
//         remain experimental in 2.8
// 
// Change Log for v2.7
// CR631 - Add IBPortStatistics
// CR633 - Add IBPort
// CR783 - Add IBPortController
//       - Modify IBPort
// ==================================================================

#pragma locale ("en_US")


// ===================================================================
// IBSubnetManager
// ===================================================================
   [Version ( "2.7.0" ), Description (
       "An Infiniband Subnet Manager (SM) is an entity responsible for "
       "configuring and managing an IB subnet. It uses Subnet "
       "Management Agents (SMA) to access and manage individual nodes. "
       "The SM is hosted in the context of a specific computer system "
       "(i.e., hosted by an instance of UnitaryComputerSystem), as "
       "described by the HostedService association. Note that there "
       "may be multiple SMs operating in a subnet, but only the "
       "elected master is allowed to perform configuration functions.")]
class CIM_IBSubnetManager : CIM_Service {

      [Write, Description (
          "Administratively assigned priority for this SM, used to "
          "establish the master. A higher number indicates a higher "
          "priority and likelihood of becoming the master. The "
          "property value can be reset by the master SM."), 
       MappingStrings { "MAD.IBTA | SMInfo | Priority" }]
   uint8 Priority;

      [Description (
          "Enumerated value that indicates the Subnet Manager's State. "
          "The values are fairly self-explanatory except for \"Not "
          "Active\". This value indicates that the SM is available to "
          "participate in the subnet, but has not been given "
          "permission. A value \"Unknown\" (0) is also defined."), 
       ValueMap { "0", "1", "2", "3", "4" }, 
       Values { "Unknown", "Not Active", "Discovering", "Standby",
          "Master" }, 
       MappingStrings { "MAD.IBTA | SMInfo | SMState" }]
   uint16 State;
};

// ==================================================================
// IBPort
// ==================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "Management information and capabilities of an InfiniBand Port "
       "and Channel Adapter. Each port of an IB Channel Adapter "
       "independently provides the physical, link and network protocol "
       "layers of its container IBA Device. Multiple ports of a "
       "container IBA Device share the transport layer functionality "
       "among the ports. An IBA Port represents attributes of \"link "
       "port\" and/or \"end port\".")]
class CIM_IBPort : CIM_NetworkPort {

      [Override ( "Speed" ), Description (
          "The Speed property is derived from the product of "
          "LinkWidthActive and LinkSpeedActive. This is the actual "
          "speed of the connection.")]
   uint64 Speed;

      [Override ( "MaxSpeed" ), Description (
          "The Max speed of the connection is derived from the product "
          "of LinkSpeedEnabled and LinkWidthAvailable.")]
   uint64 MaxSpeed;

      [Override ( "PermanentAddress" ), Description (
          "The GUID of this port.")]
   string PermanentAddress;

      [Override ( "NetworkAddresses" ), Description (
          "The LIDs of this port. The first entry should always "
          "contain the base LID.")]
   string NetworkAddresses[];

      [Write, Description (
          "The LID Mask Control value provides a way to have multiple "
          "addresses for a single path. The number of LIDs assigned to "
          "a port range from 1 to 128 unicast LIDs. The LIDMask can be "
          "set to define the LID assignments of the port."), 
       MinValue ( 1 ), MaxValue ( 128 ), 
       MappingStrings { "MAD.IBTA | PortInfo | LMC" }]
   uint8 LIDMask;

      [Override ( "PortType" ), Description (
          "The type of port; e.g. switch, router, channel adapter."), 
       ValueMap { "0", "60", "61", "62", "16000.." }, 
       Values { "Unknown", "Switch", "Router", "Channel Adapter",
          "Vendor Specific" }]
   uint16 PortType;

      [Description (
          "Currently active link width. Only one width should be "
          "selected. Therefore, the only valid values are 1 (1x), 2 "
          "(4x), and 8 (12x)."), 
       BitMap { "0","1", "3" }, 
       BitValues { "1x", "4x", "12x" }, 
       MappingStrings { "MAD.IBTA | PortInfo | LinkWidthActive" }]
   uint16 LinkWidthActive;

      [Description (
          "Current active link speed. It is a component of the ports "
          "actual speed. Actual speed is calculated by the product of "
          "LinkSpeedActive times LinkWidthActive."), 
       Units ( "GigaBits" ), 
       BitMap { "0" }, 
       BitValues { "2.5" }, 
       MappingStrings { "MAD.IBTA | PortInfo | LinkSpeedActive" }]
   uint8 LinkSpeedActive;
};


// ===================================================================
// IBPortController
// ===================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "IBPortController is a logical device corresponding to an IB "
       "Channel Adapter (CA).")]
class CIM_IBPortController : CIM_PortController {

      [Description (
          "The AdapterDiagnosticCode provides both generic and vendor- "
          "specific diagnostic functionality. For all ports, all bits "
          "set to zero means the port status is good. Any non-zero "
          "value means there are possible error conditions."), 
       MappingStrings { "MAD.IBTA | PortInfo | DiagCode" }]
   uint32 AdapterDiagnosticCode;
};


// ==================================================================
// IBPortStatistics
// ==================================================================
   [Experimental, Version ( "2.8.1000" ), Description (
       "The class, IBPortStatistics, represents the statistics for the "
       "IBPort.")]
class CIM_IBPortStatistics : CIM_NetworkPortStatistics {

      [Description (
          "Total number of symbol errors detected on one or more VLs."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | SymbolErrorCounter" 
          }]
   uint16 SymbolErrorCounter;

      [Description (
          "Total number of times the Port Training state machine has "
          "successfully completed the link error recovery process."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "LinkErrorRecoveryCounter" }]
   uint16 LinkErrorRecoveryCounter;

      [Description (
          "Total number of times the Port Training state machine has "
          "failed the link error recovery process and downed the link."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | LinkDownedCounter" }]
   uint16 LinkDownedCounter;

      [Description (
          "Total number of packets containing an error that were "
          "received on the port."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | PortRcvErrors" }]
   uint16 PortRcvErrors;

      [Description (
          "Total number of packets marked with the EBP delimiter "
          "received on the port."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "PortRcvRemotePhysicalErrors" }]
   uint16 PortRcvRemotePhysicalErrors;

      [Description (
          "Total number of packets received on the port that were "
          "discarded because they could not be forwarded by the switch "
          "relay."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "PortRcvSwitchRelayErrors" }]
   uint16 PortRcvSwitchRelayErrors;

      [Description (
          "Total number of outbound packets discarded by the port "
          "because the port is down or congested."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | PortXmitDiscards" }]
   uint16 PortXmitDiscards;

      [Description (
          "Total number of packets not transmitted from the port for "
          "any of the following reasons: \n"
          "- FilterRawOutbound is true and packet is raw \n"
          "- PartitionEnforcementOutbound is true and packet fails "
          "partition key check, IP version check, or \n"
          "transport header version check."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "PortXmitConstraintErrors" }]
   uint16 PortXmitConstraintErrors;

      [Description (
          "Total number of packets received on the port that are "
          "discarded for any of the following reasons: \n"
          "- FilterRawInbound is true and packet is raw - "
          "PartitionEnforcementInbound is true and packet fails "
          "partition key check, IP version check, or transport header "
          "version check."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "PortRcvConstraintErrors" }]
   uint16 PortRcvConstraintErrors;

      [Description (
          "The number of times that the frequency of packets "
          "containing local physical errors exceeded the local "
          "physical error threshold."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "LocalLinkIntegrityErrors" }]
   uint16 LocalLinkIntegrityErrors;

      [Description (
          "The number of times that consecutive flow control update "
          "periods had at least one overrun error."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | " 
          "ExcessiveBufferOverrunErrors" }]
   uint16 ExcessiveBufferOverrunErrors;

      [Description (
          "Number of incoming VL15 packets dropped due to resource "
          "limitations (due to lack of buffers)."), 
       Counter, 
       MappingStrings { "MAD.IBTA | PortCounters | VL15Dropped" }]
   uint16 VL15Dropped;
};


// ===================================================================
// end of file
// ===================================================================
