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

Inherits C14_016_Base.

Protected Member Functions

boolean initialize () throws TestException
 

Private Member Functions

void TestProtectBits0 () throws TestException
 
void TestProtectBits1 () throws TestException
 
void TestProtectBits2or3 () throws TestException
 
void PerformInitialSteps () throws TestException
 PerformInitialSteps More...
 

Detailed Description

14.1.4.2 V1C14-016 M_KEY CHECKING FOR SUBNGET()

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 SubnGet().

Coverage: v1c14-016, 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:

  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.
  4. M_Key components of PortInfo are undefined for switch physical ports. M_Key checking for switch physical port attributes is performed using PortInfo:M_Key of switch port 0.

14.1.4.2.1 M_KEY CHECKING FOR SUBNGET() WHEN PORTINFO:M_KEYPROTECTBITS = 0

14.1.4.2.2 M_KEY CHECKING FOR SUBNGET() WHEN PORTINFO:M_KEYPROTECTBITS = 1

14.1.4.2.3 M_KEY CHECKING FOR SUBNGET() WHEN PORTINFO:M_KEYPROTECTBITS = 2 OR 3

Test Procedure

◆ initialize()

boolean initialize ( ) throws TestException
protected

Initialization:

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

  2. DUT PortInfo:M_Key = M_KEY_DUT.

  3. DUT PortInfo:M_KeyProtectBits = <as specified>.

◆ TestProtectBits0()

void TestProtectBits0 ( ) throws TestException
private

14.1.4.2.1 M_KEY CHECKING FOR SUBNGET() WHEN PORTINFO:M_KEYPROTECTBITS = 0 Assertions: v1c14-016#01.01, v1c14-029#01.01

Initialization: see Initialization

Test Procedure:

  1. See PerformInitialSteps for steps 1-4

  2. SMP_DATA = ReceiveMad( SubnGetResp(PortInfo) ) // v1c14-016#01.01, v1c14-029#01.01

    Remark: Test succeeds when M_Key supplied in SubnGet() is not the same as the DUT PortInfo:M_Key.

  3. Verify SMP_DATA format:

    • PortInfo:M_Key == M_KEY_DUT
    • PortInfo:M_KeyViol = 0

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

◆ TestProtectBits1()

void TestProtectBits1 ( ) throws TestException
private

14.1.4.2.2 M_KEY CHECKING FOR SUBNGET() WHEN PORTINFO:M_KEYPROTECTBITS = 1 Assertions: v1c14-016#02.01, v1c14-029#01.01

Initialization: see Initialization

Test Procedure:

  1. See PerformInitialSteps for steps 1-4

  2. SMP_DATA = ReceiveMad( SubnGetResp(PortInfo) ) // v1c14-016#02.01, v1c14-029#01.01

    Remark: Test succeeds when M_Key supplied in SubnGet() is not the same as the DUT PortInfo:M_Key, but value of returned PortInfo:M_Key is 0.

    Remark: Test succeeds when M_Key supplied in SubnGet() is not the same as the DUT PortInfo:M_Key, but value of returned PortInfo:M_Key is 0.

  3. Verify SMP_DATA format:

    • PortInfo:M_Key == 0
    • PortInfo:M_KeyViol = 0

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

◆ TestProtectBits2or3()

void TestProtectBits2or3 ( ) throws TestException
private

14.1.4.2.3 M_KEY CHECKING FOR SUBNGET() WHEN PORTINFO:M_KEYPROTECTBITS = 2 OR 3

Assertions: v1c14-016#03.01, v1c14-016#04.01, v1c14-029#01.01, v1c14-029#01.02

Notes:

  1. A timeout occurs based on the rules of Volume 1 Section 13.4.6.2 Timers and Timeouts.

Initialization: see Initialization

Test Procedure:

  1. See PerformInitialSteps for steps 1-4

  2. VerifyNoReceiveMad( SubnGetResp( PortInfo) ) // after approp. timeout // v1c14-016#03.01, v1c14-016#04.01, v1c14-029#01.02

    Remark: Should not receive a SubnGetResp(PortInfo) because M_Key checking should have failed. Options for identifying M_Key check failures in- clude 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).

  3. SendMad(SetNumberField(SubnGet(SMI_Attribute.PortInfo)) with MAD_M_KEY = M_KEY_DUT

  4. SMP_DATA = ReceiveMad()

  5. Verify IB_PORT_MKEY_VIOL == 1

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

◆ PerformInitialSteps()

void PerformInitialSteps ( ) throws TestException
private

PerformInitialSteps

  1. SendMad( SubnGet(PortInfo) where MADHeader:M_Key=M_KEY_DUT )

  2. SMP_DATA = ReceiveMad( SubnGetResp(PortInfo) ) // v1c14-016#01.01, v1c14-029#01.01

    Remark: Test succeeds when M_Key supplied in SubnGet() is the same as the DUT PortInfo:M_Key.

  3. Verify SMP_DATA format:

    • PortInfo:M_Key == M_KEY_DUT

  4. SendMad( SubnGet(PortInfo) where MADHeader:M_Key=M_KEY_OTHER )


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