Responder QP's RQ Logic Request PSN Verification

Start ePSN Assignment

When a RC or UC QP is created, the ePSN (expected PSN) assigned to its RQ Logic must be the same as the Start PSN assigned to the remote QP's SQ Logic (see “Start PSN Assignment” on page 206).

ePSN Verification and Update

When a request packet is received from the remote QP's SQ Logic, the RQ Logic compares the request packet's PSN to the current ePSN. If they are equal, then the request packet has the correct PSN and it will be processed by the RQ Logic. The RQ Logic then updates its ePSN as follows:

  • If the request packet just received and verified was not an RDMA Read request packet, the ePSN is incremented by one.

  • If the request packet just received and verified was an RDMA Read request packet, ePSN = ePSN + the number of requested RDMA Read response packets.

Duplicate Requests

Duplicate Request Detection

The remote QP's SQ Logic might retry the transmission of a request packet (e.g., see “Packet Delivery Delays” on page 389) and the RQ Logic might ultimately receive both copies of the request packet. Upon receipt of the first copy of the request packet, the RQ Logic verifies that its PSN matches the ePSN, and updates the ePSN by adjusting the Ack'd request region upward. If it should then receive the second copy of the request packet, its PSN will fall within the duplicate request range. The RQ Logic will therefore treat it as a duplicate request.[1] For a detailed description of the causes of and treatment of duplicate requests, see “RC Transport Service” on page 351. The maximum size of the duplicate region is 8,388,609 PSNs (refer to “Worst-Case Duplicate Range Size” on page 210 for background).

[1] Note that if the request is an Atomic request, it must be verified as identical in all respects to the original copy of the request (saved by the RQ Logic). If it is an RDMA Read request, it must be verified that it is either identical to the original request or that it is requesting a read of a subset of the original data.

RQ Logic's Handling of a Duplicate Request

For a detailed description of the rules for handling duplicate request packets, refer to “RQ Logic's Handling of Duplicate Request Packets” on page 439.

Invalid Request Detection

If the RQ Logic receives a request packet wherein the PSN is neither the ePSN nor does it fall into the duplicate request region, it is assumed that one or more request packets have been lost in the fabric. How this is handled depends on the type of QP:

  • RC or RD. The RQ Logic takes the following actions:

    - The request packet is not processed.

    - Any request packets received prior to the out-of-sequence request are processed, completed, and responded to before the Nak is issued.

    - It transmits a PSN Sequence Error Nak to the remote QP's SQ Logic.

    - The responder does not update its expected PSN.

    The RQ Logic then resumes waiting for a valid inbound request packet that has a PSN equal to its ePSN or that is within its duplicate request region. If, while waiting, the RQ Logic receives any request packets with invalid PSNs, those packets are silently dropped and a Nak is not returned in response to them.

  • UC. If the RQ Logic determines that the PSN of the received request packet is not equal to its ePSN, it takes the following actions:

    - If the packet just received has a “first” or “only” opcode, then it is the first (or only) packet of a new message. That request packet is accepted as the first (or only) packet of a new message and the RQ Logic sets its ePSN equal to that packet PSN.

    - If the packet just received does not have a “first” or “only” opcode, the RQ Logic discards that packet and all subsequently received request packets until it receives a packet with a “first” or “only” opcode. That request packet is accepted as the first (or only) packet of a new message and the RQ Logic sets its ePSN equal to that packet PSN.

  • UD. The RQ Logic of an UD QP typically does no PSN checking (because UD messages are wholly contained in a single packet).

RQ Logic PSN Rollover

It is possible that the ePSN may ultimately arrive at the 224 minus 1 upper PSN boundary (a PSN of FFFFFFh). The specification does not describe the actions taken by the QP's RQ Logic in this eventuality. It is the author's opinion that after its ePSN grows to FFFFFFh and must then be incremented, the RQ Logic's ePSN will roll over to zero and continue growing upwards from there.

Figure 11-3. Responder QP's RQ Logic Request PSN Verification


..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.14.147.123