Patent ID: 7769905

Claim:
A method for receiving network communication at a host, the host having a network interface card (NIC) for receiving the network communication from a network, comprising: requesting data through an application that is in communication with an application layer of a protocol stack; posting a set of buffers to system memory; passing information regarding the set of buffers to an adaptation layer, the adaptation layer being interposed between a socket layer and a transport layer of the protocol stack, the set of buffers identified in the adaptation layer being assigned expected sequence numbers for a sequence of incoming data; passing a set of pointers to a ring buffer in the NIC, the set of pointers referencing the set of buffers in the system memory; with each layer in the protocol stack, monitoring a highest one of the sequence of incoming data received from the network; at each layer, determining if a buffer to be pre-posted is for data already received at the layer, the determining being accomplished by examining a sequence number of the buffer to be pre-posted with the highest monitored one of the sequence of incoming data; and reassembling, at the transport layer, the sequence of incoming data in an ordered sequence if the incoming data is not in an ordered sequence; wherein the adaptation layer reshuffles data of the sequence of incoming data to the set of buffers according to the expected sequence numbers, the expected sequence numbers being consecutively ordered to ensure that the sequence of incoming data in the ordered sequence is placed to the set of buffers according to the expected sequence numbers.