4. InfiniBand Architecture (IBA) Definitions

The majority of these definitions apply only to InfiniBand and are not applicable to general RDMA devices. However, a few are used as part of the kernel API for all device types (eg NODE_CA).

For ease of use it is recommended to import this module as:

import rdma.IBA as IBA;

The module includes Python versions of the IBA defined binary structure. The Python version is unpacked, accessing the IBA defined member names is simply done by acessing the property name. The tables in the reference indicate the valid member names, the bit position start_bit:end_bit (bit count) and a description of the Python type used for the attribute.

The class attributes starting with MAD_ are metadata used by the RPC functions in rdma.madtransactor.MADTransactor to generate the correct attribute ID, and validate that the RPC is valid.

All classes in this section are derived from rdma.binstruct.BinStruct and contain implementations of those methods. Use the pack_into() and unpack_from() methods to produce the binary layout of the structure.

Constructors will also accept a bytes or another BinStruct instance:

data = bytes('\0'*IBA.SMPFormat.MAD_LENGTH);
hdr = IBA.MADHeader(data);
sfmt = IBA.SMPFormat(hdr);
dfmt = IBA.SMPFormatDirected(sfmt);

When referring to another BinStruct instance the new instance is unpacked using the original byte buffer that the first instance was unpacked from. Changing the attributes has no effect.

Note

This is based on Python’s struct module, which requires a bytes object for unpack and a bytearray for packing. This conversion is generally handled transparently..

Structures named *Format are generally a full MAD, and need to be ‘casted’ to read the data:

fmt = IBA.SMPFormat(data);
pinf = IBA.SMPPortInfo(fmt.data);

4.1. Structure Pretty Printer

All of the BinStruct classes feature an automatic pretty printer for the class content. The pretty printer understands some of the structure of the data and properly pretty prints things like the data member of a *Format object. Here is the dump pretty print output for a SAFormat containing a SAPathRecord:

SAFormat
  0 01030281 baseVersion=1,mgmtClass=3,classVersion=2,method=129
  4 00000000 status=0,classSpecific=0
  8 000028D6 transactionID=44902842023172
 12 C1F2BD04
 16 00350000 attributeID=53,reserved_144=0
 20 00000000 attributeModifier=0
 24 00000000 RMPPVersion=0,RMPPType=0,RRespTime=0,RMPPFlags=0,RMPPStatus=0
 28 00000000 data1=0
 32 00000000 data2=0
 36 00000000 SMKey=0
 40 00000000
 44 00080000 attributeOffset=8,reserved_368=0
 48 00000000 componentMask=2072
 52 00000818
   + data SAPathRecord
 56 00000000 serviceID=0
 60 00000000
 64 FE800000 DGID=GID('fe80::2:c903:0:1491')
 68 00000000
 72 0002C903
 76 00001491
 80 FE800000 SGID=GID('fe80::2:c903:0:1491')
 84 00000000
 88 0002C903
 92 00001491
 96 00050005 DLID=5,SLID=5
100 00000000 rawTraffic=0,reserved_353=0,flowLabel=0,hopLimit=0
104 0080FFFF TClass=0,reversible=1,numbPath=0,PKey=65535
108 00008483 QOSClass=0,SL=0,MTUSelector=2,MTU=4,rateSelector=2,rate=3
112 80000000 packetLifeTimeSelector=2,packetLifeTime=0,preference=0,reserved_464=0
116 00000000 reserved_480=0

Notice that the use of SAPathRecord for the payload is automatically deduced based on the value of attributeID. The printer shows the decimal byte offset and raw hex bytes in the left columns and shows a decode of the attribute names corresponding to that byte position in the right hand area.

The pretty printer is invoked by calling the printer() method of the structure to print. This example shows how to produce an arbitary MAD printer:

IBA.get_fmt_payload(buf[1],buf[2],0)[0](buf).printer(sys.stdout);

This is the dotted pretty print format:

SAFormat
baseVersion.....................1
mgmtClass.......................3
classVersion....................2
method..........................146
status..........................0
classSpecific...................0
transactionID...................44950782152048
attributeID.....................53
reserved_144....................0
attributeModifier...............0
RMPPVersion.....................1
RMPPType........................1
RRespTime.......................0
RMPPFlags.......................7
RMPPStatus......................0
data1...........................1
data2...........................84
SMKey...........................0
attributeOffset.................8
reserved_368....................0
componentMask...................12
data.serviceID..................0
data.DGID.......................GID('fe80::2:c903:0:1491')
data.SGID.......................GID('fe80::2:c903:0:1491')
data.DLID.......................5
data.SLID.......................5
data.rawTraffic.................0
data.reserved_353...............0
data.flowLabel..................0
data.hopLimit...................0
data.TClass.....................0
data.reversible.................1
data.numbPath...................0
data.PKey.......................65535
data.QOSClass...................0
data.SL.........................0
data.MTUSelector................2
data.MTU........................4
data.rateSelector...............2
data.rate.......................3
data.packetLifeTimeSelector.....2
data.packetLifeTime.............0
data.preference.................0
data.reserved_464...............0
data.reserved_480...............0

4.2. Component Mask Helper

Subnet Administration Get RPCs have an annoying ComponentMask field which is a bitfield indicating which subfields are relevant. Computing the correct value for this can be quite difficult. The RPC generator computes the proper values for all RPCs and stores them in the class variable COMPONENT_MASK. The helper class rdma.IBA.ComponentMask uses this information to automate computing the ComponentMask value. For example:

obj = IBA.SAPathRecord()
cm = IBA.ComponentMask(obj);
cm.DGID = IBA.GID("::1");
cm.DLID = 2;
assert(cm.component_mask == 20)

Passing a ComponentMask into the SubnAdm* RPC methods will automatically correctly set the ComponentMask value of the MAD.

4.3. Word about Versions

The library has some limited support for versioning the MAD Formats, but it is not yet fully developed. The basic notion is that each version of a management class will have a separate Format class and separate attribute classes. The attribute class will be enhanced to contain the lowest format version it applies to and the generic layer will instantiate the correct Format class.

Generally the message is that client programmers should ignore versions, and the library will forever process todays current version with the current code.

Server side is a bit different, as the incoming MAD will be decoded according to the version capability of the library, so some defensive code will be required there.

4.4. rdma.binstruct IBA Structure Helpers

class rdma.binstruct.BinFormat(buf=None, offset=0)

Base class for all *Format type packet layouts.

buf is either an instance of BinStruct or a bytes representing the data to unpack into the instance. offset is the starting offset in buf for unpacking. If no arguments are given then all attributes are set to 0.

describe()

Return a short description of the RPC described by this format.

class rdma.binstruct.BinStruct(buf=None, offset=0)

Base class for all binary structure objects (MADs, etc). When pickled this class re-packs the structure and stores it as a bytes value. This reduces the storage overhead from pickling and allows the library to upgrade to different internal storage methods in future.

buf is either an instance of BinStruct or a bytes representing the data to unpack into the instance. offset is the starting offset in buf for unpacking. If no arguments are given then all attributes are set to 0.

pack_into(buf, offset=0)

Overridden in derived classes. Compact this instance into the bytearray buf starting at offset.

printer(F, offset=0, header=True, format='dump', **kwargs)

Pretty print the structure. F is the output file, offset is added to all printed offsets and header causes the display of the class type on the first line. format may be dump or dotted.

unpack_from(buf, offset=0)

Overridden in derived classes. Expand the bytes buf starting at offset into this instance.

zero()

Overridden in derived classes. Set this instance back to the initial all zeros value.

rdma.binstruct.pack_array8(buf, offset, mlen, count, inp)
rdma.binstruct.unpack_array8(buf, offset, mlen, count, inp)

Starting at offset in buf assign count entries each mlen bits wide to indexes in inp.

4.5. rdma.IBA_describe Convert values to descriptive strings

rdma.IBA_describe.description(value)

Decodes a fixed length string from a IBA MAD (such as rdma.IBA.SMPNodeDescription) These strings are considered to be UTF-8 and null padding is removed.

rdma.IBA_describe.dstr(value, quotes=False)

Convert to a display string. This escapes values like repr but returns with no extra adornment like quotes or a starting u. The intent of this function is to provide a safe printable that has undesired values escaped. FIXME: This should not be so aggressive with repr, that throws away the unicode as well.

Decode a Port Info linkSpeedActive value into a string.

Decode a Port Info port state value into a string.

Convert a link with constant into an integer number of lanes.

rdma.IBA_describe.mad_status(status)

Decode a MAD status into a string.

rdma.IBA_describe.node_type(value)

Decode a Node Type value into a string.

Decode a Port Info port physical state value into a string.

rdma.IBA_describe.rate(value)

Return the rate (eg a rdma.IBA.SAPathRecord.rate) value as an integer bits/sec.

rdma.IBA_describe.struct_dotted(F, s, name_prefix='', dump_list=False, skip_reserved=True, column=33, colon=False, name_map=None)

This tries to emulate the libib structure print format. Members are printed one per line with values aligned on column 32.

rdma.IBA_describe.struct_dump(F, s, offset=0, name_prefix='')

Pretty print the structure s. F is the output file, offset is added to all printed offsets and name_prefix is used to prefix names when descending.

rdma.IBA_describe.to_rate(value)

Convert a rate in integer bits/sec to an IBA rate (eg a rdma.IBA.SAPathRecord.rate). The lowest matching rate constant is returned.

4.6. rdma.IBA InfiniBand Architecture (IBA) definitions

class rdma.IBA.ComponentMask(obj)

Bases: object

This is a wrapper class for managing IBA structures with a component mask. Attribute access is overridden and tracked by mapping the attribute name to the component mask bit index to build up a component mask value as the class is used.

obj is wrappered

component_mask

The computed component_mask

payload

The original object that is wrappered.

touch(name)

Include the component mask value name in the calculation. Normally this happens automatically as attributes are accessed.

Raises ValueError:
 If name is not a valid component name
class rdma.IBA.GID(s=None, raw=False, prefix=None, guid=None)

Bases: str

Stores a GID in internal format. In string format a GID is formatted like an IPv6 addres eg fe80::2:c903:0:1491. Externally the class looks like a string that formats to the GID. pack_into() is used to store the GID in network format. Instances are immutable and can be hashed.

Convert from a string to our GID representation. s is the input string and if raw is True then s must be a length 16 bytes.

If s is None then the ZERO_GID is instantiated. Invoking as GID(prefix=PREFIX,guid=GUID) will construct a GID by concatenating the PREFIX to GUID. GUID should be a rdma.IBA.GUID while PREFIX can be 8 bytes, an integer or a rdma.IBA.GID.

Raises ValueError:
 If the string can not be parsed.
guid()

Return the GUID portion of the GID.

pack_into(buf, offset=0)

Pack the value into a byte array.

class rdma.IBA.GUID(s=None, raw=False)

Bases: str

Stores a GUID in internal format. In string format a GUID is formatted as 0002:c903:0000:1491. Externally the class looks like a string that formats to the GUID. pack_into() is used to store the GUID in network format. Instances are immutable and can be hashed.

Convert from a string to our GUID representation. s is the input string and if raw is True then s must be a length 8 bytes.

If s is None then the ZERO_GUID is instantiated. s can also be an integer.

Raises ValueError:
 If the string can not be parsed.
pack_into(buf, offset=0)

Pack the value into a byte array.

rdma.IBA.ZERO_GID

All zeros GID value.

rdma.IBA.ZERO_GUID

All zeros GUID value.

rdma.IBA.conv_ep_addr(s)

Convert the string s into a end port address. s can be a GID, port GUID or LID. The result of this function is a GID or int.

Raises ValueError:
 If the string can not be parsed.
rdma.IBA.conv_lid(s, multicast=False)

Converts the string s into an integer assuming it is a LID. If multicast is False then the LID must be a valid unicast LID. If multicast is True then the LID must be a valid multicast LID. If multicast is None then any 16 bit value is accepted.

Raises ValueError:
 If the string can not be parsed.
rdma.IBA.lid_lmc_range(lid, lmc)

Return all the LIDs described by lid and lmc. Similar to range

rdma.IBA.to_timer(sec)

Take a timeout value in float seconds and convert it into the IBA format that satisfies sec <= 4.096 us * 2**ret

4.6.1. Node Type Constants

rdma.IBA.NODE_CA 0x1 1 = (1 << 0)
rdma.IBA.NODE_SWITCH 0x2 2 = (1 << 1)
rdma.IBA.NODE_ROUTER 0x3 3

4.6.2. General Constants

rdma.IBA.MAX_PORTS 0xfe 254
rdma.IBA.INVALID_PORT 0xff 255
rdma.IBA.MAX_PKEYS 0x10000 65536 = (1 << 16)
rdma.IBA.MAX_GUIDS 0x100 256 = (1 << 8)
rdma.IBA.MAX_PKT_WORDS 0x41f 1055

4.6.3. LID Constants

