NDIS_TASK_TCP_CONNECTION_OFFLOAD structure

An offload target supplies an NDIS_TASK_TCP_CONNECTION_OFFLOAD structure in response to a query of OID_TCP_TASK_OFFLOAD. In this case, the NDIS_TASK_TCP_CONNECTION_OFFLOAD structure specifies the offload target's capabilities for offloading TCP connections from the host stack.

The host stack supplies an NDIS_TASK_TCP_CONNECTION_OFFLOAD structure when setting OID_TCP_TASK_OFFLOAD. In this case, the structure specifies:

  • The TCP connection offload capabilities that the host stack is enabling for the offload target.

  • Values for various offload operating parameters.

Syntax


typedef struct _NDIS_TASK_TCP_CONNECTION_OFFLOAD {
  ULONG  SupportIp4  :1;
  ULONG  SupportIp6  :1;
  ULONG  SupportIp6ExtensionHeaders  :1;
  ULONG  SupportSack  :1;
  ULONG  TcpConnectionOffloadCapacity;
  ULONG  TicksPerSecond;
  UCHAR  TcpAckFrequency;
  UCHAR  TcpDelayedAckTicks;
  UCHAR  TcpMaximumRetransmissions;
  UCHAR  TcpDoubtReachabilityRetransmissions;
  ULONG  TcpSwsPreventionTicks;
  ULONG  TcpDuplicateAckThreshold;
  ULONG  TcpPushTicks;
  ULONG  NceStaleTicks;
  USHORT TcpFinWait2Ticks;
} NDIS_TASK_TCP_CONNECTION_OFFLOAD, *PNDIS_TASK_TCP_CONNECTION_OFFLOAD;

Members

SupportIp4

This member is set by an offload target to indicate that the offload target supports IPv4. This member is set by the host stack to enable IPv4 on the offload target.

SupportIp6

This member is set by an offload target to indicate that the offload target supports IPv6. This member is set by the host stack to enable IPv6. Note that an offload target can support both IPv4 and IPv6.

SupportIp6ExtensionHeaders

This member is set by an offload target to indicate that it supports IPv6 extension headers (routing, fragmentation/reassembly, authentication, encapsulation, hop-by-hop processing, and destination options). This member is set by the host stack to enable IPv6 extension headers.

SupportSack

This member is set by an offload target to indicate that it supports TCP selective acknowledgments (SACKs) for both transmit and receive operations. This member is set by the host stack to enable SACKs for both transmit and receive operations.

If an offload target sets the SupportSack bit, it must be able to generate and consume SACK segments. If an offload target does not support the SACK option, the offload target must be able to ignore the SACK option and process the rest of the TCP segment normally.

TcpConnectionOffloadCapacity

This member is set by an offload target to indicate the maximum number of offloaded TCP connections that it supports. This number includes both IPv4 and IPv6 connections.

TicksPerSecond

This member is set by the host stack to specify how many ticks of the host's clock equal one second. The default value is 1000 (1 tick = 1 millisecond). An offload target must support this member.

TcpAckFrequency

This member is set by the host stack to specify the maximum number of segments that the offload target can receive before sending an ACK. An offload target must support this parameter.

TcpDelayedAckTicks

This member is set by the host stack to specify how many clock ticks, starting from the reception of a segment, that the offload target should wait for additional receive segments before sending an ACK. An offload target uses this value to initialize its delayed-ACK timer. An offload target must support this parameter.

TcpMaximumRetransmissions

This member is set by the host stack to specify the maximum number of times that the offload target should retransmit a segment on a TCP connection. When the retransmit counter for a TCP connection exceeds this limit, the offload target can call the NdisTcpOffloadEventHandler function with an EventType parameter of TcpIndicateRetrieve to request that the host stack terminate the offload of the connection. An offload target must support this parameter.

TcpDoubtReachabilityRetransmissions

