2 * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
\r
3 * Copyright (c) 2004-2006 Voltaire, Inc. All rights reserved.
\r
4 * Copyright (c) 2002-2006 Mellanox Technologies LTD. All rights reserved.
\r
5 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
\r
7 * This software is available to you under the OpenIB.org BSD license
\r
10 * Redistribution and use in source and binary forms, with or
\r
11 * without modification, are permitted provided that the following
\r
12 * conditions are met:
\r
14 * - Redistributions of source code must retain the above
\r
15 * copyright notice, this list of conditions and the following
\r
18 * - Redistributions in binary form must reproduce the above
\r
19 * copyright notice, this list of conditions and the following
\r
20 * disclaimer in the documentation and/or other materials
\r
21 * provided with the distribution.
\r
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
24 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
25 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
26 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
\r
27 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
28 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
29 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
36 #if !defined(__IB_TYPES_H__)
\r
37 #define __IB_TYPES_H__
\r
39 #include <complib/cl_types.h>
\r
40 #include <complib/cl_byteswap.h>
\r
45 #define AL_INLINE static inline
\r
47 #if defined( EXPORT_AL_SYMBOLS )
\r
48 #define AL_EXPORT __declspec(dllexport)
\r
50 #define AL_EXPORT __declspec(dllimport)
\r
52 #define AL_API __stdcall
\r
53 #define AL_INLINE AL_EXPORT inline
\r
54 #endif /* CL_KERNEL */
\r
60 #endif /* __cplusplus */
\r
63 /****h* IBA Base/Constants
\r
68 * The following constants are used throughout the IBA code base.
\r
70 * Definitions are from the InfiniBand Architecture Specification v1.2
\r
74 /****d* IBA Base: Constants/MAD_BLOCK_SIZE
\r
79 * Size of a non-RMPP MAD datagram.
\r
83 #define MAD_BLOCK_SIZE 256
\r
86 /****d* IBA Base: Constants/MAD_RMPP_HDR_SIZE
\r
91 * Size of an RMPP header, including the common MAD header.
\r
95 #define MAD_RMPP_HDR_SIZE 36
\r
98 /****d* IBA Base: Constants/MAD_RMPP_DATA_SIZE
\r
100 * MAD_RMPP_DATA_SIZE
\r
103 * Size of an RMPP transaction data section.
\r
107 #define MAD_RMPP_DATA_SIZE (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)
\r
110 /****d* IBA Base: Constants/MAD_BLOCK_GRH_SIZE
\r
112 * MAD_BLOCK_GRH_SIZE
\r
115 * Size of a MAD datagram, including the GRH.
\r
119 #define MAD_BLOCK_GRH_SIZE 296
\r
122 /****d* IBA Base: Constants/IB_LID_PERMISSIVE
\r
124 * IB_LID_PERMISSIVE
\r
131 #define IB_LID_PERMISSIVE 0xFFFF
\r
134 /****d* IBA Base: Constants/IB_DEFAULT_PKEY
\r
139 * P_Key value for the default partition.
\r
143 #define IB_DEFAULT_PKEY 0xFFFF
\r
146 /****d* IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY
\r
148 * IB_QP1_WELL_KNOWN_Q_KEY
\r
151 * Well-known Q_Key for QP1 privileged mode access (15.4.2).
\r
155 #define IB_QP1_WELL_KNOWN_Q_KEY CL_NTOH32(0x80010000)
\r
159 #define IB_QP1 CL_NTOH32(1)
\r
161 #define IB_QP_PRIVILEGED_Q_KEY CL_NTOH32(0x80000000)
\r
163 /****d* IBA Base: Constants/IB_LID_UCAST_START
\r
165 * IB_LID_UCAST_START
\r
168 * Lowest valid unicast LID value.
\r
172 #define IB_LID_UCAST_START_HO 0x0001
\r
173 #define IB_LID_UCAST_START (CL_HTON16(IB_LID_UCAST_START_HO))
\r
176 /****d* IBA Base: Constants/IB_LID_UCAST_END
\r
181 * Highest valid unicast LID value.
\r
185 #define IB_LID_UCAST_END_HO 0xBFFF
\r
186 #define IB_LID_UCAST_END (CL_HTON16(IB_LID_UCAST_END_HO))
\r
189 /****d* IBA Base: Constants/IB_LID_MCAST_START
\r
191 * IB_LID_MCAST_START
\r
194 * Lowest valid multicast LID value.
\r
198 #define IB_LID_MCAST_START_HO 0xC000
\r
199 #define IB_LID_MCAST_START (CL_HTON16(IB_LID_MCAST_START_HO))
\r
202 /****d* IBA Base: Constants/IB_LID_MCAST_END
\r
207 * Highest valid multicast LID value.
\r
211 #define IB_LID_MCAST_END_HO 0xFFFE
\r
212 #define IB_LID_MCAST_END (CL_HTON16(IB_LID_MCAST_END_HO))
\r
215 /****d* IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX
\r
217 * IB_DEFAULT_SUBNET_PREFIX
\r
220 * Default subnet GID prefix.
\r
224 #define IB_DEFAULT_SUBNET_PREFIX (CL_HTON64(0xFE80000000000000ULL))
\r
227 /****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX
\r
229 * IB_NODE_NUM_PORTS_MAX
\r
232 * Maximum number of ports in a single node (14.2.5.7).
\r
235 #define IB_NODE_NUM_PORTS_MAX 0xFE
\r
238 /****d* IBA Base: Constants/IB_INVALID_PORT_NUM
\r
240 * IB_INVALID_PORT_NUM
\r
243 * Value used to indicate an invalid port number (14.2.5.10).
\r
247 #define IB_INVALID_PORT_NUM 0xFF
\r
250 /****d* IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX
\r
252 * IB_SUBNET_PATH_HOPS_MAX
\r
255 * Maximum number of directed route switch hops in a subnet (14.2.1.2).
\r
259 #define IB_SUBNET_PATH_HOPS_MAX 64
\r
262 /****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS
\r
264 * IB_PKEY_MAX_BLOCKS
\r
267 * Maximum number of PKEY blocks (14.2.5.7).
\r
271 #define IB_PKEY_MAX_BLOCKS 2048
\r
274 /****d* IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID
\r
276 * IB_MCAST_MAX_BLOCK_ID
\r
279 * Maximum number of Multicast port mask blocks
\r
283 #define IB_MCAST_MAX_BLOCK_ID 511
\r
286 /****d* IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO
\r
288 * IB_MCAST_BLOCK_ID_MASK_HO
\r
291 * Mask (host order) to recover the Multicast block ID.
\r
295 #define IB_MCAST_BLOCK_ID_MASK_HO 0x000001FF
\r
298 /****d* IBA Base: Constants/IB_MCAST_BLOCK_SIZE
\r
300 * IB_MCAST_BLOCK_SIZE
\r
303 * Number of port mask entries in a multicast forwarding table block.
\r
307 #define IB_MCAST_BLOCK_SIZE 32
\r
310 /****d* IBA Base: Constants/IB_MCAST_MASK_SIZE
\r
312 * IB_MCAST_MASK_SIZE
\r
315 * Number of port mask bits in each entry in the multicast forwarding table.
\r
319 #define IB_MCAST_MASK_SIZE 16
\r
322 /****d* IBA Base: Constants/IB_MCAST_POSITION_MASK_HO
\r
324 * IB_MCAST_POSITION_MASK_HO
\r
327 * Mask (host order) to recover the multicast block position.
\r
331 #define IB_MCAST_POSITION_MASK_HO 0xF0000000
\r
334 /****d* IBA Base: Constants/IB_MCAST_POSITION_MAX
\r
336 * IB_MCAST_POSITION_MAX
\r
339 * Maximum value for the multicast block position.
\r
343 #define IB_MCAST_POSITION_MAX 0xF
\r
346 /****d* IBA Base: Constants/IB_MCAST_POSITION_SHIFT
\r
348 * IB_MCAST_POSITION_SHIFT
\r
351 * Shift value to normalize the multicast block position value.
\r
355 #define IB_MCAST_POSITION_SHIFT 28
\r
358 /****d* IBA Base: Constants/IB_PKEY_ENTRIES_MAX
\r
360 * IB_PKEY_ENTRIES_MAX
\r
363 * Maximum number of PKEY entries per port (14.2.5.7).
\r
367 #define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_PKEY_BLOCK_SIZE)
\r
370 /****d* IBA Base: Constants/IB_PKEY_BASE_MASK
\r
372 * IB_PKEY_BASE_MASK
\r
375 * Masks for the base P_Key value given a P_Key Entry.
\r
379 #define IB_PKEY_BASE_MASK (CL_HTON16(0x7FFF))
\r
382 /****d* IBA Base: Constants/IB_PKEY_TYPE_MASK
\r
384 * IB_PKEY_TYPE_MASK
\r
387 * Masks for the P_Key membership type given a P_Key Entry.
\r
391 #define IB_PKEY_TYPE_MASK (CL_NTOH16(0x8000))
\r
394 /****d* IBA Base: Constants/IB_DEFAULT_PARTIAL_PKEY
\r
396 * IB_DEFAULT_PARTIAL_PKEY
\r
399 * 0x7FFF in network order
\r
403 #define IB_DEFAULT_PARTIAL_PKEY (CL_HTON16(0x7FFF))
\r
406 /****d* IBA Base: Constants/IB_MCLASS_SUBN_LID
\r
408 * IB_MCLASS_SUBN_LID
\r
411 * Subnet Management Class, Subnet Manager LID routed (13.4.4)
\r
415 #define IB_MCLASS_SUBN_LID 0x01
\r
418 /****d* IBA Base: Constants/IB_MCLASS_SUBN_DIR
\r
420 * IB_MCLASS_SUBN_DIR
\r
423 * Subnet Management Class, Subnet Manager directed route (13.4.4)
\r
427 #define IB_MCLASS_SUBN_DIR 0x81
\r
430 /****d* IBA Base: Constants/IB_MCLASS_SUBN_ADM
\r
432 * IB_MCLASS_SUBN_ADM
\r
435 * Subnet Management Class, Subnet Administration (13.4.4)
\r
439 #define IB_MCLASS_SUBN_ADM 0x03
\r
442 /****d* IBA Base: Constants/IB_MCLASS_PERF
\r
447 * Subnet Management Class, Performance Manager (13.4.4)
\r
451 #define IB_MCLASS_PERF 0x04
\r
454 /****d* IBA Base: Constants/IB_MCLASS_BM
\r
459 * Subnet Management Class, Baseboard Manager (13.4.4)
\r
463 #define IB_MCLASS_BM 0x05
\r
466 /****d* IBA Base: Constants/IB_MCLASS_DEV_MGMT
\r
468 * IB_MCLASS_DEV_MGMT
\r
471 * Subnet Management Class, Device Management (13.4.4)
\r
475 #define IB_MCLASS_DEV_MGMT 0x06
\r
478 /****d* IBA Base: Constants/IB_MCLASS_COMM_MGMT
\r
480 * IB_MCLASS_COMM_MGMT
\r
483 * Subnet Management Class, Communication Management (13.4.4)
\r
487 #define IB_MCLASS_COMM_MGMT 0x07
\r
490 /****d* IBA Base: Constants/IB_MCLASS_SNMP
\r
495 * Subnet Management Class, SNMP Tunneling (13.4.4)
\r
499 #define IB_MCLASS_SNMP 0x08
\r
502 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN
\r
504 * IB_MCLASS_VENDOR_LOW_RANGE_MIN
\r
507 * Subnet Management Class, Vendor Specific Low Range Start
\r
511 #define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09
\r
514 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
516 * IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
519 * Subnet Management Class, Vendor Specific Low Range End
\r
523 #define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f
\r
526 /****d* IBA Base: Constants/IB_MCLASS_DEV_ADM
\r
528 * IB_MCLASS_DEV_ADM
\r
531 * Subnet Management Class, Device Administration
\r
535 #define IB_MCLASS_DEV_ADM 0x10
\r
538 /****d* IBA Base: Constants/IB_MCLASS_BIS
\r
543 * Subnet Management Class, BIS
\r
547 #define IB_MCLASS_BIS 0x12
\r
550 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN
\r
552 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN
\r
555 * Subnet Management Class, Vendor Specific High Range Start
\r
559 #define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30
\r
562 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
564 * IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
567 * Subnet Management Class, Vendor Specific High Range End
\r
571 #define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f
\r
574 /****f* IBA Base: Types/ib_class_is_vendor_specific_low
\r
576 * ib_class_is_vendor_specific_low
\r
579 * Indicates if the Class Code if a vendor specific class from
\r
584 static inline boolean_t
\r
585 ib_class_is_vendor_specific_low(
\r
586 IN const uint8_t class_code )
\r
588 return( (class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&
\r
589 (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX)) ;
\r
594 * [in] The Management Datagram Class Code
\r
597 * TRUE if the class is in the Low range of Vendor Specific MADs
\r
603 * IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
606 /****f* IBA Base: Types/ib_class_is_vendor_specific_high
\r
608 * ib_class_is_vendor_specific_high
\r
611 * Indicates if the Class Code if a vendor specific class from
\r
616 static inline boolean_t
\r
617 ib_class_is_vendor_specific_high(
\r
618 IN const uint8_t class_code )
\r
620 return( (class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&
\r
621 (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX)) ;
\r
626 * [in] The Management Datagram Class Code
\r
629 * TRUE if the class is in the High range of Vendor Specific MADs
\r
635 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
639 /****f* IBA Base: Types/ib_class_is_vendor_specific
\r
641 * ib_class_is_vendor_specific
\r
644 * Indicates if the Class Code if a vendor specific class
\r
648 static inline boolean_t
\r
649 ib_class_is_vendor_specific(
\r
650 IN const uint8_t class_code )
\r
652 return( ib_class_is_vendor_specific_low(class_code) ||
\r
653 ib_class_is_vendor_specific_high(class_code) );
\r
658 * [in] The Management Datagram Class Code
\r
661 * TRUE if the class is a Vendor Specific MAD
\r
667 * ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high
\r
670 /****f* IBA Base: Types/ib_class_is_rmpp
\r
675 * Indicates if the Class Code supports RMPP
\r
679 AL_INLINE boolean_t AL_API
\r
681 IN const uint8_t class_code )
\r
683 return( (class_code == IB_MCLASS_SUBN_ADM) ||
\r
684 (class_code == IB_MCLASS_DEV_MGMT) ||
\r
685 (class_code == IB_MCLASS_DEV_ADM) ||
\r
686 (class_code == IB_MCLASS_BIS) ||
\r
687 ib_class_is_vendor_specific_high( class_code ) );
\r
692 * [in] The Management Datagram Class Code
\r
695 * TRUE if the class supports RMPP
\r
706 /****d* IBA Base: Constants/IB_MAX_METHOD
\r
711 * Total number of methods available to a class, not including the R-bit.
\r
715 #define IB_MAX_METHODS 128
\r
718 /****d* IBA Base: Constants/IB_MAD_METHOD_RESP_MASK
\r
720 * IB_MAD_METHOD_RESP_MASK
\r
723 * Response mask to extract 'R' bit from the method field. (13.4.5)
\r
727 #define IB_MAD_METHOD_RESP_MASK 0x80
\r
730 /****d* IBA Base: Constants/IB_MAD_METHOD_GET
\r
732 * IB_MAD_METHOD_GET
\r
735 * Get() Method (13.4.5)
\r
739 #define IB_MAD_METHOD_GET 0x01
\r
742 /****d* IBA Base: Constants/IB_MAD_METHOD_SET
\r
744 * IB_MAD_METHOD_SET
\r
747 * Set() Method (13.4.5)
\r
751 #define IB_MAD_METHOD_SET 0x02
\r
754 /****d* IBA Base: Constants/IB_MAD_METHOD_GET_RESP
\r
756 * IB_MAD_METHOD_GET_RESP
\r
759 * GetResp() Method (13.4.5)
\r
763 #define IB_MAD_METHOD_GET_RESP 0x81
\r
766 #define IB_MAD_METHOD_DELETE 0x15
\r
768 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE
\r
770 * IB_MAD_METHOD_GETTABLE
\r
773 * SubnAdmGetTable() Method (15.2.2)
\r
777 #define IB_MAD_METHOD_GETTABLE 0x12
\r
780 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP
\r
782 * IB_MAD_METHOD_GETTABLE_RESP
\r
785 * SubnAdmGetTableResp() Method (15.2.2)
\r
789 #define IB_MAD_METHOD_GETTABLE_RESP 0x92
\r
793 #define IB_MAD_METHOD_GETTRACETABLE 0x13
\r
794 #define IB_MAD_METHOD_GETMULTI 0x14
\r
795 #define IB_MAD_METHOD_GETMULTI_RESP 0x94
\r
798 /****d* IBA Base: Constants/IB_MAD_METHOD_SEND
\r
800 * IB_MAD_METHOD_SEND
\r
803 * Send() Method (13.4.5)
\r
807 #define IB_MAD_METHOD_SEND 0x03
\r
810 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP
\r
812 * IB_MAD_METHOD_TRAP
\r
815 * Trap() Method (13.4.5)
\r
819 #define IB_MAD_METHOD_TRAP 0x05
\r
822 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT
\r
824 * IB_MAD_METHOD_REPORT
\r
827 * Report() Method (13.4.5)
\r
831 #define IB_MAD_METHOD_REPORT 0x06
\r
834 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP
\r
836 * IB_MAD_METHOD_REPORT_RESP
\r
839 * ReportResp() Method (13.4.5)
\r
843 #define IB_MAD_METHOD_REPORT_RESP 0x86
\r
846 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS
\r
848 * IB_MAD_METHOD_TRAP_REPRESS
\r
851 * TrapRepress() Method (13.4.5)
\r
855 #define IB_MAD_METHOD_TRAP_REPRESS 0x07
\r
858 /****d* IBA Base: Constants/IB_MAD_STATUS_BUSY
\r
860 * IB_MAD_STATUS_BUSY
\r
863 * Temporarily busy, MAD discarded (13.4.7)
\r
867 #define IB_MAD_STATUS_BUSY (CL_HTON16(0x0001))
\r
870 /****d* IBA Base: Constants/IB_MAD_STATUS_REDIRECT
\r
872 * IB_MAD_STATUS_REDIRECT
\r
875 * QP Redirection required (13.4.7)
\r
879 #define IB_MAD_STATUS_REDIRECT (CL_HTON16(0x0002))
\r
882 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER
\r
884 * IB_MAD_STATUS_UNSUP_CLASS_VER
\r
887 * Unsupported class version (13.4.7)
\r
891 #define IB_MAD_STATUS_UNSUP_CLASS_VER (CL_HTON16(0x0004))
\r
894 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD
\r
896 * IB_MAD_STATUS_UNSUP_METHOD
\r
899 * Unsupported method (13.4.7)
\r
903 #define IB_MAD_STATUS_UNSUP_METHOD (CL_HTON16(0x0008))
\r
906 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR
\r
908 * IB_MAD_STATUS_UNSUP_METHOD_ATTR
\r
911 * Unsupported method/attribute combination (13.4.7)
\r
915 #define IB_MAD_STATUS_UNSUP_METHOD_ATTR (CL_HTON16(0x000C))
\r
918 /****d* IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD
\r
920 * IB_MAD_STATUS_INVALID_FIELD
\r
923 * Attribute contains one or more invalid fields (13.4.7)
\r
927 #define IB_MAD_STATUS_INVALID_FIELD (CL_HTON16(0x001C))
\r
930 #define IB_MAD_STATUS_CLASS_MASK (CL_HTON16(0xFF00))
\r
932 #define IB_SA_MAD_STATUS_SUCCESS (CL_HTON16(0x0000))
\r
933 #define IB_SA_MAD_STATUS_NO_RESOURCES (CL_HTON16(0x0100))
\r
934 #define IB_SA_MAD_STATUS_REQ_INVALID (CL_HTON16(0x0200))
\r
935 #define IB_SA_MAD_STATUS_NO_RECORDS (CL_HTON16(0x0300))
\r
936 #define IB_SA_MAD_STATUS_TOO_MANY_RECORDS (CL_HTON16(0x0400))
\r
937 #define IB_SA_MAD_STATUS_INVALID_GID (CL_HTON16(0x0500))
\r
938 #define IB_SA_MAD_STATUS_INSUF_COMPS (CL_HTON16(0x0600))
\r
940 #define IB_DM_MAD_STATUS_NO_IOC_RESP (CL_HTON16(0x0100))
\r
941 #define IB_DM_MAD_STATUS_NO_SVC_ENTRIES (CL_HTON16(0x0200))
\r
942 #define IB_DM_MAD_STATUS_IOC_FAILURE (CL_HTON16(0x8000))
\r
944 /****d* IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO
\r
946 * IB_MAD_ATTR_CLASS_PORT_INFO
\r
949 * ClassPortInfo attribute (13.4.8)
\r
953 #define IB_MAD_ATTR_CLASS_PORT_INFO (CL_NTOH16(0x0001))
\r
956 /****d* IBA Base: Constants/IB_MAD_ATTR_NOTICE
\r
958 * IB_MAD_ATTR_NOTICE
\r
961 * Notice attribute (13.4.8)
\r
965 #define IB_MAD_ATTR_NOTICE (CL_NTOH16(0x0002))
\r
968 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO
\r
970 * IB_MAD_ATTR_INFORM_INFO
\r
973 * InformInfo attribute (13.4.8)
\r
977 #define IB_MAD_ATTR_INFORM_INFO (CL_NTOH16(0x0003))
\r
980 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_DESC
\r
982 * IB_MAD_ATTR_NODE_DESC
\r
985 * NodeDescription attribute (14.2.5)
\r
989 #define IB_MAD_ATTR_NODE_DESC (CL_NTOH16(0x0010))
\r
991 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL
\r
993 * IB_MAD_ATTR_PORT_SMPL_CTRL
\r
996 * NodeDescription attribute (16.1.2)
\r
1000 #define IB_MAD_ATTR_PORT_SMPL_CTRL (CL_NTOH16(0x0010))
\r
1003 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_INFO
\r
1005 * IB_MAD_ATTR_NODE_INFO
\r
1008 * NodeInfo attribute (14.2.5)
\r
1012 #define IB_MAD_ATTR_NODE_INFO (CL_NTOH16(0x0011))
\r
1015 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT
\r
1017 * IB_MAD_ATTR_PORT_SMPL_RSLT
\r
1020 * NodeInfo attribute (16.1.2)
\r
1024 #define IB_MAD_ATTR_PORT_SMPL_RSLT (CL_NTOH16(0x0011))
\r
1027 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO
\r
1029 * IB_MAD_ATTR_SWITCH_INFO
\r
1032 * SwitchInfo attribute (14.2.5)
\r
1036 #define IB_MAD_ATTR_SWITCH_INFO (CL_NTOH16(0x0012))
\r
1039 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS
\r
1041 * IB_MAD_ATTR_PORT_CNTRS
\r
1044 * SwitchInfo attribute (16.1.2)
\r
1048 #define IB_MAD_ATTR_PORT_CNTRS (CL_NTOH16(0x0012))
\r
1051 /****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO
\r
1053 * IB_MAD_ATTR_GUID_INFO
\r
1056 * GUIDInfo attribute (14.2.5)
\r
1060 #define IB_MAD_ATTR_GUID_INFO (CL_NTOH16(0x0014))
\r
1063 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO
\r
1065 * IB_MAD_ATTR_PORT_INFO
\r
1068 * PortInfo attribute (14.2.5)
\r
1072 #define IB_MAD_ATTR_PORT_INFO (CL_NTOH16(0x0015))
\r
1075 /****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE
\r
1077 * IB_MAD_ATTR_P_KEY_TABLE
\r
1080 * PartitionTable attribute (14.2.5)
\r
1084 #define IB_MAD_ATTR_P_KEY_TABLE (CL_NTOH16(0x0016))
\r
1087 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE
\r
1089 * IB_MAD_ATTR_SLVL_TABLE
\r
1092 * SL VL Mapping Table attribute (14.2.5)
\r
1096 #define IB_MAD_ATTR_SLVL_TABLE (CL_NTOH16(0x0017))
\r
1099 /****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION
\r
1101 * IB_MAD_ATTR_VL_ARBITRATION
\r
1104 * VL Arbitration Table attribute (14.2.5)
\r
1108 #define IB_MAD_ATTR_VL_ARBITRATION (CL_NTOH16(0x0018))
\r
1111 /****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL
\r
1113 * IB_MAD_ATTR_LIN_FWD_TBL
\r
1116 * Switch linear forwarding table
\r
1120 #define IB_MAD_ATTR_LIN_FWD_TBL (CL_NTOH16(0x0019))
\r
1123 /****d* IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL
\r
1125 * IB_MAD_ATTR_RND_FWD_TBL
\r
1128 * Switch random forwarding table
\r
1132 #define IB_MAD_ATTR_RND_FWD_TBL (CL_NTOH16(0x001A))
\r
1135 /****d* IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL
\r
1137 * IB_MAD_ATTR_MCAST_FWD_TBL
\r
1140 * Switch multicast forwarding table
\r
1144 #define IB_MAD_ATTR_MCAST_FWD_TBL (CL_NTOH16(0x001B))
\r
1147 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD
\r
1149 * IB_MAD_ATTR_NODE_RECORD
\r
1152 * NodeRecord attribute (15.2.5)
\r
1156 #define IB_MAD_ATTR_NODE_RECORD (CL_NTOH16(0x0011))
\r
1159 /****d* IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD
\r
1161 * IB_MAD_ATTR_PORTINFO_RECORD
\r
1164 * PortInfoRecord attribute (15.2.5)
\r
1168 #define IB_MAD_ATTR_PORTINFO_RECORD (CL_NTOH16(0x0012))
\r
1171 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO_RECORD
\r
1173 * IB_MAD_ATTR_SWITCH_INFO_RECORD
\r
1176 * SwitchInfoRecord attribute (15.2.5)
\r
1180 #define IB_MAD_ATTR_SWITCH_INFO_RECORD (CL_NTOH16(0x0014))
\r
1183 /****d* IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD
\r
1185 * IB_MAD_ATTR_LINK_RECORD
\r
1188 * LinkRecord attribute (15.2.5)
\r
1192 #define IB_MAD_ATTR_LINK_RECORD (CL_NTOH16(0x0020))
\r
1195 /****d* IBA Base: Constants/IB_MAD_ATTR_SM_INFO
\r
1197 * IB_MAD_ATTR_SM_INFO
\r
1200 * SMInfo attribute (14.2.5)
\r
1204 #define IB_MAD_ATTR_SM_INFO (CL_NTOH16(0x0020))
\r
1207 /****d* IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD
\r
1209 * IB_MAD_ATTR_SMINFO_RECORD
\r
1212 * SMInfoRecord attribute (15.2.5)
\r
1216 #define IB_MAD_ATTR_SMINFO_RECORD (CL_NTOH16(0x0018))
\r
1219 /****d* IBA Base: Constants/IB_MAD_ATTR_GUIDINFO_RECORD
\r
1221 * IB_MAD_ATTR_GUIDINFO_RECORD
\r
1224 * GuidInfoRecord attribute (15.2.5)
\r
1228 #define IB_MAD_ATTR_GUIDINFO_RECORD (CL_NTOH16(0x0030))
\r
1231 /****d* IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG
\r
1233 * IB_MAD_ATTR_VENDOR_DIAG
\r
1236 * VendorDiag attribute (14.2.5)
\r
1240 #define IB_MAD_ATTR_VENDOR_DIAG (CL_NTOH16(0x0030))
\r
1243 /****d* IBA Base: Constants/IB_MAD_ATTR_LED_INFO
\r
1245 * IB_MAD_ATTR_LED_INFO
\r
1248 * LedInfo attribute (14.2.5)
\r
1252 #define IB_MAD_ATTR_LED_INFO (CL_NTOH16(0x0031))
\r
1255 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD
\r
1257 * IB_MAD_ATTR_SERVICE_RECORD
\r
1260 * ServiceRecord attribute (15.2.5)
\r
1264 #define IB_MAD_ATTR_SERVICE_RECORD (CL_NTOH16(0x0031))
\r
1267 /****d* IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD
\r
1269 * IB_MAD_ATTR_LFT_RECORD
\r
1272 * LinearForwardingTableRecord attribute (15.2.5.6)
\r
1276 #define IB_MAD_ATTR_LFT_RECORD (CL_NTOH16(0x0015))
\r
1279 /****d* IBA Base: Constants/IB_MAD_ATTR_MFT_RECORD
\r
1281 * IB_MAD_ATTR_MFT_RECORD
\r
1284 * MulticastForwardingTableRecord attribute (15.2.5.8)
\r
1288 #define IB_MAD_ATTR_MFT_RECORD (CL_NTOH16(0x0017))
\r
1291 /****d* IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD
\r
1293 * IB_MAD_ATTR_PKEYTBL_RECORD
\r
1296 * PKEY Table Record attribute (15.2.5)
\r
1300 #define IB_MAD_ATTR_PKEY_TBL_RECORD (CL_NTOH16(0x0033))
\r
1303 /****d* IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD
\r
1305 * IB_MAD_ATTR_PATH_RECORD
\r
1308 * PathRecord attribute (15.2.5)
\r
1312 #define IB_MAD_ATTR_PATH_RECORD (CL_NTOH16(0x0035))
\r
1315 /****d* IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD
\r
1317 * IB_MAD_ATTR_VLARB_RECORD
\r
1320 * VL Arbitration Table Record attribute (15.2.5)
\r
1324 #define IB_MAD_ATTR_VLARB_RECORD (CL_NTOH16(0x0036))
\r
1327 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD
\r
1329 * IB_MAD_ATTR_SLVL_RECORD
\r
1332 * SLtoVL Mapping Table Record attribute (15.2.5)
\r
1336 #define IB_MAD_ATTR_SLVL_RECORD (CL_NTOH16(0x0013))
\r
1339 /****d* IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD
\r
1341 * IB_MAD_ATTR_MCMEMBER_RECORD
\r
1344 * MCMemberRecord attribute (15.2.5)
\r
1348 #define IB_MAD_ATTR_MCMEMBER_RECORD (CL_NTOH16(0x0038))
\r
1351 /****d* IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD
\r
1353 * IB_MAD_ATTR_TRACE_RECORD
\r
1356 * TraceRecord attribute (15.2.5)
\r
1360 #define IB_MAD_ATTR_TRACE_RECORD (CL_NTOH16(0x0039))
\r
1363 /****d* IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD
\r
1365 * IB_MAD_ATTR_MULTIPATH_RECORD
\r
1368 * MultiPathRecord attribute (15.2.5)
\r
1372 #define IB_MAD_ATTR_MULTIPATH_RECORD (CL_NTOH16(0x003A))
\r
1375 /****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1377 * IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1380 * Service Association Record attribute (15.2.5)
\r
1384 #define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD (CL_NTOH16(0x003B))
\r
1387 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO_RECORD
\r
1389 * IB_MAD_ATTR_INFORM_INFO_RECORD
\r
1392 * InformInfo Record attribute (15.2.5)
\r
1396 #define IB_MAD_ATTR_INFORM_INFO_RECORD (CL_NTOH16(0x00F3))
\r
1398 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO
\r
1400 * IB_MAD_ATTR_IO_UNIT_INFO
\r
1403 * IOUnitInfo attribute (16.3.3)
\r
1407 #define IB_MAD_ATTR_IO_UNIT_INFO (CL_NTOH16(0x0010))
\r
1410 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_CONTROLLER_PROFILE
\r
1412 * IB_MAD_ATTR_IO_CONTROLLER_PROFILE
\r
1415 * IOControllerProfile attribute (16.3.3)
\r
1419 #define IB_MAD_ATTR_IO_CONTROLLER_PROFILE (CL_NTOH16(0x0011))
\r
1422 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES
\r
1424 * IB_MAD_ATTR_SERVICE_ENTRIES
\r
1427 * ServiceEntries attribute (16.3.3)
\r
1431 #define IB_MAD_ATTR_SERVICE_ENTRIES (CL_NTOH16(0x0012))
\r
1434 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
\r
1436 * IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
\r
1439 * DiagnosticTimeout attribute (16.3.3)
\r
1443 #define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT (CL_NTOH16(0x0020))
\r
1446 /****d* IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST
\r
1448 * IB_MAD_ATTR_PREPARE_TO_TEST
\r
1451 * PrepareToTest attribute (16.3.3)
\r
1455 #define IB_MAD_ATTR_PREPARE_TO_TEST (CL_NTOH16(0x0021))
\r
1458 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE
\r
1460 * IB_MAD_ATTR_TEST_DEVICE_ONCE
\r
1463 * TestDeviceOnce attribute (16.3.3)
\r
1467 #define IB_MAD_ATTR_TEST_DEVICE_ONCE (CL_NTOH16(0x0022))
\r
1470 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP
\r
1472 * IB_MAD_ATTR_TEST_DEVICE_LOOP
\r
1475 * TestDeviceLoop attribute (16.3.3)
\r
1479 #define IB_MAD_ATTR_TEST_DEVICE_LOOP (CL_NTOH16(0x0023))
\r
1482 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE
\r
1484 * IB_MAD_ATTR_DIAG_CODE
\r
1487 * DiagCode attribute (16.3.3)
\r
1491 #define IB_MAD_ATTR_DIAG_CODE (CL_NTOH16(0x0024))
\r
1494 /****d* IBA Base: Constants/IB_NODE_TYPE_CA
\r
1499 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1503 #define IB_NODE_TYPE_CA 0x01
\r
1506 /****d* IBA Base: Constants/IB_NODE_TYPE_SWITCH
\r
1508 * IB_NODE_TYPE_SWITCH
\r
1511 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1515 #define IB_NODE_TYPE_SWITCH 0x02
\r
1518 /****d* IBA Base: Constants/IB_NODE_TYPE_ROUTER
\r
1520 * IB_NODE_TYPE_ROUTER
\r
1523 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1527 #define IB_NODE_TYPE_ROUTER 0x03
\r
1530 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA
\r
1532 * IB_NOTICE_NODE_TYPE_CA
\r
1535 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1539 #define IB_NOTICE_NODE_TYPE_CA (CL_NTOH32(0x000001))
\r
1542 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH
\r
1544 * IB_NOTICE_NODE_TYPE_SWITCH
\r
1547 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1551 #define IB_NOTICE_NODE_TYPE_SWITCH (CL_NTOH32(0x000002))
\r
1554 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER
\r
1556 * IB_NOTICE_NODE_TYPE_ROUTER
\r
1559 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1563 #define IB_NOTICE_NODE_TYPE_ROUTER (CL_NTOH32(0x000003))
\r
1566 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT
\r
1568 * IB_NOTICE_NODE_TYPE_SUBN_MGMT
\r
1571 * Encoded generic node type used in MAD attributes (13.4.8.2).
\r
1572 * Note that this value is not defined for the NodeType field
\r
1573 * of the NodeInfo attribute (14.2.5.3).
\r
1577 #define IB_NOTICE_NODE_TYPE_SUBN_MGMT (CL_NTOH32(0x000004))
\r
1580 /****d* IBA Base: Constants/IB_MTU_LEN_TYPE
\r
1585 * Encoded path MTU.
\r
1591 * others: reserved
\r
1595 #define IB_MTU_LEN_256 1
\r
1596 #define IB_MTU_LEN_512 2
\r
1597 #define IB_MTU_LEN_1024 3
\r
1598 #define IB_MTU_LEN_2048 4
\r
1599 #define IB_MTU_LEN_4096 5
\r
1601 #define IB_MIN_MTU IB_MTU_LEN_256
\r
1602 #define IB_MAX_MTU IB_MTU_LEN_4096
\r
1606 /****d* IBA Base: Constants/IB_PATH_SELECTOR_TYPE
\r
1608 * IB_PATH_SELECTOR_TYPE
\r
1612 * 0: greater than specified
\r
1613 * 1: less than specified
\r
1614 * 2: exactly the specified
\r
1615 * 3: largest available
\r
1619 #define IB_PATH_SELECTOR_GREATER_THAN 0
\r
1620 #define IB_PATH_SELECTOR_LESS_THAN 1
\r
1621 #define IB_PATH_SELECTOR_EXACTLY 2
\r
1622 #define IB_PATH_SELECTOR_LARGEST 3
\r
1625 /****d* IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE
\r
1627 * IB_SMINFO_STATE_NOTACTIVE
\r
1630 * Encoded state value used in the SMInfo attribute.
\r
1634 #define IB_SMINFO_STATE_NOTACTIVE 0
\r
1637 /****d* IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING
\r
1639 * IB_SMINFO_STATE_DISCOVERING
\r
1642 * Encoded state value used in the SMInfo attribute.
\r
1646 #define IB_SMINFO_STATE_DISCOVERING 1
\r
1649 /****d* IBA Base: Constants/IB_SMINFO_STATE_STANDBY
\r
1651 * IB_SMINFO_STATE_STANDBY
\r
1654 * Encoded state value used in the SMInfo attribute.
\r
1658 #define IB_SMINFO_STATE_STANDBY 2
\r
1661 /****d* IBA Base: Constants/IB_SMINFO_STATE_MASTER
\r
1663 * IB_SMINFO_STATE_MASTER
\r
1666 * Encoded state value used in the SMInfo attribute.
\r
1670 #define IB_SMINFO_STATE_MASTER 3
\r
1673 /****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK
\r
1675 * IB_PATH_REC_SELECTOR_MASK
\r
1678 * Mask for the selector field for path record MTU, rate,
\r
1679 * and packet lifetime.
\r
1683 #define IB_PATH_REC_SELECTOR_MASK 0xC0
\r
1685 /****d* IBA Base: Constants/IB_MULTIPATH_REC_SELECTOR_MASK
\r
1687 * IB_MULTIPATH_REC_SELECTOR_MASK
\r
1690 * Mask for the selector field for multipath record MTU, rate,
\r
1691 * and packet lifetime.
\r
1695 #define IB_MULTIPATH_REC_SELECTOR_MASK 0xC0
\r
1698 /****d* IBA Base: Constants/IB_PATH_REC_BASE_MASK
\r
1700 * IB_PATH_REC_BASE_MASK
\r
1703 * Mask for the base value field for path record MTU, rate,
\r
1704 * and packet lifetime.
\r
1708 #define IB_PATH_REC_BASE_MASK 0x3F
\r
1711 /****d* IBA Base: Constants/IB_MULTIPATH_REC_BASE_MASK
\r
1713 * IB_MULTIPATH_REC_BASE_MASK
\r
1716 * Mask for the base value field for multipath record MTU, rate,
\r
1717 * and packet lifetime.
\r
1721 #define IB_MULTIPATH_REC_BASE_MASK 0x3F
\r
1724 /****h* IBA Base/Type Definitions
\r
1726 * Type Definitions
\r
1729 * Definitions are from the InfiniBand Architecture Specification v1.2
\r
1733 /****d* IBA Base: Types/ib_net16_t
\r
1738 * Defines the network ordered type for 16-bit values.
\r
1742 typedef uint16_t ib_net16_t;
\r
1745 /****d* IBA Base: Types/ib_net32_t
\r
1750 * Defines the network ordered type for 32-bit values.
\r
1754 typedef uint32_t ib_net32_t;
\r
1757 /****d* IBA Base: Types/ib_net64_t
\r
1762 * Defines the network ordered type for 64-bit values.
\r
1766 typedef uint64_t ib_net64_t;
\r
1769 /****d* IBA Base: Types/ib_gid_prefix_t
\r
1777 typedef ib_net64_t ib_gid_prefix_t;
\r
1780 /****d* IBA Base: Constants/ib_link_states_t
\r
1782 * ib_link_states_t
\r
1785 * Defines the link states of a port.
\r
1789 #define IB_LINK_NO_CHANGE 0
\r
1790 #define IB_LINK_DOWN 1
\r
1791 #define IB_LINK_INIT 2
\r
1792 #define IB_LINK_ARMED 3
\r
1793 #define IB_LINK_ACTIVE 4
\r
1794 #define IB_LINK_ACT_DEFER 5
\r
1797 static const char* const __ib_node_type_str[] =
\r
1800 "Channel Adapter",
\r
1803 "Subnet Management"
\r
1806 /****f* IBA Base: Types/ib_get_node_type_str
\r
1808 * ib_get_node_type_str
\r
1811 * Returns a string for the specified node type.
\r
1815 AL_INLINE const char* AL_API
\r
1816 ib_get_node_type_str(
\r
1817 IN uint8_t node_type )
\r
1819 if( node_type >= IB_NODE_TYPE_ROUTER )
\r
1821 return( __ib_node_type_str[node_type] );
\r
1826 * [in] Encoded node type as returned in the NodeInfo attribute.
\r
1829 * Pointer to the node type string.
\r
1837 static const char* const __ib_port_state_str[] =
\r
1839 "No State Change (NOP)",
\r
1848 /****f* IBA Base: Types/ib_get_port_state_str
\r
1850 * ib_get_port_state_str
\r
1853 * Returns a string for the specified port state.
\r
1857 AL_INLINE const char* AL_API
\r
1858 ib_get_port_state_str(
\r
1859 IN uint8_t port_state )
\r
1861 if( port_state > IB_LINK_ACTIVE )
\r
1862 port_state = IB_LINK_ACTIVE + 1;
\r
1863 return( __ib_port_state_str[port_state] );
\r
1868 * [in] Encoded port state as returned in the PortInfo attribute.
\r
1871 * Pointer to the port state string.
\r
1879 /****f* IBA Base: Types/ib_get_port_state_from_str
\r
1881 * ib_get_port_state_from_str
\r
1884 * Returns a string for the specified port state.
\r
1888 AL_INLINE const uint8_t AL_API
\r
1889 ib_get_port_state_from_str(
\r
1890 IN char* p_port_state_str )
\r
1892 if( !strncmp(p_port_state_str,"No State Change (NOP)",12) )
\r
1894 else if( !strncmp(p_port_state_str, "DOWN",4) )
\r
1896 else if( !strncmp(p_port_state_str, "INIT", 4) )
\r
1898 else if( !strncmp(p_port_state_str,"ARMED", 5) )
\r
1900 else if( !strncmp(p_port_state_str, "ACTIVE", 6) )
\r
1902 else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )
\r
1908 * p_port_state_str
\r
1909 * [in] A string matching one returned by ib_get_port_state_str
\r
1912 * The appropriate code.
\r
1920 /****d* IBA Base: Constants/Join States
\r
1925 * Defines the join state flags for multicast group management.
\r
1929 #define IB_JOIN_STATE_FULL 1
\r
1930 #define IB_JOIN_STATE_NON 2
\r
1931 #define IB_JOIN_STATE_SEND_ONLY 4
\r
1934 /****f* IBA Base: Types/ib_pkey_get_base
\r
1936 * ib_pkey_get_base
\r
1939 * Returns the base P_Key value with the membership bit stripped.
\r
1943 AL_INLINE ib_net16_t AL_API
\r
1945 IN const ib_net16_t pkey )
\r
1947 return( (ib_net16_t)(pkey & IB_PKEY_BASE_MASK) );
\r
1952 * [in] P_Key value
\r
1955 * Returns the base P_Key value with the membership bit stripped.
\r
1962 /****f* IBA Base: Types/ib_pkey_is_full_member
\r
1964 * ib_pkey_is_full_member
\r
1967 * Indicates if the port is a full member of the parition.
\r
1971 AL_INLINE boolean_t AL_API
\r
1972 ib_pkey_is_full_member(
\r
1973 IN const ib_net16_t pkey )
\r
1975 return( (pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK );
\r
1980 * [in] P_Key value
\r
1983 * TRUE if the port is a full member of the partition.
\r
1984 * FALSE otherwise.
\r
1989 * ib_pkey_get_base, ib_net16_t
\r
1992 /****f* IBA Base: Types/ib_pkey_is_invalid
\r
1994 * ib_pkey_is_invalid
\r
1997 * Returns TRUE if the given P_Key is an invalid P_Key
\r
1998 * C10-116: the CI shall regard a P_Key as invalid if its low-order
\r
1999 * 15 bits are all zero...
\r
2003 static inline boolean_t
\r
2004 ib_pkey_is_invalid(
\r
2005 IN const ib_net16_t pkey )
\r
2007 if (ib_pkey_get_base(pkey) == 0x0000)
\r
2015 * [in] P_Key value
\r
2018 * Returns the base P_Key value with the membership bit stripped.
\r
2025 /****d* IBA Base: Types/ib_gid_t
\r
2033 #include <complib/cl_packon.h>
\r
2034 typedef union _ib_gid
\r
2037 struct _ib_gid_unicast
\r
2039 ib_gid_prefix_t prefix;
\r
2040 ib_net64_t interface_id;
\r
2042 } PACK_SUFFIX unicast;
\r
2044 struct _ib_gid_multicast
\r
2046 uint8_t header[2];
\r
2047 uint8_t raw_group_id[14];
\r
2049 } PACK_SUFFIX multicast;
\r
2051 } PACK_SUFFIX ib_gid_t;
\r
2052 #include <complib/cl_packoff.h>
\r
2056 * GID represented as an unformated byte array.
\r
2059 * Typical unicast representation with subnet prefix and
\r
2063 * Representation for multicast use.
\r
2068 /****f* IBA Base: Types/ib_gid_is_multicast
\r
2070 * ib_gid_is_multicast
\r
2073 * Returns a boolean indicating whether a GID is a multicast GID.
\r
2077 AL_INLINE boolean_t AL_API
\r
2078 ib_gid_is_multicast(
\r
2079 IN const ib_gid_t* p_gid )
\r
2081 return( p_gid->raw[0] == 0xFF );
\r
2084 /****f* IBA Base: Types/ib_gid_get_scope
\r
2086 * ib_gid_get_scope
\r
2089 * Returns scope of (assumed) multicast GID.
\r
2093 AL_INLINE uint8_t AL_API
\r
2094 ib_mgid_get_scope(
\r
2095 IN const ib_gid_t* p_gid )
\r
2097 return( p_gid->raw[1] & 0x0F );
\r
2100 /****f* IBA Base: Types/ib_gid_set_scope
\r
2102 * ib_gid_set_scope
\r
2105 * Sets scope of (assumed) multicast GID.
\r
2109 AL_INLINE void AL_API
\r
2110 ib_mgid_set_scope(
\r
2111 IN ib_gid_t* const p_gid,
\r
2112 IN const uint8_t scope )
\r
2114 p_gid->raw[1] &= 0xF0;
\r
2115 p_gid->raw[1] |= scope & 0x0F;
\r
2118 /****f* IBA Base: Types/ib_gid_set_default
\r
2120 * ib_gid_set_default
\r
2123 * Sets a GID to the default value.
\r
2127 AL_INLINE void AL_API
\r
2128 ib_gid_set_default(
\r
2129 IN ib_gid_t* const p_gid,
\r
2130 IN const ib_net64_t interface_id )
\r
2132 p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;
\r
2133 p_gid->unicast.interface_id = interface_id;
\r
2138 * [in] Pointer to the GID object.
\r
2141 * [in] Manufacturer assigned EUI64 value of a port.
\r
2152 /****f* IBA Base: Types/ib_gid_get_subnet_prefix
\r
2154 * ib_gid_get_subnet_prefix
\r
2157 * Gets the subnet prefix from a GID.
\r
2161 AL_INLINE ib_net64_t AL_API
\r
2162 ib_gid_get_subnet_prefix(
\r
2163 IN const ib_gid_t* const p_gid )
\r
2165 return( p_gid->unicast.prefix );
\r
2170 * [in] Pointer to the GID object.
\r
2173 * 64-bit subnet prefix value.
\r
2181 /****f* IBA Base: Types/ib_gid_is_link_local
\r
2183 * ib_gid_is_link_local
\r
2186 * Returns TRUE if the unicast GID scoping indicates link local,
\r
2187 * FALSE otherwise.
\r
2191 static inline boolean_t
\r
2192 ib_gid_is_link_local(
\r
2193 IN const ib_gid_t* const p_gid )
\r
2195 return( ib_gid_get_subnet_prefix( p_gid ) == IB_DEFAULT_SUBNET_PREFIX );
\r
2200 * [in] Pointer to the GID object.
\r
2203 * Returns TRUE if the unicast GID scoping indicates link local,
\r
2204 * FALSE otherwise.
\r
2212 /****f* IBA Base: Types/ib_gid_is_site_local
\r
2214 * ib_gid_is_site_local
\r
2217 * Returns TRUE if the unicast GID scoping indicates site local,
\r
2218 * FALSE otherwise.
\r
2222 static inline boolean_t
\r
2223 ib_gid_is_site_local(
\r
2224 IN const ib_gid_t* const p_gid )
\r
2226 return( ( ib_gid_get_subnet_prefix( p_gid ) &
\r
2227 CL_HTON64( 0xFFFFFFFFFFFF0000ULL ) ) == CL_HTON64( 0xFEC0000000000000ULL ) );
\r
2232 * [in] Pointer to the GID object.
\r
2235 * Returns TRUE if the unicast GID scoping indicates site local,
\r
2236 * FALSE otherwise.
\r
2244 /****f* IBA Base: Types/ib_gid_get_guid
\r
2249 * Gets the guid from a GID.
\r
2253 AL_INLINE ib_net64_t AL_API
\r
2255 IN const ib_gid_t* const p_gid )
\r
2257 return( p_gid->unicast.interface_id );
\r
2262 * [in] Pointer to the GID object.
\r
2265 * 64-bit GUID value.
\r
2273 /****s* IBA Base: Types/ib_field32_t
\r
2278 * Represents a 32-bit field, and allows access as a 32-bit network byte
\r
2279 * ordered or a 4-byte array.
\r
2283 #include <complib/cl_packon.h>
\r
2284 typedef union _ib_field32_t
\r
2289 } PACK_SUFFIX ib_field32_t;
\r
2290 #include <complib/cl_packoff.h>
\r
2294 * Full field value.
\r
2297 * Byte array representing the field. The byte array provides identical
\r
2298 * access independently from CPU byte-ordering.
\r
2301 /****s* IBA Base: Types/ib_path_rec_t
\r
2306 * Path records encapsulate the properties of a given
\r
2307 * route between two end-points on a subnet.
\r
2311 #include <complib/cl_packon.h>
\r
2312 typedef __declspec(align(8)) struct _ib_path_rec
\r
2319 ib_field32_t hop_flow_raw;
\r
2327 uint8_t preference;
\r
2331 } PACK_SUFFIX ib_path_rec_t;
\r
2332 #include <complib/cl_packoff.h>
\r
2339 * GID of destination port.
\r
2342 * GID of source port.
\r
2345 * LID of destination port.
\r
2348 * LID of source port.
\r
2351 * Global routing parameters: hop count, flow label and raw bit.
\r
2354 * Another global routing parameter.
\r
2357 * Reversible path - 1 bit to say if path is reversible.
\r
2358 * num_path [6:0] In queries, maximum number of paths to return.
\r
2359 * In responses, undefined.
\r
2362 * Partition key (P_Key) to use on this path.
\r
2368 * Service level to use on this path.
\r
2371 * MTU and MTU selector fields to use on this path
\r
2374 * Rate and rate selector fields to use on this path.
\r
2380 * Indicates the relative merit of this path versus other path
\r
2381 * records returned from the SA. Lower numbers are better.
\r
2391 /* Path Record Component Masks */
\r
2392 #define IB_PR_COMPMASK_DGID (CL_HTON64(((uint64_t)1)<<2))
\r
2393 #define IB_PR_COMPMASK_SGID (CL_HTON64(((uint64_t)1)<<3))
\r
2394 #define IB_PR_COMPMASK_DLID (CL_HTON64(((uint64_t)1)<<4))
\r
2395 #define IB_PR_COMPMASK_SLID (CL_HTON64(((uint64_t)1)<<5))
\r
2396 #define IB_PR_COMPMASK_RAWTRAFFIC (CL_HTON64(((uint64_t)1)<<6))
\r
2397 #define IB_PR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<7))
\r
2398 #define IB_PR_COMPMASK_FLOWLABEL (CL_HTON64(((uint64_t)1)<<8))
\r
2399 #define IB_PR_COMPMASK_HOPLIMIT (CL_HTON64(((uint64_t)1)<<9))
\r
2400 #define IB_PR_COMPMASK_TCLASS (CL_HTON64(((uint64_t)1)<<10))
\r
2401 #define IB_PR_COMPMASK_REVERSIBLE (CL_HTON64(((uint64_t)1)<<11))
\r
2402 #define IB_PR_COMPMASK_NUM_PATH (CL_HTON64(((uint64_t)1)<<12))
\r
2403 #define IB_PR_COMPMASK_PKEY (CL_HTON64(((uint64_t)1)<<13))
\r
2404 #define IB_PR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<14))
\r
2405 #define IB_PR_COMPMASK_SL (CL_HTON64(((uint64_t)1)<<15))
\r
2406 #define IB_PR_COMPMASK_MTUSELEC (CL_HTON64(((uint64_t)1)<<16))
\r
2407 #define IB_PR_COMPMASK_MTU (CL_HTON64(((uint64_t)1)<<17))
\r
2408 #define IB_PR_COMPMASK_RATESELEC (CL_HTON64(((uint64_t)1)<<18))
\r
2409 #define IB_PR_COMPMASK_RATE (CL_HTON64(((uint64_t)1)<<19))
\r
2410 #define IB_PR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<20))
\r
2411 #define IB_PR_COMPMASK_PKTLIFETIME (CL_HTON64(((uint64_t)1)<<21))
\r
2413 /* Link Record Component Masks */
\r
2414 #define IB_LR_COMPMASK_FROM_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2415 #define IB_LR_COMPMASK_FROM_PORT (CL_HTON64(((uint64_t)1)<<1))
\r
2416 #define IB_LR_COMPMASK_TO_PORT (CL_HTON64(((uint64_t)1)<<2))
\r
2417 #define IB_LR_COMPMASK_TO_LID (CL_HTON64(((uint64_t)1)<<3))
\r
2419 /* VL Arbitration Record Masks */
\r
2420 #define IB_VLA_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2421 #define IB_VLA_COMPMASK_OUT_PORT (CL_HTON64(((uint64_t)1)<<1))
\r
2422 #define IB_VLA_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<2))
\r
2424 /* SLtoVL Mapping Record Masks */
\r
2425 #define IB_SLVL_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2426 #define IB_SLVL_COMPMASK_IN_PORT (CL_HTON64(((uint64_t)1)<<1))
\r
2427 #define IB_SLVL_COMPMASK_OUT_PORT (CL_HTON64(((uint64_t)1)<<2))
\r
2429 /* P_Key Table Record Masks */
\r
2430 #define IB_PKEY_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2431 #define IB_PKEY_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<1))
\r
2432 #define IB_PKEY_COMPMASK_PORT (CL_HTON64(((uint64_t)1)<<2))
\r
2434 /* Switch Info Record Masks */
\r
2435 #define IB_SWIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2436 #define IB_SWIR_COMPMASK_RESERVED1 (CL_HTON64(((uint64_t)1)<<1))
\r
2438 /* LFT Record Masks */
\r
2439 #define IB_LFTR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2440 #define IB_LFTR_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<1))
\r
2442 /* MFT Record Masks */
\r
2443 #define IB_MFTR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2444 #define IB_MFTR_COMPMASK_POSITION (CL_HTON64(((uint64_t)1)<<1))
\r
2445 #define IB_MFTR_COMPMASK_RESERVED1 (CL_HTON64(((uint64_t)1)<<2))
\r
2446 #define IB_MFTR_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<3))
\r
2447 #define IB_MFTR_COMPMASK_RESERVED2 (CL_HTON64(((uint64_t)1)<<4))
\r
2449 /* NodeInfo Record Masks */
\r
2450 #define IB_NR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2451 #define IB_NR_COMPMASK_RESERVED1 (CL_HTON64(((uint64_t)1)<<1))
\r
2452 #define IB_NR_COMPMASK_BASEVERSION (CL_HTON64(((uint64_t)1)<<2))
\r
2453 #define IB_NR_COMPMASK_CLASSVERSION (CL_HTON64(((uint64_t)1)<<3))
\r
2454 #define IB_NR_COMPMASK_NODETYPE (CL_HTON64(((uint64_t)1)<<4))
\r
2455 #define IB_NR_COMPMASK_NUMPORTS (CL_HTON64(((uint64_t)1)<<5))
\r
2456 #define IB_NR_COMPMASK_SYSIMAGEGUID (CL_HTON64(((uint64_t)1)<<6))
\r
2457 #define IB_NR_COMPMASK_NODEGUID (CL_HTON64(((uint64_t)1)<<7))
\r
2458 #define IB_NR_COMPMASK_PORTGUID (CL_HTON64(((uint64_t)1)<<8))
\r
2459 #define IB_NR_COMPMASK_PARTCAP (CL_HTON64(((uint64_t)1)<<9))
\r
2460 #define IB_NR_COMPMASK_DEVID (CL_HTON64(((uint64_t)1)<<10))
\r
2461 #define IB_NR_COMPMASK_REV (CL_HTON64(((uint64_t)1)<<11))
\r
2462 #define IB_NR_COMPMASK_PORTNUM (CL_HTON64(((uint64_t)1)<<12))
\r
2463 #define IB_NR_COMPMASK_VENDID (CL_HTON64(((uint64_t)1)<<13))
\r
2464 #define IB_NR_COMPMASK_NODEDESC (CL_HTON64(((uint64_t)1)<<14))
\r
2466 /* Service Record Component Masks Sec 15.2.5.14 Ver 1.1*/
\r
2467 #define IB_SR_COMPMASK_SID (CL_HTON64(((uint64_t)1)<<0))
\r
2468 #define IB_SR_COMPMASK_SGID (CL_HTON64(((uint64_t)1)<<1))
\r
2469 #define IB_SR_COMPMASK_SPKEY (CL_HTON64(((uint64_t)1)<<2))
\r
2470 #define IB_SR_COMPMASK_RES1 (CL_HTON64(((uint64_t)1)<<3))
\r
2471 #define IB_SR_COMPMASK_SLEASE (CL_HTON64(((uint64_t)1)<<4))
\r
2472 #define IB_SR_COMPMASK_SKEY (CL_HTON64(((uint64_t)1)<<5))
\r
2473 #define IB_SR_COMPMASK_SNAME (CL_HTON64(((uint64_t)1)<<6))
\r
2474 #define IB_SR_COMPMASK_SDATA8_0 (CL_HTON64(((uint64_t)1)<<7))
\r
2475 #define IB_SR_COMPMASK_SDATA8_1 (CL_HTON64(((uint64_t)1)<<8))
\r
2476 #define IB_SR_COMPMASK_SDATA8_2 (CL_HTON64(((uint64_t)1)<<9))
\r
2477 #define IB_SR_COMPMASK_SDATA8_3 (CL_HTON64(((uint64_t)1)<<10))
\r
2478 #define IB_SR_COMPMASK_SDATA8_4 (CL_HTON64(((uint64_t)1)<<11))
\r
2479 #define IB_SR_COMPMASK_SDATA8_5 (CL_HTON64(((uint64_t)1)<<12))
\r
2480 #define IB_SR_COMPMASK_SDATA8_6 (CL_HTON64(((uint64_t)1)<<13))
\r
2481 #define IB_SR_COMPMASK_SDATA8_7 (CL_HTON64(((uint64_t)1)<<14))
\r
2482 #define IB_SR_COMPMASK_SDATA8_8 (CL_HTON64(((uint64_t)1)<<15))
\r
2483 #define IB_SR_COMPMASK_SDATA8_9 (CL_HTON64(((uint64_t)1)<<16))
\r
2484 #define IB_SR_COMPMASK_SDATA8_10 (CL_HTON64(((uint64_t)1)<<17))
\r
2485 #define IB_SR_COMPMASK_SDATA8_11 (CL_HTON64(((uint64_t)1)<<18))
\r
2486 #define IB_SR_COMPMASK_SDATA8_12 (CL_HTON64(((uint64_t)1)<<19))
\r
2487 #define IB_SR_COMPMASK_SDATA8_13 (CL_HTON64(((uint64_t)1)<<20))
\r
2488 #define IB_SR_COMPMASK_SDATA8_14 (CL_HTON64(((uint64_t)1)<<21))
\r
2489 #define IB_SR_COMPMASK_SDATA8_15 (CL_HTON64(((uint64_t)1)<<22))
\r
2490 #define IB_SR_COMPMASK_SDATA16_0 (CL_HTON64(((uint64_t)1)<<23))
\r
2491 #define IB_SR_COMPMASK_SDATA16_1 (CL_HTON64(((uint64_t)1)<<24))
\r
2492 #define IB_SR_COMPMASK_SDATA16_2 (CL_HTON64(((uint64_t)1)<<25))
\r
2493 #define IB_SR_COMPMASK_SDATA16_3 (CL_HTON64(((uint64_t)1)<<26))
\r
2494 #define IB_SR_COMPMASK_SDATA16_4 (CL_HTON64(((uint64_t)1)<<27))
\r
2495 #define IB_SR_COMPMASK_SDATA16_5 (CL_HTON64(((uint64_t)1)<<28))
\r
2496 #define IB_SR_COMPMASK_SDATA16_6 (CL_HTON64(((uint64_t)1)<<29))
\r
2497 #define IB_SR_COMPMASK_SDATA16_7 (CL_HTON64(((uint64_t)1)<<30))
\r
2498 #define IB_SR_COMPMASK_SDATA32_0 (CL_HTON64(((uint64_t)1)<<31))
\r
2499 #define IB_SR_COMPMASK_SDATA32_1 (CL_HTON64(((uint64_t)1)<<32))
\r
2500 #define IB_SR_COMPMASK_SDATA32_2 (CL_HTON64(((uint64_t)1)<<33))
\r
2501 #define IB_SR_COMPMASK_SDATA32_3 (CL_HTON64(((uint64_t)1)<<34))
\r
2502 #define IB_SR_COMPMASK_SDATA64_0 (CL_HTON64(((uint64_t)1)<<35))
\r
2503 #define IB_SR_COMPMASK_SDATA64_1 (CL_HTON64(((uint64_t)1)<<36))
\r
2505 /* Port Info Record Component Masks */
\r
2506 #define IB_PIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2507 #define IB_PIR_COMPMASK_PORTNUM (CL_HTON64(((uint64_t)1)<<1))
\r
2508 #define IB_PIR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<2))
\r
2509 #define IB_PIR_COMPMASK_MKEY (CL_HTON64(((uint64_t)1)<<3))
\r
2510 #define IB_PIR_COMPMASK_GIDPRE (CL_HTON64(((uint64_t)1)<<4))
\r
2511 #define IB_PIR_COMPMASK_BASELID (CL_HTON64(((uint64_t)1)<<5))
\r
2512 #define IB_PIR_COMPMASK_SMLID (CL_HTON64(((uint64_t)1)<<6))
\r
2513 #define IB_PIR_COMPMASK_CAPMASK (CL_HTON64(((uint64_t)1)<<7))
\r
2514 #define IB_PIR_COMPMASK_DIAGCODE (CL_HTON64(((uint64_t)1)<<8))
\r
2515 #define IB_PIR_COMPMASK_MKEYLEASEPRD (CL_HTON64(((uint64_t)1)<<9))
\r
2516 #define IB_PIR_COMPMASK_LOCALPORTNUM (CL_HTON64(((uint64_t)1)<<10))
\r
2517 #define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(((uint64_t)1)<<11))
\r
2518 #define IB_PIR_COMPMASK_LNKWIDTHSUPPORT (CL_HTON64(((uint64_t)1)<<12))
\r
2519 #define IB_PIR_COMPMASK_LNKWIDTHACTIVE (CL_HTON64(((uint64_t)1)<<13))
\r
2520 #define IB_PIR_COMPMASK_LNKSPEEDSUPPORT (CL_HTON64(((uint64_t)1)<<14))
\r
2521 #define IB_PIR_COMPMASK_PORTSTATE (CL_HTON64(((uint64_t)1)<<15))
\r
2522 #define IB_PIR_COMPMASK_PORTPHYSTATE (CL_HTON64(((uint64_t)1)<<16))
\r
2523 #define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(((uint64_t)1)<<17))
\r
2524 #define IB_PIR_COMPMASK_MKEYPROTBITS (CL_HTON64(((uint64_t)1)<<18))
\r
2525 #define IB_PIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<19))
\r
2526 #define IB_PIR_COMPMASK_LMC (CL_HTON64(((uint64_t)1)<<20))
\r
2527 #define IB_PIR_COMPMASK_LINKSPEEDACTIVE (CL_HTON64(((uint64_t)1)<<21))
\r
2528 #define IB_PIR_COMPMASK_LINKSPEEDENABLE (CL_HTON64(((uint64_t)1)<<22))
\r
2529 #define IB_PIR_COMPMASK_NEIGHBORMTU (CL_HTON64(((uint64_t)1)<<23))
\r
2530 #define IB_PIR_COMPMASK_MASTERSMSL (CL_HTON64(((uint64_t)1)<<24))
\r
2531 #define IB_PIR_COMPMASK_VLCAP (CL_HTON64(((uint64_t)1)<<25))
\r
2532 #define IB_PIR_COMPMASK_INITTYPE (CL_HTON64(((uint64_t)1)<<26))
\r
2533 #define IB_PIR_COMPMASK_VLHIGHLIMIT (CL_HTON64(((uint64_t)1)<<27))
\r
2534 #define IB_PIR_COMPMASK_VLARBHIGHCAP (CL_HTON64(((uint64_t)1)<<28))
\r
2535 #define IB_PIR_COMPMASK_VLARBLOWCAP (CL_HTON64(((uint64_t)1)<<29))
\r
2536 #define IB_PIR_COMPMASK_INITTYPEREPLY (CL_HTON64(((uint64_t)1)<<30))
\r
2537 #define IB_PIR_COMPMASK_MTUCAP (CL_HTON64(((uint64_t)1)<<31))
\r
2538 #define IB_PIR_COMPMASK_VLSTALLCNT (CL_HTON64(((uint64_t)1)<<32))
\r
2539 #define IB_PIR_COMPMASK_HOQLIFE (CL_HTON64(((uint64_t)1)<<33))
\r
2540 #define IB_PIR_COMPMASK_OPVLS (CL_HTON64(((uint64_t)1)<<34))
\r
2541 #define IB_PIR_COMPMASK_PARENFIN (CL_HTON64(((uint64_t)1)<<35))
\r
2542 #define IB_PIR_COMPMASK_PARENFOUT (CL_HTON64(((uint64_t)1)<<36))
\r
2543 #define IB_PIR_COMPMASK_FILTERRAWIN (CL_HTON64(((uint64_t)1)<<37))
\r
2544 #define IB_PIR_COMPMASK_FILTERRAWOUT (CL_HTON64(((uint64_t)1)<<38))
\r
2545 #define IB_PIR_COMPMASK_MKEYVIO (CL_HTON64(((uint64_t)1)<<39))
\r
2546 #define IB_PIR_COMPMASK_PKEYVIO (CL_HTON64(((uint64_t)1)<<40))
\r
2547 #define IB_PIR_COMPMASK_QKEYVIO (CL_HTON64(((uint64_t)1)<<41))
\r
2548 #define IB_PIR_COMPMASK_GUIDCAP (CL_HTON64(((uint64_t)1)<<42))
\r
2549 #define IB_PIR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<43))
\r
2550 #define IB_PIR_COMPMASK_SUBNTO (CL_HTON64(((uint64_t)1)<<44))
\r
2551 #define IB_PIR_COMPMASK_RESV4 (CL_HTON64(((uint64_t)1)<<45))
\r
2552 #define IB_PIR_COMPMASK_RESPTIME (CL_HTON64(((uint64_t)1)<<46))
\r
2553 #define IB_PIR_COMPMASK_LOCALPHYERR (CL_HTON64(((uint64_t)1)<<47))
\r
2554 #define IB_PIR_COMPMASK_OVERRUNERR (CL_HTON64(((uint64_t)1)<<48))
\r
2556 /* Multicast Member Record Component Masks */
\r
2557 #define IB_MCR_COMPMASK_GID (CL_HTON64(((uint64_t)1)<<0))
\r
2558 #define IB_MCR_COMPMASK_MGID (CL_HTON64(((uint64_t)1)<<0))
\r
2559 #define IB_MCR_COMPMASK_PORT_GID (CL_HTON64(((uint64_t)1)<<1))
\r
2560 #define IB_MCR_COMPMASK_QKEY (CL_HTON64(((uint64_t)1)<<2))
\r
2561 #define IB_MCR_COMPMASK_MLID (CL_HTON64(((uint64_t)1)<<3))
\r
2562 #define IB_MCR_COMPMASK_MTU_SEL (CL_HTON64(((uint64_t)1)<<4))
\r
2563 #define IB_MCR_COMPMASK_MTU (CL_HTON64(((uint64_t)1)<<5))
\r
2564 #define IB_MCR_COMPMASK_TCLASS (CL_HTON64(((uint64_t)1)<<6))
\r
2565 #define IB_MCR_COMPMASK_PKEY (CL_HTON64(((uint64_t)1)<<7))
\r
2566 #define IB_MCR_COMPMASK_RATE_SEL (CL_HTON64(((uint64_t)1)<<8))
\r
2567 #define IB_MCR_COMPMASK_RATE (CL_HTON64(((uint64_t)1)<<9))
\r
2568 #define IB_MCR_COMPMASK_LIFE_SEL (CL_HTON64(((uint64_t)1)<<10))
\r
2569 #define IB_MCR_COMPMASK_LIFE (CL_HTON64(((uint64_t)1)<<11))
\r
2570 #define IB_MCR_COMPMASK_SL (CL_HTON64(((uint64_t)1)<<12))
\r
2571 #define IB_MCR_COMPMASK_FLOW (CL_HTON64(((uint64_t)1)<<13))
\r
2572 #define IB_MCR_COMPMASK_HOP (CL_HTON64(((uint64_t)1)<<14))
\r
2573 #define IB_MCR_COMPMASK_SCOPE (CL_HTON64(((uint64_t)1)<<15))
\r
2574 #define IB_MCR_COMPMASK_JOIN_STATE (CL_HTON64(((uint64_t)1)<<16))
\r
2575 #define IB_MCR_COMPMASK_PROXY (CL_HTON64(((uint64_t)1)<<17))
\r
2577 /* GUID Info Record Component Masks */
\r
2578 #define IB_GIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2579 #define IB_GIR_COMPMASK_BLOCKNUM (CL_HTON64(((uint64_t)1)<<1))
\r
2580 #define IB_GIR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<2))
\r
2581 #define IB_GIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<3))
\r
2582 #define IB_GIR_COMPMASK_GID0 (CL_HTON64(((uint64_t)1)<<4))
\r
2583 #define IB_GIR_COMPMASK_GID1 (CL_HTON64(((uint64_t)1)<<5))
\r
2584 #define IB_GIR_COMPMASK_GID2 (CL_HTON64(((uint64_t)1)<<6))
\r
2585 #define IB_GIR_COMPMASK_GID3 (CL_HTON64(((uint64_t)1)<<7))
\r
2586 #define IB_GIR_COMPMASK_GID4 (CL_HTON64(((uint64_t)1)<<8))
\r
2587 #define IB_GIR_COMPMASK_GID5 (CL_HTON64(((uint64_t)1)<<9))
\r
2588 #define IB_GIR_COMPMASK_GID6 (CL_HTON64(((uint64_t)1)<<10))
\r
2589 #define IB_GIR_COMPMASK_GID7 (CL_HTON64(((uint64_t)1)<<11))
\r
2591 /* MultiPath Record Component Masks */
\r
2592 #define IB_MPR_COMPMASK_RAWTRAFFIC (CL_HTON64(((uint64_t)1)<<0))
\r
2593 #define IB_MPR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<1))
\r
2594 #define IB_MPR_COMPMASK_FLOWLABEL (CL_HTON64(((uint64_t)1)<<2))
\r
2595 #define IB_MPR_COMPMASK_HOPLIMIT (CL_HTON64(((uint64_t)1)<<3))
\r
2596 #define IB_MPR_COMPMASK_TCLASS (CL_HTON64(((uint64_t)1)<<4))
\r
2597 #define IB_MPR_COMPMASK_REVERSIBLE (CL_HTON64(((uint64_t)1)<<5))
\r
2598 #define IB_MPR_COMPMASK_NUMBPATH (CL_HTON64(((uint64_t)1)<<6))
\r
2599 #define IB_MPR_COMPMASK_PKEY (CL_HTON64(((uint64_t)1)<<7))
\r
2600 #define IB_MPR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<8))
\r
2601 #define IB_MPR_COMPMASK_SL (CL_HTON64(((uint64_t)1)<<9))
\r
2602 #define IB_MPR_COMPMASK_MTUSELEC (CL_HTON64(((uint64_t)1)<<10))
\r
2603 #define IB_MPR_COMPMASK_MTU (CL_HTON64(((uint64_t)1)<<11))
\r
2604 #define IB_MPR_COMPMASK_RATESELEC (CL_HTON64(((uint64_t)1)<<12))
\r
2605 #define IB_MPR_COMPMASK_RATE (CL_HTON64(((uint64_t)1)<<13))
\r
2606 #define IB_MPR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<14))
\r
2607 #define IB_MPR_COMPMASK_PKTLIFETIME (CL_HTON64(((uint64_t)1)<<15))
\r
2608 #define IB_MPR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<16))
\r
2609 #define IB_MPR_COMPMASK_INDEPSELEC (CL_HTON64(((uint64_t)1)<<17))
\r
2610 #define IB_MPR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<18))
\r
2611 #define IB_MPR_COMPMASK_SGIDCOUNT (CL_HTON64(((uint64_t)1)<<19))
\r
2612 #define IB_MPR_COMPMASK_DGIDCOUNT (CL_HTON64(((uint64_t)1)<<20))
\r
2613 #define IB_MPR_COMPMASK_RESV4 (CL_HTON64(((uint64_t)1)<<21))
\r
2615 /* SMInfo Record Component Masks */
\r
2616 #define IB_SMIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2617 #define IB_SMIR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<1))
\r
2618 #define IB_SMIR_COMPMASK_GUID (CL_HTON64(((uint64_t)1)<<2))
\r
2619 #define IB_SMIR_COMPMASK_SMKEY (CL_HTON64(((uint64_t)1)<<3))
\r
2620 #define IB_SMIR_COMPMASK_ACTCOUNT (CL_HTON64(((uint64_t)1)<<4))
\r
2621 #define IB_SMIR_COMPMASK_PRIORITY (CL_HTON64(((uint64_t)1)<<5))
\r
2622 #define IB_SMIR_COMPMASK_SMSTATE (CL_HTON64(((uint64_t)1)<<6))
\r
2624 /* InformInfo Record Component Masks */
\r
2625 #define IB_IIR_COMPMASK_SUBSCRIBERGID (CL_HTON64(((uint64_t)1)<<0))
\r
2626 #define IB_IIR_COMPMASK_ENUM (CL_HTON64(((uint64_t)1)<<1))
\r
2627 #define IB_IIR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<2))
\r
2628 #define IB_IIR_COMPMASK_GID (CL_HTON64(((uint64_t)1)<<3))
\r
2629 #define IB_IIR_COMPMASK_LIDRANGEBEGIN (CL_HTON64(((uint64_t)1)<<4))
\r
2630 #define IB_IIR_COMPMASK_LIDRANGEEND (CL_HTON64(((uint64_t)1)<<5))
\r
2631 #define IB_IIR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<6))
\r
2632 #define IB_IIR_COMPMASK_ISGENERIC (CL_HTON64(((uint64_t)1)<<7))
\r
2633 #define IB_IIR_COMPMASK_SUBSCRIBE (CL_HTON64(((uint64_t)1)<<8))
\r
2634 #define IB_IIR_COMPMASK_TYPE (CL_HTON64(((uint64_t)1)<<9))
\r
2635 #define IB_IIR_COMPMASK_TRAPNUMB (CL_HTON64(((uint64_t)1)<<10))
\r
2636 #define IB_IIR_COMPMASK_DEVICEID (CL_HTON64(((uint64_t)1)<<10))
\r
2637 #define IB_IIR_COMPMASK_QPN (CL_HTON64(((uint64_t)1)<<11))
\r
2638 #define IB_IIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<12))
\r
2639 #define IB_IIR_COMPMASK_RESPTIME (CL_HTON64(((uint64_t)1)<<13))
\r
2640 #define IB_IIR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<14))
\r
2641 #define IB_IIR_COMPMASK_PRODTYPE (CL_HTON64(((uint64_t)1)<<15))
\r
2642 #define IB_IIR_COMPMASK_VENDID (CL_HTON64(((uint64_t)1)<<15))
\r
2644 /****f* IBA Base: Types/ib_path_rec_init_local
\r
2646 * ib_path_rec_init_local
\r
2649 * Initializes a subnet local path record.
\r
2653 AL_INLINE void AL_API
\r
2654 ib_path_rec_init_local(
\r
2655 IN ib_path_rec_t* const p_rec,
\r
2656 IN const ib_gid_t* const p_dgid,
\r
2657 IN const ib_gid_t* const p_sgid,
\r
2658 IN const ib_net16_t dlid,
\r
2659 IN const ib_net16_t slid,
\r
2660 IN const uint8_t num_path,
\r
2661 IN const ib_net16_t pkey,
\r
2662 IN const uint8_t sl,
\r
2663 IN const uint8_t mtu_selector,
\r
2664 IN const uint8_t mtu,
\r
2665 IN const uint8_t rate_selector,
\r
2666 IN const uint8_t rate,
\r
2667 IN const uint8_t pkt_life_selector,
\r
2668 IN const uint8_t pkt_life,
\r
2669 IN const uint8_t preference )
\r
2671 p_rec->dgid = *p_dgid;
\r
2672 p_rec->sgid = *p_sgid;
\r
2673 p_rec->dlid = dlid;
\r
2674 p_rec->slid = slid;
\r
2675 p_rec->num_path = num_path;
\r
2676 p_rec->pkey = pkey;
\r
2677 /* Lower 4 bits of path rec's SL are reserved. */
\r
2678 p_rec->sl = cl_ntoh16( sl );
\r
2679 p_rec->mtu = (uint8_t)((mtu & IB_PATH_REC_BASE_MASK) |
\r
2680 (uint8_t)(mtu_selector << 6));
\r
2681 p_rec->rate = (uint8_t)((rate & IB_PATH_REC_BASE_MASK) |
\r
2682 (uint8_t)(rate_selector << 6));
\r
2683 p_rec->pkt_life = (uint8_t)((pkt_life & IB_PATH_REC_BASE_MASK) |
\r
2684 (uint8_t)(pkt_life_selector << 6));
\r
2685 p_rec->preference = preference;
\r
2687 /* Clear global routing fields for local path records */
\r
2688 p_rec->hop_flow_raw.val = 0;
\r
2689 p_rec->tclass = 0;
\r
2698 * [in] Pointer to the path record object.
\r
2701 * [in] GID of destination port.
\r
2704 * [in] GID of source port.
\r
2707 * [in] LID of destination port.
\r
2710 * [in] LID of source port.
\r
2713 * [in] Reversible path - 1 bit to say if path is reversible.
\r
2714 * num_path [6:0] In queries, maximum number of paths to return.
\r
2715 * In responses, undefined.
\r
2718 * [in] Partition key (P_Key) to use on this path.
\r
2721 * [in] Service level to use on this path. Lower 4-bits are valid.
\r
2724 * [in] Encoded MTU selector value to use on this path
\r
2727 * [in] Encoded MTU to use on this path
\r
2730 * [in] Encoded rate selector value to use on this path.
\r
2733 * [in] Encoded rate to use on this path.
\r
2735 * pkt_life_selector
\r
2736 * [in] Encoded Packet selector value lifetime for this path.
\r
2739 * [in] Encoded Packet lifetime for this path.
\r
2742 * [in] Indicates the relative merit of this path versus other path
\r
2743 * records returned from the SA. Lower numbers are better.
\r
2754 /****f* IBA Base: Types/ib_path_rec_num_path
\r
2756 * ib_path_rec_num_path
\r
2759 * Get max number of paths to return.
\r
2763 static inline uint8_t
\r
2764 ib_path_rec_num_path(
\r
2765 IN const ib_path_rec_t* const p_rec )
\r
2767 return( p_rec->num_path &0x7F );
\r
2772 * [in] Pointer to the path record object.
\r
2775 * Maximum number of paths to return for each unique SGID_DGID combination.
\r
2783 /****f* IBA Base: Types/ib_path_rec_sl
\r
2788 * Get path service level.
\r
2792 AL_INLINE uint8_t AL_API
\r
2794 IN const ib_path_rec_t* const p_rec )
\r
2796 return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
\r
2801 * [in] Pointer to the path record object.
\r
2812 /****f* IBA Base: Types/ib_path_rec_mtu
\r
2817 * Get encoded path MTU.
\r
2821 AL_INLINE uint8_t AL_API
\r
2823 IN const ib_path_rec_t* const p_rec )
\r
2825 return( (uint8_t)(p_rec->mtu & IB_PATH_REC_BASE_MASK) );
\r
2830 * [in] Pointer to the path record object.
\r
2833 * Encoded path MTU.
\r
2839 * others: reserved
\r
2847 /****f* IBA Base: Types/ib_path_rec_mtu_sel
\r
2849 * ib_path_rec_mtu_sel
\r
2852 * Get encoded path MTU selector.
\r
2856 AL_INLINE uint8_t AL_API
\r
2857 ib_path_rec_mtu_sel(
\r
2858 IN const ib_path_rec_t* const p_rec )
\r
2860 return( (uint8_t)((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6) );
\r
2865 * [in] Pointer to the path record object.
\r
2868 * Encoded path MTU selector value (for queries).
\r
2869 * 0: greater than MTU specified
\r
2870 * 1: less than MTU specified
\r
2871 * 2: exactly the MTU specified
\r
2872 * 3: largest MTU available
\r
2880 /****f* IBA Base: Types/ib_path_rec_rate
\r
2882 * ib_path_rec_rate
\r
2885 * Get encoded path rate.
\r
2889 AL_INLINE uint8_t AL_API
\r
2891 IN const ib_path_rec_t* const p_rec )
\r
2893 return( (uint8_t)(p_rec->rate & IB_PATH_REC_BASE_MASK) );
\r
2898 * [in] Pointer to the path record object.
\r
2901 * Encoded path rate.
\r
2911 * others: reserved
\r
2919 /****f* IBA Base: Types/ib_path_rec_rate_sel
\r
2921 * ib_path_rec_rate_sel
\r
2924 * Get encoded path rate selector.
\r
2928 AL_INLINE uint8_t AL_API
\r
2929 ib_path_rec_rate_sel(
\r
2930 IN const ib_path_rec_t* const p_rec )
\r
2932 return( (uint8_t)((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6) );
\r
2937 * [in] Pointer to the path record object.
\r
2940 * Encoded path rate selector value (for queries).
\r
2941 * 0: greater than rate specified
\r
2942 * 1: less than rate specified
\r
2943 * 2: exactly the rate specified
\r
2944 * 3: largest rate available
\r
2952 /****f* IBA Base: Types/ib_path_rec_pkt_life
\r
2954 * ib_path_rec_pkt_life
\r
2957 * Get encoded path pkt_life.
\r
2961 AL_INLINE uint8_t AL_API
\r
2962 ib_path_rec_pkt_life(
\r
2963 IN const ib_path_rec_t* const p_rec )
\r
2965 return( (uint8_t)(p_rec->pkt_life & IB_PATH_REC_BASE_MASK) );
\r
2970 * [in] Pointer to the path record object.
\r
2973 * Encoded path pkt_life = 4.096 µsec * 2 ** PacketLifeTime.
\r
2981 /****f* IBA Base: Types/ib_path_rec_pkt_life_sel
\r
2983 * ib_path_rec_pkt_life_sel
\r
2986 * Get encoded path pkt_lifetime selector.
\r
2990 AL_INLINE uint8_t AL_API
\r
2991 ib_path_rec_pkt_life_sel(
\r
2992 IN const ib_path_rec_t* const p_rec )
\r
2994 return( (uint8_t)((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6 ));
\r
2999 * [in] Pointer to the path record object.
\r
3002 * Encoded path pkt_lifetime selector value (for queries).
\r
3003 * 0: greater than rate specified
\r
3004 * 1: less than rate specified
\r
3005 * 2: exactly the rate specified
\r
3006 * 3: smallest packet lifetime available
\r
3014 /****f* IBA Base: Types/ib_path_rec_flow_lbl
\r
3016 * ib_path_rec_flow_lbl
\r
3023 AL_INLINE net32_t AL_API
\r
3024 ib_path_rec_flow_lbl(
\r
3025 IN const ib_path_rec_t* const p_rec )
\r
3027 return( cl_hton32( (cl_ntoh32(p_rec->hop_flow_raw.val) >> 8) & 0x000FFFFF ) );
\r
3032 * [in] Pointer to the path record object.
\r
3035 * Flow label of the path record.
\r
3043 /****f* IBA Base: Types/ib_path_rec_hop_limit
\r
3045 * ib_path_rec_hop_limit
\r
3052 AL_INLINE uint8_t AL_API
\r
3053 ib_path_rec_hop_limit(
\r
3054 IN const ib_path_rec_t* const p_rec )
\r
3056 return( p_rec->hop_flow_raw.bytes[3] );
\r
3061 * [in] Pointer to the path record object.
\r
3064 * Hop limit of the path record.
\r
3072 /****f* IBA Base: Types/ib_path_rec_set_hop_flow_raw
\r
3074 * ib_path_rec_set_hop_flow_raw
\r
3077 * Sets the hop limit, flow label, and raw traffic bits of a path record.
\r
3081 AL_INLINE void AL_API
\r
3082 ib_path_rec_set_hop_flow_raw(
\r
3083 OUT ib_path_rec_t* const p_rec,
\r
3084 IN const uint8_t hop_limit,
\r
3085 IN const net32_t flow_lbl,
\r
3086 IN const boolean_t raw )
\r
3088 p_rec->hop_flow_raw.val = (cl_ntoh32( flow_lbl ) & 0x000FFFFF) << 8;
\r
3090 p_rec->hop_flow_raw.val |= 0x80000000;
\r
3091 p_rec->hop_flow_raw.val = cl_hton32( p_rec->hop_flow_raw.val );
\r
3092 p_rec->hop_flow_raw.bytes[3] = hop_limit;
\r
3097 * Pointer to the path record whose hop limit, flow label, and rab
\r
3098 * traffic fields to set.
\r
3101 * Hop limit to set in the path record.
\r
3104 * Flow label, in network byte order, to set in the path record.
\r
3107 * Boolean flag to indicate whether the path record is for raw traffic.
\r
3114 /****s* IBA Base: Constants/IB_CLASS_CAP_TRAP
\r
3116 * IB_CLASS_CAP_TRAP
\r
3119 * ClassPortInfo CapabilityMask bits. This bit will be set
\r
3120 * if the class supports Trap() MADs (13.4.8.1).
\r
3123 * ib_class_port_info_t, IB_CLASS_CAP_GETSET
\r
3127 #define IB_CLASS_CAP_TRAP 0x0001
\r
3130 /****s* IBA Base: Constants/IB_CLASS_CAP_GETSET
\r
3132 * IB_CLASS_CAP_GETSET
\r
3135 * ClassPortInfo CapabilityMask bits. This bit will be set
\r
3136 * if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).
\r
3139 * ib_class_port_info_t, IB_CLASS_CAP_TRAP
\r
3143 #define IB_CLASS_CAP_GETSET 0x0002
\r
3146 /****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK
\r
3148 * IB_CLASS_RESP_TIME_MASK
\r
3151 * Mask bits to extract the reponse time value from the
\r
3152 * resp_time_val field of ib_class_port_info_t.
\r
3155 * ib_class_port_info_t
\r
3159 #define IB_CLASS_RESP_TIME_MASK 0x1F
\r
3161 /****s* IBA Base: Types/ib_class_port_info_t
\r
3163 * ib_class_port_info_t
\r
3166 * IBA defined ClassPortInfo attribute (13.4.8.1)
\r
3167 * route between two end-points on a subnet.
\r
3171 #include <complib/cl_packon.h>
\r
3172 typedef struct _ib_class_port_info
\r
3175 uint8_t class_ver;
\r
3176 ib_net16_t cap_mask;
\r
3177 ib_net32_t resp_time_val;
\r
3178 ib_gid_t redir_gid;
\r
3179 ib_net32_t redir_tc_sl_fl;
\r
3180 ib_net16_t redir_lid;
\r
3181 ib_net16_t redir_pkey;
\r
3182 ib_net32_t redir_qp;
\r
3183 ib_net32_t redir_qkey;
\r
3184 ib_gid_t trap_gid;
\r
3185 ib_net32_t trap_tc_sl_fl;
\r
3186 ib_net16_t trap_lid;
\r
3187 ib_net16_t trap_pkey;
\r
3188 ib_net32_t trap_hop_qp;
\r
3189 ib_net32_t trap_qkey;
\r
3191 } PACK_SUFFIX ib_class_port_info_t;
\r
3192 #include <complib/cl_packoff.h>
\r
3196 * Maximum supported MAD Base Version.
\r
3199 * Maximum supported management class version.
\r
3202 * Supported capabilities of this management class.
\r
3205 * Maximum expected response time.
\r
3208 * GID to use for redirection, or zero
\r
3211 * Traffic class, service level and flow label the requester
\r
3212 * should use if the service is redirected.
\r
3215 * LID used for redirection, or zero
\r
3218 * P_Key used for redirection
\r
3221 * QP number used for redirection
\r
3224 * Q_Key associated with the redirected QP. This shall be the
\r
3225 * well known Q_Key value.
\r
3228 * GID value used for trap messages from this service.
\r
3231 * Traffic class, service level and flow label used for
\r
3232 * trap messages originated by this service.
\r
3235 * LID used for trap messages, or zero
\r
3238 * P_Key used for trap messages
\r
3241 * Hop limit (upper 8 bits) and QP number used for trap messages
\r
3244 * Q_Key associated with the trap messages QP.
\r
3247 * IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP
\r
3251 /****s* IBA Base: Types/ib_sm_info_t
\r
3256 * SMInfo structure (14.2.5.13).
\r
3260 #include <complib/cl_packon.h>
\r
3261 typedef struct _ib_sm_info
\r
3264 ib_net64_t sm_key;
\r
3265 ib_net32_t act_count;
\r
3266 uint8_t pri_state;
\r
3268 } PACK_SUFFIX ib_sm_info_t;
\r
3269 #include <complib/cl_packoff.h>
\r
3273 * Port GUID for this SM.
\r
3276 * SM_Key of this SM.
\r
3279 * Activity counter used as a heartbeat.
\r
3282 * Priority and State information
\r
3287 /****f* IBA Base: Types/ib_sminfo_get_priority
\r
3289 * ib_sminfo_get_priority
\r
3292 * Returns the priority value.
\r
3296 AL_INLINE uint8_t AL_API
\r
3297 ib_sminfo_get_priority(
\r
3298 IN const ib_sm_info_t* const p_smi )
\r
3300 return( (uint8_t)((p_smi->pri_state & 0xF0)>>4) );
\r
3305 * [in] Pointer to the SMInfo Attribute.
\r
3308 * Returns the priority value.
\r
3315 /****f* IBA Base: Types/ib_sminfo_get_state
\r
3317 * ib_sminfo_get_state
\r
3320 * Returns the state value.
\r
3324 AL_INLINE uint8_t AL_API
\r
3325 ib_sminfo_get_state(
\r
3326 IN const ib_sm_info_t* const p_smi )
\r
3328 return( (uint8_t)(p_smi->pri_state & 0x0F) );
\r
3333 * [in] Pointer to the SMInfo Attribute.
\r
3336 * Returns the state value.
\r
3343 /****s* IBA Base: Types/ib_mad_t
\r
3348 * IBA defined MAD header (13.4.3)
\r
3352 #include <complib/cl_packon.h>
\r
3353 typedef struct _ib_mad
\r
3356 uint8_t mgmt_class;
\r
3357 uint8_t class_ver;
\r
3359 ib_net16_t status;
\r
3360 ib_net16_t class_spec;
\r
3361 ib_net64_t trans_id;
\r
3362 ib_net16_t attr_id;
\r
3364 ib_net32_t attr_mod;
\r
3365 } PACK_SUFFIX ib_mad_t;
\r
3366 #include <complib/cl_packoff.h>
\r
3370 * MAD base format.
\r
3373 * Class of operation.
\r
3376 * Version of MAD class-specific format.
\r
3379 * Method to perform, including 'R' bit.
\r
3382 * Status of operation.
\r
3385 * Reserved for subnet management.
\r
3397 * Attribute modifier.
\r
3403 /****s* IBA Base: Types/ib_rmpp_mad_t
\r
3408 * IBA defined MAD RMPP header (13.6.2.1)
\r
3412 #include <complib/cl_packon.h>
\r
3413 typedef struct _ib_rmpp_mad
\r
3415 ib_mad_t common_hdr;
\r
3417 uint8_t rmpp_version;
\r
3418 uint8_t rmpp_type;
\r
3419 uint8_t rmpp_flags;
\r
3420 uint8_t rmpp_status;
\r
3422 ib_net32_t seg_num;
\r
3423 ib_net32_t paylen_newwin;
\r
3425 } PACK_SUFFIX ib_rmpp_mad_t;
\r
3426 #include <complib/cl_packoff.h>
\r
3433 /****f* IBA Base: Types/ib_mad_init_new
\r
3438 * Initializes a MAD common header.
\r
3442 AL_INLINE void AL_API
\r
3444 IN ib_mad_t* const p_mad,
\r
3445 IN const uint8_t mgmt_class,
\r
3446 IN const uint8_t class_ver,
\r
3447 IN const uint8_t method,
\r
3448 IN const ib_net64_t trans_id,
\r
3449 IN const ib_net16_t attr_id,
\r
3450 IN const ib_net32_t attr_mod )
\r
3452 CL_ASSERT( p_mad );
\r
3453 p_mad->base_ver = 1;
\r
3454 p_mad->mgmt_class = mgmt_class;
\r
3455 p_mad->class_ver = class_ver;
\r
3456 p_mad->method = method;
\r
3457 p_mad->status = 0;
\r
3458 p_mad->class_spec = 0;
\r
3459 p_mad->trans_id = trans_id;
\r
3460 p_mad->attr_id = attr_id;
\r
3462 p_mad->attr_mod = attr_mod;
\r
3467 * [in] Pointer to the MAD common header.
\r
3470 * [in] Class of operation.
\r
3473 * [in] Version of MAD class-specific format.
\r
3476 * [in] Method to perform, including 'R' bit.
\r
3479 * [in] Transaction ID.
\r
3482 * [in] Attribute ID.
\r
3485 * [in] Attribute modifier.
\r
3496 /****f* IBA Base: Types/ib_mad_init_response
\r
3498 * ib_mad_init_response
\r
3501 * Initializes a MAD common header as a response.
\r
3505 AL_INLINE void AL_API
\r
3506 ib_mad_init_response(
\r
3507 IN const ib_mad_t* const p_req_mad,
\r
3508 IN ib_mad_t* const p_mad,
\r
3509 IN const ib_net16_t status )
\r
3511 CL_ASSERT( p_req_mad );
\r
3512 CL_ASSERT( p_mad );
\r
3513 *p_mad = *p_req_mad;
\r
3514 p_mad->status = status;
\r
3515 if( p_mad->method == IB_MAD_METHOD_SET )
\r
3516 p_mad->method = IB_MAD_METHOD_GET;
\r
3517 p_mad->method |= IB_MAD_METHOD_RESP_MASK;
\r
3522 * [in] Pointer to the MAD common header in the original request MAD.
\r
3525 * [in] Pointer to the MAD common header to initialize.
\r
3528 * [in] MAD Status value to return;
\r
3534 * p_req_mad and p_mad may point to the same MAD.
\r
3540 /****f* IBA Base: Types/ib_mad_is_response
\r
3542 * ib_mad_is_response
\r
3545 * Returns TRUE if the MAD is a response ('R' bit set),
\r
3546 * FALSE otherwise.
\r
3550 AL_INLINE boolean_t AL_API
\r
3551 ib_mad_is_response(
\r
3552 IN const ib_mad_t* const p_mad )
\r
3554 CL_ASSERT( p_mad );
\r
3555 return( (p_mad->method & IB_MAD_METHOD_RESP_MASK) ==
\r
3556 IB_MAD_METHOD_RESP_MASK );
\r
3561 * [in] Pointer to the MAD.
\r
3564 * Returns TRUE if the MAD is a response ('R' bit set),
\r
3565 * FALSE otherwise.
\r
3573 #define IB_RMPP_TYPE_DATA 1
\r
3574 #define IB_RMPP_TYPE_ACK 2
\r
3575 #define IB_RMPP_TYPE_STOP 3
\r
3576 #define IB_RMPP_TYPE_ABORT 4
\r
3578 #define IB_RMPP_NO_RESP_TIME 0x1F
\r
3579 #define IB_RMPP_FLAG_ACTIVE 0x01
\r
3580 #define IB_RMPP_FLAG_FIRST 0x02
\r
3581 #define IB_RMPP_FLAG_LAST 0x04
\r
3583 #define IB_RMPP_STATUS_SUCCESS 0
\r
3584 #define IB_RMPP_STATUS_RESX 1 /* resources exhausted */
\r
3585 #define IB_RMPP_STATUS_T2L 118 /* time too long */
\r
3586 #define IB_RMPP_STATUS_BAD_LEN 119 /* incon. last and payload len */
\r
3587 #define IB_RMPP_STATUS_BAD_SEG 120 /* incon. first and segment no */
\r
3588 #define IB_RMPP_STATUS_BADT 121 /* bad rmpp type */
\r
3589 #define IB_RMPP_STATUS_W2S 122 /* newwindowlast too small */
\r
3590 #define IB_RMPP_STATUS_S2B 123 /* segment no too big */
\r
3591 #define IB_RMPP_STATUS_BAD_STATUS 124 /* illegal status */
\r
3592 #define IB_RMPP_STATUS_UNV 125 /* unsupported version */
\r
3593 #define IB_RMPP_STATUS_TMR 126 /* too many retries */
\r
3594 #define IB_RMPP_STATUS_UNSPEC 127 /* unspecified */
\r
3596 /****f* IBA Base: Types/ib_rmpp_is_flag_set
\r
3598 * ib_rmpp_is_flag_set
\r
3601 * Returns TRUE if the MAD has the given RMPP flag set.
\r
3605 AL_INLINE boolean_t AL_API
\r
3606 ib_rmpp_is_flag_set(
\r
3607 IN const ib_rmpp_mad_t* const p_rmpp_mad,
\r
3608 IN const uint8_t flag )
\r
3610 CL_ASSERT( p_rmpp_mad );
\r
3611 return( (p_rmpp_mad->rmpp_flags & flag) == flag );
\r
3616 * [in] Pointer to a MAD with an RMPP header.
\r
3619 * [in] The RMPP flag being examined.
\r
3622 * Returns TRUE if the MAD has the given RMPP flag set.
\r
3627 * ib_mad_t, ib_rmpp_mad_t
\r
3630 AL_INLINE void AL_API
\r
3631 ib_rmpp_set_resp_time(
\r
3632 IN ib_rmpp_mad_t* const p_rmpp_mad,
\r
3633 IN const uint8_t resp_time )
\r
3635 CL_ASSERT( p_rmpp_mad );
\r
3636 p_rmpp_mad->rmpp_flags |= (resp_time << 3);
\r
3640 AL_INLINE uint8_t AL_API
\r
3641 ib_rmpp_get_resp_time(
\r
3642 IN const ib_rmpp_mad_t* const p_rmpp_mad )
\r
3644 CL_ASSERT( p_rmpp_mad );
\r
3645 return( (uint8_t)(p_rmpp_mad->rmpp_flags >> 3) );
\r
3648 /****d* IBA Base: Constants/IB_SMP_DIRECTION
\r
3650 * IB_SMP_DIRECTION
\r
3653 * The Direction bit for directed route SMPs.
\r
3657 #define IB_SMP_DIRECTION_HO 0x8000
\r
3658 #define IB_SMP_DIRECTION (CL_HTON16(IB_SMP_DIRECTION_HO))
\r
3661 /****d* IBA Base: Constants/IB_SMP_STATUS_MASK
\r
3663 * IB_SMP_STATUS_MASK
\r
3666 * Mask value for extracting status from a directed route SMP.
\r
3670 #define IB_SMP_STATUS_MASK_HO 0x7FFF
\r
3671 #define IB_SMP_STATUS_MASK (CL_HTON16(IB_SMP_STATUS_MASK_HO))
\r
3674 /****s* IBA Base: Types/ib_smp_t
\r
3679 * IBA defined SMP. (14.2.1.2)
\r
3683 #define IB_SMP_DATA_SIZE 64
\r
3684 #include <complib/cl_packon.h>
\r
3685 typedef struct _ib_smp
\r
3688 uint8_t mgmt_class;
\r
3689 uint8_t class_ver;
\r
3691 ib_net16_t status;
\r
3693 uint8_t hop_count;
\r
3694 ib_net64_t trans_id;
\r
3695 ib_net16_t attr_id;
\r
3697 ib_net32_t attr_mod;
\r
3699 ib_net16_t dr_slid;
\r
3700 ib_net16_t dr_dlid;
\r
3701 uint32_t resv1[7];
\r
3702 uint8_t data[IB_SMP_DATA_SIZE];
\r
3703 uint8_t initial_path[IB_SUBNET_PATH_HOPS_MAX];
\r
3704 uint8_t return_path[IB_SUBNET_PATH_HOPS_MAX];
\r
3706 } PACK_SUFFIX ib_smp_t;
\r
3707 #include <complib/cl_packoff.h>
\r
3711 * MAD base format.
\r
3714 * Class of operation.
\r
3717 * Version of MAD class-specific format.
\r
3720 * Method to perform, including 'R' bit.
\r
3723 * Status of operation.
\r
3726 * Hop pointer for directed route MADs.
\r
3729 * Hop count for directed route MADs.
\r
3741 * Attribute modifier.
\r
3744 * Management key value.
\r
3747 * Directed route source LID.
\r
3750 * Directed route destination LID.
\r
3753 * Reserved for 64 byte alignment.
\r
3756 * MAD data payload.
\r
3759 * Outbound port list.
\r
3762 * Inbound port list.
\r
3767 /****f* IBA Base: Types/ib_smp_get_status
\r
3769 * ib_smp_get_status
\r
3772 * Returns the SMP status value in network order.
\r
3776 AL_INLINE ib_net16_t AL_API
\r
3777 ib_smp_get_status(
\r
3778 IN const ib_smp_t* const p_smp )
\r
3780 return( (ib_net16_t)(p_smp->status & IB_SMP_STATUS_MASK) );
\r
3785 * [in] Pointer to the SMP packet.
\r
3788 * Returns the SMP status value in network order.
\r
3796 /****f* IBA Base: Types/ib_smp_is_response
\r
3798 * ib_smp_is_response
\r
3801 * Returns TRUE if the SMP is a response MAD, FALSE otherwise.
\r
3805 AL_INLINE boolean_t AL_API
\r
3806 ib_smp_is_response(
\r
3807 IN const ib_smp_t* const p_smp )
\r
3809 return( ib_mad_is_response( (const ib_mad_t*)p_smp ) );
\r
3814 * [in] Pointer to the SMP packet.
\r
3817 * Returns TRUE if the SMP is a response MAD, FALSE otherwise.
\r
3825 /****f* IBA Base: Types/ib_smp_is_d
\r