Reporting a NIC's LSOV1 TCP-Packet-Segmentation Capabilities

An NDIS miniport driver specifies the current large send offload version 1 (LSOV1)-TCP-packet-segmentation configuration of a NIC in an NDIS_TCP_LARGE_SEND_OFFLOAD_V1 structure.Miniport drivers must include the current LSOV1 offload configuration in the NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES structure. Miniport drivers call the NdisMSetMiniportAttributes function from the MiniportInitializeEx function and pass in the information in NDIS_MINIPORT_ADAPTER_OFFLOAD_ATTRIBUTES.

Miniport drivers must report changes in the LSOV1 configuration, if any, in the NDIS_STATUS_TASK_OFFLOAD_CURRENT_CONFIG status indication.

In response to a query of OID_TCP_OFFLOAD_CURRENT_CONFIG, NDIS includes the NDIS_TCP_LARGE_SEND_OFFLOAD_V1 structure in the NDIS_OFFLOAD structure that NDIS returns in the InformationBuffer member of the NDIS_OID_REQUEST structure. NDIS uses the information that the miniport driver provided.

NDIS supports large send offload version 2 (LSOV2), which is an enhanced version of LSO. For more information about LSOV2 capabilities, see Reporting a NIC's LSOV2 TCP-Packet-Segmentation Capabilities.

The miniport driver must specify the following information in the NDIS_TCP_LARGE_SEND_OFFLOAD_V1 structure:

  • Encapsulation settings, in the Encapsulation member. For more information about this member, see the Remarks section in NDIS_TCP_LARGE_SEND_OFFLOAD_V1.

  • The maximum bytes of user data that the TCP/IP transport can pass to the miniport driver in a large TCP packet, in the MaxOffLoadSize member. The maximum size cannot exceed 64K bytes.

  • The minimum number of segments that a large TCP packet must be divisible by before the TCP/IP transport can offload it to a NIC for segmentation, in the MinSegmentCount member.

  • Whether a NIC can segment a large TCP packet that contains TCP options.

  • Whether a NIC can segment a large TCP packet that contains IPv4 options.

Determining Task Offload Capabilities