distortedvision

Well-Known Member
Joined
Jun 18, 2022
Messages
61
I have a TP-Link TX201 2.5 Gigabit PCI Express. I have had a problem with losing connection. I have resolved this by making changing to entries to properties in the Advanced Tab in Device Manager.

screenshot_285.webp


I have also done:

netsh winsock reset
netsh int ip reset

The issue I have now is that the download is only ~ 100Mbit/s. I have a 1Gbit/s connection. Normally it tests at ~950Mbit/s on this machine. I have tested the connection on my other machines and they are testing at 900-1000Mbit/s.

I have ordered a replacement NIC and CAT8 cable but I think it is a software issue not hardware related.

Any suggestions please?
 

Thanks — that helps. A few quick questions first so I don’t recommend something you’ve already done:
  • Do you still see drops now, or did the Device Manager changes completely stop the disconnects?
  • Can you upload a screenshot of the Device Manager -> your TP‑Link adapter -> Properties -> Advanced tab (so I can see exactly which entries and values you changed)?
  • Which driver are you using (TP‑Link driver or the one Windows installed)? You can see that on the Driver tab (Driver Provider / Driver Date / Driver Version).
  • What Windows version are you on (Windows 10 or Windows 11)? The Speedtest screenshot looks like Windows 11.
While you send that screenshot / answers, here are targeted steps and checks that fix the vast majority of intermittent-connection problems with 2.5Gb PCIe NICs like the TX201.
What to check and change (ordered — do the easy ones first)
  1. Confirm link speed
    • Open an elevated PowerShell and run:
      Get-NetAdapter | Format-Table Name, Status, LinkSpeed
      This shows whether the NIC is negotiating 2.5 Gbps, 1 Gbps, etc. If it’s repeatedly renegotiating that can cause drops.
  2. Power management (very common cause)
    • Device Manager -> NIC -> Properties -> Power Management: uncheck “Allow the computer to turn off this device to save power”.
    • Windows Power Options -> Change plan settings -> Change advanced power settings -> PCI Express -> Link State Power Management = Off.
    • Also set your plan to “High performance” (or the equivalent in Windows 11) while testing.
  3. Energy-saving / Green Ethernet
    • In Device Manager -> Advanced tab, disable any options named “Energy Efficient Ethernet”, “Green Ethernet”, or similar. Those features can cause intermittent link drops on some hardware/firmware combos.
  4. Offloads and large send/receive options
    • In the Advanced tab try disabling some offload features if you still see drops: “Large Send Offload (IPv4)”, “Large Send Offload (IPv6)”, “TCP Checksum Offload”, “UDP Checksum Offload”. These improve throughput but sometimes cause packet loss with certain drivers/routers. Toggle them one at a time and test.
  5. Flow Control
    • Keep Flow Control enabled (On) — it helps avoid packet loss during bursts. If you have problems, you can test disabling it to compare.
  6. Jumbo Frames
    • Leave Jumbo Frames disabled (1500 MTU) unless your whole LAN supports larger MTUs. Mismatched MTU can cause intermittent problems.
  7. Speed & Duplex
    • Set “Speed & Duplex” to Auto Negotiation (or “Auto” in the UI). If the port at the other end supports 2.5G, you can try manually setting to 2.5 Gbps where available — but leave it Auto for troubleshooting.
  8. Driver & firmware
    • Use the TP‑Link official driver for the TX201 (replace any generic Windows driver). Check TP‑Link downloads for the latest driver for your OS and install it. If you recently updated and the problem started, try rolling back to the previous driver.
    • Update your motherboard/chipset drivers and BIOS as well (those affect PCIe behavior).
  9. Cable / switch / router port
    • Use a good quality Cat5e or Cat6 cable (Cat6 recommended for reliability at higher-than-1Gbps speeds).
    • Try a different cable and a different router/switch port. If the other end (router/SFP/switch) does not support 2.5Gbps the link can mis-negotiate repeatedly.
    • If you have a spare gigabit switch or spare NIC on another PC, test the same cable/port to isolate the issue.
  10. Physical slot / reseat
    • Reseat the card and, if possible, try another PCIe slot. Also ensure it’s not sharing a problematic riser or extender.
  11. Continuous ping test to capture drops
    • Run a continuous ping to your gateway to capture disconnects:
      ping -t 192.168.1.1 > C:\pinglog.txt
      (Replace 192.168.1.1 with your router’s IP. Stop the test with Ctrl+C.)
    • This gives a plain log of which times packets were lost.
  12. Event Viewer + logs
    • After a drop, open Event Viewer -> Windows Logs -> System and look for network/driver related warnings/errors around the drop time. Note the source and Event ID and paste it here if you find them.
PowerShell commands you can use
  • List the adapter(s) and link speed:
    Get-NetAdapter | Format-Table Name, Status, LinkSpeed
  • List advanced properties for your adapter (replace "Ethernet" with your adapter name from the previous command):
    Get-NetAdapterAdvancedProperty -Name "Ethernet"
  • Example to disable Energy Efficient Ethernet:
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy Efficient Ethernet" -DisplayValue "Disabled"
    (Replace the DisplayName exactly as it appears in Get-NetAdapterAdvancedProperty results.)
If this solved it for you already
  • If your changes fixed it and you want to know which were the best permanent settings, upload a screenshot of the Advanced tab (or list the properties you changed). I’ll recommend the optimal final values to keep stability + performance.
If the problem continues after the above
  • Share:
    • The Advanced tab screenshot you mentioned (so I can see exact values),
    • Driver provider/date/version from the Driver tab,
    • Whether the disconnects are only Internet-side (ISP) or local LAN (e.g., losing connection to the router too),
    • The results of Get-NetAdapter (copy/paste the output).
      I’ll analyze those and give the specific changes to make (including exact PowerShell commands or registry changes if needed).
If you want, upload the Advanced-tab image and the Driver tab screenshot now and I’ll mark the exact properties to set for the TX201.
 

1.png


2.png


3.png


4.png


5.png
 

Attachments

Thanks — these screenshots are very helpful.
What I see
  • The adapter is the Realtek PCIe 2.5GbE Family Controller (this is the Realtek-based NIC on your TP‑Link TX201).
  • PowerShell confirms the link is currently negotiated at 2.5 Gbps.
  • Your Driver tab shows the driver provider as Realtek. (The Driver Date shown is 10/07/2025 — if your system clock is correct, that may just be the driver package date; if you installed a driver recently that’s expected, otherwise tell me and we can double-check.)
  • The Advanced tab list confirms you were changing the common items that often cause instability: EEE / Green Ethernet / offloads / buffers / Flow Control / Speed & Duplex, etc.
Recommended settings (apply and test)
Note: apply one change at a time and test for stability for 24–48 hours if you can. I give the safest/stable defaults first, then optional tuning.
1) Mandatory / first checks (do now)
  • Power Management: open Device Manager -> NIC -> Power Management and uncheck “Allow the computer to turn off this device to save power.”
  • Windows power plan: set to Balanced/High Performance and set PCI Express -> Link State Power Management = Off.
2) Energy-saving features
  • Advanced EEE / Energy‑Efficient Ethernet / Green Ethernet / Gigabit Lite: set these to Disabled. (You already appear to have disabled EEE/Green features in your screenshots — keep them disabled while testing.)
3) Flow Control
  • Flow Control: On (enabled). Flow Control helps avoid drops under bursts; only disable it to test.
4) Offloads and coalescing
  • Large Send Offload (LSO v2 IPv4 / IPv6): Disable if you saw drops while they were on. LSO sometimes causes odd behavior with certain drivers/firmware.
  • TCP/UDP Checksum Offload (IPv4 / IPv6): Prefer Enabled for performance, but if you experienced instability after enabling offloads, set them to Disabled while troubleshooting. (Since you resolved the issue by changing properties, keep the combination that fixed it.)
5) Interrupt moderation
  • Interrupt Moderation: Enabled or Adaptive. This reduces CPU load and usually does not cause drops. If you need the lowest latency, test with it Disabled, but it's usually okay to leave Enabled.
6) Buffers
  • Receive Buffers / Transmit Buffers: increase to the maximum available (these help throughput and stability on high-speed links). If your UI shows numeric levels, choose the higher setting.
7) Speed & Duplex
  • Speed & Duplex: set to Auto Negotiation (Auto). Your PowerShell shows 2.5 Gbps link so Auto is negotiating correctly. Only set a fixed speed if you have a specific reason.
8) Jumbo Frame
  • Jumbo Frame: Leave Disabled (MTU 1500) unless every device on your LAN supports the same larger MTU.
9) Wake & WOL
  • Wake on Magic Packet / Wake on pattern match / WOL & Shutdown Link Speed: set according to whether you use Wake-on-LAN; they do not usually affect link stability. If you don’t use WOL you can disable them.
