NDIS_TCP_CONNECTION_OFFLOAD (Compact 2013)

3/26/2014

This 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;
  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 the encapsulation members, see the following Remarks section.
  • SupportIp4
    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.
  • SupportIp6
    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.
  • SupportIp6ExtensionHeaders
    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.

  • 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 About 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.

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_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_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 also 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 About 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 concurrently 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 Information About NDIS_STATUS_OFFLOAD_RESUME, see NDIS 6.0 TCP chimney offload documentation.)

Important For important legal information about TCP chimney offload, see Legal Information.

Requirements

Header

ntddndis.h

See Also

Reference

NDIS TCP/IP Offload Structures
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