SQ Logic Operation

Start PSN Assignment and PSN Management

As with any of the other transport service types, the SQ Logic's Start PSN is assigned during QP setup.

As the SQ Logic generates each outbound request packet, it sets the BTH:PSN to the previous PSN + 1.

Q_Key in Outbound Request Packet

When the request packet is transmitted by the QP's SQ Logic, the Q_Key inserted in the packet's DETH:Q_Key field is one of the following:

  • If bit 31 of the 32-bit Q_Key submitted in the WR = 0, then it is the Q_Key of the destination QP and is inserted in the packet's DETH:Q_Key field.

  • If bit 31 of the 32-bit Q_Key submitted in the WR = 1, then the software that posted the WR is attempting to access a controlled destination QP and the Q_Key from the local QP's Context (rather than the supplied Q_Key) is inserted in the DETH:Q_Key field by the QP's SQ Logic.

Packet Opcodes

Table 20-1 on this page defines the valid opcodes that may be inserted in the packet's BTH:Opcode field.

Table 20-1. UD Packet Opcodes
Bits 7:5Bits 4:0Packet TypeFields That Follow BTH
011 UD00000-00011ReservedUndefined
00100SEND onlyDETH, Data Payload
00101SEND only with ImmediateDETH, Immediate Data, Data Payload
00110-11111ReservedUndefined

Packet Payload Size

Table 20-2 on this page defines the number of bytes that a packet's data payload field may contain. Note that if the packet contains zero message bytes, there is no data payload field.

Table 20-2. UD Packet Payload Size
Packet TypeData Payload Size
“only” packetPayload must contain between zero and PMTU bytes.

SQ Logic's Completion of a Good Transfer

No responses are expected when using this transport service type. The SQ Logic can therefore immediately retire the currently active SQ WQE and create a CQE when it has committed the last byte of the VCRC field of the last request packet to the wire (and detected no local errors associated with the message transfer).

Assuming that a SQ WQE completes its respective message transfer without any errors, the SQ Logic retires the WQE, creates a good completion CQE, and moves on to process the next WQE posted to the SQ (if there are any).

SQ Logic's Completion of a Bad Transfer

Since no responses are returned to the SQ Logic, it has no way of knowing if the Send operation completed without error on the remote QP. The only types of errors that the SQ Logic can detect are those that are locally detected by the SQ Logic. Assuming that a local error is detected, the SQ Logic immediately stops the message transmission. The additional actions taken by the SQ Logic are defined by the error type (see Table 20-3 on page 530). It should be noted that the state of the memory at the responder is unknown.

Table 20-3. UD SQ Logic Error Types and Handling
ErrorDescriptionHandling
Locally Detected Memory Protection ErrorAs an example, the Gather Buffer List specified in a WQE for a Send may have one or more entries with invalid L_Key values. Class B error handling:
  • SQ Logic retires the current WQE and creates an error CQE. The error code returned in the CQE is “Local Protection Error.”

  • Transition QP to the SQE state.

  • Retire all subsequent SQ WQEs and create error CQEs, indicating that they were flushed due to an error in an earlier WQE.

Implementation-Specific Error Associated With a WQEAn implementation- specific error occurred in the requester's local CI that can be associated with a certain WQE.Class B error handling:
  • SQ Logic retires the current WQE and creates an error CQE. The error code returned in the CQE is “Local Protection Error.”

  • Transition QP to the SQE state.

  • Retire all subsequent SQ WQEs and create error CQEs, indicating that they were flushed due to an error in an earlier WQE.

Implementation-Specific Error With No WQE AssociationThe error can be associated with a specific QP, but not with a specific WQE on that QP's SQ.Class C error handling:
  • That QP is transitioned to the SQE state.

  • All of the QP's SQ WQEs are retired and CQEs are created for each of them indicating that they were flushed and not executed.

  • If the CA is an HCA, the CA causes the Asynchronous Event Handler to be called (typically via an interrupt) and the error is reported as an Asynchronous Affiliated Error.

Good Transfer But Can't Post CQEThe current message transfer completed without error, but the CQE could not be written to the CQ due a failure internal to the CA. The CQ is inaccessible or full and an attempt was made to retire a WQE and create a CQE.Class F error handling:
  • The affected QP is transitioned to the SQE state.

  • If the CA is an HCA, the CA causes the Asynchronous Event Handler to be called (typically via an interrupt) and the error is reported as an Asynchronous Affiliated Error.

  • The current WQE and any subsequent WQEs on the currently active client QP's SQ 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.16.50.60