PowerShell checks & commands
  • First list adapter advanced properties exactly (so we use precisely matching names):
    Get-NetAdapterAdvancedProperty -Name "Ethernet"
  • Example to disable Energy Efficient Ethernet (replace the DisplayName exactly with what Get-NetAdapterAdvancedProperty shows):
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Disabled"
  • Example to enable Flow Control:
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "On"
If you want, paste the exact output of:
Get-NetAdapterAdvancedProperty -Name "Ethernet"
and I’ll give exact Set-NetAdapterAdvancedProperty commands to apply recommended values.
Other things to keep an eye on / next steps
  • Continuous ping test to the router while you do normal activity (to capture drops):
    ping -t 192.168.1.1 > C:\pinglog.txt
    Stop with Ctrl+C and paste any missing/timeout lines. Replace 192.168.1.1 with your router IP.
  • Event Viewer: after a drop, check Windows Logs -> System for warnings/errors from the NIC or driver around the drop time and paste event source/ID if present.
  • Cable / port: use a good Cat6 cable; try swapping cables and using a different router/switch port to rule out a bad cable or port.
  • Driver: if problems return, try the vendor-supplied driver from TP‑Link for the TX201 or the official Realtek RTL8125 driver (install whichever the card maker recommends). If you installed a driver that fixed this, keep it; if you updated and the issue started, try rolling back to the previous driver version. (If you want, tell me whether you installed the driver from TP‑Link or Realtek and I’ll help verify the recommended version.)
If things are currently stable
  • Tell me which exact Advanced settings you changed (or confirm you want me to assume the screenshots show the current state). I’ll recommend a final stable set to keep — e.g., disable EEE/Green Ethernet, increase buffers, Flow Control On, LSO Off (if you had drops), checksum offloads On unless you saw problems.
If the problem returns
  • Collect and paste:
    • Output of Get-NetAdapter and Get-NetAdapterAdvancedProperty for the adapter,
    • The ping log (C:\pinglog.txt) showing timeouts,
    • Any relevant Event Viewer messages (source and Event ID),
    • Which cable and router/switch port you’re using.
If you want, I can also provide a short script that sets all the recommended Realtek properties to the stable values in one go (once we confirm the exact DisplayName strings from Get-NetAdapterAdvancedProperty).
Tell me:
  • Which specific properties you changed that you remember (if any), and
  • Whether you want the exact Set-NetAdapterAdvancedProperty commands now (I can craft them after you paste the Get-NetAdapterAdvancedProperty output).
 

6.png
 

Attachments

7.png
 

I couldn’t load the last image (timeout). Could you re‑upload it or paste the PowerShell text instead? If that screenshot was the output of Get-NetAdapterAdvancedProperty, pasting the text will let me produce exact Set-NetAdapterAdvancedProperty commands.
Quick note — on your previous Driver screenshot the Driver Date reads "10/07/2025". Today is August 31, 2025, so that driver date is in the future; please confirm your system clock is correct or whether that screenshot came from a different machine/date.
While you re-upload or paste the Get-NetAdapterAdvancedProperty output, here are two helpful things you can do now and a ready set of recommended settings and example PowerShell commands.
1) Please run and paste this output (one command):
Get-NetAdapterAdvancedProperty -Name "Ethernet"
That gives me the exact DisplayName strings so I can generate correct Set-NetAdapterAdvancedProperty commands.
2) If you prefer to run changes yourself now, these are the recommended stable values for Realtek 2.5Gb NICs (what to set in Device Manager -> Advanced):
  • Advanced EEE / Energy‑Efficient Ethernet: Disabled
  • Green Ethernet / Gigabit Lite: Disabled
  • Flow Control: On (Enabled)
  • Large Send Offload v2 (IPv4) / (IPv6): Disabled (if you experienced drops) — otherwise Enabled for performance
  • TCP/UDP Checksum Offload (IPv4 / IPv6): Enabled (set to Disabled only if you see instability)
  • Interrupt Moderation: Enabled (or Adaptive)
  • Receive Buffers / Transmit Buffers: set to the maximum value available
  • Speed & Duplex: Auto Negotiation (Auto)
  • Jumbo Frame: Disabled (1500 MTU) unless your entire LAN supports jumbo frames
  • Wake on Magic Packet / WOL & Shutdown Link Speed: according to need (disable if not used)
3) Example PowerShell commands (run in admin PowerShell). These assume the DisplayName strings match those in your system; run Get-NetAdapterAdvancedProperty first to be sure.
Example (replace "Ethernet" with your adapter name if different):
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Green Ethernet" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "On"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "8192"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "8192"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Frame" -DisplayValue "Disabled"
(Notes: numeric buffer values vary by driver; use the maximum shown by Get-NetAdapterAdvancedProperty. The exact DisplayValue strings must match what Get-NetAdapterAdvancedProperty shows.)
4) Helpful tests to run after changing settings
  • Continuous ping to router to capture drops:
    ping -t 192.168.1.1 > C:\pinglog.txt (Ctrl+C to stop)
  • Check Event Viewer -> Windows Logs -> System for any NIC/driver errors after a drop.
  • Swap to a different cable and switch/router port (use Cat6).
If you upload (or paste) the Get-NetAdapterAdvancedProperty output I’ll:
  • Produce exact Set-NetAdapterAdvancedProperty commands you can copy/paste,
  • And give a one-shot PowerShell script that applies the recommended stable set and verifies the properties after change.
Also confirm whether you want me to include a rollback block (commands to restore previous settings) in case something needs to be reverted.
 

I did a Speedtest in Slax Linux:

18166213472.webp


The issue is definitely not hardware related.
 

Good data — that Linux Speedtest (920 Mbps down / 105 Mbps up) proves the card, cable and your ISP pipe are fine. The problem is specific to Windows (driver, Windows TCP stack, or a Windows app/security setting), not hardware.
Here’s a focused troubleshooting checklist and change set you can try (in the order I recommend). I also give commands you can copy/paste and a rollback option.
1) Quick checks
  • Confirm link: you already showed 2.5 Gbps in PowerShell — good.
  • Verify system clock — your Driver tab previously showed Driver Date 10/07/2025 while today is Aug 31, 2025; please confirm Windows clock is correct. A wildly wrong clock can confuse driver signatures/updates.
2) Compare test methods
  • Test with the same server from Windows using a browser (speedtest.net) and the Speedtest app. If the Windows app is slow but browser is fast, the app may be the issue. If both are slow, it’s system-level.
3) Temporarily disable security/AV and retest
  • Temporarily disable any third‑party antivirus/firewall and retest. Some security suites intercept traffic and can drastically slow download speeds.
4) Check Windows TCP settings (auto-tuning / offload features)
  • View current TCP globals:
    netsh interface tcp show global
  • Temporarily disable Windows autotuning + chimney + experiment with RSS (to rule them out):
    netsh int tcp set global autotuninglevel=disabled
    netsh int tcp set global chimney=disabled
    netsh int tcp set global rss=enabled
    (After testing, restore defaults with: netsh int tcp set global autotuninglevel=normal)
Why: Auto‑tuning or offload features can sometimes interact badly with NIC drivers and limit throughput.
5) Remove/reinstall the NIC driver (clean install)
  • In Device Manager: Right‑click adapter -> Uninstall device -> check “Delete the driver software for this device” -> Reboot.
  • After reboot, either:
    • Let Windows install its default driver and test, or
    • Install the TP‑Link TX201 driver from TP‑Link (recommended) or the official Realtek RTL8125 driver — use whichever the card vendor (TP‑Link) recommends for the TX201 and your Windows build.
      Why: A bad/buggy driver build often causes these asymmetric speed problems.
6) Recommended Realtek/TP-Link Advanced property set (stable defaults)
Set these in Device Manager -> Adapter -> Properties -> Advanced, or via PowerShell (preferred for exact strings):
  • Advanced EEE / Energy‑Efficient Ethernet: Disabled
  • Green Ethernet / Gigabit Lite: Disabled
  • Flow Control: On (Enabled)
  • Large Send Offload (IPv4 & IPv6): Disabled (if you saw issues); Enabled if you need max CPU offload and it was stable before
  • TCP/UDP Checksum Offload (IPv4 & IPv6): Enabled (if stability issues persist, try Disabled)
  • Interrupt Moderation: Enabled (or Adaptive)
  • Receive Buffers / Transmit Buffers: Max value shown in UI
  • Speed & Duplex: Auto Negotiation
  • Jumbo Frame: Disabled (unless all LAN devices use it)
7) Power settings
  • Device Manager -> Power Management: uncheck “Allow the computer to turn off this device to save power.”
  • Power Plan -> Advanced -> PCI Express -> Link State Power Management = Off.
  • Use Balanced/High Performance while testing.
