NDIS_OFFLOAD_PARAMETERS structure (ntddndis.h)

The NDIS_OFFLOAD_PARAMETERS structure specifies the current task offload configuration settings in response to an OID set request of OID_TCP_OFFLOAD_PARAMETERS.

Syntax

typedef struct _NDIS_OFFLOAD_PARAMETERS {
  NDIS_OBJECT_HEADER                 Header;
  UCHAR                              IPv4Checksum;
  UCHAR                              TCPIPv4Checksum;
  UCHAR                              UDPIPv4Checksum;
  UCHAR                              TCPIPv6Checksum;
  UCHAR                              UDPIPv6Checksum;
  UCHAR                              LsoV1;
  UCHAR                              IPsecV1;
  UCHAR                              LsoV2IPv4;
  UCHAR                              LsoV2IPv6;
  UCHAR                              TcpConnectionIPv4;
  UCHAR                              TcpConnectionIPv6;
  ULONG                              Flags;
  UCHAR                              IPsecV2;
  UCHAR                              IPsecV2IPv4;
  struct {
    UCHAR RscIPv4;
    UCHAR RscIPv6;
  };
  struct {
    UCHAR EncapsulatedPacketTaskOffload;
    UCHAR EncapsulationTypes;
  };
  union {
    struct {
      USHORT VxlanUDPPortNumber;
    } VxlanParameters;
    ULONG Value;
  } EncapsulationProtocolParameters;
  _ENCAPSULATION_PROTOCOL_PARAMETERS _ENCAPSULATION_PROTOCOL_PARAMETERS;
  struct {
    UCHAR IPv4;
    UCHAR IPv6;
  } UdpSegmentation;
  struct {
    UCHAR Enabled;
  } UdpRsc;
} NDIS_OFFLOAD_PARAMETERS, *PNDIS_OFFLOAD_PARAMETERS;

Members

Header

The NDIS_OBJECT_HEADER structure for the NDIS_OFFLOAD_PARAMETERS structure. Set the Type member of the structure that Header specifies to NDIS_OBJECT_TYPE_DEFAULT.

To indicate the version of the NDIS_OFFLOAD_PARAMETERS structure, set the Revision member to one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_REVISION_6
6
Supports the UdpRsc member for NDIS 6.89. Set the Size member to NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_6.
NDIS_OFFLOAD_PARAMETERS_REVISION_5
5
Supports the UdpSegmentation for IPv4 and IPv6 for NDIS 6.83. Set the Size member to NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_5.
NDIS_OFFLOAD_PARAMETERS_REVISION_4
4
Supports the EncapsulationProtocolParameters and its nested VxlanParameters for NDIS 6.50. Set the Size member to NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_4.
NDIS_OFFLOAD_PARAMETERS_REVISION_3
3
Supports the RscIPv4, RscIPv6, EncapsulatedPacketTaskOffload, and EncapsulationTypes members for NDIS 6.30. Set the Size member to NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_3.
NDIS_OFFLOAD_PARAMETERS_REVISION_2
2
Supports the IPsecV2, IPsecV2IPv4, Reserved1, and Reserved2 members for NDIS 6.1. Set the Size member to NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_2.
NDIS_OFFLOAD_PARAMETERS_REVISION_1
1
Original version for NDIS 6.0. Set the Size member to NDIS_SIZEOF_OFFLOAD_PARAMETERS_REVISION_1.

IPv4Checksum

The IPv4 checksum setting of the miniport adapter. For more information, see the following Remarks section.

TCPIPv4Checksum

The IPv4 checksum setting of the miniport adapter for TCP packets. For more information, see the following Remarks section.

UDPIPv4Checksum

The IPv4 checksum setting of the miniport adapter for UDP packets. For more information, see the following Remarks section.

TCPIPv6Checksum

The IPv6 checksum setting of the miniport adapter for TCP packets. For more information, see the following Remarks section.

UDPIPv6Checksum

The IPv6 checksum setting of the miniport adapter for UDP packets. For more information, see the following Remarks section.

LsoV1

The large send offload version 1 (LSOV1) setting of the miniport adapter. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_LSOV1_DISABLED LSOV1 is disabled.
NDIS_OFFLOAD_PARAMETERS_LSOV1_ENABLED LSOV1 is enabled.

IPsecV1

