Handling Buffered Receive Data During a Terminate Offload Operation

[The TCP chimney offload feature is deprecated and should not be used.]

Outstanding receive data might exist on a TCP connection that is being uploaded. This data is data that the offload target has received off the wire, processed, and acknowledged. The offload target should use the delivery algorithm to indicate this data to the host stack.

The offload target might include such receive data in the DELEGATED TCP state that it returns to the host stack during the terminate operation. In this situation, the offload target passes a pointer to the buffer that contains the data. This pointer is located in the BufferedData member of the TCP_OFFLOAD_STATE_DELEGATED structure for the connection. The buffer that is referenced by this pointer contains a linked list of NET_BUFFER_LIST structures.

The host stack copies the buffered data into its own buffer and indicates the receive data to the client application. NDIS returns the NET_BUFFER_LIST structures to the offload target's MiniportTcpOffloadReceiveReturn function.

Note that the offload target releases ownership of the NET_BUFFER_LIST structures that it passes up as buffered data. The offload target does not regain ownership of these NET_BUFFER_LIST structures until they are returned to its MiniportTcpOffloadReceiveReturn function.