RQ Logic Operation

Header Validation

Figure 17-25 on page 438 and Figure 18-1 on page 460 illustrate the process of validating the incoming packet's headers.

RQ Logic PSN Check Can Be Skipped

Since each complete message is wholly contained with a single request packet, the RQ Logic can be designed to ignore the PSN field (i.e., it does not perform a check of the PSN in each packet to make sure that it is one higher than the PSN received in the previous request packet).

Some special-purpose CA designs (e.g., media streaming), however, may check each request packet's PSN in order to detect missing packets.

Q_Key Check at Destination QP

When the request packet arrives at the destination QP, the RQ Logic compares the DETH:Q_Key value to the Q_Key stored in the QP Context. The packet is accepted if they match; otherwise, the following actions are taken:

  • The RQ Logic silently drops the packet.

  • No RQ WQE is used.

  • No CQE is created.

  • The RQ Logic waits for the next request packet (i.e., the next message; remember that UD messages are a single packet in length).

RQ Logic's Completion of a Good Transfer

RQ WQEs are only used to handle incoming Send Only or Send Only With Immediate operations.

The RQ Logic considers an inbound message completed successfully when it has:

  • Detected a valid message as indicated by the presence of an “Only” Opcode in the BTH.

  • Committed the message payload to the local memory (or a posted-write buffer that accepts writes bound for local memory) without error.

  • Successfully completed all of the validity checks (including VCRC and ICRC verification).

Assuming that a RQ WQE completes its respective inbound Send Only or Send Only With Immediate message transfer without any errors, the RQ Logic retires the WQE and creates a good completion CQE.

RQ Logic Error Types and Handling

Table 20-4 on this page details the types of errors that may be detected by the QP's RQ Logic and how each is handled. Note that when some error types are detected, it is not possible to guarantee the state of local memory. Some or all of a given packet may have been committed to the local memory before the error is detected.

Table 20-4. UD RQ Logic Error Types and Handling
ErrorDescriptionHandling
Malformed WQE The RQ Logic detected a malformed RQ WQE while processing the packet. These errors are not caused by the sender.Class A error handling:
  • RQ WQE is retired.

  • If the error occurred on an HCA, an error CQE is created, indicating a “Local QP Operation Error.”

  • All subsequent RQ WQEs are retired and a CQE is created for each, indicating that they were flushed due to the error in the earlier WQE.

  • All SQ WQEs are retired and a CQE is created for each, indicating that they were flushed.

  • The QP transitions to the Error state.

Unsupported or reserved opcodeInbound request packet's Opcode was either reserved or was for a function not supported by this QP (any opcode other than Send Only or Send Only With Immediate). Class D error handling:
  • The request packet is silently dropped.

  • No RQ error CQE is created.

No RQE availableAn inbound Send Only or Send Only With Immediate request packet has been received, but there is no RQ WQE posted, and therefore no Scatter Buffer List to define where the message is to be written in local memory.The request is invalid and is silently dropped by the RQ Logic.
Local QP ErrorRQ Logic detected a local QP-related error while executing the request packet. The error prevented the RQ Logic from successfully executing the request.Class A error handling:
  • RQ WQE is retired.

  • If the error occurred on an HCA, an error CQE is created, indicating a “Local QP Operation Error.”

  • All subsequent RQ WQEs are retired and a CQE is created for each, indicating that they were flushed due to the error in the earlier WQE.

  • All SQ WQEs are retired and a CQE is created for each, indicating that they were flushed.

  • The QP transitions to the Error state.

Q_Key ViolationThe destination QP's Q_Key did not match the Q_Key delivered in the request packet's DETH:Q_Key field.Class D error handling:
  • The request packet is silently dropped.

  • No RQ error CQE is created.

Packet Header ViolationRQ Logic detected a header violation that requires a silent drop. See Figure 17-25 on page 438.See Class D error handling earlier in this table.
Length errorsOne of the following errors was detected by the RQ Logic:
  • Inbound Send request packet's data payload exceeded the buffer space specified by the RQ WQE's Scatter Buffer List.

  • Payload must contain between zero and PMTU bytes.

See Class D error handling earlier in this table.
CQ overflowThe inbound Send message transfer completed with no error, but the CQE could not be written to the CQ. The CQ is inaccessible or full.Class G error handling:
  • QP transitions to the Error state.

  • On an HCA, an Affiliated Asynchronous Error is generated (i.e., the Asynchronous Event Handler is called—typically by generating an interrupt).

  • The current RQ WQE and any subsequent RQ WQEs are left in an unknown state.


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

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