2 * Copyright (c) 2005 SilverStorm Technologies. All rights reserved.
\r
3 * Copyright (c) 1996-2003 Intel Corporation. All rights reserved.
\r
5 * This software is available to you under the OpenIB.org BSD license
\r
8 * Redistribution and use in source and binary forms, with or
\r
9 * without modification, are permitted provided that the following
\r
10 * conditions are met:
\r
12 * - Redistributions of source code must retain the above
\r
13 * copyright notice, this list of conditions and the following
\r
16 * - Redistributions in binary form must reproduce the above
\r
17 * copyright notice, this list of conditions and the following
\r
18 * disclaimer in the documentation and/or other materials
\r
19 * provided with the distribution.
\r
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
\r
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
\r
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
\r
24 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
\r
25 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
\r
26 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
27 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
\r
34 #if !defined(__IB_TYPES_H__)
\r
35 #define __IB_TYPES_H__
\r
37 #include <complib/cl_types.h>
\r
38 #include <complib/cl_byteswap.h>
\r
43 #define AL_INLINE static inline
\r
45 #if defined( EXPORT_AL_SYMBOLS )
\r
46 #define AL_EXPORT __declspec(dllexport)
\r
48 #define AL_EXPORT __declspec(dllimport)
\r
50 #define AL_API __stdcall
\r
51 #define AL_INLINE AL_EXPORT inline
\r
52 #endif /* CL_KERNEL */
\r
58 #endif /* __cplusplus */
\r
61 /****h* IBA Base/Constants
\r
66 * The following constants are used throughout the IBA code base.
\r
68 * Definitions are from the InfiniBand Architecture Specification v1.1
\r
72 /****d* IBA Base: Constants/MAD_BLOCK_SIZE
\r
77 * Size of a non-RMPP MAD datagram.
\r
81 #define MAD_BLOCK_SIZE 256
\r
84 /****d* IBA Base: Constants/MAD_RMPP_HDR_SIZE
\r
89 * Size of an RMPP header, including the common MAD header.
\r
93 #define MAD_RMPP_HDR_SIZE 36
\r
96 /****d* IBA Base: Constants/MAD_RMPP_DATA_SIZE
\r
98 * MAD_RMPP_DATA_SIZE
\r
101 * Size of an RMPP transaction data section.
\r
105 #define MAD_RMPP_DATA_SIZE (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)
\r
108 /****d* IBA Base: Constants/MAD_BLOCK_GRH_SIZE
\r
110 * MAD_BLOCK_GRH_SIZE
\r
113 * Size of a MAD datagram, including the GRH.
\r
117 #define MAD_BLOCK_GRH_SIZE 296
\r
120 /****d* IBA Base: Constants/IB_LID_PERMISSIVE
\r
122 * IB_LID_PERMISSIVE
\r
129 #define IB_LID_PERMISSIVE 0xFFFF
\r
132 /****d* IBA Base: Constants/IB_DEFAULT_PKEY
\r
137 * P_Key value for the default partition.
\r
141 #define IB_DEFAULT_PKEY 0xFFFF
\r
144 /****d* IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY
\r
146 * IB_QP1_WELL_KNOWN_Q_KEY
\r
149 * Well-known Q_Key for QP1 privileged mode access (15.4.2).
\r
153 #define IB_QP1_WELL_KNOWN_Q_KEY CL_NTOH32(0x80010000)
\r
157 #define IB_QP1 CL_NTOH32(1)
\r
159 #define IB_QP_PRIVILEGED_Q_KEY CL_NTOH32(0x80000000)
\r
161 /****d* IBA Base: Constants/IB_LID_UCAST_START
\r
163 * IB_LID_UCAST_START
\r
166 * Lowest valid unicast LID value.
\r
170 #define IB_LID_UCAST_START_HO 0x0001
\r
171 #define IB_LID_UCAST_START (CL_HTON16(IB_LID_UCAST_START_HO))
\r
174 /****d* IBA Base: Constants/IB_LID_UCAST_END
\r
179 * Highest valid unicast LID value.
\r
183 #define IB_LID_UCAST_END_HO 0xBFFF
\r
184 #define IB_LID_UCAST_END (CL_HTON16(IB_LID_UCAST_END_HO))
\r
187 /****d* IBA Base: Constants/IB_LID_MCAST_START
\r
189 * IB_LID_MCAST_START
\r
192 * Lowest valid multicast LID value.
\r
196 #define IB_LID_MCAST_START_HO 0xC000
\r
197 #define IB_LID_MCAST_START (CL_HTON16(IB_LID_MCAST_START_HO))
\r
200 /****d* IBA Base: Constants/IB_LID_MCAST_END
\r
205 * Highest valid multicast LID value.
\r
209 #define IB_LID_MCAST_END_HO 0xFFFE
\r
210 #define IB_LID_MCAST_END (CL_HTON16(IB_LID_MCAST_END_HO))
\r
213 /****d* IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX
\r
215 * IB_DEFAULT_SUBNET_PREFIX
\r
218 * Default subnet GID prefix.
\r
222 #define IB_DEFAULT_SUBNET_PREFIX (CL_HTON64(CL_CONST64(0xFE80000000000000)))
\r
225 /****d* IBA Base: Constants/IB_NODE_NUM_PORTS_MAX
\r
227 * IB_NODE_NUM_PORTS_MAX
\r
230 * Maximum number of ports in a single node (14.2.5.7).
\r
233 #define IB_NODE_NUM_PORTS_MAX 0xFE
\r
236 /****d* IBA Base: Constants/IB_INVALID_PORT_NUM
\r
238 * IB_INVALID_PORT_NUM
\r
241 * Value used to indicate an invalid port number (14.2.5.10).
\r
245 #define IB_INVALID_PORT_NUM 0xFF
\r
248 /****d* IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX
\r
250 * IB_SUBNET_PATH_HOPS_MAX
\r
253 * Maximum number of directed route switch hops in a subnet (14.2.1.2).
\r
257 #define IB_SUBNET_PATH_HOPS_MAX 64
\r
260 /****d* IBA Base: Constants/IB_PKEY_MAX_BLOCKS
\r
262 * IB_PKEY_MAX_BLOCKS
\r
265 * Maximum number of PKEY blocks (14.2.5.7).
\r
269 #define IB_PKEY_MAX_BLOCKS 2048
\r
272 /****d* IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID
\r
274 * IB_MCAST_MAX_BLOCK_ID
\r
277 * Maximum number of Multicast port mask blocks
\r
281 #define IB_MCAST_MAX_BLOCK_ID 511
\r
284 /****d* IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO
\r
286 * IB_MCAST_BLOCK_ID_MASK_HO
\r
289 * Mask (host order) to recover the Multicast block ID.
\r
293 #define IB_MCAST_BLOCK_ID_MASK_HO 0x000001FF
\r
296 /****d* IBA Base: Constants/IB_MCAST_BLOCK_SIZE
\r
298 * IB_MCAST_BLOCK_SIZE
\r
301 * Number of port mask entries in a multicast forwarding table block.
\r
305 #define IB_MCAST_BLOCK_SIZE 32
\r
308 /****d* IBA Base: Constants/IB_MCAST_MASK_SIZE
\r
310 * IB_MCAST_MASK_SIZE
\r
313 * Number of port mask bits in each entry in the multicast forwarding table.
\r
317 #define IB_MCAST_MASK_SIZE 16
\r
320 /****d* IBA Base: Constants/IB_MCAST_POSITION_MASK_HO
\r
322 * IB_MCAST_POSITION_MASK_HO
\r
325 * Mask (host order) to recover the multicast block position.
\r
329 #define IB_MCAST_POSITION_MASK_HO 0xF0000000
\r
332 /****d* IBA Base: Constants/IB_MCAST_POSITION_MAX
\r
334 * IB_MCAST_POSITION_MAX
\r
337 * Maximum value for the multicast block position.
\r
341 #define IB_MCAST_POSITION_MAX 0xF
\r
344 /****d* IBA Base: Constants/IB_MCAST_POSITION_SHIFT
\r
346 * IB_MCAST_POSITION_SHIFT
\r
349 * Shift value to normalize the multicast block position value.
\r
353 #define IB_MCAST_POSITION_SHIFT 28
\r
356 /****d* IBA Base: Constants/IB_PKEY_ENTRIES_MAX
\r
358 * IB_PKEY_ENTRIES_MAX
\r
361 * Maximum number of PKEY entries per port (14.2.5.7).
\r
365 #define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_PKEY_BLOCK_SIZE)
\r
368 /****d* IBA Base: Constants/IB_PKEY_BASE_MASK
\r
370 * IB_PKEY_BASE_MASK
\r
373 * Masks for the base P_Key value given a P_Key Entry.
\r
377 #define IB_PKEY_BASE_MASK (CL_NTOH16(0x7FFF))
\r
380 /****d* IBA Base: Constants/IB_PKEY_TYPE_MASK
\r
382 * IB_PKEY_TYPE_MASK
\r
385 * Masks for the P_Key membership type given a P_Key Entry.
\r
389 #define IB_PKEY_TYPE_MASK (CL_NTOH16(0x8000))
\r
392 /****d* IBA Base: Constants/IB_MCLASS_SUBN_LID
\r
394 * IB_MCLASS_SUBN_LID
\r
397 * Subnet Management Class, Subnet Manager LID routed (13.4.4)
\r
401 #define IB_MCLASS_SUBN_LID 0x01
\r
404 /****d* IBA Base: Constants/IB_MCLASS_SUBN_DIR
\r
406 * IB_MCLASS_SUBN_DIR
\r
409 * Subnet Management Class, Subnet Manager directed route (13.4.4)
\r
413 #define IB_MCLASS_SUBN_DIR 0x81
\r
416 /****d* IBA Base: Constants/IB_MCLASS_SUBN_ADM
\r
418 * IB_MCLASS_SUBN_ADM
\r
421 * Subnet Management Class, Subnet Administration (13.4.4)
\r
425 #define IB_MCLASS_SUBN_ADM 0x03
\r
428 /****d* IBA Base: Constants/IB_MCLASS_PERF
\r
433 * Subnet Management Class, Performance Manager (13.4.4)
\r
437 #define IB_MCLASS_PERF 0x04
\r
440 /****d* IBA Base: Constants/IB_MCLASS_BM
\r
445 * Subnet Management Class, Baseboard Manager (13.4.4)
\r
449 #define IB_MCLASS_BM 0x05
\r
452 /****d* IBA Base: Constants/IB_MCLASS_DEV_MGMT
\r
454 * IB_MCLASS_DEV_MGMT
\r
457 * Subnet Management Class, Device Management (13.4.4)
\r
461 #define IB_MCLASS_DEV_MGMT 0x06
\r
464 /****d* IBA Base: Constants/IB_MCLASS_COMM_MGMT
\r
466 * IB_MCLASS_COMM_MGMT
\r
469 * Subnet Management Class, Communication Management (13.4.4)
\r
473 #define IB_MCLASS_COMM_MGMT 0x07
\r
476 /****d* IBA Base: Constants/IB_MCLASS_SNMP
\r
481 * Subnet Management Class, SNMP Tunneling (13.4.4)
\r
485 #define IB_MCLASS_SNMP 0x08
\r
488 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN
\r
490 * IB_MCLASS_VENDOR_LOW_RANGE_MIN
\r
493 * Subnet Management Class, Vendor Specific Low Range Start
\r
497 #define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09
\r
500 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
502 * IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
505 * Subnet Management Class, Vendor Specific Low Range End
\r
509 #define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f
\r
512 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN
\r
514 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN
\r
517 * Subnet Management Class, Vendor Specific High Range Start
\r
521 #define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30
\r
524 /****d* IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
526 * IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
529 * Subnet Management Class, Vendor Specific High Range End
\r
533 #define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f
\r
536 /****f* IBA Base: Types/ib_class_is_vendor_specific_low
\r
538 * ib_class_is_vendor_specific_low
\r
541 * Indicitates if the Class Code if a vendor specific class from
\r
546 static inline boolean_t
\r
547 ib_class_is_vendor_specific_low(
\r
548 IN const uint8_t class_code )
\r
550 return( (class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&
\r
551 (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX)) ;
\r
556 * [in] The Management Datagram Class Code
\r
559 * TRUE if the class is in the Low range of Vendor Specific MADs
\r
565 * IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX
\r
568 /****f* IBA Base: Types/ib_class_is_vendor_specific_high
\r
570 * ib_class_is_vendor_specific_high
\r
573 * Indicitates if the Class Code if a vendor specific class from
\r
578 static inline boolean_t
\r
579 ib_class_is_vendor_specific_high(
\r
580 IN const uint8_t class_code )
\r
582 return( (class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&
\r
583 (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX)) ;
\r
588 * [in] The Management Datagram Class Code
\r
591 * TRUE if the class is in the High range of Vendor Specific MADs
\r
597 * IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX
\r
601 /****f* IBA Base: Types/ib_class_is_vendor_specific
\r
603 * ib_class_is_vendor_specific
\r
606 * Indicitates if the Class Code if a vendor specific class
\r
610 static inline boolean_t
\r
611 ib_class_is_vendor_specific(
\r
612 IN const uint8_t class_code )
\r
614 return( ib_class_is_vendor_specific_low(class_code) ||
\r
615 ib_class_is_vendor_specific_high(class_code) );
\r
620 * [in] The Management Datagram Class Code
\r
623 * TRUE if the class is a Vendor Specific MAD
\r
629 * ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high
\r
635 /****d* IBA Base: Constants/IB_MAX_METHOD
\r
640 * Total number of methods available to a class, not including the R-bit.
\r
644 #define IB_MAX_METHODS 128
\r
646 /****d* IBA Base: Constants/IB_MAD_METHOD_RESP_MASK
\r
648 * IB_MAD_METHOD_RESP_MASK
\r
651 * Response mask to extract 'R' bit from the method field. (13.4.5)
\r
655 #define IB_MAD_METHOD_RESP_MASK 0x80
\r
657 /****d* IBA Base: Constants/IB_MAD_METHOD_GET
\r
659 * IB_MAD_METHOD_GET
\r
662 * Get() Method (13.4.5)
\r
666 #define IB_MAD_METHOD_GET 0x01
\r
668 /****d* IBA Base: Constants/IB_MAD_METHOD_SET
\r
670 * IB_MAD_METHOD_SET
\r
673 * Set() Method (13.4.5)
\r
677 #define IB_MAD_METHOD_SET 0x02
\r
679 /****d* IBA Base: Constants/IB_MAD_METHOD_GET_RESP
\r
681 * IB_MAD_METHOD_GET_RESP
\r
684 * GetResp() Method (13.4.5)
\r
688 #define IB_MAD_METHOD_GET_RESP 0x81
\r
691 #define IB_MAD_METHOD_DELETE 0x15
\r
693 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE
\r
695 * IB_MAD_METHOD_GETTABLE
\r
698 * SubnAdmGetTable() Method (15.2.2)
\r
702 #define IB_MAD_METHOD_GETTABLE 0x12
\r
705 /****d* IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP
\r
707 * IB_MAD_METHOD_GETTABLE_RESP
\r
710 * SubnAdmGetTableResp() Method (15.2.2)
\r
714 #define IB_MAD_METHOD_GETTABLE_RESP 0x92
\r
718 #define IB_MAD_METHOD_GETTRACETABLE 0x13
\r
719 #define IB_MAD_METHOD_GETMULTI 0x14
\r
720 #define IB_MAD_METHOD_GETMULTI_RESP 0x94
\r
723 /****d* IBA Base: Constants/IB_MAD_METHOD_SEND
\r
725 * IB_MAD_METHOD_SEND
\r
728 * Send() Method (13.4.5)
\r
732 #define IB_MAD_METHOD_SEND 0x03
\r
734 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP
\r
736 * IB_MAD_METHOD_TRAP
\r
739 * Trap() Method (13.4.5)
\r
743 #define IB_MAD_METHOD_TRAP 0x05
\r
745 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT
\r
747 * IB_MAD_METHOD_REPORT
\r
750 * Report() Method (13.4.5)
\r
754 #define IB_MAD_METHOD_REPORT 0x06
\r
756 /****d* IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP
\r
758 * IB_MAD_METHOD_REPORT_RESP
\r
761 * ReportResp() Method (13.4.5)
\r
765 #define IB_MAD_METHOD_REPORT_RESP 0x86
\r
767 /****d* IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS
\r
769 * IB_MAD_METHOD_TRAP_REPRESS
\r
772 * TrapRepress() Method (13.4.5)
\r
776 #define IB_MAD_METHOD_TRAP_REPRESS 0x07
\r
778 /****d* IBA Base: Constants/IB_MAD_STATUS_BUSY
\r
780 * IB_MAD_STATUS_BUSY
\r
783 * Temporarily busy, MAD discarded (13.4.7)
\r
787 #define IB_MAD_STATUS_BUSY (CL_HTON16(0x0001))
\r
789 /****d* IBA Base: Constants/IB_MAD_STATUS_REDIRECT
\r
791 * IB_MAD_STATUS_REDIRECT
\r
794 * QP Redirection required (13.4.7)
\r
798 #define IB_MAD_STATUS_REDIRECT (CL_HTON16(0x0002))
\r
800 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER
\r
802 * IB_MAD_STATUS_UNSUP_CLASS_VER
\r
805 * Unsupported class version (13.4.7)
\r
809 #define IB_MAD_STATUS_UNSUP_CLASS_VER (CL_HTON16(0x0004))
\r
811 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD
\r
813 * IB_MAD_STATUS_UNSUP_METHOD
\r
816 * Unsupported method (13.4.7)
\r
820 #define IB_MAD_STATUS_UNSUP_METHOD (CL_HTON16(0x0008))
\r
822 /****d* IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR
\r
824 * IB_MAD_STATUS_UNSUP_METHOD_ATTR
\r
827 * Unsupported method/attribute combination (13.4.7)
\r
831 #define IB_MAD_STATUS_UNSUP_METHOD_ATTR (CL_HTON16(0x000C))
\r
833 /****d* IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD
\r
835 * IB_MAD_STATUS_INVALID_FIELD
\r
838 * Attribute contains one or more invalid fields (13.4.7)
\r
842 #define IB_MAD_STATUS_INVALID_FIELD (CL_HTON16(0x001C))
\r
845 #define IB_MAD_STATUS_CLASS_MASK (CL_HTON16(0xFF00))
\r
847 #define IB_SA_MAD_STATUS_SUCCESS (CL_HTON16(0x0000))
\r
848 #define IB_SA_MAD_STATUS_NO_RESOURCES (CL_HTON16(0x0100))
\r
849 #define IB_SA_MAD_STATUS_REQ_INVALID (CL_HTON16(0x0200))
\r
850 #define IB_SA_MAD_STATUS_NO_RECORDS (CL_HTON16(0x0300))
\r
851 #define IB_SA_MAD_STATUS_TOO_MANY_RECORDS (CL_HTON16(0x0400))
\r
852 #define IB_SA_MAD_STATUS_INVALID_GID (CL_HTON16(0x0500))
\r
853 #define IB_SA_MAD_STATUS_INSUF_COMPS (CL_HTON16(0x0600))
\r
855 #define IB_DM_MAD_STATUS_NO_IOC_RESP (CL_HTON16(0x0100))
\r
856 #define IB_DM_MAD_STATUS_NO_SVC_ENTRIES (CL_HTON16(0x0200))
\r
857 #define IB_DM_MAD_STATUS_IOC_FAILURE (CL_HTON16(0x8000))
\r
859 /****d* IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO
\r
861 * IB_MAD_ATTR_CLASS_PORT_INFO
\r
864 * ClassPortInfo attribute (13.4.8)
\r
868 #define IB_MAD_ATTR_CLASS_PORT_INFO (CL_NTOH16(0x0001))
\r
870 /****d* IBA Base: Constants/IB_MAD_ATTR_NOTICE
\r
872 * IB_MAD_ATTR_NOTICE
\r
875 * Notice attribute (13.4.8)
\r
879 #define IB_MAD_ATTR_NOTICE (CL_NTOH16(0x0002))
\r
881 /****d* IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO
\r
883 * IB_MAD_ATTR_INFORM_INFO
\r
886 * InformInfo attribute (13.4.8)
\r
890 #define IB_MAD_ATTR_INFORM_INFO (CL_NTOH16(0x0003))
\r
892 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_DESC
\r
894 * IB_MAD_ATTR_NODE_DESC
\r
897 * NodeDescription attribute (14.2.5)
\r
901 #define IB_MAD_ATTR_NODE_DESC (CL_NTOH16(0x0010))
\r
903 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL
\r
905 * IB_MAD_ATTR_PORT_SMPL_CTRL
\r
908 * NodeDescription attribute (16.1.2)
\r
912 #define IB_MAD_ATTR_PORT_SMPL_CTRL (CL_NTOH16(0x0010))
\r
914 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_INFO
\r
916 * IB_MAD_ATTR_NODE_INFO
\r
919 * NodeInfo attribute (14.2.5)
\r
923 #define IB_MAD_ATTR_NODE_INFO (CL_NTOH16(0x0011))
\r
925 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT
\r
927 * IB_MAD_ATTR_PORT_SMPL_RSLT
\r
930 * NodeInfo attribute (16.1.2)
\r
934 #define IB_MAD_ATTR_PORT_SMPL_RSLT (CL_NTOH16(0x0011))
\r
936 /****d* IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO
\r
938 * IB_MAD_ATTR_SWITCH_INFO
\r
941 * SwitchInfo attribute (14.2.5)
\r
945 #define IB_MAD_ATTR_SWITCH_INFO (CL_NTOH16(0x0012))
\r
947 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS
\r
949 * IB_MAD_ATTR_PORT_CNTRS
\r
952 * SwitchInfo attribute (16.1.2)
\r
956 #define IB_MAD_ATTR_PORT_CNTRS (CL_NTOH16(0x0012))
\r
958 /****d* IBA Base: Constants/IB_MAD_ATTR_GUID_INFO
\r
960 * IB_MAD_ATTR_GUID_INFO
\r
963 * GUIDInfo attribute (14.2.5)
\r
967 #define IB_MAD_ATTR_GUID_INFO (CL_NTOH16(0x0014))
\r
969 /****d* IBA Base: Constants/IB_MAD_ATTR_PORT_INFO
\r
971 * IB_MAD_ATTR_PORT_INFO
\r
974 * PortInfo attribute (14.2.5)
\r
978 #define IB_MAD_ATTR_PORT_INFO (CL_NTOH16(0x0015))
\r
980 /****d* IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE
\r
982 * IB_MAD_ATTR_P_KEY_TABLE
\r
985 * PartitionTable attribute (14.2.5)
\r
989 #define IB_MAD_ATTR_P_KEY_TABLE (CL_NTOH16(0x0016))
\r
991 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE
\r
993 * IB_MAD_ATTR_SLVL_TABLE
\r
996 * SL VL Mapping Table attribute (14.2.5)
\r
1000 #define IB_MAD_ATTR_SLVL_TABLE (CL_NTOH16(0x0017))
\r
1002 /****d* IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION
\r
1004 * IB_MAD_ATTR_VL_ARBITRATION
\r
1007 * VL Arbitration Table attribute (14.2.5)
\r
1011 #define IB_MAD_ATTR_VL_ARBITRATION (CL_NTOH16(0x0018))
\r
1013 /****d* IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL
\r
1015 * IB_MAD_ATTR_LIN_FWD_TBL
\r
1018 * Switch linear forwarding table
\r
1022 #define IB_MAD_ATTR_LIN_FWD_TBL (CL_NTOH16(0x0019))
\r
1024 /****d* IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL
\r
1026 * IB_MAD_ATTR_RND_FWD_TBL
\r
1029 * Switch random forwarding table
\r
1033 #define IB_MAD_ATTR_RND_FWD_TBL (CL_NTOH16(0x001A))
\r
1035 /****d* IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL
\r
1037 * IB_MAD_ATTR_MCAST_FWD_TBL
\r
1040 * Switch multicast forwarding table
\r
1044 #define IB_MAD_ATTR_MCAST_FWD_TBL (CL_NTOH16(0x001B))
\r
1047 /****d* IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD
\r
1049 * IB_MAD_ATTR_NODE_RECORD
\r
1052 * NodeRecord attribute (15.2.5)
\r
1056 #define IB_MAD_ATTR_NODE_RECORD (CL_NTOH16(0x0011))
\r
1058 /****d* IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD
\r
1060 * IB_MAD_ATTR_PORTINFO_RECORD
\r
1063 * PortInfoRecord attribute (15.2.5)
\r
1067 #define IB_MAD_ATTR_PORTINFO_RECORD (CL_NTOH16(0x0012))
\r
1071 /****d* IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD
\r
1073 * IB_MAD_ATTR_LINK_RECORD
\r
1076 * LinkRecord attribute (15.2.5)
\r
1080 #define IB_MAD_ATTR_LINK_RECORD (CL_NTOH16(0x0020))
\r
1083 /****d* IBA Base: Constants/IB_MAD_ATTR_SM_INFO
\r
1085 * IB_MAD_ATTR_SM_INFO
\r
1088 * SMInfo attribute (14.2.5)
\r
1092 #define IB_MAD_ATTR_SM_INFO (CL_NTOH16(0x0020))
\r
1095 /****d* IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD
\r
1097 * IB_MAD_ATTR_SMINFO_RECORD
\r
1100 * SmInfoRecord attribute (15.2.5)
\r
1104 #define IB_MAD_ATTR_SMINFO_RECORD (CL_NTOH16(0x0018))
\r
1107 /****d* IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG
\r
1109 * IB_MAD_ATTR_VENDOR_DIAG
\r
1112 * VendorDiag attribute (14.2.5)
\r
1116 #define IB_MAD_ATTR_VENDOR_DIAG (CL_NTOH16(0x0030))
\r
1118 /****d* IBA Base: Constants/IB_MAD_ATTR_LED_INFO
\r
1120 * IB_MAD_ATTR_LED_INFO
\r
1123 * LedInfo attribute (14.2.5)
\r
1127 #define IB_MAD_ATTR_LED_INFO (CL_NTOH16(0x0031))
\r
1129 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD
\r
1131 * IB_MAD_ATTR_SERVICE_RECORD
\r
1134 * ServiceRecord attribute (15.2.5)
\r
1138 #define IB_MAD_ATTR_SERVICE_RECORD (CL_NTOH16(0x0031))
\r
1140 /****d* IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD
\r
1142 * IB_MAD_ATTR_LFT_RECORD
\r
1145 * LinearForwardingRecord attribute (15.2.5.6)
\r
1149 #define IB_MAD_ATTR_LFT_RECORD (CL_NTOH16(0x0015))
\r
1151 /****d* IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD
\r
1153 * IB_MAD_ATTR_PKEYTBL_RECORD
\r
1156 * P-KEY table attribute (15.2.5)
\r
1160 #define IB_MAD_ATTR_PKEY_TBL_RECORD (CL_NTOH16(0x0033))
\r
1162 /****d* IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD
\r
1164 * IB_MAD_ATTR_PATH_RECORD
\r
1167 * PathRecord attribute (15.2.5)
\r
1171 #define IB_MAD_ATTR_PATH_RECORD (CL_NTOH16(0x0035))
\r
1173 /****d* IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD
\r
1175 * IB_MAD_ATTR_VLARB_RECORD
\r
1178 * VL Arbitration Table attribute (15.2.5)
\r
1182 #define IB_MAD_ATTR_VLARB_RECORD (CL_NTOH16(0x0036))
\r
1184 /****d* IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD
\r
1186 * IB_MAD_ATTR_SLVL_RECORD
\r
1189 * VSLtoL Map Table attribute (15.2.5)
\r
1193 #define IB_MAD_ATTR_SLVL_RECORD (CL_NTOH16(0x0013))
\r
1195 /****d* IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD
\r
1197 * IB_MAD_ATTR_MCMEMBER_RECORD
\r
1200 * MCMemberRecord attribute (15.2.5)
\r
1204 #define IB_MAD_ATTR_MCMEMBER_RECORD (CL_NTOH16(0x0038))
\r
1206 /****d* IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD
\r
1208 * IB_MAD_ATTR_MTRACE_RECORD
\r
1211 * TraceRecord attribute (15.2.5)
\r
1215 #define IB_MAD_ATTR_TRACE_RECORD (CL_NTOH16(0x0039))
\r
1217 /****d* IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD
\r
1219 * IB_MAD_ATTR_MULTIPATH_RECORD
\r
1222 * MultiPath attribute (15.2.5)
\r
1226 #define IB_MAD_ATTR_MULTIPATH_RECORD (CL_NTOH16(0x003A))
\r
1228 /****d* IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1230 * IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1233 * Service Association attribute (15.2.5)
\r
1237 #define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD (CL_NTOH16(0x003B))
\r
1239 /****d* IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO
\r
1241 * IB_MAD_ATTR_IO_UNIT_INFO
\r
1244 * IOUnitInfo attribute (16.3.3)
\r
1248 #define IB_MAD_ATTR_IO_UNIT_INFO (CL_NTOH16(0x0010))
\r
1250 /****d* IBA Base: Constants/IB_MAD_ATTR_IOC_PROFILE
\r
1252 * IB_MAD_ATTR_IOC_PROFILE
\r
1255 * IOControllerProfile attribute (16.3.3)
\r
1259 #define IB_MAD_ATTR_IOC_PROFILE (CL_NTOH16(0x0011))
\r
1261 /****d* IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES
\r
1263 * IB_MAD_ATTR_SERVICE_ENTRIES
\r
1266 * ServiceEntries attribute (16.3.3)
\r
1270 #define IB_MAD_ATTR_SERVICE_ENTRIES (CL_NTOH16(0x0012))
\r
1272 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
\r
1274 * IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
\r
1277 * DiagnosticTimeout attribute (16.3.3)
\r
1281 #define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT (CL_NTOH16(0x0020))
\r
1283 /****d* IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST
\r
1285 * IB_MAD_ATTR_PREPARE_TO_TEST
\r
1288 * PrepareToTest attribute (16.3.3)
\r
1292 #define IB_MAD_ATTR_PREPARE_TO_TEST (CL_NTOH16(0x0021))
\r
1294 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE
\r
1296 * IB_MAD_ATTR_TEST_DEVICE_ONCE
\r
1299 * TestDeviceOnce attribute (16.3.3)
\r
1303 #define IB_MAD_ATTR_TEST_DEVICE_ONCE (CL_NTOH16(0x0022))
\r
1305 /****d* IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP
\r
1307 * IB_MAD_ATTR_TEST_DEVICE_LOOP
\r
1310 * TestDeviceLoop attribute (16.3.3)
\r
1314 #define IB_MAD_ATTR_TEST_DEVICE_LOOP (CL_NTOH16(0x0023))
\r
1316 /****d* IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE
\r
1318 * IB_MAD_ATTR_DIAG_CODE
\r
1321 * DiagCode attribute (16.3.3)
\r
1325 #define IB_MAD_ATTR_DIAG_CODE (CL_NTOH16(0x0024))
\r
1327 /*** IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1329 * IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
\r
1332 * Service Association attribute (15.2.5)
\r
1336 #define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD (CL_NTOH16(0x003B))
\r
1338 /****d* IBA Base: Constants/IB_NODE_TYPE_CA
\r
1343 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1347 #define IB_NODE_TYPE_CA 0x01
\r
1349 /****d* IBA Base: Constants/IB_NODE_TYPE_SWITCH
\r
1351 * IB_NODE_TYPE_SWITCH
\r
1354 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1358 #define IB_NODE_TYPE_SWITCH 0x02
\r
1360 /****d* IBA Base: Constants/IB_NODE_TYPE_ROUTER
\r
1362 * IB_NODE_TYPE_ROUTER
\r
1365 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1369 #define IB_NODE_TYPE_ROUTER 0x03
\r
1372 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA
\r
1374 * IB_NOTICE_NODE_TYPE_CA
\r
1377 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1381 #define IB_NOTICE_NODE_TYPE_CA (CL_NTOH32(0x000001))
\r
1383 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH
\r
1385 * IB_NOTICE_NODE_TYPE_SWITCH
\r
1388 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1392 #define IB_NOTICE_NODE_TYPE_SWITCH (CL_NTOH32(0x000002))
\r
1394 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER
\r
1396 * IB_NOTICE_NODE_TYPE_ROUTER
\r
1399 * Encoded generic node type used in MAD attributes (13.4.8.2)
\r
1403 #define IB_NOTICE_NODE_TYPE_ROUTER (CL_NTOH32(0x000003))
\r
1405 /****d* IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT
\r
1407 * IB_NOTICE_NODE_TYPE_SUBN_MGMT
\r
1410 * Encoded generic node type used in MAD attributes (13.4.8.2).
\r
1411 * Note that this value is not defined for the NodeType field
\r
1412 * of the NodeInfo attribute (14.2.5.3).
\r
1416 #define IB_NOTICE_NODE_TYPE_SUBN_MGMT (CL_NTOH32(0x000004))
\r
1419 /****d* IBA Base: Constants/IB_MTU_TYPE
\r
1424 * Encoded path MTU.
\r
1430 * others: reserved
\r
1434 #define IB_MTU_256 1
\r
1435 #define IB_MTU_512 2
\r
1436 #define IB_MTU_1024 3
\r
1437 #define IB_MTU_2048 4
\r
1438 #define IB_MTU_4096 5
\r
1441 /****d* IBA Base: Constants/IB_PATH_SELECTOR_TYPE
\r
1443 * IB_PATH_SELECTOR_TYPE
\r
1447 * 0: greater than rate specified
\r
1448 * 1: less than rate specified
\r
1449 * 2: exactly the rate specified
\r
1450 * 3: largest rate available
\r
1454 #define IB_PATH_SELECTOR_GREATER_THAN 0
\r
1455 #define IB_PATH_SELECTOR_LESS_THAN 1
\r
1456 #define IB_PATH_SELECTOR_EXACTLY 2
\r
1457 #define IB_PATH_SELECTOR_LARGEST 3
\r
1460 /****d* IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE
\r
1462 * IB_SMINFO_STATE_NOTACTIVE
\r
1465 * Encoded state value used in the SMInfo attribute.
\r
1469 #define IB_SMINFO_STATE_NOTACTIVE 0
\r
1471 /****d* IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING
\r
1473 * IB_SMINFO_STATE_DISCOVERING
\r
1476 * Encoded state value used in the SMInfo attribute.
\r
1480 #define IB_SMINFO_STATE_DISCOVERING 1
\r
1482 /****d* IBA Base: Constants/IB_SMINFO_STATE_STANDBY
\r
1484 * IB_SMINFO_STATE_STANDBY
\r
1487 * Encoded state value used in the SMInfo attribute.
\r
1491 #define IB_SMINFO_STATE_STANDBY 2
\r
1493 /****d* IBA Base: Constants/IB_SMINFO_STATE_MASTER
\r
1495 * IB_SMINFO_STATE_MASTER
\r
1498 * Encoded state value used in the SMInfo attribute.
\r
1502 #define IB_SMINFO_STATE_MASTER 3
\r
1504 /****d* IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK
\r
1506 * IB_PATH_REC_SELECTOR_MASK
\r
1509 * Mask for the selector field for path record MTU, rate
\r
1510 * and packet lifetime.
\r
1514 #define IB_PATH_REC_SELECTOR_MASK 0xC0
\r
1516 /****d* IBA Base: Constants/IB_PATH_REC_BASE_MASK
\r
1518 * IB_PATH_REC_BASE_MASK
\r
1521 * Mask for the base value field for path record MTU, rate
\r
1522 * and packet lifetime.
\r
1526 #define IB_PATH_REC_BASE_MASK 0x3F
\r
1529 /****h* IBA Base/Type Definitions
\r
1531 * Type Definitions
\r
1534 * Definitions are from the InfiniBand Architecture Specification v1.1
\r
1537 /****d* IBA Base: Types/ib_net16_t
\r
1542 * Defines the network ordered type for 16-bit values.
\r
1546 typedef uint16_t ib_net16_t;
\r
1548 /****d* IBA Base: Types/ib_net32_t
\r
1553 * Defines the network ordered type for 32-bit values.
\r
1557 typedef uint32_t ib_net32_t;
\r
1559 /****d* IBA Base: Types/ib_net64_t
\r
1564 * Defines the network ordered type for 64-bit values.
\r
1568 typedef uint64_t ib_net64_t;
\r
1570 /****d* IBA Base: Types/ib_gid_prefix_t
\r
1578 typedef ib_net64_t ib_gid_prefix_t;
\r
1581 /****d* IBA Base: Constants/ib_link_states_t
\r
1583 * ib_link_states_t
\r
1586 * Defines the link states of a port.
\r
1590 #define IB_LINK_NO_CHANGE 0
\r
1591 #define IB_LINK_DOWN 1
\r
1592 #define IB_LINK_INIT 2
\r
1593 #define IB_LINK_ARMED 3
\r
1594 #define IB_LINK_ACTIVE 4
\r
1595 #define IB_LINK_ACT_DEFER 5
\r
1598 static const char* const __ib_node_type_str[] =
\r
1601 "Channel Adapter",
\r
1604 "Subnet Management"
\r
1607 /****f* IBA Base: Types/ib_get_node_type_str
\r
1609 * ib_get_node_type_str
\r
1612 * Returns a string for the specified node type.
\r
1616 AL_INLINE const char* AL_API
\r
1617 ib_get_node_type_str(
\r
1618 IN uint8_t node_type )
\r
1620 if( node_type >= IB_NODE_TYPE_ROUTER )
\r
1622 return( __ib_node_type_str[node_type] );
\r
1627 * [in] Encoded node type as returned in the NodeInfo attribute.
\r
1630 * Pointer to the node type string.
\r
1638 static const char* const __ib_port_state_str[] =
\r
1640 "No State Change (NOP)",
\r
1649 /****f* IBA Base: Types/ib_get_port_state_str
\r
1651 * ib_get_port_state_str
\r
1654 * Returns a string for the specified port state.
\r
1658 AL_INLINE const char* AL_API
\r
1659 ib_get_port_state_str(
\r
1660 IN uint8_t port_state )
\r
1662 if( port_state > IB_LINK_ACTIVE )
\r
1663 port_state = IB_LINK_ACTIVE + 1;
\r
1664 return( __ib_port_state_str[port_state] );
\r
1669 * [in] Encoded port state as returned in the PortInfo attribute.
\r
1672 * Pointer to the port state string.
\r
1680 /****f* IBA Base: Types/ib_get_port_state_from_str
\r
1682 * ib_get_port_state_from_str
\r
1685 * Returns a string for the specified port state.
\r
1689 AL_INLINE const uint8_t AL_API
\r
1690 ib_get_port_state_from_str(
\r
1691 IN char* p_port_state_str )
\r
1693 if( !strncmp(p_port_state_str,"No State Change (NOP)",12) )
\r
1695 else if( !strncmp(p_port_state_str, "DOWN",4) )
\r
1697 else if( !strncmp(p_port_state_str, "INIT", 4) )
\r
1699 else if( !strncmp(p_port_state_str,"ARMED", 5) )
\r
1701 else if( !strncmp(p_port_state_str, "ACTIVE", 6) )
\r
1703 else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )
\r
1709 * p_port_state_str
\r
1710 * [in] A string matching one returned by ib_get_port_state_str
\r
1713 * The appropriate code.
\r
1721 /****d* IBA Base: Constants/Join States
\r
1726 * Defines the join state flags for multicast group management.
\r
1730 #define IB_JOIN_STATE_FULL 1
\r
1731 #define IB_JOIN_STATE_NON 2
\r
1732 #define IB_JOIN_STATE_SEND_ONLY 4
\r
1735 /****f* IBA Base: Types/ib_pkey_get_base
\r
1737 * ib_pkey_get_base
\r
1740 * Returns the base P_Key value with the membership bit stripped.
\r
1744 AL_INLINE ib_net16_t AL_API
\r
1746 IN const ib_net16_t pkey )
\r
1748 return( (ib_net16_t)(pkey & IB_PKEY_BASE_MASK) );
\r
1753 * [in] P_Key value
\r
1756 * Returns the base P_Key value with the membership bit stripped.
\r
1762 /****f* IBA Base: Types/ib_pkey_is_full_member
\r
1764 * ib_pkey_is_full_member
\r
1767 * Indicitates if the port is a full member of the parition.
\r
1771 AL_INLINE boolean_t AL_API
\r
1772 ib_pkey_is_full_member(
\r
1773 IN const ib_net16_t pkey )
\r
1775 return( (pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK );
\r
1780 * [in] P_Key value
\r
1783 * TRUE if the port is a full member of the partition.
\r
1784 * FALSE otherwise.
\r
1789 * ib_pkey_get_base, ib_net16_t
\r
1792 /****d* IBA Base: Types/ib_gid_t
\r
1800 #include <complib/cl_packon.h>
\r
1801 typedef union _ib_gid
\r
1804 struct _ib_gid_unicast
\r
1806 ib_gid_prefix_t prefix;
\r
1807 ib_net64_t interface_id;
\r
1809 } PACK_SUFFIX unicast;
\r
1811 struct _ib_gid_multicast
\r
1813 uint8_t header[2];
\r
1814 uint8_t raw_group_id[14];
\r
1816 } PACK_SUFFIX multicast;
\r
1818 } PACK_SUFFIX ib_gid_t;
\r
1819 #include <complib/cl_packoff.h>
\r
1823 * GID represented as an unformated byte array.
\r
1826 * Typical unicast representation with subnet prefix and
\r
1830 * Representation for multicast use.
\r
1835 AL_INLINE boolean_t AL_API
\r
1836 ib_gid_is_multicast(
\r
1837 IN const ib_gid_t* p_gid )
\r
1839 return( p_gid->raw[0] == 0xFF );
\r
1842 /****f* IBA Base: Types/ib_gid_set_default
\r
1844 * ib_gid_set_default
\r
1847 * Sets a GID to the default value.
\r
1851 AL_INLINE void AL_API
\r
1852 ib_gid_set_default(
\r
1853 IN ib_gid_t* const p_gid,
\r
1854 IN const ib_net64_t interface_id )
\r
1856 p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;
\r
1857 p_gid->unicast.interface_id = interface_id;
\r
1862 * [in] Pointer to the GID object.
\r
1865 * [in] Manufacturer assigned EUI64 value of a port.
\r
1875 /****f* IBA Base: Types/ib_gid_get_subnet_prefix
\r
1877 * ib_gid_get_subnet_prefix
\r
1880 * Gets the subnet prefix from a GID.
\r
1884 AL_INLINE ib_net64_t AL_API
\r
1885 ib_gid_get_subnet_prefix(
\r
1886 IN const ib_gid_t* const p_gid )
\r
1888 return( p_gid->unicast.prefix );
\r
1893 * [in] Pointer to the GID object.
\r
1896 * 64-bit subnet prefix value.
\r
1903 /****f* IBA Base: Types/ib_gid_is_link_local
\r
1905 * ib_gid_is_link_local
\r
1908 * Returns TRUE if the unicast GID scoping indicates link local,
\r
1909 * FALSE otherwise.
\r
1913 static inline boolean_t
\r
1914 ib_gid_is_link_local(
\r
1915 IN const ib_gid_t* const p_gid )
\r
1917 return( ib_gid_get_subnet_prefix( p_gid ) == IB_DEFAULT_SUBNET_PREFIX );
\r
1922 * [in] Pointer to the GID object.
\r
1925 * Returns TRUE if the unicast GID scoping indicates link local,
\r
1926 * FALSE otherwise.
\r
1933 /****f* IBA Base: Types/ib_gid_is_site_local
\r
1935 * ib_gid_is_site_local
\r
1938 * Returns TRUE if the unicast GID scoping indicates site local,
\r
1939 * FALSE otherwise.
\r
1943 static inline boolean_t
\r
1944 ib_gid_is_site_local(
\r
1945 IN const ib_gid_t* const p_gid )
\r
1947 return( ( ib_gid_get_subnet_prefix( p_gid ) &
\r
1948 CL_HTON64( CL_CONST64(0xFFFFFFFFFFFF0000) ) ) ==
\r
1949 CL_HTON64( CL_CONST64(0xFEC0000000000000) ) );
\r
1954 * [in] Pointer to the GID object.
\r
1957 * Returns TRUE if the unicast GID scoping indicates link local,
\r
1958 * FALSE otherwise.
\r
1965 /****f* IBA Base: Types/ib_gid_get_guid
\r
1970 * Gets the guid from a GID.
\r
1974 AL_INLINE ib_net64_t AL_API
\r
1976 IN const ib_gid_t* const p_gid )
\r
1978 return( p_gid->unicast.interface_id );
\r
1983 * [in] Pointer to the GID object.
\r
1986 * 64-bit GUID value.
\r
1994 /****s* IBA Base: Types/ib_field32_t
\r
1999 * Represents a 32-bit field, and allows access as a 32-bit network byte
\r
2000 * ordered or a 4-byte array.
\r
2004 #include <complib/cl_packon.h>
\r
2005 typedef union _ib_field32_t
\r
2010 } PACK_SUFFIX ib_field32_t;
\r
2011 #include <complib/cl_packoff.h>
\r
2015 * Full field value.
\r
2018 * Byte array representing the field. The byte array provides identical
\r
2019 * access independently from CPU byte-ordering.
\r
2022 /****s* IBA Base: Types/ib_path_rec_t
\r
2027 * Path records encapsulate the properties of a given
\r
2028 * route between two end-points on a subnet.
\r
2032 #include <complib/cl_packon.h>
\r
2033 typedef __declspec(align(8)) struct _ib_path_rec
\r
2040 ib_field32_t hop_flow_raw;
\r
2048 uint8_t preference;
\r
2052 } PACK_SUFFIX ib_path_rec_t;
\r
2053 #include <complib/cl_packoff.h>
\r
2060 * GID of destination port.
\r
2063 * GID of source port.
\r
2066 * LID of destination port.
\r
2069 * LID of source port.
\r
2072 * Global routing parameters: hop count, flow label and raw bit.
\r
2075 * Another global routing parameter.
\r
2078 * In queries, maximum number of paths to return.
\r
2079 * In responses, undefined.
\r
2082 * Partition key (P_Key) to use on this path.
\r
2088 * Service level to use on this path.
\r
2091 * MTU and MTU selector fields to use on this path
\r
2094 * Rate and rate selector fields to use on this path.
\r
2100 * Indicates the relative merit of this path versus other path
\r
2101 * records returned from the SA. Lower numbers are better.
\r
2111 /* Port Record Component Masks */
\r
2112 #define IB_PR_COMPMASK_LID (CL_HTON64(1<<0))
\r
2113 #define IB_PR_COMPMASK_DGID (CL_HTON64(1<<2))
\r
2114 #define IB_PR_COMPMASK_SGID (CL_HTON64(1<<3))
\r
2115 #define IB_PR_COMPMASK_DLID (CL_HTON64(1<<4))
\r
2116 #define IB_PR_COMPMASK_SLID (CL_HTON64(1<<5))
\r
2117 #define IB_PR_COMPMASK_RAWTRAFIC (CL_HTON64(1<<6))
\r
2118 #define IB_PR_COMPMASK_RESV0 (CL_HTON64(1<<7))
\r
2119 #define IB_PR_COMPMASK_FLOWLABEL (CL_HTON64(1<<8))
\r
2120 #define IB_PR_COMPMASK_HOPLIMIT (CL_HTON64(1<<9))
\r
2121 #define IB_PR_COMPMASK_TCLASS (CL_HTON64(1<<10))
\r
2122 #define IB_PR_COMPMASK_REVERSIBLE (CL_HTON64(1<<11))
\r
2123 #define IB_PR_COMPMASK_NUM_PATH (CL_HTON64(1<<12))
\r
2124 #define IB_PR_COMPMASK_PKEY (CL_HTON64(1<<13))
\r
2125 #define IB_PR_COMPMASK_RESV1 (CL_HTON64(1<<14))
\r
2126 #define IB_PR_COMPMASK_SL (CL_HTON64(1<<15))
\r
2127 #define IB_PR_COMPMASK_MTU_SEL (CL_HTON64(1<<16))
\r
2128 #define IB_PR_COMPMASK_MTU (CL_HTON64(1<<17))
\r
2129 #define IB_PR_COMPMASK_RATE_SEL (CL_HTON64(1<<18))
\r
2130 #define IB_PR_COMPMASK_RATE (CL_HTON64(1<<19))
\r
2131 #define IB_PR_COMPMASK_PKTLIFETIME_SEL (CL_HTON64(1<<20))
\r
2132 #define IB_PR_COMPMASK_PFTLIFETIME (CL_HTON64(1<<21))
\r
2134 /* Link Record Component Masks */
\r
2135 #define IB_LR_COMPMASK_FROM_LID (CL_HTON64(1<<0))
\r
2136 #define IB_LR_COMPMASK_FROM_PORT (CL_HTON64(1<<1))
\r
2137 #define IB_LR_COMPMASK_TO_PORT (CL_HTON64(1<<2))
\r
2138 #define IB_LR_COMPMASK_TO_LID (CL_HTON64(1<<3))
\r
2140 /* VL Arbitration Record MASKs */
\r
2141 #define IB_VLA_COMPMASK_LID (CL_HTON64(1<<0))
\r
2142 #define IB_VLA_COMPMASK_OUT_PORT (CL_HTON64(1<<1))
\r
2143 #define IB_VLA_COMPMASK_BLOCK (CL_HTON64(1<<2))
\r
2144 /* SLtoVL Mapping Record Masks */
\r
2145 #define IB_SLVL_COMPMASK_LID (CL_HTON64(1<<0))
\r
2146 #define IB_SLVL_COMPMASK_IN_PORT (CL_HTON64(1<<1))
\r
2147 #define IB_SLVL_COMPMASK_OUT_PORT (CL_HTON64(1<<2))
\r
2148 /* LFT Record MASKS */
\r
2149 #define IB_LFTR_COMPMASK_LID (CL_HTON64(1<<0))
\r
2150 #define IB_LFTR_COMPMASK_BLOCK (CL_HTON64(1<<1))
\r
2151 /* ModeInfo Record MASKS */
\r
2152 #define IB_NR_COMPMASK_LID (CL_HTON64(1<<0))
\r
2153 #define IB_NR_COMPMASK_RESERVED1 (CL_HTON64(1<<1))
\r
2154 #define IB_NR_COMPMASK_BASEVERSION (CL_HTON64(1<<2))
\r
2155 #define IB_NR_COMPMASK_CLASSVERSION (CL_HTON64(1<<3))
\r
2156 #define IB_NR_COMPMASK_NODETYPE (CL_HTON64(1<<4))
\r
2157 #define IB_NR_COMPMASK_NUMPORTS (CL_HTON64(1<<5))
\r
2158 #define IB_NR_COMPMASK_SYSIMAGEGUID (CL_HTON64(1<<6))
\r
2159 #define IB_NR_COMPMASK_NODEGUID (CL_HTON64(1<<7))
\r
2160 #define IB_NR_COMPMASK_PORTGUID (CL_HTON64(1<<8))
\r
2161 #define IB_NR_COMPMASK_PARTCAP (CL_HTON64(1<<9))
\r
2162 #define IB_NR_COMPMASK_DEVID (CL_HTON64(1<<10))
\r
2163 #define IB_NR_COMPMASK_REV (CL_HTON64(1<<11))
\r
2164 #define IB_NR_COMPMASK_PORTNUM (CL_HTON64(1<<12))
\r
2165 #define IB_NR_COMPMASK_VENDID (CL_HTON64(1<<13))
\r
2166 #define IB_NR_COMPMASK_NODEDESC (CL_HTON64(1<<14))
\r
2167 /* Service Record Component Mask Sec 15.2.5.14 Ver 1.1*/
\r
2168 #define IB_SR_COMPMASK_SID (CL_HTON64(1<<0))
\r
2169 #define IB_SR_COMPMASK_SGID (CL_HTON64(1<<1))
\r
2170 #define IB_SR_COMPMASK_SPKEY (CL_HTON64(1<<2))
\r
2171 #define IB_SR_COMPMASK_RES1 (CL_HTON64(1<<3))
\r
2172 #define IB_SR_COMPMASK_SLEASE (CL_HTON64(1<<4))
\r
2173 #define IB_SR_COMPMASK_SKEY (CL_HTON64(1<<5))
\r
2174 #define IB_SR_COMPMASK_SNAME (CL_HTON64(1<<6))
\r
2175 #define IB_SR_COMPMASK_SDATA8_0 (CL_HTON64(1<<7))
\r
2176 #define IB_SR_COMPMASK_SDATA8_1 (CL_HTON64(1<<8))
\r
2177 #define IB_SR_COMPMASK_SDATA8_2 (CL_HTON64(1<<9))
\r
2178 #define IB_SR_COMPMASK_SDATA8_3 (CL_HTON64(1<<10))
\r
2179 #define IB_SR_COMPMASK_SDATA8_4 (CL_HTON64(1<<11))
\r
2180 #define IB_SR_COMPMASK_SDATA8_5 (CL_HTON64(1<<12))
\r
2181 #define IB_SR_COMPMASK_SDATA8_6 (CL_HTON64(1<<13))
\r
2182 #define IB_SR_COMPMASK_SDATA8_7 (CL_HTON64(1<<14))
\r
2183 #define IB_SR_COMPMASK_SDATA8_8 (CL_HTON64(1<<15))
\r
2184 #define IB_SR_COMPMASK_SDATA8_9 (CL_HTON64(1<<16))
\r
2185 #define IB_SR_COMPMASK_SDATA8_10 (CL_HTON64(1<<17))
\r
2186 #define IB_SR_COMPMASK_SDATA8_11 (CL_HTON64(1<<18))
\r
2187 #define IB_SR_COMPMASK_SDATA8_12 (CL_HTON64(1<<19))
\r
2188 #define IB_SR_COMPMASK_SDATA8_13 (CL_HTON64(1<<20))
\r
2189 #define IB_SR_COMPMASK_SDATA8_14 (CL_HTON64(1<<21))
\r
2190 #define IB_SR_COMPMASK_SDATA8_15 (CL_HTON64(1<<22))
\r
2191 #define IB_SR_COMPMASK_SDATA16_0 (CL_HTON64(1<<23))
\r
2192 #define IB_SR_COMPMASK_SDATA16_1 (CL_HTON64(1<<24))
\r
2193 #define IB_SR_COMPMASK_SDATA16_2 (CL_HTON64(1<<25))
\r
2194 #define IB_SR_COMPMASK_SDATA16_3 (CL_HTON64(1<<26))
\r
2195 #define IB_SR_COMPMASK_SDATA16_4 (CL_HTON64(1<<27))
\r
2196 #define IB_SR_COMPMASK_SDATA16_5 (CL_HTON64(1<<28))
\r
2197 #define IB_SR_COMPMASK_SDATA16_6 (CL_HTON64(1<<29))
\r
2198 #define IB_SR_COMPMASK_SDATA16_7 (CL_HTON64(1<<30))
\r
2199 #define IB_SR_COMPMASK_SDATA32_0 (CL_HTON64(1<<31))
\r
2200 #define IB_SR_COMPMASK_SDATA32_1 (CL_HTON64(((uint64_t)1)<<32))
\r
2201 #define IB_SR_COMPMASK_SDATA32_2 (CL_HTON64(((uint64_t)1)<<33))
\r
2202 #define IB_SR_COMPMASK_SDATA32_3 (CL_HTON64(((uint64_t)1)<<34))
\r
2203 #define IB_SR_COMPMASK_SDATA64_0 (CL_HTON64(((uint64_t)1)<<35))
\r
2204 #define IB_SR_COMPMASK_SDATA64_1 (CL_HTON64(((uint64_t)1)<<36))
\r
2205 /* Port Info Record Component Masks */
\r
2206 #define IB_PIR_COMPMASK_LID (CL_HTON64(1<<0))
\r
2207 #define IB_PIR_COMPMASK_PORTNUM (CL_HTON64(1<<1))
\r
2208 #define IB_PIR_COMPMASK_RESV1 (CL_HTON64(1<<2))
\r
2209 #define IB_PIR_COMPMASK_MKEY (CL_HTON64(1<<3))
\r
2210 #define IB_PIR_COMPMASK_GIDPRE (CL_HTON64(1<<4))
\r
2211 #define IB_PIR_COMPMASK_BASELID (CL_HTON64(1<<5))
\r
2212 #define IB_PIR_COMPMASK_SMLID (CL_HTON64(1<<6))
\r
2213 #define IB_PIR_COMPMASK_CAPMASK (CL_HTON64(1<<7))
\r
2214 #define IB_PIR_COMPMASK_DIAGCODE (CL_HTON64(1<<8))
\r
2215 #define IB_PIR_COMPMASK_MKEYLEASEPRD (CL_HTON64(1<<9))
\r
2216 #define IB_PIR_COMPMASK_LOCALPORTNUM (CL_HTON64(1<<10))
\r
2217 #define IB_PIR_COMPMASK_LNKWIDTHSUPPORT (CL_HTON64(1<<11))
\r
2218 #define IB_PIR_COMPMASK_LNKWIDTHACTIVE (CL_HTON64(1<<12))
\r
2219 #define IB_PIR_COMPMASK_LINKWIDTHENABLED (CL_HTON64(1<<13))
\r
2220 #define IB_PIR_COMPMASK_LNKSPEEDSUPPORT (CL_HTON64(1<<14))
\r
2221 #define IB_PIR_COMPMASK_PORTSTATE (CL_HTON64(1<<15))
\r
2222 #define IB_PIR_COMPMASK_PORTPHYSTATE (CL_HTON64(1<<16))
\r
2223 #define IB_PIR_COMPMASK_LINKDWNDFLTSTATE (CL_HTON64(1<<17))
\r
2224 #define IB_PIR_COMPMASK_MKEYPROTBITS (CL_HTON64(1<<18))
\r
2225 #define IB_PIR_COMPMASK_LMC (CL_HTON64(1<<19))
\r
2226 #define IB_PIR_COMPMASK_LINKSPEEDACTIVE (CL_HTON64(1<<20))
\r
2227 #define IB_PIR_COMPMASK_LINKSPEEDENABLE (CL_HTON64(1<<21))
\r
2228 #define IB_PIR_COMPMASK_NEIGHBORMTU (CL_HTON64(1<<22))
\r
2229 #define IB_PIR_COMPMASK_MASTERSMSL (CL_HTON64(1<<23))
\r
2230 #define IB_PIR_COMPMASK_VLCAP (CL_HTON64(1<<24))
\r
2231 #define IB_PIR_COMPMASK_INITTYPE (CL_HTON64(1<<25))
\r
2232 #define IB_PIR_COMPMASK_VLHIGHLIMIT (CL_HTON64(1<<26))
\r
2233 #define IB_PIR_COMPMASK_VLARBHIGHCAP (CL_HTON64(1<<27))
\r
2234 #define IB_PIR_COMPMASK_VLARBLOWCAP (CL_HTON64(1<<28))
\r
2235 #define IB_PIR_COMPMASK_INITTYPEREPLY (CL_HTON64(1<<29))
\r
2236 #define IB_PIR_COMPMASK_MTUCAP (CL_HTON64(1<<30))
\r
2237 #define IB_PIR_COMPMASK_VLSTALLCNT (CL_HTON64(1<<31))
\r
2238 #define IB_PIR_COMPMASK_HOQLIFE (CL_HTON64(((uint64_t)1)<<32))
\r
2239 #define IB_PIR_COMPMASK_OPVLS (CL_HTON64(((uint64_t)1)<<33))
\r
2240 #define IB_PIR_COMPMASK_PARENFIN (CL_HTON64(((uint64_t)1)<<34))
\r
2241 #define IB_PIR_COMPMASK_PARENFOUT (CL_HTON64(((uint64_t)1)<<35))
\r
2242 #define IB_PIR_COMPMASK_FILTERRAWIN (CL_HTON64(((uint64_t)1)<<36))
\r
2243 #define IB_PIR_COMPMASK_FILTERRAWOUT (CL_HTON64(((uint64_t)1)<<37))
\r
2244 #define IB_PIR_COMPMASK_MKEYVIO (CL_HTON64(((uint64_t)1)<<38))
\r
2245 #define IB_PIR_COMPMASK_PKEYVIO (CL_HTON64(((uint64_t)1)<<39))
\r
2246 #define IB_PIR_COMPMASK_QKEYVIO (CL_HTON64(((uint64_t)1)<<40))
\r
2247 #define IB_PIR_COMPMASK_GUIDCAP (CL_HTON64(((uint64_t)1)<<41))
\r
2248 #define IB_PIR_COMPMASK_RESV2 (CL_HTON64(((uint64_t)1)<<42))
\r
2249 #define IB_PIR_COMPMASK_SUBNTO (CL_HTON64(((uint64_t)1)<<43))
\r
2250 #define IB_PIR_COMPMASK_RESV3 (CL_HTON64(((uint64_t)1)<<44))
\r
2251 #define IB_PIR_COMPMASK_RESPTIME (CL_HTON64(((uint64_t)1)<<45))
\r
2252 #define IB_PIR_COMPMASK_LOCALPHYERR (CL_HTON64(((uint64_t)1)<<46))
\r
2253 #define IB_PIR_COMPMASK_OVERRUNERR (CL_HTON64(((uint64_t)1)<<47))
\r
2254 /* Multicast Member Record Component Masks */
\r
2255 #define IB_MCR_COMPMASK_GID (CL_HTON64(1<<0))
\r
2256 #define IB_MCR_COMPMASK_MGID (CL_HTON64(1<<0))
\r
2257 #define IB_MCR_COMPMASK_PORT_GID (CL_HTON64(1<<1))
\r
2258 #define IB_MCR_COMPMASK_QKEY (CL_HTON64(1<<2))
\r
2259 #define IB_MCR_COMPMASK_MLID (CL_HTON64(1<<3))
\r
2260 #define IB_MCR_COMPMASK_MTU_SEL (CL_HTON64(1<<4))
\r
2261 #define IB_MCR_COMPMASK_MTU (CL_HTON64(1<<5))
\r
2262 #define IB_MCR_COMPMASK_TCLASS (CL_HTON64(1<<6))
\r
2263 #define IB_MCR_COMPMASK_PKEY (CL_HTON64(1<<7))
\r
2264 #define IB_MCR_COMPMASK_RATE_SEL (CL_HTON64(1<<8))
\r
2265 #define IB_MCR_COMPMASK_RATE (CL_HTON64(1<<9))
\r
2266 #define IB_MCR_COMPMASK_LIFE_SEL (CL_HTON64(1<<10))
\r
2267 #define IB_MCR_COMPMASK_LIFE (CL_HTON64(1<<11))
\r
2268 #define IB_MCR_COMPMASK_SL (CL_HTON64(1<<12))
\r
2269 #define IB_MCR_COMPMASK_FLOW (CL_HTON64(1<<13))
\r
2270 #define IB_MCR_COMPMASK_HOP (CL_HTON64(1<<14))
\r
2271 #define IB_MCR_COMPMASK_SCOPE (CL_HTON64(1<<15))
\r
2272 #define IB_MCR_COMPMASK_JOIN_STATE (CL_HTON64(1<<16))
\r
2273 #define IB_MCR_COMPMASK_PROXY (CL_HTON64(1<<17))
\r
2275 /****f* IBA Base: Types/ib_path_rec_init_local
\r
2277 * ib_path_rec_init_local
\r
2280 * Initializes a subnet local path record.
\r
2284 AL_INLINE void AL_API
\r
2285 ib_path_rec_init_local(
\r
2286 IN ib_path_rec_t* const p_rec,
\r
2287 IN const ib_gid_t* const p_dgid,
\r
2288 IN const ib_gid_t* const p_sgid,
\r
2289 IN const ib_net16_t dlid,
\r
2290 IN const ib_net16_t slid,
\r
2291 IN const uint8_t num_path,
\r
2292 IN const ib_net16_t pkey,
\r
2293 IN const uint8_t sl,
\r
2294 IN const uint8_t mtu_selector,
\r
2295 IN const uint8_t mtu,
\r
2296 IN const uint8_t rate_selector,
\r
2297 IN const uint8_t rate,
\r
2298 IN const uint8_t pkt_life_selector,
\r
2299 IN const uint8_t pkt_life,
\r
2300 IN const uint8_t preference )
\r
2302 p_rec->dgid = *p_dgid;
\r
2303 p_rec->sgid = *p_sgid;
\r
2304 p_rec->dlid = dlid;
\r
2305 p_rec->slid = slid;
\r
2306 p_rec->num_path = num_path;
\r
2307 p_rec->pkey = pkey;
\r
2308 /* Lower 4 bits of path rec's SL are reserved. */
\r
2309 p_rec->sl = cl_ntoh16( sl );
\r
2310 p_rec->mtu = (uint8_t)((mtu & IB_PATH_REC_BASE_MASK) |
\r
2311 (uint8_t)(mtu_selector << 6));
\r
2312 p_rec->rate = (uint8_t)((rate & IB_PATH_REC_BASE_MASK) |
\r
2313 (uint8_t)(rate_selector << 6));
\r
2314 p_rec->pkt_life = (uint8_t)((pkt_life & IB_PATH_REC_BASE_MASK) |
\r
2315 (uint8_t)(pkt_life_selector << 6));
\r
2316 p_rec->preference = preference;
\r
2318 /* Clear global routing fields for local path records */
\r
2319 p_rec->hop_flow_raw.val = 0;
\r
2320 p_rec->tclass = 0;
\r
2329 * [in] Pointer to the path record object.
\r
2332 * [in] GID of destination port.
\r
2335 * [in] GID of source port.
\r
2338 * [in] LID of destination port.
\r
2341 * [in] LID of source port.
\r
2344 * [in] In queries, maximum number of paths to return.
\r
2345 * In responses, undefined.
\r
2348 * [in] Partition key (P_Key) to use on this path.
\r
2351 * [in] Service level to use on this path. Lower 4-bits are valid.
\r
2354 * [in] Encoded MTU selector value to use on this path
\r
2357 * [in] Encoded MTU to use on this path
\r
2360 * [in] Encoded rate selector value to use on this path.
\r
2363 * [in] Encoded rate to use on this path.
\r
2365 * pkt_life_selector
\r
2366 * [in] Encoded Packet selector value lifetime for this path.
\r
2369 * [in] Encoded Packet lifetime for this path.
\r
2372 * [in] Indicates the relative merit of this path versus other path
\r
2373 * records returned from the SA. Lower numbers are better.
\r
2384 /****f* IBA Base: Types/ib_path_rec_sl
\r
2389 * Get path service level.
\r
2393 AL_INLINE uint8_t AL_API
\r
2395 IN const ib_path_rec_t* const p_rec )
\r
2397 return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
\r
2402 * [in] Pointer to the path record object.
\r
2405 * Encoded path MTU.
\r
2411 * others: reserved
\r
2419 /****f* IBA Base: Types/ib_path_rec_mtu
\r
2424 * Get encoded path MTU.
\r
2428 AL_INLINE uint8_t AL_API
\r
2430 IN const ib_path_rec_t* const p_rec )
\r
2432 return( (uint8_t)(p_rec->mtu & IB_PATH_REC_BASE_MASK) );
\r
2437 * [in] Pointer to the path record object.
\r
2440 * Encoded path MTU.
\r
2446 * others: reserved
\r
2454 /****f* IBA Base: Types/ib_path_rec_mtu_sel
\r
2456 * ib_path_rec_mtu_sel
\r
2459 * Get encoded path MTU selector.
\r
2463 AL_INLINE uint8_t AL_API
\r
2464 ib_path_rec_mtu_sel(
\r
2465 IN const ib_path_rec_t* const p_rec )
\r
2467 return( (uint8_t)((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6) );
\r
2472 * [in] Pointer to the path record object.
\r
2475 * Encoded path MTU selector value (for queries).
\r
2476 * 0: greater than MTU specified
\r
2477 * 1: less than MTU specified
\r
2478 * 2: exactly the MTU specified
\r
2479 * 3: largest MTU available
\r
2487 /****f* IBA Base: Types/ib_path_rec_rate
\r
2489 * ib_path_rec_rate
\r
2492 * Get encoded path rate.
\r
2496 AL_INLINE uint8_t AL_API
\r
2498 IN const ib_path_rec_t* const p_rec )
\r
2500 return( (uint8_t)(p_rec->rate & IB_PATH_REC_BASE_MASK) );
\r
2505 * [in] Pointer to the path record object.
\r
2508 * Encoded path rate.
\r
2512 * others: reserved
\r
2520 /****f* IBA Base: Types/ib_path_rec_rate_sel
\r
2522 * ib_path_rec_rate_sel
\r
2525 * Get encoded path rate selector.
\r
2529 AL_INLINE uint8_t AL_API
\r
2530 ib_path_rec_rate_sel(
\r
2531 IN const ib_path_rec_t* const p_rec )
\r
2533 return( (uint8_t)((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6) );
\r
2538 * [in] Pointer to the path record object.
\r
2541 * Encoded path rate selector value (for queries).
\r
2542 * 0: greater than rate specified
\r
2543 * 1: less than rate specified
\r
2544 * 2: exactly the rate specified
\r
2545 * 3: largest rate available
\r
2553 /****f* IBA Base: Types/ib_path_rec_pkt_life
\r
2555 * ib_path_rec_pkt_life
\r
2558 * Get encoded path pkt_life.
\r
2562 AL_INLINE uint8_t AL_API
\r
2563 ib_path_rec_pkt_life(
\r
2564 IN const ib_path_rec_t* const p_rec )
\r
2566 return( (uint8_t)(p_rec->pkt_life & IB_PATH_REC_BASE_MASK) );
\r
2571 * [in] Pointer to the path record object.
\r
2574 * Encoded path pkt_life = 4.096 µsec * 2 PacketLifeTime.
\r
2582 /****f* IBA Base: Types/ib_path_rec_pkt_life_sel
\r
2584 * ib_path_rec_pkt_life_sel
\r
2587 * Get encoded path pkt_lifetime selector.
\r
2591 AL_INLINE uint8_t AL_API
\r
2592 ib_path_rec_pkt_life_sel(
\r
2593 IN const ib_path_rec_t* const p_rec )
\r
2595 return( (uint8_t)((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6 ));
\r
2600 * [in] Pointer to the path record object.
\r
2603 * Encoded path pkt_lifetime selector value (for queries).
\r
2604 * 0: greater than rate specified
\r
2605 * 1: less than rate specified
\r
2606 * 2: exactly the rate specified
\r
2607 * 3: smallest packet lifetime available
\r
2615 /****f* IBA Base: Types/ib_path_rec_flow_lbl
\r
2617 * ib_path_rec_flow_lbl
\r
2624 AL_INLINE net32_t AL_API
\r
2625 ib_path_rec_flow_lbl(
\r
2626 IN const ib_path_rec_t* const p_rec )
\r
2628 return( cl_hton32( (cl_ntoh32(p_rec->hop_flow_raw.val) >> 8) & 0x000FFFFF ) );
\r
2633 * [in] Pointer to the path record object.
\r
2636 * Flow label of the path record.
\r
2644 /****f* IBA Base: Types/ib_path_rec_hop_limit
\r
2646 * ib_path_rec_hop_limit
\r
2653 AL_INLINE uint8_t AL_API
\r
2654 ib_path_rec_hop_limit(
\r
2655 IN const ib_path_rec_t* const p_rec )
\r
2657 return( p_rec->hop_flow_raw.bytes[3] );
\r
2662 * [in] Pointer to the path record object.
\r
2665 * Hop limit of the path record.
\r
2673 /****f* IBA Base: Types/ib_path_rec_set_hop_flow_raw
\r
2675 * ib_path_rec_set_hop_flow_raw
\r
2678 * Sets the hop limit, flow label, and raw traffic bits of a path record.
\r
2682 AL_INLINE void AL_API
\r
2683 ib_path_rec_set_hop_flow_raw(
\r
2684 OUT ib_path_rec_t* const p_rec,
\r
2685 IN const uint8_t hop_limit,
\r
2686 IN const net32_t flow_lbl,
\r
2687 IN const boolean_t raw )
\r
2689 p_rec->hop_flow_raw.val = (cl_ntoh32( flow_lbl ) & 0x000FFFFF) << 8;
\r
2691 p_rec->hop_flow_raw.val |= 0x80000000;
\r
2692 p_rec->hop_flow_raw.val = cl_hton32( p_rec->hop_flow_raw.val );
\r
2693 p_rec->hop_flow_raw.bytes[3] = hop_limit;
\r
2698 * Pointer to the path record whose hop limit, flow label, and rab
\r
2699 * traffic fields to set.
\r
2702 * Hop limit to set in the path record.
\r
2705 * Flow label, in network byte order, to set in the path record.
\r
2708 * Boolean flag to indicate whether the path record is for raw traffic.
\r
2715 /****s* IBA Base: Constants/IB_CLASS_CAP_TRAP
\r
2717 * IB_CLASS_CAP_TRAP
\r
2720 * ClassPortInfo CapabilityMask bits. This bit will be set
\r
2721 * if the class supports Trap() MADs (13.4.8.1).
\r
2724 * ib_class_port_info_t, IB_CLASS_CAP_GETSET
\r
2728 #define IB_CLASS_CAP_TRAP 0x0001
\r
2730 /****s* IBA Base: Constants/IB_CLASS_CAP_GETSET
\r
2732 * IB_CLASS_CAP_GETSET
\r
2735 * ClassPortInfo CapabilityMask bits. This bit will be set
\r
2736 * if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).
\r
2739 * ib_class_port_info_t, IB_CLASS_CAP_TRAP
\r
2743 #define IB_CLASS_CAP_GETSET 0x0002
\r
2745 /****s* IBA Base: Constants/IB_CLASS_RESP_TIME_MASK
\r
2747 * IB_CLASS_RESP_TIME_MASK
\r
2750 * Mask bits to extract the reponse time value from the
\r
2751 * resp_time_val field of ib_class_port_info_t.
\r
2754 * ib_class_port_info_t
\r
2758 #define IB_CLASS_RESP_TIME_MASK 0x1F
\r
2760 /****s* IBA Base: Types/ib_class_port_info_t
\r
2762 * ib_class_port_info_t
\r
2765 * IBA defined ClassPortInfo attribute (13.4.8.1)
\r
2766 * route between two end-points on a subnet.
\r
2770 #include <complib/cl_packon.h>
\r
2771 typedef struct _ib_class_port_info
\r
2774 uint8_t class_ver;
\r
2775 ib_net16_t cap_mask;
\r
2776 ib_net32_t resp_time_val;
\r
2777 ib_gid_t redir_gid;
\r
2778 ib_net32_t redir_tc_sl_fl;
\r
2779 ib_net16_t redir_lid;
\r
2780 ib_net16_t redir_pkey;
\r
2781 ib_net32_t redir_qp;
\r
2782 ib_net32_t redir_qkey;
\r
2783 ib_gid_t trap_gid;
\r
2784 ib_net32_t trap_tc_sl_fl;
\r
2785 ib_net16_t trap_lid;
\r
2786 ib_net16_t trap_pkey;
\r
2787 ib_net32_t trap_hop_qp;
\r
2788 ib_net32_t trap_qkey;
\r
2790 } PACK_SUFFIX ib_class_port_info_t;
\r
2791 #include <complib/cl_packoff.h>
\r
2795 * Maximum supported MAD Base Version.
\r
2798 * Maximum supported management class version.
\r
2801 * Supported capabilities of this management class.
\r
2804 * Maximum expected response time.
\r
2807 * GID to use for redirection, or zero
\r
2810 * Traffic class, service level and flow label the requester
\r
2811 * should use if the service is redirected.
\r
2814 * LID used for redirection, or zero
\r
2817 * P_Key used for redirection
\r
2820 * QP number used for redirection
\r
2823 * Q_Key associated with the redirected QP. This shall be the
\r
2824 * well known Q_Key value.
\r
2827 * GID value used for trap messages from this service.
\r
2830 * Traffic class, service level and flow label used for
\r
2831 * trap messages originated by this service.
\r
2834 * LID used for trap messages, or zero
\r
2837 * P_Key used for trap messages
\r
2840 * Hop limit (upper 8 bits) and QP number used for trap messages
\r
2843 * Q_Key associated with the trap messages QP.
\r
2846 * IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP
\r
2849 /****s* IBA Base: Types/ib_sm_info_t
\r
2854 * SMInfo structure (14.2.5.13).
\r
2858 #include <complib/cl_packon.h>
\r
2859 typedef struct _ib_sm_info
\r
2862 ib_net64_t sm_key;
\r
2863 ib_net32_t act_count;
\r
2864 uint8_t pri_state;
\r
2866 } PACK_SUFFIX ib_sm_info_t;
\r
2867 #include <complib/cl_packoff.h>
\r
2871 * Port GUID for this SM.
\r
2874 * SM_Key of this SM.
\r
2877 * Activity counter used as a heartbeat.
\r
2880 * Priority and State information
\r
2885 /****f* IBA Base: Types/ib_sminfo_get_priority
\r
2887 * ib_sminfo_get_priority
\r
2890 * Returns the priority value.
\r
2894 AL_INLINE uint8_t AL_API
\r
2895 ib_sminfo_get_priority(
\r
2896 IN const ib_sm_info_t* const p_smi )
\r
2898 return( (uint8_t)((p_smi->pri_state & 0xF0)>>4) );
\r
2903 * [in] Pointer to the SMInfo Attribute.
\r
2906 * Returns the priority value.
\r
2913 /****f* IBA Base: Types/ib_sminfo_get_state
\r
2915 * ib_sminfo_get_state
\r
2918 * Returns the state value.
\r
2922 AL_INLINE uint8_t AL_API
\r
2923 ib_sminfo_get_state(
\r
2924 IN const ib_sm_info_t* const p_smi )
\r
2926 return( (uint8_t)(p_smi->pri_state & 0x0F) );
\r
2931 * [in] Pointer to the SMInfo Attribute.
\r
2934 * Returns the state value.
\r
2941 /****s* IBA Base: Types/ib_mad_t
\r
2946 * IBA defined MAD header (13.4.3)
\r
2950 #include <complib/cl_packon.h>
\r
2951 typedef struct _ib_mad
\r
2954 uint8_t mgmt_class;
\r
2955 uint8_t class_ver;
\r
2957 ib_net16_t status;
\r
2958 ib_net16_t class_spec;
\r
2959 ib_net64_t trans_id;
\r
2960 ib_net16_t attr_id;
\r
2962 ib_net32_t attr_mod;
\r
2964 } PACK_SUFFIX ib_mad_t;
\r
2965 #include <complib/cl_packoff.h>
\r
2969 * MAD base format.
\r
2972 * Class of operation.
\r
2975 * Version of MAD class-specific format.
\r
2978 * Method to perform, including 'R' bit.
\r
2981 * Status of operation.
\r
2984 * Reserved for subnet management.
\r
2996 * Attribute modifier.
\r
3002 /****s* IBA Base: Types/ib_rmpp_mad_t
\r
3007 * IBA defined MAD RMPP header (13.6.2.1)
\r
3011 #include <complib/cl_packon.h>
\r
3012 typedef struct _ib_rmpp_mad
\r
3014 ib_mad_t common_hdr;
\r
3016 uint8_t rmpp_version;
\r
3017 uint8_t rmpp_type;
\r
3018 uint8_t rmpp_flags;
\r
3019 uint8_t rmpp_status;
\r
3021 ib_net32_t seg_num;
\r
3022 ib_net32_t paylen_newwin;
\r
3024 } PACK_SUFFIX ib_rmpp_mad_t;
\r
3025 #include <complib/cl_packoff.h>
\r
3032 /****f* IBA Base: Types/ib_mad_init_new
\r
3037 * Initializes a MAD common header.
\r
3041 AL_INLINE void AL_API
\r
3043 IN ib_mad_t* const p_mad,
\r
3044 IN const uint8_t mgmt_class,
\r
3045 IN const uint8_t class_ver,
\r
3046 IN const uint8_t method,
\r
3047 IN const ib_net64_t trans_id,
\r
3048 IN const ib_net16_t attr_id,
\r
3049 IN const ib_net32_t attr_mod )
\r
3051 CL_ASSERT( p_mad );
\r
3052 p_mad->base_ver = 1;
\r
3053 p_mad->mgmt_class = mgmt_class;
\r
3054 p_mad->class_ver = class_ver;
\r
3055 p_mad->method = method;
\r
3056 p_mad->status = 0;
\r
3057 p_mad->class_spec = 0;
\r
3058 p_mad->trans_id = trans_id;
\r
3059 p_mad->attr_id = attr_id;
\r
3061 p_mad->attr_mod = attr_mod;
\r
3066 * [in] Pointer to the MAD common header.
\r
3069 * [in] Class of operation.
\r
3072 * [in] Version of MAD class-specific format.
\r
3075 * [in] Method to perform, including 'R' bit.
\r
3078 * [in] Transaction ID.
\r
3081 * [in] Attribute ID.
\r
3084 * [in] Attribute modifier.
\r
3095 /****f* IBA Base: Types/ib_mad_init_response
\r
3097 * ib_mad_init_response
\r
3100 * Initializes a MAD common header as a response.
\r
3104 AL_INLINE void AL_API
\r
3105 ib_mad_init_response(
\r
3106 IN const ib_mad_t* const p_req_mad,
\r
3107 IN ib_mad_t* const p_mad,
\r
3108 IN const ib_net16_t status )
\r
3110 CL_ASSERT( p_req_mad );
\r
3111 CL_ASSERT( p_mad );
\r
3112 *p_mad = *p_req_mad;
\r
3113 p_mad->status = status;
\r
3114 if( p_mad->method == IB_MAD_METHOD_SET )
\r
3115 p_mad->method = IB_MAD_METHOD_GET;
\r
3116 p_mad->method |= IB_MAD_METHOD_RESP_MASK;
\r
3121 * [in] Pointer to the MAD common header in the original request MAD.
\r
3124 * [in] Pointer to the MAD common header to initialize.
\r
3127 * [in] MAD Status value to return;
\r
3133 * p_req_mad and p_mad may point to the same MAD.
\r
3139 /****f* IBA Base: Types/ib_mad_is_response
\r
3141 * ib_mad_is_response
\r
3144 * Returns TRUE if the MAD is a response ('R' bit set),
\r
3145 * FALSE otherwise.
\r
3149 AL_INLINE boolean_t AL_API
\r
3150 ib_mad_is_response(
\r
3151 IN const ib_mad_t* const p_mad )
\r
3153 CL_ASSERT( p_mad );
\r
3154 return( (p_mad->method & IB_MAD_METHOD_RESP_MASK) ==
\r
3155 IB_MAD_METHOD_RESP_MASK );
\r
3160 * [in] Pointer to the MAD.
\r
3163 * Returns TRUE if the MAD is a response ('R' bit set),
\r
3164 * FALSE otherwise.
\r
3173 #define IB_RMPP_TYPE_DATA 1
\r
3174 #define IB_RMPP_TYPE_ACK 2
\r
3175 #define IB_RMPP_TYPE_STOP 3
\r
3176 #define IB_RMPP_TYPE_ABORT 4
\r
3178 #define IB_RMPP_NO_RESP_TIME 0x1F
\r
3179 #define IB_RMPP_FLAG_ACTIVE 0x01
\r
3180 #define IB_RMPP_FLAG_FIRST 0x02
\r
3181 #define IB_RMPP_FLAG_LAST 0x04
\r
3183 #define IB_RMPP_STATUS_SUCCESS 0
\r
3184 #define IB_RMPP_STATUS_RESX 1 /* resources exhausted */
\r
3185 #define IB_RMPP_STATUS_T2L 118 /* time too long */
\r
3186 #define IB_RMPP_STATUS_BAD_LEN 119 /* incon. last and payload len */
\r
3187 #define IB_RMPP_STATUS_BAD_SEG 120 /* incon. first and segment no */
\r
3188 #define IB_RMPP_STATUS_BADT 121 /* bad rmpp type */
\r
3189 #define IB_RMPP_STATUS_W2S 122 /* newwindowlast too small */
\r
3190 #define IB_RMPP_STATUS_S2B 123 /* segment no too big */
\r
3191 #define IB_RMPP_STATUS_BAD_STATUS 124 /* illegal status */
\r
3192 #define IB_RMPP_STATUS_UNV 125 /* unsupported version */
\r
3193 #define IB_RMPP_STATUS_TMR 126 /* too many retries */
\r
3194 #define IB_RMPP_STATUS_UNSPEC 127 /* unspecified */
\r
3197 /****f* IBA Base: Types/ib_rmpp_is_flag_set
\r
3199 * ib_rmpp_is_flag_set
\r
3202 * Returns TRUE if the MAD has the given RMPP flag set.
\r
3206 AL_INLINE boolean_t AL_API
\r
3207 ib_rmpp_is_flag_set(
\r
3208 IN const ib_rmpp_mad_t* const p_rmpp_mad,
\r
3209 IN const uint8_t flag )
\r
3211 CL_ASSERT( p_rmpp_mad );
\r
3212 return( (p_rmpp_mad->rmpp_flags & flag) == flag );
\r
3217 * [in] Pointer to a MAD with an RMPP header.
\r
3220 * [in] The RMPP flag being examined.
\r
3223 * Returns TRUE if the MAD has the given RMPP flag set.
\r
3228 * ib_mad_t, ib_rmpp_mad_t
\r
3231 AL_INLINE void AL_API
\r
3232 ib_rmpp_set_resp_time(
\r
3233 IN ib_rmpp_mad_t* const p_rmpp_mad,
\r
3234 IN const uint8_t resp_time )
\r
3236 CL_ASSERT( p_rmpp_mad );
\r
3237 p_rmpp_mad->rmpp_flags |= (resp_time << 3);
\r
3241 AL_INLINE uint8_t AL_API
\r
3242 ib_rmpp_get_resp_time(
\r
3243 IN const ib_rmpp_mad_t* const p_rmpp_mad )
\r
3245 CL_ASSERT( p_rmpp_mad );
\r
3246 return( (uint8_t)(p_rmpp_mad->rmpp_flags >> 3) );
\r
3250 /****d* IBA Base: Constants/IB_SMP_DIRECTION
\r
3252 * IB_SMP_DIRECTION
\r
3255 * The Direction bit for directed route SMPs.
\r
3259 #define IB_SMP_DIRECTION (CL_HTON16(0x8000))
\r
3262 /****d* IBA Base: Constants/IB_SMP_STATUS_MASK
\r
3264 * IB_SMP_STATUS_MASK
\r
3267 * Mask value for extracting status from a directed route SMP.
\r
3271 #define IB_SMP_STATUS_MASK (CL_HTON16(0x7FFF))
\r
3274 /****s* IBA Base: Types/ib_smp_t
\r
3279 * IBA defined SMP. (14.2.1.2)
\r
3283 #define IB_SMP_DATA_SIZE 64
\r
3284 #include <complib/cl_packon.h>
\r
3285 typedef struct _ib_smp
\r
3288 uint8_t mgmt_class;
\r
3289 uint8_t class_ver;
\r
3291 ib_net16_t status;
\r
3293 uint8_t hop_count;
\r
3294 ib_net64_t trans_id;
\r
3295 ib_net16_t attr_id;
\r
3297 ib_net32_t attr_mod;
\r
3299 ib_net16_t dr_slid;
\r
3300 ib_net16_t dr_dlid;
\r
3301 uint32_t resv1[7];
\r
3302 uint8_t data[IB_SMP_DATA_SIZE];
\r
3303 uint8_t initial_path[IB_SUBNET_PATH_HOPS_MAX];
\r
3304 uint8_t return_path[IB_SUBNET_PATH_HOPS_MAX];
\r
3306 } PACK_SUFFIX ib_smp_t;
\r
3307 #include <complib/cl_packoff.h>
\r
3311 * MAD base format.
\r
3314 * Class of operation.
\r
3317 * Version of MAD class-specific format.
\r
3320 * Method to perform, including 'R' bit.
\r
3323 * Status of operation.
\r
3326 * Hop pointer for directed route MADs.
\r
3329 * Hop count for directed route MADs.
\r
3341 * Attribute modifier.
\r
3344 * Management key value.
\r
3347 * Directed route source LID.
\r
3350 * Directed route destination LID.
\r
3353 * Reserved for 64 byte alignment.
\r
3356 * MAD data payload.
\r
3359 * Outbound port list.
\r
3362 * Inbound port list.
\r
3367 /****f* IBA Base: Types/ib_smp_get_status
\r
3369 * ib_smp_get_status
\r
3372 * Returns the SMP status value in network order.
\r
3376 AL_INLINE ib_net16_t AL_API
\r
3377 ib_smp_get_status(
\r
3378 IN const ib_smp_t* const p_smp )
\r
3380 return( (ib_net16_t)(p_smp->status & IB_SMP_STATUS_MASK) );
\r
3385 * [in] Pointer to the SMP packet.
\r
3388 * Returns the SMP status value in network order.
\r
3396 /****f* IBA Base: Types/ib_smp_is_response
\r
3398 * ib_smp_is_response
\r
3401 * Returns TRUE if the SMP is a response MAD, FALSE otherwise.
\r
3405 AL_INLINE boolean_t AL_API
\r
3406 ib_smp_is_response(
\r
3407 IN const ib_smp_t* const p_smp )
\r
3409 return( ib_mad_is_response( (const ib_mad_t*)p_smp ) );
\r
3414 * [in] Pointer to the SMP packet.
\r
3417 * Returns TRUE if the SMP is a response MAD, FALSE otherwise.
\r
3424 /****f* IBA Base: Types/ib_smp_is_d
\r
3429 * Returns TRUE if the SMP 'D' (direction) bit is set.
\r
3433 AL_INLINE boolean_t AL_API
\r
3435 IN const ib_smp_t* const p_smp )
\r
3437 return( (p_smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION );
\r
3442 * [in] Pointer to the SMP packet.
\r
3445 * Returns TRUE if the SMP 'D' (direction) bit is set.
\r
3453 /****f* IBA Base: Types/ib_smp_init_new
\r
3458 * Initializes a MAD common header.
\r
3461 * This is too big for inlining, but leave it here for now
\r
3462 * since there is not yet another convient spot.
\r
3466 AL_INLINE void AL_API
\r
3468 IN ib_smp_t* const p_smp,
\r
3469 IN const uint8_t method,
\r
3470 IN const ib_net64_t trans_id,
\r
3471 IN const ib_net16_t attr_id,
\r
3472 IN const ib_net32_t attr_mod,
\r
3473 IN const uint8_t hop_count,
\r
3474 IN const ib_net64_t m_key,
\r
3475 IN const uint8_t* path_out,
\r
3476 IN const ib_net16_t dr_slid,
\r
3477 IN const ib_net16_t dr_dlid )
\r
3479 CL_ASSERT( p_smp );
\r
3480 CL_ASSERT( hop_count < IB_SUBNET_PATH_HOPS_MAX );
\r
3481 p_smp->base_ver = 1;
\r
3482 p_smp->mgmt_class = IB_MCLASS_SUBN_DIR;
\r
3483 p_smp->class_ver = 1;
\r
3484 p_smp->method = method;
\r
3485 p_smp->status = 0;
\r
3486 p_smp->hop_ptr = 0;
\r
3487 p_smp->hop_count = hop_count;
\r
3488 p_smp->trans_id = trans_id;
\r
3489 p_smp->attr_id = attr_id;
\r
3491 p_smp->attr_mod = attr_mod;
\r
3492 p_smp->m_key = m_key;
\r
3493 p_smp->dr_slid = dr_slid;
\r
3494 p_smp->dr_dlid = dr_dlid;
\r
3496 cl_memclr( p_smp->resv1,
\r
3497 sizeof(p_smp->resv1) +
\r
3498 sizeof(p_smp->data) +
\r
3499 sizeof(p_smp->initial_path) +
\r
3500 sizeof(p_smp->return_path) );
\r
3502 /* copy the path */
\r
3503 cl_memcpy( &p_smp->initial_path, path_out,
\r
3504 sizeof( p_smp->initial_path ) );
\r
3509 * [in] Pointer to the SMP packet.
\r
3512 * [in] Method to perform, including 'R' bit.
\r
3515 * [in] Transaction ID.
\r
3518 * [in] Attribute ID.
\r
3521 * [in] Attribute modifier.
\r
3524 * [in] Number of hops in the path.
\r
3527 * [in] Management key for this SMP.
\r
3530 * [in] Port array for outbound path.
\r
3537 * Payload area is initialized to zero.
\r
3543 /****f* IBA Base: Types/ib_smp_get_payload_ptr
\r
3545 * ib_smp_get_payload_ptr
\r
3548 * Gets a pointer to the SMP payload area.
\r
3552 AL_INLINE void* AL_API
\r
3553 ib_smp_get_payload_ptr(
\r
3554 IN const ib_smp_t* const p_smp )
\r
3556 return( (void*)p_smp->data );
\r
3561 * [in] Pointer to the SMP packet.
\r
3564 * Pointer to SMP payload area.
\r
3572 /****s* IBA Base: Types/ib_node_info_t
\r
3577 * IBA defined NodeInfo. (14.2.5.3)
\r
3581 #include <complib/cl_packon.h>
\r
3582 typedef struct _ib_node_info
\r
3584 uint8_t base_version;
\r
3585 uint8_t class_version;
\r
3586 uint8_t node_type;
\r
3587 uint8_t num_ports;
\r
3588 ib_net64_t sys_guid;
\r
3589 ib_net64_t node_guid;
\r
3590 ib_net64_t port_guid;
\r
3591 ib_net16_t partition_cap;
\r
3592 ib_net16_t device_id;
\r
3593 ib_net32_t revision;
\r
3594 ib_net32_t port_num_vendor_id;
\r
3596 } PACK_SUFFIX ib_node_info_t;
\r
3597 #include <complib/cl_packoff.h>
\r
3599 /****s* IBA Base: Types/ib_sa_mad_t
\r
3604 * IBA defined SA MAD format. (15.2.1)
\r
3608 #define IB_SA_DATA_SIZE 200
\r
3610 #include <complib/cl_packon.h>
\r
3611 typedef struct _ib_sa_mad
\r
3614 uint8_t mgmt_class;
\r
3615 uint8_t class_ver;
\r
3617 ib_net16_t status;
\r
3619 ib_net64_t trans_id;
\r
3620 ib_net16_t attr_id;
\r
3622 ib_net32_t attr_mod;
\r
3624 uint8_t rmpp_version;
\r
3625 uint8_t rmpp_type;
\r
3626 uint8_t rmpp_flags;
\r
3627 uint8_t rmpp_status;
\r
3629 ib_net32_t seg_num;
\r
3630 ib_net32_t paylen_newwin;
\r
3632 ib_net64_t sm_key;
\r
3634 ib_net16_t attr_offset;
\r
3637 ib_net64_t comp_mask;
\r
3639 uint8_t data[IB_SA_DATA_SIZE];
\r
3640 } PACK_SUFFIX ib_sa_mad_t;
\r
3641 #include <complib/cl_packoff.h>
\r
3643 #define IB_SA_MAD_HDR_SIZE (sizeof(ib_sa_mad_t) - IB_SA_DATA_SIZE)
\r
3647 AL_INLINE uint32_t AL_API
\r
3649 IN const ib_net16_t attr_offset )
\r
3651 return( ((uint32_t)cl_ntoh16( attr_offset )) << 3 );
\r
3654 AL_INLINE ib_net16_t AL_API
\r
3655 ib_get_attr_offset(
\r
3656 IN const uint32_t attr_size )
\r
3658 if( attr_size & 0x07 )
\r
3659 return( cl_hton16( (uint16_t)(attr_size >> 3) + 1 ) );
\r
3661 return( cl_hton16( (uint16_t)(attr_size >> 3) ) );
\r
3665 /****f* IBA Base: Types/ib_sa_mad_get_payload_ptr
\r
3667 * ib_sa_mad_get_payload_ptr
\r
3670 * Gets a pointer to the SA MAD's payload area.
\r
3674 AL_INLINE void* AL_API
\r
3675 ib_sa_mad_get_payload_ptr(
\r
3676 IN const ib_sa_mad_t* const p_sa_mad )
\r
3678 return( (void*)p_sa_mad->data );
\r
3683 * [in] Pointer to the SA MAD packet.
\r
3686 * Pointer to SA MAD payload area.
\r
3694 #define IB_NODE_INFO_PORT_NUM_MASK (CL_NTOH32(0xFF000000))
\r
3695 #define IB_NODE_INFO_VEND_ID_MASK (CL_NTOH32(0x00FFFFFF))
\r
3697 #define IB_NODE_INFO_PORT_NUM_SHIFT 0
\r
3699 #define IB_NODE_INFO_PORT_NUM_SHIFT 24
\r
3702 /****f* IBA Base: Types/ib_node_info_get_local_port_num
\r
3704 * ib_node_info_get_local_port_num
\r
3707 * Gets a the local port number from the NodeInfo attribute.
\r
3711 AL_INLINE uint8_t AL_API
\r
3712 ib_node_info_get_local_port_num(
\r
3713 IN const ib_node_info_t* const p_ni )
\r
3715 return( (uint8_t)(( p_ni->port_num_vendor_id &
\r
3716 IB_NODE_INFO_PORT_NUM_MASK )
\r
3717 >> IB_NODE_INFO_PORT_NUM_SHIFT ));
\r
3722 * [in] Pointer to a NodeInfo attribute.
\r
3725 * Local port number that returned the attribute.
\r
3732 /****f* IBA Base: Types/ib_node_info_get_vendor_id
\r
3734 * ib_node_info_get_vendor_id
\r
3737 * Gets the VendorID from the NodeInfo attribute.
\r
3741 AL_INLINE ib_net32_t AL_API
\r