Delivery Algorithm

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

The following three flowcharts illustrate the algorithm that the offload target must use to process each of the following events:

  • The offload target receives an in-sequence TCP segment.

  • NDIS posts one or more receive requests (application-supplied receive buffers) to the offload target's MiniportTcpOffloadReceive function.

  • The push timer for an offloaded TCP connection expires.

flowchart one: illustrating the offload target-delivery algorithmflowchart two: illustrating the offload target delivery algorithmflowchart three: illustrating the offload target delivery algorithm

The offload target must serialize calls to the NdisTcpOffloadReceiveComplete function and to the NdisTcpOffloadReceiveHandler function on a per-connection basis.

To increase performance, the offload target can complete all filled receive requests--and optionally one partially filled receive request--in a single call to the NdisTcpOffloadReceiveComplete function. For simplicity, this option is not illustrated in the delivery algorithm flowcharts.

After starting the delivery algorithm, the offload target must complete the algorithm.