Returning the Completion Status of a Terminate Offload Operation

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

Before calling the NdisMTerminateOffloadComplete function, the offload target must write either of the following NDIS_STATUS values to the Status member of each NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure in the state tree:

NDIS_STATUS_SUCCESS
The offload target successfully terminated the offload of the state object that is referenced by the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure. If this structure is followed by a delegated state structure (XXX_OFFLOAD_STATE_DELEGATED), the offload target successfully wrote the delegated variable values for that state object to the delegated state structure.

NDIS_STATUS_FAILURE
The terminate operation did not succeed. Such a failure is caused by a catastrophic failure that resulted in the loss of the state object that was to be terminated.

If corrupted hardware state prevents the offload target from completing the terminate offload operation, the offload target must do the following:

  1. Call NdisMTerminateOffloadComplete with a status value of NDIS_STATUS_FAILURE.

  2. Call the NdisTcpOffloadEventHandler function with the EventType parameter set to TcpIndicateRetrieve and the EventSpecificInformation parameter set to HardwareFailure.

  3. Call the NdisTcpOffloadEventHandler function with the EventType parameter set to TcpIndicateAbort.

  4. When the host stack calls the MiniportTerminateOffload function, complete any outstanding calls to the MiniportTcpOffloadSend and MiniportTcpOffloadReceive functions with a status value of NDIS_STATUS_REQUEST_ABORTED in each NET_BUFFER_LIST structure.

  5. Call the NdisMTerminateOffloadComplete function.