RE: Freeing QN=1 State

"Caitlin Bestler" <[email protected]> Fri, 10 Dec 2004 15:41:24 -0800
Newsgroups gmane.ietf.rddp
Message-ID <[email protected]>
> 
> Is there a window where the Data Sink ORRQ doesn't match the 
> Data Source IRRQ?  For example, a compliant Data Sink 
> completes the RDMA Read as you describe and sends a new one.  
> However, the Data Source doesn't have its implementation 
> specific criteria met for considering the Read in Queue 1 to 
> be complete.  The new RDMA Read from the Data Sink results in 
> the session being terminated.  Both sides claim they comply.
> 

Essentially you are asking, can the Data Sink have received
the completion of its RDMA Read Reply, and then submit a new
RDMA Read Request which will reach the peer *before* the
ack of the RDMA Read Reply does?

The answer is that it cannot because, the completion of the
RDMA Read Reply cannot be delivered to the Data Sink ULP before
The LLP has committed to LLP Ack that TCP Segment / SCTP chunk.

The next RDMA Read Request, being submitted *later* than the
decision to LLP Ack, cannot reach the other side *earlier*
than the LLP ack. From the LLP's perspective the ack must
occur earlier, or at worst get blurred to the "same time".
The order cannot get reversed.

If the Data Sink ULP cheats and peaks at memory to determine
When the RDMA Read has finished rather than waiting for the
Completion you could indeed get that type of race condidtion.
That's one of many reasons why all warranties are void if the
ULP acts upon buffers before they are delivered.

--
Caitlin Bestler
Director Software Architecture
Siliquent Technologies
[email protected]