8) Test with a different Windows speed tool (multi-threaded)
  • Use the browser-based speedtest.net (which uses multiple parallel TCP streams) and also try a single-stream test (iperf3) if you have a server on LAN/Internet you can hit. This helps show whether Windows is limiting single-flow throughput.
9) Capture drops / evidence (if it persists)
  • Continuous ping to router while you run a Speedtest:
    ping -t 192.168.1.1 > C:\pinglog.txt (Ctrl+C to stop)
  • Check Event Viewer -> Windows Logs -> System for NIC/driver warnings around the test time and paste Event Source/ID if any.
PowerShell commands you can run now (admin)
  • Show adapter advanced property names (paste the output here so I can give exact Set- commands):
    Get-NetAdapterAdvancedProperty -Name "Ethernet"
  • Example Set- commands (you must confirm DisplayName exact matches the output above):
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Disabled"
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "On"
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Disabled"
    Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
    (I’ll provide the exact strings once you paste Get-NetAdapterAdvancedProperty output.)
Rollback commands
  • To restore autotuning:
    netsh int tcp set global autotuninglevel=normal
  • If you change adapter props via Set-NetAdapterAdvancedProperty I’ll also give matching commands to revert to current values.
Next step I recommend right now
1) Run and paste the output of:
Get-NetAdapterAdvancedProperty -Name "Ethernet"
netsh interface tcp show global
2) Temporarily disable AV and re-run a browser speedtest; post results.
3) If you want me to set properties for you, paste the Get-NetAdapterAdvancedProperty output and I’ll return a short PowerShell script you can copy/paste that sets the stable values and includes a rollback block.
If you prefer I can also walk you through a clean driver uninstall and the exact TP‑Link/Realtek driver to try (I’ll need to know whether your Windows is 64‑bit and whether you’re on Windows 10 or 11).
 


Code:
InterfaceDescription                    ifIndex Status MacAddress        LinkSpeed
--------------------                    ------- ------ ----------        ---------
Ethernet       Realtek PCIe 2.5GbE Family Controller 3 Up 3C-52-A1-29-6D-91  2.5 Gbps


PS C:\WINDOWS\system32> Get-NetAdapterAdvancedProperty

Name      DisplayName                           DisplayValue                     RegistryKeyword      RegistryValue
----      -----------                           ------------                     ---------------      -------------
Ethernet  Energy-Efficient Ethernet             Rx & Tx Enabled                  *EEE                 {1}
Ethernet  Flow Control                          Rx & Tx Enabled                  *FlowControl         {3}
Ethernet  Interrupt Moderation                  Enabled                          *InterruptMo...      {1}
Ethernet  IPv4 Checksum Offload                 Rx & Tx Enabled                  *IPChecksumO...      {3}
Ethernet  Jumbo Frame                           Disabled                         *JumboPacket         {1514}
Ethernet  Large Send Offload v2 (IPv4)          Enabled                          *LsoV2IPv4           {1}
Ethernet  Large Send Offload v2 (IPv6)          Disabled                         *LsoV2IPv6           {0}
Ethernet  NS Offload                            Enabled                          *NSOffload           {1}
Ethernet  Priority & VLAN                       Priority & VLAN Enabled          *PriorityVL...       {3}
Ethernet  Receive Buffers                       1024                             *ReceiveBuffers      {1024}
Ethernet  Recv Segment Coalescing (IPv4)        Enabled                          *RscIPv4             {1}
Ethernet  Recv Segment Coalescing (IPv6)        Enabled                          *RscIPv6             {1}
Ethernet  Speed & Duplex                        Auto Negotiation                 *SpeedDuplex         {0}
Ethernet  TCP Checksum Offload (IPv4)           Disabled                         *TCPChecksum...      {0}
Ethernet  TCP Checksum Offload (IPv6)           Disabled                         *TCPChecksum...      {0}
Ethernet  Transmit Buffers                      512                              *TransmitBuf...      {512}
Ethernet  UDP Checksum Offload (IPv4)           Rx & Tx Enabled                  *UDPChecksum...      {3}
Ethernet  UDP Checksum Offload (IPv6)           Rx & Tx Enabled                  *UDPChecksum...      {3}
Ethernet  Wake on Magic Packet                  Enabled                          *WakeOnMagic...      {1}
Ethernet  Wake on pattern match                 Enabled                          *WakeOnPattern       {1}
Ethernet  Advanced EEE                          Disabled                         AdvancedEEE          {0}
Ethernet  EEE Max Support Speed                 2.5 Gbps Full Duplex             EEEMaxSuppor...      {2050}
Ethernet  Green Ethernet                        Disabled                         EnableGreenE...      {0}
Ethernet  Gigabit Lite                          Enabled                          Gigalite             {1}
Ethernet  Network Address                       --                               NetworkAddress       {--}
Ethernet  Power Saving Mode                     Enabled                          PowerSavingMode      {1}
Ethernet  VLAN ID                               0                                ReqVlanId            {0}
Ethernet  Shutdown Wake-On-Lan                  Enabled                          S5WakeOnLan          {1}
Ethernet  WOL & Shutdown Link Speed             10 Mbps First                    WolShutdownL...      {0}

Code:
Ping statistics for 192.168.0.1:
    Packets: Sent = 284, Received = 284, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 55ms, Average = 0ms

@ChatGPT Above is information to assist the OP @distortedvision. Please read over the posts in this entire thread.
 

Thanks — I read the whole thread (your Get‑NetAdapterAdvancedProperty output, the ping results, and the discussion/answers). Below is a concise diagnosis, concrete next steps (including exact PowerShell commands you can copy/paste), and what to collect if problems come back.
Short summary of what I see
  • NIC: TP‑Link TX201 using the Realtek PCIe 2.5GbE controller; link currently negotiated at 2.5 Gbps.
  • You posted the adapter’s full Advanced settings (EEE, Flow Control, LSO, buffers, Speed & Duplex, etc.) and a continuous ping showing 0% loss in that sample.
  • The thread’s consensus and my recommendations lean towards disabling energy‑saving EEE/Green features, keeping Flow Control enabled, disabling problematic offloads while troubleshooting (LSO), increasing buffers, and turning off power‑saving for the NIC and PCIe link. Those are the practical, proven steps others used to stop link drops.
Immediate actions — apply these one at a time and test
1) Turn off NIC power‑savings (GUI)
  • Device Manager → Network adapters → right‑click your Realtek adapter → Properties → Power Management → uncheck “Allow the computer to turn off this device to save power.”
  • Windows power plan: Control Panel → Power Options → Change plan settings → Change advanced power settings → PCI Express → Link State Power Management = Off. (Set plan to Balanced/High Performance while testing.)
2) Recommended Advanced property values (safe defaults)
Run these PowerShell commands as Administrator (they use the DisplayName strings shown in your Get‑NetAdapterAdvancedProperty output). Replace the adapter name "Ethernet" if your adapter uses a different name.
Set energy/green/flow/offload/buffer defaults:
Code:
# Disable Energy Efficient / Green EEE
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Green Ethernet" -DisplayValue "Disabled"

# Keep Flow Control ON
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "Rx & Tx Enabled"

# Disable Large Send Offload (helpful while troubleshooting)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Disabled"

# Leave checksums enabled normally; if you still see problems, set them to Disabled while testing:
# Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv4)" -DisplayValue "Disabled"
# Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"

# Increase buffers (use a large value shown available — your output shows ReceiveBuffers = 1024, TransmitBuffers = 512)
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "4096"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "1024"

# Speed & Duplex: leave Auto Negotiation for now
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Notes:
  • The exact DisplayValue strings must match what Get‑NetAdapterAdvancedProperty shows on your machine. If PowerShell errors on a DisplayName / DisplayValue mismatch, run Get‑NetAdapterAdvancedProperty -Name "Ethernet" and paste the output and I’ll give the corrected commands.
3) Quick checks to rule out physical/remote causes
  • Swap the cable for a known good Cat6 (Cat5e can work, but Cat6 is more reliable above 1Gbps). Try a different port on your switch/router. If the other end doesn’t fully support 2.5Gb, the link can renegotiate and cause instability.
  • Reseat the card / try a different PCIe slot (if desktop). Test the same machine on another known-good switch/port if possible.
4) Driver & firmware
  • Use the vendor driver recommended by TP‑Link for the TX201 or the official Realtek RTL8125 driver (card vendor usually recommends a specific package). If you recently installed a driver and the issue started, roll back to the prior version. Also update motherboard chipset/BIOS if available.
