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

Inherits MadTest.

Public Member Functions

 C14_024_06_CA_06 ()
 
boolean execute () throws TestException
 

Protected Member Functions

boolean initialize () throws TestException
 

Detailed Description

24.1.5.4.6 PORTINFO FOR XCA AND ROUTER ONLY - PART 6

24.1.5.4 V1C14-024.1.1 SUBNET MANAGEMENT ATTRIBUTE - PORTINFO

Abstract: This test performs checks of PortInfo attribute and components for xCAs and Routers. Included are tests for both Read-Only (RO) and Read-Write (RW) attribute components.

Coverage: v1c13-024, v1c14-024.1.1, v1c14-027, v1c14-028, v1c14-029, v1c14-030

Topology Configuration: SimpleLink: Tester=MAD Tester; Width=1X, 4X, 8X, or 12X; Speed=SDR, DDR, or QDR; DUT=xCA or Router.

DUT Qualifiers: None, unless specified in algorithm section. Notes: Additional checking of method/attribute combinations is performed in tests for v1c14-003.

Test Case Description

◆ C14_024_06_CA_06()

24.1.5.4.6 PORTINFO FOR XCA AND ROUTER ONLY - PART 6

Assertions: v1c13-024#01, v1c14-024.1.1#06.01, v1c14-024.1.1#06.02, v1c14-024.1.1#06.04, v1c14-024.1.1#06.05, v1c14-024.1.1#06.06, v1c14-030#01

Notes:

  1. Execute this test for xCA devices and routers ONLY.
  2. This TD refers only to the test cases in which AttributeModifier is 0 or equal to the port whose receiving the SMP. // v1c14-024.1.1#06.05, v1c14-024.1.1#06.06
  3. This TD tests the RW fields which had special operation with specific values (legal values).
  4. A timeout occurs based on the rules of Volume 1 Section 13.4.6.2 Timers and Timeouts.
  5. Repeat all steps with Attribute Modifier as 0 to NUM_PORTS and equal to the port which the MAD is sent to (apart from 0). Repeat for all legal ports of the xCAs or routers ( 1 to number of ports as noted in NodeInfo:NumPorts).
  6. Variable PORT_INFO_DATA and PORT_INFO_DATA1 as structures of Port- Info Attribute which contains all fields as Integers.
  7. Variable SMP_DATA of type MadPacketSpec

Developer: Kevin King

Test Procedure

◆ initialize()

boolean initialize ( ) throws TestException
protected

Initialization:

  1. PortInfo:PortState is Initialized, Armed or Active for both MADTester and DUT.

  2. DUT PortInfo:M_Key = 0 on all ports.

  3. DUT PortInfo:M_KeyProtectBits = 0 on all ports.

◆ execute()

boolean execute ( ) throws TestException