rdma.IBA.LID_RESERVED 0x0 0
rdma.IBA.LID_MULTICAST 0xc000 49152
rdma.IBA.LID_PERMISSIVE 0xffff 65535
rdma.IBA.LID_COUNT_UNICAST 0xc000 49152
rdma.IBA.LID_COUNT_MULTICAST 0x3fff 16383

4.6.4. Partition Key Constants

rdma.IBA.PKEY_DEFAULT 0xffff 65535
rdma.IBA.PKEY_PARTIAL_DEFAULT 0x7fff 32767
rdma.IBA.PKEY_INVALID 0x0 0

4.6.5. Well known QKEY Constants

rdma.IBA.IB_DEFAULT_QP0_QKEY 0x0 0
rdma.IBA.IB_DEFAULT_QP1_QKEY 0x80010000 2147549184

4.6.6. LRH LNH Header bits

rdma.IBA.LNH_GRH 0x1 1 = (1 << 0)
rdma.IBA.LNH_IBA 0x2 2 = (1 << 1)

4.6.7. GID Constants

rdma.IBA.GID_DEFAULT_PREFIX 0xfe80000000000000 18338657682652659712L

4.6.8. PortInfo MTU Constants

rdma.IBA.MTU_256 0x1 1 = (1 << 0)
rdma.IBA.MTU_512 0x2 2 = (1 << 1)
rdma.IBA.MTU_1024 0x3 3
rdma.IBA.MTU_2048 0x4 4 = (1 << 2)
rdma.IBA.MTU_4096 0x5 5

4.6.11. PathRecord rate constants

rdma.IBA.PR_RATE_2Gb5 0x2 2 = (1 << 1)
rdma.IBA.PR_RATE_10Gb0 0x3 3
rdma.IBA.PR_RATE_30Gb0 0x4 4 = (1 << 2)
rdma.IBA.PR_RATE_5Gb0 0x5 5
rdma.IBA.PR_RATE_20Gb0 0x6 6
rdma.IBA.PR_RATE_40Gb0 0x7 7
rdma.IBA.PR_RATE_60Gb0 0x8 8 = (1 << 3)
rdma.IBA.PR_RATE_80Gb0 0x9 9
rdma.IBA.PR_RATE_120Gb0 0xa 10

4.6.12. PortInfo Port State Constants

rdma.IBA.PORT_STATE_DOWN 0x1 1 = (1 << 0)
rdma.IBA.PORT_STATE_INIT 0x2 2 = (1 << 1)
rdma.IBA.PORT_STATE_ARMED 0x3 3
rdma.IBA.PORT_STATE_ACTIVE 0x4 4 = (1 << 2)

4.6.13. PortInfo Physical Port State Constants

rdma.IBA.PHYS_PORT_STATE_SLEEP 0x1 1 = (1 << 0)
rdma.IBA.PHYS_PORT_STATE_POLLING 0x2 2 = (1 << 1)
rdma.IBA.PHYS_PORT_STATE_DISABLED 0x3 3
rdma.IBA.PHYS_PORT_STATE_CFG_TRAIN 0x4 4 = (1 << 2)
rdma.IBA.PHYS_PORT_STATE_LINK_UP 0x5 5
rdma.IBA.PHYS_PORT_STATE_LINK_ERR_RECOVERY 0x6 6
rdma.IBA.PHYS_PORT_STATE_PHY_TEST 0x7 7

4.6.14. MAD RPC Constants

rdma.IBA.MAD_METHOD_GET 0x1 1 = (1 << 0)
rdma.IBA.MAD_METHOD_SET 0x2 2 = (1 << 1)
rdma.IBA.MAD_METHOD_SEND 0x3 3
rdma.IBA.MAD_METHOD_GET_RESP 0x81 129
rdma.IBA.MAD_METHOD_TRAP 0x5 5
rdma.IBA.MAD_METHOD_TRAP_REPRESS 0x7 7
rdma.IBA.MAD_METHOD_GET_TABLE 0x12 18
rdma.IBA.MAD_METHOD_GET_TRACE_TABLE 0x13 19
rdma.IBA.MAD_METHOD_GET_MULTI 0x14 20
rdma.IBA.MAD_METHOD_DELETE 0x15 21
rdma.IBA.MAD_METHOD_RESPONSE 0x80 128 = (1 << 7)
rdma.IBA.MAD_BASE_VERSION 0x1 1 = (1 << 0)
rdma.IBA.MAD_NOTICE_FATAL 0x0 0
rdma.IBA.MAD_NOTICE_URGENT 0x1 1 = (1 << 0)
rdma.IBA.MAD_NOTICE_SECURITY 0x2 2 = (1 << 1)
rdma.IBA.MAD_NOTICE_SM 0x3 3
rdma.IBA.MAD_NOTICE_INFO 0x4 4 = (1 << 2)

4.6.15. MAD Response Status Constants

rdma.IBA.MAD_STATUS_BUSY 0x1 1 = (1 << 0)
rdma.IBA.MAD_STATUS_REDIRECT 0x2 2 = (1 << 1)
rdma.IBA.MAD_STATUS_BAD_VERSION 0x4 4 = (1 << 2)
rdma.IBA.MAD_STATUS_UNSUP_METHOD 0x8 8 = (1 << 3)
rdma.IBA.MAD_STATUS_UNSUP_METHOD_ATTR_COMBO 0xc 12
rdma.IBA.MAD_STATUS_INVALID_ATTR_OR_MODIFIER 0x1c 28
rdma.IBA.MAD_STATUS_DIRECTED_RESPONSE 0x8000 32768 = (1 << 15)

4.6.16. SUBNET_ADMIN Class Specific Status Codes

rdma.IBA.MAD_STATUS_SA_NO_RESOURCE 0x1 1 = (1 << 0)
rdma.IBA.MAD_STATUS_SA_REQ_INVALID 0x2 2 = (1 << 1)
rdma.IBA.MAD_STATUS_SA_NO_RECORDS 0x3 3
rdma.IBA.MAD_STATUS_SA_TOO_MANY_RECORDS 0x4 4 = (1 << 2)
rdma.IBA.MAD_STATUS_SA_INVALID_GID 0x5 5
rdma.IBA.MAD_STATUS_SA_INSUFFICIENT_COMPONENTS 0x6 6
rdma.IBA.MAD_STATUS_SA_DENIED 0x7 7
rdma.IBA.MAD_STATUS_CLASS_SHIFT 0x8 8 = (1 << 3)
rdma.IBA.MAD_STATUS_CLASS_MASK 0x7f 127

4.6.17. MAD Class Constants

rdma.IBA.MAD_SUBNET 0x1 1 = (1 << 0)
rdma.IBA.MAD_SUBNET_DIRECTED 0x81 129
rdma.IBA.MAD_SUBNET_ADMIN 0x3 3
rdma.IBA.MAD_COMMUNICATIONS 0x7 7
rdma.IBA.MAD_PERFORMANCE 0x4 4 = (1 << 2)
rdma.IBA.MAD_DEVICE 0x6 6
rdma.IBA.MAD_SNMP 0x8 8 = (1 << 3)

4.6.18. RMPP Constants

rdma.IBA.RMPP_ACTIVE 0x1 1 = (1 << 0)
rdma.IBA.RMPP_FIRST 0x2 2 = (1 << 1)
rdma.IBA.RMPP_LAST 0x4 4 = (1 << 2)

4.6.19. ClassPortInfo capabilityMask Constants

rdma.IBA.generatesTraps 0x1 1 = (1 << 0)
rdma.IBA.implementsNotice 0x2 2 = (1 << 1)

4.6.20. PMA ClassPortInfo capabilityMask Constants

rdma.IBA.allPortSelect 0x100 256 = (1 << 8)
rdma.IBA.portCountersXmitWaitSupported 0x1000 4096 = (1 << 12)

4.6.21. PortInfo capabilityMask Constants

rdma.IBA.isSM 0x2 2 = (1 << 1)
rdma.IBA.isNoticeSupported 0x4 4 = (1 << 2)
rdma.IBA.isTrapSupported 0x8 8 = (1 << 3)
rdma.IBA.isAutomaticMigrationSupported 0x20 32 = (1 << 5)
rdma.IBA.isSLMappingSupported 0x40 64 = (1 << 6)
rdma.IBA.isMKeyNVRAM 0x80 128 = (1 << 7)
rdma.IBA.isPKeyNVRAM 0x100 256 = (1 << 8)
rdma.IBA.isLEDInfoSupported 0x200 512 = (1 << 9)
rdma.IBA.isSMdisabled 0x400 1024 = (1 << 10)
rdma.IBA.isSystemImageGUIDSupported 0x800 2048 = (1 << 11)
rdma.IBA.isPKeySwitchExternalPortTrapSupported 0x1000 4096 = (1 << 12)
rdma.IBA.isCommunicationManagementSupported 0x10000 65536 = (1 << 16)
rdma.IBA.isSNMPTunnelingSupported 0x20000 131072 = (1 << 17)
rdma.IBA.isReinitSupported 0x40000 262144 = (1 << 18)
rdma.IBA.isDeviceManagementSupported 0x80000 524288 = (1 << 19)
rdma.IBA.isVendorClassSupported 0x100000 1048576 = (1 << 20)
rdma.IBA.isDRNoticeSupported 0x200000 2097152 = (1 << 21)
rdma.IBA.isCapabilityMaskNoticeSupported 0x400000 4194304 = (1 << 22)
rdma.IBA.isBootManagementSupported 0x800000 8388608 = (1 << 23)
rdma.IBA.isLinkRoundTripLatencySupported 0x1000000 16777216 = (1 << 24)
rdma.IBA.isClientReregistrationSupported 0x2000000 33554432 = (1 << 25)
rdma.IBA.isOtherLocalChangesNoticeSupported 0x4000000 67108864 = (1 << 26)
rdma.IBA.isLinkSpeedWidthPairsTableSupported 0x8000000 134217728 = (1 << 27)

4.7. rmda.IBA Binary Structures

4.7.1. Communication Management (12)

class rdma.IBA.CMAPR