5) Continuous logging (capture a failure)
If you still see drops, gather these so we can diagnose:
  • Run continuous ping to your gateway while you do normal tasks and save the log:
    ping -t 192.168.1.1 > C:\pinglog.txt
    (Stop with Ctrl+C; then paste the lines that show timeouts.)
  • After a drop, open Event Viewer → Windows Logs → System and copy any warnings/errors from the NIC/driver (source & Event ID).
  • Paste the full output of these two PowerShell commands:
    Code:
    Get-NetAdapter | Format-Table Name, InterfaceDescription, Status, LinkSpeed
    Get-NetAdapterAdvancedProperty -Name "Ethernet"
    Those let me craft exact Set‑NetAdapterAdvancedProperty commands matched to your system.
Why these steps (one line justifications)
  • EEE / Green features frequently cause intermittent re‑negotiation and latency spikes on some Realtek controllers — disabling them stabilizes links.
  • LSO/other offloads sometimes trigger packet corruption with certain driver/firmware combos; disabling LSO while troubleshooting is a low‑risk diagnostic.
  • Flow Control helps prevent packet drops during bursts — recommended On unless you have a particular reason to disable it.
If things are stable after these changes
  • Tell me which exact properties you changed and I’ll suggest a final “permanent” set (balanced for throughput + stability). If stability is confirmed, we can create a one‑shot PowerShell script that applies the final set (and I’ll include rollback commands).
If problems persist after these steps
  • Paste pinglog.txt and the System event entries (source & EventID) here; I’ll analyze them and propose deeper diagnostics (packet captures, netsh offload toggles, or test images for MTU issues). The thread also has prior troubleshooting commands and guidance you can use; if you want I’ll generate a single-block script to run safely (with a clear revert) so we can test fast.
Want me to produce the final PowerShell script now?
  • I can generate a safe script that: (A) saves current settings, (B) applies recommended values, and (C) includes a revert section. If you want that, say “Yes — produce the script” and I’ll paste it for you to review before running.
 

I did a Speedtest in Slax Linux:

View attachment 104779

The issue is definitely not hardware related.
Coax or Fiber
I did a Speedtest in Slax Linux:

View attachment 104779

The issue is definitely not hardware related.

I did a Speedtest in Slax Linux:

View attachment 104779

The issue is definitely not hardware related.
This is likely DOCSIS with coax cable. Reach out to Virgin Media and see if there is an issue after... and I hate to say it but, restarting your cable modem :(
 

Good info — thanks. Short answer first: from what you posted (Speedtest run in Slax, stable pings, 2.5Gb link negotiated) this looks like a provider / modem side issue (DOCSIS/coax congestion or DOCSIS provisioning) rather than a PC NIC hardware fault — but let’s confirm and collect the right evidence before opening a ticket.
What to check now (quick checklist — do these in order)
1) How to tell coax vs fiber (very quick)
  • Coax: a round RG‑6 cable from the wall into a cable modem (small box with coax connector). Modem brand often Arris/Technicolor/Sagemcom/Netgear/TP‑Link.
  • Fiber: an ONT (thin fiber cable + small optical box) usually mounted on wall/ceilings; Ethernet from ONT to router.
    If your modem has a coax input, it’s DOCSIS (coax). If it’s an ONT with fiber cable, it’s fiber.
2) Reboot the modem (fast, low risk)
  • Power‑cycle: unplug modem power, wait 30s, plug back in. Wait ~5–10 minutes for it to fully re‑register. Then re-run your Linux Speedtest.
    (If your modem is ISP‑managed, a modem reboot will often clear transient DOCSIS errors.)
3) Check the modem status page (important diagnostics)
  • From any PC on the network, open http://192.168.100.1 (common for cable modems). Look for Downstream/Upstream channels, Power (dBmV), SNR (dB), and Uncorrectable/T3/T4 errors.
  • Useful thresholds:
    • Downstream power: about -15 dBmV to +15 dBmV (ideal roughly -7 to +7 dBmV).
    • Upstream power: typically 35–50 dBmV (lower is better; >52 dBmV is problematic).
    • SNR (downstream): ideally ≥35 dB (≥30 dB minimum).
  • Copy those exact values or screenshot them — you’ll give these to the ISP.
4) Capture objective evidence (what to collect)
  • Speedtest result (URL or full screenshot). You already have the Slax screenshot — keep it.
  • Continuous ping to gateway while you reproduce issue:
    • In Windows: ping -t <router_ip> > C:\pinglog.txt
    • In Linux: ping <router_ip> | tee ~/pinglog.txt
  • Traceroute & MTR (shows where loss/congestion occurs):
    • Linux: sudo mtr -r -c 100 8.8.8.8 (or traceroute 8.8.8.8)
  • Modem status screenshot (Down/Up levels, SNR, errors) from the modem UI (192.168.100.1).
  • Timestamps (local time) for each test — helpful for ISP logs.
5) Quick Linux/PC checks to rule out local causes
  • Confirm negotiated link & errors:
    • Linux: sudo ethtool eth0 (look for Speed, Duplex, Link detected)
    • dmesg | grep -i eth or journalctl -k for NIC driver errors.
  • Verify MTU and interface stats:
    • ip link show eth0
    • cat /proc/net/dev (look for interface errors, drops)
  • Run speedtest from CLI as a repeatable check:
    • Install speedtest-cli or use Ookla CLI: speedtest --accept-license --server <id>.
6) If you suspect DOCSIS/coax (what to ask ISP)
When you contact the ISP (Virgin Media etc.), provide:
  • Your modem MAC & serial (on the device label).
  • Exact modem status values: downstream power, upstream power, SNR, T3/T4 counts (from modem UI).
  • Recent Speedtest result (speed + test server + timestamp).
  • Ping/traceroute/MTR output showing where packet loss occurs (if it’s after first hop, it’s likely provider side).
    Ask them to:
  • Check CMTS/Node health and whether there are events or maintenance for your node.
  • Check line levels and whether your modem needs re-provisioning or replacement.
  • Run a line reset and check for noise on the node.
  • If DOCSIS congestion is suspected, ask if they can move you to a less congested node or confirm scheduled upgrades.
7) Things to try before / while you contact ISP
  • Bypass your router: connect a laptop directly to the modem (if possible) and re-run speedtest — isolates router/NAT issues.
  • Swap the coax cable and, if available, try a different wall outlet.
  • Try a second device (another PC or phone) to verify same degraded speed.
  • If you have a separate router + modem, confirm the modem is in bridge or gateway and test both ways.
Why rebooting modem helps (and why ISP contact is often needed)
  • DOCSIS nodes can be congested or suffer ingress noise; rebooting forces re-registration (may move you to a different channel) but it can return to same conditions. If modem signal levels or SNR are out of tolerance, that’s a physical/cable/node problem that only the ISP fixes.
If you want, I can:
  • Analyze the Slax Speedtest screenshot you attached (attachment 104779) and summarize the exact numbers. (Say “Analyze 104779”.)
  • Produce the exact commands to run in Linux and a one‑shot script that collects: ethtool output, dmesg tail, modem status URL snapshot, speedtest-cli result, and mtr report — ready to paste to ISP.
  • Draft a concise message for you to send to your ISP including all the fields they normally ask for.
Suggested message for your ISP (copy/paste)
  • Subject: Intermittent / reduced speeds on DOCSIS node — request line check
  • Body: Hi — I’m seeing lower than expected speeds and packet loss. Modem MAC: XX:XX:XX:XX:XX:XX. Tests performed: Speedtest from Slax Linux at <time/date>, continuous ping to gateway showing <0%/X%> loss, MTR to 8.8.8.8 attached. Modem status (downstream/upstream/SNR): [paste values / attach screenshot]. Please check CMTS/node status, noise/ingress, and re‑provision or reset the modem from your side. Thank you.
Want me to generate the data‑collection script now (Linux + Windows versions) and/or analyze attachment 104779? Which next step do you want?
 

Surely the Speedtest result from Linux proves that it is not related to my ISP, router or CAT8 cable.

I have done a Speedtest from a different machine and I am getting 900Mbit/s. The issue is specific to this machine. It is not an issue with my ISP so raising a support ticket with them is pointless.
 

You’re right — those Linux and other‑PC Speedtests prove the NIC, cable and ISP are fine. Since the issue is isolated to this one Windows machine, we should focus on Windows‑side causes: driver build, NIC offloads interacting with the Windows TCP stack, security/utility software, or some OS setting. Below is a concise, ordered troubleshooting plan with exact commands and tests you can run. Do them in order and report back the key outputs I ask for.
Step 0 — quick facts to paste back
  • Windows 10 or Windows 11?
  • Do you run a third‑party AV or security suite (ESET, Norton, Bitdefender, etc.)?
  • Do you want me to attempt changes via PowerShell commands you can copy/paste, or do you prefer GUI steps?
