As previously described in “RC/UC Connection Establishment” on page 186, 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.
The valid UC request packet opcodes are shown in Table 18-1 on this page. Since there are no response packets used in this transport service type, no response opcodes are defined.
The valid request packet transmission sequences are defined in Table 18-2 on page 447.
Bits 7:5 | Bits 4:0 | Packet Type | Fields That Follow BTH |
---|---|---|---|
001 UC | 00000 | SEND First | Data Payload |
00001 | SEND Middle | Data Payload | |
00010 | SEND Last | Data Payload | |
00011 | SEND Last with Immediate | Immediate Data, Data Payload | |
00100 | SEND Only | Data Payload | |
00101 | SEND Only with Immediate | Immediate Data, Data Payload | |
00110 | RDMA WRITE First | RETH, Data Payload | |
00111 | RDMA WRITE Middle | Data Payload | |
01000 | RDMA WRITE Last | Data Payload | |
01001 | RDMA WRITE Last with Immediate | Immediate Data, Data Payload | |
01010 | RDMA WRITE Only | RETH, Data Payload | |
01011 | RDMA WRITE Only with Immediate | RETH, Immediate Data, Data Payload | |
01100-11111 | Reserved | Undefined |
Previous Request Packet Opcode | Valid Opcode to Be Placed in Current Request Packet |
---|---|
The QP has just been set up and no messages have been transmitted yet. Therefore there was no previous request packet. | One of the following:
|
Send First | One of the following:
|
RDMA Write First | One of the following:
|
Send Middle | One of the following:
|
RDMA Write Middle | One of the following:
|
Send Last Without Immediate or Send Last With Immediate | One of the following:
|
RDMA Write Last Without Immediate or RDMA Write Last With Immediate | One of the following:
|
Table 18-3 on this page defines the number of bytes that a packet's data payload field may contain. Note that if this is an “only” packet and it contains zero message bytes, there is no data payload field.
Packet Type | Data Payload Size |
---|---|
“first” or “middle” packet | Payload must contain PMTU bytes. |
“only” packet | Payload must contain between zero and PMTU bytes. |
“last” packet | Payload must contain between one and PMTU bytes. |
No responses are expected when using this transport service type. The SQ Logic can therefore immediately retire the currently active SQ 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).
Since no responses are returned to the SQ Logic, it has no way of knowing if the Send or RDMA Write 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 18-4 on this page). It should be noted that the state of the memory at the responder is unknown.
Error | Description | Handling |
---|---|---|
Locally Detected Memory Protection Error | As an example, the Gather Buffer List specified in a WQE for a Send or an RDMA Write may have one or more entries with invalid L_Key values. | Class B error handling:
|
Implementation-Specific Error Associated With a WQE | An implementation-specific error occurred in the requester's local CI that can be associated with a certain WQE. | Class B error handling:
|
Implementation-Specific Error with No WQE Association | The error can be associated with a specific QP, but not with a specific WQE on that QP's SQ. | Class C error handling:
|
Good Transfer But Can't Post CQE | The 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:
|