NDIS_TCP_LARGE_SEND_OFFLOAD_V1 structure (ntddndis.h)

The NDIS_TCP_LARGE_SEND_OFFLOAD_V1 structure provides large send offload version 1 (LSOV1) information in the NDIS_OFFLOAD structure.

Syntax

typedef struct _NDIS_TCP_LARGE_SEND_OFFLOAD_V1 {
  struct {
    ULONG Encapsulation;
    ULONG MaxOffLoadSize;
    ULONG MinSegmentCount;
    ULONG TcpOptions : 2;
    ULONG IpOptions : 2;
  } IPv4;
} NDIS_TCP_LARGE_SEND_OFFLOAD_V1, *PNDIS_TCP_LARGE_SEND_OFFLOAD_V1;

Members

IPv4

A structure within NDIS_TCP_LARGE_SEND_OFFLOAD_V1 that contains the following members:

IPv4.Encapsulation

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

IPv4.MaxOffLoadSize

The maximum bytes of user data that the transport can pass to the miniport driver in a single packet. The transport will not pass a packet to the miniport driver that contains more user data bytes than MaxOffLoadSize specifies. If such a packet must be transmitted, the transport itself segments the packet into smaller packets.

IPv4.MinSegmentCount

The minimum number of segments that a large TCP packet must be divisible by before the transport can offload it to the hardware for segmentation. The transport will not offload a large packet to the miniport driver for segmentation unless the miniport driver can create at least as many segments as MinSegmentCount specifies from the packet. If a large TCP packet does not meet the minimum-segment requirement, the TCP/IP transport itself segments the packet into smaller packets.

IPv4.TcpOptions

A ULONG value that a miniport driver sets to indicate that the miniport driver can segment a large TCP packet whose TCP header contains TCP options or to indicate that this capability is enabled or disabled. The TCP/IP transport sets this value to enable or disable this capability.

IPv4.IpOptions

A ULONG value that a miniport driver sets to indicate that a miniport adapter can segment a large TCP packet whose IP header contains IP options or to indicate that this capability is enabled or disabled.

Remarks

The NDIS_TCP_LARGE_SEND_OFFLOAD_V1 structure is used in the LsoV1 member of the NDIS_OFFLOAD structure. NDIS_TCP_LARGE_SEND_OFFLOAD_V1 specifies current or supported services that a miniport adapter provides for segmenting large TCP packets into smaller packets. NDIS also provides large send offload version 2 (LSOV2), which is an enhanced version of LSO. For more information about LSOV2, see NDIS_TCP_LARGE_SEND_OFFLOAD_V2.

NDIS_OFFLOAD is used in the NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES structure, NDIS_BIND_PARAMETERS structure, NDIS_FILTER_ATTACH_PARAMETERS structure, OID_TCP_OFFLOAD_CURRENT_CONFIG OID, and the NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication.

For OID_TCP_OFFLOAD_CURRENT_CONFIG, the NDIS_OFFLOAD structure specifies the task offload capabilities that a miniport adapter supports. If the current offloads capabilities change, a miniport driver reports the new capabilities in an NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication.

The Encapsulation member of NDIS_TCP_LARGE_SEND_OFFLOAD_V1 defines the LSOV1 encapsulation capabilities or settings for the miniport adapter.

In response to an OID_TCP_OFFLOAD_CURRENT_CONFIG query request, NDIS provides a bitwise OR of the encapsulation flags, which indicate the supported encapsulation settings, in the Encapsulation member. Miniport drivers must provide Ethernet encapsulation (NDIS_ENCAPSULATION_IEEE_802_3). The other types of encapsulation are optional.

For an NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication, the miniport driver provides a bitwise OR of the encapsulation flags, which indicate the current capabilities, in the Encapsulation member.

The following flags are defined for the Encapsulation member:

NDIS_ENCAPSULATION_NONE or 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_802_3_P_AND_Q
Specifies IEEE 802.3p and IEEE 802.3q encapsulation.

NDIS_ENCAPSULATION_IEEE_802_3_P_AND_Q_IN_OOB
Specifies that IEEE 802.3p and IEEE 802.3q encapsulation settings are specified in the NetBufferListInfo member of each NET_BUFFER_LIST structure.

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

The values in the TcpOptions and IpOptions members of NDIS_TCP_LARGE_SEND_OFFLOAD_V1 specify miniport adapter support in the OID_TCP_OFFLOAD_CURRENT_CONFIG OID or the NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication. These members can have one of the following values:

NDIS_OFFLOAD_NOT_SUPPORTED
The miniport adapter does not support the feature that the member specifies.

NDIS_OFFLOAD_SUPPORTED
The miniport adapter supports the feature that the member specifies

Requirements

Requirement Value
Minimum supported client Supported in NDIS 6.0 and later.
Header ntddndis.h (include Ndis.h)

See also

NDIS_BIND_PARAMETERS

NDIS_FILTER_ATTACH_PARAMETERS

NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES

NDIS_OFFLOAD

NDIS_OID_REQUEST

NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG NDIS_TCP_LARGE_SEND_OFFLOAD_V2

NET_BUFFER_LIST

OID_TCP_OFFLOAD_CURRENT_CONFIG