Windows Vista won't connect to the network - how to fix the problem by making Vista less aggressive on the network

Windows Vista automatically tunes it's network settings to make the most of the available bandwidth. In some scenarios Windows Vista can fail to connect to the network - this is often due to old routers which don't always quite follow the standards to the letter. There is an excellent white paper titled Windows Vista TCP/IP Networking and IPv6 Migration that explains in quite some detail how Windows Vista tunes it's performance - it's well worth a read. The white paper explains the rationale behind the default settings and the implication of making changes.

If you find yourself in a situation whereby you are unable to access a network then it's worth trying the following from a command line that's running with elevated privilege.

Note: An easy way to run an elevated command line is to create a shortcut to "cmd.exe", right click on the shortcut (whilst logged in as an administrator) and select "Run as administrator".

To view the current TCP optimisation settings issue the following command:

C:\Windows\system32>netsh interface tcp show global

You should receive output similar to the following:

Querying active state...

TCP Global Parameters

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

Receive-Side Scaling State : enabled

Chimney Offload State : enabled

Receive Window Auto-Tuning Level : normal

Add-On Congestion Control Provider : none

ECN Capability : disabled

RFC 1323 Timestamps : disabled

 

To disable the settings issue the following command:

C:\Windows\system32>netsh interface tcp set global rss=disabled autotuninglevel=disabled

 

Assuming you've typed everything correctly then you'll receive the following output:

Ok.

Now try to connect to the network once again - you may need to "repair" your connection or simply unplug the network cable and re-insert it if it's wired - for wireless just disconnect and reconnect to the network

To set your network stack back to normal once you've finished issue the following command:

C:\Windows\system32>netsh interface tcp set global rss=enabled autotuninglevel=normal

Note that the "autotuninglevel" is set to "normal" not "enabled" as you might expect!