Using Registry Values to Enable and Disable Task Offloading

When you debug a driver's task offload functionality, you might find it useful to enable or disable task offload services with a registry key setting. There are standardized keywords that you can define in INF files and in the registry. For more information about standardized keywords, see Standardized INF Keywords for Network Devices.

Task offload keywords belong to one of two groups: granular keywords or grouped keywords. Granular keywords provide keywords per offload capability--Transport Layer differentiation, IP protocol differentiation. Grouped keywords provide combined keywords capability at the transport layer.

Granular keywords

The granular keywords are defined as follows:

Keyword Description
*IPChecksumOffloadIPv4 Describes whether the device enabled or disabled the calculation of IPv4 checksums.
*TCPChecksumOffloadIPv4 Describes whether the device enabled or disabled the calculation of TCP Checksum over IPv4 packets.
*TCPChecksumOffloadIPv6 Describes whether the device enabled or disabled the calculation of TCP checksum over IPv6 packets.
*UDPChecksumOffloadIPv4 Describes whether the device enabled or disabled the calculation of UDP Checksum over IPv4 packets.
*UDPChecksumOffloadIPv6 Describes whether the device enabled or disabled the calculation of UDP Checksum over IPv6 packets.
*LsoV1IPv4 Describes whether the device enabled or disabled the segmentation of large TCP packets over IPv4 for large send offload version 1 (LSOv1).
*LsoV2IPv4 Describes whether the device enabled or disabled the segmentation of large TCP packets over IPv4 for large send offload version 2 (LSOv2).
*LsoV2IPv6 Describes whether the device enabled or disabled the segmentation of large TCP packets over IPv6 for large send offload version 2 (LSOv2).
*IPsecOffloadV1IPv4 Describes whether the device enabled or disabled the calculation of IPsec headers over IPv4.
*IPsecOffloadV2 Describes whether the device enabled or disabled IPsec offload version 2 (IPsecOV2). IPsecOV2 provides support for additional crypto-algorithms, IPv6, and co-existence with large send offload version 2 (LSOv2).
*IPsecOffloadV2IPv4 Describes whether the device enabled or disabled IPsecOV2 for IPv4 only.

The following table describes the granular keywords that you can use to configure offload services.

SubkeyName ParamDesc Value EnumDesc
IPChecksumOffloadIPv4 IPv4 Checksum Offload 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx & Tx Enabled
TCPChecksumOffloadIPv4 TCP Checksum Offload (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx & Tx Enabled
TCPChecksumOffloadIPv6 TCP Checksum Offload (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx & Tx Enabled
UDPChecksumOffloadIPv4 UDP Checksum Offload (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx & Tx Enabled
UDPChecksumOffloadIPv6 UDP Checksum Offload (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Rx & Tx Enabled
LsoV1IPv4 Large Send Offload Version 1 (IPv4) 0 Disabled
1 (Default) Enabled
LsoV2IPv4 Large Send Offload V2 (IPv4) 0 Disabled
1 (Default) Enabled
LsoV2IPv6 Large Send Offload V2 (IPv6) 0 Disabled
1 (Default) Enabled
IPsecOffloadV1IPv4 IPsec Offload Version 1 (IPv4) 0 Disabled
1 Auth Header Enabled
2 ESP Enabled
3 (Default) Auth Header & ESP Enabled
IPsecOffloadV2 IPsec Offload 0 Disabled
1 Auth Header Enabled
2 ESP Enabled
3 (Default) Auth Header & ESP Enabled
*IPsecOffloadV2IPv4 IPsec Offload (IPv4 only) 0 Disabled
1 Auth Header Enabled
2 ESP Enabled
3 (Default) Auth Header & ESP Enabled

Note

The INF file can support granular keywords that are displayed in the Advanced Property page of the UI. The miniport driver must read all of the granular settings from the registry at initialization, including settings that are not displayed, to register NDIS offload capabilities.

Grouped keywords

The grouped keywords are defined as follows:

Keyword Description
*TCPUDPChecksumOffloadIPv4 Describes whether the device enabled or disabled the calculation of IP, TCP, and UDP checksum over IPv4.
*TCPUDPChecksumOffloadIPv6 Describes whether the device enabled or disabled the calculation of TCP and UDP checksum over IPv6.

The following table describes the grouped keywords that you can use to configure offload services.

SubkeyName ParamDesc Value EnumDesc
TCPUDPChecksumOffloadIPv4 TCP/UDP Checksum Offload (IPv4) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Tx & Rx Enabled
TCPUDPChecksumOffloadIPv6 TCP/UDP Checksum Offload (IPv6) 0 Disabled
1 Tx Enabled
2 Rx Enabled
3 (Default) Tx & Rx Enabled

There are restrictions on the combinations of offloads that can be enabled. For example, if a miniport adapter supports LSOV1 or LSOV2, the miniport adapter also calculates the IP and TCP checksums. For more information about valid combinations of offloads, see Combining Types of Task Offloads.

If task offload services are disabled with a registry key setting, protocol drivers must not issue the OID_OFFLOAD_ENCAPSULATION object identifier (OID).

You can use the following registry values to enable or disable task offloading for the TCP/IP protocol:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\TCPIP\Parameters\DisableTaskOffload
Setting this value to one disables all of the task offloads from the TCP/IP transport. Setting this value to zero enables all of the task offloads.

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Ipsec\EnabledOffload
Setting this value to zero disables Internet protocol security (IPsec) offloads from the TCP/IP transport. The offloading of TCP/IP checksum tasks, large send offload version 1 (LSOV1), and large send offload version 2 (LSOV2) are not affected. Setting this value to one enables IPsec offloads.