1/*
2 * Copyright (c) 2004-2009 Voltaire, Inc. All rights reserved.
3 * Copyright (c) 2002-2011 Mellanox Technologies LTD. All rights reserved.
4 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
5 * Copyright (c) 2009 Sun Microsystems, Inc. All rights reserved.
6 *
7 * This software is available to you under a choice of one of two
8 * licenses.  You may choose to be licensed under the terms of the GNU
9 * General Public License (GPL) Version 2, available from the file
10 * COPYING in the main directory of this source tree, or the
11 * OpenIB.org BSD license below:
12 *
13 *     Redistribution and use in source and binary forms, with or
14 *     without modification, are permitted provided that the following
15 *     conditions are met:
16 *
17 *      - Redistributions of source code must retain the above
18 *        copyright notice, this list of conditions and the following
19 *        disclaimer.
20 *
21 *      - Redistributions in binary form must reproduce the above
22 *        copyright notice, this list of conditions and the following
23 *        disclaimer in the documentation and/or other materials
24 *        provided with the distribution.
25 *
26 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
27 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
28 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
29 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
30 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
31 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
32 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33 * SOFTWARE.
34 *
35 */
36
37/*
38 * Abstract:
39 * 	Basic OpenSM definitions and structures.
40 *	This object represents an OpenSM "base class".
41 *	This object is part of the OpenSM family of objects.
42 */
43
44#ifndef _OSM_BASE_H_
45#define _OSM_BASE_H_
46
47#if HAVE_CONFIG_H
48#  include <config.h>
49#endif				/* HAVE_CONFIG_H */
50
51#ifdef __WIN__
52#include <vendor/winosm_common.h>
53#endif
54
55#include <complib/cl_types.h>
56#include <iba/ib_types.h>
57
58#ifdef __cplusplus
59#  define BEGIN_C_DECLS extern "C" {
60#  define END_C_DECLS   }
61#else				/* !__cplusplus */
62#  define BEGIN_C_DECLS
63#  define END_C_DECLS
64#endif				/* __cplusplus */
65
66BEGIN_C_DECLS
67/****h* OpenSM/Constants
68* NAME
69*	Constants
70*
71* DESCRIPTION
72*	The following constants are used throughout the OpenSM.
73*
74* AUTHOR
75*	Steve King, Intel
76*
77*********/
78/****h* OpenSM/Base
79* NAME
80*	Base
81*
82* DESCRIPTION
83*	The Base object encapsulates basic information needed by the
84*	OpenSM to manage objects.  Each OpenSM object includes the
85*	Base object as the first member.
86*
87*	This object should be treated as opaque and should be
88*	manipulated only through the provided functions.
89*
90* AUTHOR
91*	Steve King, Intel
92*
93*********/
94/****s* OpenSM: Base/OSM_DEFAULT_M_KEY
95* NAME
96*	OSM_DEFAULT_M_KEY
97*
98* DESCRIPTION
99*	Managment key value used by the OpenSM.
100*
101* SYNOPSIS
102*/
103#define OSM_DEFAULT_M_KEY 0
104/********/
105/****s* OpenSM: Base/OSM_DEFAULT_SM_KEY
106* NAME
107*	OSM_DEFAULT_SM_KEY
108*
109* DESCRIPTION
110*	Subnet Manager key value used by the OpenSM.
111*
112* SYNOPSIS
113*/
114#define OSM_DEFAULT_SM_KEY CL_HTON64(1)
115/********/
116/****s* OpenSM: Base/OSM_DEFAULT_SA_KEY
117* NAME
118*	OSM_DEFAULT_SA_KEY
119*
120* DESCRIPTION
121*	Subnet Adminstration key value.
122*
123* SYNOPSIS
124*/
125#define OSM_DEFAULT_SA_KEY OSM_DEFAULT_SM_KEY
126/********/
127/****s* OpenSM: Base/OSM_DEFAULT_LMC
128* NAME
129*	OSM_DEFAULT_LMC
130*
131* DESCRIPTION
132*	Default LMC value used by the OpenSM.
133*
134* SYNOPSIS
135*/
136#define OSM_DEFAULT_LMC 0
137/********/
138/****s* OpenSM: Base/OSM_DEFAULT_MAX_OP_VLS
139* NAME
140*	OSM_DEFAULT_MAX_OP_VLS
141*
142* DESCRIPTION
143*	Default Maximal Operational VLs to be initialized on
144*  the link ports PortInfo by the OpenSM.
145*  Default value provides backward compatibility.
146*
147* SYNOPSIS
148*/
149#define OSM_DEFAULT_MAX_OP_VLS 5
150/********/
151/****s* OpenSM: Base/OSM_DEFAULT_SL
152* NAME
153*	OSM_DEFAULT_SL
154*
155* DESCRIPTION
156*	Default SL value used by the OpenSM.
157*
158* SYNOPSIS
159*/
160#define OSM_DEFAULT_SL 0
161/********/
162/****s* OpenSM: Base/OSM_DEFAULT_SCATTER_PORTS
163* NAME
164*	OSM_DEFAULT_SCATTER_PORTS
165*
166* DESCRIPTION
167*	Default Scatter Ports value used by OpenSM.
168*
169* SYNOPSIS
170*/
171#define OSM_DEFAULT_SCATTER_PORTS 0
172/********/
173/****s* OpenSM: Base/OSM_DEFAULT_SM_PRIORITY
174* NAME
175*	OSM_DEFAULT_SM_PRIORITY
176*
177* DESCRIPTION
178*	Default SM priority value used by the OpenSM,
179*	as defined in the SMInfo attribute.  0 is the lowest priority.
180*
181* SYNOPSIS
182*/
183#define OSM_DEFAULT_SM_PRIORITY 0
184/********/
185/****d* OpenSM: Base/OSM_DEFAULT_TMP_DIR
186* NAME
187*	OSM_DEFAULT_TMP_DIR
188*
189* DESCRIPTION
190*	Specifies the default temporary directory for the log file,
191*  osm-subnet.lst, and other log files.
192*
193* SYNOPSIS
194*/
195#ifdef __WIN__
196#define OSM_DEFAULT_TMP_DIR "%TEMP%\\"
197#else
198#define OSM_DEFAULT_TMP_DIR "/var/log/"
199#endif
200/***********/
201/****d* OpenSM: Base/OSM_DEFAULT_CACHE_DIR
202* NAME
203*	OSM_DEFAULT_CACHE_DIR
204*
205* DESCRIPTION
206*	Specifies the default cache directory for the db files.
207*
208* SYNOPSIS
209*/
210#ifdef __WIN__
211#define OSM_DEFAULT_CACHE_DIR "%TEMP%"
212#else
213#define OSM_DEFAULT_CACHE_DIR "/var/cache/opensm"
214#endif
215/***********/
216/****d* OpenSM: Base/OSM_DEFAULT_LOG_FILE
217* NAME
218*	OSM_DEFAULT_LOG_FILE
219*
220* DESCRIPTION
221*	Specifies the default log file name
222*
223* SYNOPSIS
224*/
225#ifdef __WIN__
226#define OSM_DEFAULT_LOG_FILE OSM_DEFAULT_TMP_DIR "osm.log"
227#else
228#define OSM_DEFAULT_LOG_FILE "/var/log/opensm.log"
229#endif
230/***********/
231
232/****d* OpenSM: Base/OSM_DEFAULT_CONFIG_FILE
233* NAME
234*	OSM_DEFAULT_CONFIG_FILE
235*
236* DESCRIPTION
237*	Specifies the default OpenSM config file name
238*
239* SYNOPSIS
240*/
241#if defined(HAVE_DEFAULT_OPENSM_CONFIG_FILE)
242#define OSM_DEFAULT_CONFIG_FILE HAVE_DEFAULT_OPENSM_CONFIG_FILE
243#elif defined (OPENSM_CONFIG_DIR)
244#define OSM_DEFAULT_CONFIG_FILE OPENSM_CONFIG_DIR "/opensm.conf"
245#else
246#define OSM_DEFAULT_CONFIG_FILE "/etc/opensm/opensm.conf"
247#endif
248/***********/
249
250/****d* OpenSM: Base/OSM_DEFAULT_PARTITION_CONFIG_FILE
251* NAME
252*	OSM_DEFAULT_PARTITION_CONFIG_FILE
253*
254* DESCRIPTION
255*	Specifies the default partition config file name
256*
257* SYNOPSIS
258*/
259#if defined(HAVE_DEFAULT_PARTITION_CONFIG_FILE)
260#define OSM_DEFAULT_PARTITION_CONFIG_FILE HAVE_DEFAULT_PARTITION_CONFIG_FILE
261#elif defined(OPENSM_CONFIG_DIR)
262#define OSM_DEFAULT_PARTITION_CONFIG_FILE OPENSM_CONFIG_DIR "/partitions.conf"
263#else
264#define OSM_DEFAULT_PARTITION_CONFIG_FILE "/etc/opensm/partitions.conf"
265#endif
266/***********/
267
268/****d* OpenSM: Base/OSM_DEFAULT_QOS_POLICY_FILE
269* NAME
270*	OSM_DEFAULT_QOS_POLICY_FILE
271*
272* DESCRIPTION
273*	Specifies the default QoS policy file name
274*
275* SYNOPSIS
276*/
277#if defined(HAVE_DEFAULT_QOS_POLICY_FILE)
278#define OSM_DEFAULT_QOS_POLICY_FILE HAVE_DEFAULT_QOS_POLICY_FILE
279#elif defined(OPENSM_CONFIG_DIR)
280#define OSM_DEFAULT_QOS_POLICY_FILE OPENSM_CONFIG_DIR "/qos-policy.conf"
281#else
282#define OSM_DEFAULT_QOS_POLICY_FILE "/etc/opensm/qos-policy.conf"
283#endif
284/***********/
285
286/****d* OpenSM: Base/OSM_DEFAULT_TORUS_CONF_FILE
287* NAME
288*	OSM_DEFAULT_TORUS_CONF_FILE
289*
290* DESCRIPTION
291*	Specifies the default file name for extra torus-2QoS configuration
292*
293* SYNOPSIS
294*/
295#ifdef __WIN__
296#define OSM_DEFAULT_TORUS_CONF_FILE strcat(GetOsmCachePath(), "osm-torus-2QoS.conf")
297#elif defined(OPENSM_CONFIG_DIR)
298#define OSM_DEFAULT_TORUS_CONF_FILE OPENSM_CONFIG_DIR "/torus-2QoS.conf"
299#else
300#define OSM_DEFAULT_TORUS_CONF_FILE "/etc/opensm/torus-2QoS.conf"
301#endif /* __WIN__ */
302/***********/
303
304/****d* OpenSM: Base/OSM_DEFAULT_PREFIX_ROUTES_FILE
305* NAME
306*	OSM_DEFAULT_PREFIX_ROUTES_FILE
307*
308* DESCRIPTION
309*	Specifies the default prefix routes file name
310*
311* SYNOPSIS
312*/
313#if defined(HAVE_DEFAULT_PREFIX_ROUTES_FILE)
314#define OSM_DEFAULT_PREFIX_ROUTES_FILE HAVE_DEFAULT_PREFIX_ROUTES_FILE
315#elif defined(OPENSM_CONFIG_DIR)
316#define OSM_DEFAULT_PREFIX_ROUTES_FILE OPENSM_CONFIG_DIR "/prefix-routes.conf"
317#else
318#define OSM_DEFAULT_PREFIX_ROUTES_FILE "/etc/opensm/prefix-routes.conf"
319#endif
320/***********/
321
322/****d* OpenSM: Base/OSM_DEFAULT_PER_MOD_LOGGING_CONF_FILE
323* NAME
324*	OSM_DEFAULT_PER_MOD_LOGGING_CONF_FILE
325*
326* DESCRIPTION
327*	Specifies the default file name for per module logging configuration
328*
329* SYNOPSIS
330*/
331#ifdef __WIN__
332#define OSM_DEFAULT_PER_MOD_LOGGING_CONF_FILE strcat(GetOsmCachePath(), "per-module-logging.conf")
333#elif defined(OPENSM_CONFIG_DIR)
334#define OSM_DEFAULT_PER_MOD_LOGGING_CONF_FILE OPENSM_CONFIG_DIR "/per-module-logging.conf"
335#else
336#define OSM_DEFAULT_PER_MOD_LOGGING_CONF_FILE "/etc/opensm/per-module-logging.conf"
337#endif /* __WIN__ */
338/***********/
339
340/****d* OpenSM: Base/OSM_DEFAULT_SWEEP_INTERVAL_SECS
341* NAME
342*	OSM_DEFAULT_SWEEP_INTERVAL_SECS
343*
344* DESCRIPTION
345*	Specifies the default number of seconds between subnet sweeps.
346*
347* SYNOPSIS
348*/
349#define OSM_DEFAULT_SWEEP_INTERVAL_SECS 10
350/***********/
351/****d* OpenSM: Base/OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC
352* NAME
353*	OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC
354*
355* DESCRIPTION
356*	Specifies the default transaction timeout in milliseconds.
357*
358* SYNOPSIS
359*/
360#define OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC 200
361/***********/
362/****d* OpenSM: Base/OSM_DEFAULT_SUBNET_TIMEOUT
363* NAME
364*	OSM_DEFAULT_SUBNET_TIMEOUT
365*
366* DESCRIPTION
367*	Specifies the default subnet timeout.
368*	timeout time = 4us * 2^timeout.
369*  We use here ~1sec.
370*
371* SYNOPSIS
372*/
373#define OSM_DEFAULT_SUBNET_TIMEOUT 0x12
374/***********/
375/****d* OpenSM: Base/OSM_DEFAULT_SWITCH_PACKET_LIFE
376* NAME
377*	OSM_DEFAULT_SWITCH_PACKET_LIFE
378*
379* DESCRIPTION
380*	Specifies the default max life time for a pcket on the switch.
381*	timeout time = 4us * 2^timeout.
382*  We use here the value of ~1sec
383*  A Value > 19dec disables this mechanism.
384*
385* SYNOPSIS
386*/
387#define OSM_DEFAULT_SWITCH_PACKET_LIFE 0x12
388/***********/
389/****d* OpenSM: Base/OSM_DEFAULT_HEAD_OF_QUEUE_LIFE
390* NAME
391*	OSM_DEFAULT_HEAD_OF_QUEUE_LIFE
392*
393* DESCRIPTION
394*	Sets the time a packet can live in the head of the VL Queue
395*  We use here the value of ~1sec
396*  A Value > 19dec disables this mechanism.
397*
398* SYNOPSIS
399*/
400#define OSM_DEFAULT_HEAD_OF_QUEUE_LIFE 0x12
401/***********/
402/****d* OpenSM: Base/OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE
403* NAME
404*	OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE
405*
406* DESCRIPTION
407*	Sets the time a packet can live in the head of the VL Queue
408*  of a port that drives a CA port.
409*  We use here the value of ~256msec
410*
411* SYNOPSIS
412*/
413#define OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE 0x10
414/***********/
415/****d* OpenSM: Base/OSM_DEFAULT_VL_STALL_COUNT
416* NAME
417*	OSM_DEFAULT_LEAF_VL_COUNT
418*
419* DESCRIPTION
420*	Sets the number of consecutive head of queue life time drops that
421*  puts the VL into stalled state. In stalled state, the port is supposed
422*  to drop everything for 8*(head of queue lifetime)
423*
424* SYNOPSIS
425*/
426#define OSM_DEFAULT_VL_STALL_COUNT 0x7
427/***********/
428/****d* OpenSM: Base/OSM_DEFAULT_LEAF_VL_STALL_COUNT
429* NAME
430*	OSM_DEFAULT_LEAF_VL_STALL_COUNT
431*
432* DESCRIPTION
433*	Sets the number of consecutive head of queue life time drops that
434*  puts the VL into stalled state. In stalled state, the port is supposed
435*  to drop everything for 8*(head of queue lifetime). This value is for
436*  switch ports driving a CA port.
437*
438* SYNOPSIS
439*/
440#define OSM_DEFAULT_LEAF_VL_STALL_COUNT 0x7
441/***********/
442/****d* OpenSM: Base/OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT
443* NAME
444*	OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT
445*
446* DESCRIPTION
447*	Specifies the default timeout for ignoring same trap.
448*	timeout time = 5000000us
449*  We use here ~5sec.
450*
451* SYNOPSIS
452*/
453#define OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT 5000000
454/***********/
455/****d* OpenSM: Base/OSM_DEFAULT_UNHEALTHY_TIMEOUT
456* NAME
457*	OSM_DEFAULT_UNHEALTHY_TIMEOUT
458*
459* DESCRIPTION
460*	Specifies the default timeout for setting port as unhealthy.
461*	timeout time = 60000000us
462*  We use here ~60sec.
463*
464* SYNOPSIS
465*/
466#define OSM_DEFAULT_UNHEALTHY_TIMEOUT 60000000
467/***********/
468/****d* OpenSM: Base/OSM_DEFAULT_ERROR_THRESHOLD
469* NAME
470*	OSM_DEFAULT_ERROR_THRESHOLD
471*
472* DESCRIPTION
473*	Specifies default link error threshold to be set by SubnSet(PortInfo).
474*
475* SYNOPSIS
476*/
477#define OSM_DEFAULT_ERROR_THRESHOLD 0x08
478/***********/
479/****d* OpenSM: Base/OSM_DEFAULT_SMP_MAX_ON_WIRE
480* NAME
481*	OSM_DEFAULT_SMP_MAX_ON_WIRE
482*
483* DESCRIPTION
484*	Specifies the default number of VL15 SMP MADs allowed on
485*	the wire at any one time.
486*
487* SYNOPSIS
488*/
489#define OSM_DEFAULT_SMP_MAX_ON_WIRE 4
490/***********/
491/****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_RCV_SIZE
492* NAME
493*	OSM_SM_DEFAULT_QP0_RCV_SIZE
494*
495* DESCRIPTION
496*	Specifies the default size (in MADs) of the QP0 receive queue
497*
498* SYNOPSIS
499*/
500#define OSM_SM_DEFAULT_QP0_RCV_SIZE 256
501/***********/
502/****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_SEND_SIZE
503* NAME
504*	OSM_SM_DEFAULT_QP0_SEND_SIZE
505*
506* DESCRIPTION
507*	Specifies the default size (in MADs) of the QP0 send queue
508*
509* SYNOPSIS
510*/
511#define OSM_SM_DEFAULT_QP0_SEND_SIZE 256
512/***********/
513/****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_RCV_SIZE
514* NAME
515*   OSM_SM_DEFAULT_QP1_RCV_SIZE
516*
517* DESCRIPTION
518*   Specifies the default size (in MADs) of the QP1 receive queue
519*
520* SYNOPSIS
521*/
522#define OSM_SM_DEFAULT_QP1_RCV_SIZE 256
523/***********/
524/****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_SEND_SIZE
525* NAME
526*   OSM_SM_DEFAULT_QP1_SEND_SIZE
527*
528* DESCRIPTION
529*   Specifies the default size (in MADs) of the QP1 send queue
530*
531* SYNOPSIS
532*/
533#define OSM_SM_DEFAULT_QP1_SEND_SIZE 256
534/****d* OpenSM: Base/OSM_PM_DEFAULT_QP1_RCV_SIZE
535* NAME
536*   OSM_PM_DEFAULT_QP1_RCV_SIZE
537*
538* DESCRIPTION
539*   Specifies the default size (in MADs) of the QP1 receive queue
540*
541* SYNOPSIS
542*/
543#define OSM_PM_DEFAULT_QP1_RCV_SIZE 256
544/***********/
545/****d* OpenSM: Base/OSM_PM_DEFAULT_QP1_SEND_SIZE
546* NAME
547*   OSM_PM_DEFAULT_QP1_SEND_SIZE
548*
549* DESCRIPTION
550*   Specifies the default size (in MADs) of the QP1 send queue
551*
552* SYNOPSIS
553*/
554#define OSM_PM_DEFAULT_QP1_SEND_SIZE 256
555/****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS
556* NAME
557*   OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS
558*
559* DESCRIPTION
560*   Specifies the polling timeout (in miliseconds) - the timeout
561*   between one poll to another.
562*
563* SYNOPSIS
564*/
565#define OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS 10000
566/**********/
567/****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_RETRY_NUMBER
568* NAME
569*   OSM_SM_DEFAULT_POLLING_RETRY_NUMBER
570*
571* DESCRIPTION
572*   Specifies the number of polling retries before the SM goes back
573*   to DISCOVERY stage. So the default total time for handoff is 40 sec.
574*
575* SYNOPSIS
576*/
577#define OSM_SM_DEFAULT_POLLING_RETRY_NUMBER 4
578/**********/
579/****d* OpenSM: MC Member Record Receiver/OSM_DEFAULT_MGRP_MTU
580* Name
581*	OSM_DEFAULT_MGRP_MTU
582*
583* DESCRIPTION
584*	Default MTU used for new MGRP creation (2048 bytes)
585*  Note it includes the MTUSelector which is set to "Greater Than"
586*
587* SYNOPSIS
588*/
589#define OSM_DEFAULT_MGRP_MTU 0x04
590/***********/
591/****d* OpenSM: MC Member Record Receiver/OSM_DEFAULT_MGRP_RATE
592* Name
593*	OSM_DEFAULT_MGRP_RATE
594*
595* DESCRIPTION
596*	Default RATE used for new MGRP creation (10Gb/sec)
597*  Note it includes the RateSelector which is set to "Greater Than"
598*
599* SYNOPSIS
600*/
601#define OSM_DEFAULT_MGRP_RATE 0x03
602/***********/
603/****d* OpenSM: MC Member Record Receiver/OSM_DEFAULT_MGRP_SCOPE
604* Name
605*	OSM_DEFAULT_MGRP_SCOPE
606*
607* DESCRIPTION
608*	Default SCOPE used for new MGRP creation (link local)
609*
610* SYNOPSIS
611*/
612#define OSM_DEFAULT_MGRP_SCOPE IB_MC_SCOPE_LINK_LOCAL
613/***********/
614/****d* OpenSM: Base/OSM_DEFAULT_QOS_MAX_VLS
615 * Name
616 *       OSM_DEFAULT_QOS_MAX_VLS
617 *
618 * DESCRIPTION
619 *       Default Maximum VLs used by the OpenSM.
620 *
621 * SYNOPSIS
622 */
623#define OSM_DEFAULT_QOS_MAX_VLS 15
624/***********/
625/****d* OpenSM: Base/OSM_DEFAULT_QOS_HIGH_LIMIT
626 * Name
627 *       OSM_DEFAULT_QOS_HIGH_LIMIT
628 *
629 * DESCRIPTION
630 *       Default Limit of High Priority in VL Arbitration used by OpenSM.
631 *
632 * SYNOPSIS
633 */
634#define OSM_DEFAULT_QOS_HIGH_LIMIT 0
635/***********/
636/****d* OpenSM: Base/OSM_DEFAULT_QOS_VLARB_HIGH
637 * Name
638 *       OSM_DEFAULT_QOS_VLARB_HIGH
639 *
640 * DESCRIPTION
641 *       Default High Priority VL Arbitration table used by the OpenSM.
642 *
643 * SYNOPSIS
644 */
645#define OSM_DEFAULT_QOS_VLARB_HIGH "0:4,1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0,10:0,11:0,12:0,13:0,14:0"
646/***********/
647/****d* OpenSM: Base/OSM_DEFAULT_QOS_VLARB_LOW
648 * Name
649 *       OSM_DEFAULT_QOS_VLARB_LOW
650 *
651 * DESCRIPTION
652 *       Default Low Priority VL Arbitration table used by the OpenSM.
653 *
654 * SYNOPSIS
655 */
656#define OSM_DEFAULT_QOS_VLARB_LOW "0:0,1:4,2:4,3:4,4:4,5:4,6:4,7:4,8:4,9:4,10:4,11:4,12:4,13:4,14:4"
657/***********/
658/****d* OpenSM: Base/OSM_DEFAULT_QOS_SL2VL
659 * Name
660 *       OSM_DEFAULT_QOS_SL2VL
661 *
662 * DESCRIPTION
663 *       Default QoS SL2VL Mapping Table used by the OpenSM.
664 *
665 * SYNOPSIS
666 */
667#define OSM_DEFAULT_QOS_SL2VL "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,7"
668/***********/
669/****d* OpenSM: Base/OSM_NO_PATH
670* NAME
671*	OSM_NO_PATH
672*
673* DESCRIPTION
674*	Value indicating there is no path to the given LID.
675*
676* SYNOPSIS
677*/
678#define OSM_NO_PATH			0xFF
679/**********/
680/****d* OpenSM: Base/OSM_NODE_DESC_UNKNOWN
681* NAME
682*	OSM_NODE_DESC_UNKNOWN
683*
684* DESCRIPTION
685*	Value indicating the Node Description is not set and is "unknown"
686*
687* SYNOPSIS
688*/
689#define OSM_NODE_DESC_UNKNOWN "<unknown>"
690/**********/
691/****d* OpenSM: Base/osm_thread_state_t
692* NAME
693*	osm_thread_state_t
694*
695* DESCRIPTION
696*	Enumerates the possible states of worker threads, such
697*	as the subnet sweeper.
698*
699* SYNOPSIS
700*/
701typedef enum _osm_thread_state {
702	OSM_THREAD_STATE_NONE = 0,
703	OSM_THREAD_STATE_INIT,
704	OSM_THREAD_STATE_RUN,
705	OSM_THREAD_STATE_EXIT
706} osm_thread_state_t;
707/***********/
708
709/*
710 * OSM_CAP are from IBA 1.2.1 Table 117 and Table 188
711 */
712
713/****d* OpenSM: Base/OSM_CAP_IS_TRAP_SUP
714* Name
715*	OSM_CAP_IS_SUBN_TRAP_SUP
716*
717* DESCRIPTION
718*	Management class generates Trap() MADs
719*
720* SYNOPSIS
721*/
722#define OSM_CAP_IS_SUBN_TRAP_SUP (1 << 0)
723/***********/
724
725/****d* OpenSM: Base/OSM_CAP_IS_GET_SET_NOTICE_SUP
726* Name
727*	OSM_CAP_IS_GET_SET_NOTICE_SUP
728*
729* DESCRIPTION
730*       Management class supports Get/Set(Notice)
731*
732* SYNOPSIS
733*/
734#define OSM_CAP_IS_SUBN_GET_SET_NOTICE_SUP (1 << 1)
735/***********/
736
737/****d* OpenSM: Base/OSM_CAP_IS_SUBN_OPT_RECS_SUP
738* Name
739*	OSM_CAP_IS_SUBN_OPT_RECS_SUP
740*
741* DESCRIPTION
742*	Support all optional attributes except:
743*  MCMemberRecord, TraceRecord, MultiPathRecord
744*
745* SYNOPSIS
746*/
747#define OSM_CAP_IS_SUBN_OPT_RECS_SUP (1 << 8)
748/***********/
749
750/****d* OpenSM: Base/OSM_CAP_IS_UD_MCAST_SUP
751* Name
752*	OSM_CAP_IS_UD_MCAST_SUP
753*
754* DESCRIPTION
755*	Multicast is supported
756*
757* SYNOPSIS
758*/
759#define OSM_CAP_IS_UD_MCAST_SUP (1 << 9)
760/***********/
761
762/****d* OpenSM: Base/OSM_CAP_IS_MULTIPATH_SUP
763* Name
764*	OSM_CAP_IS_MULTIPATH_SUP
765*
766* DESCRIPTION
767*	MultiPathRecord and TraceRecord are supported
768*
769* SYNOPSIS
770*/
771#define OSM_CAP_IS_MULTIPATH_SUP (1 << 10)
772/***********/
773
774/****d* OpenSM: Base/OSM_CAP_IS_REINIT_SUP
775* Name
776*	OSM_CAP_IS_REINIT_SUP
777*
778* DESCRIPTION
779*	SM/SA supports re-initialization supported
780*
781* SYNOPSIS
782*/
783#define OSM_CAP_IS_REINIT_SUP (1 << 11)
784/***********/
785
786/****d* OpenSM: Base/OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED
787* Name
788*	OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED
789*
790* DESCRIPTION
791*	SM/SA supports enhanced SA PortInfoRecord searches per 1.2 Errata:
792*  ClassPortInfo:CapabilityMask.IsPortInfoCapMaskMatchSupported is 1,
793*  then the AttributeModifier of the SubnAdmGet() and SubnAdmGetTable()
794*  methods affects the matching behavior on the PortInfo:CapabilityMask
795*  component. If the high-order bit (bit 31) of the AttributeModifier
796*  is set to 1, matching on the CapabilityMask component will not be an
797*  exact bitwise match as described in <ref to 15.4.4>.  Instead,
798*  matching will only be performed on those bits which are set to 1 in
799*  the PortInfo:CapabilityMask embedded in the query.
800*
801* SYNOPSIS
802*/
803#define OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED (1 << 13)
804/***********/
805
806/****d* OpenSM: Base/OSM_CAP2_IS_QOS_SUPPORTED
807* Name
808*	OSM_CAP2_IS_QOS_SUPPORTED
809*
810* DESCRIPTION
811*	QoS is supported
812*
813* SYNOPSIS
814*/
815#define OSM_CAP2_IS_QOS_SUPPORTED (1 << 1)
816/***********/
817
818/****d* OpenSM: Base/OSM_CAP2_IS_REVERSE_PATH_PKEY_SUPPPORTED
819* Name
820*	OSM_CAP2_IS_REVERSE_PATH_PKEY_SUPPPORTED
821*
822* DESCRIPTION
823*	Reverse path PKeys indicate in PathRecord responses
824*
825* SYNOPSIS
826*/
827#define OSM_CAP2_IS_REVERSE_PATH_PKEY_SUPPPORTED (1 << 2)
828/***********/
829
830/****d* OpenSM: Base/OSM_CAP2_IS_MCAST_TOP_SUPPORTED
831* Name
832*	OSM_CAP2_IS_MCAST_TOP_SUPPORTED
833*
834* DESCRIPTION
835*       SwitchInfo.MulticastFDBTop is supported
836*
837* SYNOPSIS
838*/
839#define OSM_CAP2_IS_MCAST_TOP_SUPPORTED (1 << 3)
840/***********/
841
842/****d* OpenSM: Base/OSM_CAP2_IS_HIERARCHY_SUPPORTED
843* Name
844*
845* DESCRIPTION
846*	Hierarchy info supported
847*
848* SYNOPSIS
849*/
850#define OSM_CAP2_IS_HIERARCHY_SUPPORTED (1 << 4)
851/***********/
852
853/****d* OpenSM: Base/OSM_CAP2_IS_ALIAS_GUIDS_SUPPORTED
854* Name
855*
856* DESCRIPTION
857*	Alias GUIDs supported
858*
859* SYNOPSIS
860*/
861#define OSM_CAP2_IS_ALIAS_GUIDS_SUPPORTED (1 << 5)
862/***********/
863
864/****d* OpenSM: Base/OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED
865* Name
866*	OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED
867*
868* DESCRIPTION
869*	Full PortInfoRecords supported
870*
871* SYNOPSIS
872*/
873#define OSM_CAP2_IS_FULL_PORTINFO_REC_SUPPORTED (1 << 6)
874/***********/
875
876/****d* OpenSM: Base/OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED
877* Name
878*	OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED
879*
880* DESCRIPTION
881*	Extended Link Speeds supported
882*
883* SYNOPSIS
884*/
885#define OSM_CAP2_IS_EXTENDED_SPEEDS_SUPPORTED (1 << 7)
886/***********/
887
888/****d* OpenSM: Base/OSM_CAP2_IS_MULTICAST_SERVICE_RECS_SUPPORTED
889 * Name
890 *	OSM_CAP2_IS_MULTICAST_SERVICE_RECS_SUPPORTED
891 *
892 * DESCRIPTION
893 *	Multicast Service Records supported
894 *
895 * SYNOPSIS
896 */
897#define OSM_CAP2_IS_MULTICAST_SERVICE_RECS_SUPPORTED (1 << 8)
898
899/****d* OpenSM: Base/OSM_CAP2_IS_PORT_INFO_CAPMASK2_MATCH_SUPPORTED
900 * Name
901 *	OSM_CAP2_IS_PORT_INFO_CAPMASK2_MATCH_SUPPORTED
902 *
903 * DESCRIPTION
904 *	CapMask2 matching for PortInfoRecord supported
905 *
906 * SYNOPSIS
907 */
908#define OSM_CAP2_IS_PORT_INFO_CAPMASK2_MATCH_SUPPORTED (1 << 10)
909
910/****d* OpenSM: Base/OSM_CAP2_IS_LINK_WIDTH_2X_SUPPORTED
911 * Name
912 *	OSM_CAP2_IS_LINK_WIDTH_2X_SUPPORTED
913 *
914 * DESCRIPTION
915 *	2x link widths supported
916 *
917 * SYNOPSIS
918 */
919#define OSM_CAP2_IS_LINK_WIDTH_2X_SUPPORTED (1 << 13)
920
921/****d* OpenSM: Base/osm_signal_t
922* NAME
923*	osm_signal_t
924*
925* DESCRIPTION
926*	Enumerates the possible signal codes used by the OSM managers
927*	This cannot be an enum type, since conversion to and from
928*	integral types is necessary when passing signals through
929*	the dispatcher.
930*
931* SYNOPSIS
932*/
933#define OSM_SIGNAL_NONE				0
934#define OSM_SIGNAL_SWEEP			1
935#define OSM_SIGNAL_IDLE_TIME_PROCESS_REQUEST	2
936#define OSM_SIGNAL_PERFMGR_SWEEP		3
937#define OSM_SIGNAL_GUID_PROCESS_REQUEST		4
938#define OSM_SIGNAL_MAX				5
939
940typedef unsigned int osm_signal_t;
941/***********/
942
943/****d* OpenSM: Base/osm_sm_signal_t
944* NAME
945*	osm_sm_signal_t
946*
947* DESCRIPTION
948*	Enumerates the possible signals used by the OSM_SM_MGR
949*
950* SYNOPSIS
951*/
952typedef enum _osm_sm_signal {
953	OSM_SM_SIGNAL_NONE = 0,
954	OSM_SM_SIGNAL_DISCOVERY_COMPLETED,
955	OSM_SM_SIGNAL_POLLING_TIMEOUT,
956	OSM_SM_SIGNAL_DISCOVER,
957	OSM_SM_SIGNAL_DISABLE,
958	OSM_SM_SIGNAL_HANDOVER,
959	OSM_SM_SIGNAL_HANDOVER_SENT,
960	OSM_SM_SIGNAL_ACKNOWLEDGE,
961	OSM_SM_SIGNAL_STANDBY,
962	OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED,
963	OSM_SM_SIGNAL_WAIT_FOR_HANDOVER,
964	OSM_SM_SIGNAL_MAX
965} osm_sm_signal_t;
966/***********/
967
968/****s* OpenSM: Base/MAX_GUID_FILE_LINE_LENGTH
969* NAME
970*	MAX_GUID_FILE_LINE_LENGTH
971*
972* DESCRIPTION
973*	The maximum line number when reading guid file
974*
975* SYNOPSIS
976*/
977#define MAX_GUID_FILE_LINE_LENGTH 120
978/**********/
979
980/****s* OpenSM: Base/VendorOUIs
981* NAME
982*	VendorOUIs
983*
984* DESCRIPTION
985*	Known device vendor ID and GUID OUIs
986*
987* SYNOPSIS
988*/
989#define OSM_VENDOR_ID_INTEL         0x00D0B7
990#define OSM_VENDOR_ID_MELLANOX      0x0002C9
991#define OSM_VENDOR_ID_REDSWITCH     0x000617
992#define OSM_VENDOR_ID_SILVERSTORM   0x00066A
993#define OSM_VENDOR_ID_TOPSPIN       0x0005AD
994#define OSM_VENDOR_ID_FUJITSU       0x00E000
995#define OSM_VENDOR_ID_FUJITSU2      0x000B5D
996#define OSM_VENDOR_ID_VOLTAIRE      0x0008F1
997#define OSM_VENDOR_ID_YOTTAYOTTA    0x000453
998#define OSM_VENDOR_ID_PATHSCALE     0x001175
999#define OSM_VENDOR_ID_IBM           0x000255
1000#define OSM_VENDOR_ID_DIVERGENET    0x00084E
1001#define OSM_VENDOR_ID_FLEXTRONICS   0x000B8C
1002#define OSM_VENDOR_ID_AGILENT       0x0030D3
1003#define OSM_VENDOR_ID_OBSIDIAN      0x001777
1004#define OSM_VENDOR_ID_BAYMICRO      0x000BC1
1005#define OSM_VENDOR_ID_LSILOGIC      0x00A0B8
1006#define OSM_VENDOR_ID_DDN           0x0001FF
1007#define OSM_VENDOR_ID_PANTA         0x001393
1008#define OSM_VENDOR_ID_HP            0x001708
1009#define OSM_VENDOR_ID_RIOWORKS      0x005045
1010#define OSM_VENDOR_ID_SUN           0x0003BA
1011#define OSM_VENDOR_ID_SUN2          0x002128
1012#define OSM_VENDOR_ID_3LEAFNTWKS    0x0016A1
1013#define OSM_VENDOR_ID_XSIGO         0x001397
1014#define OSM_VENDOR_ID_HP2           0x0018FE
1015#define OSM_VENDOR_ID_DELL          0x00188B
1016#define OSM_VENDOR_ID_SUPERMICRO    0x003048
1017#define OSM_VENDOR_ID_HP3           0x0019BB
1018#define OSM_VENDOR_ID_HP4           0x00237D
1019#define OSM_VENDOR_ID_OPENIB        0x001405
1020#define OSM_VENDOR_ID_IBM2	    0x5CF3FC
1021#define OSM_VENDOR_ID_MELLANOX2     0xF45214
1022#define OSM_VENDOR_ID_MELLANOX3     0x00258B
1023#define OSM_VENDOR_ID_MELLANOX4     0xE41D2D
1024#define OSM_VENDOR_ID_MELLANOX5     0x7CFE90
1025#define OSM_VENDOR_ID_BULL          0x080038
1026
1027/* IPoIB Broadcast Defaults */
1028#define OSM_IPOIB_BROADCAST_MGRP_QKEY 0x0b1b
1029extern const ib_gid_t osm_ipoib_broadcast_mgid;
1030
1031/**********/
1032
1033END_C_DECLS
1034#endif				/* _OSM_BASE_H_ */
1035