Alternate Path Response (section 12.8.2)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x1a
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('additionalInfoLength',8,1), ('APstatus',8,1), ('reserved_80',16,1), ('additionalInfo',576,1), ('privateData',1184,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
additionalInfoLength 8:9 (8) int
APstatus 9:10 (8) int
reserved_80 10:12 (16) int
additionalInfo 12:84 (576) bytearray (72)
privateData 84:232 (1184) bytearray (148)
class rdma.IBA.CMDREP

Reply To Request For Communication Release (section 12.6.11)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x16
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('privateData',1792,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
privateData 8:232 (1792) bytearray (224)
class rdma.IBA.CMDREQ

Request For Communication Release (Disconnection Request) (section 12.6.10)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x15
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('remoteQPN',24,1), ('reserved_88',8,1), ('privateData',1760,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
remoteQPN 8:11 (24) int
reserved_88 11:12 (8) int
privateData 12:232 (1760) bytearray (220)
class rdma.IBA.CMLAP

Load Alternate Path (section 12.8.1)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x19
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('QKey',32,1), ('RQPN',24,1), ('RCMTimeout',5,1), ('reserved_125',3,1), ('reserved_128',32,1), ('altSLID',16,1), ('altDLID',16,1), ('altSGID',128,1), ('altDGID',128,1), ('altFlowLabel',20,1), ('reserved_468',4,1), ('altTClass',8,1), ('altHopLimit',8,1), ('reserved_488',2,1), ('altIPD',6,1), ('altSL',4,1), ('altSubnetLocal',1,1), ('reserved_501',3,1), ('altLocalACKTimeout',5,1), ('reserved_509',3,1), ('privateData',1344,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
QKey 8:12 (32) int
RQPN 12:15 (24) int
RCMTimeout 15:15[5] (5) int
reserved_125 15[5]:16 (3) int
reserved_128 16:20 (32) int
altSLID 20:22 (16) int
altDLID 22:24 (16) int
altSGID 24:40 (128) GID
altDGID 40:56 (128) GID
altFlowLabel 56:58[4] (20) int
reserved_468 58[4]:59 (4) int
altTClass 59:60 (8) int
altHopLimit 60:61 (8) int
reserved_488 61:61[2] (2) int
altIPD 61[2]:62 (6) int
altSL 62:62[4] (4) int
altSubnetLocal 62[4]:62[5] (1) int
reserved_501 62[5]:63 (3) int
altLocalACKTimeout 63:63[5] (5) int
reserved_509 63[5]:64 (3) int
privateData 64:232 (1344) bytearray (168)
class rdma.IBA.CMMRA

Message Receipt Acknowledgement (section 12.6.6)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x11
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('messageMRAed',2,1), ('reserved_66',6,1), ('serviceTimeout',5,1), ('reserved_77',3,1), ('reserved_80',16,1), ('privateData',1760,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
messageMRAed 8:8[2] (2) int
reserved_66 8[2]:9 (6) int
serviceTimeout 9:9[5] (5) int
reserved_77 9[5]:10 (3) int
reserved_80 10:12 (16) int
privateData 12:232 (1760) bytearray (220)
class rdma.IBA.CMPath

Path Information (section 12.6)

MAD_LENGTH = 44
MEMBERS = [('SLID',16,1), ('DLID',16,1), ('SGID',128,1), ('DGID',128,1), ('flowLabel',20,1), ('reserved_308',4,1), ('reserved_312',2,1), ('PD',6,1), ('TClass',8,1), ('hopLimit',8,1), ('SL',4,1), ('subnetLocal',1,1), ('reserved_341',3,1), ('localACKTimeout',5,1), ('reserved_349',3,1)]
Member Position Type
SLID 0:2 (16) int
DLID 2:4 (16) int
SGID 4:20 (128) GID
DGID 20:36 (128) GID
flowLabel 36:38[4] (20) int
reserved_308 38[4]:39 (4) int
reserved_312 39:39[2] (2) int
PD 39[2]:40 (6) int
TClass 40:41 (8) int
hopLimit 41:42 (8) int
SL 42:42[4] (4) int
subnetLocal 42[4]:42[5] (1) int
reserved_341 42[5]:43 (3) int
localACKTimeout 43:43[5] (5) int
reserved_349 43[5]:44 (3) int
class rdma.IBA.CMREJ

Reject (section 12.6.7)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x12
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('messageRejected',2,1), ('reserved_66',6,1), ('rejectInfoLength',7,1), ('reserved_79',1,1), ('reason',16,1), ('ARI',576,1), ('privateData',1184,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
messageRejected 8:8[2] (2) int
reserved_66 8[2]:9 (6) int
rejectInfoLength 9:9[7] (7) int
reserved_79 9[7]:10 (1) int
reason 10:12 (16) int
ARI 12:84 (576) bytearray (72)
privateData 84:232 (1184) bytearray (148)
class rdma.IBA.CMREP

Reply To Request For Communication (section 12.6.8)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x13
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('localQKey',32,1), ('localQPN',24,1), ('reserved_120',8,1), ('localEEContext',24,1), ('reserved_152',8,1), ('startingPSN',24,1), ('reserved_184',8,1), ('responderResources',8,1), ('initiatorDepth',8,1), ('targetACKDelay',5,1), ('failoverAccepted',2,1), ('flowControl',1,1), ('RNRRetryCount',3,1), ('reserved_219',5,1), ('LGUID',64,1), ('privateData',1568,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
localQKey 8:12 (32) int
localQPN 12:15 (24) int
reserved_120 15:16 (8) int
localEEContext 16:19 (24) int
reserved_152 19:20 (8) int
startingPSN 20:23 (24) int
reserved_184 23:24 (8) int
responderResources 24:25 (8) int
initiatorDepth 25:26 (8) int
targetACKDelay 26:26[5] (5) int
failoverAccepted 26[5]:26[7] (2) int
flowControl 26[7]:27 (1) int
RNRRetryCount 27:27[3] (3) int
reserved_219 27[3]:28 (5) int
LGUID 28:36 (64) GUID
privateData 36:232 (1568) bytearray (196)
class rdma.IBA.CMREQ

Request for Communication (section 12.6.5)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x10
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('reserved_32',32,1), ('serviceID',64,1), ('LGUID',64,1), ('localCMQKey',32,1), ('localQKey',32,1), ('localQPN',24,1), ('responderResources',8,1), ('localEECN',24,1), ('initiatorDepth',8,1), ('remoteEECN',24,1), ('remoteResponseTimeout',5,1), ('transportService',2,1), ('flowControl',1,1), ('startingPSN',24,1), ('localResponseTimeout',5,1), ('retryCount',3,1), ('PKey',16,1), ('pathPacketMTU',4,1), ('RDCExists',1,1), ('RNRRetryCount',3,1), ('maxCMRetries',4,1), ('reserved_412',4,1), ('primaryPath',352,1), ('alternatePath',352,1), ('privateData',736,1)]
Member Position Type
LCID 0:4 (32) int
reserved_32 4:8 (32) int
serviceID 8:16 (64) int
LGUID 16:24 (64) GUID
localCMQKey 24:28 (32) int
localQKey 28:32 (32) int
localQPN 32:35 (24) int
responderResources 35:36 (8) int
localEECN 36:39 (24) int
initiatorDepth 39:40 (8) int
remoteEECN 40:43 (24) int
remoteResponseTimeout 43:43[5] (5) int
transportService 43[5]:43[7] (2) int
flowControl 43[7]:44 (1) int
startingPSN 44:47 (24) int
localResponseTimeout 47:47[5] (5) int
retryCount 47[5]:48 (3) int
PKey 48:50 (16) int
pathPacketMTU 50:50[4] (4) int
RDCExists 50[4]:50[5] (1) int
RNRRetryCount 50[5]:51 (3) int
maxCMRetries 51:51[4] (4) int
reserved_412 51[4]:52 (4) int
primaryPath 52:96 (352) CMPath
alternatePath 96:140 (352) CMPath
privateData 140:232 (736) bytearray (92)
class rdma.IBA.CMRTU

Ready To Use (section 12.6.9)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x14
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('LCID',32,1), ('RCID',32,1), ('privateData',1792,1)]
Member Position Type
LCID 0:4 (32) int
RCID 4:8 (32) int
privateData 8:232 (1792) bytearray (224)
class rdma.IBA.CMSIDR_REP

Service ID Resolution Response (section 12.11.2)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x18
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('requestID',32,1), ('QPN',24,1), ('status',8,1), ('serviceID',64,1), ('QKey',32,1), ('classPortinfo',576,1), ('privateData',1120,1)]
Member Position Type
requestID 0:4 (32) int
QPN 4:7 (24) int
status 7:8 (8) int
serviceID 8:16 (64) int
QKey 16:20 (32) int
classPortinfo 20:92 (576) MADClassPortInfo
privateData 92:232 (1120) bytearray (140)
class rdma.IBA.CMSIDR_REQ

Service ID Resolution Request (section 12.11.1)

MAD_LENGTH = 232
MAD_ATTRIBUTE_ID = 0x17
MAD_COMMMGTSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('requestID',32,1), ('reserved_32',32,1), ('serviceID',64,1), ('privateData',1728,1)]
Member Position Type
requestID 0:4 (32) int
reserved_32 4:8 (32) int
serviceID 8:16 (64) int
privateData 16:232 (1728) bytearray (216)

4.7.2. Generic MAD (13.4)

class rdma.IBA.MADClassPortInfo

Class Port Info (section 13.4.8.1)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x1
MAD_BMGET = 0x1 # MAD_METHOD_GET
MAD_BMSET = 0x2 # MAD_METHOD_SET
MAD_COMMMGTGET = 0x1 # MAD_METHOD_GET
MAD_COMMMGTSET = 0x2 # MAD_METHOD_SET
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MAD_DEVMGTSET = 0x2 # MAD_METHOD_SET
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_SNMPGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
COMPONENT_MASK = {'baseVersion':0, 'classVersion':1, 'capabilityMask':2, 'capabilityMask2':3, 'respTimeValue':4, 'redirectGID':5, 'redirectTC':6, 'redirectSL':7, 'redirectFL':8, 'redirectLID':9, 'redirectPKey':10, 'reserved_256':11, 'redirectQP':12, 'redirectQKey':13, 'trapGID':14, 'trapTC':15, 'trapSL':16, 'trapFL':17, 'trapLID':18, 'trapPKey':19, 'trapHL':20, 'trapQP':21, 'trapQKey':22}
MEMBERS = [('baseVersion',8,1), ('classVersion',8,1), ('capabilityMask',16,1), ('capabilityMask2',27,1), ('respTimeValue',5,1), ('redirectGID',128,1), ('redirectTC',8,1), ('redirectSL',4,1), ('redirectFL',20,1), ('redirectLID',16,1), ('redirectPKey',16,1), ('reserved_256',8,1), ('redirectQP',24,1), ('redirectQKey',32,1), ('trapGID',128,1), ('trapTC',8,1), ('trapSL',4,1), ('trapFL',20,1), ('trapLID',16,1), ('trapPKey',16,1), ('trapHL',8,1), ('trapQP',24,1), ('trapQKey',32,1)]
Member Position Type
baseVersion 0:1 (8) int
classVersion 1:2 (8) int
capabilityMask 2:4 (16) int
capabilityMask2 4:7[3] (27) int
respTimeValue 7[3]:8 (5) int
redirectGID 8:24 (128) GID
redirectTC 24:25 (8) int
redirectSL 25:25[4] (4) int
redirectFL 25[4]:28 (20) int
redirectLID 28:30 (16) int
redirectPKey 30:32 (16) int
reserved_256 32:33 (8) int
redirectQP 33:36 (24) int
redirectQKey 36:40 (32) int
trapGID 40:56 (128) GID
trapTC 56:57 (8) int
trapSL 57:57[4] (4) int
trapFL 57[4]:60 (20) int
trapLID 60:62 (16) int
trapPKey 62:64 (16) int
trapHL 64:65 (8) int
trapQP 65:68 (24) int
trapQKey 68:72 (32) int
class rdma.IBA.MADHeader

MAD Base Header (section 13.4.3)

MAD_LENGTH = 24
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
class rdma.IBA.MADHeaderDirected

MAD Base Header Directed (section 13.4.3)

MAD_LENGTH = 24
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('D',1,1), ('status',15,1), ('hopPointer',8,1), ('hopCount',8,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
D 4:4[1] (1) int
status 4[1]:6 (15) int
hopPointer 6:7 (8) int
hopCount 7:8 (8) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
class rdma.IBA.MADInformInfo

InformInfo (section 13.4.8.3)

MAD_LENGTH = 36
MAD_ATTRIBUTE_ID = 0x3
MAD_SUBNADMSET = 0x2 # MAD_METHOD_SET
COMPONENT_MASK = {'GID':0, 'LIDRangeBegin':1, 'LIDRangeEnd':2, 'reserved_160':3, 'isGeneric':4, 'subscribe':5, 'type':6, 'trapNumber':7, 'QPN':8, 'reserved_248':9, 'respTimeValue':10, 'reserved_256':11, 'producerType':12}
MEMBERS = [('GID',128,1), ('LIDRangeBegin',16,1), ('LIDRangeEnd',16,1), ('reserved_160',16,1), ('isGeneric',8,1), ('subscribe',8,1), ('type',16,1), ('trapNumber',16,1), ('QPN',24,1), ('reserved_248',3,1), ('respTimeValue',5,1), ('reserved_256',8,1), ('producerType',24,1)]
Member Position Type
GID 0:16 (128) GID
LIDRangeBegin 16:18 (16) int
LIDRangeEnd 18:20 (16) int
reserved_160 20:22 (16) int
isGeneric 22:23 (8) int
subscribe 23:24 (8) int
type 24:26 (16) int
trapNumber 26:28 (16) int
QPN 28:31 (24) int
reserved_248 31:31[3] (3) int
respTimeValue 31[3]:32 (5) int
reserved_256 32:33 (8) int
producerType 33:36 (24) int

4.7.3. RMPP (13.6)

class rdma.IBA.RMPPAbort

RMPP Data Packet (section 13.6.2.3)

MAD_LENGTH = 256
MEMBERS = [('RMPPHeader',224,1), ('reserved_224',32,1), ('reserved_256',32,1), ('errorData',1760,1)]
Member Position Type
RMPPHeader 0:28 (224) RMPPShortHeader
reserved_224 28:32 (32) int
reserved_256 32:36 (32) int
errorData 36:256 (1760) bytearray (220)
class rdma.IBA.RMPPAck

RMPP Data Packet (section 13.6.2.3)

MAD_LENGTH = 256
MEMBERS = [('RMPPHeader',224,1), ('segmentNumber',32,1), ('newWindowLast',32,1), ('reserved_288',1760,1)]
Member Position Type
RMPPHeader 0:28 (224) RMPPShortHeader
segmentNumber 28:32 (32) int
newWindowLast 32:36 (32) int
reserved_288 36:256 (1760) bytearray (220)
class rdma.IBA.RMPPData

RMPP Data Packet (section 13.6.2.3)

MAD_LENGTH = 256
MEMBERS = [('RMPPHeader',224,1), ('segmentNumber',32,1), ('payLoadLength',32,1), ('data',1760,1)]
Member Position Type
RMPPHeader 0:28 (224) RMPPShortHeader
segmentNumber 28:32 (32) int
payLoadLength 32:36 (32) int
data 36:256 (1760) bytearray (220)
class rdma.IBA.RMPPHeader

RMPP Header Fields (section 13.6.2.1)

MAD_LENGTH = 36
MEMBERS = [('MADHeader',192,1), ('RMPPVersion',8,1), ('RMPPType',8,1), ('RRespTime',5,1), ('RMPPFlags',3,1), ('RMPPStatus',8,1), ('data1',32,1), ('data2',32,1)]
Member Position Type
MADHeader 0:24 (192) MADHeader
RMPPVersion 24:25 (8) int
RMPPType 25:26 (8) int
RRespTime 26:26[5] (5) int
RMPPFlags 26[5]:27 (3) int
RMPPStatus 27:28 (8) int
data1 28:32 (32) int
data2 32:36 (32) int
class rdma.IBA.RMPPShortHeader

RMPP Header Fields (section 13.6.2.1)

MAD_LENGTH = 28
MEMBERS = [('MADHeader',192,1), ('RMPPVersion',8,1), ('RMPPType',8,1), ('RRespTime',5,1), ('RMPPFlags',3,1), ('RMPPStatus',8,1)]
Member Position Type
MADHeader 0:24 (192) MADHeader
RMPPVersion 24:25 (8) int
RMPPType 25:26 (8) int
RRespTime 26:26[5] (5) int
RMPPFlags 26[5]:27 (3) int
RMPPStatus 27:28 (8) int
class rdma.IBA.RMPPStop

RMPP Data Packet (section 13.6.2.3)

MAD_LENGTH = 256
MEMBERS = [('RMPPHeader',224,1), ('reserved_224',32,1), ('reserved_256',32,1), ('errorData',1760,1)]
Member Position Type
RMPPHeader 0:28 (224) RMPPShortHeader
reserved_224 28:32 (32) int
reserved_256 32:36 (32) int
errorData 36:256 (1760) bytearray (220)

4.7.4. Subnet Management (14)

class rdma.IBA.SMPFormat

An aggregation of: MADHeader

SMP Format - LID Routed (section 14.2.1.1)

MAD_LENGTH = 256
MAD_CLASS = 0x1
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('MKey',64,1), ('reserved_256',256,1), ('data',512,1), ('reserved_1024',1024,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
MKey 24:32 (64) int
reserved_256 32:64 (256) bytearray (32)
data 64:128 (512) bytearray (64)
reserved_1024 128:256 (1024) bytearray (128)
class rdma.IBA.SMPFormatDirected

An aggregation of: MADHeaderDirected

SMP Format - Direct Routed (section 14.2.1.2)

MAD_LENGTH = 256
MAD_CLASS = 0x81
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('D',1,1), ('status',15,1), ('hopPointer',8,1), ('hopCount',8,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('MKey',64,1), ('drSLID',16,1), ('drDLID',16,1), ('reserved_288',224,1), ('data',512,1), ('initialPath',8,64), ('returnPath',8,64)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
D 4:4[1] (1) int
status 4[1]:6 (15) int
hopPointer 6:7 (8) int
hopCount 7:8 (8) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
MKey 24:32 (64) int
drSLID 32:34 (16) int
drDLID 34:36 (16) int
reserved_288 36:64 (224) bytearray (28)
data 64:128 (512) bytearray (64)
initialPath 128:192 (8) [bytearray (64)]*64
returnPath 192:256 (8) [bytearray (64)]*64
class rdma.IBA.SMPGUIDInfo

Assigned GUIDs (section 14.2.5.5)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x14
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('GUIDBlock',64,8)]
Member Position Type
GUIDBlock 0:64 (64) [GUID]*8
class rdma.IBA.SMPLIDPortBlock

LID/Port Block Element (section 14.2.5.11)

MAD_LENGTH = 4
MEMBERS = [('LID',16,1), ('valid',1,1), ('LMC',3,1), ('reserved_20',4,1), ('port',8,1)]
Member Position Type
LID 0:2 (16) int
valid 2:2[1] (1) int
LMC 2[1]:2[4] (3) int
reserved_20 2[4]:3 (4) int
port 3:4 (8) int
class rdma.IBA.SMPLedInfo

Turn on/off LED (section 14.2.5.15)

MAD_LENGTH = 4
MAD_ATTRIBUTE_ID = 0x31
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('ledMask',1,1), ('reserved_1',31,1)]
Member Position Type
ledMask 0:0[1] (1) int
reserved_1 0[1]:4 (31) int
class rdma.IBA.SMPLinearForwardingTable

Linear Forwarding Table Information (section 14.2.5.10)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x19
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('portBlock',8,64)]
Member Position Type
portBlock 0:64 (8) [bytearray (64)]*64
class rdma.IBA.SMPMulticastForwardingTable

Multicast Forwarding Table Information (section 14.2.5.12)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x1b
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('portMaskBlock',16,32)]
Member Position Type
portMaskBlock 0:64 (16) [int]*32
class rdma.IBA.SMPNodeDescription

Node Description String (section 14.2.5.2)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x10
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('nodeString',8,64)]
Member Position Type
nodeString 0:64 (8) [bytearray (64)]*64
class rdma.IBA.SMPNodeInfo

Generic Node Data (section 14.2.5.3)

MAD_LENGTH = 40
MAD_ATTRIBUTE_ID = 0x11
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('baseVersion',8,1), ('classVersion',8,1), ('nodeType',8,1), ('numPorts',8,1), ('systemImageGUID',64,1), ('nodeGUID',64,1), ('portGUID',64,1), ('partitionCap',16,1), ('deviceID',16,1), ('revision',32,1), ('localPortNum',8,1), ('vendorID',24,1)]
Member Position Type
baseVersion 0:1 (8) int
classVersion 1:2 (8) int
nodeType 2:3 (8) int
numPorts 3:4 (8) int
systemImageGUID 4:12 (64) GUID
nodeGUID 12:20 (64) GUID
portGUID 20:28 (64) GUID
partitionCap 28:30 (16) int
deviceID 30:32 (16) int
revision 32:36 (32) int
localPortNum 36:37 (8) int
vendorID 37:40 (24) int
class rdma.IBA.SMPPKeyTable

