Patent ID: 7543037
Filing Date: 2009-06-02
Classification: H04L

Abstract:
1. A hardware system for handling a completion process in a remote data memory access (RDMA) environment comprising: a RequestOut channel and a ResponseOut channel; a descriptor list for each channel, wherein each descriptor list includes a message descriptor for each message in the channel defining RequestOut and ResponseOut messages to an associated channel; an update mechanism for updating a message length field in the message descriptor with a sequence number of a last byte in the message whenever a channel swap occurs between the RequestOut channel and the ResponseOut channel; an acknowledgement (Ack) completion system that examines values in a completion context and compares a sequence number of a next to complete message with a last acknowledged sequence number to determine if the message should be completed, wherein the acknowledgement completion system includes a series of repeating logic steps that are separately applied to each of the RequestOut channel and the ResponseOut channel and include; concluding that the processing of the completion process is finished if the sequence number of the next to complete message is invalid; concluding that the processing of the completion process is finished if the sequence number of the next to complete message is greater than the last acknowledged sequence number; completing the message in the channel if the sequence number of the next to complete message is less than or equal to the last acknowledged sequence number, wherein completing the message in the channel includes updating the sequence number of the last completed message with the sequence number of the next to complete message; updating the sequence number of the next to complete message with a last sequence number of a next message in the channel performing completion of the operation if the completed message is not a read request message; and if the message is a read request message, waiting for reception and delivery of a read response to perform completion before performing completion, and then setting a pending read request bit in the completion context; and terminating the completion process in the RequestOut channel if the RequestOut channel is waiting for a completion of a read request; and a read request completion system that performs completion of a read request.