Enumeration Keywords
NDIS 6.0 and later versions of NDIS provide standardized enumeration keywords for miniport drivers of network devices. Enumeration keywords are associated with values that appear as a list in a menu.
The following example shows an INF file definition for an enumeration keyword.
HKR, Ndi\params\<SubkeyName>, ParamDesc, 0, "%<SubkeyName>%" HKR, Ndi\params\<SubkeyName>, Type, 0, "enum" HKR, Ndi\params\<SubkeyName>, Default, 0, "3" HKR, Ndi\params\<SubkeyName>, Optional, 0, "0" HKR, Ndi\params\<SubkeyName>\enum, "0", 0, "%Disabled%" HKR, Ndi\params\<SubkeyName>\enum, "1", 0, "%Tx Enabled%" HKR, Ndi\params\<SubkeyName>\enum, "2", 0, "%Rx Enabled%" HKR, Ndi\params\<SubkeyName>\enum, "3", 0, "%Rx & Tx Enabled%"
The general enumeration keywords are:
- *SpeedDuplex
-
Speed and duplex settings that a devices supports. The device INF file should list only the settings that the associated device supports. That is, for an Ethernet 10/100 device that can support only full-duplex mode, settings for Gigabit or higher speeds or half duplex should not be listed in the associated INF file.
- *FlowControl
-
The ability for the device to enable or disable flow control in the send or receive path.
- *PriorityVLANTag
-
A value that describes whether the device has enabled or disabled the ability to insert the 802.1Q tags for packet priority and virtual LANs (VLANs). This keyword does not describe whether the device enabled or disabled packet prioroty or VLAN tags from a functional perspective. Instead, it describes whether the device inserts 802.1Q tags during a send operation, if 802.1Q tag information is available in the NET_BUFFER_LIST out-of-band (OOB) information, and whether the device copies 802.1Q tags to OOB during receive operations.
Note that you should remove the 802.1Q header from all receive packets regardless of the *PriorityVLANTag setting. If the 802.1Q header is left in a packet, other drivers might not be able to parse the packet correctly.
Note If the miniport driver supports NDIS quality of service (QoS), it must also read the *QOS keyword value. Based on the *QOS keyword value, the *PriorityVLANTag keyword values are interpreted differently. For more information, see Standardized INF Keywords for NDIS QoS.
- *InterruptModeration
-
A value that describes whether the device enabled or disabled interrupt moderation. Interrupt moderation algorithms are device-dependent. The device manufacturer can use non-standardized keywords to support algorithmic settings. For more information about interrupt moderation, see Interrupt Moderation.
- *RSS
-
A value that describes whether the device enabled or disabled receive-side scaling (RSS). For more information about RSS, see NDIS 6.0 Receive-Side Scaling.
- *HeaderDataSplit
-
A value that describes whether the device enabled or disabled header-data split. For more information about header-data split, see Header-Data Split.
The following keywords are associated with connection offload services:
-
*TCPConnectionOffloadIPv4
-
*TCPConnectionOffloadIPv6
For more information about the connection offload keywords, see Using Registry Values to Enable and Disable Connection Offloading.
The following keywords are associated with task offload services:
-
*IPChecksumOffloadIPv4
-
*IPChecksumOffloadIPv6
-
*TCPChecksumOffloadIPv4
-
*TCPChecksumOffloadIPv6
-
*UDPChecksumOffloadIPv4
-
*UDPChecksumOffloadIPv6
-
*LsoV1IPv4
-
*LsoV2IPv4
-
*LsoV2IPv6
-
*IPsecOffloadV1IPv4
-
*IPsecOffloadV2
-
*IPsecOffloadV2IPv4
-
*TCPUDPChecksumOffloadIPv4
-
*TCPUDPChecksumOffloadIPv6
For more information about the TCP/IP offload keywords, see Using Registry Values to Enable and Disable Task Offloading.
The columns in the table at the end of this topic describe the following attributes for enumeration keywords:
- SubkeyName
-
The name of the keyword that you must specify in the INF file and that appears in the registry.
- ParamDesc
-
The display text that is associated with SubkeyName.
- Value
-
The enumeration integer value that is associated with each option in the list. This value is stored in NDI\params\ SubkeyName\Value.
- EnumDesc
-
The display text that is associated with each value that appears in the menu.
- Default
-
The default value for the menu.
The following table lists all of the keywords and describes the values that a driver must use for the preceding attributes. For more information about a keyword, search for the keyword in the WDK documentation.
| SubkeyName | ParamDesc | Value | EnumDesc |
|---|---|---|---|
|
*SpeedDuplex |
Speed & Duplex |
0 (Default) |
Auto Negotiation |
|
1 |
10 Mbps Half Duplex | ||
|
2 |
10 Mbps Full Duplex | ||
|
3 |
100 Mbps Half Duplex | ||
|
4 |
100 Mbps Full Duplex | ||
|
5 |
1.0 Gbps Half Duplex | ||
|
6 |
1.0 Gbps Full Duplex | ||
|
7 |
10 Gbps Full Duplex | ||
|
*FlowControl |
Flow Control |
0 |
Disabled |
|
1 |
Tx Enabled | ||
|
2 |
Rx Enabled | ||
|
3 (Default) |
Rx & Tx Enabled | ||
|
*PriorityVLANTag |
Packet Priority & VLAN |
0 |
Packet Priority & VLAN Disabled |
|
1 |
Packet Priority Enabled | ||
|
2 |
VLAN Enabled | ||
|
3 (Default) |
Packet Priority & VLAN Enabled | ||
|
*InterruptModeration |
Interrupt Moderation |
0 |
Disabled |
|
1 (Default) |
Enabled | ||
|
*RSS |
Receive-Side Scaling |
0 |
Disabled |
|
1 (Default) |
Enabled | ||
|
*HeaderDataSplit |
Header-Data Split |
0 |
Disabled |
|
1 (Default) |
Enabled | ||
|
*TCPConnectionOffloadIPv4 |
TCP Connection Offload (IPv4) |
0 |
Disabled |
|
1 (Default) |
Enabled | ||
|
*TCPConnectionOffloadIPv6 |
TCP Connection Offload (IPv6) |
0 |
Disabled |
|
1 (Default) |
Enabled | ||
|
*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 Version 2 (IPv4) |
0 |
Disabled |
|
1 (Default) |
Enabled | ||
|
*LsoV2IPv6 |
Large Send Offload Version 2 (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 | ||
|
*TCPUDPChecksumOffloadIPv4 |
TCP/UDP Checksum Offload (IPv4) |
0 |
Disabled |
|
1 |
Tx Enabled | ||
|
2 |
Rx Enabled | ||
|
3 (Default) |
Tx and Rx Enabled | ||
|
*TCPUDPChecksumOffloadIPv6 |
TCP/UDP Checksum Offload (IPv6) |
0 |
Disabled |
|
1 |
Tx Enabled | ||
|
2 |
Rx Enabled | ||
|
3 (Default) |
Tx and Rx Enabled |
Send comments about this topic to Microsoft
Build date: 4/3/2012