> ## Documentation Index
> Fetch the complete documentation index at: https://docs.siderolabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ethernet Configuration

> How to configure Ethernet network link settings.

Talos Linux allows you to configure Ethernet network link settings, such as ring configuration or disabling TCP checksum offloading.
The settings and their values closely follow `ethtool` command line options, so you can use similar recipes.

## Observing current status

You can observe current Ethernet settings in the `EthernetStatus` resource:

```yaml theme={null}
# talosctl get ethernetstatus enp0s2 -o yaml
spec:
    rings:
        rx-max: 256
        tx-max: 256
        rx: 256
        tx: 256
        tx-push: false
        rx-push: false
    features:
        tx-scatter-gather: on
        tx-checksum-ipv4: off [fixed]
        tx-checksum-ip-generic: on
        tx-checksum-ipv6: off [fixed]
        highdma: on [fixed]
        tx-scatter-gather-fraglist: off [fixed]
        tx-vlan-hw-insert: off [fixed]
        rx-vlan-hw-parse: off [fixed]
        rx-vlan-filter: on [fixed]
        vlan-challenged: off [fixed]
        tx-generic-segmentation: on
        rx-gro: on
        rx-lro: off [fixed]
        tx-tcp-segmentation: on
        tx-gso-robust: on [fixed]
        tx-tcp-ecn-segmentation: on
        tx-tcp-mangleid-segmentation: off
        tx-tcp6-segmentation: on
        tx-fcoe-segmentation: off [fixed]
        tx-gre-segmentation: off [fixed]
        tx-gre-csum-segmentation: off [fixed]
        tx-ipxip4-segmentation: off [fixed]
        tx-ipxip6-segmentation: off [fixed]
        tx-udp_tnl-segmentation: off [fixed]
        tx-udp_tnl-csum-segmentation: off [fixed]
        tx-gso-partial: off [fixed]
        tx-tunnel-remcsum-segmentation: off [fixed]
        tx-sctp-segmentation: off [fixed]
        tx-esp-segmentation: off [fixed]
        tx-udp-segmentation: off
        tx-gso-list: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
        rx-ntuple-filter: off [fixed]
        rx-hashing: off [fixed]
        rx-checksum: on [fixed]
        tx-nocache-copy: off
        loopback: off [fixed]
        rx-fcs: off [fixed]
        rx-all: off [fixed]
        tx-vlan-stag-hw-insert: off [fixed]
        rx-vlan-stag-hw-parse: off [fixed]
        rx-vlan-stag-filter: off [fixed]
        l2-fwd-offload: off [fixed]
        hw-tc-offload: off [fixed]
        esp-hw-offload: off [fixed]
        esp-tx-csum-hw-offload: off [fixed]
        rx-udp_tunnel-port-offload: off [fixed]
        tls-hw-tx-offload: off [fixed]
        tls-hw-rx-offload: off [fixed]
        rx-gro-hw: on
        tls-hw-record: off [fixed]
        rx-gro-list: off
        macsec-hw-offload: off [fixed]
        rx-udp-gro-forwarding: off
        hsr-tag-ins-offload: off [fixed]
        hsr-tag-rm-offload: off [fixed]
        hsr-fwd-offload: off [fixed]
        hsr-dup-offload: off [fixed]
    channels:
        combined-max: 1
        combined: 1
```

The available features depend on the network card and driver.
Some values are fixed by the driver and hardware and cannot be changed.

## Configuration

Use the [EthernetConfig](https://docs.siderolabs.com/talos/v1.15/reference/configuration/network/ethernetconfig.md) document to configure Ethernet settings.
You can append the machine config document to the machine configuration (separating with `---`), or apply it as a [machine configuration patch](https://docs.siderolabs.com/talos/v1.15/configure-your-talos-cluster/system-configuration/patching.md).

For example, to disable TCP segmentation on transmit:

```yaml theme={null}
apiVersion: v1alpha1
kind: EthernetConfig
name: enp0s2
features:
  tx-tcp-segmentation: false
```

For rings and channels configuration, values can be increased if they do not exceed the maximum supported by the network card (the maximum values are reported in the status with `-max` suffix).

The following sections cover Wake-on-LAN and flow control, which have their own fields in the document.

### Enable Wake-on-LAN support

Starting with 1.12, Talos Linux now supports configuring Wake-on-LAN (WOL) directly in the Ethernet configuration.

Use the `wakeOnLan` field under the `EthernetConfig` resource to enable WOL and specify the desired WOL modes.
This allows a node’s network interface to wake the system from a low-power state when receiving a magic packet or other WOL-triggering event.

Example:

```yaml theme={null}
apiVersion: v1alpha1
kind: EthernetConfig
name: enp0s3
wakeOnLan:
  - magic
  - unicast
```

#### Supported modes

Supported WOL modes depend on the NIC and driver, but common values include:

* `"magic"` — wake on magic packet (most common)
* `"unicast"` — wake on unicast packets
* `"multicast"` — wake on multicast packets
* `"broadcast"` — wake on broadcast packets
* `"phy"` — wake on PHY activity

> **Note**: If `wakeOnLan` is omitted, Talos leaves the Wake-on-LAN configuration of the interface unchanged. An empty list (`wakeOnLan: []`) disables Wake-on-LAN.
>
> WOL functionality requires that your hardware and BIOS/UEFI firmware support it and that it is not disabled there.

You can check WOL support and status with:

```bash theme={null}
talosctl get ethernetstatus <interface> -o yaml
```

This command will show the current wakeOnLan settings along with other Ethernet features.

### Configure flow control

Flow control lets a link ask its peer to pause sending when it cannot keep up, using 802.3x pause frames.
Use the `flowControl` field to configure it, similar to the `ethtool -A` command:

```yaml theme={null}
apiVersion: v1alpha1
kind: EthernetConfig
name: enp0s2
flowControl:
  rx: true
  tx: false
  autoneg: false
```

The `flowControl` field has three settings:

* `rx`: accept pause frames from the link peer.
* `tx`: send pause frames to the link peer.
* `autoneg`: negotiate flow control with the link peer.

When `autoneg` is on, `rx` and `tx` are only advertised to the link peer, and the result depends on what the peer supports.
To apply `rx` and `tx` exactly as set, turn `autoneg` off, as in the example above.

A setting that is omitted stays unchanged, and omitting `flowControl` leaves the flow control configuration of the link unchanged.
When `flowControl` is present, it must set at least one of the three settings.

Not all drivers support flow control; `virtio-net` is one example.
On such a link, Talos logs a warning and skips the flow control settings.

The current flow control settings appear under `flowControl` in the `EthernetStatus` resource:

```bash theme={null}
talosctl get ethernetstatus <interface> -o yaml
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.