Returning Completion Status of an Initiate Offload Operation

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

Before calling NdisMInitiateOffloadComplete, the offload target must write a completion status to the Status member of each NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure in the state tree. The offload target can write one of the following NDIS_STATUS values:

NDIS_STATUS_SUCCESS
The offload target successfully offloaded the following:

  • The offload state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure.

  • The offload state that is associated with all of the immediately dependent NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structures. An immediately dependent structure is a structure that is referenced by the pointer in the DependentBlockList member or a structure that is linked directly or indirectly to such a structure through a next block link.

NDIS_STATUS_OFFLOAD_PARTIAL_SUCCESS
The offload target successfully offloaded the offload state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure. However, the offload target failed to offload the offload state that is associated with one or more of the immediately dependent NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structures.

NDIS_STATUS_FAILURE
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure. The cause of the failure cannot be categorized.

NDIS_STATUS_RESOURCES
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate sufficient host memory.

NDIS_STATUS_OFFLOAD_TCP_ENTRIES
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate a TCP connection state object.

NDIS_STATUS_OFFLOAD_PATH_ENTRIES
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate a path state object.

NDIS_STATUS_OFFLOAD_NEIGHBOR_ENTRIES
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate a neighbor state object.

NDIS_STATUS_OFFLOAD_HW_ADDRESS_ENTRIES
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the host stack specified a non-NULL value in the DlSourceAddress member of the NEIGHBOR_OFFLOAD_STATE_CONST structure, and the offload target either does not support configurable source medium access control (MAC) addresses or cannot accept additional source MAC addresses.

NDIS_STATUS_OFFLOAD_IP_ADDRESS_ENTRIES
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate a data structure for the source IP address that is referenced by the pointer in the SourceAddress member of the PATH_OFFLOAD_STATE_CONST structure.

NDIS_STATUS_OFFLOAD_TCP_XMIT_BUFFER
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate enough TCP transmit buffers.

NDIS_STATUS_OFFLOAD_TCP_RCV_BUFFER
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the offload target could not allocate enough TCP receive buffers.

NDIS_STATUS_OFFLOAD_TCP_RCV_WINDOW
The offload target failed to offload the state that is associated with the NDIS_MINIPORT_OFFLOAD_BLOCK_LIST structure because the InitialRcvWnd member that is specified in the TCP_OFFLOAD_STATE_CACHED structure is larger than the offload target can support.

NDIS_STATUS_OFFLOAD_VLAN_ENTRIES
The offload target has run out of resources to track additional VLAN identifiers.

NDIS_STATUS_OFFLOAD_VLAN_MISMATCH
The VlanId member of the NEIGHBOR_OFFLOAD_STATE_CONST structure is nonzero and does not match one of the interface VLAN identifiers.

NDIS_STATUS_OFFLOAD_PATH_MTU
The path maximum transmission unit (MTU) for the TCP connection is larger than what the offload target supports.

NDIS_STATUS_OFFLOAD_CONNECTION_REJECTED
The offload target failed to offload the connection because the offload target determined this connection is not a good candidate for offload.