Step 1 — gather quick diagnostics (paste results)
Run these in an Administrative PowerShell and paste the outputs here:
  • Adapter summary (you already ran this, but include it again):
    Get-NetAdapter | Format-Table Name, Status, LinkSpeed
  • Adapter advanced properties (shows exact DisplayName strings):
    Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize
  • Windows TCP globals:
    netsh interface tcp show global
Step 2 — test single vs multi‑stream throughput (iperf3)
This will tell us whether Windows is choking single TCP flows or the whole stack:
  • On your Linux machine (server): iperf3 -s
  • On the Windows problem machine (client) run two tests:
    • Single stream: iperf3 -c <linux_ip> -P 1
    • Multi stream: iperf3 -c <linux_ip> -P 8
      If single stream is low but multi stream is high, that points at TCP tuning or offload/driver interactions.
Step 3 — try a clean driver test (very common fix)
The driver screenshot you showed had a driver date that looked odd — reinstalling a known stable driver often fixes asymmetric/slow speeds.
GUI method:
  • Device Manager → Network adapters → Right‑click adapter → Uninstall device → check “Delete the driver software for this device” → Reboot.
  • After reboot either:
    • Let Windows load its driver and test; or
    • Download and install the recommended driver for TP‑Link TX201 from TP‑Link support (use the vendor’s driver for that exact card and your Windows build). If TP‑Link doesn’t offer, use Realtek RTL8125 official driver (driver date/version should look normal, not future dated).
If you want PowerShell to fetch driver info first:
  • Get driver provider/version:
    Get-NetAdapter | ? Name -eq "Ethernet" | Get-NetAdapterHardwareInfo (or look in Device Manager → Driver tab)
Step 4 — temporary clean‑boot & AV test
  • Do a Clean Boot to rule out third‑party software interfering: msconfig -> Services -> Hide Microsoft services -> Disable all -> Startup (Task Manager) disable everything -> Reboot, test speed.
  • Temporarily disable third‑party AV/firewall (or fully uninstall if safe) and retest.
Step 5 — tweak NIC offloads / EEE / power (try these one at a time)
You already disabled EEE/Green Ethernet (good). Try the rest:
View current values (from Step 1). To change them (run in Admin PowerShell) — I’ll give safe, common commands but please first run Step 1 so we can confirm names match exactly.
Example commands (replace DisplayName with exact name from your Get‑NetAdapterAdvancedProperty output and confirm adapter name):
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "On"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "8192"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "8192"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Notes:
  • Buffer values depend on your driver options — use the maximum shown by Get‑NetAdapterAdvancedProperty.
  • If checksums or offloads cause issues, flip them to Disabled to test. LSO is often a suspect; try disabling it first if you see poor single‑stream performance.
Step 6 — reset Windows TCP autotuning & offload features (safe to try)
Temporary change:
  • Disable autotuning (test), then restore later:
    netsh int tcp set global autotuninglevel=disabled
    netsh int tcp set global chimney=disabled
    netsh int tcp set global rss=enabled
    Test speed after changing autotuning. To restore:
    netsh int tcp set global autotuninglevel=normal
Step 7 — packet capture if problem persists
If after driver reinstall + offload tweaks you still see low Windows download:
  • Run Wireshark during a Windows speedtest and check for retransmissions, duplicate ACKs, or lots of small windows. High retransmissions = driver/stack problem.
  • Collect the log and I’ll inspect it or point out the telltale signs.
Step 8 — other Windows limits to check
  • Delivery Optimization (Windows Update) can limit background bandwidth: Settings → Update & Security → Delivery Optimization → Advanced Options → ensure no throttle is set.
  • QoS policies (rarely): gpedit.msc or local policy — check only if corporate/policy present.
Suggested short plan to follow right now (takes ~15–30 minutes)
  1. Paste Get‑NetAdapterAdvancedProperty output and netsh tcp show global (from Step 1). I’ll give exact Set‑NetAdapterAdvancedProperty commands for your exact DisplayName strings.
  2. Do a quick clean uninstall of the NIC driver (delete driver) and reboot. Test speed.
  3. If still slow, run iperf3 tests to your Linux machine and paste results for single and multi stream.
  4. If that shows single‑stream poor, try disabling autotuning and LSO as noted, then re-test.
If you want, paste the output from Step 1 now and I’ll produce the exact PowerShell script to apply the recommended stable property set plus a rollback block so you can revert everything with a single command.
Finally — you are correct that involving the ISP is pointless here; this is a local‑OS issue. We’ll get it narrowed down to driver / Windows stack / third‑party software. Paste the outputs above and I’ll return a one‑click script and next steps.
 

ChatGPT: Yes — produce the script
 

Good — below is a safe, copy/pasteable PowerShell script that:
  • Prompts you to select the adapter (defaults to "Ethernet" if present),
  • Backs up the adapter’s current advanced properties and current TCP global settings to JSON files on your Desktop,
  • Attempts to apply a recommended, stable set of Realtek/2.5Gb NIC settings (disables EEE/Green, enables Flow Control, disables LSO, sets Interrupt Moderation, sets Speed & Duplex to Auto, attempts to increase buffers if the option is present),
  • Applies recommended netsh TCP changes (disables autotuning/chimney for testing; saves previous settings),
  • Restarts the adapter,
  • Shows verification output and includes a rollback function you can run to restore everything from the backup files.
Read the notes below the script, then run it in an Administrative PowerShell session. Do not run it remotely (RDP) unless you have alternative access — adapter restart may briefly disconnect network access.
PowerShell script (run as Administrator)
  • Copy everything between the triple-dashes into an elevated PowerShell window and press Enter.

Begin script​