Test Procedure:

  1. SendMad (SubnGet(PortInfo))

  2. PORT_INFO_DATA = ReceiveMad (SubnGetResp(PortInfo):MADHeader:MADData)// v1c14-024.1.1#06.02, v1c14-030#01

  3. PORT_INFO_DATA1 = PORT_INFO_DATA

    • Remark: Change RW fields of PORT_INFO_DATA1 which have special cases in PortInfo.
    • PORT_INFO_DATA1.LinkWidthEnabled = 0
    • PORT_INFO_DATA1.PortState = 0
    • PORT_INFO_DATA1.PortPhysicalState = 0
    • PORT_INFO_DATA1.LinkDownDefaultState = 0
    • PORT_INFO_DATA1.LinkSpeedEnabled = 0
    • PORT_INFO_DATA1.OperationalVLs = 0

  4. SendMad (SubnSet(PortInfo where MADHeader:AttributeModifier = as specified, where MADHeader:MADData = PORT_INFO_DATA1)) Remark: Test RW fields of PortInfo - Previous values should not be changed.

  5. SMP_DATA = ReceiveMad (SubnGetResp(PortInfo))

  6. Verify SMP_DATA format: // v1c14-024.1.1#06.01, v1c14-024.1.1#06.04, v1c14-024.1.1#06.05, v1c14-024.1.1#06.06, v1c14-030#01

    • MADHeader:AttributeID == PortInfo
    • MADHeader:AttributeModifier == as specified
    • MADHeader:Status.Code == 0. // v1c13-024#01
    • SMP_DATA:MADHeader:SMPData == PORT_INFO_DATA // v1c14-024.1.1#06.04

  7. PORT_INFO_DATA1 = PORT_INFO_DATA

    • Remark: Change RW fields of PORT_INFO_DATA1 which have special cases in PortInfo.
    • PORT_INFO_DATA1.LinkWidthEnabled = 255
    • PORT_INFO_DATA1.LinkSpeedEnabled = 15
    • Remark: These values in these specific fields should be returned with the supported values of the same items.

  8. SendMad (SubnSet(PortInfo where MADHeader:AttributeModifier = as specified, where MADHeader:MADData = PORT_INFO_DATA1))

  9. SMP_DATA = ReceiveMad (SubnGetResp(PortInfo))

  10. Verify SMP_DATA format: // v1c14-024.1.1#06.01, v1c14-024.1.1#06.04, v1c14-024.1.1#06.05, v1c14-024.1.1#06.06, v1c14-030#01

    • MADHeader:AttributeID == PortInfo
    • MADHeader:AttributeModifier == as specified
    • MADHeader:Status.Code == 0. // v1c13-024#01 (cont)
    • SMP_DATA:MADHeader:SMPData.LinkWidthEnabled == SMP_DATA:MADHeader:SMPData.LinkWidthSupported // v1c14-024.1.1#06.04
    • SMP_DATA:MADHeader:SMPData.LinkSpeedEnabled == SMP_DATA:MADHeader:SMPData.LinkSpeedSupported // v1c14-024.1.1#06.04

  11. Reset all values to there initial values as they where in PORT_INFO_DATA

  12. SendMad (SubnGet(PortInfo where MADHeader:AttributeModifier = as specified))

  13. SMP_DATA = ReceiveMad (SubnGetResp(PortInfo))

  14. If (SMP_DATA:MADHeader:SMPData.CapabilityMask.IsReinitSupported == 0) Then // v1c14-024.1.1#06.01, v1c14-024.1.1#06.02, v1c14-024.1.1#06.05, v1c14-024.1.1#06.06, v1c14-030#01

    • Verify that SMP_DATA:MADHeader:SMPData.InitType == 0
    • Verify that SMP_DATA:MADHeader:SMPData.InitTypeReply == 0
    • Remark: Both fields Shall be 0 if not implemented.

  15. Else

    • PORT_INFO_DATA1 = PORT_INFO_DATA
    • Remark: Change RW field InitTypeReply of PORT_INFO_DATA1 which have special case in PortInfo.
    • PORT_INFO_DATA1.InitTypeReply = any valid value which is not equal to the same value currently in this field
    • SendMad (SubnSet(PortInfo where MADHeader:AttributeModifier = as specified, where MADHeader:MADData = PORT_INFO_DATA1))
    • SMP_DATA = ReceiveMad (SubnGetResp(PortInfo))
    • Verify SMP_DATA format: // v1c14-024.1.1#06.01, v1c14-024.1.1#06.04, v1c14-024.1.1#06.05, v1c14-024.1.1#06.06, v1c14-030#01
    • MADHeader:AttributeID == PortInfo
    • MADHeader:AttributeModifier == as specified
    • MADHeader:Status.Code == 0. // v1c13-024#01 (cont)
    • SMP_DATA:MADHeader:SMPData.InitTypereply == PORT_INFO_DATA1.InitTypeReply

  16. End If

  17. PORT_INFO_DATA1 = PORT_INFO_DATA

    • Remark: Change RW fields of PORT_INFO_DATA1 which have special cases in PortInfo. Testing Physical link to Disable state. This action might result with DUT response or without it, both ways are legal.
    • PORT_INFO_DATA1.PortPhysicalState = 3

  18. SendMad (SubnSet(PortInfo where MADHeader:AttributeModifier = as specified, where MADHeader:MADData = PORT_INFO_DATA1))

    • Remark: Ignore response to the MAD if was sent by the DUT.

  19. if (NUM_PORTS == 1 ) Then

    Remark: If the xCA or Router number of ports equals to 1. Then try to send to the port packets and verify no response has been generated

    • SendMad (SubnGet(PortInfo where MADHeader:AttributeModifier = as specified))
    • VerifyNoReceiveMad(SubnGetResp(PortInfo))
    • Remark: Wait the appropriate time out .

  20. Else

    • Remark: If xCA or Router number of ports is more then 1. Then connect to another port on the node and since all M_Key checks are disabled it is possible to get the tested port state.
    • Disconnect from current local port and reconnect to anther port on the Node.
    • SendMad (SubnGet(PortInfo where MADHeader:AttributeModifier = this test local port ))
    • SMP_DATA = ReceiveMad (SubnGetResp(PortInfo))
    • Verify SMP_DATA:MADHeader:SMPData.PortPhysicalState == 3.

  21. End If


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