Partition Table (section 14.2.5.7)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x16
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('PKeyBlock',16,32)]
Member Position Type
PKeyBlock 0:64 (16) [int]*32
class rdma.IBA.SMPPortInfo

Port Information (section 14.2.5.6)

MAD_LENGTH = 60
MAD_ATTRIBUTE_ID = 0x15
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('MKey',64,1), ('GIDPrefix',64,1), ('LID',16,1), ('masterSMLID',16,1), ('capabilityMask',32,1), ('diagCode',16,1), ('MKeyLeasePeriod',16,1), ('localPortNum',8,1), ('linkWidthEnabled',8,1), ('linkWidthSupported',8,1), ('linkWidthActive',8,1), ('linkSpeedSupported',4,1), ('portState',4,1), ('portPhysicalState',4,1), ('linkDownDefaultState',4,1), ('MKeyProtectBits',2,1), ('reserved_274',3,1), ('LMC',3,1), ('linkSpeedActive',4,1), ('linkSpeedEnabled',4,1), ('neighborMTU',4,1), ('masterSMSL',4,1), ('VLCap',4,1), ('initType',4,1), ('VLHighLimit',8,1), ('VLArbitrationHighCap',8,1), ('VLArbitrationLowCap',8,1), ('initTypeReply',4,1), ('MTUCap',4,1), ('VLStallCount',3,1), ('HOQLife',5,1), ('operationalVLs',4,1), ('partitionEnforcementInbound',1,1), ('partitionEnforcementOutbound',1,1), ('filterRawInbound',1,1), ('filterRawOutbound',1,1), ('MKeyViolations',16,1), ('PKeyViolations',16,1), ('QKeyViolations',16,1), ('GUIDCap',8,1), ('clientReregister',1,1), ('reserved_409',2,1), ('subnetTimeOut',5,1), ('reserved_416',3,1), ('respTimeValue',5,1), ('localPhyErrors',4,1), ('overrunErrors',4,1), ('maxCreditHint',16,1), ('reserved_448',8,1), ('linkRoundTripLatency',24,1)]
Member Position Type
MKey 0:8 (64) int
GIDPrefix 8:16 (64) int
LID 16:18 (16) int
masterSMLID 18:20 (16) int
capabilityMask 20:24 (32) int
diagCode 24:26 (16) int
MKeyLeasePeriod 26:28 (16) int
localPortNum 28:29 (8) int
linkWidthEnabled 29:30 (8) int
linkWidthSupported 30:31 (8) int
linkWidthActive 31:32 (8) int
linkSpeedSupported 32:32[4] (4) int
portState 32[4]:33 (4) int
portPhysicalState 33:33[4] (4) int
linkDownDefaultState 33[4]:34 (4) int
MKeyProtectBits 34:34[2] (2) int
reserved_274 34[2]:34[5] (3) int
LMC 34[5]:35 (3) int
linkSpeedActive 35:35[4] (4) int
linkSpeedEnabled 35[4]:36 (4) int
neighborMTU 36:36[4] (4) int
masterSMSL 36[4]:37 (4) int
VLCap 37:37[4] (4) int
initType 37[4]:38 (4) int
VLHighLimit 38:39 (8) int
VLArbitrationHighCap 39:40 (8) int
VLArbitrationLowCap 40:41 (8) int
initTypeReply 41:41[4] (4) int
MTUCap 41[4]:42 (4) int
VLStallCount 42:42[3] (3) int
HOQLife 42[3]:43 (5) int
operationalVLs 43:43[4] (4) int
partitionEnforcementInbound 43[4]:43[5] (1) int
partitionEnforcementOutbound 43[5]:43[6] (1) int
filterRawInbound 43[6]:43[7] (1) int
filterRawOutbound 43[7]:44 (1) int
MKeyViolations 44:46 (16) int
PKeyViolations 46:48 (16) int
QKeyViolations 48:50 (16) int
GUIDCap 50:51 (8) int
clientReregister 51:51[1] (1) int
reserved_409 51[1]:51[3] (2) int
subnetTimeOut 51[3]:52 (5) int
reserved_416 52:52[3] (3) int
respTimeValue 52[3]:53 (5) int
localPhyErrors 53:53[4] (4) int
overrunErrors 53[4]:54 (4) int
maxCreditHint 54:56 (16) int
reserved_448 56:57 (8) int
linkRoundTripLatency 57:60 (24) int
class rdma.IBA.SMPRandomForwardingTable

Random Forwarding Table Information (section 14.2.5.11)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x1a
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('LIDPortBlock',32,16)]
Member Position Type
LIDPortBlock 0:64 (32) [SMPLIDPortBlock]*16
class rdma.IBA.SMPSLToVLMappingTable

Service Level to Virtual Lane mapping Information (section 14.2.5.8)

MAD_LENGTH = 8
MAD_ATTRIBUTE_ID = 0x17
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('SLtoVL',4,16)]
Member Position Type
SLtoVL 0:8 (4) [int]*16
class rdma.IBA.SMPSMInfo

Subnet Management Information (section 14.2.5.13)

MAD_LENGTH = 24
MAD_ATTRIBUTE_ID = 0x20
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('GUID',64,1), ('SMKey',64,1), ('actCount',32,1), ('priority',4,1), ('SMState',4,1), ('reserved_168',24,1)]
Member Position Type
GUID 0:8 (64) GUID
SMKey 8:16 (64) int
actCount 16:20 (32) int
priority 20:20[4] (4) int
SMState 20[4]:21 (4) int
reserved_168 21:24 (24) int
class rdma.IBA.SMPSwitchInfo

Switch Information (section 14.2.5.4)

MAD_LENGTH = 20
MAD_ATTRIBUTE_ID = 0x12
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('linearFDBCap',16,1), ('randomFDBCap',16,1), ('multicastFDBCap',16,1), ('linearFDBTop',16,1), ('defaultPort',8,1), ('defaultMulticastPrimaryPort',8,1), ('defaultMulticastNotPrimaryPort',8,1), ('lifeTimeValue',5,1), ('portStateChange',1,1), ('optimizedSLtoVLMappingProgramming',2,1), ('LIDsPerPort',16,1), ('partitionEnforcementCap',16,1), ('inboundEnforcementCap',1,1), ('outboundEnforcementCap',1,1), ('filterRawInboundCap',1,1), ('filterRawOutboundCap',1,1), ('enhancedPort0',1,1), ('reserved_133',3,1), ('reserved_136',24,1)]
Member Position Type
linearFDBCap 0:2 (16) int
randomFDBCap 2:4 (16) int
multicastFDBCap 4:6 (16) int
linearFDBTop 6:8 (16) int
defaultPort 8:9 (8) int
defaultMulticastPrimaryPort 9:10 (8) int
defaultMulticastNotPrimaryPort 10:11 (8) int
lifeTimeValue 11:11[5] (5) int
portStateChange 11[5]:11[6] (1) int
optimizedSLtoVLMappingProgramming 11[6]:12 (2) int
LIDsPerPort 12:14 (16) int
partitionEnforcementCap 14:16 (16) int
inboundEnforcementCap 16:16[1] (1) int
outboundEnforcementCap 16[1]:16[2] (1) int
filterRawInboundCap 16[2]:16[3] (1) int
filterRawOutboundCap 16[3]:16[4] (1) int
enhancedPort0 16[4]:16[5] (1) int
reserved_133 16[5]:17 (3) int
reserved_136 17:20 (24) int
class rdma.IBA.SMPVLArbitrationTable

List of Weights (section 14.2.5.9)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x18
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MAD_SUBNSET = 0x2 # MAD_METHOD_SET
MEMBERS = [('VLWeightBlock',16,32)]
Member Position Type
VLWeightBlock 0:64 (16) [int]*32
class rdma.IBA.SMPVendorDiag