This member is set by the host stack to specify the maximum number of times that the offload target should retransmit a segment before indicating to the host stack that the reachability of a neighbor is in doubt. For more information about neighbor reachability indications, see NdisMOffloadEventIndicate. An offload target must support this parameter.

TcpSwsPreventionTicks

This member is set by the host stack to specify the number of clock ticks for the offload target's silly window syndrome (SWS) send and receive timers. When the SWS send timer times out, the offload target sends a partial segment. When the SWS receive timer times out, the offload target sends a window update. An offload target should support this parameter.

TcpDuplicateAckThreshold

This member is set by the host stack to specify the number of duplicate acknowledgments that the offload target must receive before doing a fast retransmission. An offload target must support this parameter.

TcpPushTicks

This member is set by the host stack to specify the number of clock ticks that an offload target must wait before completing a preposted receive buffer. This interval starts immediately after the offload target places the first byte in the preposted receive buffer. An offload target uses this value to initialize its push timer. An offload target must support this parameter.

NceStaleTicks

This member is set by the host stack to indicate the number of ticks of inactivity that make a neighbor state object stale. An offload target must support this parameter.

TcpFinWait2Ticks

This member is set by the host stack to specify the number of clock ticks that an offload target must wait for the reception of an acceptable TCP segment on a connection that is in the FIN_WAIT_2 state. An offload target uses this value to initialize its FIN_WAIT_2 Timer. If the FIN_WAIT_2 timer expires before an acceptable TCP segment arrives on the connection, the offload target must call the NdisTcpOffloadEventHandler function with the EventType parameter set to TcpIndicateRetrieve and the EventSpecificInformation parameter set to TimeoutExpiration. This call requests that the host stack terminate the offload of the connection. An offload target must support the TcpFinWait2Ticks member.

Remarks

The host stack queries and sets members in the NDIS_TASK_TCP_CONNECTION_OFFLOAD structure.

Query

When responding to a query of OID_TCP_TASK_OFFLOAD, an offload target must set or clear the following members of the NDIS_TASK_TCP_CONNECTION_OFFLOAD structure:

  • SupportIp4

  • SupportIp6

  • SupportIp6ExtensionHeaders

An offload target must support either IPv4 or IPv6 (or both). Support for IPv6 extension headers is optional.

An offload target should not support any IPv4 options. The offload target must forward to the host stack any received IP datagrams that contain IPv4 options. The offload target indicates such IP datagrams to the host stack by calling NdisMIndicateReceiveNetBufferLists. The host stack processes the IPv4 options and returns the datagrams to the offload target's MiniportTcpOffloadForward function.

The offload target must also specify a value for the TcpConnectionOffloadCapacity member. This value should be the maximum number of simultaneously offloaded TCP connections that the offload target can support.

Note that an offload target cannot directly indicate new TCP offload capabilities. Instead, the offload target must request the host stack to pause and then resume offloads, after which the host stack queries OID_TCP_TASK_OFFLOAD again.

Set

When the host stack sets OID_TCP_TASK_OFFLOAD, it can set or clear the following members of the NDIS_TASK_TCP_CONNECTION_OFFLOAD structure:

  • SupportIp4

  • SupportIp6

  • SupportIp6ExtensionHeaders

The host stack also supplies values for the following:

  • TicksPerSecond

  • TcpAckFrequency

  • TcpDelayedAckTicks

  • TcpMaximumRetransmissions

  • TcpDoubtReachabilityRetransmissions

  • TcpSwsPreventionTicks

  • TcpDuplicateAckThreshold

  • TcpPushTicks

  • NceStaleTicks

Requirements

Header

Ndis.h (include Ndischimney.h)

See also

MiniportTcpOffloadForward
OID_TCP_TASK_OFFLOAD
NDIS_TASK_OFFLOAD
NDIS_TASK_OFFLOAD_HEADER

 

 

Send comments about this topic to Microsoft

Show:
© 2015 Microsoft