How to Configure Network Adapter Flow Control on Windows 11 Using PowerShell

In high-throughput local area networks—such as iSCSI SAN storage networks, high-speed Network Attached Storage (NAS) transfers, and continuous multi-gigabit file sharing—temporary traffic bursts can overwhelm a receiving network interface card (NIC). When an adapter’s on-chip receive FIFO buffers fill faster than the host CPU can process incoming packets, buffer overflow occurs, forcing the adapter to drop frames. Dropped packets trigger TCP retransmissions, introducing latency spikes and throughput collapse. To prevent buffer overflows at the data link layer, Ethernet incorporates IEEE 802.3x Flow Control. On Windows 11, administrators and performance engineers can inspect, enable, and tune flow control pause frame settings using PowerShell.

Understanding IEEE 802.3x Flow Control and Pause Frames

IEEE 802.3x Flow Control operates by generating specialized MAC-layer control frames, known as PAUSE frames:

  • Rx Pause Frames: When an upstream switch or sender receives a PAUSE frame from your adapter, it temporarily halts transmission for the duration specified in the frame (measured in 512-bit-time quanta), allowing the local receive queue to clear without dropping packets.
  • Tx Pause Frames: When your Windows network adapter’s internal buffers reach a critical high-water mark, it transmits a PAUSE frame upstream to the connected switch port, signaling the switch to buffer incoming packets briefly.

Depending on network architecture, flow control configurations vary:

  • Rx & Tx Enabled: Both sending and receiving pause frames are active, common in isolated iSCSI storage networks.
  • Rx Enabled: The adapter honors incoming pause frames from upstream switches but does not emit pause frames.
  • Tx Enabled: The adapter requests upstream pauses when overwhelmed but ignores incoming pause requests.
  • Disabled: Flow control is turned off. In modern low-latency datacenter networks running Priority Flow Control (PFC) or modern congestion-aware TCP (like BBR or CUBIC), standard 802.3x pause frames are frequently disabled to prevent head-of-line blocking across shared switch buffers.

Querying Adapter Flow Control Support in PowerShell

Before modifying flow control parameters, verify that your installed physical network adapters support 802.3x pause frames. Open an elevated PowerShell session (Run as Administrator) and run:

Get-NetAdapterAdvancedProperty | Where-Object { $_.DisplayName -match "Flow Control" -or $_.RegistryKeyword -match "FlowControl" }

To inspect the specific active flow control configuration on your primary Ethernet interface:

Get-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control"

The command returns the current setting:

Name     DisplayName  DisplayValue    RegistryKeyword RegistryValue
----     -----------  ------------    --------------- -------------
Ethernet Flow Control Rx & Tx Enabled *FlowControl    {3}

Standard registry value mappings include: 0 (Disabled), 1 (Tx Enabled), 2 (Rx Enabled), and 3 (Rx & Tx Enabled).

Configuring Flow Control Options on an Adapter

You can configure flow control using the Set-NetAdapterAdvancedProperty cmdlet, targeting either the human-readable display value or the driver registry keyword.

Enabling Symmetric Flow Control (Rx & Tx)

For dedicated storage networks (such as direct 10 GbE connections to an unmanaged or lightly managed NAS where frame drops cause severe throughput degradation):

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

Or using the driver registry keyword:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword "*FlowControl" -RegistryValue "3"

Enabling Receive-Only Flow Control

If you want your machine to slow down when an upstream switch buffer fills, but prevent your workstation from emitting pause frames that could stall multi-port switch fabrics:

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

Disabling Flow Control

In low-latency gaming setups, competitive esports environments, or networks utilizing Data Center Bridging (DCB) with Priority Flow Control (PFC), standard 802.3x flow control should be disabled:

Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Flow Control" -DisplayValue "Disabled"

Auditing Flow Control Statistics and Pause Frames

To determine whether your network adapter is actively generating or receiving pause frames during heavy network transfers, inspect the hardware error and discard counters using Get-NetAdapterStatistics:

Get-NetAdapterStatistics -Name "Ethernet" | Select-Object ReceivedDiscardedPackets, OutboundDiscardedPackets, ReceivedPacketErrors, OutboundPacketErrors

If ReceivedDiscardedPackets increments rapidly while transferring large files across multi-gigabit connections, enabling Flow Control or expanding adapter Receive Buffers (*ReceiveBuffers) resolves the packet drop bottleneck.

Verifying Switch Port Negotiation

IEEE 802.3x Flow Control is an auto-negotiated link parameter. For flow control to function effectively, the connected switch port must also have flow control enabled. If your Windows 11 adapter is set to Rx & Tx Enabled but the switch port is configured with flow control disabled, the physical transceiver will negotiate down to an unpaused link state.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.