[OpenSM] patches for saquery porting - 3 of 6:
[mirror/winof/.git] / ulp / opensm / user / include / opensm / osm_base.h
1 /*\r
2  * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.\r
3  * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.\r
4  * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.\r
5  *\r
6  * This software is available to you under the OpenIB.org BSD license\r
7  * below:\r
8  *\r
9  *     Redistribution and use in source and binary forms, with or\r
10  *     without modification, are permitted provided that the following\r
11  *     conditions are met:\r
12  *\r
13  *      - Redistributions of source code must retain the above\r
14  *        copyright notice, this list of conditions and the following\r
15  *        disclaimer.\r
16  *\r
17  *      - Redistributions in binary form must reproduce the above\r
18  *        copyright notice, this list of conditions and the following\r
19  *        disclaimer in the documentation and/or other materials\r
20  *        provided with the distribution.\r
21  *\r
22  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
23  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
24  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
25  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
26  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
27  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
28  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
29  * SOFTWARE.\r
30  *\r
31  * $Id$\r
32  */\r
33 \r
34 \r
35 /*\r
36  * Abstract:\r
37  *      Basic OpenSM definitions and structures.\r
38  *      This object represents an OpenSM "base class".\r
39  *      This object is part of the OpenSM family of objects.\r
40  *\r
41  * Environment:\r
42  *      Linux User Mode\r
43  *\r
44  * $Revision: 1.15 $\r
45  */\r
46 \r
47 #ifndef _OSM_BASE_H_\r
48 #define _OSM_BASE_H_\r
49 \r
50 #ifdef __WIN__\r
51 #include <vendor/winosm_common.h>\r
52 #define OSM_CDECL __cdecl\r
53 #else\r
54 #define OSM_CDECL\r
55 #endif\r
56 \r
57 #include <complib/cl_types.h>\r
58 \r
59 #ifdef __cplusplus\r
60 #  define BEGIN_C_DECLS extern "C" {\r
61 #  define END_C_DECLS   }\r
62 #else /* !__cplusplus */\r
63 #  define BEGIN_C_DECLS\r
64 #  define END_C_DECLS\r
65 #endif /* __cplusplus */\r
66 \r
67 BEGIN_C_DECLS\r
68 \r
69 /****h* OpenSM/Constants\r
70 * NAME\r
71 *       Constants\r
72 *\r
73 * DESCRIPTION\r
74 *       The following constants are used throughout the OpenSM.\r
75 *\r
76 * AUTHOR\r
77 *       Steve King, Intel\r
78 *\r
79 *********/\r
80 \r
81 /****h* OpenSM/Base\r
82 * NAME\r
83 *       Base\r
84 *\r
85 * DESCRIPTION\r
86 *       The Base object encapsulates basic information needed by the\r
87 *       OpenSM to manage objects.  Each OpenSM object includes the\r
88 *       Base object as the first member.\r
89 *\r
90 *       This object should be treated as opaque and should be\r
91 *       manipulated only through the provided functions.\r
92 *\r
93 * AUTHOR\r
94 *       Steve King, Intel\r
95 *\r
96 *********/\r
97 \r
98 /****s* OpenSM: Base/OSM_DEFAULT_M_KEY\r
99 * NAME\r
100 *       OSM_DEFAULT_M_KEY\r
101 *\r
102 * DESCRIPTION\r
103 *       Managment key value used by the OpenSM.\r
104 *\r
105 * SYNOPSIS\r
106 */\r
107 #define OSM_DEFAULT_M_KEY 0\r
108 /********/\r
109 \r
110 /****s* OpenSM: Base/OSM_DEFAULT_SM_KEY\r
111 * NAME\r
112 *       OSM_DEFAULT_SM_KEY\r
113 *\r
114 * DESCRIPTION\r
115 *       Subnet Manager key value used by the OpenSM.\r
116 *\r
117 * SYNOPSIS\r
118 */\r
119 #define OSM_DEFAULT_SM_KEY 1\r
120 /********/\r
121 \r
122 /****s* OpenSM: Base/OSM_DEFAULT_SA_KEY\r
123 * NAME\r
124 *       OSM_DEFAULT_SA_KEY\r
125 *\r
126 * DESCRIPTION\r
127 *       Subnet Adminstration key value.\r
128 *\r
129 * SYNOPSIS\r
130 */\r
131 #define OSM_DEFAULT_SA_KEY OSM_DEFAULT_SM_KEY\r
132 /********/\r
133 \r
134 /****s* OpenSM: Base/OSM_DEFAULT_LMC\r
135 * NAME\r
136 *       OSM_DEFAULT_LMC\r
137 *\r
138 * DESCRIPTION\r
139 *       Default LMC value used by the OpenSM.\r
140 *\r
141 * SYNOPSIS\r
142 */\r
143 #define OSM_DEFAULT_LMC 0\r
144 /********/\r
145 \r
146 /****s* OpenSM: Base/OSM_DEFAULT_MAX_OP_VLS\r
147 * NAME\r
148 *       OSM_DEFAULT_MAX_OP_VLS\r
149 *\r
150 * DESCRIPTION\r
151 *       Default Maximal Operational VLs to be initialized on \r
152 *  the link ports PortInfo by the OpenSM.\r
153 *  Default value provides backward compatibility.\r
154 *\r
155 * SYNOPSIS\r
156 */\r
157 #define OSM_DEFAULT_MAX_OP_VLS 5\r
158 /********/\r
159 \r
160 /****s* OpenSM: Base/OSM_DEFAULT_SL\r
161 * NAME\r
162 *       OSM_DEFAULT_SL\r
163 *\r
164 * DESCRIPTION\r
165 *       Default SL value used by the OpenSM.\r
166 *\r
167 * SYNOPSIS\r
168 */\r
169 #define OSM_DEFAULT_SL 0\r
170 /********/\r
171 \r
172 /****s* OpenSM: Base/OSM_DEFAULT_SM_PRIORITY\r
173 * NAME\r
174 *       OSM_DEFAULT_SM_PRIORITY\r
175 *\r
176 * DESCRIPTION\r
177 *       Default SM priority value used by the OpenSM,\r
178 *       as defined in the SMInfo attribute.  0 is the lowest priority.\r
179 *\r
180 * SYNOPSIS\r
181 */\r
182 #define OSM_DEFAULT_SM_PRIORITY 1\r
183 /********/\r
184 \r
185 /****d* OpenSM: Base/OSM_DEFAULT_TMP_DIR\r
186 * NAME\r
187 *       OSM_DEFAULT_TMP_DIR\r
188 *\r
189 * DESCRIPTION\r
190 *       Specifies the default temporary directory for the log file,\r
191 *  osm-subnet.lst, and other log files.\r
192 *\r
193 * SYNOPSIS\r
194 */\r
195 #ifdef __WIN__\r
196 #define OSM_DEFAULT_TMP_DIR GetOsmTempPath()\r
197 #else\r
198 #define OSM_DEFAULT_TMP_DIR "/var/log/"\r
199 #endif\r
200 /***********/\r
201 \r
202 /****d* OpenSM: Base/OSM_DEFAULT_CACHE_DIR\r
203 * NAME\r
204 *       OSM_DEFAULT_CACHE_DIR\r
205 *\r
206 * DESCRIPTION\r
207 *       Specifies the default cache directory for the db files.\r
208 *       Note that the directory must appear with "/" ("\\" for windows) at the end.\r
209 *\r
210 * SYNOPSIS\r
211 */\r
212 #ifdef __WIN__\r
213 #define OSM_DEFAULT_CACHE_DIR GetOsmCachePath()\r
214 #else\r
215 #define OSM_DEFAULT_CACHE_DIR "/var/cache/osm/"\r
216 #endif\r
217 /***********/\r
218 \r
219 /****d* OpenSM: Base/OSM_DEFAULT_LOG_FILE\r
220 * NAME\r
221 *       OSM_DEFAULT_LOG_FILE\r
222 *\r
223 * DESCRIPTION\r
224 *       Specifies the default log file name\r
225 *\r
226 * SYNOPSIS\r
227 */\r
228 #ifdef __WIN__\r
229 #define OSM_DEFAULT_LOG_FILE strcat(GetOsmTempPath(), "osm.log")\r
230 #else\r
231 #define OSM_DEFAULT_LOG_FILE "/var/log/osm.log"\r
232 #endif\r
233 /***********/\r
234 \r
235 /****d* OpenSM: Base/OSM_DEFAULT_PARTITION_CONFIG_FILE\r
236 * NAME\r
237 *       OSM_DEFAULT_PARTITION_CONFIG_FILE\r
238 *\r
239 * DESCRIPTION\r
240 *       Specifies the default partition config file name\r
241 *\r
242 * SYNOPSIS\r
243 */\r
244 #ifdef __WIN__\r
245 #define OSM_DEFAULT_PARTITION_CONFIG_FILE strcat(GetOsmCachePath(), "osm-partitions.conf")\r
246 #else\r
247 #define OSM_DEFAULT_PARTITION_CONFIG_FILE "/etc/osm-partitions.conf"\r
248 #endif\r
249 /***********/\r
250 \r
251 /****d* OpenSM: Base/OSM_DEFAULT_SWEEP_INTERVAL_SECS\r
252 * NAME\r
253 *       OSM_DEFAULT_SWEEP_INTERVAL_SECS\r
254 *\r
255 * DESCRIPTION\r
256 *       Specifies the default number of seconds between subnet sweeps.\r
257 *\r
258 * SYNOPSIS\r
259 */\r
260 #define OSM_DEFAULT_SWEEP_INTERVAL_SECS 10\r
261 /***********/\r
262 \r
263 /****d* OpenSM: Base/OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC\r
264 * NAME\r
265 *       OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC\r
266 *\r
267 * DESCRIPTION\r
268 *       Specifies the default transaction timeout in milliseconds.\r
269 *\r
270 * SYNOPSIS\r
271 */\r
272 #define OSM_DEFAULT_TRANS_TIMEOUT_MILLISEC 200\r
273 /***********/\r
274 \r
275 /****d* OpenSM: Base/OSM_DEFAULT_SUBNET_TIMEOUT\r
276 * NAME\r
277 *       OSM_DEFAULT_SUBNET_TIMEOUT\r
278 *\r
279 * DESCRIPTION\r
280 *       Specifies the default transaction timeout.\r
281 *       timeout time = 4us * 2^timeout.\r
282 *  We use here ~1sec.\r
283 *\r
284 * SYNOPSIS\r
285 */\r
286 #define OSM_DEFAULT_SUBNET_TIMEOUT 0x12\r
287 /***********/\r
288 \r
289 /****d* OpenSM: Base/OSM_DEFAULT_SWITCH_PACKET_LIFE\r
290 * NAME\r
291 *       OSM_DEFAULT_SWITCH_PACKET_LIFE\r
292 *\r
293 * DESCRIPTION\r
294 *       Specifies the default max life time for a pcket on the switch.\r
295 *       timeout time = 4us * 2^timeout.\r
296 *  We use here the value of ~1sec\r
297 *  A Value > 19dec disables this mechanism.\r
298 *\r
299 * SYNOPSIS\r
300 */\r
301 #define OSM_DEFAULT_SWITCH_PACKET_LIFE 0x12\r
302 /***********/\r
303 \r
304 /****d* OpenSM: Base/OSM_DEFAULT_HEAD_OF_QUEUE_LIFE\r
305 * NAME\r
306 *       OSM_DEFAULT_HEAD_OF_QUEUE_LIFE\r
307 *\r
308 * DESCRIPTION\r
309 *       Sets the time a packet can live in the head of the VL Queue\r
310 *  We use here the value of ~1sec\r
311 *  A Value > 19dec disables this mechanism.\r
312 *\r
313 * SYNOPSIS\r
314 */\r
315 #define OSM_DEFAULT_HEAD_OF_QUEUE_LIFE 0x12\r
316 /***********/\r
317 \r
318 /****d* OpenSM: Base/OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE\r
319 * NAME\r
320 *       OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE\r
321 *\r
322 * DESCRIPTION\r
323 *       Sets the time a packet can live in the head of the VL Queue\r
324 *  of a port that drives a CA port.\r
325 *  We use here the value of ~130usec\r
326 *\r
327 * SYNOPSIS\r
328 */\r
329 #define OSM_DEFAULT_LEAF_HEAD_OF_QUEUE_LIFE 0xC\r
330 /***********/\r
331 \r
332 /****d* OpenSM: Base/OSM_DEFAULT_VL_STALL_COUNT\r
333 * NAME\r
334 *       OSM_DEFAULT_LEAF_VL_COUNT\r
335 *\r
336 * DESCRIPTION\r
337 *       Sets the number of consecutive head of queue life time drops that \r
338 *  puts the VL into stalled state. In stalled state, the port is supposed\r
339 *  to drop everything for 8*(head of queue lifetime) \r
340 *\r
341 * SYNOPSIS\r
342 */\r
343 #define OSM_DEFAULT_VL_STALL_COUNT 0x7\r
344 /***********/\r
345 \r
346 /****d* OpenSM: Base/OSM_DEFAULT_LEAF_VL_STALL_COUNT\r
347 * NAME\r
348 *       OSM_DEFAULT_LEAF_VL_STALL_COUNT\r
349 *\r
350 * DESCRIPTION\r
351 *       Sets the number of consecutive head of queue life time drops that \r
352 *  puts the VL into stalled state. In stalled state, the port is supposed\r
353 *  to drop everything for 8*(head of queue lifetime). This value is for\r
354 *  switch ports driving a CA port.\r
355 *  We use the value of 1 here - so any drop due to HOQ means stalling the VL\r
356 *\r
357 * SYNOPSIS\r
358 */\r
359 #define OSM_DEFAULT_LEAF_VL_STALL_COUNT 0x1\r
360 /***********/\r
361 \r
362 /****d* OpenSM: Base/OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT\r
363 * NAME\r
364 *       OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT\r
365 *\r
366 * DESCRIPTION\r
367 *       Specifies the default timeout for ignoring same trap.\r
368 *       timeout time = 5000000us\r
369 *  We use here ~5sec.\r
370 *\r
371 * SYNOPSIS\r
372 */\r
373 #define OSM_DEFAULT_TRAP_SUPRESSION_TIMEOUT 5000000\r
374 /***********/\r
375 \r
376 /****d* OpenSM: Base/OSM_DEFAULT_UNHEALTHY_TIMEOUT\r
377 * NAME\r
378 *       OSM_DEFAULT_UNHEALTHY_TIMEOUT\r
379 *\r
380 * DESCRIPTION\r
381 *       Specifies the default timeout for setting port as unhealthy.\r
382 *       timeout time = 60000000us\r
383 *  We use here ~60sec.\r
384 *\r
385 * SYNOPSIS\r
386 */\r
387 #define OSM_DEFAULT_UNHEALTHY_TIMEOUT 60000000\r
388 /***********/\r
389 \r
390 /****d* OpenSM: Base/OSM_DEFAULT_ERROR_THRESHOLD\r
391 * NAME\r
392 *       OSM_DEFAULT_ERROR_THRESHOLD\r
393 *\r
394 * DESCRIPTION\r
395 *       Specifies default link error threshold to be set by SubnMgt(Set.PortInfo).\r
396 *\r
397 * SYNOPSIS\r
398 */\r
399 #define OSM_DEFAULT_ERROR_THRESHOLD 0x08\r
400 /***********/\r
401 \r
402 /****d* OpenSM: Base/OSM_DEFAULT_SMP_MAX_ON_WIRE\r
403 * NAME\r
404 *       OSM_DEFAULT_SMP_MAX_ON_WIRE\r
405 *\r
406 * DESCRIPTION\r
407 *       Specifies the default number of VL15 SMP MADs allowed on \r
408 *       the wire at any one time.\r
409 *\r
410 * SYNOPSIS\r
411 */\r
412 #define OSM_DEFAULT_SMP_MAX_ON_WIRE 4\r
413 /***********/\r
414 \r
415 /****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_RCV_SIZE\r
416 * NAME\r
417 *       OSM_SM_DEFAULT_QP0_RCV_SIZE\r
418 *\r
419 * DESCRIPTION\r
420 *       Specifies the default size (in MADs) of the QP0 receive queue\r
421 *\r
422 * SYNOPSIS\r
423 */\r
424 #define OSM_SM_DEFAULT_QP0_RCV_SIZE 256\r
425 /***********/\r
426 \r
427 /****d* OpenSM: Base/OSM_SM_DEFAULT_QP0_SEND_SIZE\r
428 * NAME\r
429 *       OSM_SM_DEFAULT_QP0_SEND_SIZE\r
430 *\r
431 * DESCRIPTION\r
432 *       Specifies the default size (in MADs) of the QP0 send queue\r
433 *\r
434 * SYNOPSIS\r
435 */\r
436 #define OSM_SM_DEFAULT_QP0_SEND_SIZE 256\r
437 /***********/\r
438 \r
439 /****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_RCV_SIZE\r
440 * NAME\r
441 *   OSM_SM_DEFAULT_QP1_RCV_SIZE\r
442 *\r
443 * DESCRIPTION\r
444 *   Specifies the default size (in MADs) of the QP1 receive queue\r
445 *\r
446 * SYNOPSIS\r
447 */\r
448 #define OSM_SM_DEFAULT_QP1_RCV_SIZE 256\r
449 /***********/\r
450 \r
451 /****d* OpenSM: Base/OSM_SM_DEFAULT_QP1_SEND_SIZE\r
452 * NAME\r
453 *   OSM_SM_DEFAULT_QP1_SEND_SIZE\r
454 *\r
455 * DESCRIPTION\r
456 *   Specifies the default size (in MADs) of the QP1 send queue\r
457 *\r
458 * SYNOPSIS\r
459 */\r
460 #define OSM_SM_DEFAULT_QP1_SEND_SIZE 256\r
461 \r
462 \r
463 /****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS\r
464 * NAME\r
465 *   OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS\r
466 *\r
467 * DESCRIPTION\r
468 *   Specifies the polling timeout (in miliseconds) - the timeout\r
469 *   between one poll to another.\r
470 *\r
471 * SYNOPSIS\r
472 */\r
473 #define OSM_SM_DEFAULT_POLLING_TIMEOUT_MILLISECS 10000\r
474 /**********/\r
475 \r
476 /****d* OpenSM: Base/OSM_SM_DEFAULT_POLLING_RETRY_NUMBER\r
477 * NAME\r
478 *   OSM_SM_DEFAULT_POLLING_RETRY_NUMBER\r
479 *\r
480 * DESCRIPTION\r
481 *   Specifies the number of polling retries before the SM goes back\r
482 *   to DISCOVERY stage. So the default total time for handoff is 40 sec.\r
483 *\r
484 * SYNOPSIS\r
485 */\r
486 #define OSM_SM_DEFAULT_POLLING_RETRY_NUMBER 4\r
487 /**********/\r
488 \r
489 /****d* OpenSM: Base/OSM_NO_PATH\r
490 * NAME\r
491 *       OSM_NO_PATH\r
492 *\r
493 * DESCRIPTION\r
494 *       Value indicating there is no path to the given LID.\r
495 *\r
496 * SYNOPSIS\r
497 */\r
498 #define OSM_NO_PATH                     0xFF\r
499 /**********/\r
500 \r
501 /****d* OpenSM: Base/osm_thread_state_t\r
502 * NAME\r
503 *       osm_thread_state_t\r
504 *\r
505 * DESCRIPTION\r
506 *       Enumerates the possible states of worker threads, such\r
507 *       as the subnet sweeper.\r
508 *\r
509 * SYNOPSIS\r
510 */\r
511 typedef enum _osm_thread_state\r
512 {\r
513         OSM_THREAD_STATE_NONE = 0,\r
514         OSM_THREAD_STATE_INIT,\r
515         OSM_THREAD_STATE_RUN,\r
516         OSM_THREAD_STATE_EXIT\r
517 \r
518 } osm_thread_state_t;\r
519 /***********/\r
520 \r
521 /*\r
522  * OSM_CAP are from Table 117 and C15-0.1.7 Table 186\r
523  */\r
524 \r
525 /****d* OpenSM: Base/OSM_CAP_IS_TRAP_SUP\r
526 * Name\r
527 *       OSM_CAP_IS_SUBN_TRAP_SUP\r
528 *\r
529 * DESCRIPTION\r
530 *       Management class generates Trap() MADs\r
531 *\r
532 * SYNOPSIS\r
533 */\r
534 #define OSM_CAP_IS_SUBN_TRAP_SUP (1 << 0)\r
535 /***********/\r
536 \r
537 /****d* OpenSM: Base/OSM_CAP_IS_GET_SET_NOTICE_SUP\r
538 * Name\r
539 *       OSM_CAP_IS_GET_SET_NOTICE_SUP\r
540 *\r
541 * DESCRIPTION\r
542 *       Management class supports Get/Set(Notice)\r
543 *\r
544 * SYNOPSIS\r
545 */\r
546 #define OSM_CAP_IS_SUBN_GET_SET_NOTICE_SUP (1 << 1)\r
547 /***********/\r
548 \r
549 /****d* OpenSM: Base/OSM_CAP_IS_SUBN_OPT_RECS_SUP\r
550 * Name\r
551 *       OSM_CAP_IS_SUBN_OPT_RECS_SUP\r
552 *\r
553 * DESCRIPTION\r
554 *       Support all optional attributes except:\r
555 *  MCMemberRecord, TraceRecord, MultiPathRecord\r
556 *\r
557 * SYNOPSIS\r
558 */\r
559 #define OSM_CAP_IS_SUBN_OPT_RECS_SUP (1 << 8)\r
560 /***********/\r
561 \r
562 /****d* OpenSM: Base/OSM_CAP_IS_UD_MCAST_SUP\r
563 * Name\r
564 *       OSM_CAP_IS_UD_MCAST_SUP\r
565 *\r
566 * DESCRIPTION\r
567 *       Multicast is supported \r
568 *\r
569 * SYNOPSIS\r
570 */\r
571 #define OSM_CAP_IS_UD_MCAST_SUP (1 << 9)\r
572 /***********/\r
573 \r
574 /****d* OpenSM: Base/OSM_CAP_IS_MULTIPATH_SUP\r
575 * Name\r
576 *       OSM_CAP_IS_MULTIPATH_SUP\r
577 *\r
578 * DESCRIPTION\r
579 *       MultiPathRecord and TraceRecord are supported\r
580 *\r
581 * SYNOPSIS\r
582 */\r
583 #define OSM_CAP_IS_MULTIPATH_SUP (1 << 10)\r
584 /***********/\r
585 \r
586 /****d* OpenSM: Base/OSM_CAP_IS_REINIT_SUP\r
587 * Name\r
588 *       OSM_CAP_IS_REINIT_SUP\r
589 *\r
590 * DESCRIPTION\r
591 *       SM/SA supports re-initialization supported\r
592 *\r
593 * SYNOPSIS\r
594 */\r
595 #define OSM_CAP_IS_REINIT_SUP (1 << 11)\r
596 /***********/\r
597 \r
598 /****d* OpenSM: Base/OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED\r
599 * Name\r
600 *       OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED\r
601 *\r
602 * DESCRIPTION\r
603 *       SM/SA supports enhanced SA PortInfoRecord searches per 1.2 Errata:\r
604 *  ClassPortInfo:CapabilityMask.IsPortInfoCapMaskMatchSupported is 1, \r
605 *  then the AttributeModifier of the SubnAdmGet() and SubnAdmGetTable() \r
606 *  methods affects the matching behavior on the PortInfo:CapabilityMask \r
607 *  component. If the high-order bit (bit 31) of the AttributeModifier \r
608 *  is set to 1, matching on the CapabilityMask component will not be an \r
609 *  exact bitwise match as described in <ref to 15.4.4>.  Instead, \r
610 *  matching will only be performed on those bits which are set to 1 in \r
611 *  the PortInfo:CapabilityMask embedded in the query. \r
612 *\r
613 * SYNOPSIS\r
614 */\r
615 #define OSM_CAP_IS_PORT_INFO_CAPMASK_MATCH_SUPPORTED (1 << 13)\r
616 /***********/\r
617 \r
618 /****d* OpenSM: Base/osm_sm_state_t\r
619 * NAME\r
620 *       osm_sm_state_t\r
621 *\r
622 * DESCRIPTION\r
623 *       Enumerates the possible states of the SM object.\r
624 *\r
625 * SYNOPSIS\r
626 */\r
627 typedef enum _osm_sm_state\r
628 {\r
629         OSM_SM_STATE_NO_STATE = 0,\r
630         OSM_SM_STATE_INIT,\r
631         OSM_SM_STATE_IDLE,\r
632         OSM_SM_STATE_SWEEP_LIGHT,\r
633         OSM_SM_STATE_SWEEP_LIGHT_WAIT,\r
634         OSM_SM_STATE_SWEEP_HEAVY_SELF,\r
635         OSM_SM_STATE_SWEEP_HEAVY_SUBNET,\r
636         OSM_SM_STATE_SET_SM_UCAST_LID,\r
637         OSM_SM_STATE_SET_SM_UCAST_LID_WAIT,\r
638         OSM_SM_STATE_SET_SM_UCAST_LID_DONE,\r
639         OSM_SM_STATE_SET_SUBNET_UCAST_LIDS,\r
640         OSM_SM_STATE_SET_SUBNET_UCAST_LIDS_WAIT,\r
641         OSM_SM_STATE_SET_SUBNET_UCAST_LIDS_DONE,\r
642         OSM_SM_STATE_SET_UCAST_TABLES,\r
643         OSM_SM_STATE_SET_UCAST_TABLES_WAIT,\r
644         OSM_SM_STATE_SET_UCAST_TABLES_DONE,\r
645         OSM_SM_STATE_SET_MCAST_TABLES,\r
646         OSM_SM_STATE_SET_MCAST_TABLES_WAIT,\r
647         OSM_SM_STATE_SET_MCAST_TABLES_DONE,\r
648         OSM_SM_STATE_SET_LINK_PORTS,\r
649         OSM_SM_STATE_SET_LINK_PORTS_WAIT,\r
650         OSM_SM_STATE_SET_LINK_PORTS_DONE,\r
651         OSM_SM_STATE_SET_ARMED,\r
652         OSM_SM_STATE_SET_ARMED_WAIT,\r
653         OSM_SM_STATE_SET_ARMED_DONE,\r
654         OSM_SM_STATE_SET_ACTIVE,\r
655         OSM_SM_STATE_SET_ACTIVE_WAIT,\r
656         OSM_SM_STATE_LOST_NEGOTIATION,\r
657         OSM_SM_STATE_STANDBY,\r
658         OSM_SM_STATE_SUBNET_UP,\r
659         OSM_SM_STATE_PROCESS_REQUEST,\r
660         OSM_SM_STATE_PROCESS_REQUEST_WAIT,\r
661         OSM_SM_STATE_PROCESS_REQUEST_DONE,\r
662         OSM_SM_STATE_MASTER_OR_HIGHER_SM_DETECTED,\r
663         OSM_SM_STATE_SET_PKEY,\r
664         OSM_SM_STATE_SET_PKEY_WAIT,\r
665         OSM_SM_STATE_SET_PKEY_DONE,\r
666         OSM_SM_STATE_MAX\r
667 } osm_sm_state_t;\r
668 /***********/\r
669 \r
670 /****d* OpenSM: Base/osm_signal_t\r
671 * NAME\r
672 *       osm_signal_t\r
673 *\r
674 * DESCRIPTION\r
675 *       Enumerates the possible signal codes used by the OSM managers\r
676 *       This cannot be an enum type, since conversion to and from\r
677 *       integral types is necessary when passing signals through\r
678 *       the dispatcher.\r
679 *\r
680 * SYNOPSIS\r
681 */\r
682 #define OSM_SIGNAL_NONE                                                 0\r
683 #define OSM_SIGNAL_SWEEP                                                1\r
684 #define OSM_SIGNAL_CHANGE_DETECTED                              2\r
685 #define OSM_SIGNAL_NO_PENDING_TRANSACTIONS              3\r
686 #define OSM_SIGNAL_DONE                                                 4\r
687 #define OSM_SIGNAL_DONE_PENDING                                 5\r
688 #define OSM_SIGNAL_LOST_SM_NEGOTIATION                  6\r
689 #define OSM_SIGNAL_LIGHT_SWEEP_FAIL                             7\r
690 #define OSM_SIGNAL_IDLE_TIME_PROCESS                    8\r
691 #define OSM_SIGNAL_IDLE_TIME_PROCESS_REQUEST    9\r
692 #define OSM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED         10\r
693 #define OSM_SIGNAL_EXIT_STBY                11\r
694 #define OSM_SIGNAL_MAX                                                  12\r
695 \r
696 typedef uintn_t osm_signal_t;\r
697 /***********/\r
698 \r
699 /****d* OpenSM: Base/osm_state_mgr_mode_t\r
700 * NAME\r
701 *        osm_state_mgr_mode_t\r
702 *\r
703 * DESCRIPTION\r
704 *       Enumerates the possible state progressing codes used by the OSM \r
705 *       state manager.\r
706 *\r
707 * SYNOPSIS\r
708 */\r
709 typedef enum _osm_state_mgr_mode\r
710 {\r
711   OSM_STATE_STEP_CONTINUOUS = 0,\r
712   OSM_STATE_STEP_TAKE_ONE,\r
713   OSM_STATE_STEP_BREAK\r
714 } osm_state_mgr_mode_t;\r
715 /*\r
716 * OSM_STATE_STEP_CONTINUOUS \r
717 *    normal automatic progress mode\r
718 *\r
719 * OSM_STATE_STEP_TAKE_ONE \r
720 *    Do one step \r
721 *\r
722 * OSM_STATE_STEP_BREAK\r
723 *    Stop before taking next step (the while loop in the state \r
724 *    manager automatically change to this state).\r
725 *\r
726 **********/\r
727 \r
728 /****d* OpenSM: Base/osm_sm_signal_t\r
729 * NAME\r
730 *       osm_sm_signal_t\r
731 *\r
732 * DESCRIPTION\r
733 *       Enumerates the possible signals used by the OSM_SM_MGR\r
734 *\r
735 * SYNOPSIS\r
736 */\r
737 typedef enum _osm_sm_signal\r
738 {\r
739   OSM_SM_SIGNAL_INIT = 0,\r
740   OSM_SM_SIGNAL_DISCOVERY_COMPLETED,\r
741   OSM_SM_SIGNAL_POLLING_TIMEOUT,\r
742   OSM_SM_SIGNAL_DISCOVER,\r
743   OSM_SM_SIGNAL_DISABLE,\r
744   OSM_SM_SIGNAL_HANDOVER,\r
745   OSM_SM_SIGNAL_HANDOVER_SENT,\r
746   OSM_SM_SIGNAL_ACKNOWLEDGE,\r
747   OSM_SM_SIGNAL_STANDBY,\r
748   OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED,\r
749   OSM_SM_SIGNAL_MASTER_OR_HIGHER_SM_DETECTED_DONE,\r
750   OSM_SM_SIGNAL_WAIT_FOR_HANDOVER,\r
751   OSM_SM_SIGNAL_MAX\r
752 \r
753 } osm_sm_signal_t;\r
754 /***********/\r
755 \r
756 /****d* OpenSM/osm_mcast_req_type_t\r
757 * NAME\r
758 *       osm_mcast_req_type_t\r
759 *\r
760 * DESCRIPTION\r
761 *       Enumerates the possible signals used by the OSM_MCAST_REQUEST\r
762 *\r
763 * SYNOPSIS\r
764 */\r
765 typedef enum _osm_mcast_req_type\r
766 {\r
767   OSM_MCAST_REQ_TYPE_CREATE,\r
768   OSM_MCAST_REQ_TYPE_JOIN,\r
769   OSM_MCAST_REQ_TYPE_LEAVE,\r
770   OSM_MCAST_REQ_TYPE_SUBNET_CHANGE\r
771 \r
772 }       osm_mcast_req_type_t;\r
773 /***********/\r
774 \r
775 /****s* OpenSM: Base/MAX_UPDN_GUID_FILE_LINE_LENGTH\r
776 * NAME\r
777 *       MAX_UPDN_GUID_FILE_LINE_LENGTH\r
778 *\r
779 * DESCRIPTION\r
780 *       The maximum line number when reading updn guid file\r
781 *\r
782 * SYNOPSIS\r
783 */\r
784 #define MAX_UPDN_GUID_FILE_LINE_LENGTH 120\r
785 /**********/\r
786 \r
787 /****s* OpenSM: Base/VendorOUIs\r
788 * NAME\r
789 *       VendorOUIs\r
790 *\r
791 * DESCRIPTION\r
792 *       Known device vendor ID and GUID OUIs\r
793 *\r
794 * SYNOPSIS\r
795 */\r
796 #define OSM_VENDOR_ID_INTEL         0x00D0B7\r
797 #define OSM_VENDOR_ID_MELLANOX      0x0002C9\r
798 #define OSM_VENDOR_ID_REDSWITCH     0x000617\r
799 #define OSM_VENDOR_ID_SILVERSTORM   0x00066A\r
800 #define OSM_VENDOR_ID_TOPSPIN       0x0005AD\r
801 #define OSM_VENDOR_ID_FUJITSU       0x00E000\r
802 #define OSM_VENDOR_ID_FUJITSU2      0x000B5D\r
803 #define OSM_VENDOR_ID_VOLTAIRE      0x0008F1\r
804 #define OSM_VENDOR_ID_YOTTAYOTTA    0x000453\r
805 #define OSM_VENDOR_ID_PATHSCALE     0x001175\r
806 #define OSM_VENDOR_ID_IBM           0x000255\r
807 #define OSM_VENDOR_ID_DIVERGENET    0x00084E\r
808 #define OSM_VENDOR_ID_FLEXTRONICS   0x000B8C\r
809 #define OSM_VENDOR_ID_AGILENT       0x0030D3\r
810 #define OSM_VENDOR_ID_OBSIDIAN      0x001777\r
811 #define OSM_VENDOR_ID_BAYMICRO      0x000BC1\r
812 #define OSM_VENDOR_ID_LSILOGIC      0x00A0B8\r
813 #define OSM_VENDOR_ID_DDN           0x0001FF\r
814 #define OSM_VENDOR_ID_PANTA         0x001393\r
815 #define OSM_VENDOR_ID_HP            0x001708\r
816 #define OSM_VENDOR_ID_RIOWORKS      0x005045\r
817 \r
818 /**********/\r
819 \r
820 END_C_DECLS\r
821 \r
822 #endif  /* _OSM_BASE_H_ */\r
823 \r