Processing Events That Occur During an Offload
[The TCP chimney offload feature is deprecated and should not be used.]
An offload target must be able to process the following events while an offload operation is in progress (that is, before the offload target's call to NdisMInitiateOffloadComplete has returned):
- Initiating another offload operation
The host stack will not attempt to offload a state object if an offload of that state object is already in progress. However, while an offload operation is in progress, NDIS can call an offload target's MiniportInitiateOffload function one or more times to initiate one or more additional offload operations of other state objects.
- Receiving and indicating receive segments
An offload target can start processing receive segments on TCP connections as soon as the necessary state objects for those connections have been offloaded. An offload target must indicate receive segments on offloaded TCP connections only after the operation that offloaded those connections completes (that is, after NdisMInitiateOffloadComplete has returned). An offload target always indicates such receive segments by calling the NdisTcpOffloadReceiveHandler function.
Note also that the offload target will not receive the following before an offload operation completes:
A send request (a call to the MiniportTcpOffloadSend function) on a TCP connection that is being offloaded
Posted receive buffers (a call to the MiniportTcpOffloadReceive function) on a TCP connection that is being offloaded
An update request (a call to the MiniportUpdateOffload function) on a state object that is being offloaded
A query request (a call to the MiniportQueryOffload function) on a state object that is being offloaded
An invalidate request (a call to the MiniportInvalidateOffload function) on a state object that is being offloaded
A terminate request (a call to the MiniportTerminateOffload function) on a state object that is being offloaded
A forward data request (a call to the MiniportTcpOffloadForward function) on a TCP connection that is being offloaded
We recommend that an offload target not call the following indication functions while an offload is in progress: