X-Git-Url: http://git.etherboot.org/mirror/winof/.git/blobdiff_plain/b4f272002ecf431c7d14ac36b115f6b94e3a5559..b3d277b7516a1302855ee5eea386b1ec3538395f:/ulp/opensm/user/include/opensm/osm_base.h diff --git a/ulp/opensm/user/include/opensm/osm_base.h b/ulp/opensm/user/include/opensm/osm_base.h index cc054b3c..58644e8b 100644 --- a/ulp/opensm/user/include/opensm/osm_base.h +++ b/ulp/opensm/user/include/opensm/osm_base.h @@ -1,811 +1,823 @@ -/* - * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved. - * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved. - * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. - * - * This software is available to you under the OpenIB.org BSD license - * below: - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above - * copyright notice, this list of conditions and the following - * disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * $Id$ - */ - - -/* - * Abstract: - * Basic OpenSM definitions and structures. - * This object represents an OpenSM "base class". - * This object is part of the OpenSM family of objects. - * - * Environment: - * Linux User Mode - * - * $Revision: 1.15 $ - */ - -#ifndef _OSM_BASE_H_ -#define _OSM_BASE_H_ - -#ifdef __WIN__ -#include -#define OSM_CDECL __cdecl -#else -#define OSM_CDECL -#endif - -#include - -#ifdef __cplusplus -# define BEGIN_C_DECLS extern "C" { -# define END_C_DECLS } -#else /* !__cplusplus */ -# define BEGIN_C_DECLS -# define END_C_DECLS -#endif /* __cplusplus */ - -BEGIN_C_DECLS - -/****h* OpenSM/Constants -* NAME -* Constants -* -* DESCRIPTION -* The following constants are used throughout the OpenSM. -* -* AUTHOR -* Steve King, Intel -* -*********/ - -/****h* OpenSM/Base -* NAME -* Base -* -* DESCRIPTION -* The Base object encapsulates basic information needed by the -* OpenSM to manage objects. Each OpenSM object includes the -* Base object as the first member. -* -* This object should be treated as opaque and should be -* manipulated only through the provided functions. -* -* AUTHOR -* Steve King, Intel -* -*********/ - -/****s* OpenSM: Base/OSM_DEFAULT_M_KEY -* NAME -* OSM_DEFAULT_M_KEY -* -* DESCRIPTION -* Managment key value used by the OpenSM. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_M_KEY 0 -/********/ - -/****s* OpenSM: Base/OSM_DEFAULT_SM_KEY -* NAME -* OSM_DEFAULT_SM_KEY -* -* DESCRIPTION -* Subnet Manager key value used by the OpenSM. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SM_KEY 1 -/********/ - -/****s* OpenSM: Base/OSM_DEFAULT_LMC -* NAME -* OSM_DEFAULT_LMC -* -* DESCRIPTION -* Default LMC value used by the OpenSM. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_LMC 0 -/********/ - -/****s* OpenSM: Base/OSM_DEFAULT_MAX_OP_VLS -* NAME -* OSM_DEFAULT_MAX_OP_VLS -* -* DESCRIPTION -* Default Maximal Operational VLs to be initialized on -* the link ports PortInfo by the OpenSM. -* Default value provides backward compatibility. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_MAX_OP_VLS 5 -/********/ - -/****s* OpenSM: Base/OSM_DEFAULT_SL -* NAME -* OSM_DEFAULT_SL -* -* DESCRIPTION -* Default SL value used by the OpenSM. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SL 0 -/********/ - -/****s* OpenSM: Base/OSM_DEFAULT_SM_PRIORITY -* NAME -* OSM_DEFAULT_SM_PRIORITY -* -* DESCRIPTION -* Default SM priority value used by the OpenSM, -* as defined in the SMInfo attribute. 0 is the lowest priority. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SM_PRIORITY 1 -/********/ - -/****d* OpenSM: Base/OSM_DEFAULT_TMP_DIR -* NAME -* OSM_DEFAULT_TMP_DIR -* -* DESCRIPTION -* Specifies the default temporary directory for the log file, -* osm-subnet.lst, and other log files. -* -* SYNOPSIS -*/ -#ifdef __WIN__ -#define OSM_DEFAULT_TMP_DIR GetOsmTempPath() -#else -#define OSM_DEFAULT_TMP_DIR "/var/log/" -#endif -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_CACHE_DIR -* NAME -* OSM_DEFAULT_CACHE_DIR -* -* DESCRIPTION -* Specifies the default cache directory for the db files. -* Note that the directory must appear with "/" ("\\" for windows) at the end. -* -* SYNOPSIS -*/ -#ifdef __WIN__ -#define OSM_DEFAULT_CACHE_DIR GetOsmCachePath() -#else -#define OSM_DEFAULT_CACHE_DIR "/var/cache/osm/" -#endif -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_LOG_FILE -* NAME -* OSM_DEFAULT_LOG_FILE -* -* DESCRIPTION -* Specifies the default log file name -* -* SYNOPSIS -*/ -#ifdef __WIN__ -#define OSM_DEFAULT_LOG_FILE strcat(GetOsmTempPath(), "osm.log") -#else -#define OSM_DEFAULT_LOG_FILE "/var/log/osm.log" -#endif -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_PARTITION_CONFIG_FILE -* NAME -* OSM_DEFAULT_PARTITION_CONFIG_FILE -* -* DESCRIPTION -* Specifies the default partition config file name -* -* SYNOPSIS -*/ -#ifdef __WIN__ -#define OSM_DEFAULT_PARTITION_CONFIG_FILE strcat(GetOsmCachePath(), "osm-partitions.conf") -#else -#define OSM_DEFAULT_PARTITION_CONFIG_FILE "/etc/osm-partitions.conf" -#endif -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_SWEEP_INTERVAL_SECS -* NAME -* OSM_DEFAULT_SWEEP_INTERVAL_SECS -* -* DESCRIPTION -* Specifies the default number of seconds between subnet sweeps. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SWEEP_INTERVAL_SECS 10 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC -* NAME -* OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC -* -* DESCRIPTION -* Specifies the default transaction timeout in milliseconds. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC 200 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_SUBNET_TIMEOUT -* NAME -* OSM_DEFAULT_SUBNET_TIMEOUT -* -* DESCRIPTION -* Specifies the default transaction timeout. -* timeout time = 4us * 2^timeout. -* We use here ~1sec. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SUBNET_TIMEOUT 0x12 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_SWITCH_PACKET_LIFE -* NAME -* OSM_DEFAULT_SWITCH_PACKET_LIFE -* -* DESCRIPTION -* Specifies the default max life time for a pcket on the switch. -* timeout time = 4us * 2^timeout. -* We use here the value of ~1sec -* A Value > 19dec disables this mechanism. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SWITCH_PACKET_LIFE 0x12 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_HEAD_OF_QUEUE_LIFE -* NAME -* OSM_DEFAULT_HEAD_OF_QUEUE_LIFE -* -* DESCRIPTION -* Sets the time a packet can live in the head of the VL Queue -* We use here the value of ~1sec -* A Value > 19dec disables this mechanism. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_HEAD_OF_QUEUE_LIFE 0x12 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE -* NAME -* OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE -* -* DESCRIPTION -* Sets the time a packet can live in the head of the VL Queue -* of a port that drives a CA port. -* We use here the value of ~130usec -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE 0xC -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_VL_STALL_COUNT -* NAME -* OSM_DEFAULT_LEAF_VL_COUNT -* -* DESCRIPTION -* Sets the number of consecutive head of queue life time drops that -* puts the VL into stalled state. In stalled state, the port is supposed -* to drop everything for 8*(head of queue lifetime) -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_VL_STALL_COUNT 0x7 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_LEAF_VL_STALL_COUNT -* NAME -* OSM_DEFAULT_LEAF_VL_STALL_COUNT -* -* DESCRIPTION -* Sets the number of consecutive head of queue life time drops that -* puts the VL into stalled state. In stalled state, the port is supposed -* to drop everything for 8*(head of queue lifetime). This value is for -* switch ports driving a CA port. -* We use the value of 1 here - so any drop due to HOQ means stalling the VL -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_LEAF_VL_STALL_COUNT 0x1 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT -* NAME -* OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT -* -* DESCRIPTION -* Specifies the default timeout for ignoring same trap. -* timeout time = 5000000us -* We use here ~5sec. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT 5000000 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_UNHEALTHY_TIMEOUT -* NAME -* OSM_DEFAULT_UNHEALTHY_TIMEOUT -* -* DESCRIPTION -* Specifies the default timeout for setting port as unhealthy. -* timeout time = 60000000us -* We use here ~60sec. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_UNHEALTHY_TIMEOUT 60000000 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_ERROR_THRESHOLD -* NAME -* OSM_DEFAULT_ERROR_THRESHOLD -* -* DESCRIPTION -* Specifies default link error threshold to be set by SubnMgt(Set.PortInfo). -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_ERROR_THRESHOLD 0x08 -/***********/ - -/****d* OpenSM: Base/OSM_DEFAULT_SMP_MAX_ON_WIRE -* NAME -* OSM_DEFAULT_SMP_MAX_ON_WIRE -* -* DESCRIPTION -* Specifies the default number of VL15 SMP MADs allowed on -* the wire at any one time. -* -* SYNOPSIS -*/ -#define OSM_DEFAULT_SMP_MAX_ON_WIRE 4 -/***********/ - -/****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_RCV_SIZE -* NAME -* OSM_SM_DEFAULT_QP0_RCV_SIZE -* -* DESCRIPTION -* Specifies the default size (in MADs) of the QP0 receive queue -* -* SYNOPSIS -*/ -#define OSM_SM_DEFAULT_QP0_RCV_SIZE 256 -/***********/ - -/****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_SEND_SIZE -* NAME -* OSM_SM_DEFAULT_QP0_SEND_SIZE -* -* DESCRIPTION -* Specifies the default size (in MADs) of the QP0 send queue -* -* SYNOPSIS -*/ -#define OSM_SM_DEFAULT_QP0_SEND_SIZE 256 -/***********/ - -/****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_RCV_SIZE -* NAME -* OSM_SM_DEFAULT_QP1_RCV_SIZE -* -* DESCRIPTION -* Specifies the default size (in MADs) of the QP1 receive queue -* -* SYNOPSIS -*/ -#define OSM_SM_DEFAULT_QP1_RCV_SIZE 256 -/***********/ - -/****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_SEND_SIZE -* NAME -* OSM_SM_DEFAULT_QP1_SEND_SIZE -* -* DESCRIPTION -* Specifies the default size (in MADs) of the QP1 send queue -* -* SYNOPSIS -*/ -#define OSM_SM_DEFAULT_QP1_SEND_SIZE 256 - - -/****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS -* NAME -* OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS -* -* DESCRIPTION -* Specifies the polling timeout (in miliseconds) - the timeout -* between one poll to another. -* -* SYNOPSIS -*/ -#define OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS 10000 -/**********/ - -/****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_RETRY_NUMBER -* NAME -* OSM_SM_DEFAULT_POLLING_RETRY_NUMBER -* -* DESCRIPTION -* Specifies the number of polling retries before the SM goes back -* to DISCOVERY stage. So the default total time for handoff is 40 sec. -* -* SYNOPSIS -*/ -#define OSM_SM_DEFAULT_POLLING_RETRY_NUMBER 4 -/**********/ - -/****d* OpenSM: Base/OSM_NO_PATH -* NAME -* OSM_NO_PATH -* -* DESCRIPTION -* Value indicating there is no path to the given LID. -* -* SYNOPSIS -*/ -#define OSM_NO_PATH 0xFF -/**********/ - -/****d* OpenSM: Base/osm_thread_state_t -* NAME -* osm_thread_state_t -* -* DESCRIPTION -* Enumerates the possible states of worker threads, such -* as the subnet sweeper. -* -* SYNOPSIS -*/ -typedef enum _osm_thread_state -{ - OSM_THREAD_STATE_NONE = 0, - OSM_THREAD_STATE_INIT, - OSM_THREAD_STATE_RUN, - OSM_THREAD_STATE_EXIT - -} osm_thread_state_t; -/***********/ - -/* - * OSM_CAP are from Table 117 and C15-0.1.7 Table 186 - */ - -/****d* OpenSM: Base/OSM_CAP_IS_TRAP_SUP -* Name -* OSM_CAP_IS_SUBN_TRAP_SUP -* -* DESCRIPTION -* Management class generates Trap() MADs -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_SUBN_TRAP_SUP (1 << 0) -/***********/ - -/****d* OpenSM: Base/OSM_CAP_IS_GET_SET_NOTICE_SUP -* Name -* OSM_CAP_IS_GET_SET_NOTICE_SUP -* -* DESCRIPTION -* Management class supports Get/Set(Notice) -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_SUBN_GET_SET_NOTICE_SUP (1 << 1) -/***********/ - -/****d* OpenSM: Base/OSM_CAP_IS_SUBN_OPT_RECS_SUP -* Name -* OSM_CAP_IS_SUBN_OPT_RECS_SUP -* -* DESCRIPTION -* Support all optional attributes except: -* MCMemberRecord, TraceRecord, MultiPathRecord -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_SUBN_OPT_RECS_SUP (1 << 8) -/***********/ - -/****d* OpenSM: Base/OSM_CAP_IS_UD_MCAST_SUP -* Name -* OSM_CAP_IS_UD_MCAST_SUP -* -* DESCRIPTION -* Multicast is supported -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_UD_MCAST_SUP (1 << 9) -/***********/ - -/****d* OpenSM: Base/OSM_CAP_IS_MULTIPATH_SUP -* Name -* OSM_CAP_IS_MULTIPATH_SUP -* -* DESCRIPTION -* MultiPathRecord and TraceRecord are supported -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_MULTIPATH_SUP (1 << 10) -/***********/ - -/****d* OpenSM: Base/OSM_CAP_IS_REINIT_SUP -* Name -* OSM_CAP_IS_REINIT_SUP -* -* DESCRIPTION -* SM/SA supports re-initialization supported -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_REINIT_SUP (1 << 11) -/***********/ - -/****d* OpenSM: Base/OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED -* Name -* OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED -* -* DESCRIPTION -* SM/SA supports enhanced SA PortInfoRecord searches per 1.2 Errata: -* ClassPortInfo:CapabilityMask.IsPortInfoCapMaskMatchSupported is 1, -* then the AttributeModifier of the SubnAdmGet() and SubnAdmGetTable() -* methods affects the matching behavior on the PortInfo:CapabilityMask -* component. If the high-order bit (bit 31) of the AttributeModifier -* is set to 1, matching on the CapabilityMask component will not be an -* exact bitwise match as described in . Instead, -* matching will only be performed on those bits which are set to 1 in -* the PortInfo:CapabilityMask embedded in the query. -* -* SYNOPSIS -*/ -#define OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED (1 << 13) -/***********/ - -/****d* OpenSM: Base/osm_sm_state_t -* NAME -* osm_sm_state_t -* -* DESCRIPTION -* Enumerates the possible states of the SM object. -* -* SYNOPSIS -*/ -typedef enum _osm_sm_state -{ - OSM_SM_STATE_NO_STATE = 0, - OSM_SM_STATE_INIT, - OSM_SM_STATE_IDLE, - OSM_SM_STATE_SWEEP_LIGHT, - OSM_SM_STATE_SWEEP_LIGHT_WAIT, - OSM_SM_STATE_SWEEP_HEAVY_SELF, - OSM_SM_STATE_SWEEP_HEAVY_SUBNET, - OSM_SM_STATE_SET_SM_UCAST_LID, - OSM_SM_STATE_SET_SM_UCAST_LID_WAIT, - OSM_SM_STATE_SET_SM_UCAST_LID_DONE, - OSM_SM_STATE_SET_SUBNET_UCAST_LIDS, - OSM_SM_STATE_SET_SUBNET_UCAST_LIDS_WAIT, - OSM_SM_STATE_SET_SUBNET_UCAST_LIDS_DONE, - OSM_SM_STATE_SET_UCAST_TABLES, - OSM_SM_STATE_SET_UCAST_TABLES_WAIT, - OSM_SM_STATE_SET_UCAST_TABLES_DONE, - OSM_SM_STATE_SET_MCAST_TABLES, - OSM_SM_STATE_SET_MCAST_TABLES_WAIT, - OSM_SM_STATE_SET_MCAST_TABLES_DONE, - OSM_SM_STATE_SET_LINK_PORTS, - OSM_SM_STATE_SET_LINK_PORTS_WAIT, - OSM_SM_STATE_SET_LINK_PORTS_DONE, - OSM_SM_STATE_SET_ARMED, - OSM_SM_STATE_SET_ARMED_WAIT, - OSM_SM_STATE_SET_ARMED_DONE, - OSM_SM_STATE_SET_ACTIVE, - OSM_SM_STATE_SET_ACTIVE_WAIT, - OSM_SM_STATE_LOST_NEGOTIATION, - OSM_SM_STATE_STANDBY, - OSM_SM_STATE_SUBNET_UP, - OSM_SM_STATE_PROCESS_REQUEST, - OSM_SM_STATE_PROCESS_REQUEST_WAIT, - OSM_SM_STATE_PROCESS_REQUEST_DONE, - OSM_SM_STATE_MASTER_OR_HIGHER_SM_DETECTED, - OSM_SM_STATE_SET_PKEY, - OSM_SM_STATE_SET_PKEY_WAIT, - OSM_SM_STATE_SET_PKEY_DONE, - OSM_SM_STATE_MAX -} osm_sm_state_t; -/***********/ - -/****d* OpenSM: Base/osm_signal_t -* NAME -* osm_signal_t -* -* DESCRIPTION -* Enumerates the possible signal codes used by the OSM managers -* This cannot be an enum type, since conversion to and from -* integral types is necessary when passing signals through -* the dispatcher. -* -* SYNOPSIS -*/ -#define OSM_SIGNAL_NONE 0 -#define OSM_SIGNAL_SWEEP 1 -#define OSM_SIGNAL_CHANGE_DETECTED 2 -#define OSM_SIGNAL_NO_PENDING_TRANSACTIONS 3 -#define OSM_SIGNAL_DONE 4 -#define OSM_SIGNAL_DONE_PENDING 5 -#define OSM_SIGNAL_LOST_SM_NEGOTIATION 6 -#define OSM_SIGNAL_LIGHT_SWEEP_FAIL 7 -#define OSM_SIGNAL_IDLE_TIME_PROCESS 8 -#define OSM_SIGNAL_IDLE_TIME_PROCESS_REQUEST 9 -#define OSM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED 10 -#define OSM_SIGNAL_EXIT_STBY 11 -#define OSM_SIGNAL_MAX 12 - -typedef uintn_t osm_signal_t; -/***********/ - -/****d* OpenSM: Base/osm_state_mgr_mode_t -* NAME -* osm_state_mgr_mode_t -* -* DESCRIPTION -* Enumerates the possible state progressing codes used by the OSM -* state manager. -* -* SYNOPSIS -*/ -typedef enum _osm_state_mgr_mode -{ - OSM_STATE_STEP_CONTINUOUS = 0, - OSM_STATE_STEP_TAKE_ONE, - OSM_STATE_STEP_BREAK -} osm_state_mgr_mode_t; -/* -* OSM_STATE_STEP_CONTINUOUS -* normal automatic progress mode -* -* OSM_STATE_STEP_TAKE_ONE -* Do one step -* -* OSM_STATE_STEP_BREAK -* Stop before taking next step (the while loop in the state -* manager automatically change to this state). -* -**********/ - -/****d* OpenSM: Base/osm_sm_signal_t -* NAME -* osm_sm_signal_t -* -* DESCRIPTION -* Enumerates the possible signals used by the OSM_SM_MGR -* -* SYNOPSIS -*/ -typedef enum _osm_sm_signal -{ - OSM_SM_SIGNAL_INIT = 0, - OSM_SM_SIGNAL_DISCOVERY_COMPLETED, - OSM_SM_SIGNAL_POLLING_TIMEOUT, - OSM_SM_SIGNAL_DISCOVER, - OSM_SM_SIGNAL_DISABLE, - OSM_SM_SIGNAL_HANDOVER, - OSM_SM_SIGNAL_HANDOVER_SENT, - OSM_SM_SIGNAL_ACKNOWLEDGE, - OSM_SM_SIGNAL_STANDBY, - OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED, - OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED_DONE, - OSM_SM_SIGNAL_WAIT_FOR_HANDOVER, - OSM_SM_SIGNAL_MAX - -} osm_sm_signal_t; -/***********/ - -/****d* OpenSM/osm_mcast_req_type_t -* NAME -* osm_mcast_req_type_t -* -* DESCRIPTION -* Enumerates the possible signals used by the OSM_MCAST_REQUEST -* -* SYNOPSIS -*/ -typedef enum _osm_mcast_req_type -{ - OSM_MCAST_REQ_TYPE_CREATE, - OSM_MCAST_REQ_TYPE_JOIN, - OSM_MCAST_REQ_TYPE_LEAVE, - OSM_MCAST_REQ_TYPE_SUBNET_CHANGE - -} osm_mcast_req_type_t; -/***********/ - -/****s* OpenSM: Base/MAX_UPDN_GUID_FILE_LINE_LENGTH -* NAME -* MAX_UPDN_GUID_FILE_LINE_LENGTH -* -* DESCRIPTION -* The maximum line number when reading updn guid file -* -* SYNOPSIS -*/ -#define MAX_UPDN_GUID_FILE_LINE_LENGTH 120 -/**********/ - -/****s* OpenSM: Base/VendorOUIs -* NAME -* VendorOUIs -* -* DESCRIPTION -* Known device vendor ID and GUID OUIs -* -* SYNOPSIS -*/ -#define OSM_VENDOR_ID_INTEL 0x00D0B7 -#define OSM_VENDOR_ID_MELLANOX 0x0002C9 -#define OSM_VENDOR_ID_REDSWITCH 0x000617 -#define OSM_VENDOR_ID_SILVERSTORM 0x00066A -#define OSM_VENDOR_ID_TOPSPIN 0x0005AD -#define OSM_VENDOR_ID_FUJITSU 0x00E000 -#define OSM_VENDOR_ID_FUJITSU2 0x000B5D -#define OSM_VENDOR_ID_VOLTAIRE 0x0008F1 -#define OSM_VENDOR_ID_YOTTAYOTTA 0x000453 -#define OSM_VENDOR_ID_PATHSCALE 0x001175 -#define OSM_VENDOR_ID_IBM 0x000255 -#define OSM_VENDOR_ID_DIVERGENET 0x00084E -#define OSM_VENDOR_ID_FLEXTRONICS 0x000B8C -#define OSM_VENDOR_ID_AGILENT 0x0030D3 -#define OSM_VENDOR_ID_OBSIDIAN 0x001777 -#define OSM_VENDOR_ID_BAYMICRO 0x000BC1 -#define OSM_VENDOR_ID_LSILOGIC 0x00A0B8 -#define OSM_VENDOR_ID_DDN 0x0001FF -#define OSM_VENDOR_ID_PANTA 0x001393 -#define OSM_VENDOR_ID_HP 0x001708 -#define OSM_VENDOR_ID_RIOWORKS 0x005045 - -/**********/ - -END_C_DECLS - -#endif /* _OSM_BASE_H_ */ - +/* + * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved. + * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved. + * Copyright (c) 1996-2003 Intel Corporation. All rights reserved. + * + * This software is available to you under the OpenIB.org BSD license + * below: + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the following + * disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * $Id$ + */ + + +/* + * Abstract: + * Basic OpenSM definitions and structures. + * This object represents an OpenSM "base class". + * This object is part of the OpenSM family of objects. + * + * Environment: + * Linux User Mode + * + * $Revision: 1.15 $ + */ + +#ifndef _OSM_BASE_H_ +#define _OSM_BASE_H_ + +#ifdef __WIN__ +#include +#define OSM_CDECL __cdecl +#else +#define OSM_CDECL +#endif + +#include + +#ifdef __cplusplus +# define BEGIN_C_DECLS extern "C" { +# define END_C_DECLS } +#else /* !__cplusplus */ +# define BEGIN_C_DECLS +# define END_C_DECLS +#endif /* __cplusplus */ + +BEGIN_C_DECLS + +/****h* OpenSM/Constants +* NAME +* Constants +* +* DESCRIPTION +* The following constants are used throughout the OpenSM. +* +* AUTHOR +* Steve King, Intel +* +*********/ + +/****h* OpenSM/Base +* NAME +* Base +* +* DESCRIPTION +* The Base object encapsulates basic information needed by the +* OpenSM to manage objects. Each OpenSM object includes the +* Base object as the first member. +* +* This object should be treated as opaque and should be +* manipulated only through the provided functions. +* +* AUTHOR +* Steve King, Intel +* +*********/ + +/****s* OpenSM: Base/OSM_DEFAULT_M_KEY +* NAME +* OSM_DEFAULT_M_KEY +* +* DESCRIPTION +* Managment key value used by the OpenSM. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_M_KEY 0 +/********/ + +/****s* OpenSM: Base/OSM_DEFAULT_SM_KEY +* NAME +* OSM_DEFAULT_SM_KEY +* +* DESCRIPTION +* Subnet Manager key value used by the OpenSM. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SM_KEY 1 +/********/ + +/****s* OpenSM: Base/OSM_DEFAULT_SA_KEY +* NAME +* OSM_DEFAULT_SA_KEY +* +* DESCRIPTION +* Subnet Adminstration key value. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SA_KEY OSM_DEFAULT_SM_KEY +/********/ + +/****s* OpenSM: Base/OSM_DEFAULT_LMC +* NAME +* OSM_DEFAULT_LMC +* +* DESCRIPTION +* Default LMC value used by the OpenSM. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_LMC 0 +/********/ + +/****s* OpenSM: Base/OSM_DEFAULT_MAX_OP_VLS +* NAME +* OSM_DEFAULT_MAX_OP_VLS +* +* DESCRIPTION +* Default Maximal Operational VLs to be initialized on +* the link ports PortInfo by the OpenSM. +* Default value provides backward compatibility. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_MAX_OP_VLS 5 +/********/ + +/****s* OpenSM: Base/OSM_DEFAULT_SL +* NAME +* OSM_DEFAULT_SL +* +* DESCRIPTION +* Default SL value used by the OpenSM. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SL 0 +/********/ + +/****s* OpenSM: Base/OSM_DEFAULT_SM_PRIORITY +* NAME +* OSM_DEFAULT_SM_PRIORITY +* +* DESCRIPTION +* Default SM priority value used by the OpenSM, +* as defined in the SMInfo attribute. 0 is the lowest priority. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SM_PRIORITY 1 +/********/ + +/****d* OpenSM: Base/OSM_DEFAULT_TMP_DIR +* NAME +* OSM_DEFAULT_TMP_DIR +* +* DESCRIPTION +* Specifies the default temporary directory for the log file, +* osm-subnet.lst, and other log files. +* +* SYNOPSIS +*/ +#ifdef __WIN__ +#define OSM_DEFAULT_TMP_DIR GetOsmTempPath() +#else +#define OSM_DEFAULT_TMP_DIR "/var/log/" +#endif +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_CACHE_DIR +* NAME +* OSM_DEFAULT_CACHE_DIR +* +* DESCRIPTION +* Specifies the default cache directory for the db files. +* Note that the directory must appear with "/" ("\\" for windows) at the end. +* +* SYNOPSIS +*/ +#ifdef __WIN__ +#define OSM_DEFAULT_CACHE_DIR GetOsmCachePath() +#else +#define OSM_DEFAULT_CACHE_DIR "/var/cache/osm/" +#endif +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_LOG_FILE +* NAME +* OSM_DEFAULT_LOG_FILE +* +* DESCRIPTION +* Specifies the default log file name +* +* SYNOPSIS +*/ +#ifdef __WIN__ +#define OSM_DEFAULT_LOG_FILE strcat(GetOsmTempPath(), "osm.log") +#else +#define OSM_DEFAULT_LOG_FILE "/var/log/osm.log" +#endif +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_PARTITION_CONFIG_FILE +* NAME +* OSM_DEFAULT_PARTITION_CONFIG_FILE +* +* DESCRIPTION +* Specifies the default partition config file name +* +* SYNOPSIS +*/ +#ifdef __WIN__ +#define OSM_DEFAULT_PARTITION_CONFIG_FILE strcat(GetOsmCachePath(), "osm-partitions.conf") +#else +#define OSM_DEFAULT_PARTITION_CONFIG_FILE "/etc/osm-partitions.conf" +#endif +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_SWEEP_INTERVAL_SECS +* NAME +* OSM_DEFAULT_SWEEP_INTERVAL_SECS +* +* DESCRIPTION +* Specifies the default number of seconds between subnet sweeps. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SWEEP_INTERVAL_SECS 10 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC +* NAME +* OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC +* +* DESCRIPTION +* Specifies the default transaction timeout in milliseconds. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC 200 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_SUBNET_TIMEOUT +* NAME +* OSM_DEFAULT_SUBNET_TIMEOUT +* +* DESCRIPTION +* Specifies the default transaction timeout. +* timeout time = 4us * 2^timeout. +* We use here ~1sec. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SUBNET_TIMEOUT 0x12 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_SWITCH_PACKET_LIFE +* NAME +* OSM_DEFAULT_SWITCH_PACKET_LIFE +* +* DESCRIPTION +* Specifies the default max life time for a pcket on the switch. +* timeout time = 4us * 2^timeout. +* We use here the value of ~1sec +* A Value > 19dec disables this mechanism. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SWITCH_PACKET_LIFE 0x12 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_HEAD_OF_QUEUE_LIFE +* NAME +* OSM_DEFAULT_HEAD_OF_QUEUE_LIFE +* +* DESCRIPTION +* Sets the time a packet can live in the head of the VL Queue +* We use here the value of ~1sec +* A Value > 19dec disables this mechanism. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_HEAD_OF_QUEUE_LIFE 0x12 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE +* NAME +* OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE +* +* DESCRIPTION +* Sets the time a packet can live in the head of the VL Queue +* of a port that drives a CA port. +* We use here the value of ~130usec +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE 0xC +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_VL_STALL_COUNT +* NAME +* OSM_DEFAULT_LEAF_VL_COUNT +* +* DESCRIPTION +* Sets the number of consecutive head of queue life time drops that +* puts the VL into stalled state. In stalled state, the port is supposed +* to drop everything for 8*(head of queue lifetime) +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_VL_STALL_COUNT 0x7 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_LEAF_VL_STALL_COUNT +* NAME +* OSM_DEFAULT_LEAF_VL_STALL_COUNT +* +* DESCRIPTION +* Sets the number of consecutive head of queue life time drops that +* puts the VL into stalled state. In stalled state, the port is supposed +* to drop everything for 8*(head of queue lifetime). This value is for +* switch ports driving a CA port. +* We use the value of 1 here - so any drop due to HOQ means stalling the VL +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_LEAF_VL_STALL_COUNT 0x1 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT +* NAME +* OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT +* +* DESCRIPTION +* Specifies the default timeout for ignoring same trap. +* timeout time = 5000000us +* We use here ~5sec. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT 5000000 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_UNHEALTHY_TIMEOUT +* NAME +* OSM_DEFAULT_UNHEALTHY_TIMEOUT +* +* DESCRIPTION +* Specifies the default timeout for setting port as unhealthy. +* timeout time = 60000000us +* We use here ~60sec. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_UNHEALTHY_TIMEOUT 60000000 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_ERROR_THRESHOLD +* NAME +* OSM_DEFAULT_ERROR_THRESHOLD +* +* DESCRIPTION +* Specifies default link error threshold to be set by SubnMgt(Set.PortInfo). +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_ERROR_THRESHOLD 0x08 +/***********/ + +/****d* OpenSM: Base/OSM_DEFAULT_SMP_MAX_ON_WIRE +* NAME +* OSM_DEFAULT_SMP_MAX_ON_WIRE +* +* DESCRIPTION +* Specifies the default number of VL15 SMP MADs allowed on +* the wire at any one time. +* +* SYNOPSIS +*/ +#define OSM_DEFAULT_SMP_MAX_ON_WIRE 4 +/***********/ + +/****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_RCV_SIZE +* NAME +* OSM_SM_DEFAULT_QP0_RCV_SIZE +* +* DESCRIPTION +* Specifies the default size (in MADs) of the QP0 receive queue +* +* SYNOPSIS +*/ +#define OSM_SM_DEFAULT_QP0_RCV_SIZE 256 +/***********/ + +/****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_SEND_SIZE +* NAME +* OSM_SM_DEFAULT_QP0_SEND_SIZE +* +* DESCRIPTION +* Specifies the default size (in MADs) of the QP0 send queue +* +* SYNOPSIS +*/ +#define OSM_SM_DEFAULT_QP0_SEND_SIZE 256 +/***********/ + +/****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_RCV_SIZE +* NAME +* OSM_SM_DEFAULT_QP1_RCV_SIZE +* +* DESCRIPTION +* Specifies the default size (in MADs) of the QP1 receive queue +* +* SYNOPSIS +*/ +#define OSM_SM_DEFAULT_QP1_RCV_SIZE 256 +/***********/ + +/****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_SEND_SIZE +* NAME +* OSM_SM_DEFAULT_QP1_SEND_SIZE +* +* DESCRIPTION +* Specifies the default size (in MADs) of the QP1 send queue +* +* SYNOPSIS +*/ +#define OSM_SM_DEFAULT_QP1_SEND_SIZE 256 + + +/****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS +* NAME +* OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS +* +* DESCRIPTION +* Specifies the polling timeout (in miliseconds) - the timeout +* between one poll to another. +* +* SYNOPSIS +*/ +#define OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS 10000 +/**********/ + +/****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_RETRY_NUMBER +* NAME +* OSM_SM_DEFAULT_POLLING_RETRY_NUMBER +* +* DESCRIPTION +* Specifies the number of polling retries before the SM goes back +* to DISCOVERY stage. So the default total time for handoff is 40 sec. +* +* SYNOPSIS +*/ +#define OSM_SM_DEFAULT_POLLING_RETRY_NUMBER 4 +/**********/ + +/****d* OpenSM: Base/OSM_NO_PATH +* NAME +* OSM_NO_PATH +* +* DESCRIPTION +* Value indicating there is no path to the given LID. +* +* SYNOPSIS +*/ +#define OSM_NO_PATH 0xFF +/**********/ + +/****d* OpenSM: Base/osm_thread_state_t +* NAME +* osm_thread_state_t +* +* DESCRIPTION +* Enumerates the possible states of worker threads, such +* as the subnet sweeper. +* +* SYNOPSIS +*/ +typedef enum _osm_thread_state +{ + OSM_THREAD_STATE_NONE = 0, + OSM_THREAD_STATE_INIT, + OSM_THREAD_STATE_RUN, + OSM_THREAD_STATE_EXIT + +} osm_thread_state_t; +/***********/ + +/* + * OSM_CAP are from Table 117 and C15-0.1.7 Table 186 + */ + +/****d* OpenSM: Base/OSM_CAP_IS_TRAP_SUP +* Name +* OSM_CAP_IS_SUBN_TRAP_SUP +* +* DESCRIPTION +* Management class generates Trap() MADs +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_SUBN_TRAP_SUP (1 << 0) +/***********/ + +/****d* OpenSM: Base/OSM_CAP_IS_GET_SET_NOTICE_SUP +* Name +* OSM_CAP_IS_GET_SET_NOTICE_SUP +* +* DESCRIPTION +* Management class supports Get/Set(Notice) +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_SUBN_GET_SET_NOTICE_SUP (1 << 1) +/***********/ + +/****d* OpenSM: Base/OSM_CAP_IS_SUBN_OPT_RECS_SUP +* Name +* OSM_CAP_IS_SUBN_OPT_RECS_SUP +* +* DESCRIPTION +* Support all optional attributes except: +* MCMemberRecord, TraceRecord, MultiPathRecord +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_SUBN_OPT_RECS_SUP (1 << 8) +/***********/ + +/****d* OpenSM: Base/OSM_CAP_IS_UD_MCAST_SUP +* Name +* OSM_CAP_IS_UD_MCAST_SUP +* +* DESCRIPTION +* Multicast is supported +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_UD_MCAST_SUP (1 << 9) +/***********/ + +/****d* OpenSM: Base/OSM_CAP_IS_MULTIPATH_SUP +* Name +* OSM_CAP_IS_MULTIPATH_SUP +* +* DESCRIPTION +* MultiPathRecord and TraceRecord are supported +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_MULTIPATH_SUP (1 << 10) +/***********/ + +/****d* OpenSM: Base/OSM_CAP_IS_REINIT_SUP +* Name +* OSM_CAP_IS_REINIT_SUP +* +* DESCRIPTION +* SM/SA supports re-initialization supported +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_REINIT_SUP (1 << 11) +/***********/ + +/****d* OpenSM: Base/OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED +* Name +* OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED +* +* DESCRIPTION +* SM/SA supports enhanced SA PortInfoRecord searches per 1.2 Errata: +* ClassPortInfo:CapabilityMask.IsPortInfoCapMaskMatchSupported is 1, +* then the AttributeModifier of the SubnAdmGet() and SubnAdmGetTable() +* methods affects the matching behavior on the PortInfo:CapabilityMask +* component. If the high-order bit (bit 31) of the AttributeModifier +* is set to 1, matching on the CapabilityMask component will not be an +* exact bitwise match as described in . Instead, +* matching will only be performed on those bits which are set to 1 in +* the PortInfo:CapabilityMask embedded in the query. +* +* SYNOPSIS +*/ +#define OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED (1 << 13) +/***********/ + +/****d* OpenSM: Base/osm_sm_state_t +* NAME +* osm_sm_state_t +* +* DESCRIPTION +* Enumerates the possible states of the SM object. +* +* SYNOPSIS +*/ +typedef enum _osm_sm_state +{ + OSM_SM_STATE_NO_STATE = 0, + OSM_SM_STATE_INIT, + OSM_SM_STATE_IDLE, + OSM_SM_STATE_SWEEP_LIGHT, + OSM_SM_STATE_SWEEP_LIGHT_WAIT, + OSM_SM_STATE_SWEEP_HEAVY_SELF, + OSM_SM_STATE_SWEEP_HEAVY_SUBNET, + OSM_SM_STATE_SET_SM_UCAST_LID, + OSM_SM_STATE_SET_SM_UCAST_LID_WAIT, + OSM_SM_STATE_SET_SM_UCAST_LID_DONE, + OSM_SM_STATE_SET_SUBNET_UCAST_LIDS, + OSM_SM_STATE_SET_SUBNET_UCAST_LIDS_WAIT, + OSM_SM_STATE_SET_SUBNET_UCAST_LIDS_DONE, + OSM_SM_STATE_SET_UCAST_TABLES, + OSM_SM_STATE_SET_UCAST_TABLES_WAIT, + OSM_SM_STATE_SET_UCAST_TABLES_DONE, + OSM_SM_STATE_SET_MCAST_TABLES, + OSM_SM_STATE_SET_MCAST_TABLES_WAIT, + OSM_SM_STATE_SET_MCAST_TABLES_DONE, + OSM_SM_STATE_SET_LINK_PORTS, + OSM_SM_STATE_SET_LINK_PORTS_WAIT, + OSM_SM_STATE_SET_LINK_PORTS_DONE, + OSM_SM_STATE_SET_ARMED, + OSM_SM_STATE_SET_ARMED_WAIT, + OSM_SM_STATE_SET_ARMED_DONE, + OSM_SM_STATE_SET_ACTIVE, + OSM_SM_STATE_SET_ACTIVE_WAIT, + OSM_SM_STATE_LOST_NEGOTIATION, + OSM_SM_STATE_STANDBY, + OSM_SM_STATE_SUBNET_UP, + OSM_SM_STATE_PROCESS_REQUEST, + OSM_SM_STATE_PROCESS_REQUEST_WAIT, + OSM_SM_STATE_PROCESS_REQUEST_DONE, + OSM_SM_STATE_MASTER_OR_HIGHER_SM_DETECTED, + OSM_SM_STATE_SET_PKEY, + OSM_SM_STATE_SET_PKEY_WAIT, + OSM_SM_STATE_SET_PKEY_DONE, + OSM_SM_STATE_MAX +} osm_sm_state_t; +/***********/ + +/****d* OpenSM: Base/osm_signal_t +* NAME +* osm_signal_t +* +* DESCRIPTION +* Enumerates the possible signal codes used by the OSM managers +* This cannot be an enum type, since conversion to and from +* integral types is necessary when passing signals through +* the dispatcher. +* +* SYNOPSIS +*/ +#define OSM_SIGNAL_NONE 0 +#define OSM_SIGNAL_SWEEP 1 +#define OSM_SIGNAL_CHANGE_DETECTED 2 +#define OSM_SIGNAL_NO_PENDING_TRANSACTIONS 3 +#define OSM_SIGNAL_DONE 4 +#define OSM_SIGNAL_DONE_PENDING 5 +#define OSM_SIGNAL_LOST_SM_NEGOTIATION 6 +#define OSM_SIGNAL_LIGHT_SWEEP_FAIL 7 +#define OSM_SIGNAL_IDLE_TIME_PROCESS 8 +#define OSM_SIGNAL_IDLE_TIME_PROCESS_REQUEST 9 +#define OSM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED 10 +#define OSM_SIGNAL_EXIT_STBY 11 +#define OSM_SIGNAL_MAX 12 + +typedef uintn_t osm_signal_t; +/***********/ + +/****d* OpenSM: Base/osm_state_mgr_mode_t +* NAME +* osm_state_mgr_mode_t +* +* DESCRIPTION +* Enumerates the possible state progressing codes used by the OSM +* state manager. +* +* SYNOPSIS +*/ +typedef enum _osm_state_mgr_mode +{ + OSM_STATE_STEP_CONTINUOUS = 0, + OSM_STATE_STEP_TAKE_ONE, + OSM_STATE_STEP_BREAK +} osm_state_mgr_mode_t; +/* +* OSM_STATE_STEP_CONTINUOUS +* normal automatic progress mode +* +* OSM_STATE_STEP_TAKE_ONE +* Do one step +* +* OSM_STATE_STEP_BREAK +* Stop before taking next step (the while loop in the state +* manager automatically change to this state). +* +**********/ + +/****d* OpenSM: Base/osm_sm_signal_t +* NAME +* osm_sm_signal_t +* +* DESCRIPTION +* Enumerates the possible signals used by the OSM_SM_MGR +* +* SYNOPSIS +*/ +typedef enum _osm_sm_signal +{ + OSM_SM_SIGNAL_INIT = 0, + OSM_SM_SIGNAL_DISCOVERY_COMPLETED, + OSM_SM_SIGNAL_POLLING_TIMEOUT, + OSM_SM_SIGNAL_DISCOVER, + OSM_SM_SIGNAL_DISABLE, + OSM_SM_SIGNAL_HANDOVER, + OSM_SM_SIGNAL_HANDOVER_SENT, + OSM_SM_SIGNAL_ACKNOWLEDGE, + OSM_SM_SIGNAL_STANDBY, + OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED, + OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED_DONE, + OSM_SM_SIGNAL_WAIT_FOR_HANDOVER, + OSM_SM_SIGNAL_MAX + +} osm_sm_signal_t; +/***********/ + +/****d* OpenSM/osm_mcast_req_type_t +* NAME +* osm_mcast_req_type_t +* +* DESCRIPTION +* Enumerates the possible signals used by the OSM_MCAST_REQUEST +* +* SYNOPSIS +*/ +typedef enum _osm_mcast_req_type +{ + OSM_MCAST_REQ_TYPE_CREATE, + OSM_MCAST_REQ_TYPE_JOIN, + OSM_MCAST_REQ_TYPE_LEAVE, + OSM_MCAST_REQ_TYPE_SUBNET_CHANGE + +} osm_mcast_req_type_t; +/***********/ + +/****s* OpenSM: Base/MAX_UPDN_GUID_FILE_LINE_LENGTH +* NAME +* MAX_UPDN_GUID_FILE_LINE_LENGTH +* +* DESCRIPTION +* The maximum line number when reading updn guid file +* +* SYNOPSIS +*/ +#define MAX_UPDN_GUID_FILE_LINE_LENGTH 120 +/**********/ + +/****s* OpenSM: Base/VendorOUIs +* NAME +* VendorOUIs +* +* DESCRIPTION +* Known device vendor ID and GUID OUIs +* +* SYNOPSIS +*/ +#define OSM_VENDOR_ID_INTEL 0x00D0B7 +#define OSM_VENDOR_ID_MELLANOX 0x0002C9 +#define OSM_VENDOR_ID_REDSWITCH 0x000617 +#define OSM_VENDOR_ID_SILVERSTORM 0x00066A +#define OSM_VENDOR_ID_TOPSPIN 0x0005AD +#define OSM_VENDOR_ID_FUJITSU 0x00E000 +#define OSM_VENDOR_ID_FUJITSU2 0x000B5D +#define OSM_VENDOR_ID_VOLTAIRE 0x0008F1 +#define OSM_VENDOR_ID_YOTTAYOTTA 0x000453 +#define OSM_VENDOR_ID_PATHSCALE 0x001175 +#define OSM_VENDOR_ID_IBM 0x000255 +#define OSM_VENDOR_ID_DIVERGENET 0x00084E +#define OSM_VENDOR_ID_FLEXTRONICS 0x000B8C +#define OSM_VENDOR_ID_AGILENT 0x0030D3 +#define OSM_VENDOR_ID_OBSIDIAN 0x001777 +#define OSM_VENDOR_ID_BAYMICRO 0x000BC1 +#define OSM_VENDOR_ID_LSILOGIC 0x00A0B8 +#define OSM_VENDOR_ID_DDN 0x0001FF +#define OSM_VENDOR_ID_PANTA 0x001393 +#define OSM_VENDOR_ID_HP 0x001708 +#define OSM_VENDOR_ID_RIOWORKS 0x005045 + +/**********/ + +END_C_DECLS + +#endif /* _OSM_BASE_H_ */ +