InfiniBand Test Specification  1.0.38
Public Member Functions | Protected Member Functions | List of all members

Inherits C14_016_Base.

Public Member Functions

 C14_016_Set ()
boolean execute () throws TestException

Protected Member Functions

boolean initialize () throws TestException

Detailed Description V1C14-016 M_KEY CHECKING FOR SUBNSET()

Abstract: Check that M_Key checking is correctly performed for different values of PortInfo:M_KeyProtectBits when PortInfo:M_Key is non-zero and the request is SubnSet().

Coverage: v1c14-016, v1c14-026, v1c14-029

Topology Configuration: SimpleLink: Tester=MAD Tester; Width=1X, 2X, 4X, 8X, or 12X; Speed=SDR, DDR, QDR, FDR, EDR, HDR; DUT=Node.

DUT Qualifiers: None.

Notes: A timeout should occur based on the rules of Volume 1 Section Timers and Timeouts.

Test Case Description

◆ C14_016_Set() ALGORITHM Assertions: v1c14-016#01.02, v1c14-016#02.02, v1c14-016#03.02, v1c14-016#04.02, v1c14-026#01, v1c14-029#02.01, v1c14-029#02.02 Notes:

  1. M_KEY_DUT is a 64-bit (8-byte) variable whose value is non-zero. This value is used in initializing the DUT PortInfo:M_Key.
  2. M_KEY_OTHER is a 64-bit (8-byte) variable whose value is non-zero and is not the same as M_KEY_DUT.
  3. SMP_DATA is a variable of type MadPacketSpec.

Test Procedure

◆ initialize()

boolean initialize ( ) throws TestException


  1. DUT PortInfo:PortState = Initialize, Armed, or Active.

  2. DUT PortInfo:M_Key = M_KEY_DUT.

  3. DUT PortInfo:M_KeyProtectBits = 0, 1, 2, or 3.

◆ execute()

boolean execute ( ) throws TestException

Test Procedure:

  1. SendMad( SubnGet(PortInfo) )

  2. SMP_DATA = ReceiveMad( SubnGetResp(PortInfo) )

  3. Modify a Read-Write component of SMP_DATA.PortInfo with a valid value.

  4. SendMad( SubnSet(PortInfo) where MADHeader:M_Key=M_KEY_DUT, MADHeader:SMPData=SMP_DATA.PortInfo )

  5. SMP_DATA = ReceiveMad( SubnGetResp(PortInfo) ) // v1c14-029#02.01

  6. Verify( SMP_DATA.PortInfo is the same as the modified value in Step 3 ) v1c14-026#01

  7. SendMad( SubnSet(PortInfo) where MADHeader:M_Key=M_KEY_OTHER, MADHeader:SMPData=SMP_DATA.PortInfo )

  8. VerifyNoReceiveMad( SubnGetResp(PortInfo) ) // after appropriate timeout // v1c14-016#01.02, v1c14-016#02.02, v1c14-016#03.02, v1c14-016#04.02, v1c14-029#02.02

    Remark: Should not receive a SubnGetResp(PortInfo) because M_Key checking should have failed. Options for identifying M_Key check failures include Trap 256 (if it is implemented) or the PortInfo:M_KeyViolations counter for the DUT (which should be examined before and after the previous step).

  9. SendMad(SubnGet(SMI_Attribute.PortInfo)) where Mad_MKEY = M_KEY_DUT

  10. SMP_DATA = ReceiveMad()

  11. Verify MKeyViolatoins > 0

  12. Reset MKey = 0; ProtectBits = 0 and MKeyViolations = 0"

The documentation for this class was generated from the following file: