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
6 * Portions Copyright (c) 2008 Microsoft Corporation. All rights reserved.
\r
8 * This software is available to you under the OpenIB.org BSD license
\r
11 * Redistribution and use in source and binary forms, with or
\r
12 * without modification, are permitted provided that the following
\r
13 * conditions are met:
\r
15 * - Redistributions of source code must retain the above
\r
16 * copyright notice, this list of conditions and the following
\r
19 * - Redistributions in binary form must reproduce the above
\r
20 * copyright notice, this list of conditions and the following
\r
21 * disclaimer in the documentation and/or other materials
\r
22 * provided with the distribution.
\r
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
\r
28 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
29 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
30 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
37 #if !defined(__IB_TYPES_H__)
\r
38 #define __IB_TYPES_H__
\r
40 #include <complib/cl_types.h>
\r
41 #include <complib/cl_byteswap.h>
\r
44 #pragma warning( disable : 4201) //nameless union/structure
\r
47 #define IB_CONCAT(str1, str2) str1##str2
\r
49 #define TO_LONG_PTR(type,member_name) \
\r
50 union { type member_name; uint64_t IB_CONCAT(member_name,_padding); }
\r
56 #define AL_INLINE static inline
\r
58 #if defined( EXPORT_AL_SYMBOLS )
\r
59 #define AL_EXPORT __declspec(dllexport)
\r
61 #define AL_EXPORT __declspec(dllimport)
\r
63 #define AL_API __stdcall
\r
64 #define AL_INLINE AL_EXPORT inline
\r
65 #endif /* CL_KERNEL */
\r
71 #endif /* __cplusplus */
\r
74 /****h* IBA Base/Constants
\r
79 * The following constants are used throughout the IBA code base.
\r
81 * Definitions are from the InfiniBand Architecture Specification v1.2
\r
85 /****d* IBA Base: Constants/MAD_BLOCK_SIZE
\r
90 * Size of a non-RMPP MAD datagram.
\r
94 #define MAD_BLOCK_SIZE 256
\r
97 /****d* IBA Base: Constants/MAD_RMPP_HDR_SIZE
\r
102 * Size of an RMPP header, including the common MAD header.
\r
106 #define MAD_RMPP_HDR_SIZE 36
\r
109 /****d* IBA Base: Constants/MAD_RMPP_DATA_SIZE
\r
111 * MAD_RMPP_DATA_SIZE
\r
114 * Size of an RMPP transaction data section.
\r
118 #define MAD_RMPP_DATA_SIZE (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)
\r
121 /****d* IBA Base: Constants/MAD_BLOCK_GRH_SIZE
\r
123 * MAD_BLOCK_GRH_SIZE
\r
126 * Size of a MAD datagram, including the GRH.
\r
130 #define MAD_BLOCK_GRH_SIZE 296
\r
133 /****d* IBA Base: Constants/IB_LID_PERMISSIVE
\r
135 * IB_LID_PERMISSIVE
\r
142 #define IB_LID_PERMISSIVE 0xFFFF
\r
145 /****d* IBA Base: Constants/IB_DEFAULT_PKEY
\r
150 * P_Key value for the default partition.
\r
154 #define IB_DEFAULT_PKEY 0xFFFF
\r
157 /****d* IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY
\r
159 * IB_QP1_WELL_KNOWN_Q_KEY
\r
162 * Well-known Q_Key for QP1 privileged mode access (15.4.2).
\r
166 #define IB_QP1_WELL_KNOWN_Q_KEY CL_NTOH32(0x80010000)
\r
170 #define IB_QP1 CL_NTOH32(1)
\r
172 #define IB_QP_PRIVILEGED_Q_KEY CL_NTOH32(0x80000000)
\r
174 /****d* IBA Base: Constants/IB_LID_UCAST_START
\r
176 * IB_LID_UCAST_START
\r
179 * Lowest valid unicast LID value.
\r
183 #define IB_LID_UCAST_START_HO 0x0001
\r
184 #define IB_LID_UCAST_START (CL_HTON16(IB_LID_UCAST_START_HO))
\r
187 /****d* IBA Base: Constants/IB_LID_UCAST_END
\r
192 * Highest valid unicast LID value.
\r
196 #define IB_LID_UCAST_END_HO 0xBFFF
\r
197 #define IB_LID_UCAST_END (CL_HTON16(IB_LID_UCAST_END_HO))
\r
200 /****d* IBA Base: Constants/IB_LID_MCAST_START
\r
202 * IB_LID_MCAST_START
\r
205 * Lowest valid multicast LID value.
\r
209 #define IB_LID_MCAST_START_HO 0xC000
\r
210 #define IB_LID_MCAST_START (CL_HTON16(IB_LID_MCAST_START_HO))
\r
213 /****d* IBA Base: Constants/IB_LID_MCAST_END
\r
218 * Highest valid multicast LID value.
\r
222 #define IB_LID_MCAST_END_HO 0xFFFE
\r
223 #define IB_LID_MCAST_END (CL_HTON16(IB_LID_MCAST_END_HO))
\r
226 /****d* IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX
\r
228 * IB_DEFAULT_SUBNET_PREFIX
\r
231 * Default subnet GID prefix.
\r
235 #define IB_DEFAULT_SUBNET_PREFIX (CL_HTON64(0xFE80000000000000ULL))
\r
238 /****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX
\r
240 * IB_NODE_NUM_PORTS_MAX
\r
243 * Maximum number of ports in a single node (14.2.5.7).
\r
246 #define IB_NODE_NUM_PORTS_MAX 0xFE
\r
249 /****d* IBA Base: Constants/IB_INVALID_PORT_NUM
\r
251 * IB_INVALID_PORT_NUM
\r
254 * Value used to indicate an invalid port number (14.2.5.10).
\r
258 #define IB_INVALID_PORT_NUM 0xFF
\r
261 /****d* IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX
\r
263 * IB_SUBNET_PATH_HOPS_MAX
\r
266 * Maximum number of directed route switch hops in a subnet (14.2.1.2).
\r
270 #define IB_SUBNET_PATH_HOPS_MAX 64
\r
273 /****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS
\r
275 * IB_PKEY_MAX_BLOCKS
\r
278 * Maximum number of PKEY blocks (14.2.5.7).
\r
282 #define IB_PKEY_MAX_BLOCKS 2048
\r
285 /****d* IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID
\r
287 * IB_MCAST_MAX_BLOCK_ID
\r
290 * Maximum number of Multicast port mask blocks
\r
294 #define IB_MCAST_MAX_BLOCK_ID 511
\r
297 /****d* IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO
\r
299 * IB_MCAST_BLOCK_ID_MASK_HO
\r
302 * Mask (host order) to recover the Multicast block ID.
\r
306 #define IB_MCAST_BLOCK_ID_MASK_HO 0x000001FF
\r
309 /****d* IBA Base: Constants/IB_MCAST_BLOCK_SIZE
\r
311 * IB_MCAST_BLOCK_SIZE
\r
314 * Number of port mask entries in a multicast forwarding table block.
\r
318 #define IB_MCAST_BLOCK_SIZE 32
\r
321 /****d* IBA Base: Constants/IB_MCAST_MASK_SIZE
\r
323 * IB_MCAST_MASK_SIZE
\r
326 * Number of port mask bits in each entry in the multicast forwarding table.
\r
330 #define IB_MCAST_MASK_SIZE 16
\r
333 /****d* IBA Base: Constants/IB_MCAST_POSITION_MASK_HO
\r
335 * IB_MCAST_POSITION_MASK_HO
\r
338 * Mask (host order) to recover the multicast block position.
\r
342 #define IB_MCAST_POSITION_MASK_HO 0xF0000000
\r
345 /****d* IBA Base: Constants/IB_MCAST_POSITION_MAX
\r
347 * IB_MCAST_POSITION_MAX
\r
350 * Maximum value for the multicast block position.
\r
354 #define IB_MCAST_POSITION_MAX 0xF
\r
357 /****d* IBA Base: Constants/IB_MCAST_POSITION_SHIFT
\r
359 * IB_MCAST_POSITION_SHIFT
\r
362 * Shift value to normalize the multicast block position value.
\r
366 #define IB_MCAST_POSITION_SHIFT 28
\r
369 /****d* IBA Base: Constants/IB_PKEY_ENTRIES_MAX
\r
371 * IB_PKEY_ENTRIES_MAX
\r
374 * Maximum number of PKEY entries per port (14.2.5.7).
\r
378 #define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_PKEY_BLOCK_SIZE)
\r
381 /****d* IBA Base: Constants/IB_PKEY_BASE_MASK
\r
383 * IB_PKEY_BASE_MASK
\r
386 * Masks for the base P_Key value given a P_Key Entry.
\r
390 #define IB_PKEY_BASE_MASK (CL_HTON16(0x7FFF))
\r
393 /****d* IBA Base: Constants/IB_PKEY_TYPE_MASK
\r
395 * IB_PKEY_TYPE_MASK
\r
398 * Masks for the P_Key membership type given a P_Key Entry.
\r
402 #define IB_PKEY_TYPE_MASK (CL_NTOH16(0x8000))
\r
405 /****d* IBA Base: Constants/IB_DEFAULT_PARTIAL_PKEY
\r
407 * IB_DEFAULT_PARTIAL_PKEY
\r
410 * 0x7FFF in network order
\r
414 #define IB_DEFAULT_PARTIAL_PKEY (CL_HTON16(0x7FFF))
\r
417 /****d* IBA Base: Constants/IB_MCLASS_SUBN_LID
\r
419 * IB_MCLASS_SUBN_LID
\r
422 * Subnet Management Class, Subnet Manager LID routed (13.4.4)
\r
426 #define IB_MCLASS_SUBN_LID 0x01
\r
429 /****d* IBA Base: Constants/IB_MCLASS_SUBN_DIR
\r
431 * IB_MCLASS_SUBN_DIR
\r
434 * Subnet Management Class, Subnet Manager directed route (13.4.4)
\r
438 #define IB_MCLASS_SUBN_DIR 0x81
\r
441 /****d* IBA Base: Constants/IB_MCLASS_SUBN_ADM
\r
443 * IB_MCLASS_SUBN_ADM
\r
446 * Subnet Management Class, Subnet Administration (13.4.4)
\r
450 #define IB_MCLASS_SUBN_ADM 0x03
\r
453 /****d* IBA Base: Constants/IB_MCLASS_PERF
\r
458 * Subnet Management Class, Performance Manager (13.4.4)
\r
462 #define IB_MCLASS_PERF 0x04
\r
465 /****d* IBA Base: Constants/IB_MCLASS_BM
\r
470 * Subnet Management Class, Baseboard Manager (13.4.4)
\r
474 #define IB_MCLASS_BM 0x05
\r
477 /****d* IBA Base: Constants/IB_MCLASS_DEV_MGMT
\r
479 * IB_MCLASS_DEV_MGMT
\r
482 * Subnet Management Class, Device Management (13.4.4)
\r
486 #define IB_MCLASS_DEV_MGMT 0x06
\r
489 /****d* IBA Base: Constants/IB_MCLASS_COMM_MGMT
\r
491 * IB_MCLASS_COMM_MGMT
\r
494 * Subnet Management Class, Communication Management (13.4.4)
\r
498 #define IB_MCLASS_COMM_MGMT 0x07
\r
501 /****d* IBA Base: Constants/IB_MCLASS_SNMP
\r
506 * Subnet Management Class, SNMP Tunneling (13.4.4)
\r
510 #define IB_MCLASS_SNMP 0x08
\r
513 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN
\r
515 * IB_MCLASS_VENDOR_LOW_RANGE_MIN
\r
518 * Subnet Management Class, Vendor Specific Low Range Start
\r
522 #define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09
\r
525 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
527 * IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
530 * Subnet Management Class, Vendor Specific Low Range End
\r
534 #define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f
\r
537 /****d* IBA Base: Constants/IB_MCLASS_DEV_ADM
\r
539 * IB_MCLASS_DEV_ADM
\r
542 * Subnet Management Class, Device Administration
\r
546 #define IB_MCLASS_DEV_ADM 0x10
\r
549 /****d* IBA Base: Constants/IB_MCLASS_BIS
\r
554 * Subnet Management Class, BIS
\r
558 #define IB_MCLASS_BIS 0x12
\r
561 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN
\r
563 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN
\r
566 * Subnet Management Class, Vendor Specific High Range Start
\r
570 #define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30
\r
573 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
575 * IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
578 * Subnet Management Class, Vendor Specific High Range End
\r
582 #define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f
\r
585 /****f* IBA Base: Types/ib_class_is_vendor_specific_low
\r
587 * ib_class_is_vendor_specific_low
\r
590 * Indicates if the Class Code if a vendor specific class from
\r
595 static inline boolean_t
\r
596 ib_class_is_vendor_specific_low(
\r
597 IN const uint8_t class_code )
\r
599 return( (class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&
\r
600 (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX));
\r
605 * [in] The Management Datagram Class Code
\r
608 * TRUE if the class is in the Low range of Vendor Specific MADs
\r
614 * IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
617 /****f* IBA Base: Types/ib_class_is_vendor_specific_high
\r
619 * ib_class_is_vendor_specific_high
\r
622 * Indicates if the Class Code if a vendor specific class from
\r
627 static inline boolean_t
\r
628 ib_class_is_vendor_specific_high(
\r
629 IN const uint8_t class_code )
\r
631 return( (class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&
\r
632 (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX));
\r
637 * [in] The Management Datagram Class Code
\r
640 * TRUE if the class is in the High range of Vendor Specific MADs
\r
646 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
650 /****f* IBA Base: Types/ib_class_is_vendor_specific
\r
652 * ib_class_is_vendor_specific
\r
655 * Indicates if the Class Code if a vendor specific class
\r
659 static inline boolean_t
\r
660 ib_class_is_vendor_specific(
\r
661 IN const uint8_t class_code )
\r
663 return( ib_class_is_vendor_specific_low(class_code) ||
\r
664 ib_class_is_vendor_specific_high(class_code) );
\r
669 * [in] The Management Datagram Class Code
\r
672 * TRUE if the class is a Vendor Specific MAD
\r
678 * ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high
\r
681 /****f* IBA Base: Types/ib_class_is_rmpp
\r
686 * Indicates if the Class Code supports RMPP
\r
690 AL_INLINE boolean_t AL_API
\r
692 IN const uint8_t class_code )
\r
694 return( (class_code == IB_MCLASS_SUBN_ADM) ||
\r
695 (class_code == IB_MCLASS_DEV_MGMT) ||
\r
696 (class_code == IB_MCLASS_DEV_ADM) ||
\r
697 (class_code == IB_MCLASS_BIS) ||
\r
698 ib_class_is_vendor_specific_high( class_code ) );
\r
703 * [in] The Management Datagram Class Code
\r
706 * TRUE if the class supports RMPP
\r
717 /****d* IBA Base: Constants/IB_MAX_METHOD
\r
722 * Total number of methods available to a class, not including the R-bit.
\r
726 #define IB_MAX_METHODS 128
\r
729 /****d* IBA Base: Constants/IB_MAD_METHOD_RESP_MASK
\r
731 * IB_MAD_METHOD_RESP_MASK
\r
734 * Response mask to extract 'R' bit from the method field. (13.4.5)
\r
738 #define IB_MAD_METHOD_RESP_MASK 0x80
\r
741 /****d* IBA Base: Constants/IB_MAD_METHOD_GET
\r
743 * IB_MAD_METHOD_GET
\r
746 * Get() Method (13.4.5)
\r
750 #define IB_MAD_METHOD_GET 0x01
\r
753 /****d* IBA Base: Constants/IB_MAD_METHOD_SET
\r
755 * IB_MAD_METHOD_SET
\r
758 * Set() Method (13.4.5)
\r
762 #define IB_MAD_METHOD_SET 0x02
\r
765 /****d* IBA Base: Constants/IB_MAD_METHOD_GET_RESP
\r
767 * IB_MAD_METHOD_GET_RESP
\r
770 * GetResp() Method (13.4.5)
\r
774 #define IB_MAD_METHOD_GET_RESP 0x81
\r
777 #define IB_MAD_METHOD_DELETE 0x15
\r
779 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE
\r
781 * IB_MAD_METHOD_GETTABLE
\r
784 * SubnAdmGetTable() Method (15.2.2)
\r
788 #define IB_MAD_METHOD_GETTABLE 0x12
\r
791 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP
\r
793 * IB_MAD_METHOD_GETTABLE_RESP
\r
796 * SubnAdmGetTableResp() Method (15.2.2)
\r
800 #define IB_MAD_METHOD_GETTABLE_RESP 0x92
\r
804 #define IB_MAD_METHOD_GETTRACETABLE 0x13
\r
805 #define IB_MAD_METHOD_GETMULTI 0x14
\r
806 #define IB_MAD_METHOD_GETMULTI_RESP 0x94
\r
809 /****d* IBA Base: Constants/IB_MAD_METHOD_SEND
\r
811 * IB_MAD_METHOD_SEND
\r
814 * Send() Method (13.4.5)
\r
818 #define IB_MAD_METHOD_SEND 0x03
\r
821 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP
\r
823 * IB_MAD_METHOD_TRAP
\r
826 * Trap() Method (13.4.5)
\r
830 #define IB_MAD_METHOD_TRAP 0x05
\r
833 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT
\r
835 * IB_MAD_METHOD_REPORT
\r
838 * Report() Method (13.4.5)
\r
842 #define IB_MAD_METHOD_REPORT 0x06
\r
845 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP
\r
847 * IB_MAD_METHOD_REPORT_RESP
\r
850 * ReportResp() Method (13.4.5)
\r
854 #define IB_MAD_METHOD_REPORT_RESP 0x86
\r
857 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS
\r
859 * IB_MAD_METHOD_TRAP_REPRESS
\r
862 * TrapRepress() Method (13.4.5)
\r
866 #define IB_MAD_METHOD_TRAP_REPRESS 0x07
\r
869 /****d* IBA Base: Constants/IB_MAD_STATUS_BUSY
\r
871 * IB_MAD_STATUS_BUSY
\r
874 * Temporarily busy, MAD discarded (13.4.7)
\r
878 #define IB_MAD_STATUS_BUSY (CL_HTON16(0x0001))
\r
881 /****d* IBA Base: Constants/IB_MAD_STATUS_REDIRECT
\r
883 * IB_MAD_STATUS_REDIRECT
\r
886 * QP Redirection required (13.4.7)
\r
890 #define IB_MAD_STATUS_REDIRECT (CL_HTON16(0x0002))
\r
893 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER
\r
895 * IB_MAD_STATUS_UNSUP_CLASS_VER
\r
898 * Unsupported class version (13.4.7)
\r
902 #define IB_MAD_STATUS_UNSUP_CLASS_VER (CL_HTON16(0x0004))
\r
905 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD
\r
907 * IB_MAD_STATUS_UNSUP_METHOD
\r
910 * Unsupported method (13.4.7)
\r
914 #define IB_MAD_STATUS_UNSUP_METHOD (CL_HTON16(0x0008))
\r
917 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR
\r
919 * IB_MAD_STATUS_UNSUP_METHOD_ATTR
\r
922 * Unsupported method/attribute combination (13.4.7)
\r
926 #define IB_MAD_STATUS_UNSUP_METHOD_ATTR (CL_HTON16(0x000C))
\r
929 /****d* IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD
\r
931 * IB_MAD_STATUS_INVALID_FIELD
\r
934 * Attribute contains one or more invalid fields (13.4.7)
\r
938 #define IB_MAD_STATUS_INVALID_FIELD (CL_HTON16(0x001C))
\r
941 #define IB_MAD_STATUS_CLASS_MASK (CL_HTON16(0xFF00))
\r
943 #define IB_SA_MAD_STATUS_SUCCESS (CL_HTON16(0x0000))
\r
944 #define IB_SA_MAD_STATUS_NO_RESOURCES (CL_HTON16(0x0100))
\r
945 #define IB_SA_MAD_STATUS_REQ_INVALID (CL_HTON16(0x0200))
\r
946 #define IB_SA_MAD_STATUS_NO_RECORDS (CL_HTON16(0x0300))
\r
947 #define IB_SA_MAD_STATUS_TOO_MANY_RECORDS (CL_HTON16(0x0400))
\r
948 #define IB_SA_MAD_STATUS_INVALID_GID (CL_HTON16(0x0500))
\r
949 #define IB_SA_MAD_STATUS_INSUF_COMPS (CL_HTON16(0x0600))
\r
951 #define IB_DM_MAD_STATUS_NO_IOC_RESP (CL_HTON16(0x0100))
\r
952 #define IB_DM_MAD_STATUS_NO_SVC_ENTRIES (CL_HTON16(0x0200))
\r
953 #define IB_DM_MAD_STATUS_IOC_FAILURE (CL_HTON16(0x8000))
\r
955 /****d* IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO
\r
957 * IB_MAD_ATTR_CLASS_PORT_INFO
\r
960 * ClassPortInfo attribute (13.4.8)
\r
964 #define IB_MAD_ATTR_CLASS_PORT_INFO (CL_NTOH16(0x0001))
\r
967 /****d* IBA Base: Constants/IB_MAD_ATTR_NOTICE
\r
969 * IB_MAD_ATTR_NOTICE
\r
972 * Notice attribute (13.4.8)
\r
976 #define IB_MAD_ATTR_NOTICE (CL_NTOH16(0x0002))
\r
979 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO
\r
981 * IB_MAD_ATTR_INFORM_INFO
\r
984 * InformInfo attribute (13.4.8)
\r
988 #define IB_MAD_ATTR_INFORM_INFO (CL_NTOH16(0x0003))
\r
991 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_DESC
\r
993 * IB_MAD_ATTR_NODE_DESC
\r
996 * NodeDescription attribute (14.2.5)
\r
1000 #define IB_MAD_ATTR_NODE_DESC (CL_NTOH16(0x0010))
\r
1002 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL
\r
1004 * IB_MAD_ATTR_PORT_SMPL_CTRL
\r
1007 * NodeDescription attribute (16.1.2)
\r
1011 #define IB_MAD_ATTR_PORT_SMPL_CTRL (CL_NTOH16(0x0010))
\r
1014 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_INFO
\r
1016 * IB_MAD_ATTR_NODE_INFO
\r
1019 * NodeInfo attribute (14.2.5)
\r
1023 #define IB_MAD_ATTR_NODE_INFO (CL_NTOH16(0x0011))
\r
1026 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT
\r
1028 * IB_MAD_ATTR_PORT_SMPL_RSLT
\r
1031 * NodeInfo attribute (16.1.2)
\r
1035 #define IB_MAD_ATTR_PORT_SMPL_RSLT (CL_NTOH16(0x0011))
\r
1038 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO
\r
1040 * IB_MAD_ATTR_SWITCH_INFO
\r
1043 * SwitchInfo attribute (14.2.5)
\r
1047 #define IB_MAD_ATTR_SWITCH_INFO (CL_NTOH16(0x0012))
\r
1050 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS
\r
1052 * IB_MAD_ATTR_PORT_CNTRS
\r
1055 * SwitchInfo attribute (16.1.2)
\r
1059 #define IB_MAD_ATTR_PORT_CNTRS (CL_NTOH16(0x0012))
\r
1062 /****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO
\r
1064 * IB_MAD_ATTR_GUID_INFO
\r
1067 * GUIDInfo attribute (14.2.5)
\r
1071 #define IB_MAD_ATTR_GUID_INFO (CL_NTOH16(0x0014))
\r
1074 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO
\r
1076 * IB_MAD_ATTR_PORT_INFO
\r
1079 * PortInfo attribute (14.2.5)
\r
1083 #define IB_MAD_ATTR_PORT_INFO (CL_NTOH16(0x0015))
\r
1086 /****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE
\r
1088 * IB_MAD_ATTR_P_KEY_TABLE
\r
1091 * PartitionTable attribute (14.2.5)
\r
1095 #define IB_MAD_ATTR_P_KEY_TABLE (CL_NTOH16(0x0016))
\r
1098 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE
\r
1100 * IB_MAD_ATTR_SLVL_TABLE
\r
1103 * SL VL Mapping Table attribute (14.2.5)
\r
1107 #define IB_MAD_ATTR_SLVL_TABLE (CL_NTOH16(0x0017))
\r
1110 /****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION
\r
1112 * IB_MAD_ATTR_VL_ARBITRATION
\r
1115 * VL Arbitration Table attribute (14.2.5)
\r
1119 #define IB_MAD_ATTR_VL_ARBITRATION (CL_NTOH16(0x0018))
\r
1122 /****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL
\r
1124 * IB_MAD_ATTR_LIN_FWD_TBL
\r
1127 * Switch linear forwarding table
\r
1131 #define IB_MAD_ATTR_LIN_FWD_TBL (CL_NTOH16(0x0019))
\r
1134 /****d* IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL
\r
1136 * IB_MAD_ATTR_RND_FWD_TBL
\r
1139 * Switch random forwarding table
\r
1143 #define IB_MAD_ATTR_RND_FWD_TBL (CL_NTOH16(0x001A))
\r
1146 /****d* IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL
\r
1148 * IB_MAD_ATTR_MCAST_FWD_TBL
\r
1151 * Switch multicast forwarding table
\r
1155 #define IB_MAD_ATTR_MCAST_FWD_TBL (CL_NTOH16(0x001B))
\r
1158 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD
\r
1160 * IB_MAD_ATTR_NODE_RECORD
\r
1163 * NodeRecord attribute (15.2.5)
\r
1167 #define IB_MAD_ATTR_NODE_RECORD (CL_NTOH16(0x0011))
\r
1170 /****d* IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD
\r
1172 * IB_MAD_ATTR_PORTINFO_RECORD
\r
1175 * PortInfoRecord attribute (15.2.5)
\r
1179 #define IB_MAD_ATTR_PORTINFO_RECORD (CL_NTOH16(0x0012))
\r
1182 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO_RECORD
\r
1184 * IB_MAD_ATTR_SWITCH_INFO_RECORD
\r
1187 * SwitchInfoRecord attribute (15.2.5)
\r
1191 #define IB_MAD_ATTR_SWITCH_INFO_RECORD (CL_NTOH16(0x0014))
\r
1194 /****d* IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD
\r
1196 * IB_MAD_ATTR_LINK_RECORD
\r
1199 * LinkRecord attribute (15.2.5)
\r
1203 #define IB_MAD_ATTR_LINK_RECORD (CL_NTOH16(0x0020))
\r
1206 /****d* IBA Base: Constants/IB_MAD_ATTR_SM_INFO
\r
1208 * IB_MAD_ATTR_SM_INFO
\r
1211 * SMInfo attribute (14.2.5)
\r
1215 #define IB_MAD_ATTR_SM_INFO (CL_NTOH16(0x0020))
\r
1218 /****d* IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD
\r
1220 * IB_MAD_ATTR_SMINFO_RECORD
\r
1223 * SMInfoRecord attribute (15.2.5)
\r
1227 #define IB_MAD_ATTR_SMINFO_RECORD (CL_NTOH16(0x0018))
\r
1230 /****d* IBA Base: Constants/IB_MAD_ATTR_GUIDINFO_RECORD
\r
1232 * IB_MAD_ATTR_GUIDINFO_RECORD
\r
1235 * GuidInfoRecord attribute (15.2.5)
\r
1239 #define IB_MAD_ATTR_GUIDINFO_RECORD (CL_NTOH16(0x0030))
\r
1242 /****d* IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG
\r
1244 * IB_MAD_ATTR_VENDOR_DIAG
\r
1247 * VendorDiag attribute (14.2.5)
\r
1251 #define IB_MAD_ATTR_VENDOR_DIAG (CL_NTOH16(0x0030))
\r
1254 /****d* IBA Base: Constants/IB_MAD_ATTR_LED_INFO
\r
1256 * IB_MAD_ATTR_LED_INFO
\r
1259 * LedInfo attribute (14.2.5)
\r
1263 #define IB_MAD_ATTR_LED_INFO (CL_NTOH16(0x0031))
\r
1266 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD
\r
1268 * IB_MAD_ATTR_SERVICE_RECORD
\r
1271 * ServiceRecord attribute (15.2.5)
\r
1275 #define IB_MAD_ATTR_SERVICE_RECORD (CL_NTOH16(0x0031))
\r
1278 /****d* IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD
\r
1280 * IB_MAD_ATTR_LFT_RECORD
\r
1283 * LinearForwardingTableRecord attribute (15.2.5.6)
\r
1287 #define IB_MAD_ATTR_LFT_RECORD (CL_NTOH16(0x0015))
\r
1290 /****d* IBA Base: Constants/IB_MAD_ATTR_MFT_RECORD
\r
1292 * IB_MAD_ATTR_MFT_RECORD
\r
1295 * MulticastForwardingTableRecord attribute (15.2.5.8)
\r
1299 #define IB_MAD_ATTR_MFT_RECORD (CL_NTOH16(0x0017))
\r
1302 /****d* IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD
\r
1304 * IB_MAD_ATTR_PKEYTBL_RECORD
\r
1307 * PKEY Table Record attribute (15.2.5)
\r
1311 #define IB_MAD_ATTR_PKEY_TBL_RECORD (CL_NTOH16(0x0033))
\r
1314 /****d* IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD
\r
1316 * IB_MAD_ATTR_PATH_RECORD
\r
1319 * PathRecord attribute (15.2.5)
\r
1323 #define IB_MAD_ATTR_PATH_RECORD (CL_NTOH16(0x0035))
\r
1326 /****d* IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD
\r
1328 * IB_MAD_ATTR_VLARB_RECORD
\r
1331 * VL Arbitration Table Record attribute (15.2.5)
\r
1335 #define IB_MAD_ATTR_VLARB_RECORD (CL_NTOH16(0x0036))
\r
1338 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD
\r
1340 * IB_MAD_ATTR_SLVL_RECORD
\r
1343 * SLtoVL Mapping Table Record attribute (15.2.5)
\r
1347 #define IB_MAD_ATTR_SLVL_RECORD (CL_NTOH16(0x0013))
\r
1350 /****d* IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD
\r
1352 * IB_MAD_ATTR_MCMEMBER_RECORD
\r
1355 * MCMemberRecord attribute (15.2.5)
\r
1359 #define IB_MAD_ATTR_MCMEMBER_RECORD (CL_NTOH16(0x0038))
\r
1362 /****d* IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD
\r
1364 * IB_MAD_ATTR_TRACE_RECORD
\r
1367 * TraceRecord attribute (15.2.5)
\r
1371 #define IB_MAD_ATTR_TRACE_RECORD (CL_NTOH16(0x0039))
\r
1374 /****d* IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD
\r
1376 * IB_MAD_ATTR_MULTIPATH_RECORD
\r
1379 * MultiPathRecord attribute (15.2.5)
\r
1383 #define IB_MAD_ATTR_MULTIPATH_RECORD (CL_NTOH16(0x003A))
\r
1386 /****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1388 * IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1391 * Service Association Record attribute (15.2.5)
\r
1395 #define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD (CL_NTOH16(0x003B))
\r
1398 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO_RECORD
\r
1400 * IB_MAD_ATTR_INFORM_INFO_RECORD
\r
1403 * InformInfo Record attribute (15.2.5)
\r
1407 #define IB_MAD_ATTR_INFORM_INFO_RECORD (CL_NTOH16(0x00F3))
\r
1409 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO
\r
1411 * IB_MAD_ATTR_IO_UNIT_INFO
\r
1414 * IOUnitInfo attribute (16.3.3)
\r
1418 #define IB_MAD_ATTR_IO_UNIT_INFO (CL_NTOH16(0x0010))
\r
1421 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_CONTROLLER_PROFILE
\r
1423 * IB_MAD_ATTR_IO_CONTROLLER_PROFILE
\r
1426 * IOControllerProfile attribute (16.3.3)
\r
1430 #define IB_MAD_ATTR_IO_CONTROLLER_PROFILE (CL_NTOH16(0x0011))
\r
1433 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES
\r
1435 * IB_MAD_ATTR_SERVICE_ENTRIES
\r
1438 * ServiceEntries attribute (16.3.3)
\r
1442 #define IB_MAD_ATTR_SERVICE_ENTRIES (CL_NTOH16(0x0012))
\r
1445 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
\r
1447 * IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
\r
1450 * DiagnosticTimeout attribute (16.3.3)
\r
1454 #define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT (CL_NTOH16(0x0020))
\r
1457 /****d* IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST
\r
1459 * IB_MAD_ATTR_PREPARE_TO_TEST
\r
1462 * PrepareToTest attribute (16.3.3)
\r
1466 #define IB_MAD_ATTR_PREPARE_TO_TEST (CL_NTOH16(0x0021))
\r
1469 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE
\r
1471 * IB_MAD_ATTR_TEST_DEVICE_ONCE
\r
1474 * TestDeviceOnce attribute (16.3.3)
\r
1478 #define IB_MAD_ATTR_TEST_DEVICE_ONCE (CL_NTOH16(0x0022))
\r
1481 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP
\r
1483 * IB_MAD_ATTR_TEST_DEVICE_LOOP
\r
1486 * TestDeviceLoop attribute (16.3.3)
\r
1490 #define IB_MAD_ATTR_TEST_DEVICE_LOOP (CL_NTOH16(0x0023))
\r
1493 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE
\r
1495 * IB_MAD_ATTR_DIAG_CODE
\r
1498 * DiagCode attribute (16.3.3)
\r
1502 #define IB_MAD_ATTR_DIAG_CODE (CL_NTOH16(0x0024))
\r
1505 /****d* IBA Base: Constants/IB_NODE_TYPE_CA
\r
1510 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1514 #define IB_NODE_TYPE_CA 0x01
\r
1517 /****d* IBA Base: Constants/IB_NODE_TYPE_SWITCH
\r
1519 * IB_NODE_TYPE_SWITCH
\r
1522 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1526 #define IB_NODE_TYPE_SWITCH 0x02
\r
1529 /****d* IBA Base: Constants/IB_NODE_TYPE_ROUTER
\r
1531 * IB_NODE_TYPE_ROUTER
\r
1534 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1538 #define IB_NODE_TYPE_ROUTER 0x03
\r
1541 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA
\r
1543 * IB_NOTICE_NODE_TYPE_CA
\r
1546 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1550 #define IB_NOTICE_NODE_TYPE_CA (CL_NTOH32(0x000001))
\r
1553 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH
\r
1555 * IB_NOTICE_NODE_TYPE_SWITCH
\r
1558 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1562 #define IB_NOTICE_NODE_TYPE_SWITCH (CL_NTOH32(0x000002))
\r
1565 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER
\r
1567 * IB_NOTICE_NODE_TYPE_ROUTER
\r
1570 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1574 #define IB_NOTICE_NODE_TYPE_ROUTER (CL_NTOH32(0x000003))
\r
1577 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT
\r
1579 * IB_NOTICE_NODE_TYPE_SUBN_MGMT
\r
1582 * Encoded generic node type used in MAD attributes (13.4.8.2).
\r
1583 * Note that this value is not defined for the NodeType field
\r
1584 * of the NodeInfo attribute (14.2.5.3).
\r
1588 #define IB_NOTICE_NODE_TYPE_SUBN_MGMT (CL_NTOH32(0x000004))
\r
1591 /****d* IBA Base: Constants/IB_MTU_LEN_TYPE
\r
1596 * Encoded path MTU.
\r
1602 * others: reserved
\r
1606 #define IB_MTU_LEN_256 1
\r
1607 #define IB_MTU_LEN_512 2
\r
1608 #define IB_MTU_LEN_1024 3
\r
1609 #define IB_MTU_LEN_2048 4
\r
1610 #define IB_MTU_LEN_4096 5
\r
1612 #define IB_MIN_MTU IB_MTU_LEN_256
\r
1613 #define IB_MAX_MTU IB_MTU_LEN_4096
\r
1617 /****d* IBA Base: Constants/IB_PATH_SELECTOR_TYPE
\r
1619 * IB_PATH_SELECTOR_TYPE
\r
1623 * 0: greater than specified
\r
1624 * 1: less than specified
\r
1625 * 2: exactly the specified
\r
1626 * 3: largest available
\r
1630 #define IB_PATH_SELECTOR_GREATER_THAN 0
\r
1631 #define IB_PATH_SELECTOR_LESS_THAN 1
\r
1632 #define IB_PATH_SELECTOR_EXACTLY 2
\r
1633 #define IB_PATH_SELECTOR_LARGEST 3
\r
1636 /****d* IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE
\r
1638 * IB_SMINFO_STATE_NOTACTIVE
\r
1641 * Encoded state value used in the SMInfo attribute.
\r
1645 #define IB_SMINFO_STATE_NOTACTIVE 0
\r
1648 /****d* IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING
\r
1650 * IB_SMINFO_STATE_DISCOVERING
\r
1653 * Encoded state value used in the SMInfo attribute.
\r
1657 #define IB_SMINFO_STATE_DISCOVERING 1
\r
1660 /****d* IBA Base: Constants/IB_SMINFO_STATE_STANDBY
\r
1662 * IB_SMINFO_STATE_STANDBY
\r
1665 * Encoded state value used in the SMInfo attribute.
\r
1669 #define IB_SMINFO_STATE_STANDBY 2
\r
1672 /****d* IBA Base: Constants/IB_SMINFO_STATE_MASTER
\r
1674 * IB_SMINFO_STATE_MASTER
\r
1677 * Encoded state value used in the SMInfo attribute.
\r
1681 #define IB_SMINFO_STATE_MASTER 3
\r
1684 /****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK
\r
1686 * IB_PATH_REC_SELECTOR_MASK
\r
1689 * Mask for the selector field for path record MTU, rate,
\r
1690 * and packet lifetime.
\r
1694 #define IB_PATH_REC_SELECTOR_MASK 0xC0
\r
1696 /****d* IBA Base: Constants/IB_MULTIPATH_REC_SELECTOR_MASK
\r
1698 * IB_MULTIPATH_REC_SELECTOR_MASK
\r
1701 * Mask for the selector field for multipath record MTU, rate,
\r
1702 * and packet lifetime.
\r
1706 #define IB_MULTIPATH_REC_SELECTOR_MASK 0xC0
\r
1709 /****d* IBA Base: Constants/IB_PATH_REC_BASE_MASK
\r
1711 * IB_PATH_REC_BASE_MASK
\r
1714 * Mask for the base value field for path record MTU, rate,
\r
1715 * and packet lifetime.
\r
1719 #define IB_PATH_REC_BASE_MASK 0x3F
\r
1722 /****d* IBA Base: Constants/IB_MULTIPATH_REC_BASE_MASK
\r
1724 * IB_MULTIPATH_REC_BASE_MASK
\r
1727 * Mask for the base value field for multipath record MTU, rate,
\r
1728 * and packet lifetime.
\r
1732 #define IB_MULTIPATH_REC_BASE_MASK 0x3F
\r
1735 /****h* IBA Base/Type Definitions
\r
1737 * Type Definitions
\r
1740 * Definitions are from the InfiniBand Architecture Specification v1.2
\r
1744 /****d* IBA Base: Types/ib_net16_t
\r
1749 * Defines the network ordered type for 16-bit values.
\r
1753 typedef uint16_t ib_net16_t;
\r
1756 /****d* IBA Base: Types/ib_net32_t
\r
1761 * Defines the network ordered type for 32-bit values.
\r
1765 typedef uint32_t ib_net32_t;
\r
1768 /****d* IBA Base: Types/ib_net64_t
\r
1773 * Defines the network ordered type for 64-bit values.
\r
1777 typedef uint64_t ib_net64_t;
\r
1780 /****d* IBA Base: Types/ib_gid_prefix_t
\r
1788 typedef ib_net64_t ib_gid_prefix_t;
\r
1791 /****d* IBA Base: Constants/ib_link_states_t
\r
1793 * ib_link_states_t
\r
1796 * Defines the link states of a port.
\r
1800 #define IB_LINK_NO_CHANGE 0
\r
1801 #define IB_LINK_DOWN 1
\r
1802 #define IB_LINK_INIT 2
\r
1803 #define IB_LINK_ARMED 3
\r
1804 #define IB_LINK_ACTIVE 4
\r
1805 #define IB_LINK_ACT_DEFER 5
\r
1808 static const char* const __ib_node_type_str[] =
\r
1811 "Channel Adapter",
\r
1814 "Subnet Management"
\r
1817 /****f* IBA Base: Types/ib_get_node_type_str
\r
1819 * ib_get_node_type_str
\r
1822 * Returns a string for the specified node type.
\r
1826 AL_INLINE const char* AL_API
\r
1827 ib_get_node_type_str(
\r
1828 IN uint8_t node_type )
\r
1830 if( node_type >= IB_NODE_TYPE_ROUTER )
\r
1832 return( __ib_node_type_str[node_type] );
\r
1837 * [in] Encoded node type as returned in the NodeInfo attribute.
\r
1840 * Pointer to the node type string.
\r
1848 static const char* const __ib_port_state_str[] =
\r
1850 "No State Change (NOP)",
\r
1859 /****f* IBA Base: Types/ib_get_port_state_str
\r
1861 * ib_get_port_state_str
\r
1864 * Returns a string for the specified port state.
\r
1868 AL_INLINE const char* AL_API
\r
1869 ib_get_port_state_str(
\r
1870 IN uint8_t port_state )
\r
1872 if( port_state > IB_LINK_ACTIVE )
\r
1873 port_state = IB_LINK_ACTIVE + 1;
\r
1874 return( __ib_port_state_str[port_state] );
\r
1879 * [in] Encoded port state as returned in the PortInfo attribute.
\r
1882 * Pointer to the port state string.
\r
1890 /****f* IBA Base: Types/ib_get_port_state_from_str
\r
1892 * ib_get_port_state_from_str
\r
1895 * Returns a string for the specified port state.
\r
1899 AL_INLINE const uint8_t AL_API
\r
1900 ib_get_port_state_from_str(
\r
1901 IN char* p_port_state_str )
\r
1903 if( !strncmp(p_port_state_str,"No State Change (NOP)",12) )
\r
1905 else if( !strncmp(p_port_state_str, "DOWN",4) )
\r
1907 else if( !strncmp(p_port_state_str, "INIT", 4) )
\r
1909 else if( !strncmp(p_port_state_str,"ARMED", 5) )
\r
1911 else if( !strncmp(p_port_state_str, "ACTIVE", 6) )
\r
1913 else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )
\r
1919 * p_port_state_str
\r
1920 * [in] A string matching one returned by ib_get_port_state_str
\r
1923 * The appropriate code.
\r
1931 /****d* IBA Base: Constants/Join States
\r
1936 * Defines the join state flags for multicast group management.
\r
1940 #define IB_JOIN_STATE_FULL 1
\r
1941 #define IB_JOIN_STATE_NON 2
\r
1942 #define IB_JOIN_STATE_SEND_ONLY 4
\r
1945 /****f* IBA Base: Types/ib_pkey_get_base
\r
1947 * ib_pkey_get_base
\r
1950 * Returns the base P_Key value with the membership bit stripped.
\r
1954 AL_INLINE ib_net16_t AL_API
\r
1956 IN const ib_net16_t pkey )
\r
1958 return( (ib_net16_t)(pkey & IB_PKEY_BASE_MASK) );
\r
1963 * [in] P_Key value
\r
1966 * Returns the base P_Key value with the membership bit stripped.
\r
1973 /****f* IBA Base: Types/ib_pkey_is_full_member
\r
1975 * ib_pkey_is_full_member
\r
1978 * Indicates if the port is a full member of the parition.
\r
1982 AL_INLINE boolean_t AL_API
\r
1983 ib_pkey_is_full_member(
\r
1984 IN const ib_net16_t pkey )
\r
1986 return( (pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK );
\r
1991 * [in] P_Key value
\r
1994 * TRUE if the port is a full member of the partition.
\r
1995 * FALSE otherwise.
\r
2000 * ib_pkey_get_base, ib_net16_t
\r
2003 /****f* IBA Base: Types/ib_pkey_is_invalid
\r
2005 * ib_pkey_is_invalid
\r
2008 * Returns TRUE if the given P_Key is an invalid P_Key
\r
2009 * C10-116: the CI shall regard a P_Key as invalid if its low-order
\r
2010 * 15 bits are all zero...
\r
2014 static inline boolean_t
\r
2015 ib_pkey_is_invalid(
\r
2016 IN const ib_net16_t pkey )
\r
2018 if (ib_pkey_get_base(pkey) == 0x0000)
\r
2026 * [in] P_Key value
\r
2029 * Returns the base P_Key value with the membership bit stripped.
\r
2036 /****d* IBA Base: Types/ib_gid_t
\r
2044 #include <complib/cl_packon.h>
\r
2045 typedef union _ib_gid
\r
2048 struct _ib_gid_unicast
\r
2050 ib_gid_prefix_t prefix;
\r
2051 ib_net64_t interface_id;
\r
2053 } PACK_SUFFIX unicast;
\r
2055 struct _ib_gid_multicast
\r
2057 uint8_t header[2];
\r
2058 uint8_t raw_group_id[14];
\r
2060 } PACK_SUFFIX multicast;
\r
2062 } PACK_SUFFIX ib_gid_t;
\r
2063 #include <complib/cl_packoff.h>
\r
2067 * GID represented as an unformated byte array.
\r
2070 * Typical unicast representation with subnet prefix and
\r
2074 * Representation for multicast use.
\r
2079 /****f* IBA Base: Types/ib_gid_is_multicast
\r
2081 * ib_gid_is_multicast
\r
2084 * Returns a boolean indicating whether a GID is a multicast GID.
\r
2088 AL_INLINE boolean_t AL_API
\r
2089 ib_gid_is_multicast(
\r
2090 IN const ib_gid_t* p_gid )
\r
2092 return( p_gid->raw[0] == 0xFF );
\r
2095 /****f* IBA Base: Types/ib_gid_get_scope
\r
2097 * ib_gid_get_scope
\r
2100 * Returns scope of (assumed) multicast GID.
\r
2104 AL_INLINE uint8_t AL_API
\r
2105 ib_mgid_get_scope(
\r
2106 IN const ib_gid_t* p_gid )
\r
2108 return( p_gid->raw[1] & 0x0F );
\r
2111 /****f* IBA Base: Types/ib_gid_set_scope
\r
2113 * ib_gid_set_scope
\r
2116 * Sets scope of (assumed) multicast GID.
\r
2120 AL_INLINE void AL_API
\r
2121 ib_mgid_set_scope(
\r
2122 IN ib_gid_t* const p_gid,
\r
2123 IN const uint8_t scope )
\r
2125 p_gid->raw[1] &= 0xF0;
\r
2126 p_gid->raw[1] |= scope & 0x0F;
\r
2129 /****f* IBA Base: Types/ib_gid_set_default
\r
2131 * ib_gid_set_default
\r
2134 * Sets a GID to the default value.
\r
2138 AL_INLINE void AL_API
\r
2139 ib_gid_set_default(
\r
2140 IN ib_gid_t* const p_gid,
\r
2141 IN const ib_net64_t interface_id )
\r
2143 p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;
\r
2144 p_gid->unicast.interface_id = interface_id;
\r
2149 * [in] Pointer to the GID object.
\r
2152 * [in] Manufacturer assigned EUI64 value of a port.
\r
2163 /****f* IBA Base: Types/ib_gid_get_subnet_prefix
\r
2165 * ib_gid_get_subnet_prefix
\r
2168 * Gets the subnet prefix from a GID.
\r
2172 AL_INLINE ib_net64_t AL_API
\r
2173 ib_gid_get_subnet_prefix(
\r
2174 IN const ib_gid_t* const p_gid )
\r
2176 return( p_gid->unicast.prefix );
\r
2181 * [in] Pointer to the GID object.
\r
2184 * 64-bit subnet prefix value.
\r
2192 /****f* IBA Base: Types/ib_gid_is_link_local
\r
2194 * ib_gid_is_link_local
\r
2197 * Returns TRUE if the unicast GID scoping indicates link local,
\r
2198 * FALSE otherwise.
\r
2202 static inline boolean_t
\r
2203 ib_gid_is_link_local(
\r
2204 IN const ib_gid_t* const p_gid )
\r
2206 return( ib_gid_get_subnet_prefix( p_gid ) == IB_DEFAULT_SUBNET_PREFIX );
\r
2211 * [in] Pointer to the GID object.
\r
2214 * Returns TRUE if the unicast GID scoping indicates link local,
\r
2215 * FALSE otherwise.
\r
2223 /****f* IBA Base: Types/ib_gid_is_site_local
\r
2225 * ib_gid_is_site_local
\r
2228 * Returns TRUE if the unicast GID scoping indicates site local,
\r
2229 * FALSE otherwise.
\r
2233 static inline boolean_t
\r
2234 ib_gid_is_site_local(
\r
2235 IN const ib_gid_t* const p_gid )
\r
2237 return( ( ib_gid_get_subnet_prefix( p_gid ) &
\r
2238 CL_HTON64( 0xFFFFFFFFFFFF0000ULL ) ) == CL_HTON64( 0xFEC0000000000000ULL ) );
\r
2243 * [in] Pointer to the GID object.
\r
2246 * Returns TRUE if the unicast GID scoping indicates site local,
\r
2247 * FALSE otherwise.
\r
2255 /****f* IBA Base: Types/ib_gid_get_guid
\r
2260 * Gets the guid from a GID.
\r
2264 AL_INLINE ib_net64_t AL_API
\r
2266 IN const ib_gid_t* const p_gid )
\r
2268 return( p_gid->unicast.interface_id );
\r
2273 * [in] Pointer to the GID object.
\r
2276 * 64-bit GUID value.
\r
2284 /****s* IBA Base: Types/ib_field32_t
\r
2289 * Represents a 32-bit field, and allows access as a 32-bit network byte
\r
2290 * ordered or a 4-byte array.
\r
2294 #include <complib/cl_packon.h>
\r
2295 typedef union _ib_field32_t
\r
2300 } PACK_SUFFIX ib_field32_t;
\r
2301 #include <complib/cl_packoff.h>
\r
2305 * Full field value.
\r
2308 * Byte array representing the field. The byte array provides identical
\r
2309 * access independently from CPU byte-ordering.
\r
2312 /****s* IBA Base: Types/ib_path_rec_t
\r
2317 * Path records encapsulate the properties of a given
\r
2318 * route between two end-points on a subnet.
\r
2322 #include <complib/cl_packon.h>
\r
2323 typedef __declspec(align(8)) struct _ib_path_rec
\r
2330 ib_field32_t hop_flow_raw;
\r
2338 uint8_t preference;
\r
2342 } PACK_SUFFIX ib_path_rec_t;
\r
2343 #include <complib/cl_packoff.h>
\r
2350 * GID of destination port.
\r
2353 * GID of source port.
\r
2356 * LID of destination port.
\r
2359 * LID of source port.
\r
2362 * Global routing parameters: hop count, flow label and raw bit.
\r
2365 * Another global routing parameter.
\r
2368 * Reversible path - 1 bit to say if path is reversible.
\r
2369 * num_path [6:0] In queries, maximum number of paths to return.
\r
2370 * In responses, undefined.
\r
2373 * Partition key (P_Key) to use on this path.
\r
2379 * Service level to use on this path.
\r
2382 * MTU and MTU selector fields to use on this path
\r
2385 * Rate and rate selector fields to use on this path.
\r
2391 * Indicates the relative merit of this path versus other path
\r
2392 * records returned from the SA. Lower numbers are better.
\r
2402 /* Path Record Component Masks */
\r
2403 #define IB_PR_COMPMASK_DGID (CL_HTON64(((uint64_t)1)<<2))
\r
2404 #define IB_PR_COMPMASK_SGID (CL_HTON64(((uint64_t)1)<<3))
\r
2405 #define IB_PR_COMPMASK_DLID (CL_HTON64(((uint64_t)1)<<4))
\r
2406 #define IB_PR_COMPMASK_SLID (CL_HTON64(((uint64_t)1)<<5))
\r
2407 #define IB_PR_COMPMASK_RAWTRAFFIC (CL_HTON64(((uint64_t)1)<<6))
\r
2408 #define IB_PR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<7))
\r
2409 #define IB_PR_COMPMASK_FLOWLABEL (CL_HTON64(((uint64_t)1)<<8))
\r
2410 #define IB_PR_COMPMASK_HOPLIMIT (CL_HTON64(((uint64_t)1)<<9))
\r
2411 #define IB_PR_COMPMASK_TCLASS (CL_HTON64(((uint64_t)1)<<10))
\r
2412 #define IB_PR_COMPMASK_REVERSIBLE (CL_HTON64(((uint64_t)1)<<11))
\r
2413 #define IB_PR_COMPMASK_NUM_PATH (CL_HTON64(((uint64_t)1)<<12))
\r
2414 #define IB_PR_COMPMASK_PKEY (CL_HTON64(((uint64_t)1)<<13))
\r
2415 #define IB_PR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<14))
\r
2416 #define IB_PR_COMPMASK_SL (CL_HTON64(((uint64_t)1)<<15))
\r
2417 #define IB_PR_COMPMASK_MTUSELEC (CL_HTON64(((uint64_t)1)<<16))
\r
2418 #define IB_PR_COMPMASK_MTU (CL_HTON64(((uint64_t)1)<<17))
\r
2419 #define IB_PR_COMPMASK_RATESELEC (CL_HTON64(((uint64_t)1)<<18))
\r
2420 #define IB_PR_COMPMASK_RATE (CL_HTON64(((uint64_t)1)<<19))
\r
2421 #define IB_PR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<20))
\r
2422 #define IB_PR_COMPMASK_PKTLIFETIME (CL_HTON64(((uint64_t)1)<<21))
\r
2424 /* Link Record Component Masks */
\r
2425 #define IB_LR_COMPMASK_FROM_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2426 #define IB_LR_COMPMASK_FROM_PORT (CL_HTON64(((uint64_t)1)<<1))
\r
2427 #define IB_LR_COMPMASK_TO_PORT (CL_HTON64(((uint64_t)1)<<2))
\r
2428 #define IB_LR_COMPMASK_TO_LID (CL_HTON64(((uint64_t)1)<<3))
\r
2430 /* VL Arbitration Record Masks */
\r
2431 #define IB_VLA_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2432 #define IB_VLA_COMPMASK_OUT_PORT (CL_HTON64(((uint64_t)1)<<1))
\r
2433 #define IB_VLA_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<2))
\r
2435 /* SLtoVL Mapping Record Masks */
\r
2436 #define IB_SLVL_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2437 #define IB_SLVL_COMPMASK_IN_PORT (CL_HTON64(((uint64_t)1)<<1))
\r
2438 #define IB_SLVL_COMPMASK_OUT_PORT (CL_HTON64(((uint64_t)1)<<2))
\r
2440 /* P_Key Table Record Masks */
\r
2441 #define IB_PKEY_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2442 #define IB_PKEY_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<1))
\r
2443 #define IB_PKEY_COMPMASK_PORT (CL_HTON64(((uint64_t)1)<<2))
\r
2445 /* Switch Info Record Masks */
\r
2446 #define IB_SWIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2447 #define IB_SWIR_COMPMASK_RESERVED1 (CL_HTON64(((uint64_t)1)<<1))
\r
2449 /* LFT Record Masks */
\r
2450 #define IB_LFTR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2451 #define IB_LFTR_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<1))
\r
2453 /* MFT Record Masks */
\r
2454 #define IB_MFTR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2455 #define IB_MFTR_COMPMASK_POSITION (CL_HTON64(((uint64_t)1)<<1))
\r
2456 #define IB_MFTR_COMPMASK_RESERVED1 (CL_HTON64(((uint64_t)1)<<2))
\r
2457 #define IB_MFTR_COMPMASK_BLOCK (CL_HTON64(((uint64_t)1)<<3))
\r
2458 #define IB_MFTR_COMPMASK_RESERVED2 (CL_HTON64(((uint64_t)1)<<4))
\r
2460 /* NodeInfo Record Masks */
\r
2461 #define IB_NR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2462 #define IB_NR_COMPMASK_RESERVED1 (CL_HTON64(((uint64_t)1)<<1))
\r
2463 #define IB_NR_COMPMASK_BASEVERSION (CL_HTON64(((uint64_t)1)<<2))
\r
2464 #define IB_NR_COMPMASK_CLASSVERSION (CL_HTON64(((uint64_t)1)<<3))
\r
2465 #define IB_NR_COMPMASK_NODETYPE (CL_HTON64(((uint64_t)1)<<4))
\r
2466 #define IB_NR_COMPMASK_NUMPORTS (CL_HTON64(((uint64_t)1)<<5))
\r
2467 #define IB_NR_COMPMASK_SYSIMAGEGUID (CL_HTON64(((uint64_t)1)<<6))
\r
2468 #define IB_NR_COMPMASK_NODEGUID (CL_HTON64(((uint64_t)1)<<7))
\r
2469 #define IB_NR_COMPMASK_PORTGUID (CL_HTON64(((uint64_t)1)<<8))
\r
2470 #define IB_NR_COMPMASK_PARTCAP (CL_HTON64(((uint64_t)1)<<9))
\r
2471 #define IB_NR_COMPMASK_DEVID (CL_HTON64(((uint64_t)1)<<10))
\r
2472 #define IB_NR_COMPMASK_REV (CL_HTON64(((uint64_t)1)<<11))
\r
2473 #define IB_NR_COMPMASK_PORTNUM (CL_HTON64(((uint64_t)1)<<12))
\r
2474 #define IB_NR_COMPMASK_VENDID (CL_HTON64(((uint64_t)1)<<13))
\r
2475 #define IB_NR_COMPMASK_NODEDESC (CL_HTON64(((uint64_t)1)<<14))
\r
2477 /* Service Record Component Masks Sec 15.2.5.14 Ver 1.1*/
\r
2478 #define IB_SR_COMPMASK_SID (CL_HTON64(((uint64_t)1)<<0))
\r
2479 #define IB_SR_COMPMASK_SGID (CL_HTON64(((uint64_t)1)<<1))
\r
2480 #define IB_SR_COMPMASK_SPKEY (CL_HTON64(((uint64_t)1)<<2))
\r
2481 #define IB_SR_COMPMASK_RES1 (CL_HTON64(((uint64_t)1)<<3))
\r
2482 #define IB_SR_COMPMASK_SLEASE (CL_HTON64(((uint64_t)1)<<4))
\r
2483 #define IB_SR_COMPMASK_SKEY (CL_HTON64(((uint64_t)1)<<5))
\r
2484 #define IB_SR_COMPMASK_SNAME (CL_HTON64(((uint64_t)1)<<6))
\r
2485 #define IB_SR_COMPMASK_SDATA8_0 (CL_HTON64(((uint64_t)1)<<7))
\r
2486 #define IB_SR_COMPMASK_SDATA8_1 (CL_HTON64(((uint64_t)1)<<8))
\r
2487 #define IB_SR_COMPMASK_SDATA8_2 (CL_HTON64(((uint64_t)1)<<9))
\r
2488 #define IB_SR_COMPMASK_SDATA8_3 (CL_HTON64(((uint64_t)1)<<10))
\r
2489 #define IB_SR_COMPMASK_SDATA8_4 (CL_HTON64(((uint64_t)1)<<11))
\r
2490 #define IB_SR_COMPMASK_SDATA8_5 (CL_HTON64(((uint64_t)1)<<12))
\r
2491 #define IB_SR_COMPMASK_SDATA8_6 (CL_HTON64(((uint64_t)1)<<13))
\r
2492 #define IB_SR_COMPMASK_SDATA8_7 (CL_HTON64(((uint64_t)1)<<14))
\r
2493 #define IB_SR_COMPMASK_SDATA8_8 (CL_HTON64(((uint64_t)1)<<15))
\r
2494 #define IB_SR_COMPMASK_SDATA8_9 (CL_HTON64(((uint64_t)1)<<16))
\r
2495 #define IB_SR_COMPMASK_SDATA8_10 (CL_HTON64(((uint64_t)1)<<17))
\r
2496 #define IB_SR_COMPMASK_SDATA8_11 (CL_HTON64(((uint64_t)1)<<18))
\r
2497 #define IB_SR_COMPMASK_SDATA8_12 (CL_HTON64(((uint64_t)1)<<19))
\r
2498 #define IB_SR_COMPMASK_SDATA8_13 (CL_HTON64(((uint64_t)1)<<20))
\r
2499 #define IB_SR_COMPMASK_SDATA8_14 (CL_HTON64(((uint64_t)1)<<21))
\r
2500 #define IB_SR_COMPMASK_SDATA8_15 (CL_HTON64(((uint64_t)1)<<22))
\r
2501 #define IB_SR_COMPMASK_SDATA16_0 (CL_HTON64(((uint64_t)1)<<23))
\r
2502 #define IB_SR_COMPMASK_SDATA16_1 (CL_HTON64(((uint64_t)1)<<24))
\r
2503 #define IB_SR_COMPMASK_SDATA16_2 (CL_HTON64(((uint64_t)1)<<25))
\r
2504 #define IB_SR_COMPMASK_SDATA16_3 (CL_HTON64(((uint64_t)1)<<26))
\r
2505 #define IB_SR_COMPMASK_SDATA16_4 (CL_HTON64(((uint64_t)1)<<27))
\r
2506 #define IB_SR_COMPMASK_SDATA16_5 (CL_HTON64(((uint64_t)1)<<28))
\r
2507 #define IB_SR_COMPMASK_SDATA16_6 (CL_HTON64(((uint64_t)1)<<29))
\r
2508 #define IB_SR_COMPMASK_SDATA16_7 (CL_HTON64(((uint64_t)1)<<30))
\r
2509 #define IB_SR_COMPMASK_SDATA32_0 (CL_HTON64(((uint64_t)1)<<31))
\r
2510 #define IB_SR_COMPMASK_SDATA32_1 (CL_HTON64(((uint64_t)1)<<32))
\r
2511 #define IB_SR_COMPMASK_SDATA32_2 (CL_HTON64(((uint64_t)1)<<33))
\r
2512 #define IB_SR_COMPMASK_SDATA32_3 (CL_HTON64(((uint64_t)1)<<34))
\r
2513 #define IB_SR_COMPMASK_SDATA64_0 (CL_HTON64(((uint64_t)1)<<35))
\r
2514 #define IB_SR_COMPMASK_SDATA64_1 (CL_HTON64(((uint64_t)1)<<36))
\r
2516 /* Port Info Record Component Masks */
\r
2517 #define IB_PIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2518 #define IB_PIR_COMPMASK_PORTNUM (CL_HTON64(((uint64_t)1)<<1))
\r
2519 #define IB_PIR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<2))
\r
2520 #define IB_PIR_COMPMASK_MKEY (CL_HTON64(((uint64_t)1)<<3))
\r
2521 #define IB_PIR_COMPMASK_GIDPRE (CL_HTON64(((uint64_t)1)<<4))
\r
2522 #define IB_PIR_COMPMASK_BASELID (CL_HTON64(((uint64_t)1)<<5))
\r
2523 #define IB_PIR_COMPMASK_SMLID (CL_HTON64(((uint64_t)1)<<6))
\r
2524 #define IB_PIR_COMPMASK_CAPMASK (CL_HTON64(((uint64_t)1)<<7))
\r
2525 #define IB_PIR_COMPMASK_DIAGCODE (CL_HTON64(((uint64_t)1)<<8))
\r
2526 #define IB_PIR_COMPMASK_MKEYLEASEPRD (CL_HTON64(((uint64_t)1)<<9))
\r
2527 #define IB_PIR_COMPMASK_LOCALPORTNUM (CL_HTON64(((uint64_t)1)<<10))
\r
2528 #define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(((uint64_t)1)<<11))
\r
2529 #define IB_PIR_COMPMASK_LNKWIDTHSUPPORT (CL_HTON64(((uint64_t)1)<<12))
\r
2530 #define IB_PIR_COMPMASK_LNKWIDTHACTIVE (CL_HTON64(((uint64_t)1)<<13))
\r
2531 #define IB_PIR_COMPMASK_LNKSPEEDSUPPORT (CL_HTON64(((uint64_t)1)<<14))
\r
2532 #define IB_PIR_COMPMASK_PORTSTATE (CL_HTON64(((uint64_t)1)<<15))
\r
2533 #define IB_PIR_COMPMASK_PORTPHYSTATE (CL_HTON64(((uint64_t)1)<<16))
\r
2534 #define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(((uint64_t)1)<<17))
\r
2535 #define IB_PIR_COMPMASK_MKEYPROTBITS (CL_HTON64(((uint64_t)1)<<18))
\r
2536 #define IB_PIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<19))
\r
2537 #define IB_PIR_COMPMASK_LMC (CL_HTON64(((uint64_t)1)<<20))
\r
2538 #define IB_PIR_COMPMASK_LINKSPEEDACTIVE (CL_HTON64(((uint64_t)1)<<21))
\r
2539 #define IB_PIR_COMPMASK_LINKSPEEDENABLE (CL_HTON64(((uint64_t)1)<<22))
\r
2540 #define IB_PIR_COMPMASK_NEIGHBORMTU (CL_HTON64(((uint64_t)1)<<23))
\r
2541 #define IB_PIR_COMPMASK_MASTERSMSL (CL_HTON64(((uint64_t)1)<<24))
\r
2542 #define IB_PIR_COMPMASK_VLCAP (CL_HTON64(((uint64_t)1)<<25))
\r
2543 #define IB_PIR_COMPMASK_INITTYPE (CL_HTON64(((uint64_t)1)<<26))
\r
2544 #define IB_PIR_COMPMASK_VLHIGHLIMIT (CL_HTON64(((uint64_t)1)<<27))
\r
2545 #define IB_PIR_COMPMASK_VLARBHIGHCAP (CL_HTON64(((uint64_t)1)<<28))
\r
2546 #define IB_PIR_COMPMASK_VLARBLOWCAP (CL_HTON64(((uint64_t)1)<<29))
\r
2547 #define IB_PIR_COMPMASK_INITTYPEREPLY (CL_HTON64(((uint64_t)1)<<30))
\r
2548 #define IB_PIR_COMPMASK_MTUCAP (CL_HTON64(((uint64_t)1)<<31))
\r
2549 #define IB_PIR_COMPMASK_VLSTALLCNT (CL_HTON64(((uint64_t)1)<<32))
\r
2550 #define IB_PIR_COMPMASK_HOQLIFE (CL_HTON64(((uint64_t)1)<<33))
\r
2551 #define IB_PIR_COMPMASK_OPVLS (CL_HTON64(((uint64_t)1)<<34))
\r
2552 #define IB_PIR_COMPMASK_PARENFIN (CL_HTON64(((uint64_t)1)<<35))
\r
2553 #define IB_PIR_COMPMASK_PARENFOUT (CL_HTON64(((uint64_t)1)<<36))
\r
2554 #define IB_PIR_COMPMASK_FILTERRAWIN (CL_HTON64(((uint64_t)1)<<37))
\r
2555 #define IB_PIR_COMPMASK_FILTERRAWOUT (CL_HTON64(((uint64_t)1)<<38))
\r
2556 #define IB_PIR_COMPMASK_MKEYVIO (CL_HTON64(((uint64_t)1)<<39))
\r
2557 #define IB_PIR_COMPMASK_PKEYVIO (CL_HTON64(((uint64_t)1)<<40))
\r
2558 #define IB_PIR_COMPMASK_QKEYVIO (CL_HTON64(((uint64_t)1)<<41))
\r
2559 #define IB_PIR_COMPMASK_GUIDCAP (CL_HTON64(((uint64_t)1)<<42))
\r
2560 #define IB_PIR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<43))
\r
2561 #define IB_PIR_COMPMASK_SUBNTO (CL_HTON64(((uint64_t)1)<<44))
\r
2562 #define IB_PIR_COMPMASK_RESV4 (CL_HTON64(((uint64_t)1)<<45))
\r
2563 #define IB_PIR_COMPMASK_RESPTIME (CL_HTON64(((uint64_t)1)<<46))
\r
2564 #define IB_PIR_COMPMASK_LOCALPHYERR (CL_HTON64(((uint64_t)1)<<47))
\r
2565 #define IB_PIR_COMPMASK_OVERRUNERR (CL_HTON64(((uint64_t)1)<<48))
\r
2567 /* Multicast Member Record Component Masks */
\r
2568 #define IB_MCR_COMPMASK_GID (CL_HTON64(((uint64_t)1)<<0))
\r
2569 #define IB_MCR_COMPMASK_MGID (CL_HTON64(((uint64_t)1)<<0))
\r
2570 #define IB_MCR_COMPMASK_PORT_GID (CL_HTON64(((uint64_t)1)<<1))
\r
2571 #define IB_MCR_COMPMASK_QKEY (CL_HTON64(((uint64_t)1)<<2))
\r
2572 #define IB_MCR_COMPMASK_MLID (CL_HTON64(((uint64_t)1)<<3))
\r
2573 #define IB_MCR_COMPMASK_MTU_SEL (CL_HTON64(((uint64_t)1)<<4))
\r
2574 #define IB_MCR_COMPMASK_MTU (CL_HTON64(((uint64_t)1)<<5))
\r
2575 #define IB_MCR_COMPMASK_TCLASS (CL_HTON64(((uint64_t)1)<<6))
\r
2576 #define IB_MCR_COMPMASK_PKEY (CL_HTON64(((uint64_t)1)<<7))
\r
2577 #define IB_MCR_COMPMASK_RATE_SEL (CL_HTON64(((uint64_t)1)<<8))
\r
2578 #define IB_MCR_COMPMASK_RATE (CL_HTON64(((uint64_t)1)<<9))
\r
2579 #define IB_MCR_COMPMASK_LIFE_SEL (CL_HTON64(((uint64_t)1)<<10))
\r
2580 #define IB_MCR_COMPMASK_LIFE (CL_HTON64(((uint64_t)1)<<11))
\r
2581 #define IB_MCR_COMPMASK_SL (CL_HTON64(((uint64_t)1)<<12))
\r
2582 #define IB_MCR_COMPMASK_FLOW (CL_HTON64(((uint64_t)1)<<13))
\r
2583 #define IB_MCR_COMPMASK_HOP (CL_HTON64(((uint64_t)1)<<14))
\r
2584 #define IB_MCR_COMPMASK_SCOPE (CL_HTON64(((uint64_t)1)<<15))
\r
2585 #define IB_MCR_COMPMASK_JOIN_STATE (CL_HTON64(((uint64_t)1)<<16))
\r
2586 #define IB_MCR_COMPMASK_PROXY (CL_HTON64(((uint64_t)1)<<17))
\r
2588 /* GUID Info Record Component Masks */
\r
2589 #define IB_GIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2590 #define IB_GIR_COMPMASK_BLOCKNUM (CL_HTON64(((uint64_t)1)<<1))
\r
2591 #define IB_GIR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<2))
\r
2592 #define IB_GIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<3))
\r
2593 #define IB_GIR_COMPMASK_GID0 (CL_HTON64(((uint64_t)1)<<4))
\r
2594 #define IB_GIR_COMPMASK_GID1 (CL_HTON64(((uint64_t)1)<<5))
\r
2595 #define IB_GIR_COMPMASK_GID2 (CL_HTON64(((uint64_t)1)<<6))
\r
2596 #define IB_GIR_COMPMASK_GID3 (CL_HTON64(((uint64_t)1)<<7))
\r
2597 #define IB_GIR_COMPMASK_GID4 (CL_HTON64(((uint64_t)1)<<8))
\r
2598 #define IB_GIR_COMPMASK_GID5 (CL_HTON64(((uint64_t)1)<<9))
\r
2599 #define IB_GIR_COMPMASK_GID6 (CL_HTON64(((uint64_t)1)<<10))
\r
2600 #define IB_GIR_COMPMASK_GID7 (CL_HTON64(((uint64_t)1)<<11))
\r
2602 /* MultiPath Record Component Masks */
\r
2603 #define IB_MPR_COMPMASK_RAWTRAFFIC (CL_HTON64(((uint64_t)1)<<0))
\r
2604 #define IB_MPR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<1))
\r
2605 #define IB_MPR_COMPMASK_FLOWLABEL (CL_HTON64(((uint64_t)1)<<2))
\r
2606 #define IB_MPR_COMPMASK_HOPLIMIT (CL_HTON64(((uint64_t)1)<<3))
\r
2607 #define IB_MPR_COMPMASK_TCLASS (CL_HTON64(((uint64_t)1)<<4))
\r
2608 #define IB_MPR_COMPMASK_REVERSIBLE (CL_HTON64(((uint64_t)1)<<5))
\r
2609 #define IB_MPR_COMPMASK_NUMBPATH (CL_HTON64(((uint64_t)1)<<6))
\r
2610 #define IB_MPR_COMPMASK_PKEY (CL_HTON64(((uint64_t)1)<<7))
\r
2611 #define IB_MPR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<8))
\r
2612 #define IB_MPR_COMPMASK_SL (CL_HTON64(((uint64_t)1)<<9))
\r
2613 #define IB_MPR_COMPMASK_MTUSELEC (CL_HTON64(((uint64_t)1)<<10))
\r
2614 #define IB_MPR_COMPMASK_MTU (CL_HTON64(((uint64_t)1)<<11))
\r
2615 #define IB_MPR_COMPMASK_RATESELEC (CL_HTON64(((uint64_t)1)<<12))
\r
2616 #define IB_MPR_COMPMASK_RATE (CL_HTON64(((uint64_t)1)<<13))
\r
2617 #define IB_MPR_COMPMASK_PKTLIFETIMESELEC (CL_HTON64(((uint64_t)1)<<14))
\r
2618 #define IB_MPR_COMPMASK_PKTLIFETIME (CL_HTON64(((uint64_t)1)<<15))
\r
2619 #define IB_MPR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<16))
\r
2620 #define IB_MPR_COMPMASK_INDEPSELEC (CL_HTON64(((uint64_t)1)<<17))
\r
2621 #define IB_MPR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<18))
\r
2622 #define IB_MPR_COMPMASK_SGIDCOUNT (CL_HTON64(((uint64_t)1)<<19))
\r
2623 #define IB_MPR_COMPMASK_DGIDCOUNT (CL_HTON64(((uint64_t)1)<<20))
\r
2624 #define IB_MPR_COMPMASK_RESV4 (CL_HTON64(((uint64_t)1)<<21))
\r
2626 /* SMInfo Record Component Masks */
\r
2627 #define IB_SMIR_COMPMASK_LID (CL_HTON64(((uint64_t)1)<<0))
\r
2628 #define IB_SMIR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<1))
\r
2629 #define IB_SMIR_COMPMASK_GUID (CL_HTON64(((uint64_t)1)<<2))
\r
2630 #define IB_SMIR_COMPMASK_SMKEY (CL_HTON64(((uint64_t)1)<<3))
\r
2631 #define IB_SMIR_COMPMASK_ACTCOUNT (CL_HTON64(((uint64_t)1)<<4))
\r
2632 #define IB_SMIR_COMPMASK_PRIORITY (CL_HTON64(((uint64_t)1)<<5))
\r
2633 #define IB_SMIR_COMPMASK_SMSTATE (CL_HTON64(((uint64_t)1)<<6))
\r
2635 /* InformInfo Record Component Masks */
\r
2636 #define IB_IIR_COMPMASK_SUBSCRIBERGID (CL_HTON64(((uint64_t)1)<<0))
\r
2637 #define IB_IIR_COMPMASK_ENUM (CL_HTON64(((uint64_t)1)<<1))
\r
2638 #define IB_IIR_COMPMASK_RESV0 (CL_HTON64(((uint64_t)1)<<2))
\r
2639 #define IB_IIR_COMPMASK_GID (CL_HTON64(((uint64_t)1)<<3))
\r
2640 #define IB_IIR_COMPMASK_LIDRANGEBEGIN (CL_HTON64(((uint64_t)1)<<4))
\r
2641 #define IB_IIR_COMPMASK_LIDRANGEEND (CL_HTON64(((uint64_t)1)<<5))
\r
2642 #define IB_IIR_COMPMASK_RESV1 (CL_HTON64(((uint64_t)1)<<6))
\r
2643 #define IB_IIR_COMPMASK_ISGENERIC (CL_HTON64(((uint64_t)1)<<7))
\r
2644 #define IB_IIR_COMPMASK_SUBSCRIBE (CL_HTON64(((uint64_t)1)<<8))
\r
2645 #define IB_IIR_COMPMASK_TYPE (CL_HTON64(((uint64_t)1)<<9))
\r
2646 #define IB_IIR_COMPMASK_TRAPNUMB (CL_HTON64(((uint64_t)1)<<10))
\r
2647 #define IB_IIR_COMPMASK_DEVICEID (CL_HTON64(((uint64_t)1)<<10))
\r
2648 #define IB_IIR_COMPMASK_QPN (CL_HTON64(((uint64_t)1)<<11))
\r
2649 #define IB_IIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<12))
\r
2650 #define IB_IIR_COMPMASK_RESPTIME (CL_HTON64(((uint64_t)1)<<13))
\r
2651 #define IB_IIR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<14))
\r
2652 #define IB_IIR_COMPMASK_PRODTYPE (CL_HTON64(((uint64_t)1)<<15))
\r
2653 #define IB_IIR_COMPMASK_VENDID (CL_HTON64(((uint64_t)1)<<15))
\r
2655 /****f* IBA Base: Types/ib_path_rec_init_local
\r
2657 * ib_path_rec_init_local
\r
2660 * Initializes a subnet local path record.
\r
2664 AL_INLINE void AL_API
\r
2665 ib_path_rec_init_local(
\r
2666 IN ib_path_rec_t* const p_rec,
\r
2667 IN const ib_gid_t* const p_dgid,
\r
2668 IN const ib_gid_t* const p_sgid,
\r
2669 IN const ib_net16_t dlid,
\r
2670 IN const ib_net16_t slid,
\r
2671 IN const uint8_t num_path,
\r
2672 IN const ib_net16_t pkey,
\r
2673 IN const uint8_t sl,
\r
2674 IN const uint8_t mtu_selector,
\r
2675 IN const uint8_t mtu,
\r
2676 IN const uint8_t rate_selector,
\r
2677 IN const uint8_t rate,
\r
2678 IN const uint8_t pkt_life_selector,
\r
2679 IN const uint8_t pkt_life,
\r
2680 IN const uint8_t preference )
\r
2682 p_rec->dgid = *p_dgid;
\r
2683 p_rec->sgid = *p_sgid;
\r
2684 p_rec->dlid = dlid;
\r
2685 p_rec->slid = slid;
\r
2686 p_rec->num_path = num_path;
\r
2687 p_rec->pkey = pkey;
\r
2688 /* Lower 4 bits of path rec's SL are reserved. */
\r
2689 p_rec->sl = cl_ntoh16( sl );
\r
2690 p_rec->mtu = (uint8_t)((mtu & IB_PATH_REC_BASE_MASK) |
\r
2691 (uint8_t)(mtu_selector << 6));
\r
2692 p_rec->rate = (uint8_t)((rate & IB_PATH_REC_BASE_MASK) |
\r
2693 (uint8_t)(rate_selector << 6));
\r
2694 p_rec->pkt_life = (uint8_t)((pkt_life & IB_PATH_REC_BASE_MASK) |
\r
2695 (uint8_t)(pkt_life_selector << 6));
\r
2696 p_rec->preference = preference;
\r
2698 /* Clear global routing fields for local path records */
\r
2699 p_rec->hop_flow_raw.val = 0;
\r
2700 p_rec->tclass = 0;
\r
2709 * [in] Pointer to the path record object.
\r
2712 * [in] GID of destination port.
\r
2715 * [in] GID of source port.
\r
2718 * [in] LID of destination port.
\r
2721 * [in] LID of source port.
\r
2724 * [in] Reversible path - 1 bit to say if path is reversible.
\r
2725 * num_path [6:0] In queries, maximum number of paths to return.
\r
2726 * In responses, undefined.
\r
2729 * [in] Partition key (P_Key) to use on this path.
\r
2732 * [in] Service level to use on this path. Lower 4-bits are valid.
\r
2735 * [in] Encoded MTU selector value to use on this path
\r
2738 * [in] Encoded MTU to use on this path
\r
2741 * [in] Encoded rate selector value to use on this path.
\r
2744 * [in] Encoded rate to use on this path.
\r
2746 * pkt_life_selector
\r
2747 * [in] Encoded Packet selector value lifetime for this path.
\r
2750 * [in] Encoded Packet lifetime for this path.
\r
2753 * [in] Indicates the relative merit of this path versus other path
\r
2754 * records returned from the SA. Lower numbers are better.
\r
2765 /****f* IBA Base: Types/ib_path_rec_num_path
\r
2767 * ib_path_rec_num_path
\r
2770 * Get max number of paths to return.
\r
2774 static inline uint8_t
\r
2775 ib_path_rec_num_path(
\r
2776 IN const ib_path_rec_t* const p_rec )
\r
2778 return( p_rec->num_path &0x7F );
\r
2783 * [in] Pointer to the path record object.
\r
2786 * Maximum number of paths to return for each unique SGID_DGID combination.
\r
2794 /****f* IBA Base: Types/ib_path_rec_sl
\r
2799 * Get path service level.
\r
2803 AL_INLINE uint8_t AL_API
\r
2805 IN const ib_path_rec_t* const p_rec )
\r
2807 return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
\r
2812 * [in] Pointer to the path record object.
\r
2823 /****f* IBA Base: Types/ib_path_rec_mtu
\r
2828 * Get encoded path MTU.
\r
2832 AL_INLINE uint8_t AL_API
\r
2834 IN const ib_path_rec_t* const p_rec )
\r
2836 return( (uint8_t)(p_rec->mtu & IB_PATH_REC_BASE_MASK) );
\r
2841 * [in] Pointer to the path record object.
\r
2844 * Encoded path MTU.
\r
2850 * others: reserved
\r
2858 /****f* IBA Base: Types/ib_path_rec_mtu_sel
\r
2860 * ib_path_rec_mtu_sel
\r
2863 * Get encoded path MTU selector.
\r
2867 AL_INLINE uint8_t AL_API
\r
2868 ib_path_rec_mtu_sel(
\r
2869 IN const ib_path_rec_t* const p_rec )
\r
2871 return( (uint8_t)((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6) );
\r
2876 * [in] Pointer to the path record object.
\r
2879 * Encoded path MTU selector value (for queries).
\r
2880 * 0: greater than MTU specified
\r
2881 * 1: less than MTU specified
\r
2882 * 2: exactly the MTU specified
\r
2883 * 3: largest MTU available
\r
2891 /****f* IBA Base: Types/ib_path_rec_rate
\r
2893 * ib_path_rec_rate
\r
2896 * Get encoded path rate.
\r
2900 AL_INLINE uint8_t AL_API
\r
2902 IN const ib_path_rec_t* const p_rec )
\r
2904 return( (uint8_t)(p_rec->rate & IB_PATH_REC_BASE_MASK) );
\r
2909 * [in] Pointer to the path record object.
\r
2912 * Encoded path rate.
\r
2922 * others: reserved
\r
2930 /****f* IBA Base: Types/ib_path_rec_rate_sel
\r
2932 * ib_path_rec_rate_sel
\r
2935 * Get encoded path rate selector.
\r
2939 AL_INLINE uint8_t AL_API
\r
2940 ib_path_rec_rate_sel(
\r
2941 IN const ib_path_rec_t* const p_rec )
\r
2943 return( (uint8_t)((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6) );
\r
2948 * [in] Pointer to the path record object.
\r
2951 * Encoded path rate selector value (for queries).
\r
2952 * 0: greater than rate specified
\r
2953 * 1: less than rate specified
\r
2954 * 2: exactly the rate specified
\r
2955 * 3: largest rate available
\r
2963 /****f* IBA Base: Types/ib_path_rec_pkt_life
\r
2965 * ib_path_rec_pkt_life
\r
2968 * Get encoded path pkt_life.
\r
2972 AL_INLINE uint8_t AL_API
\r
2973 ib_path_rec_pkt_life(
\r
2974 IN const ib_path_rec_t* const p_rec )
\r
2976 return( (uint8_t)(p_rec->pkt_life & IB_PATH_REC_BASE_MASK) );
\r
2981 * [in] Pointer to the path record object.
\r
2984 * Encoded path pkt_life = 4.096 µsec * 2 ** PacketLifeTime.
\r
2992 /****f* IBA Base: Types/ib_path_rec_pkt_life_sel
\r
2994 * ib_path_rec_pkt_life_sel
\r
2997 * Get encoded path pkt_lifetime selector.
\r
3001 AL_INLINE uint8_t AL_API
\r
3002 ib_path_rec_pkt_life_sel(
\r
3003 IN const ib_path_rec_t* const p_rec )
\r
3005 return( (uint8_t)((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6 ));
\r
3010 * [in] Pointer to the path record object.
\r
3013 * Encoded path pkt_lifetime selector value (for queries).
\r
3014 * 0: greater than rate specified
\r
3015 * 1: less than rate specified
\r
3016 * 2: exactly the rate specified
\r
3017 * 3: smallest packet lifetime available
\r
3025 /****f* IBA Base: Types/ib_path_rec_flow_lbl
\r
3027 * ib_path_rec_flow_lbl
\r
3034 AL_INLINE net32_t AL_API
\r
3035 ib_path_rec_flow_lbl(
\r
3036 IN const ib_path_rec_t* const p_rec )
\r
3038 return( cl_hton32( (cl_ntoh32(p_rec->hop_flow_raw.val) >> 8) & 0x000FFFFF ) );
\r
3043 * [in] Pointer to the path record object.
\r
3046 * Flow label of the path record.
\r
3054 /****f* IBA Base: Types/ib_path_rec_hop_limit
\r
3056 * ib_path_rec_hop_limit
\r
3063 AL_INLINE uint8_t AL_API
\r
3064 ib_path_rec_hop_limit(
\r
3065 IN const ib_path_rec_t* const p_rec )
\r
3067 return( p_rec->hop_flow_raw.bytes[3] );
\r
3072 * [in] Pointer to the path record object.
\r
3075 * Hop limit of the path record.
\r
3083 /****f* IBA Base: Types/ib_path_rec_set_hop_flow_raw
\r
3085 * ib_path_rec_set_hop_flow_raw
\r
3088 * Sets the hop limit, flow label, and raw traffic bits of a path record.
\r
3092 AL_INLINE void AL_API
\r
3093 ib_path_rec_set_hop_flow_raw(
\r
3094 OUT ib_path_rec_t* const p_rec,
\r
3095 IN const uint8_t hop_limit,
\r
3096 IN const net32_t flow_lbl,
\r
3097 IN const boolean_t raw )
\r
3099 p_rec->hop_flow_raw.val = (cl_ntoh32( flow_lbl ) & 0x000FFFFF) << 8;
\r
3101 p_rec->hop_flow_raw.val |= 0x80000000;
\r
3102 p_rec->hop_flow_raw.val = cl_hton32( p_rec->hop_flow_raw.val );
\r
3103 p_rec->hop_flow_raw.bytes[3] = hop_limit;
\r
3108 * Pointer to the path record whose hop limit, flow label, and rab
\r
3109 * traffic fields to set.
\r
3112 * Hop limit to set in the path record.
\r
3115 * Flow label, in network byte order, to set in the path record.
\r
3118 * Boolean flag to indicate whether the path record is for raw traffic.
\r
3125 /****s* IBA Base: Constants/IB_CLASS_CAP_TRAP
\r
3127 * IB_CLASS_CAP_TRAP
\r
3130 * ClassPortInfo CapabilityMask bits. This bit will be set
\r
3131 * if the class supports Trap() MADs (13.4.8.1).
\r
3134 * ib_class_port_info_t, IB_CLASS_CAP_GETSET
\r
3138 #define IB_CLASS_CAP_TRAP 0x0001
\r
3141 /****s* IBA Base: Constants/IB_CLASS_CAP_GETSET
\r
3143 * IB_CLASS_CAP_GETSET
\r
3146 * ClassPortInfo CapabilityMask bits. This bit will be set
\r
3147 * if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).
\r
3150 * ib_class_port_info_t, IB_CLASS_CAP_TRAP
\r
3154 #define IB_CLASS_CAP_GETSET 0x0002
\r
3157 /****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK
\r
3159 * IB_CLASS_RESP_TIME_MASK
\r
3162 * Mask bits to extract the reponse time value from the
\r
3163 * resp_time_val field of ib_class_port_info_t.
\r
3166 * ib_class_port_info_t
\r
3170 #define IB_CLASS_RESP_TIME_MASK 0x1F
\r
3172 /****s* IBA Base: Types/ib_class_port_info_t
\r
3174 * ib_class_port_info_t
\r
3177 * IBA defined ClassPortInfo attribute (13.4.8.1)
\r
3178 * route between two end-points on a subnet.
\r
3182 #include <complib/cl_packon.h>
\r
3183 typedef struct _ib_class_port_info
\r
3186 uint8_t class_ver;
\r
3187 ib_net16_t cap_mask;
\r
3188 ib_net32_t resp_time_val;
\r
3189 ib_gid_t redir_gid;
\r
3190 ib_net32_t redir_tc_sl_fl;
\r
3191 ib_net16_t redir_lid;
\r
3192 ib_net16_t redir_pkey;
\r
3193 ib_net32_t redir_qp;
\r
3194 ib_net32_t redir_qkey;
\r
3195 ib_gid_t trap_gid;
\r
3196 ib_net32_t trap_tc_sl_fl;
\r
3197 ib_net16_t trap_lid;
\r
3198 ib_net16_t trap_pkey;
\r
3199 ib_net32_t trap_hop_qp;
\r
3200 ib_net32_t trap_qkey;
\r
3202 } PACK_SUFFIX ib_class_port_info_t;
\r
3203 #include <complib/cl_packoff.h>
\r
3207 * Maximum supported MAD Base Version.
\r
3210 * Maximum supported management class version.
\r
3213 * Supported capabilities of this management class.
\r
3216 * Maximum expected response time.
\r
3219 * GID to use for redirection, or zero
\r
3222 * Traffic class, service level and flow label the requester
\r
3223 * should use if the service is redirected.
\r
3226 * LID used for redirection, or zero
\r
3229 * P_Key used for redirection
\r
3232 * QP number used for redirection
\r
3235 * Q_Key associated with the redirected QP. This shall be the
\r
3236 * well known Q_Key value.
\r
3239 * GID value used for trap messages from this service.
\r
3242 * Traffic class, service level and flow label used for
\r
3243 * trap messages originated by this service.
\r
3246 * LID used for trap messages, or zero
\r
3249 * P_Key used for trap messages
\r
3252 * Hop limit (upper 8 bits) and QP number used for trap messages
\r
3255 * Q_Key associated with the trap messages QP.
\r
3258 * IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP
\r
3262 /****s* IBA Base: Types/ib_sm_info_t
\r
3267 * SMInfo structure (14.2.5.13).
\r
3271 #include <complib/cl_packon.h>
\r
3272 typedef struct _ib_sm_info
\r
3275 ib_net64_t sm_key;
\r
3276 ib_net32_t act_count;
\r
3277 uint8_t pri_state;
\r
3279 } PACK_SUFFIX ib_sm_info_t;
\r
3280 #include <complib/cl_packoff.h>
\r
3284 * Port GUID for this SM.
\r
3287 * SM_Key of this SM.
\r
3290 * Activity counter used as a heartbeat.
\r
3293 * Priority and State information
\r
3298 /****f* IBA Base: Types/ib_sminfo_get_priority
\r
3300 * ib_sminfo_get_priority
\r
3303 * Returns the priority value.
\r
3307 AL_INLINE uint8_t AL_API
\r
3308 ib_sminfo_get_priority(
\r
3309 IN const ib_sm_info_t* const p_smi )
\r
3311 return( (uint8_t)((p_smi->pri_state & 0xF0)>>4) );
\r
3316 * [in] Pointer to the SMInfo Attribute.
\r
3319 * Returns the priority value.
\r
3326 /****f* IBA Base: Types/ib_sminfo_get_state
\r
3328 * ib_sminfo_get_state
\r
3331 * Returns the state value.
\r
3335 AL_INLINE uint8_t AL_API
\r
3336 ib_sminfo_get_state(
\r
3337 IN const ib_sm_info_t* const p_smi )
\r
3339 return( (uint8_t)(p_smi->pri_state & 0x0F) );
\r
3344 * [in] Pointer to the SMInfo Attribute.
\r
3347 * Returns the state value.
\r
3354 /****s* IBA Base: Types/ib_mad_t
\r
3359 * IBA defined MAD header (13.4.3)
\r
3363 #include <complib/cl_packon.h>
\r
3364 typedef struct _ib_mad
\r
3367 uint8_t mgmt_class;
\r
3368 uint8_t class_ver;
\r
3370 ib_net16_t status;
\r
3371 ib_net16_t class_spec;
\r
3372 ib_net64_t trans_id;
\r
3373 ib_net16_t attr_id;
\r
3375 ib_net32_t attr_mod;
\r
3376 } PACK_SUFFIX ib_mad_t;
\r
3377 #include <complib/cl_packoff.h>
\r
3381 * MAD base format.
\r
3384 * Class of operation.
\r
3387 * Version of MAD class-specific format.
\r
3390 * Method to perform, including 'R' bit.
\r
3393 * Status of operation.
\r
3396 * Reserved for subnet management.
\r
3408 * Attribute modifier.
\r
3414 /****s* IBA Base: Types/ib_rmpp_mad_t
\r
3419 * IBA defined MAD RMPP header (13.6.2.1)
\r
3423 #include <complib/cl_packon.h>
\r
3424 typedef struct _ib_rmpp_mad
\r
3426 ib_mad_t common_hdr;
\r
3428 uint8_t rmpp_version;
\r
3429 uint8_t rmpp_type;
\r
3430 uint8_t rmpp_flags;
\r
3431 uint8_t rmpp_status;
\r
3433 ib_net32_t seg_num;
\r
3434 ib_net32_t paylen_newwin;
\r
3436 } PACK_SUFFIX ib_rmpp_mad_t;
\r
3437 #include <complib/cl_packoff.h>
\r
3444 /****f* IBA Base: Types/ib_mad_init_new
\r
3449 * Initializes a MAD common header.
\r
3453 AL_INLINE void AL_API
\r
3455 IN ib_mad_t* const p_mad,
\r
3456 IN const uint8_t mgmt_class,
\r
3457 IN const uint8_t class_ver,
\r
3458 IN const uint8_t method,
\r
3459 IN const ib_net64_t trans_id,
\r
3460 IN const ib_net16_t attr_id,
\r
3461 IN const ib_net32_t attr_mod )
\r
3463 CL_ASSERT( p_mad );
\r
3464 p_mad->base_ver = 1;
\r
3465 p_mad->mgmt_class = mgmt_class;
\r
3466 p_mad->class_ver = class_ver;
\r
3467 p_mad->method = method;
\r
3468 p_mad->status = 0;
\r
3469 p_mad->class_spec = 0;
\r
3470 p_mad->trans_id = trans_id;
\r
3471 p_mad->attr_id = attr_id;
\r
3473 p_mad->attr_mod = attr_mod;
\r
3478 * [in] Pointer to the MAD common header.
\r
3481 * [in] Class of operation.
\r
3484 * [in] Version of MAD class-specific format.
\r
3487 * [in] Method to perform, including 'R' bit.
\r
3490 * [in] Transaction ID.
\r
3493 * [in] Attribute ID.
\r
3496 * [in] Attribute modifier.
\r
3507 /****f* IBA Base: Types/ib_mad_init_response
\r
3509 * ib_mad_init_response
\r
3512 * Initializes a MAD common header as a response.
\r
3516 AL_INLINE void AL_API
\r
3517 ib_mad_init_response(
\r
3518 IN const ib_mad_t* const p_req_mad,
\r
3519 IN ib_mad_t* const p_mad,
\r
3520 IN const ib_net16_t status )
\r
3522 CL_ASSERT( p_req_mad );
\r
3523 CL_ASSERT( p_mad );
\r
3524 *p_mad = *p_req_mad;
\r
3525 p_mad->status = status;
\r
3526 if( p_mad->method == IB_MAD_METHOD_SET )
\r
3527 p_mad->method = IB_MAD_METHOD_GET;
\r
3528 p_mad->method |= IB_MAD_METHOD_RESP_MASK;
\r
3533 * [in] Pointer to the MAD common header in the original request MAD.
\r
3536 * [in] Pointer to the MAD common header to initialize.
\r
3539 * [in] MAD Status value to return;
\r
3545 * p_req_mad and p_mad may point to the same MAD.
\r
3551 /****f* IBA Base: Types/ib_mad_is_response
\r
3553 * ib_mad_is_response
\r
3556 * Returns TRUE if the MAD is a response ('R' bit set),
\r
3557 * FALSE otherwise.
\r
3561 AL_INLINE boolean_t AL_API
\r
3562 ib_mad_is_response(
\r
3563 IN const ib_mad_t* const p_mad )
\r
3565 CL_ASSERT( p_mad );
\r
3566 return( (p_mad->method & IB_MAD_METHOD_RESP_MASK) ==
\r
3567 IB_MAD_METHOD_RESP_MASK );
\r
3572 * [in] Pointer to the MAD.
\r
3575 * Returns TRUE if the MAD is a response ('R' bit set),
\r
3576 * FALSE otherwise.
\r
3584 #define IB_RMPP_TYPE_DATA 1
\r
3585 #define IB_RMPP_TYPE_ACK 2
\r
3586 #define IB_RMPP_TYPE_STOP 3
\r
3587 #define IB_RMPP_TYPE_ABORT 4
\r
3589 #define IB_RMPP_NO_RESP_TIME 0x1F
\r
3590 #define IB_RMPP_FLAG_ACTIVE 0x01
\r
3591 #define IB_RMPP_FLAG_FIRST 0x02
\r
3592 #define IB_RMPP_FLAG_LAST 0x04
\r
3594 #define IB_RMPP_STATUS_SUCCESS 0
\r
3595 #define IB_RMPP_STATUS_RESX 1 /* resources exhausted */
\r
3596 #define IB_RMPP_STATUS_T2L 118 /* time too long */
\r
3597 #define IB_RMPP_STATUS_BAD_LEN 119 /* incon. last and payload len */
\r
3598 #define IB_RMPP_STATUS_BAD_SEG 120 /* incon. first and segment no */
\r
3599 #define IB_RMPP_STATUS_BADT 121 /* bad rmpp type */
\r
3600 #define IB_RMPP_STATUS_W2S 122 /* newwindowlast too small */
\r
3601 #define IB_RMPP_STATUS_S2B 123 /* segment no too big */
\r
3602 #define IB_RMPP_STATUS_BAD_STATUS 124 /* illegal status */
\r
3603 #define IB_RMPP_STATUS_UNV 125 /* unsupported version */
\r
3604 #define IB_RMPP_STATUS_TMR 126 /* too many retries */
\r
3605 #define IB_RMPP_STATUS_UNSPEC 127 /* unspecified */
\r
3607 /****f* IBA Base: Types/ib_rmpp_is_flag_set
\r
3609 * ib_rmpp_is_flag_set
\r
3612 * Returns TRUE if the MAD has the given RMPP flag set.
\r
3616 AL_INLINE boolean_t AL_API
\r
3617 ib_rmpp_is_flag_set(
\r
3618 IN const ib_rmpp_mad_t* const p_rmpp_mad,
\r
3619 IN const uint8_t flag )
\r
3621 CL_ASSERT( p_rmpp_mad );
\r
3622 return( (p_rmpp_mad->rmpp_flags & flag) == flag );
\r
3627 * [in] Pointer to a MAD with an RMPP header.
\r
3630 * [in] The RMPP flag being examined.
\r
3633 * Returns TRUE if the MAD has the given RMPP flag set.
\r
3638 * ib_mad_t, ib_rmpp_mad_t
\r
3641 AL_INLINE void AL_API
\r
3642 ib_rmpp_set_resp_time(
\r
3643 IN ib_rmpp_mad_t* const p_rmpp_mad,
\r
3644 IN const uint8_t resp_time )
\r
3646 CL_ASSERT( p_rmpp_mad );
\r
3647 p_rmpp_mad->rmpp_flags |= (resp_time << 3);
\r
3651 AL_INLINE uint8_t AL_API
\r
3652 ib_rmpp_get_resp_time(
\r
3653 IN const ib_rmpp_mad_t* const p_rmpp_mad )
\r
3655 CL_ASSERT( p_rmpp_mad );
\r
3656 return( (uint8_t)(p_rmpp_mad->rmpp_flags >> 3) );
\r
3659 /****d* IBA Base: Constants/IB_SMP_DIRECTION
\r
3661 * IB_SMP_DIRECTION
\r
3664 * The Direction bit for directed route SMPs.
\r
3668 #define IB_SMP_DIRECTION_HO 0x8000
\r
3669 #define IB_SMP_DIRECTION (CL_HTON16(IB_SMP_DIRECTION_HO))
\r
3672 /****d* IBA Base: Constants/IB_SMP_STATUS_MASK
\r
3674 * IB_SMP_STATUS_MASK
\r
3677 * Mask value for extracting status from a directed route SMP.
\r
3681 #define IB_SMP_STATUS_MASK_HO 0x7FFF
\r
3682 #define IB_SMP_STATUS_MASK (CL_HTON16(IB_SMP_STATUS_MASK_HO))
\r
3685 /****s* IBA Base: Types/ib_smp_t
\r
3690 * IBA defined SMP. (14.2.1.2)
\r
3694 #define IB_SMP_DATA_SIZE 64
\r
3695 #include <complib/cl_packon.h>
\r
3696 typedef struct _ib_smp
\r
3699 uint8_t mgmt_class;
\r
3700 uint8_t class_ver;
\r
3702 ib_net16_t status;
\r
3704 uint8_t hop_count;
\r
3705 ib_net64_t trans_id;
\r
3706 ib_net16_t attr_id;
\r
3708 ib_net32_t attr_mod;
\r
3710 ib_net16_t dr_slid;
\r
3711 ib_net16_t dr_dlid;
\r
3712 uint32_t resv1[7];
\r
3713 uint8_t data[IB_SMP_DATA_SIZE];
\r
3714 uint8_t initial_path[IB_SUBNET_PATH_HOPS_MAX];
\r
3715 uint8_t return_path[IB_SUBNET_PATH_HOPS_MAX];
\r
3717 } PACK_SUFFIX ib_smp_t;
\r
3718 #include <complib/cl_packoff.h>
\r
3722 * MAD base format.
\r
3725 * Class of operation.
\r
3728 * Version of MAD class-specific format.
\r
3731 * Method to perform, including 'R' bit.
\r
3734 * Status of operation.
\r
3737 * Hop pointer for directed route MADs.
\r
3740 * Hop count for directed route MADs.
\r
3752 * Attribute modifier.
\r
3755 * Management key value.
\r
3758 * Directed route source LID.
\r
3761 * Directed route destination LID.
\r
3764 * Reserved for 64 byte alignment.
\r
3767 * MAD data payload.
\r
3770 * Outbound port list.
\r
3773 * Inbound port list.
\r
3778 /****f* IBA Base: Types/ib_smp_get_status
\r
3780 * ib_smp_get_status
\r
3783 * Returns the SMP status value in network order.
\r
3787 AL_INLINE ib_net16_t AL_API
\r
3788 ib_smp_get_status(
\r
3789 IN const ib_smp_t* const p_smp )
\r
3791 return( (ib_net16_t)(p_smp->status & IB_SMP_STATUS_MASK) );
\r
3796 * [in] Pointer to the SMP packet.
\r
3799 * Returns the SMP status value in network order.
\r
3807 /****f* IBA Base: Types/ib_smp_is_response
\r
3809 * ib_smp_is_response
\r
3812 * Returns TRUE if the SMP is a response MAD, FALSE otherwise.
\r
3816 AL_INLINE boolean_t AL_API
\r