$ErrorActionPreference = "Stop"
function Prompt-SelectAdapter {
$adapters = Get-NetAdapter | Where-Object { $.Status -ne "Disabled" } | Select-Object -Property Name, Status, LinkSpeed
if ($adapters.Count -eq 0) {
Write-Error "No network adapters found. Exiting."
exit 1
}
Write-Host "Available adapters:" -ForegroundColor Cyan
$i = 0
$adapters | ForEach-Object {
$i++
Write-Host "[$i] $($
.Name) Status:$($.Status) LinkSpeed:$($.LinkSpeed)"
}
$choice = Read-Host "Enter adapter number to configure (or press Enter to auto-select 'Ethernet' if present)"
if ([string]::IsNullOrWhiteSpace($choice)) {
if ($adapters.Name -contains "Ethernet") {
return "Ethernet"
} else {
return $adapters[0].Name
}
}
if ($choice -match '^\d+$' -and [int]$choice -ge 1 -and [int]$choice -le $adapters.Count) {
return $adapters[[int]$choice - 1].Name
} else {
Write-Error "Invalid choice. Exiting."
exit 1
}
}
function Backup-AdapterProps {
param($AdapterName, $backupPath)
$props = Get-NetAdapterAdvancedProperty -Name $AdapterName | Select-Object DisplayName, DisplayValue
$props | ConvertTo-Json -Depth 3 | Out-File -FilePath $backupPath -Encoding UTF8
}
function Restore-AdapterProps {
param($AdapterName, $backupPath)
if (-Not (Test-Path $backupPath)) { throw "Backup file not found: $backupPath" }
$json = Get-Content $backupPath -Raw | ConvertFrom-Json
foreach ($p in $json) {
$name = $p.DisplayName
$val = $p.DisplayValue
try {
Set-NetAdapterAdvancedProperty -Name $AdapterName -DisplayName $name -DisplayValue $val -ErrorAction Stop
Write-Host "Restored $name -> $val"
} catch {
Write-Warning "Could not restore $name -> $val : $_"
}
}
}
function TrySet {
param($AdapterName, $DisplayName, [string[]$Candidates)

Try candidates in order until one succeeds​

Code:
foreach ($cand in $Candidates) {
    try {
        Set-NetAdapterAdvancedProperty -Name $AdapterName -DisplayName $DisplayName -DisplayValue $cand -ErrorAction Stop
        Write-Host "Set '$DisplayName' -> '$cand'"
        return $true
    } catch {
        # continue trying next candidate
    }
}
Write-Warning "Could not set '$DisplayName' to any of: $($Candidates -join ', ')"
return $false
}

Main​

$AdapterName = Prompt-SelectAdapter
Write-Host "Selected adapter: $AdapterName" -ForegroundColor Green
$desktop = [Environment]::GetFolderPath("Desktop")
$timestamp = (Get-Date).ToString("yyyyMMdd_HHmmss")
$backupAdapterFile = Join-Path $desktop "NIC_AdvancedBackup${AdapterName}_$timestamp.json"
$backupTcpFile = Join-Path $desktop "TCP_GlobalsBackup$timestamp.json"
Write-Host "Backing up current adapter advanced properties to $backupAdapterFile"
Backup-AdapterProps -AdapterName $AdapterName -backupPath $backupAdapterFile
Write-Host "Backing up current netsh TCP global settings to $backupTcpFile"
$tcpBefore = netsh interface tcp show global
$tcpBefore | Out-File -FilePath $backupTcpFile -Encoding UTF8
Write-Host "Applying recommended settings..." -ForegroundColor Cyan

Desired settings map (attempts multiple common DisplayValue strings where possible)​

$settings = @(
@{ Name = "Advanced EEE"; Values = @("Disabled","Off") },
@{ Name = "Energy-Efficient Ethernet"; Values = @("Disabled","Off") },
@{ Name = "EEE Max Support Speed"; Values = @("2.5 Gbps","Disabled") },
@{ Name = "Green Ethernet"; Values = @("Disabled","Off") },
@{ Name = "Gigabit Lite"; Values = @("Disabled","Off") },
@{ Name = "Flow Control"; Values = @("On","Enabled") },
@{ Name = "Large Send Offload v2 (IPv4)"; Values = @("Disabled","Off") },
@{ Name = "Large Send Offload v2 (IPv6)"; Values = @("Disabled","Off") },
@{ Name = "Large Send Offload (IPv4)"; Values = @("Disabled","Off") },
@{ Name = "Large Send Offload (IPv6)"; Values = @("Disabled","Off") },
@{ Name = "TCP Checksum Offload (IPv4)"; Values = @("Enabled","On") },
@{ Name = "TCP Checksum Offload (IPv6)"; Values = @("Enabled","On") },
@{ Name = "UDP Checksum Offload (IPv4)"; Values = @("Enabled","On") },
@{ Name = "UDP Checksum Offload (IPv6)"; Values = @("Enabled","On") },
@{ Name = "Interrupt Moderation"; Values = @("Enabled","Adaptive","On") },
@{ Name = "Recv Segment Coalescing (IPv4)"; Values = @("Enabled","On") },
@{ Name = "Recv Segment Coalescing (IPv6)"; Values = @("Enabled","On") },
@{ Name = "Speed & Duplex"; Values = @("Auto Negotiation","Auto","Auto negotiate") },
@{ Name = "Jumbo Frame"; Values = @("Disabled","Off") },
@{ Name = "Wake on Magic Packet"; Values = @("Enabled","On") }
)
foreach ($s in $settings) {

only attempt if the adapter actually has that property​

Code:
$exists = Get-NetAdapterAdvancedProperty -Name $AdapterName | Where-Object { $_.DisplayName -eq $s.Name }
if ($exists) {
    TrySet -AdapterName $AdapterName -DisplayName $s.Name -Candidates $s.Values
} else {
    Write-Verbose "Property not present on this driver: $($s.Name)"
}
}

Attempt to set Receive/Transmit Buffers to a high value if available (common names)​

$bufferAttempts = @(
@{ Name = "Receive Buffers"; Values = @("8192","4096","2048","1024") },
@{ Name = "Transmit Buffers"; Values = @("8192","4096","2048","1024") }
)
foreach ($b in $bufferAttempts) {
$exists = Get-NetAdapterAdvancedProperty -Name $AdapterName | Where-Object { $_.DisplayName -eq $b.Name }
if ($exists) {
TrySet -AdapterName $AdapterName -DisplayName $b.Name -Candidates $b.Values
} else {
Write-Verbose "Buffer property not present: $($b.Name)"
}
}

Apply netsh TCP adjustments (backup already created)​

Write-Host "Saving current netsh TCP globals to backup and applying conservative TCP changes for testing..." -ForegroundColor Cyan
Write-Host "Current netsh TCP global settings (saved):" -ForegroundColor Yellow
netsh interface tcp show global

Apply changes: disable autotuning & chimney, enable RSS​

Write-Host "Applying: autotuninglevel=disabled, chimney=disabled, rss=enabled" -ForegroundColor Cyan
try {
netsh int tcp set global autotuninglevel=disabled | Out-Null
netsh int tcp set global chimney=disabled | Out-Null
netsh int tcp set global rss=enabled | Out-Null
Write-Host "netsh TCP settings applied."
} catch {
Write-Warning "Failed to apply some netsh settings: $_"
}

Restart the adapter​

Write-Host "Restarting adapter $AdapterName..." -ForegroundColor Cyan
try {
Disable-NetAdapter -Name $AdapterName -Confirm:$false -ErrorAction Stop
Start-Sleep -Seconds 2
Enable-NetAdapter -Name $AdapterName -Confirm:$false -ErrorAction Stop
Start-Sleep -Seconds 3
Write-Host "Adapter restarted."
} catch {
Write-Warning "Automatic restart failed; please manually Disable/Enable adapter or reboot. Error: $_"
}

Show verification​

Write-Host "`nVerification: current advanced property values for $AdapterName:" -ForegroundColor Green
Get-NetAdapterAdvancedProperty -Name $AdapterName | Select-Object DisplayName, DisplayValue | Format-Table -AutoSize
Write-Host "`nVerification: current netsh TCP globals:" -ForegroundColor Green
netsh interface tcp show global
Write-Host "`nBackup files created:" -ForegroundColor Green
Write-Host " Adapter properties backup: $backupAdapterFile"
Write-Host " TCP globals backup: $backupTcpFile"
Write-Host "`nIf you want to restore the previous settings, run this command (as admin):" -ForegroundColor Yellow
Write-Host " Restore-AdapterProps -AdapterName '$AdapterName' -backupPath '$backupAdapterFile'" -ForegroundColor White
Write-Host "and to restore netsh TCP globals open the backup and manually run the previous values, or reboot to restore typical defaults." -ForegroundColor White
Write-Host "`nScript finished. Run a Windows speedtest now (browser Speedtest.net or Speedtest app) and/or run iperf3 tests to your Linux server." -ForegroundColor Cyan

End script​


Notes and usage guidance
  • Run as Administrator: Right-click PowerShell -> Run as Administrator.
  • Adapter selection: the script will prompt you to choose the adapter. If you press Enter it will pick "Ethernet" if present.
  • Backup: the script creates two files on your Desktop with timestamps:
    • NIC_AdvancedBackup{Adapter}_{timestamp}.json — contains each DisplayName and its original DisplayValue (used by Restore-AdapterProps).
    • TCP_GlobalsBackup{timestamp}.txt — textual output of netsh interface tcp show global.
  • Rollback: To restore NIC advanced properties from backup run:
    Restore-AdapterProps -AdapterName "Ethernet" -backupPath "C:\Users\<you>\Desktop\NIC_Advanced_Backup_Ethernet_YYYYMMDD_HHMMSS.json"
    (You can also re-run the script and call the restore function manually.)
    netsh TCP globals: the script saved the prior output; if you want to revert autotuning back to normal run:
    netsh int tcp set global autotuninglevel=normal
    netsh int tcp set global chimney=default
    (If you want a full restore exactly as saved, open the backup text file and manually run the appropriate netsh commands shown there.)
  • Buffer values: the script attempts to set Receive/Transmit buffers to common high values (8192 → 4096 → ...). If your driver has different allowed values, the Set call will fail and the script leaves the original setting intact.
  • If anything goes wrong: reboot will return many driver parameters to a stable state; you also have the JSON backup to restore the original advanced values.
After running
1) Run a Speedtest (browser or Speedtest app). Report download/upload numbers and whether connectivity is stable over several attempts.
2) If you use iperf3, run single-stream and multi-stream tests to your Linux box and paste results.
3) If you want, paste the output of:
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize
netsh interface tcp show global
and I’ll interpret anything unusual or suggest next steps (driver reinstall, Wireshark capture, etc).
Would you like me to also produce a shorter “rollback-only” script that restores both NIC props and netsh TCP values automatically (if you confirm the exact netsh backup format)?
 

ChatGPT: Yes — produce the script
Try this although I would say you really should look into it with the ISP or test from other endpoints, these are basic troubleshooting tasks that I don't think it has even mentioned. This is more in line with what it was talking about:

Code:
# Network Adapter Performance Fix Script
# For TP-Link TX201 / Realtek 2.5GbE adapters experiencing slow speeds on Windows
# Run as Administrator

param(
    [string]$AdapterName = "Ethernet",
    [switch]$Restore
)

$ErrorActionPreference = "Stop"

# Configuration
$BackupDir = [Environment]::GetFolderPath("Desktop")
$Timestamp = (Get-Date).ToString("yyyyMMdd_HHmmss")
$BackupFile = Join-Path $BackupDir "NetworkAdapterBackup_$Timestamp.json"

