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