Standardized INF Keywords for RSS

The RSS interface supports standardized INF keywords that appear in the registry and are specified in INF files.

The following list shows the enumeration standardized INF keywords for RSS:

*RSS
Enable or disable support for RSS for miniport adapters.

*RSSProfile
The processor selection and load-balancing profile.

Note Changes to the *RSSProfile setting require an adapter restart.

Enumeration standardized INF keywords have the following attributes:

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 describes the possible INF entries for the RSS enumeration keywords.

SubkeyName ParamDesc Value EnumDesc

RSS

Receive Side Scaling

0

Disabled

1 (Default)

Enabled

RSSProfile

RSS load balancing profile

1

ClosestProcessor: Default behavior is consistent with that of Windows Server 2008 R2.

2

ClosestProcessorStatic: No dynamic load-balancing - Distribute but don't load-balance at runtime.

3

NUMAScaling: Assign RSS CPUs in a round robin basis across every NUMA node to enable applications that are running on NUMA servers to scale well.

4

(Default)

NUMAScalingStatic: RSS processor selection is the same as for NUMA scalability without dynamic load-balancing.

5

ConservativeScaling: RSS uses as few processors as possible to sustain the load. This option helps reduce the number of interrupts.

NDIS 6.30 added support for *RSSProfile.

The following list shows the standardized INF keywords for RSS that can be edited:

*RssBaseProcGroup
The number of the processor group for the processor number that is specified in the *RssBaseProcNumber keyword.

*NumaNodeId
The preferred NUMA node that is used for the memory allocations of the network adapter. Also, the operating system attempts to use the CPUs from the preferred NUMA node first for RSS.

A driver for a PCI expansion card should not specify the NUMA node ID statically in its INF, since the closest node depends on which PCI slot the card is plugged into. Only specify *NumaNodeId if the network adapter is integrated into the system, the NUMA node is known in advance, and the node cannot be determined at runtime by querying ACPI.

Note If this keyword is present and its value is less than the number of NUMA nodes in the computer, NDIS uses this value in the PreferredNumaNode member in the NDIS_RSS_PROCESSOR_INFO structure.

Note In Windows 8 the *NumaNodeId value is ignored if the NIC RSS profile is set to NUMAScaling(2) or NUMAScalingStatic(3).

*RssBaseProcNumber
The number of the base RSS processor in the specified group.

*MaxRssProcessors
The maximum number of RSS processors.

*RssMaxProcNumber
The maximum processor number of the RSS interface. If *RssMaxProcNumber is specified, then *RssMaxProcGroup should also be specified.

*RssMaxProcNumber
The maximum processor number of the RSS interface. If *RssMaxProcNumber is specified, then *RssMaxProcGroup should also be specified.

*RssMaxProcGroup The maximum processor group of the RSS interface.

*RssBaseProcGroup together with *RssBaseProcNumber form a PROCESSOR_NUMBER structure that identifies the smallest processor number that can be used with RSS. *RssMaxProcGroup together with *RssMaxProcNumber form a PROCESSOR_NUMBER structure that identifies the maximum processor number that can be used with RSS.

For example, suppose *RssBaseProcGroup is set to 1, *RssBaseProcNumber is set to 16, *RssMaxProcGroup is set to 3, and *RssMaxProcNumber is set to 8. Using : notation, the base processor is 1:16 and the max processor is 3:8. Then processors 0:0, 0:32, 1:0, and 1:15 will not be considered candidates for RSS, because they are below the base processor number. Processors 1:16, 1:31, 2:0, 2:63, 3:0, and 3:8 will all be considered candidates for RSS, because they fall in the range 1:16 through 3:8. Processors 3:9, 3:31, and 4:0 will not be considered candidates for RSS, because they are beyond the maximum processor number.

NDIS 6.20 added support for the *RssBaseProcGroup, *NumaNodeId, *RssBaseProcNumber, and *MaxRssProcessors keywords.

NDIS 6.30 added support for the *RssMaxProcNumber, and *NumRSSQueues keywords.

Standardized INF keywords that can be edited have the following attributes:

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.

Type
The type of value that can be edited. The value can be either numeric (Int) or text that can be edited (Edit).

Default value
The default value for the integer or text. <IHV defined> indicates that the value is associated with the particular independent hardware vendor (IHV) requirements.

Min
The minimum value that is allowed for an integer. <IHV defined> indicates that the minimum value is associated with the particular IHV requirements.

Max
The maximum value that is allowed for an integer. <IHV defined> indicates that the minimum value is associated with the particular IHV requirements.

The following table describes all of the RSS keywords that can be edited.

SubkeyName ParamDesc Type Default value Min Max

RssBaseProcGroup

RSS Base Processor Group

Int

0

0

MAXIMUM_GROUPS-1

NumaNodeId

Preferred NUMA node

Int

65535 (Any node)

0

System specific - cannot exceed 65534

RssBaseProcNumber

RSS Base Processor Number

Int

0

0

MAXIMUM_PROC_PER_GROUP-1

MaxRssProcessors

Maximum number of RSS Processors

Int

Windows Server 2008 defaults:

8 for 1G or slower adapters, 16 for 10G adapters

Windows 8 defaults:

For NICs with no MSI-X support - 2 for 1GbE or slower adapters, 4 for 10 GbE adapters.

For NICs with MSI-X support - 4 for 1GbE or slower adapters, 16 for 10 GbE adapters.

1

MAXIMUM_PROC_PER_SYSTEM

RssMaxProcNumber

Maximum RSS Processor Number

Int

MAXIMUM_PROC_PER_GROUP-1 (Default)

0

MAXIMUM_PROC_PER_GROUP-1

NumRSSQueues

Maximum Number of RSS Queues

Int

Device-specific

1

Device-specific

*RSSMaxProcGroup

RSS Max Processor Group

Int

0

0

MAXIMUM_GROUPS-1

Note Although the valid range for *RssBaseProcGroup is zero to MAXIMUM_GROUPS-1, in Windows 7 it must be zero. Otherwise, the TCP/IP protocol will not use any processors for RSS.

Note The default value for *NumaNodeId (65535) means the network adapter is agnostic to NUMA node, and NDIS should not attempt to prefer any node over another. If the *NumaNodeId keyword is not present, then NDIS automatically selects the closest node based on hints from ACPI.

For more information about standardized INF keywords, see Standardized INF Keywords for Network Devices.