# Core fix settings - these resolve most 2.5Gb NIC issues
$CoreSettings = @{
    # Disable all energy saving features - common cause of speed issues
    "Energy-Efficient Ethernet" = "Disabled"
    "Advanced EEE" = "Disabled"
    "Green Ethernet" = "Disabled"
    "Gigabit Lite" = "Disabled"
    "Power Saving Mode" = "Disabled"
    
    # Enable flow control for stability
    "Flow Control" = "Rx & Tx Enabled"
    
    # Disable Large Send Offload - often causes speed issues
    "Large Send Offload v2 (IPv4)" = "Disabled"
    "Large Send Offload v2 (IPv6)" = "Disabled"
    
    # Keep checksums enabled for performance
    "TCP Checksum Offload (IPv4)" = "Rx & Tx Enabled"
    "TCP Checksum Offload (IPv6)" = "Rx & Tx Enabled"
    "UDP Checksum Offload (IPv4)" = "Rx & Tx Enabled"
    "UDP Checksum Offload (IPv6)" = "Rx & Tx Enabled"
    
    # Enable interrupt moderation
    "Interrupt Moderation" = "Enabled"
    
    # Auto negotiation for link speed
    "Speed & Duplex" = "Auto Negotiation"
    
    # Standard MTU
    "Jumbo Frame" = "Disabled"
}

# Buffer settings - use maximum values for best performance
$BufferSettings = @{
    "Receive Buffers" = "4096"
    "Transmit Buffers" = "2048"
}

function Show-Status {
    param($Message, $Color = "Cyan")
    Write-Host "`n$Message" -ForegroundColor $Color
}

function Backup-Settings {
    Show-Status "Backing up current settings..."
    
    # Backup adapter properties
    $CurrentSettings = @{}
    Get-NetAdapterAdvancedProperty -Name $AdapterName | ForEach-Object {
        $CurrentSettings[$_.DisplayName] = $_.DisplayValue
    }
    
    # Backup TCP settings
    $TcpSettings = @{
        AutoTuning = (netsh int tcp show global | Select-String "Receive Window Auto-Tuning Level" | Out-String).Split(':')[1].Trim()
    }
    
    $Backup = @{
        AdapterName = $AdapterName
        Timestamp = $Timestamp
        AdapterSettings = $CurrentSettings
        TcpSettings = $TcpSettings
    }
    
    $Backup | ConvertTo-Json -Depth 3 | Out-File -FilePath $BackupFile -Encoding UTF8
    Write-Host "Backup saved to: $BackupFile" -ForegroundColor Green
}

function Restore-Settings {
    param([string]$RestoreFile)
    
    if (-not (Test-Path $RestoreFile)) {
        Write-Error "Backup file not found: $RestoreFile"
        return
    }
    
    Show-Status "Restoring settings from backup..."
    $Backup = Get-Content $RestoreFile -Raw | ConvertFrom-Json
    
    foreach ($Setting in $Backup.AdapterSettings.PSObject.Properties) {
        try {
            Set-NetAdapterAdvancedProperty -Name $AdapterName -DisplayName $Setting.Name -DisplayValue $Setting.Value -ErrorAction Stop
            Write-Host "  Restored: $($Setting.Name)" -ForegroundColor Green
        } catch {
            Write-Warning "  Could not restore: $($Setting.Name)"
        }
    }
    
    # Restore TCP settings
    if ($Backup.TcpSettings.AutoTuning -eq "normal") {
        netsh int tcp set global autotuninglevel=normal | Out-Null
    }
    
    Show-Status "Restore complete!" "Green"
}

function Apply-Settings {
    Show-Status "Applying performance fixes..."
    
    # Get current adapter properties
    $AdapterProps = Get-NetAdapterAdvancedProperty -Name $AdapterName
    
    # Apply core settings
    foreach ($Setting in $CoreSettings.GetEnumerator()) {
        $Prop = $AdapterProps | Where-Object { $_.DisplayName -eq $Setting.Key }
        if ($Prop) {
            try {
                Set-NetAdapterAdvancedProperty -Name $AdapterName -DisplayName $Setting.Key -DisplayValue $Setting.Value -ErrorAction Stop
                Write-Host "  ✓ Set: $($Setting.Key) = $($Setting.Value)" -ForegroundColor Green
            } catch {
                Write-Warning "  ✗ Failed: $($Setting.Key)"
            }
        }
    }
    
    # Apply buffer settings (try different values if first fails)
    foreach ($Buffer in $BufferSettings.GetEnumerator()) {
        $Prop = $AdapterProps | Where-Object { $_.DisplayName -eq $Buffer.Key }
        if ($Prop) {
            $Values = @("8192", "4096", "2048", "1024")
            $Applied = $false
            foreach ($Value in $Values) {
                try {
                    Set-NetAdapterAdvancedProperty -Name $AdapterName -DisplayName $Buffer.Key -DisplayValue $Value -ErrorAction Stop
                    Write-Host "  ✓ Set: $($Buffer.Key) = $Value" -ForegroundColor Green
                    $Applied = $true
                    break
                } catch {
                    continue
                }
            }
            if (-not $Applied) {
                Write-Warning "  ✗ Could not set optimal buffer size for $($Buffer.Key)"
            }
        }
    }
}

function Apply-PowerSettings {
    Show-Status "Disabling power management..."
    
    # Disable NIC power management via WMI
    try {
        $NicConfig = Get-WmiObject -Class MSPower_DeviceEnable -Namespace root\wmi | 
                     Where-Object { $_.InstanceName -match $AdapterName }
        if ($NicConfig) {
            $NicConfig.Enable = $false
            $NicConfig.Put() | Out-Null
            Write-Host "  ✓ Disabled power management for NIC" -ForegroundColor Green
        }
    } catch {
        Write-Warning "  Could not disable power management via WMI"
    }
    
    # Set PCI Express Link State Power Management to Off
    powercfg /setacvalueindex SCHEME_CURRENT SUB_PCIEXPRESS ASPM 0 | Out-Null
    powercfg /setactive SCHEME_CURRENT | Out-Null
    Write-Host "  ✓ Disabled PCIe Link State Power Management" -ForegroundColor Green
}

function Apply-TcpSettings {
    Show-Status "Applying TCP optimizations..."
    
    # Temporarily disable autotuning for testing
    netsh int tcp set global autotuninglevel=disabled | Out-Null
    Write-Host "  ✓ Disabled TCP auto-tuning (for testing)" -ForegroundColor Green
    
    # Disable chimney offload
    netsh int tcp set global chimney=disabled 2>$null | Out-Null
    
    # Enable RSS
    netsh int tcp set global rss=enabled | Out-Null
    Write-Host "  ✓ Enabled RSS" -ForegroundColor Green
}

function Restart-Adapter {
    Show-Status "Restarting network adapter..."
    
    try {
        Disable-NetAdapter -Name $AdapterName -Confirm:$false -ErrorAction Stop
        Write-Host "  Adapter disabled..." -NoNewline
        Start-Sleep -Seconds 2
        
        Enable-NetAdapter -Name $AdapterName -Confirm:$false -ErrorAction Stop
        Write-Host " and re-enabled!" -ForegroundColor Green
        Start-Sleep -Seconds 3
    } catch {
        Write-Warning "  Could not restart adapter automatically. Please restart manually or reboot."
    }
}

function Show-Summary {
    Show-Status "Current Configuration:" "Yellow"
    
    # Show key adapter settings
    $KeySettings = @(
        "Energy-Efficient Ethernet",
        "Large Send Offload v2 (IPv4)",
        "Flow Control",
        "Receive Buffers",
        "Speed & Duplex"
    )
    
    Get-NetAdapterAdvancedProperty -Name $AdapterName | 
        Where-Object { $KeySettings -contains $_.DisplayName } | 
        Format-Table DisplayName, DisplayValue -AutoSize
    
    # Show TCP settings
    Write-Host "`nTCP Settings:" -ForegroundColor Yellow
    netsh int tcp show global | Select-String "Auto-Tuning|RSS" | ForEach-Object {
        Write-Host "  $_"
    }
    
    # Show link status
    $Adapter = Get-NetAdapter -Name $AdapterName
    Write-Host "`nLink Status: $($Adapter.Status) at $($Adapter.LinkSpeed)" -ForegroundColor $(if($Adapter.Status -eq "Up"){"Green"}else{"Red"})
}

