Export (0) Print
Expand All
1 out of 1 rated this helpful - Rate this topic

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 device 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.

Note  

Ethernet devices today support flow control, and the Windows 8 in-box drivers for LAN have flow control enabled by default. When a kernel debugger attaches to one of these LAN adapters, the NIC will start pushing flow control pause frames into the network. Most network switches will react by temporarily taking down the network for all other computers that are connected to the same hub. This is a common development scenario, and the end-user experience is both undesirable and difficult to diagnose.

For this reason, in Windows 8 and later, NDIS will disable flow control automatically when debugging is enabled on the computer (for example, by typing bcdedit /set debug on at the command line). When kernel debugging is enabled and the miniport calls NdisReadConfiguration and passes "*FlowControl" for the Keyword parameter, NDIS will override the configured value and return zero.

If you need to enable flow control while debugging, NDIS provides the AllowFlowControlUnderDebugger registry value to allow you to do that. The AllowFlowControlUnderDebugger registry value prevents NDIS from disabling flow control, and allows NICs to keep their configured behavior. It can be found under the following registry key:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NDIS\Parameters

Set this registry value to 0x00000001.

If it does not exist, you can create a value with the name AllowFlowControlUnderDebugger and the type REG_DWORD and set it to 0x00000001.

*PriorityVLANTag

A value that indicates 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 indicate whether the device enabled or disabled packet priority or VLAN tags. Instead, it describes the following:

  • Whether the device inserts 802.1Q tags during a send operation
  • Whether 802.1Q tag information is available in the NET_BUFFER_LIST out-of-band (OOB) information
  • Whether the device copies 802.1Q tags to OOB during receive operations

The miniport driver 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.

If the Rx flag is enabled on the receive path, the miniport driver should copy the removed 802.1Q header into OOB.

Otherwise, if the Rx flag is disabled, the miniport driver should not copy the removed 802.1Q header into OOB.

If the Tx flag is enabled on the transmit path, the miniport driver should do the following:

  • Insert the 802.1Q header into each outgoing packet and fill it up with the data from OOB (if any non-zero data exists in OOB).
  • Advertise appropriate MacOptions in NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES (NDIS_MAC_OPTION_8021P_PRIORITY and NDIS_MAC_OPTION_8021Q_VLAN).

Otherwise, if the Tx flag is disabled, then:

  • The miniport filter should not honor 802.1Q information in OOB (and therefore not insert any tag).
  • The miniport filter should not advertise appropriate MacOptions in NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES.

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

Note  For devices that support both large send offload version 1 (LSOv1) and LSOv2 over IPv4, only the *LsoV2IPv4 keyword should be used in the INF file and registry values. If, for example, the *LsoV2IPv4 keyword appears in the INF file and the *LsoV1IPv4 keyword appears in the registry (or vice versa), the *LsoV2IPv4 keyword always takes precedence.

*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.

SubkeyNameParamDescValueEnumDesc

*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

8

20 Gbps Full Duplex

9

40 Gbps Full Duplex

10

100 Gbps Full Duplex

*FlowControl

Flow Control

0

Disabled

1

Tx Enabled

2

Rx Enabled

3 (Default)

Rx & Tx Enabled

4

Auto Negotiation

*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 (Default)

Disabled

1

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

*IPChecksumOffloadIPv6

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

Did you find this helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft. All rights reserved.