Share via


NDIS_TCP_LARGE_SEND_OFFLOAD_V1 (Compact 2013)

3/26/2014

This 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:

  • Encapsulation
    Encapsulation settings for IPv4. For more information about this member, see the following Remarks section.
  • 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.
  • 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.
  • 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.
  • 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

Header

ntddndis.h

See Also

Reference

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