Vendor Specific Diagnostic (section 14.2.5.14)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x30
MAD_SUBNGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('nextIndex',16,1), ('reserved_16',16,1), ('diagData',480,1)]
Member Position Type
nextIndex 0:2 (16) int
reserved_16 2:4 (16) int
diagData 4:64 (480) bytearray (60)

4.7.5. Subnet Administration (15)

class rdma.IBA.SAFormat

An aggregation of: SAHeader

SA Format (section 15.2.1.1)

MAD_LENGTH = 256
MAD_CLASS = 0x3
MAD_CLASS_VERSION = 0x2
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('RMPPVersion',8,1), ('RMPPType',8,1), ('RRespTime',5,1), ('RMPPFlags',3,1), ('RMPPStatus',8,1), ('data1',32,1), ('data2',32,1), ('SMKey',64,1), ('attributeOffset',16,1), ('reserved_368',16,1), ('componentMask',64,1), ('data',1600,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
RMPPVersion 24:25 (8) int
RMPPType 25:26 (8) int
RRespTime 26:26[5] (5) int
RMPPFlags 26[5]:27 (3) int
RMPPStatus 27:28 (8) int
data1 28:32 (32) int
data2 32:36 (32) int
SMKey 36:44 (64) int
attributeOffset 44:46 (16) int
reserved_368 46:48 (16) int
componentMask 48:56 (64) int
data 56:256 (1600) bytearray (200)
class rdma.IBA.SAGUIDInfoRecord

Container for port GUIDInfo (section 15.2.5.18)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x30
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'blockNum':1, 'reserved_24':2, 'reserved_32':3, 'GUIDInfo.GUIDBlock':4}
MEMBERS = [('LID',16,1), ('blockNum',8,1), ('reserved_24',8,1), ('reserved_32',32,1), ('GUIDInfo',512,1)]
Member Position Type
LID 0:2 (16) int
blockNum 2:3 (8) int
reserved_24 3:4 (8) int
reserved_32 4:8 (32) int
GUIDInfo 8:72 (512) SMPGUIDInfo
class rdma.IBA.SAHeader

An aggregation of: MADHeader, RMPPHeader

SA Header (section 15.2.1.1)

MAD_LENGTH = 56
MAD_CLASS = 0x3
MAD_CLASS_VERSION = 0x2
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('RMPPVersion',8,1), ('RMPPType',8,1), ('RRespTime',5,1), ('RMPPFlags',3,1), ('RMPPStatus',8,1), ('data1',32,1), ('data2',32,1), ('SMKey',64,1), ('attributeOffset',16,1), ('reserved_368',16,1), ('componentMask',64,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
RMPPVersion 24:25 (8) int
RMPPType 25:26 (8) int
RRespTime 26:26[5] (5) int
RMPPFlags 26[5]:27 (3) int
RMPPStatus 27:28 (8) int
data1 28:32 (32) int
data2 32:36 (32) int
SMKey 36:44 (64) int
attributeOffset 44:46 (16) int
reserved_368 46:48 (16) int
componentMask 48:56 (64) int
class rdma.IBA.SAInformInfoRecord

Container for InformInfo (section 15.2.5.12)

MAD_LENGTH = 80
MAD_ATTRIBUTE_ID = 0xf3
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'subscriberGID':0, 'enumeration':1, 'reserved_144':2, 'reserved_160':3, 'informInfo.GID':4, 'informInfo.LIDRangeBegin':5, 'informInfo.LIDRangeEnd':6, 'informInfo.reserved_160':7, 'informInfo.isGeneric':8, 'informInfo.subscribe':9, 'informInfo.type':10, 'informInfo.trapNumber':11, 'informInfo.QPN':12, 'informInfo.reserved_248':13, 'informInfo.respTimeValue':14, 'informInfo.reserved_256':15, 'informInfo.producerType':16, 'reserved_480':17}
MEMBERS = [('subscriberGID',128,1), ('enumeration',16,1), ('reserved_144',16,1), ('reserved_160',32,1), ('informInfo',288,1), ('reserved_480',160,1)]
Member Position Type
subscriberGID 0:16 (128) GID
enumeration 16:18 (16) int
reserved_144 18:20 (16) int
reserved_160 20:24 (32) int
informInfo 24:60 (288) MADInformInfo
reserved_480 60:80 (160) bytearray (20)
class rdma.IBA.SALinearForwardingTableRecord

Container for LinearForwardingTable entry (section 15.2.5.6)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x15
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'blockNum':1, 'reserved_32':2, 'linearForwardingTable.portBlock':3}
MEMBERS = [('LID',16,1), ('blockNum',16,1), ('reserved_32',32,1), ('linearForwardingTable',512,1)]
Member Position Type
LID 0:2 (16) int
blockNum 2:4 (16) int
reserved_32 4:8 (32) int
linearForwardingTable 8:72 (512) SMPLinearForwardingTable
class rdma.IBA.SALinkRecord

Inter-node linkage information (section 15.2.5.13)

MAD_LENGTH = 8
MAD_ATTRIBUTE_ID = 0x20
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'fromLID':0, 'fromPort':1, 'toPort':2, 'toLID':3, 'reserved_48':4}
MEMBERS = [('fromLID',16,1), ('fromPort',8,1), ('toPort',8,1), ('toLID',16,1), ('reserved_48',16,1)]
Member Position Type
fromLID 0:2 (16) int
fromPort 2:3 (8) int
toPort 3:4 (8) int
toLID 4:6 (16) int
reserved_48 6:8 (16) int
class rdma.IBA.SAMCMemberRecord

Multicast member attribute (section 15.2.5.17)

MAD_LENGTH = 52
MAD_ATTRIBUTE_ID = 0x38
MAD_SUBNADMDELETE = 0x15 # MAD_METHOD_DELETE
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
MAD_SUBNADMSET = 0x2 # MAD_METHOD_SET
COMPONENT_MASK = {'MGID':0, 'portGID':1, 'QKey':2, 'MLID':3, 'MTUSelector':4, 'MTU':5, 'TClass':6, 'PKey':7, 'rateSelector':8, 'rate':9, 'packetLifeTimeSelector':10, 'packetLifeTime':11, 'SL':12, 'flowLabel':13, 'hopLimit':14, 'scope':15, 'joinState':16, 'proxyJoin':17, 'reserved_393':18}
MEMBERS = [('MGID',128,1), ('portGID',128,1), ('QKey',32,1), ('MLID',16,1), ('MTUSelector',2,1), ('MTU',6,1), ('TClass',8,1), ('PKey',16,1), ('rateSelector',2,1), ('rate',6,1), ('packetLifeTimeSelector',2,1), ('packetLifeTime',6,1), ('SL',4,1), ('flowLabel',20,1), ('hopLimit',8,1), ('scope',4,1), ('joinState',4,1), ('proxyJoin',1,1), ('reserved_393',23,1)]
Member Position Type
MGID 0:16 (128) GID
portGID 16:32 (128) GID
QKey 32:36 (32) int
MLID 36:38 (16) int
MTUSelector 38:38[2] (2) int
MTU 38[2]:39 (6) int
TClass 39:40 (8) int
PKey 40:42 (16) int
rateSelector 42:42[2] (2) int
rate 42[2]:43 (6) int
packetLifeTimeSelector 43:43[2] (2) int
packetLifeTime 43[2]:44 (6) int
SL 44:44[4] (4) int
flowLabel 44[4]:47 (20) int
hopLimit 47:48 (8) int
scope 48:48[4] (4) int
joinState 48[4]:49 (4) int
proxyJoin 49:49[1] (1) int
reserved_393 49[1]:52 (23) int
class rdma.IBA.SAMultiPathRecord

Request for multiple paths (section 15.2.5.20)

MAD_LENGTH = 40
MAD_ATTRIBUTE_ID = 0x3a
MAD_SUBNADMGETMULTI = 0x14 # MAD_METHOD_GET_MULTI
COMPONENT_MASK = {'rawTraffic':0, 'reserved_1':1, 'flowLabel':2, 'hopLimit':3, 'TClass':4, 'reversible':5, 'numbPath':6, 'PKey':7, 'reserved_64':8, 'SL':9, 'MTUSelector':10, 'MTU':11, 'rateSelector':12, 'rate':13, 'packetLifeTimeSelector':14, 'packetLifeTime':15, 'reserved_104':16, 'independenceSelector':17, 'reserved_114':18, 'SGIDCount':19, 'DGIDCount':20, 'reserved_136':21, 'reserved_160':22, 'SDGID':23}
MEMBERS = [('rawTraffic',1,1), ('reserved_1',3,1), ('flowLabel',20,1), ('hopLimit',8,1), ('TClass',8,1), ('reversible',1,1), ('numbPath',7,1), ('PKey',16,1), ('reserved_64',12,1), ('SL',4,1), ('MTUSelector',2,1), ('MTU',6,1), ('rateSelector',2,1), ('rate',6,1), ('packetLifeTimeSelector',2,1), ('packetLifeTime',6,1), ('reserved_104',8,1), ('independenceSelector',2,1), ('reserved_114',6,1), ('SGIDCount',8,1), ('DGIDCount',8,1), ('reserved_136',24,1), ('reserved_160',32,1), ('SDGID',128,1)]
Member Position Type
rawTraffic 0:0[1] (1) int
reserved_1 0[1]:0[4] (3) int
flowLabel 0[4]:3 (20) int
hopLimit 3:4 (8) int
TClass 4:5 (8) int
reversible 5:5[1] (1) int
numbPath 5[1]:6 (7) int
PKey 6:8 (16) int
reserved_64 8:9[4] (12) int
SL 9[4]:10 (4) int
MTUSelector 10:10[2] (2) int
MTU 10[2]:11 (6) int
rateSelector 11:11[2] (2) int
rate 11[2]:12 (6) int
packetLifeTimeSelector 12:12[2] (2) int
packetLifeTime 12[2]:13 (6) int
reserved_104 13:14 (8) int
independenceSelector 14:14[2] (2) int
reserved_114 14[2]:15 (6) int
SGIDCount 15:16 (8) int
DGIDCount 16:17 (8) int
reserved_136 17:20 (24) int
reserved_160 20:24 (32) int
SDGID 24:40 (128) GID
class rdma.IBA.SAMulticastForwardingTableRecord

Container for MulticastForwardingTable entry (section 15.2.5.8)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x17
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'reserved_16':1, 'position':2, 'blockNum':3, 'reserved_32':4, 'multicastForwardingTable.portMaskBlock':5}
MEMBERS = [('LID',16,1), ('reserved_16',2,1), ('position',4,1), ('blockNum',10,1), ('reserved_32',32,1), ('multicastForwardingTable',512,1)]
Member Position Type
LID 0:2 (16) int
reserved_16 2:2[2] (2) int
position 2[2]:2[6] (4) int
blockNum 2[6]:4 (10) int
reserved_32 4:8 (32) int
multicastForwardingTable 8:72 (512) SMPMulticastForwardingTable
class rdma.IBA.SANodeRecord

Container for NodeInfo (section 15.2.5.2)

MAD_LENGTH = 108
MAD_ATTRIBUTE_ID = 0x11
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'reserved_16':1, 'nodeInfo.baseVersion':2, 'nodeInfo.classVersion':3, 'nodeInfo.nodeType':4, 'nodeInfo.numPorts':5, 'nodeInfo.systemImageGUID':6, 'nodeInfo.nodeGUID':7, 'nodeInfo.portGUID':8, 'nodeInfo.partitionCap':9, 'nodeInfo.deviceID':10, 'nodeInfo.revision':11, 'nodeInfo.localPortNum':12, 'nodeInfo.vendorID':13, 'nodeDescription.nodeString':14}
MEMBERS = [('LID',16,1), ('reserved_16',16,1), ('nodeInfo',320,1), ('nodeDescription',512,1)]
Member Position Type
LID 0:2 (16) int
reserved_16 2:4 (16) int
nodeInfo 4:44 (320) SMPNodeInfo
nodeDescription 44:108 (512) SMPNodeDescription
class rdma.IBA.SAPKeyTableRecord

Container for P_Key Table (section 15.2.5.11)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x33
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'blockNum':1, 'portNum':2, 'reserved_40':3, 'PKeyTable.PKeyBlock':4}
MEMBERS = [('LID',16,1), ('blockNum',16,1), ('portNum',8,1), ('reserved_40',24,1), ('PKeyTable',512,1)]
Member Position Type
LID 0:2 (16) int
blockNum 2:4 (16) int
portNum 4:5 (8) int
reserved_40 5:8 (24) int
PKeyTable 8:72 (512) SMPPKeyTable
class rdma.IBA.SAPathRecord

