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).  | ||||||||||||||||||||||
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: driver: mlx5_core version: 5.1-0.4.0 firmware-version: 4.6.4046 (MT_QEMU000000) expansion-rom-version: bus-info: 0000:07:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: no supports-register-dump: no supports-priv-flags: yes  | ||||||||||||||||||||||
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  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  Note:   | ||||||||||||||||||||||
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.  |