Ethernet Products
Determine ramifications of Intel® Ethernet products and technologies
5534 Discussions

I225-V .INF aren't creating the necessary registry keys to support RSS and Indirection Table

djdallmann
Beginner
7,508 Views

I225-V .INF aren't creating the necessary registry keys to support RSS and Indirection Table, read below for more info.

Hoping this can be corrected in future .INF, thanks.

 

=================

Computer Info

=================

Motherboard: MSI MPG Z690 EDGE WIFI DDR4

Network Card Specifications

https://www.intel.com/content/www/us/en/products/sku/184676/intel-ethernet-controller-i225v/specifications.html

Windows Device ID: PCI\VEN_8086&DEV_15F3&REV_03

Inf Section: E15F3_3.10.0.1..17763


Note: This happens with both official intel drivers and motherboard vendor, and all versions I checked.


=================

Adding Microsoft required registry keys fixes the issue.

=================

https://docs.microsoft.com/de-de/windows-hardware/drivers/network/standardized-inf-keywords-for-rss 

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0009]
"*NumRssQueues"="4"
"*RSS"="1"
"*RSSProfile"="4"
"*RssBaseProcNumber"="0"
"*MaxRssProcessors"="4"
"*NumaNodeId"="0"
"*RssBaseProcGroup"="0"
"*RssMaxProcNumber"="4"
"*RssMaxProcGroup"="0"



After registry changes and restarting adapter, command output otherwise would return no output due to missing entries.

I-225V-RSSIndirectionTable.png

=================
Seems like it could be corrected by ensuring that the INF section

for E15F3_3.10.0.1..17763 uses:

=================

Before: AddReg = RSS.reg, RSS4Q.reg
After: AddReg = RSS.reg, RSS4Q.reg, RSSAdvanced.reg
Another note: TaskOffload and RSS need to be enabled on the windows side to get an indirection table and for RSS to work.

 

=================

RSS.reg and RSS4Q.reg only add the following:

[RSS.reg]
; *RSS

[RSS4Q.reg]
; NumRssQueues
HKR, Ndi\Params\*NumRssQueues, ParamDesc, 0, %NumRssQueues2%
HKR, Ndi\Params\*NumRssQueues, default, 0, "4"
HKR, Ndi\Params\*NumRssQueues, type, 0, "enum"
HKR, Ndi\Params\*NumRssQueues\Enum, "1", 0, %1queue%
HKR, Ndi\Params\*NumRssQueues\Enum, "2", 0, %2queues%
HKR, Ndi\Params\*NumRssQueues\Enum, "4", 0, %4queues% 


RSSAdvanced.reg adds what appears to be the necessary registry items.

[RSSAdvanced.reg]
; *MaxRssProcessors
HKR, Ndi\Params\*MaxRssProcessors, ParamDesc, 0, %MaxRssProcessors%
HKR, Ndi\Params\*MaxRssProcessors, default, 0, "8"
HKR, Ndi\Params\*MaxRssProcessors, type, 0, "enum"
HKR, Ndi\Params\*MaxRssProcessors\Enum, "1", 0, "1"
HKR, Ndi\Params\*MaxRssProcessors\Enum, "2", 0, "2"
HKR, Ndi\Params\*MaxRssProcessors\Enum, "4", 0, "4"
HKR, Ndi\Params\*MaxRssProcessors\Enum, "8", 0, "8"

; *RssBaseProcNumber
HKR, Ndi\params\*RssBaseProcNumber, ParamDesc, 0, %RssBaseProcNumber%
HKR, Ndi\params\*RssBaseProcNumber, default, 0, "0"
HKR, Ndi\params\*RssBaseProcNumber, min, 0, "0"
HKR, Ndi\params\*RssBaseProcNumber, max, 0, "63"
HKR, Ndi\params\*RssBaseProcNumber, step, 0, "1"
HKR, Ndi\params\*RssBaseProcNumber, Optional, 0, "0"
HKR, Ndi\params\*RssBaseProcNumber, type, 0, "int"

; *NumaNodeId
HKR, Ndi\params\*NumaNodeId, ParamDesc, 0, %NumaNodeId%
HKR, Ndi\params\*NumaNodeId, default, 0, "65535"
HKR, Ndi\params\*NumaNodeId, type, 0, "dword"
HKR, Ndi\params\*NumaNodeId, min, 0, "0"
HKR, Ndi\params\*NumaNodeId, max, 0, "65535"
HKR, Ndi\params\*NumaNodeId, step, 0, "1"