The Internet protocol security (IPsec) offload setting of the miniport adapter. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_IPSECV1_DISABLED IPsec offload is disabled.
NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_ENABLED The IPsec offload Authentication Header (AH) feature should be enabled for transmit and receive.
NDIS_OFFLOAD_PARAMETERS_IPSECV1_ESP_ENABLED The IPsec offload Encapsulating Security Payload (ESP) feature should be enabled for transmit and receive.
NDIS_OFFLOAD_PARAMETERS_IPSECV1_AH_AND_ESP_ENABLED The IPsec offload AH and ESP features are enabled for transmit and receive.

LsoV2IPv4

The IPv4 large send offload version 2 (LSOV2) setting of the miniport adapter. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED LSOV2 for IPv4 is disabled.
NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED LSOV2 for IPv4 is enabled.

LsoV2IPv6

The IPv6 LSOV2 setting of the miniport adapter. These settings are specified as one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_LSOV2_DISABLED LSOV2 for IPv6 is disabled.
NDIS_OFFLOAD_PARAMETERS_LSOV2_ENABLED LSOV2 for IPv6 is enabled.

TcpConnectionIPv4

The IPv4 connection offload setting of the miniport adapter. These settings are specified as one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.

TcpConnectionIPv6

The IPv6 connection offload setting of the miniport adapter. These settings are specified as one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.

Flags

A set of flags that can be combined with a bitwise OR operation. Set this member to zero or the following value:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_SKIP_REGISTRY_UPDATE
0x00000001
Allows UDP Receive Segment Coalescing Offload (URO) to be disabled only at runtime. Changes made with this flag aren't saved to the registry.

IPsecV2

The Internet protocol security (IPsec) offload version 2 setting of a miniport adapter that supports IPv6 and IPv4. This member specifies the setting for both IPv6 and IPv4 support. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED IPsec offload version 2 is disabled.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED The IPsec offload version 2 Authentication Header (AH) feature should be enabled for transmit and receive.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED The IPsec offload version 2 Encapsulating Security Payload (ESP) feature should be enabled for transmit and receive.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED The IPsec offload version 2 AH and ESP features are enabled for transmit and receive.

IPsecV2IPv4

The Internet protocol security (IPsec) offload version 2 setting of a miniport adapter that supports IPv4 and does not support IPv6. If the miniport driver supports IPv6, the IPsecV2 member specifies the IPv4 setting and this member is not used. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_DISABLED IPsec offload version 2 is disabled.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_ENABLED The IPsec offload version 2 Authentication Header (AH) feature should be enabled for transmit and receive.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_ESP_ENABLED The IPsec offload version 2 Encapsulating Security Payload (ESP) feature should be enabled for transmit and receive.
NDIS_OFFLOAD_PARAMETERS_IPSECV2_AH_AND_ESP_ENABLED The IPsec offload version 2 AH and ESP features are enabled for transmit and receive.

RscIPv4

Indicates Receive Segment Coalescing state for IPv4.

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The RSC state is unchanged.
NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED The RSC state is enabled.
NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED The RSC state is disabled.

RscIPv6

Indicates Receive Segment Coalescing state for IPv6.

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The RSC state is unchanged.
NDIS_OFFLOAD_PARAMETERS_RSC_ENABLED The RSC state is enabled.
NDIS_OFFLOAD_PARAMETERS_RSC_DISABLED The RSC state is disabled.

EncapsulatedPacketTaskOffload

A protocol driver sets EncapsulatedPacketTaskOffload as follows:

Note: For receive side offloads such as VMQ and RSS, there are other set OIDs that the protocol driver sends down to enable and configure the offload parameters (for example, queues, hash, and indirection table). The EncapsulatedPacketTaskOffload member is supplemental to those OIDs and instructs the NIC to also do these offloads for encapsulated packets.

Value Meaning
NDIS_OFFLOAD_SET_NO_CHANGE
0
The NVGRE and VXLAN task offload states are unchanged.
NDIS_OFFLOAD_SET_ON
1
Enables NVGRE and VXLAN task offloads.
NDIS_OFFLOAD_SET_OFF
2
Disables NVGRE and VXLAN task offloads.

EncapsulationTypes

This field is effective only when the EncapsulatedPacketTaskOffload is set to NDIS_OFFLOAD_SET_ON. If the EncapsulatedPacketTaskOffload member is not set to NDIS_OFFLOAD_SET_ON, this member is zero. A protocol driver must set EncapsulationTypes to the bitwise OR of the flags corresponding to encapsulation types that it requires. It can select flags from the following:

Value Meaning
NDIS_ENCAPSULATION_TYPE_GRE_MAC
0x00000001
Specifies GRE MAC encapsulation (NVGRE).
NDIS_ENCAPSULATION_TYPE_VXLAN
0x00000002
Specifies VXLAN encapsulation.