Information on paths through the subnet (section 15.2.5.16)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x35
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'serviceID':0, 'serviceID56LSB':1, 'DGID':2, 'SGID':3, 'DLID':4, 'SLID':5, 'rawTraffic':6, 'reserved_353':7, 'flowLabel':8, 'hopLimit':9, 'TClass':10, 'reversible':11, 'numbPath':12, 'PKey':13, 'QOSClass':14, 'SL':15, 'MTUSelector':16, 'MTU':17, 'rateSelector':18, 'rate':19, 'packetLifeTimeSelector':20, 'packetLifeTime':21, 'preference':22, 'reserved_464':23, 'reserved_480':24}
MEMBERS = [('serviceID',64,1), ('DGID',128,1), ('SGID',128,1), ('DLID',16,1), ('SLID',16,1), ('rawTraffic',1,1), ('reserved_353',3,1), ('flowLabel',20,1), ('hopLimit',8,1), ('TClass',8,1), ('reversible',1,1), ('numbPath',7,1), ('PKey',16,1), ('QOSClass',12,1), ('SL',4,1), ('MTUSelector',2,1), ('MTU',6,1), ('rateSelector',2,1), ('rate',6,1), ('packetLifeTimeSelector',2,1), ('packetLifeTime',6,1), ('preference',8,1), ('reserved_464',16,1), ('reserved_480',32,1)]
Member Position Type
serviceID 0:8 (64) int
serviceID56LSB 8:8 (0) int
DGID 8:24 (128) GID
SGID 24:40 (128) GID
DLID 40:42 (16) int
SLID 42:44 (16) int
rawTraffic 44:44[1] (1) int
reserved_353 44[1]:44[4] (3) int
flowLabel 44[4]:47 (20) int
hopLimit 47:48 (8) int
TClass 48:49 (8) int
reversible 49:49[1] (1) int
numbPath 49[1]:50 (7) int
PKey 50:52 (16) int
QOSClass 52:53[4] (12) int
SL 53[4]:54 (4) int
MTUSelector 54:54[2] (2) int
MTU 54[2]:55 (6) int
rateSelector 55:55[2] (2) int
rate 55[2]:56 (6) int
packetLifeTimeSelector 56:56[2] (2) int
packetLifeTime 56[2]:57 (6) int
preference 57:58 (8) int
reserved_464 58:60 (16) int
reserved_480 60:64 (32) int
class rdma.IBA.SAPortInfoRecord

Container for PortInfo (section 15.2.5.3)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x12
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'endportLID':0, 'portNum':1, 'reserved_24':2, 'portInfo.MKey':3, 'portInfo.GIDPrefix':4, 'portInfo.LID':5, 'portInfo.masterSMLID':6, 'portInfo.capabilityMask':7, 'portInfo.diagCode':8, 'portInfo.MKeyLeasePeriod':9, 'portInfo.localPortNum':10, 'portInfo.linkWidthEnabled':11, 'portInfo.linkWidthSupported':12, 'portInfo.linkWidthActive':13, 'portInfo.linkSpeedSupported':14, 'portInfo.portState':15, 'portInfo.portPhysicalState':16, 'portInfo.linkDownDefaultState':17, 'portInfo.MKeyProtectBits':18, 'portInfo.reserved_274':19, 'portInfo.LMC':20, 'portInfo.linkSpeedActive':21, 'portInfo.linkSpeedEnabled':22, 'portInfo.neighborMTU':23, 'portInfo.masterSMSL':24, 'portInfo.VLCap':25, 'portInfo.initType':26, 'portInfo.VLHighLimit':27, 'portInfo.VLArbitrationHighCap':28, 'portInfo.VLArbitrationLowCap':29, 'portInfo.initTypeReply':30, 'portInfo.MTUCap':31, 'portInfo.VLStallCount':32, 'portInfo.HOQLife':33, 'portInfo.operationalVLs':34, 'portInfo.partitionEnforcementInbound':35, 'portInfo.partitionEnforcementOutbound':36, 'portInfo.filterRawInbound':37, 'portInfo.filterRawOutbound':38, 'portInfo.MKeyViolations':39, 'portInfo.PKeyViolations':40, 'portInfo.QKeyViolations':41, 'portInfo.GUIDCap':42, 'portInfo.clientReregister':43, 'portInfo.reserved_409':44, 'portInfo.subnetTimeOut':45, 'portInfo.reserved_416':46, 'portInfo.respTimeValue':47, 'portInfo.localPhyErrors':48, 'portInfo.overrunErrors':49, 'portInfo.maxCreditHint':50, 'portInfo.reserved_448':51, 'portInfo.linkRoundTripLatency':52}
MEMBERS = [('endportLID',16,1), ('portNum',8,1), ('reserved_24',8,1), ('portInfo',480,1)]
Member Position Type
endportLID 0:2 (16) int
portNum 2:3 (8) int
reserved_24 3:4 (8) int
portInfo 4:64 (480) SMPPortInfo
class rdma.IBA.SARandomForwardingTableRecord

Container for RandomForwardingTable entry (section 15.2.5.7)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x16
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'blockNum':1, 'reserved_32':2, 'randomForwardingTable.LIDPortBlock':3}
MEMBERS = [('LID',16,1), ('blockNum',16,1), ('reserved_32',32,1), ('randomForwardingTable',512,1)]
Member Position Type
LID 0:2 (16) int
blockNum 2:4 (16) int
reserved_32 4:8 (32) int
randomForwardingTable 8:72 (512) SMPRandomForwardingTable
class rdma.IBA.SASLToVLMappingTableRecord

Container for SLtoVLMappingTable entry (section 15.2.5.4)

MAD_LENGTH = 16
MAD_ATTRIBUTE_ID = 0x13
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'inputPortNum':1, 'outputPortNum':2, 'reserved_32':3, 'SLToVLMappingTable.SLtoVL':4}
MEMBERS = [('LID',16,1), ('inputPortNum',8,1), ('outputPortNum',8,1), ('reserved_32',32,1), ('SLToVLMappingTable',64,1)]
Member Position Type
LID 0:2 (16) int
inputPortNum 2:3 (8) int
outputPortNum 3:4 (8) int
reserved_32 4:8 (32) int
SLToVLMappingTable 8:16 (64) SMPSLToVLMappingTable
class rdma.IBA.SASMInfoRecord

Container for SMInfo (section 15.2.5.10)

MAD_LENGTH = 28
MAD_ATTRIBUTE_ID = 0x18
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'reserved_16':1, 'SMInfo.GUID':2, 'SMInfo.SMKey':3, 'SMInfo.actCount':4, 'SMInfo.priority':5, 'SMInfo.SMState':6, 'SMInfo.reserved_168':7}
MEMBERS = [('LID',16,1), ('reserved_16',16,1), ('SMInfo',192,1)]
Member Position Type
LID 0:2 (16) int
reserved_16 2:4 (16) int
SMInfo 4:28 (192) SMPSMInfo
class rdma.IBA.SAServiceAssociationRecord

ServiceRecord ServiceName/ServiceKey association (section 15.2.5.15)

MAD_LENGTH = 80
MAD_ATTRIBUTE_ID = 0x3b
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'serviceKey':0, 'serviceName':1}
MEMBERS = [('serviceKey',128,1), ('serviceName',8,64)]
Member Position Type
serviceKey 0:16 (128) GID
serviceName 16:80 (8) [bytearray (64)]*64
class rdma.IBA.SAServiceRecord

Information on advertised services (section 15.2.5.14)

MAD_LENGTH = 176
MAD_ATTRIBUTE_ID = 0x31
MAD_SUBNADMDELETE = 0x15 # MAD_METHOD_DELETE
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
MAD_SUBNADMSET = 0x2 # MAD_METHOD_SET
COMPONENT_MASK = {'serviceID':0, 'serviceGID':1, 'servicePKey':2, 'reserved_208':3, 'serviceLease':4, 'serviceKey':5, 'serviceName':6, 'serviceData8':7, 'serviceData16':8, 'serviceData32':9, 'serviceData64':10}
MEMBERS = [('serviceID',64,1), ('serviceGID',128,1), ('servicePKey',16,1), ('reserved_208',16,1), ('serviceLease',32,1), ('serviceKey',128,1), ('serviceName',8,64), ('serviceData8',8,16), ('serviceData16',16,8), ('serviceData32',32,4), ('serviceData64',64,2)]
Member Position Type
serviceID 0:8 (64) int
serviceGID 8:24 (128) GID
servicePKey 24:26 (16) int
reserved_208 26:28 (16) int
serviceLease 28:32 (32) int
serviceKey 32:48 (128) GID
serviceName 48:112 (8) [bytearray (64)]*64
serviceData8 112:128 (8) [bytearray (16)]*16
serviceData16 128:144 (16) [int]*8
serviceData32 144:160 (32) [int]*4
serviceData64 160:176 (64) [int]*2
class rdma.IBA.SASwitchInfoRecord

Container for SwitchInfo (section 15.2.5.5)

MAD_LENGTH = 24
MAD_ATTRIBUTE_ID = 0x14
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'reserved_16':1, 'switchInfo.linearFDBCap':2, 'switchInfo.randomFDBCap':3, 'switchInfo.multicastFDBCap':4, 'switchInfo.linearFDBTop':5, 'switchInfo.defaultPort':6, 'switchInfo.defaultMulticastPrimaryPort':7, 'switchInfo.defaultMulticastNotPrimaryPort':8, 'switchInfo.lifeTimeValue':9, 'switchInfo.portStateChange':10, 'switchInfo.optimizedSLtoVLMappingProgramming':11, 'switchInfo.LIDsPerPort':12, 'switchInfo.partitionEnforcementCap':13, 'switchInfo.inboundEnforcementCap':14, 'switchInfo.outboundEnforcementCap':15, 'switchInfo.filterRawInboundCap':16, 'switchInfo.filterRawOutboundCap':17, 'switchInfo.enhancedPort0':18, 'switchInfo.reserved_133':19, 'switchInfo.reserved_136':20}
MEMBERS = [('LID',16,1), ('reserved_16',16,1), ('switchInfo',160,1)]
Member Position Type
LID 0:2 (16) int
reserved_16 2:4 (16) int
switchInfo 4:24 (160) SMPSwitchInfo
class rdma.IBA.SATraceRecord

Path trace information (section 15.2.5.19)

MAD_LENGTH = 48
MAD_ATTRIBUTE_ID = 0x39
MAD_SUBNADMGETTRACETABLE = 0x13 # MAD_METHOD_GET_TRACE_TABLE
COMPONENT_MASK = {'GIDPrefix':0, 'IDGeneration':1, 'reserved_80':2, 'nodeType':3, 'nodeID':4, 'chassisID':5, 'entryPortID':6, 'exitPortID':7, 'entryPort':8, 'exitPort':9, 'reserved_368':10}
MEMBERS = [('GIDPrefix',64,1), ('IDGeneration',16,1), ('reserved_80',8,1), ('nodeType',8,1), ('nodeID',64,1), ('chassisID',64,1), ('entryPortID',64,1), ('exitPortID',64,1), ('entryPort',8,1), ('exitPort',8,1), ('reserved_368',16,1)]
Member Position Type
GIDPrefix 0:8 (64) int
IDGeneration 8:10 (16) int
reserved_80 10:11 (8) int
nodeType 11:12 (8) int
nodeID 12:20 (64) int
chassisID 20:28 (64) int
entryPortID 28:36 (64) int
exitPortID 36:44 (64) int
entryPort 44:45 (8) int
exitPort 45:46 (8) int
reserved_368 46:48 (16) int
class rdma.IBA.SAVLArbitrationTableRecord

Container for VLArbitrationTable entry (section 15.2.5.9)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x36
MAD_SUBNADMGET = 0x1 # MAD_METHOD_GET
MAD_SUBNADMGETTABLE = 0x12 # MAD_METHOD_GET_TABLE
COMPONENT_MASK = {'LID':0, 'outputPortNum':1, 'blockNum':2, 'reserved_32':3, 'VLArbitrationTable.VLWeightBlock':4}
MEMBERS = [('LID',16,1), ('outputPortNum',8,1), ('blockNum',8,1), ('reserved_32',32,1), ('VLArbitrationTable',512,1)]
Member Position Type
LID 0:2 (16) int
outputPortNum 2:3 (8) int
blockNum 3:4 (8) int
reserved_32 4:8 (32) int
VLArbitrationTable 8:72 (512) SMPVLArbitrationTable

4.7.6. Performance Management (16.1)

class rdma.IBA.PMFormat

An aggregation of: MADHeader

Performance Management MAD Format (section 16.1.1)