; *RSSProfile
HKR, Ndi\Params\*RSSProfile, ParamDesc, 0, %RSSProfile%
HKR, Ndi\Params\*RSSProfile, default, 0, "1"
HKR, Ndi\Params\*RSSProfile, type, 0, "enum"
HKR, Ndi\Params\*RSSProfile\Enum, "1", 0, %Closest_Processor%
HKR, Ndi\Params\*RSSProfile\Enum, "2", 0, %Closest_Processor_Static%
HKR, Ndi\Params\*RSSProfile\Enum, "3", 0, %NUMA_Scaling%
HKR, Ndi\Params\*RSSProfile\Enum, "4", 0, %NUMA_Scaling_Static%
HKR, Ndi\Params\*RSSProfile\Enum, "5", 0, %Conservative_Scaling%
HKR,, *RSSProfile, 0, "1"

 

0 Kudos
12 Replies
B_Y
Employee
7,452 Views

Hello @djdallmann,

 

Thank you for posting in Intel Ethernet Communities. This sharing of details is comprehensive.


Please let us know which Intel or Original Equipment Manufacturer (OEM) drivers you utilized in your testing environment and include a link if you can.

 

Thank you.

 

Best regards,

BY_Intel

Intel Customer Support


0 Kudos
djdallmann
Beginner
7,406 Views

Will get back to you soon.

0 Kudos
djdallmann
Beginner
7,402 Views

Win10 64 - Network Drivers for this product
https://www.msi.com/Motherboard/MPG-Z690-EDGE-WIFI-DDR4/support#driver 

 

Title: Intel Network Drivers
Version: 1.1.4.38
Release Date: 2023-03-01

Notes: This one doesn't really add any RSS registry keys at all from the looks at it, I think this was the driver that was supposed to disable Energy Efficient Ethernet (EEE) by default after all the fuss people were having with random disconnects. Never had the issues but for context.

 

Title: Intel Network Drivers
Version: 26.2.0.1
Release date: 2022-10-05
Notes: More closely aligns with my example, and the official Intel drivers.

0 Kudos
djdallmann
Beginner
7,368 Views

@B_Y hoping you can help look into this, just giving a friendly ping to bring it forward again. thank you!

0 Kudos
B_Y
Employee
7,354 Views

Hello @djdallmann,

 

Thank you for your patience. Upon checking the driver from Intel Network Drivers Version: 26.2.0.1, there was known Issue:

Receive Side Scaling value is blank

-----------------------------------

Changing the Receive Side Scaling setting of an adapter in a team may cause the value for that setting to appear blank when you next check it. It may also appear blank for the other adapters in the team. The adapter may be unbound from the team in this situation. Disabling and enabling the team will resolve the issue.


May I suggest you to try the later or latest driver from Intel® Ethernet Adapter Complete Driver Pack:

https://www.intel.com/content/www/us/en/download/15084/769266/intel-ethernet-adapter-complete-driver-pack.html


If the similar issue is identified, please share with us on the system report. Guide for the Intel® System Support Utility as following:

https://www.intel.com/content/www/us/en/support/articles/000008563/ethernet-products.html?wapkw=ssu


Thank you and looking forward to your response.

 

Best regards,

BY_Intel

Intel Customer Support


0 Kudos
djdallmann
Beginner
7,342 Views

Thanks I'll give it a shot this weekend.

0 Kudos
djdallmann
Beginner
7,337 Views

The drivers provided didn't add any RSS entries for "PCI\VEN_8086&DEV_15F3&REV_03", I used "\Release_28.0\PRO2500\Winx64\NDIS68\*".

0 Kudos
Anonymous
Not applicable
7,282 Views

Pretty sure you have to choose Latest on the dropdown. That currently being 28.2.1 https://www.intel.com/content/www/us/en/download/15084/intel-ethernet-adapter-complete-driver-pack.html

 

But that's beside the point, if you check page 6 of their latest release notes, you will see that they decided to end support for RSS. https://www.intel.com/content/www/us/en/content-details/778690/intel-ethernet-controller-products-release-notes.html?DocID=778690  

 

I've been looking into this as to fix having indirection table empty.

 

In one of the cards here being a I211, RSS are enabled with max 2 queues, but indirection table are still empty even after all the reg changes and more. As far as I have read, that means that RSS are not really working, since it's not allocating per CPU, even though enabled.

0 Kudos
Anonymous
Not applicable
7,222 Views

Ok, I found why the indirection table was coming out empty even after all the changes.

 

I had previously written about the drivers, but they were not at fault, even though some different behaviors of not working happened in between, installs and uninstalls, but ultimately setting this reg ReceiveScalingMode 1, was the cause of the indirection table to not outputting anything.

 

