NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES structure (netadapteroffload.h)

The NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES structure describes a network interface card (NIC)'s capabilities for Generic Segmentation Offload (GSO).

Syntax

typedef struct _NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES {
  ULONG                            Size;
  NET_ADAPTER_OFFLOAD_LAYER3_FLAGS Layer3Flags;
  NET_ADAPTER_OFFLOAD_LAYER4_FLAGS Layer4Flags;
  UINT16                           Layer4HeaderOffsetLimit;
  SIZE_T                           MaximumOffloadSize;
  SIZE_T                           MinimumSegmentCount;
  PFN_NET_ADAPTER_OFFLOAD_SET_GSO  EvtAdapterOffloadSetGso;
} NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES;

Members

Size

The size of this structure, in bytes.

Layer3Flags

Flags specifying the layer 3 protocol variations that the NIC can successfully perform GSO on.

The flags should be a combination of:

Flag Description
NetAdapterOffloadLayer3FlagIPv4NoOptions Set if the NIC is capable of performing GSO on IPv4 packets without options
NetAdapterOffloadLayer3FlagIPv4WithOptions Set if the NIC is capable of performing GSO on IPv4 packets with options
NetAdapterOffloadLayer3FlagIPv6NoExtensions Set if the NIC is capable of performing GSO on IPv6 packets without extensions
NetAdapterOffloadLayer3FlagIPv6WithExtensions Set if the NIC is capable of performing GSO on IPv6 packets with extensions

Layer4Flags

Flags specifying the layer 4 protocol variations that the NIC can successfully perform GSO on. The NetAdapterOffloadLayer4FlagTcpNoOptions flag must be set if the NIC supports LSO. The NetAdapterOffloadLayer4FlagUdp flag must be set if the NIC supports USO.

The flags should be a combination of:

Flag Description
NetAdapterOffloadLayer4FlagTcpNoOptions Set if the NIC is capable of performing LSO on TCP packets without options
NetAdapterOffloadLayer4FlagTcpWithOptions Set if the NIC is capable of performing LSO on TCP packets with options
NetAdapterOffloadLayer4FlagUdp Set if the NIC is capable of performing USO on UDP packets

Layer4HeaderOffsetLimit

The maximum layer 4 header offset that the NIC supports in bytes. This field is optional.

MaximumOffloadSize

The maximum bytes of user data that the transport can pass to the NIC driver in a single packet.

MinimumSegmentCount

The minimum number of segments by which a large TCP/UDP packet must be divisible before the transport can offload it to the hardware for segmentation.

EvtAdapterOffloadSetGso

A pointer to the client driver's implementation of the EVT_NET_ADAPTER_OFFLOAD_SET_GSO callback function.

Remarks

Call NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES_INIT to initialize this structure. The client driver passes an initialized NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES structure as a parameter to NetAdapterOffloadSetGsoCapabilities.

Requirements

Requirement Value
Minimum supported client Windows 11
Minimum supported server Windows Server 2022
Minimum KMDF version 1.29
Header netadapteroffload.h (include netadaptercx.h)

See also

Generic Segmentation Offload

NET_ADAPTER_OFFLOAD_GSO_CAPABILITIES_INIT

NetAdapterOffloadSetGsoCapabilities

EVT_NET_ADAPTER_OFFLOAD_SET_GSO