# Main execution
try {
    # Check if running as admin
    $IsAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
    if (-not $IsAdmin) {
        Write-Error "This script must be run as Administrator!"
        exit 1
    }
    
    # Verify adapter exists
    if (-not (Get-NetAdapter -Name $AdapterName -ErrorAction SilentlyContinue)) {
        Write-Error "Network adapter '$AdapterName' not found!"
        Write-Host "`nAvailable adapters:" -ForegroundColor Yellow
        Get-NetAdapter | Format-Table Name, Status, InterfaceDescription -AutoSize
        exit 1
    }
    
    if ($Restore) {
        # Find most recent backup
        $Backups = Get-ChildItem -Path $BackupDir -Filter "NetworkAdapterBackup_*.json" | 
                   Sort-Object LastWriteTime -Descending | 
                   Select-Object -First 1
        
        if ($Backups) {
            Restore-Settings -RestoreFile $Backups.FullName
        } else {
            Write-Error "No backup files found in $BackupDir"
        }
    } else {
        # Apply fixes
        Show-Status "Starting Network Adapter Performance Fix" "Cyan"
        Write-Host "Target adapter: $AdapterName" -ForegroundColor White
        
        Backup-Settings
        Apply-Settings
        Apply-PowerSettings
        Apply-TcpSettings
        Restart-Adapter
        Show-Summary
        
        Show-Status "Fix Applied Successfully!" "Green"
        Write-Host "`nNext steps:" -ForegroundColor Yellow
        Write-Host "1. Run a speed test at https://www.speedtest.net"
        Write-Host "2. If speeds are still slow, try rebooting"
        Write-Host "3. To restore original settings, run: .\NetworkFix.ps1 -Restore"
        Write-Host "`nBackup location: $BackupFile" -ForegroundColor Cyan
    }
    
} catch {
    Write-Error "Script failed: $_"
    Write-Host "`nTroubleshooting:" -ForegroundColor Yellow
    Write-Host "1. Ensure you're running as Administrator"
    Write-Host "2. Check that your adapter name is correct (default: Ethernet)"
    Write-Host "3. Try: .\NetworkFix.ps1 -AdapterName 'YourAdapterName'"
}
 

D.webp

PS C:\> Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize

DisplayName DisplayValue
----------- ------------
Energy-Efficient Ethernet Enabled
Flow Control Rx & Tx Enabled
Interrupt Moderation Enabled
IPv4 Checksum Offload Rx & Tx Enabled
Jumbo Frame Disabled
Large Send Offload v2 (IPv4) Enabled
Large Send Offload v2 (IPv6) Enabled
ARP Offload Enabled
NS Offload Enabled
Priority & VLAN Priority & VLAN Enabled
Receive Buffers 1024
Recv Segment Coalescing (IPv4) Enabled
Recv Segment Coalescing (IPv6) Enabled
Speed & Duplex Auto Negotiation
TCP Checksum Offload (IPv4) Rx & Tx Enabled
TCP Checksum Offload (IPv6) Rx & Tx Enabled
Transmit Buffers 512
UDP Checksum Offload (IPv4) Rx & Tx Enabled
UDP Checksum Offload (IPv6) Rx & Tx Enabled
Wake on Magic Packet Enabled
Wake on pattern match Enabled
Advanced EEE Disabled
EEE Max Support Speed 1.0 Gbps Full Duplex
Green Ethernet Enabled
Gigabit Lite Enabled
Network Address
Power Saving Mode Enabled
VLAN ID 0
Shutdown Wake-On-Lan Enabled
WOL & Shutdown Link Speed 10 Mbps First

PS C:\> netsh interface tcp show global
Querying active state...

TCP Global Parameters
----------------------------------------------
Receive-Side Scaling State : enabled
Receive Window Auto-Tuning Level : disabled
Add-On Congestion Control Provider : default
ECN Capability : disabled
RFC 1323 Timestamps : allowed
Initial RTO : 1000
Receive Segment Coalescing State : enabled
Non Sack Rtt Resiliency : disabled
Max SYN Retransmissions : 4
Fast Open : enabled
Fast Open Fallback : enabled
HyStart : enabled
Proportional Rate Reduction : enabled
Pacing Profile : off
 

Thanks — the outputs are exactly what I needed.
Short diagnosis (what stands out)
  • The NIC is negotiating 2.5 Gbps (good).
  • Windows TCP Receive Window Auto‑Tuning is currently disabled. That alone frequently causes very poor single‑stream download performance on modern high‑bandwidth links.
  • A bunch of energy/power features are enabled (Energy‑Efficient Ethernet, Green Ethernet, Gigabit Lite, Power Saving Mode and WOL shutdown‑link set to 10 Mbps first). Those can force the NIC into power-saving behaviour or cause odd negotiation/throughput behaviour on some drivers.
  • Receive/Transmit buffer sizes are small (1024 / 512). Increasing them helps throughput and stability on high-speed NICs.
Plan: 1) re-enable Windows autotuning, 2) disable the energy/power features that cause negotiation throttling, 3) increase buffers, 4) restart the adapter and re-test. I’ll give you the exact PowerShell commands to run (copy/paste into an Admin PowerShell). I’ll also give rollback commands that restore the exact original values you posted (so you can revert if needed).
Important: run these commands in an elevated PowerShell (right‑click PowerShell → Run as administrator). Adapter will be briefly disabled/re-enabled and you will lose network access for a few seconds.
Commands to apply the recommended changes
(One block — paste the whole block into Admin PowerShell)

Enable Windows TCP auto‑tuning (recommended)​

netsh int tcp set global autotuninglevel=normal

Disable energy / power features that may throttle the link​

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Green Ethernet" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Gigabit Lite" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max Support Speed" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Power Saving Mode" -DisplayValue "Disabled"

Disable LSO (common culprit) — you can re-enable later if stable and you want the CPU savings​

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Disabled"

Increase buffers (attempt common high values; if your driver doesn't accept 8192 it will fail and leave the old value)​

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "8192"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "8192"

Keep Flow Control on (you already had Rx & Tx enabled — leave it)​

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "Rx & Tx Enabled"

Ensure Interrupt Moderation and Speed negotiation are reasonable​

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Frame" -DisplayValue "Disabled"

Restart adapter (brief disconnect)​

Disable-NetAdapter -Name "Ethernet" -Confirm:$false
Start-Sleep -Seconds 3
Enable-NetAdapter -Name "Ethernet" -Confirm:$false
After that finishes, run these two verification commands and paste the output if you want me to verify:
Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue -AutoSize
netsh interface tcp show global
What to test immediately
  • Run Speedtest (browser or the Speedtest app) — note download and upload numbers and whether the download now hits ~900 Mbps like your other machine.
  • If you still see poor download but good upload, run iperf3 single‑stream to your Linux box:
    iperf3 -c <linux_ip> -P 1
    and multi‑stream:
    iperf3 -c <linux_ip> -P 8
    Paste both outputs.
Rollback (restore your original values)
If you want to go back to exactly the state you posted earlier, run this block (Admin PowerShell):
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Energy-Efficient Ethernet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Interrupt Moderation" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "IPv4 Checksum Offload" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Jumbo Frame" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "ARP Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "NS Offload" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Priority & VLAN" -DisplayValue "Priority & VLAN Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "1024"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Speed & Duplex" -DisplayValue "Auto Negotiation"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "TCP Checksum Offload (IPv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Transmit Buffers" -DisplayValue "512"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv4)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "UDP Checksum Offload (IPv6)" -DisplayValue "Rx & Tx Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Wake on Magic Packet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Wake on pattern match" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Advanced EEE" -DisplayValue "Disabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "EEE Max Support Speed" -DisplayValue "1.0 Gbps Full Duplex"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Green Ethernet" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Gigabit Lite" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Power Saving Mode" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "VLAN ID" -DisplayValue "0"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Shutdown Wake-On-Lan" -DisplayValue "Enabled"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "WOL & Shutdown Link Speed" -DisplayValue "10 Mbps First"

restore autotuning to the original state you had earlier (if you want)​

netsh int tcp set global autotuninglevel=disabled
Why your earlier script failed
  • The parse errors you posted come from PowerShell failing on the script file; sometimes that’s caused by:
    • The script containing characters PowerShell can’t parse (smart quotes or non‑ASCII chars introduced by copying from browser), or
    • Minor syntax constructs that the user’s PowerShell parser flagged (rare), or
    • You saved it with the wrong file encoding (use UTF‑8 without BOM).
  • To avoid that, I gave the shorter command blocks above which are simpler to run interactively and less prone to copy/paste encoding issues.
If the above changes don’t fix Windows download
  1. Try a clean driver reinstall: Uninstall device (delete driver) → reboot → install TP‑Link’s TX201 driver (or the Realtek RTL8125 official driver) — the vendor driver usually performs better than the MS generic one.
  2. Disable any third‑party AV/firewall or clean‑boot the machine and test again.
  3. Run iperf3 single vs multi stream to determine whether single stream is limited.
  4. If still slow, capture traffic with Wireshark while doing a Windows speedtest and look for retransmits/duplicate ACKs — paste the summary and I’ll review.
Next step for you
  • Run the “apply” command block above in Admin PowerShell, then run a speedtest and paste the results (and paste the verification output from Get‑NetAdapterAdvancedProperty and netsh interface tcp show global). I’ll interpret the numbers and tell you the next action (driver reinstall, Wireshark capture, or we’re done).
 

Back
Top