Very weird, but I have confirmed it, twice. Even after installing latest Intel drivers, package 28.2 (13.0...).

 

0 Kudos
B_Y
Employee
7,166 Views

Hello @djdallmann,


After checking internally, the software drivers linked from Intel page are generic versions, and can be used for general purposes.

Furthermore, the Intel® Ethernet Controller I225-V is embedded to the MSI motherboard. 

To avoid any potential installation incompatibilities on MSI system, we recommend checking with the MSI Support and use the software, driver and firmware provided via system manufacturer. 

We're sorry for the inconvenience that you have experienced and unable to provide immediate solution.


Please feel free to reach out to Intel should you need any further assistance, and we will be more than glad to continue assisting you. It was a pleasure to serve you.


Thank you and all the best!

 

Best regards,

BY_Intel

Intel Customer Support


0 Kudos
B_Y
Employee
6,987 Views

Hello @djdallmann,


Please be informed that we will now close this request since it would be best to reach out MSI support. Just feel free to post a new question if you may have any other inquiry in the future as this thread will no longer be monitored.


Thank you and all the best!

 

Best regards,

BY_Intel

Intel Customer Support


0 Kudos
electronictonic
Beginner
1,594 Views

 


Sorry to dig up an old thread but this works, open notepad and paste it in then save as a batch file after running it and looking in network adapter > advanced it is there like it should be.

 

RSS.jpg

 

 

where it has every instance of {4d36e972-e325-11ce-bfc1-08002be10318}\0012 in the code you need to go to device manager > network adapter > details then scroll down to driver key and copy the path there and replace every instance of it with mine if your driver key is different to mine.

 

Maybe you can implement this into the next driver update?

 

# Enable RSS
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*RSS" /t REG_SZ /d "1" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "RSS" /t REG_SZ /d "1" /f

# Add RSS Parameter Description
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSS" /v "ParamDesc" /t REG_SZ /d "Receive Side Scaling" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSS" /v "default" /t REG_SZ /d "0" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSS" /v "type" /t REG_SZ /d "enum" /f

# Add RSS Enum Values
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSS\Enum" /v "0" /t REG_SZ /d "Disabled" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSS\Enum" /v "1" /t REG_SZ /d "Enabled" /f

# Set Number of RSS Queues
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*NumRssQueues" /t REG_SZ /d "4" /f

# Add Number of RSS Queues Parameter Description
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues" /v "ParamDesc" /t REG_SZ /d "Number of RSS Queues" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues" /v "default" /t REG_SZ /d "4" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues" /v "type" /t REG_SZ /d "enum" /f

# Add Number of RSS Queues Enum Values
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues\Enum" /v "1" /t REG_SZ /d "1 Queue" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues\Enum" /v "2" /t REG_SZ /d "2 Queues" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues\Enum" /v "3" /t REG_SZ /d "3 Queues" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*NumRssQueues\Enum" /v "4" /t REG_SZ /d "4 Queues" /f

# Set RSS Profile
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*RSSProfile" /t REG_SZ /d "4" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "RSSProfile" /t REG_SZ /d "4" /f

# Add RSS Profile Parameter Description
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile" /v "ParamDesc" /t REG_SZ /d "RSS load balancing profile" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile" /v "default" /t REG_SZ /d "1" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile" /v "type" /t REG_SZ /d "enum" /f

# Add RSS Profile Enum Values
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile\Enum" /v "1" /t REG_SZ /d "ClosestProcessor" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile\Enum" /v "2" /t REG_SZ /d "ClosestProcessorStatic" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile\Enum" /v "3" /t REG_SZ /d "NUMAScaling" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile\Enum" /v "4" /t REG_SZ /d "NUMAScalingStatic" /f
Reg Add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012\Ndi\Params\*RSSProfile\Enum" /v "5" /t REG_SZ /d "ConservativeScaling" /f

# both RSS and MSI are enabled
Reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*RssOrMsi" /t REG_SZ /d "3" /f

# Specify CPUs that handle RSS: start cpu=BaseProcessorNumber, end cpu: MaxProcessorNumber, ie; [BaseProcessorNumber,MaxProcessorNumber]
Reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "BaseProcessorNumber" /t REG_DWORD /d "8" /f
Reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*RssBaseProcNumber" /t REG_DWORD /d "8" /f
Reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "MaxProcessorNumber" /t REG_DWORD /d "14" /f
Reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*RssMaxProcNumber" /t REG_DWORD /d "14" /f

#MaxRssProcessors: max 4 cores
Reg add "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0012" /v "*MaxRssProcessors" /t REG_DWORD /d "4" /f

 

 

0 Kudos
Reply