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.