MAD_LENGTH = 256
MAD_CLASS = 0x4
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('reserved_192',320,1), ('data',1536,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
reserved_192 24:64 (320) bytearray (40)
data 64:256 (1536) bytearray (192)
class rdma.IBA.PMPortCounters

Port Basic Performance and Error Counters (section 16.1.3.5)

MAD_LENGTH = 44
MAD_ATTRIBUTE_ID = 0x12
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('symbolErrorCounter',16,1), ('linkErrorRecoveryCounter',8,1), ('linkDownedCounter',8,1), ('portRcvErrors',16,1), ('portRcvRemotePhysicalErrors',16,1), ('portRcvSwitchRelayErrors',16,1), ('portXmitDiscards',16,1), ('portXmitConstraintErrors',8,1), ('portRcvConstraintErrors',8,1), ('counterSelect2',8,1), ('localLinkIntegrityErrors',4,1), ('excessiveBufferOverrunErrors',4,1), ('reserved_160',16,1), ('VL15Dropped',16,1), ('portXmitData',32,1), ('portRcvData',32,1), ('portXmitPkts',32,1), ('portRcvPkts',32,1), ('portXmitWait',32,1)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
symbolErrorCounter 4:6 (16) int
linkErrorRecoveryCounter 6:7 (8) int
linkDownedCounter 7:8 (8) int
portRcvErrors 8:10 (16) int
portRcvRemotePhysicalErrors 10:12 (16) int
portRcvSwitchRelayErrors 12:14 (16) int
portXmitDiscards 14:16 (16) int
portXmitConstraintErrors 16:17 (8) int
portRcvConstraintErrors 17:18 (8) int
counterSelect2 18:19 (8) int
localLinkIntegrityErrors 19:19[4] (4) int
excessiveBufferOverrunErrors 19[4]:20 (4) int
reserved_160 20:22 (16) int
VL15Dropped 22:24 (16) int
portXmitData 24:28 (32) int
portRcvData 28:32 (32) int
portXmitPkts 32:36 (32) int
portRcvPkts 36:40 (32) int
portXmitWait 40:44 (32) int
class rdma.IBA.PMPortCountersExt

Extended Port Counters (section 16.1.4.11)

MAD_LENGTH = 72
MAD_ATTRIBUTE_ID = 0x1d
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('reserved_32',32,1), ('portXmitData',64,1), ('portRcvData',64,1), ('portXmitPkts',64,1), ('portRcvPkts',64,1), ('portUnicastXmitPkts',64,1), ('portUnicastRcvPkts',64,1), ('portMulticastXmitPkts',64,1), ('portMulticastRcvPkts',64,1)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
reserved_32 4:8 (32) int
portXmitData 8:16 (64) int
portRcvData 16:24 (64) int
portXmitPkts 24:32 (64) int
portRcvPkts 32:40 (64) int
portUnicastXmitPkts 40:48 (64) int
portUnicastRcvPkts 48:56 (64) int
portMulticastXmitPkts 56:64 (64) int
portMulticastRcvPkts 64:72 (64) int
class rdma.IBA.PMPortFlowCtlCounters

Port Flow Control Counters (section 16.1.4.4)

MAD_LENGTH = 12
MAD_ATTRIBUTE_ID = 0x18
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portXmitFlowPkts',32,1), ('portRcvFlowPkts',32,1)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portXmitFlowPkts 4:8 (32) int
portRcvFlowPkts 8:12 (32) int
class rdma.IBA.PMPortOpRcvCounters

Port Receive Counters per Op Code (section 16.1.4.3)

MAD_LENGTH = 12
MAD_ATTRIBUTE_ID = 0x17
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('opCode',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portOpRcvPkts',32,1), ('portOpRcvData',32,1)]
Member Position Type
opCode 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portOpRcvPkts 4:8 (32) int
portOpRcvData 8:12 (32) int
class rdma.IBA.PMPortRcvErrorDetails

Port Detailed Error Counters (section 16.1.4.1)

MAD_LENGTH = 16
MAD_ATTRIBUTE_ID = 0x15
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portLocalPhysicalErrors',16,1), ('portMalformedPacketErrors',16,1), ('portBufferOverrunErrors',16,1), ('portDLIDMappingErrors',16,1), ('portVLMappingErrors',16,1), ('portLoopingErrors',16,1)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portLocalPhysicalErrors 4:6 (16) int
portMalformedPacketErrors 6:8 (16) int
portBufferOverrunErrors 8:10 (16) int
portDLIDMappingErrors 10:12 (16) int
portVLMappingErrors 12:14 (16) int
portLoopingErrors 14:16 (16) int
class rdma.IBA.PMPortSamplesCtl

Port Performance Data Sampling Control (section 16.1.3.2)

MAD_LENGTH = 192
MAD_ATTRIBUTE_ID = 0x10
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('opCode',8,1), ('portSelect',8,1), ('tick',8,1), ('reserved_24',5,1), ('counterWidth',3,1), ('reserved_32',2,1), ('counterMask0',3,1), ('counterMask1',3,1), ('counterMask2',3,1), ('counterMask3',3,1), ('counterMask4',3,1), ('counterMask5',3,1), ('counterMask6',3,1), ('counterMask7',3,1), ('counterMask8',3,1), ('counterMask9',3,1), ('reserved_64',1,1), ('counterMask10',3,1), ('counterMask11',3,1), ('counterMask12',3,1), ('counterMask13',3,1), ('counterMask14',3,1), ('sampleMechanisms',8,1), ('reserved_88',6,1), ('sampleStatus',2,1), ('optionMask',64,1), ('vendorMask',64,1), ('sampleStart',32,1), ('sampleInterval',32,1), ('tag',16,1), ('counterSelect0',16,1), ('counterSelect1',16,1), ('counterSelect2',16,1), ('counterSelect3',16,1), ('counterSelect4',16,1), ('counterSelect5',16,1), ('counterSelect6',16,1), ('counterSelect7',16,1), ('counterSelect8',16,1), ('counterSelect9',16,1), ('counterSelect10',16,1), ('counterSelect11',16,1), ('counterSelect12',16,1), ('counterSelect13',16,1), ('counterSelect14',16,1), ('reserved_544',32,1), ('samplesOnlyOptionMask',64,1), ('reserved_640',896,1)]
Member Position Type
opCode 0:1 (8) int
portSelect 1:2 (8) int
tick 2:3 (8) int
reserved_24 3:3[5] (5) int
counterWidth 3[5]:4 (3) int
reserved_32 4:4[2] (2) int
counterMask0 4[2]:4[5] (3) int
counterMask1 4[5]:5 (3) int
counterMask2 5:5[3] (3) int
counterMask3 5[3]:5[6] (3) int
counterMask4 5[6]:6[1] (3) int
counterMask5 6[1]:6[4] (3) int
counterMask6 6[4]:6[7] (3) int
counterMask7 6[7]:7[2] (3) int
counterMask8 7[2]:7[5] (3) int
counterMask9 7[5]:8 (3) int
reserved_64 8:8[1] (1) int
counterMask10 8[1]:8[4] (3) int
counterMask11 8[4]:8[7] (3) int
counterMask12 8[7]:9[2] (3) int
counterMask13 9[2]:9[5] (3) int
counterMask14 9[5]:10 (3) int
sampleMechanisms 10:11 (8) int
reserved_88 11:11[6] (6) int
sampleStatus 11[6]:12 (2) int
optionMask 12:20 (64) int
vendorMask 20:28 (64) int
sampleStart 28:32 (32) int
sampleInterval 32:36 (32) int
tag 36:38 (16) int
counterSelect0 38:40 (16) int
counterSelect1 40:42 (16) int
counterSelect2 42:44 (16) int
counterSelect3 44:46 (16) int
counterSelect4 46:48 (16) int
counterSelect5 48:50 (16) int
counterSelect6 50:52 (16) int
counterSelect7 52:54 (16) int
counterSelect8 54:56 (16) int
counterSelect9 56:58 (16) int
counterSelect10 58:60 (16) int
counterSelect11 60:62 (16) int
counterSelect12 62:64 (16) int
counterSelect13 64:66 (16) int
counterSelect14 66:68 (16) int
reserved_544 68:72 (32) int
samplesOnlyOptionMask 72:80 (64) int
reserved_640 80:192 (896) bytearray (112)
class rdma.IBA.PMPortSamplesRes

Port Performance Data Sampling Results (section 16.1.3.4)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x11
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('tag',16,1), ('reserved_16',14,1), ('sampleStatus',2,1), ('counter',32,15)]
Member Position Type
tag 0:2 (16) int
reserved_16 2:3[6] (14) int
sampleStatus 3[6]:4 (2) int
counter 4:64 (32) [int]*15
class rdma.IBA.PMPortSamplesResExt

Extended Port Samples Result (section 16.1.4.10)

MAD_LENGTH = 128
MAD_ATTRIBUTE_ID = 0x1e
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('tag',16,1), ('reserved_16',14,1), ('sampleStatus',2,1), ('extendedWidth',2,1), ('reserved_34',30,1), ('counter',64,15)]
Member Position Type
tag 0:2 (16) int
reserved_16 2:3[6] (14) int
sampleStatus 3[6]:4 (2) int
extendedWidth 4:4[2] (2) int
reserved_34 4[2]:8 (30) int
counter 8:128 (64) [int]*15
class rdma.IBA.PMPortVLOpData

Port Kilobytes Received per Op Code per VL (section 16.1.4.6)

MAD_LENGTH = 68
MAD_ATTRIBUTE_ID = 0x1a
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('opCode',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portVLOpData',32,16)]
Member Position Type
opCode 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portVLOpData 4:68 (32) [int]*16
class rdma.IBA.PMPortVLOpPackets

Port Packets Received per Op Code per VL (section 16.1.4.5)

MAD_LENGTH = 36
MAD_ATTRIBUTE_ID = 0x19
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('opCode',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portVLOpPackets',16,16)]
Member Position Type
opCode 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portVLOpPackets 4:36 (16) [int]*16
class rdma.IBA.PMPortVLXmitFlowCtlUpdateErrors

Port Flow Control update errors per VL (section 16.1.4.7)

MAD_LENGTH = 8
MAD_ATTRIBUTE_ID = 0x1b
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portVLXmitFlowCtlUpdateErrors',2,16)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portVLXmitFlowCtlUpdateErrors 4:8 (2) [int]*16
class rdma.IBA.PMPortVLXmitWaitCounters

Port Ticks Waiting to Transmit Counters per VL (section 16.1.4.8)

MAD_LENGTH = 36
MAD_ATTRIBUTE_ID = 0x1c
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portVLXmitWait',16,16)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portVLXmitWait 4:36 (16) [int]*16
class rdma.IBA.PMPortXmitDiscardDetails

Port Transmit Discard Counters (section 16.1.4.2)

MAD_LENGTH = 12
MAD_ATTRIBUTE_ID = 0x16
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portInactiveDiscards',16,1), ('portNeighborMTUDiscards',16,1), ('portSwLifetimeLimitDiscards',16,1), ('portSwHOQLimitDiscards',16,1)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portInactiveDiscards 4:6 (16) int
portNeighborMTUDiscards 6:8 (16) int
portSwLifetimeLimitDiscards 8:10 (16) int
portSwHOQLimitDiscards 10:12 (16) int
class rdma.IBA.PMSwPortVLCongestion

Switch Port Congestion per VL (section 16.1.4.9)

MAD_LENGTH = 36
MAD_ATTRIBUTE_ID = 0x30
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('swPortVLCongestion',16,16)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
swPortVLCongestion 4:36 (16) [int]*16
class rdma.IBA.PMPortRcvDataSL

Receive SL Port Counters (section A13.6.5)

MAD_LENGTH = 68
MAD_ATTRIBUTE_ID = 0x37
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portRcvDataSL',32,16)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portRcvDataSL 4:68 (32) [int]*16
class rdma.IBA.PMPortXmitDataSL

Transmit SL Port Counters (section A13.6.5)

MAD_LENGTH = 68
MAD_ATTRIBUTE_ID = 0x36
MAD_PERFORMANCEGET = 0x1 # MAD_METHOD_GET
MAD_PERFORMANCESET = 0x2 # MAD_METHOD_SET
MEMBERS = [('reserved_0',8,1), ('portSelect',8,1), ('counterSelect',16,1), ('portXmitDataSL',32,16)]
Member Position Type
reserved_0 0:1 (8) int
portSelect 1:2 (8) int
counterSelect 2:4 (16) int
portXmitDataSL 4:68 (32) [int]*16

4.7.7. Device Management (16.3)

class rdma.IBA.DMDiagCode

Vendor-Specific Device Diagnostic Information (section 16.3.3.10)

MAD_LENGTH = 4
MAD_ATTRIBUTE_ID = 0x24
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('diagCode',16,1), ('reserved_16',16,1)]
Member Position Type
diagCode 0:2 (16) int
reserved_16 2:4 (16) int
class rdma.IBA.DMDiagnosticTimeout

Get the Maximum Time for Completion of a Diagnostic Test (section 16.3.3.6)

MAD_LENGTH = 4
MAD_ATTRIBUTE_ID = 0x20
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('maxDiagTime',32,1)]
Member Position Type
maxDiagTime 0:4 (32) int
class rdma.IBA.DMFormat

An aggregation of: MADHeader

Device Management MAD Format (section 16.3.1)

