Ethtool
Ethtool is a standard Linux utility for controlling network drivers and hardware, particularly for wired Ethernet devices. It can be used to:
Get identification and diagnostic information
Get extended device statistics
Control speed, duplex, auto-negotiation and flow control for Ethernet devices
Control checksum offload and other hardware offload features
Control DMA ring sizes and interrupt moderation
Flash device firmware using a .mfa2 image
Ethtool Supported Options
Options | Description | ||||||||||||||||||||||
ethtool --set-priv-flags eth<x> <priv flag> <on/off> | Enables/disables driver feature matching the given private flag. | ||||||||||||||||||||||
ethtool --show-priv-flags eth<x> | Shows driver private flags and their states (ON/OFF) The private flags are:
For further information regarding the last three flags, refer to Flow Steering section. The flags below are related to Ignore Frame Check Sequence, and they are active when ethtool -k does not support them:
The flags below is relevant for ConnectX-4 family cards only:
| ||||||||||||||||||||||
ethtool -a eth<x> | Queries the pause frame settings. | ||||||||||||||||||||||
ethtool -A eth<x> [rx on|off] [tx on|off] | Sets the pause frame settings. | ||||||||||||||||||||||
ethtool -c eth<x> | Queries interrupt coalescing settings. | ||||||||||||||||||||||
ethtool -C eth<x> [pkt-rate-low N] [pkt-rate-high N] [rx-usecs-low N] [rx-usecs-high N] | Sets the values for packet rate limits and for moderation time high and low values. | ||||||||||||||||||||||
ethtool -C eth<x> [rx-usecs N] [rx-frames N] | Sets the interrupt coalescing setting. rx-frames will be enforced immediately, rx-usecs will be enforced only when adaptive moderation is disabled. Note: usec settings correspond to the time to wait after the *last* packet is sent/received before triggering an interrupt. | ||||||||||||||||||||||
ethtool -C eth<x> adaptive-rx on|off | Enables/disables adaptive interrupt moderation. By default, the driver uses adaptive interrupt moderation for the receive path, which adjusts the moderation time to the traffic pattern. | ||||||||||||||||||||||
ethtool -C eth<x> adaptive-tx on|off | Note: Supported by mlx5e for ConnectX-4 and above adapter cards. Enables/disables adaptive interrupt moderation. By default, the driver uses adaptive interrupt moderation for the transmit path, which adjusts the moderation parameters (time/frames) to the traffic pattern. | ||||||||||||||||||||||
ethtool -g eth<x> | Queries the ring size values. | ||||||||||||||||||||||
ethtool -G eth<x> [rx <N>] [tx <N>] | Modifies the ring size. | ||||||||||||||||||||||
ethtool -i eth<x> | Checks driver and device information. For example: #> ethtool -i eth2 driver: mlx4_en (MT_0DD0120009_CX3) version: 2.1.6 (Aug 2013) firmware-version: 2.30.3000 bus-info: 0000:1a:00.0 | ||||||||||||||||||||||
ethtool -k eth<x> | Queries the stateless offload status. | ||||||||||||||||||||||
ethtool -K eth<x> [rx on|off] [tx on|off] [sg on|off] [tso on|off] [lro on|off] [gro on|off] [gso on|off] [rxvlan on|off] [txvlan on|off] [ntuple on/off] [rxhash on/off] [rx-all on/off] [rx-fcs on/off] | Sets the stateless offload status. TCP Segmentation Offload (TSO), Generic Segmentation Offload (GSO): increase outbound throughput by reducing CPU overhead. It works by queuing up large buffers and letting the network interface card split them into separate packets. Large Receive Offload (LRO): increases inbound throughput of high-bandwidth network connections by reducing CPU overhead. It works by aggregating multiple incoming packets from a single stream into a larger buffer before they are passed higher up the networking stack, thus reducing the number of packets that have to be processed. LRO is available in kernel versions < 3.1 for untagged traffic. Hardware VLAN insertion Offload (txvlan): When enabled, the sent VLAN tag will be inserted into the packet by the hardware. Note: LRO will be done whenever possible. Otherwise GRO will be done. Generic Receive Offload (GRO) is available throughout all kernels. Hardware VLAN Striping Offload (rxvlan): When enabled received VLAN traffic will be stripped from the VLAN tag by the hardware. RX FCS (rx-fcs): Keeps FCS field in the received packets.Sets the stateless offload status. RX FCS validation (rx-all): Ignores FCS validation on the received packets. | ||||||||||||||||||||||
ethtool -l eth<x> | Shows the number of channels. | ||||||||||||||||||||||
ethtool -L eth<x> [rx <N>] [tx <N>] | Sets the number of channels. Notes:
| ||||||||||||||||||||||
ethtool -m|--dump-module-eeprom eth<x> [ raw on|off ] [ hex on|off ] [ offset N ] [ length N ] | Queries/decodes the cable module eeprom information. | ||||||||||||||||||||||
ethtool -p|--identify DEVNAME | Enables visual identification of the port by LED blinking [TIME-IN-SECONDS]. | ||||||||||||||||||||||
ethtool -p|--identify eth<x> <LED duration> | Allows users to identify interface's physical port by turning the ports LED on for a number of seconds. Note: The limit for the LED duration is 65535 seconds. | ||||||||||||||||||||||
ethtool -S eth<x> | Obtains additional device statistics. | ||||||||||||||||||||||
ethtool -s eth<x> advertise <N> autoneg on | Changes the advertised link modes to requested link modes <N> To check the link modes’ hex values, run <man ethtool> and to check the supported link modes, run ethtool eth<x> For advertising new link modes, make sure to configure the entire bitmap as follows:
Notes:
| ||||||||||||||||||||||
ethtool -s eth<x> msglvl [N] | Changes the current driver message level. | ||||||||||||||||||||||
ethtool -s eth<x> speed <SPEED> autoneg off | Changes the link speed to requested <SPEED>. To check the supported speeds, run ethtool eth<x>. Note: <autoneg off> does not set autoneg OFF, it only hints the driver to set a specific speed. | ||||||||||||||||||||||
ethtool -t eth<x> | Performs a self-diagnostics test. | ||||||||||||||||||||||
ethtool -T eth<x> | Shows time stamping capabilities | ||||||||||||||||||||||
ethtool -x eth<x> | Retrieves the receive flow hash indirection table. | ||||||||||||||||||||||
ethtool -X eth<x> equal a b c... | Sets the receive flow hash indirection table. Note: The RSS table configuration is reset whenever the number of channels is modified (using ethtool -L command). | ||||||||||||||||||||||
ethtool --show-fec eth<x> | Queries current Forward Error Correction (FEC) encoding in case FEC is supported. Note: An output of "baser" implies Firecode encoding. | ||||||||||||||||||||||
ethtool --set-fec eth<x> encoding auto|off|rs|baser | Configures Forward Error Correction (FEC). Note: ‘baser’ encoding applies to the Firecode encoding, and ‘auto’ regards the HCA’s default. | ||||||||||||||||||||||
ethtool -f|--flash <devname> FILE [N] | Flash firmware image on the device using the specified .mfa2 file (FILE). By default, the command flashes all the regions on the device unless a region number (N) is specified. |