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

Inherits TransportTest.

Public Member Functions

 C09_060_09_01 ()
 
boolean execute () throws TestException
 

Protected Member Functions

boolean initialize () throws TestException
 

Detailed Description

9.7.0.1 V1C09-060 RELIABLE SERVICE COMPLETION RULES

Abstract: This test verifies the completion rules for Reliable Services.

Coverage: v1c09-060

Topology Configuration: SimpleLink: Tester=Transport Tester; Width=1X, 4X, or 12X; DUT=xCA

Test Case Description

◆ C09_060_09_01()

9.7.0.1.5 V1C09-060 RC Atomic Compare and Swap Case (inverted requester/responder)

Assertions: V1c09-060#05

Notes:

  • The TT (as requester) will post a RC Atomic Cmp Swap request expecting an Atomic Ack from the DUT (as responder)
  • Variable CC as structure of type ChannelContext_t
  • Variable ATOMICWQE as structure of type RcAtomicDut_t
  • Variables PACKET_IN, PACKET_OUT as structure of type PacketType_t
  • Variable COMPLETE as structure of type PollDut_t
  • Variable N of type Integer for loops

Developer: Mike Bogochow

Test Procedure

◆ initialize()

boolean initialize ( ) throws TestException
protected

Initialization:

  1. OpenRcChannel( CC ) // (reliable connection)

◆ execute()

boolean execute ( ) throws TestException

Test Procedure:

  1. Register memory region for receiving remote packets

  2. Post one receive request for each expected packet from DUT

  3. Transmit 2 Atomic Cmp Swap WQEs from TT

  4. Transmit Atomic Cmp Swap Packet

    • PACKET_OUT.HeaderMask = LOCAL | CMP_SWAP
    • PACKET_OUT.BTH_OpCode = ATOMIC_CMP_SWAP
    • CC.TT_TxReqPSN = Mod( CC.Start_PSN + 0, 2^24)
    • PACKET_OUT.BTH_AckReq = 1
    • PACKET_OUT.Atomic_vaddr = DUT buffer address
    • PACKET_OUT.Atomic_rkey = DUT rkey
    • PACKET_OUT.Atomic_CMP = 1 // User specified CMP data
    • PACKET_OUT.Atomic_SWAP_ADD = 0 // User specified SWAP/ADD
    • TransportTxPacket( CC, PACKET_OUT )

  5. Transmit Atomic Cmp Swap Packet

    • PACKET_OUT.HeaderMask = LOCAL | CMP_SWAP
    • PACKET_OUT.BTH_OpCode = ATOMIC_CMP_SWAP
    • CC.TT_TxReqPSN = Mod( CC.Start_PSN + 1, 2^24)
    • PACKET_OUT.BTH_AckReq = 1
    • PACKET_OUT.Atomic_vaddr = DUT buffer address
    • PACKET_OUT.Atomic_rkey = DUT rkey
    • PACKET_OUT.Atomic_CMP = 1 // User specified CMP data
    • PACKET_OUT.Atomic_SWAP_ADD = 0 // User specified SWAP/ADD
    • TransportTxPacket( CC, PACKET_OUT )

  6. Receive all expected packets

  7. Verify all packets were received and were valid

  8. Verify each message contained packets with opcodes Send First, Middle, and Last with incrementing PSN

  9. CloseRcChannel( CC )

    • Remark: Flush unacknowledged WQE.


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