EncapsulationProtocolParameters

A union that describes the encapsulation parameters for VXLAN encapsulation.

If the miniport driver advertised VxlanUDPPortNumerConfigurable as TRUE, then a protocol driver can set EncapsulationProtocolParameters.VxlanParameters.VxlanUDPPortNumber to a non-0 value. The miniport driver must use this port number for matching and generating VXLAN frames after succeeding the OID, and also advertise the updated value in its capabilities. If the protocol driver passes a value of 0, then the miniport driver continues to use the port number initialized from the standardized keyword.

EncapsulationProtocolParameters.VxlanParameters

A structure that contains the VxlanUDPPortNumber.

EncapsulationProtocolParameters.VxlanParameters.VxlanUDPPortNumber

The VXLAN destination port value. This value is set to the IANA-assigned value of 4789 by default. If the miniport driver supports a configurable port number as advertised in the NDIS_OFFLOAD structure, a protocol driver can issue an OID_TCP_OFFLOAD_PARAMETERS OID to enable NDIS_ENCAPSULATION_TYPE_VXLAN with a different value in VxlanUDPPortNumber. The miniport driver must use VxlanUDPPortNumber to determine VXLAN encapsulated packets for performing receive offloads.

EncapsulationProtocolParameters.Value

The port value if EncapsulationTypes is not set to NDIS_ENCAPSULATION_TYPE_VXLAN.

_ENCAPSULATION_PROTOCOL_PARAMETERS

The type name for EncapsulationProtocolParameters.

UdpSegmentation

A structure that describes the miniport adapter's UDP Segmentation Offload (USO) settings.

UdpSegmentation.IPv4

The IPv4 UDP Segmentation Offload (USO) setting of the miniport adapter. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_DISABLED USO is disabled.
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_ENABLED USO is enabled.

UdpSegmentation.IPv6

The IPv6 UDP Segmentation Offload (USO) setting of the miniport adapter. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_NO_CHANGE The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_DISABLED USO is disabled.
NDIS_OFFLOAD_PARAMETERS_UDP_SEG_ENABLED USO is enabled.

UdpRsc

A structure that describes the miniport adapter's UDP Receive Segment Coalescing Offload (URO) settings.

UdpRsc.Enabled

The URO setting of the miniport adapter. This setting should be one of the following values:

Value Meaning
NDIS_OFFLOAD_PARAMETERS_UDP_RSC_NO_CHANGE
0
The miniport driver should not change the current setting.
NDIS_OFFLOAD_PARAMETERS_UDP_RSC_DISABLED
1
URO is disabled.
NDIS_OFFLOAD_PARAMETERS_UDP_RSC_ENABLED
2
URO is enabled.

Remarks

In response to an OID_TCP_OFFLOAD_PARAMETERS OID set request, a miniport driver uses the settings in the NDIS_OFFLOAD_PARAMETERS structure to set the current configuration of the miniport adapter.

NDIS retains the requested settings in the registry in the offload standardized keywords. When NDIS restarts the miniport adapter, the miniport driver reads the offload standardized keywords and uses them to set the default offload configuration of the NIC.

To access the checksum offload settings, use the following members of the NDIS_OFFLOAD_PARAMETERS structure:

IPv4Checksum

TCPIPv4Checksum

UDPIPv4Checksum

TCPIPv6Checksum

UDPIPv6Checksum

The preceding members can have one of the following values:

NDIS_OFFLOAD_PARAMETERS_NO_CHANGE
The miniport driver should not change the current setting.

NDIS_OFFLOAD_PARAMETERS_TX_RX_DISABLED
The feature that the member specifies is disabled.

NDIS_OFFLOAD_PARAMETERS_TX_ENABLED_RX_DISABLED
The feature that the member specifies is enabled for transmit and disabled for receive.

NDIS_OFFLOAD_PARAMETERS_RX_ENABLED_TX_DISABLED
The feature that the member specifies is enabled for receive and disabled for transmit.

NDIS_OFFLOAD_PARAMETERS_TX_RX_ENABLED
The feature that the member specifies is enabled for transmit and receive.

Requirements

Requirement Value
Minimum supported client Windows Vista,Supported in NDIS 6.0 and later.
Minimum supported server Windows Server 2008
Header ntddndis.h (include Ndis.h)

See also

NDIS_OBJECT_HEADER

OID_TCP_OFFLOAD_HARDWARE_CAPABILITIES

OID_TCP_OFFLOAD_PARAMETERS