NDIS_TCP_CONNECTION_OFFLOAD structure

The NDIS_TCP_CONNECTION_OFFLOAD structure provides connection offload information for current settings and for supported capabilities.

Syntax


typedef struct _NDIS_TCP_CONNECTION_OFFLOAD {
  NDIS_OBJECT_HEADER Header;
  ULONG              Encapsulation;
  ULONG              SupportIPv4  :2;
  ULONG              SupportIPv6  :2;
  ULONG              SupportIPv6ExtensionHeaders  :2;
  ULONG              SupportSack  :2;
#if (NDIS_SUPPORT_NDIS61)
  ULONG              CongestionAlgorithm  :4;
#endif 
  ULONG              TcpConnectionOffloadCapacity;
  ULONG              Flags;
} NDIS_TCP_CONNECTION_OFFLOAD, *PNDIS_TCP_CONNECTION_OFFLOAD;

Members

Header

The NDIS_OBJECT_HEADER structure for the NDIS_TCP_CONNECTION_OFFLOAD structure. Set the Type member of the structure that Header specifies to NDIS_OBJECT_TYPE_DEFAULT, the Revision member to NDIS_TCP_CONNECTION_OFFLOAD_VERSION_1, and the Size member to NDIS_SIZEOF_TCP_CONNECTION_OFFLOAD_REVISION_1.

Encapsulation

Encapsulation settings for TCP chimney offload. For more information about this member, see the following Remarks section.

SupportIPv4

A ULONG value that an offload target sets to indicate that it supports IPv4. The TCP/IP driver stack sets this member to enable IPv4.

SupportIPv6

A ULONG value that an offload target sets to indicate that it supports IPv6. The TCP/IP driver stack sets this member to enable IPv6. Note that an offload target can support both IPv4 and IPv6.

SupportIPv6ExtensionHeaders

A ULONG value that an offload target sets to indicate that it supports IPv6 extension headers (that is, routing, fragmentation/reassembly, authentication, encapsulation, hop-by-hop processing, and destination options). The TCP/IP driver stack sets this member to enable IPv6 extension headers.

SupportSack

A ULONG value that an offload target sets to indicate that it supports TCP selective acknowledgments (SACKs) for both transmit and receive operations. The TCP/IP driver stack sets this member to enable SACKs for both transmit and receive operations.

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

CongestionAlgorithm

Reserved for future use.

If you are an independent hardware vendor (IHV) and you want to implement nondefault congestion control algorithms, for example Compound TCP, contact Microsoft at External TCP Offload Triage.

TcpConnectionOffloadCapacity

A ULONG value that an offload target sets to indicate the maximum number of offloaded TCP connections that it supports. This number includes both IPv4 and IPv6 connections.

Flags

Reserved.

Remarks

The NDIS_TCP_CONNECTION_OFFLOAD structure specifies the current or supported services that a miniport adapter provides for TCP chimney offload.

The NDIS_TCP_CONNECTION_OFFLOAD structure is used in the NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES structure, NDIS_BIND_PARAMETERS structure, OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG OID, OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES OID, NDIS_STATUS_OFFLOAD_RESUME status indication, and NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES status indication. (For information on NDIS_STATUS_OFFLOAD_RESUME, see NDIS 6.0 TCP chimney offload documentation.)

Miniport drivers do not receive the OID queries. NDIS uses the information that the miniport driver provides in attributes and status indications to provide responses to OID queries and to provide bind parameters.

NDIS supplies an NDIS_TCP_CONNECTION_OFFLOAD structure in response to a query of OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG or OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES. In response to an OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG query, the NDIS_TCP_CONNECTION_OFFLOAD structure specifies the offload target's current configuration settings. In response to an OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES query, the NDIS_TCP_CONNECTION_OFFLOAD structure specifies the offload target's hardware capabilities for offloading TCP connections from the TCP/IP transport.

The Encapsulation member of NDIS_TCP_CONNECTION_OFFLOAD defines the TCP chimney offload encapsulation settings for the miniport adapter.

For an OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES query request, NDIS provides a single flag that indicates the hardware encapsulation capabilities, in the Encapsulation member.

For an OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG query request, NDIS provides a bitwise OR of the encapsulation flags, which indicates the current encapsulation settings.

The following flags are defined for the Encapsulation member:

NDIS_ENCAPSULATION_NOT_SUPPORTED

Specifies that no encapsulation offload is supported.

NDIS_ENCAPSULATION_NULL

Specifies NULL encapsulation.

NDIS_ENCAPSULATION_IEEE_802_3

Specifies IEEE 802.3 encapsulation.

NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED

Specifies logical link control (LLC) encapsulation for routed protocols, as described in RFC 1483. Also used to indicate Ethernet LLC/SNAP encapsulation.

Important  A miniport or mux driver that is chimney capable must set the Encapsulation member to NDIS_ENCAPSULATION_IEEE_802_3, NDIS_ENCAPSULATION_IEEE_LLC_SNAP_ROUTED, or both. Otherwise, chimney capability will not be recognized.

TCP Chimney Offload Queries

When an NDIS responds to a query of OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES or OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG for an offload target, NDIS provides the SupportIp4, SupportIp6, SupportIp6ExtensionHeaders, and SupportISack members of the NDIS_TCP_CONNECTION_OFFLOAD structure. These members can have one of the following values:

NDIS_OFFLOAD_NOT_SUPPORTED

In OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG, this value specifies that the miniport adapter does not support the feature that the SupportXxx member specifies.

NDIS_OFFLOAD_SUPPORTED

In OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG, this value specifies that the miniport adapter supports the feature that the SupportXxx member specifies.

NDIS_OFFLOAD_SET_OFF

In OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES, this value specifies that the feature that the SupportXxx member specifies is disabled.

NDIS_OFFLOAD_SET_ON

In OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES, this value specifies that the feature that the SupportXxx member specifies is enabled.

An offload target must support either IPv4 or IPv6 (or both). Offload targets can optionally support IPv6 extension headers.

An offload target should not support any IPv4 options. The offload target must forward any received IP datagrams that contain IPv4 options to the TCP/IP driver stack. The offload target indicates such IP datagrams to the TCP/IP driver stack by calling NdisMIndicateReceiveNetBufferLists. The TCP/IP driver stack processes the IPv4 options and returns the datagrams to the offload target's MiniportTcpOffloadForward function. (For information on MiniportTcpOffloadForward, see NDIS 6.0 TCP chimney offload documentation.)

The offload target must also provide a value for the TcpConnectionOffloadCapacity member of NDIS_TCP_CONNECTION_OFFLOAD. 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 offload capabilities. Instead, the offload target must request the TCP/IP driver stack to pause and then resume offloads. When the miniport adapter is ready to resume offloading TCP connections, it issues an NDIS_STATUS_OFFLOAD_RESUME status indication to report the new connection offload capabilities. For more information on NDIS_STATUS_OFFLOAD_RESUME, see NDIS 6.0 TCP chimney offload documentation.

Requirements

Version

Supported in NDIS 6.0 and later.

Header

Ntddndis.h (include Ndis.h)

See also

NDIS_BIND_PARAMETERS
NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES
NDIS_OBJECT_HEADER
NDIS_OFFLOAD
NDIS_STATUS_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES
NdisMIndicateReceiveNetBufferLists
OID_TCP_CONNECTION_OFFLOAD_CURRENT_CONFIG
OID_TCP_CONNECTION_OFFLOAD_HARDWARE_CAPABILITIES

 

 

Send comments about this topic to Microsoft

顯示:
© 2014 Microsoft