MAD_LENGTH = 256
MAD_CLASS = 0x6
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('reserved_192',320,1), ('data',1536,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
reserved_192 24:64 (320) bytearray (40)
data 64:256 (1536) bytearray (192)
class rdma.IBA.DMIOControllerProfile

I/O Controller Profile Information (section 16.3.3.4)

MAD_LENGTH = 128
MAD_ATTRIBUTE_ID = 0x11
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('GUID',64,1), ('vendorID',24,1), ('reserved_88',8,1), ('deviceID',32,1), ('deviceVersion',16,1), ('reserved_144',16,1), ('subsystemVendorID',24,1), ('reserved_184',8,1), ('subsystemID',32,1), ('IOClass',16,1), ('IOSubclass',16,1), ('protocol',16,1), ('protocolVersion',16,1), ('reserved_288',16,1), ('reserved_304',16,1), ('sendMessageDepth',16,1), ('reserved_336',8,1), ('RDMAReadDepth',8,1), ('sendMessageSize',32,1), ('RDMATransferSize',32,1), ('controllerOperationsMask',8,1), ('reserved_424',8,1), ('serviceEntries',8,1), ('reserved_440',8,1), ('reserved_448',64,1), ('IDString',8,64)]
Member Position Type
GUID 0:8 (64) GUID
vendorID 8:11 (24) int
reserved_88 11:12 (8) int
deviceID 12:16 (32) int
deviceVersion 16:18 (16) int
reserved_144 18:20 (16) int
subsystemVendorID 20:23 (24) int
reserved_184 23:24 (8) int
subsystemID 24:28 (32) int
IOClass 28:30 (16) int
IOSubclass 30:32 (16) int
protocol 32:34 (16) int
protocolVersion 34:36 (16) int
reserved_288 36:38 (16) int
reserved_304 38:40 (16) int
sendMessageDepth 40:42 (16) int
reserved_336 42:43 (8) int
RDMAReadDepth 43:44 (8) int
sendMessageSize 44:48 (32) int
RDMATransferSize 48:52 (32) int
controllerOperationsMask 52:53 (8) int
reserved_424 53:54 (8) int
serviceEntries 54:55 (8) int
reserved_440 55:56 (8) int
reserved_448 56:64 (64) int
IDString 64:128 (8) [bytearray (64)]*64
class rdma.IBA.DMIOUnitInfo

List of all I/O Controllers in a I/O Unit (section 16.3.3.3)

MAD_LENGTH = 132
MAD_ATTRIBUTE_ID = 0x10
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('changeID',16,1), ('maxControllers',8,1), ('reserved_24',6,1), ('diagDeviceID',1,1), ('optionROM',1,1), ('controllerList',1024,1)]
Member Position Type
changeID 0:2 (16) int
maxControllers 2:3 (8) int
reserved_24 3:3[6] (6) int
diagDeviceID 3[6]:3[7] (1) int
optionROM 3[7]:4 (1) int
controllerList 4:132 (1024) bytearray (128)
class rdma.IBA.DMPrepareToTest

Prepare Device for Test (section 16.3.3.7)

MAD_LENGTH = 0
MAD_ATTRIBUTE_ID = 0x21
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MAD_DEVMGTSET = 0x2 # MAD_METHOD_SET
MEMBERS = []
Member Position Type
     
class rdma.IBA.DMServiceEntries

List of Supported Services and Their Associated Service IDs (section 16.3.3.5)

MAD_LENGTH = 192
MAD_ATTRIBUTE_ID = 0x12
MAD_DEVMGTGET = 0x1 # MAD_METHOD_GET
MEMBERS = [('serviceEntry',384,4)]
Member Position Type
serviceEntry 0:192 (384) [DMServiceEntry]*4
class rdma.IBA.DMServiceEntry

Service Entry (section 16.3.3)

MAD_LENGTH = 48
MEMBERS = [('serviceName',8,40), ('serviceID',64,1)]
Member Position Type
serviceName 0:40 (8) [bytearray (40)]*40
serviceID 40:48 (64) int
class rdma.IBA.DMTestDeviceLoop

Test Device Continuously (section 16.3.3.9)

MAD_LENGTH = 0
MAD_ATTRIBUTE_ID = 0x23
MAD_DEVMGTSET = 0x2 # MAD_METHOD_SET
MEMBERS = []
Member Position Type
     
class rdma.IBA.DMTestDeviceOnce

Test Device Once (section 16.3.3.8)

MAD_LENGTH = 0
MAD_ATTRIBUTE_ID = 0x22
MAD_DEVMGTSET = 0x2 # MAD_METHOD_SET
MEMBERS = []
Member Position Type
     

4.7.8. SNMP Tunneling (16.4)

class rdma.IBA.SNMPCommunityInfo

Community Name Data Store (section 16.4.3.2)

MAD_LENGTH = 64
MAD_ATTRIBUTE_ID = 0x10
MAD_SNMPSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('communityName',8,64)]
Member Position Type
communityName 0:64 (8) [bytearray (64)]*64
class rdma.IBA.SNMPFormat

An aggregation of: MADHeader

SNMP Tunneling MAD Format (section 16.4.1)

MAD_LENGTH = 256
MAD_CLASS = 0x8
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('reserved_192',256,1), ('RAddress',32,1), ('payloadLength',8,1), ('segmentNumber',8,1), ('sourceLID',16,1), ('data',1536,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
reserved_192 24:56 (256) bytearray (32)
RAddress 56:60 (32) int
payloadLength 60:61 (8) int
segmentNumber 61:62 (8) int
sourceLID 62:64 (16) int
data 64:256 (1536) bytearray (192)
class rdma.IBA.SNMPPDUInfo

Data Segment (section 16.4.3.3)

MAD_LENGTH = 192
MAD_ATTRIBUTE_ID = 0x11
MAD_SNMPSEND = 0x3 # MAD_METHOD_SEND
MEMBERS = [('PDUData',1536,1)]
Member Position Type
PDUData 0:192 (1536) bytearray (192)

4.7.9. Vendor Specific Management (16.5)

class rdma.IBA.VendFormat

An aggregation of: MADHeader

Vendor Specific Management MAD Format (section 16.5.1)

MAD_LENGTH = 256
MAD_CLASS = 0x9
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('data',1856,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
data 24:256 (1856) bytearray (232)
class rdma.IBA.VendOUIFormat

An aggregation of: MADHeader, RMPPHeader

Vendor Specific Management MAD Format with OUI (section 16.5.1)

MAD_LENGTH = 256
MAD_CLASS = 0x30
MAD_CLASS_VERSION = 0x1
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('RMPPVersion',8,1), ('RMPPType',8,1), ('RRespTime',5,1), ('RMPPFlags',3,1), ('RMPPStatus',8,1), ('data1',32,1), ('data2',32,1), ('reserved_288',8,1), ('OUI',24,1), ('data',1728,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
RMPPVersion 24:25 (8) int
RMPPType 25:26 (8) int
RRespTime 26:26[5] (5) int
RMPPFlags 26[5]:27 (3) int
RMPPStatus 27:28 (8) int
data1 28:32 (32) int
data2 32:36 (32) int
reserved_288 36:37 (8) int
OUI 37:40 (24) int
data 40:256 (1728) bytearray (216)

4.7.10. Miscellaneous IBA Structures

class rdma.IBA.CMFormat

An aggregation of: MADHeader

Request for Communication (section 16.7.1)

MAD_LENGTH = 256
MAD_CLASS = 0x7
MAD_CLASS_VERSION = 0x2
MEMBERS = [('baseVersion',8,1), ('mgmtClass',8,1), ('classVersion',8,1), ('method',8,1), ('status',16,1), ('classSpecific',16,1), ('transactionID',64,1), ('attributeID',16,1), ('reserved_144',16,1), ('attributeModifier',32,1), ('data',1856,1)]
Member Position Type
baseVersion 0:1 (8) int
mgmtClass 1:2 (8) int
classVersion 2:3 (8) int
method 3:4 (8) int
status 4:6 (16) int
classSpecific 6:8 (16) int
transactionID 8:16 (64) int
attributeID 16:18 (16) int
reserved_144 18:20 (16) int
attributeModifier 20:24 (32) int
data 24:256 (1856) bytearray (232)
class rdma.IBA.HdrAETH

ACK Extended Transport Header (section 9.3.5)

MAD_LENGTH = 4
MEMBERS = [('syndrome',8,1), ('MSN',24,1)]
Member Position Type
syndrome 0:1 (8) int
MSN 1:4 (24) int
class rdma.IBA.HdrAtomicAckETH

Atomic Acknowledge Extended Transport Header (section 9.5.3)

MAD_LENGTH = 8
MEMBERS = [('origRData',64,1)]
Member Position Type
origRData 0:8 (64) int
class rdma.IBA.HdrAtomicETH

Atomic Extended Transport Header (section 9.3.4)

MAD_LENGTH = 28
MEMBERS = [('VA',64,1), ('RKey',32,1), ('swapData',64,1), ('cmpData',64,1)]
Member Position Type
VA 0:8 (64) int
RKey 8:12 (32) int
swapData 12:20 (64) int
cmpData 20:28 (64) int
class rdma.IBA.HdrBTH

Base Transport Header (section 9.2)

MAD_LENGTH = 12
MEMBERS = [('service',3,1), ('function',5,1), ('SE',1,1), ('migReq',1,1), ('padCnt',2,1), ('TVer',4,1), ('PKey',16,1), ('reserved_32',8,1), ('destQP',24,1), ('ackReq',1,1), ('reserved_65',7,1), ('PSN',24,1)]
Member Position Type
service 0:0[3] (3) int
function 0[3]:1 (5) int
SE 1:1[1] (1) int
migReq 1[1]:1[2] (1) int
padCnt 1[2]:1[4] (2) int
TVer 1[4]:2 (4) int
PKey 2:4 (16) int
reserved_32 4:5 (8) int
destQP 5:8 (24) int
ackReq 8:8[1] (1) int
reserved_65 8[1]:9 (7) int
PSN 9:12 (24) int
class rdma.IBA.HdrDETH

Datagram Extended Transport Header (section 9.3.2)

MAD_LENGTH = 8
MEMBERS = [('QKey',32,1), ('reserved_32',8,1), ('srcQP',24,1)]
Member Position Type
QKey 0:4 (32) int
reserved_32 4:5 (8) int
srcQP 5:8 (24) int
class rdma.IBA.HdrFlowControl

Flow Control Packet (section 7.9.4)

MAD_LENGTH = 4
MEMBERS = [('op',4,1), ('FCTBS',12,1), ('VL',4,1), ('FCCL',12,1)]
Member Position Type
op 0:0[4] (4) int
FCTBS 0[4]:2 (12) int
VL 2:2[4] (4) int
FCCL 2[4]:4 (12) int
class rdma.IBA.HdrGRH

Global Route Header (section 8.3)

MAD_LENGTH = 40
MEMBERS = [('IPVer',4,1), ('TClass',8,1), ('flowLabel',20,1), ('payLen',16,1), ('nxtHdr',8,1), ('hopLmt',8,1), ('SGID',128,1), ('DGID',128,1)]
Member Position Type
IPVer 0:0[4] (4) int
TClass 0[4]:1[4] (8) int
flowLabel 1[4]:4 (20) int
payLen 4:6 (16) int
nxtHdr 6:7 (8) int
hopLmt 7:8 (8) int
SGID 8:24 (128) GID
DGID 24:40 (128) GID
class rdma.IBA.HdrIETH

Invalidate Extended Transport Header (section 9.3.7)

MAD_LENGTH = 4
MEMBERS = [('RKey',32,1)]
Member Position Type
RKey 0:4 (32) int
class rdma.IBA.HdrImmDt

Immediate Extended Transport Header (section 9.3.6)

MAD_LENGTH = 4
MEMBERS = [('immediateData',32,1)]
Member Position Type
immediateData 0:4 (32) int
class rdma.IBA.HdrLRH

Local Route Header (section 7.7)

MAD_LENGTH = 8
MEMBERS = [('VL',4,1), ('LVer',4,1), ('SL',4,1), ('reserved_12',2,1), ('LNH',2,1), ('DLID',16,1), ('reserved_32',5,1), ('pktLen',11,1), ('SLID',16,1)]
Member Position Type
VL 0:0[4] (4) int
LVer 0[4]:1 (4) int
SL 1:1[4] (4) int
reserved_12 1[4]:1[6] (2) int
LNH 1[6]:2 (2) int
DLID 2:4 (16) int
reserved_32 4:4[5] (5) int
pktLen 4[5]:6 (11) int
SLID 6:8 (16) int
class rdma.IBA.HdrRDETH

Reliable Datagram Extended Transport Header (section 9.3.1)

MAD_LENGTH = 4
MEMBERS = [('reserved_0',8,1), ('EEC',24,1)]
Member Position Type
reserved_0 0:1 (8) int
EEC 1:4 (24) int
class rdma.IBA.HdrRETH

RDMA Extended Transport Header (section 9.3.3)

MAD_LENGTH = 16
MEMBERS = [('VA',64,1), ('RKey',32,1), ('DMALen',32,1)]
Member Position Type
VA 0:8 (64) int
RKey 8:12 (32) int
DMALen 12:16 (32) int
class rdma.IBA.HdrRWH

Raw Header (section 5.3)

MAD_LENGTH = 4
MEMBERS = [('reserved_0',16,1), ('etherType',16,1)]
Member Position Type
reserved_0 0:2 (16) int
etherType 2:4 (16) int

Table Of Contents

Previous topic

3.3. rdma.tools module

Next topic

5. MAD RPC Processing

This Page