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

Inherits TransportTest.

Public Member Functions

 C09_130_01 ()
boolean execute () throws TestException

Protected Member Functions

boolean initialize () throws TestException

Detailed Description V1C09-130 Requester/Responder RNR NAK Behavior

Abstract: This test verifies that an HCA requester waits for at least the time interval specified in the RNR NAK before retrying its request.

Coverage: v1c09-130

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

DUT Qualifiers: None

Notes: None.

Test Case Description

◆ C09_130_01() V1C09-130 Requester/Responder RNR NAK Behavior

Assertions: V1c09-130#01


  • The DUT (as requester) will post an RC SEND ONLY
  • The TT (as responder) returns an RNR NAK with some non-infinite time interval (RNR_NAK = 11111 [492.52 msec]).
  • Variable CC as structure of type ChannelContext_t
  • Variable SENDWQE as structure of type RcSendDut_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: Llolsten Kaonga

Test Procedure

◆ initialize()

boolean initialize ( ) throws TestException


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

  2. Set QP RNR Retry Count = 1. Setting it to the default (0) will result in a QP completion which we want to avoid.

◆ 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 *RemarkThere is only one packet in this case

  3. Transmit 1 RC SEND ONLY WQE from DUT at size (PMTU).

    • SENDWQE.MsgSize = CC.PMTU
    • SENDWQE.Count = 1
    • PostRcSend( CC, SENDWQE )

  4. Receive all expected packets

  5. Verify the packet was received and was valid

  6. Verify the message contained the packet with opcode Send Only and the correct PSN

  7. Transmit RNR NAK packet to NAK the Send Only request (MSN = 1)

    • PACKET_OUT.HeaderMask = LOCAL | RNR NAK
    • PACKET_OUT.AETH_Syndrome = RNR NAK (491.52 msec [11111])
    • CC.TT_TxRespPSN = Mod( CC.DUT_Start_PSN + 0, 2^24 )
      • Remark: This is ACKing the last packet of the first message
    • TransportTxPacket( CC, PACKET_OUT )

  8. Poll for completion of Send Only message on DUT's send queue

  9. Verify there is no work completion dequeued from the send queue

  10. Verify that the DUT throws the IBV_WC_RNR_RETRY_EXEC_ERR error

  11. CloseRcChannel( CC )

    • Remark: Flush unacknowledged WQE.

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