Network Tweaks
Network Tweaks
:: This script should be able to run as you execute as administrator without asking
you to do anything, if that is not happening, it could be because the script were
not able to find your adapter properly, you might need to do alterations yourself
or create an issue.
:: Anything that the script are using to run the rest of the script should be above
the script, before the first divider =====. If ever required, that's where
alterations would be needed, in case of problems, that is.
:: If you want the script to work on a different ethernet or even wifi device, you
can alter the first 3 powershell comands, the Where conditions, to find the one you
want.
::
===================================================================================
===================================================================================
=======================
:: If you get any issues, check with the command "Get-NetAdapterBinding -Name '*' -
AllBindings -IncludeHidden", you can easily enable any of the components with
"Enable-NetAdapterBinding".
:: I noticed that the internet status were not working after disabling everything
except IPV4, but there were still internet connection even after a restart.
powershell "Get-NetAdapterBinding -Name '*' -AllBindings -IncludeHidden | Where-
Object { $_.ComponentID -notin @('ms_tcpip', 'ms_ndisuio') -and $_.Enabled -eq
'True' } | ForEach { Disable-NetAdapterBinding -Name '*' -ComponentID
$_.ComponentID -AllBindings -IncludeHidden -ErrorAction SilentlyContinue }"
:: IPV6 Note: By default ipv6 are disabled, if you use it, make sure to change the
script yourself, there are more than one place that would require changing.
::
===================================================================================
===================================================================================
=============
:: Find your optimal MTU that is not fragmented, use the command below. Start from
1500 and dont go below 1400.
:: ping 1.1.1.1 -f -l 1500
:: Only problem here, is that this is based on a value already preset on windows,
usually 1500. To be fragmented or not, it is not considering what comes before your
PC.
:: Why? Because it matters the MTU value from your ISP, Modem / Router and whatever
else you might have in between, only then you would know the best value to not be
fragmented, therefore have no packet loss (which happens due to the remaining bytes
get dropped), most noticed in games.
:: If I am not mistaken (I could be), you should use the lowest value from what
comes from before your PC, set that on windows and then do the ping / packet
fragmentation test from that value till not fragmented, then you set that value as
the MTU, and it should be the optimal. I suppose 1400 could be a fragmentation
safety value.
:: https://www.cloudflare.com/learning/network-layer/what-is-mtu/ - Dont mind about
MSS, that is based on the MTU value. Though is recommended for MSS to be 40 less
than the MTU set in total.
:: In the internet, you will find many repetitions of the same thing and that is
not complete, probably one copied from the other without fully understanding. Not
that I do.
:: To see the current MTU value set in Windows, use: netsh interface ipv4 show
subinterface
netsh interface ipv4 set subinterface %ADAPTER_NAME% mtu=%MTU% store=persistent
:: Options to help fix network issues, but you may lose tweaks in the process. Not
together but individually.
:: ipconfig /flushdns
:: ipconfig /release
:: ipconfig /renew
:: ipconfig /registerdns
:: arp -d *
:: netsh winsock reset
:: netsh interface ip delete arpcache
:: netsh int ip reset
:: netsh branchcache reset
:: netsh advfirewall reset
::
===================================================================================
===================================================================================
=======================
:: Disable IPV6
REG ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\services\Tcpip6\Parameters" /v
EnableICSIPv6 /t REG_DWORD /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip6\Parameters" /v
DisabledComponents /t REG_DWORD /d 255 /f
:: TCPIP priorities
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
ServiceProvider" /v LocalPriority /t REG_DWORD /d 3 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
ServiceProvider" /v HostsPriority /t REG_DWORD /d 3 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
ServiceProvider" /v DnsPriority /t REG_DWORD /d 6 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\
ServiceProvider" /v NetbtPriority /t REG_DWORD /d 7 /f
:: Disable multicast
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DnsClient" /v
EnableMulticast /t REG_DWORD /d 0 /f
:: If your ethernet card has support for, try to use 4096 in both. It uses more
memory, but now days it shouldnt be a problem, in most cases.
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*TransmitBuffers" /t REG_SZ /d 2048 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*ReceiveBuffers" /t REG_SZ /d 2048 /f
:: If Auto Negotiation are causing disconnect issues randomly, try set 1 Gbps Full
Duplex
:: (0) = Auto Negotiation, (4) = 100 Mbps Full Duplex, (6) = 1 Gbps Full Duplex,
(2500) = 2.5 Gbps Full Duplex, (5000) = 5 Gbps Full Duplex, (7) = 10 Gbps Full
Duplex
:: REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*SpeedDuplex" /t REG_SZ /d 6 /f
:: Increase the size of an Ethernet devices ring buffers if the packet drop rate
causes applications to report a loss of data, timeouts, or other issues.
:: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/
monitoring_and_managing_system_status_and_performance/tuning-the-network-
performance_monitoring-and-managing-system-status-and-performance
:: A long buffer size leads to low latency. However, low latency comes at the cost
of throughput.
:: https://docs.informatica.com/integration-cloud/data-integration-connectors/h2l/
1387-performance-tuning-guidelines-for-microsoft-azure-data-lake/performance-
tuning-guidelines-for-microsoft-azure-data-lake-stor/performance-tuning-
parameters/tune-the-hardware/nic-card-ring-buffer-size.html
:: However high buffer may also be a cause of delays, so I might just leave double
the default value.
:: Just as the NDI comments below, I will skip this portion for now, but leave it
here for information and for others to test.
:: I would say that this probably need better tweaking, testing and understanding
of side effects.
goto skip_ringbuffer_tweaks
:skip_ringbuffer_tweaks
:: TSS (Transmission Side Scaling) where it tries to do the same as RSS, but for
outbound traffic. Where RSS are for inbound traffic.
:: https://doc.dpdk.org/guides/nics/bnxt.html#stateless-offloads - 11.4.3.3
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v EnableTss /t REG_SZ /d 1 /f
:: Run this powershell command Get-NetAdapterRss, if you want to know whether RSS
are working in your machine, if the indirection table are filled, it is, if not,
then it's not.
:: Beware that, to have RSS working, you must have Task Offload enabled, along some
other ones related to Offload and Checksum. This script already has all that is
needed, set.
:: I read that MSI(-X) are required for RSS to work.
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RSS" /t REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RssBaseProcNumber" /t REG_SZ /d
%RSSBaseNumber% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*MaxRssProcessors" /t REG_SZ /d
%CoresQty% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RssMaxProcNumber" /t REG_SZ /d
%LogicalProcessorsQty% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*NumaNodeId" /t REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RssBaseProcGroup" /t REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RssMaxProcGroup" /t REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RSSProfile" /t REG_SZ /d 3 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RssOrVmqPreference" /t REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*RssOnHostVPorts" /t REG_SZ /d 0 /f
:: In this registry, it was being set to a wrong value, it's actually the
NumberOfReceiveQueues. In certain cards, if you set higher than the max supported,
it might reset to 1.
:: In that case you need to set the value yourself, based on what your ethernet
card support. You can check with the powershell command Get-NetAdapterRss, after
you have set the value and restarted.
:: Alternatively, if your adapter has a different name, use that. Set-NetAdapterRSS
-Name Ethernet -NumberOfReceiveQueues 4
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v "*NumRSSQueues" /t REG_SZ /d 4 /f
:: For whatever reason, this reg was causing RSS Indirection table to not output
anything. RSS - Hash Only Mode.
:: REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v ReceiveScalingMode /t REG_SZ /d 1 /f
REG DELETE "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%" /v ReceiveScalingMode /f
:: NDI Tweaks
:: All the NDI tweaks, will usually show the option in the ethernet device in the
advanced gui tab. Some only seem to work if they are there, but it doesnt mean
necessarily that the card will have support for it.
:: This is just a way to guarantee that, if the card has the support, it should
work, otherwise it's just there.
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues" /v ParamDesc /t
REG_SZ /d "Maximum Number of RSS Queues" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues" /v default /t
REG_SZ /d 4 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues\Enum" /v 1 /t REG_SZ
/d "1 Queue" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues\Enum" /v 2 /t REG_SZ
/d "2 Queues" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues\Enum" /v 4 /t REG_SZ
/d "4 Queues" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues\Enum" /v 8 /t REG_SZ
/d "8 Queues" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumRSSQueues\Enum" /v 16 /t
REG_SZ /d "16 Queues" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile" /v ParamDesc /t
REG_SZ /d "RSS load balancing profile" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile" /v default /t
REG_SZ /d 3 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile" /v type /t REG_SZ /d
enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile\Enum" /v 1 /t
REG_SZ /d ClosestProcessor /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile\Enum" /v 2 /t
REG_SZ /d ClosestProcessorStatic /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile\Enum" /v 3 /t
REG_SZ /d NUMAScaling /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile\Enum" /v 4 /t
REG_SZ /d NUMAScalingStatic /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSSProfile\Enum" /v 5 /t
REG_SZ /d ConservativeScaling /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumaNodeId" /v ParamDesc /t
REG_SZ /d "Preferred NUMA node" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumaNodeId" /v default /t
REG_SZ /d 65535 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumaNodeId" /v type /t REG_SZ /d
dword /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumaNodeId" /v min /t REG_SZ /d 0
/f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumaNodeId" /v max /t REG_SZ /d
65535 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*NumaNodeId" /v step /t REG_SZ /d
1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors" /v ParamDesc /t
REG_SZ /d "Maximum number of RSS Processors" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors" /v default /t
REG_SZ /d 8 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors\Enum" /v 1 /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors\Enum" /v 2 /t
REG_SZ /d 2 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors\Enum" /v 4 /t
REG_SZ /d 4 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors\Enum" /v 8 /t
REG_SZ /d 8 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*MaxRssProcessors\Enum" /v 16 /t
REG_SZ /d 16 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v
ParamDesc /t REG_SZ /d "RSS Base Processor Number" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v default /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v type /t
REG_SZ /d int /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v min /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v max /t
REG_SZ /d 63 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v step /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssBaseProcNumber" /v Optional /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v ParamDesc /t
REG_SZ /d "RSS Max Processor Number" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v default /t
REG_SZ /d 63 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v type /t
REG_SZ /d int /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v min /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v max /t
REG_SZ /d 63 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v step /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RssMaxProcNumber" /v Optional /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSS" /v ParamDesc /t REG_SZ /d
"Receive Side Scaling" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSS" /v default /t REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSS" /v type /t REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSS\Enum" /v 0 /t REG_SZ /d
"Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RSS\Enum" /v 1 /t REG_SZ /d
"Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v ParamDesc /t
REG_SZ /d "Receive Buffers" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v default /t
REG_SZ /d 512 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v min /t
REG_SZ /d 32 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v max /t
REG_SZ /d 4096 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v step /t REG_SZ
/d 8 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v Base /t REG_SZ
/d 10 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*ReceiveBuffers" /v type /t REG_SZ
/d int /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v ParamDesc /t
REG_SZ /d "Transmit Buffers" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v default /t
REG_SZ /d 512 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v min /t REG_SZ
/d 32 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v max /t REG_SZ
/d 4096 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v step /t
REG_SZ /d 8 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v Base /t
REG_SZ /d 10 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*TransmitBuffers" /v type /t
REG_SZ /d int /f
goto skip_ring_ndi
:: I dont know if started taking effect after adding these, but I noticed some ping
spikes that I never seen before. Maybe to prevent connection warns, I dont know.
:: I will comment/skip this, and leave for the information and maybe others can
test too.
:: https://medium.com/coccoc-engineering-blog/linux-network-ring-buffers-
cea7ead0b8e8
:: Long queue can give you high throughput but can cause a super high latency
outliers. Short queue can be used to optimize latency, but it comes with the risk
of dropping packets when there are too much too handle.
:skip_ring_ndi
:: I will be adding a few more based on commands above, since some seem to only
work / have an effect, if these are added in.
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v ParamDesc /t REG_SZ
/d "RX Throttle" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v default /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v type /t REG_SZ /d
dword /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v min /t REG_SZ /d
0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v max /t REG_SZ /d
5000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v step /t REG_SZ /d
10 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\RxThrottle" /v Optional /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap" /v ParamDesc /t
REG_SZ /d "Flow Control Cap" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap" /v default /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap\Enum" /v 0 /t
REG_SZ /d "Flow Control Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap\Enum" /v 1 /t
REG_SZ /d "Flow Control RX Pause" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap\Enum" /v 2 /t
REG_SZ /d "Flow Control TX Pause" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap\Enum" /v 3 /t
REG_SZ /d "Flow Control RX TX Pause" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\FlowControlCap\Enum" /v 2147483648
/t REG_SZ /d "Flow Control Auto" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap" /v ParamDesc /t
REG_SZ /d "Task Offload" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap" /v default /t
REG_SZ /d 63 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap\Enum" /v 0 /t
REG_SZ /d "Task Offload None" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap\Enum" /v 42 /t
REG_SZ /d "Task Offload RX Checksum" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap\Enum" /v 21 /t
REG_SZ /d "Task Offload TX Checksum" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\TaskOffloadCap\Enum" /v 63 /t
REG_SZ /d "Task Offload RX TX Checksum" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv4" /v ParamDesc /t
REG_SZ /d "UDP Segmentation Offload (IPv4)" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv4" /v default /t REG_SZ /d
1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv4" /v type /t REG_SZ /d
enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv4" /v Optional /t REG_SZ /d
0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv4\Enum" /v 0 /t REG_SZ /d
"Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv4\Enum" /v 1 /t REG_SZ /d
"Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv6" /v ParamDesc /t
REG_SZ /d "UDP Segmentation Offload (IPv6)" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv6" /v default /t REG_SZ /d
1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv6" /v type /t REG_SZ /d
enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv6" /v Optional /t REG_SZ /d
0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv6\Enum" /v 0 /t REG_SZ /d
"Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*UsoIPv6\Enum" /v 1 /t REG_SZ /d
"Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv4" /v ParamDesc /t
REG_SZ /d "Recv Segment Coalescing (IPv4)" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv4" /v default /t REG_SZ /d
1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv4" /v type /t REG_SZ /d
enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv4" /v Optional /t REG_SZ /d
0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv4\Enum" /v 0 /t REG_SZ /d
"Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv4\Enum" /v 1 /t REG_SZ /d
"Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv6" /v ParamDesc /t
REG_SZ /d "Recv Segment Coalescing (IPv6)" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv6" /v default /t REG_SZ /d
1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv6" /v type /t REG_SZ /d
enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv6" /v Optional /t REG_SZ /d
0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv6\Enum" /v 0 /t REG_SZ /d
"Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*RscIPv6\Enum" /v 1 /t REG_SZ /d
"Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*HeaderDataSplit" /v ParamDesc /t
REG_SZ /d "Header Data Split" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*HeaderDataSplit" /v default /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*HeaderDataSplit" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*HeaderDataSplit\Enum" /v 0 /t
REG_SZ /d "Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*HeaderDataSplit\Enum" /v 1 /t
REG_SZ /d "Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR" /v ParamDesc /t REG_SZ /d
"Interrupt Throttle Rate" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR" /v default /t REG_SZ /d 64 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR" /v type /t REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR\Enum" /v 500 /t REG_SZ /d
"Extreme" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR\Enum" /v 250 /t REG_SZ /d
"High" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR\Enum" /v 125 /t REG_SZ /d
"Medium" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR\Enum" /v 64 /t REG_SZ /d "Low"
/f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR\Enum" /v 32 /t REG_SZ /d
"Minimal" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\ITR\Enum" /v 0 /t REG_SZ /d
"Off" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*SelectiveSuspend" /v ParamDesc /t
REG_SZ /d "Selective Suspend" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*SelectiveSuspend" /v default /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*SelectiveSuspend" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*SelectiveSuspend\Enum" /v 0 /t
REG_SZ /d "Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*SelectiveSuspend\Enum" /v 1 /t
REG_SZ /d "Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing" /v ParamDesc /t
REG_SZ /d "DMA Coalescing" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing" /v default /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 0 /t REG_SZ
/d "Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 250 /t
REG_SZ /d "0.250ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 500 /t
REG_SZ /d "0.5ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 1000 /t
REG_SZ /d "1ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 2000 /t
REG_SZ /d "2ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 3000 /t
REG_SZ /d "3ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 4000 /t
REG_SZ /d "4ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 5000 /t
REG_SZ /d "5ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 6000 /t
REG_SZ /d "6ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 7000 /t
REG_SZ /d "7ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 8000 /t
REG_SZ /d "8ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 9000 /t
REG_SZ /d "9ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\DMACoalescing\Enum" /v 10000 /t
REG_SZ /d "10ms" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*VMQ" /v ParamDesc /t REG_SZ /d
"VMQ" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*VMQ" /v default /t REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*VMQ" /v type /t REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*VMQ\Enum" /v 0 /t REG_SZ /d
"Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*VMQ\Enum" /v 1 /t REG_SZ /d
"Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketCoalescing" /v ParamDesc /t
REG_SZ /d "Packet Coalescing" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketCoalescing" /v default /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketCoalescing" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketCoalescing\Enum" /v 0 /t
REG_SZ /d "Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketCoalescing\Enum" /v 1 /t
REG_SZ /d "Enabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketDirect" /v ParamDesc /t
REG_SZ /d "Packet Direct" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketDirect" /v default /t
REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketDirect" /v type /t
REG_SZ /d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketDirect\Enum" /v 0 /t REG_SZ
/d "Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\Ndi\Params\*PacketDirect\Enum" /v 1 /t REG_SZ
/d "Enabled" /f
:: PROSetNdi tweaks
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi" /v EnableLLI /t REG_SZ /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi\Params\EnableLLI" /v ParamDesc /t
REG_SZ /d "Low Latency Interrupts" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi\Params\EnableLLI" /v default /t
REG_SZ /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi\Params\EnableLLI" /v type /t REG_SZ
/d enum /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi\Params\EnableLLI\Enum" /v 0 /t
REG_SZ /d "Disabled" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi\Params\EnableLLI\Enum" /v 1 /t
REG_SZ /d "Port Based" /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\
%ETHERNET_DEVICE_CLASS_GUID_WITH_KEY%\PROSetNdi\Params\EnableLLI\Enum" /v 2 /t
REG_SZ /d "PSH Based" /f
:: NDIS tweaks
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
MaxNumRssCpus /t REG_DWORD /d %CoresQty% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
MaxNumRssThreads /t REG_DWORD /d %LogicalProcessorsQty% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
RssBaseCpu /t REG_DWORD /d %RSSBaseNumber% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
ProcessorAffinityMask /t REG_DWORD /d 55 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
smpAffinitized /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
smpProcessorAffinityMask /t REG_DWORD /d 55 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
smpProcessorAffinityMask2 /t REG_DWORD /d 55 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
ThreadPoolUseIdealCpu /t REG_DWORD /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NDIS\Parameters" /v
AllowWakeFromS5 /t REG_DWORD /d 0 /f
:: AFD optimizations
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DynamicSendBufferDisable /t REG_DWORD /d 0 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
IgnorePushBitOnReceives /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
NonBlockingSendSpecialBuffering /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DisableRawSecurity /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DefaultReceiveWindow /t REG_DWORD /d 0x10000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DefaultSendWindow /t REG_DWORD /d 0x10000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
EnableDynamicBacklog /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
MinimumDynamicBacklog /t REG_DWORD /d 20 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
MaximumDynamicBacklog /t REG_DWORD /d 20000 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DynamicBacklogGrowthDelta /t REG_DWORD /d 10 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
PriorityBoost /t REG_DWORD /d 8 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
IRPStackSize /t REG_DWORD /d 50 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
LargeBufferSize /t REG_DWORD /d 32768 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
MediumBufferSize /t REG_DWORD /d 12032 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
SmallBufferSize /t REG_DWORD /d 1024 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
TransmitWorker /t REG_DWORD /d 32 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
MaxFastTransmit /t REG_DWORD /d 64 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
MaxFastCopyTransmit /t REG_DWORD /d 128 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DisableAddressSharing /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
StandardAddressLength /t REG_DWORD /d 1024 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
transmitIoLength /t REG_DWORD /d 4294967295 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
DoNotHoldNicBuffers /t REG_DWORD /d 1 /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
FastSendDatagramThreshold /t REG_DWORD /d %MTU% /f
REG ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters" /v
FastCopyReceiveThreshold /t REG_DWORD /d %MTU% /f
:: Disable WPAD
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet
Settings\Wpad" /v WpadOverride /t REG_DWORD /d 1 /f
:: It seems that deep packet inspection can introduce some latency to even UDP
packets, a way would be to disable the Windows Filtering Platform (WFP), but not
really recommended.
:: netsh advfirewall set allprofiles state off