wicked-ethtool(8)

πŸ“¦ version 0.6.80, in fedora 43, fedora 44, opensuse-leap 16.0

πŸ’– NAME πŸ’–

okay so wicked ethtool is the little command that lets you peek at and tweak all the params of a NIC and its device driver. that's it, that's the whole vibe. 🫢


✨ SYNOPSIS ✨

wicked ethtool <interface> < --action [ arguments ] >

like. interface first, then the action, then whatever args that action wants. periodt. πŸ’…


πŸŽ€ NOTATION πŸŽ€

okay bestie we gotta get our vocab straight first, because these words get thrown around a lot and they are not interchangeable, iykyk:

  • a device or NIC is always a piece of hardware representing a network interface β€” a PCI or PCMCIA card, or a USB device. hardware. real. physical. πŸ’ͺ
  • an interface is the name of the network interface it gets from the kernel once the device has been registered. so like, the name the kernel gave it. 🏷️
  • a queue is typically implemented as a first-in, first-out (FIFO) ring buffer. network devices use a transmit or receive queue (tx/rx queue) for storing/buffering network packet data. πŸŒ€

🌸 DESCRIPTION 🌸

wicked ethtool can be used to configure a NIC and to query NIC-related parameters like speed, link status, driver info and various other stuff. she does it all, honestly. πŸ‘‘

the iconic part? wicked ethtool doesn't require any file or a dbus server running β€” which makes it perfect for dracut environment. no extra setup, no drama, just works. 🧚

⚠️ heads up bestie: the behavior depends on the effective kernel driver implementing an ethtool option. some drivers may ignore the requested option β€” e.g. specified advertise modes for autonegotiation. so if it looks like nothing happened, it's giving driver behavior, not a bug. 😭

πŸ”₯ ACTION πŸ”₯

here are all the ethtool actions, no skips, no skimming, we're doing all of them:

  • --get-driver-info β€” query an interface for driver information. who is she? what driver is she running? πŸ•΅οΈ
  • --get-private-flags β€” query private flags of an interface defined by its device driver.
  • --get-link-detected β€” query the link carrier detection status. is the link actually there or not. πŸ’…
  • --get-link-settings β€” query ethernet card properties such as speed, autoneg, transceiver, port, supported and advertising link modes.
  • --get-features, --get-offload β€” query status of NIC protocol offload and other features.
  • --get-wake-on-lan, --get-wol β€” query wake-on-lan settings. 😴
  • --get-eee β€” query NIC support of Energy-Efficient Ethernet as per IEEE 802.3az specifications. eco queen 🌱
  • --get-ring β€” query NIC driver's rx/tx queue size.
  • --get-channels β€” query NIC's multi-queue settings.
  • --get-coalesce β€” query interrupt rate information for a NIC.
  • --set-priv-flags <priv-flags> <on|off> β€” enable/disable private flags defined by the NIC driver.
# wicked ethtool eth0 --set-priv-flags disable-tpe-recovery on
πŸ“ note: private flags are NIC driver specific. the flag in the example above was tested on Emulex OneConnect NIC.
  • --set-link-settings <setting-name> <value> β€” configure NIC's link related settings. and here come the settings, one by one:
    • autoneg <on|off> β€” enable or disable autonegotiation. with disabled autonegotiation, the speed and duplex can be used to set a fixed link mode.

with enabled autonegotiation, the speed and duplex are read-only and the advertise parameter can be used to specify an explicit set of supported modes to advertise. alternatively, wicked can create the advertise set using speed and duplex to filter known supported modes.

to disable autonegotiation and use a fixed link mode:

# wicked ethtool eth0 --set-link-settings autoneg off speed 1000 duplex full

to enable autonegotiation and limit/filter advertised modes by speed and duplex:

# wicked ethtool eth0 --set-link-settings autoneg on speed 1000 duplex full
  • advertise <mode,...> β€” set a specific set of comma separated speed modes to advertise in autonegotiation:
# wicked ethtool eth0 --set-link-settings autoneg on advertise 100baseT-Half,100baseT-Full

or as hex number list or bitmask, e.g. for modes without a known name:

# wicked ethtool eth0 --set-link-settings autoneg on advertise 0x60000,0x800000

to query the list of supported mode names for a specific interface, use:

# wicked ethtool eth0 --get-link-setting
  • speed <N> β€” set a fixed link speed in Mb/s while disabled autonegotiation or limit/filter supported autonegotiation advertise modes by desired speed and duplex.
  • duplex <half|full> β€” set a fixed duplex mode while disabled autonegotiation or limit/filter supported autonegotiation advertise modes by desired speed and duplex.
  • port <TP|AUI|BNC|MII|DA|Fibre|Other> β€” set port type of the NIC:
# wicked ethtool eth0 --set-link-settings speed port TP
  • mdix <mdi|mdi-x|auto-mdi|auto-mdi-x> β€” set mdi type for a port:
# wicked ethtool eth1 --set-link-settings mdix auto-mdi-x
  • phy-address <0-255> β€” configure MDIO address of PHY:
# wicked ethtool eth0 --set-link-settings phy-address 0
  • transceiver <internal|external> β€” configure transceiver type:
# wicked ethtool eth0 --set-link-settings transceiver internal
  • --set-features <feature-name on|off> β€” enable or disable device specific protocol offload and feature settings:
# wicked ethtool eth0 --set-features rx-gro on
  • --set-eee β€” configure eee related settings:
    • eee <on|off> β€” enable/disable eee settings:
# wicked ethtool eth0 --set-eee eee on
  • tx-lpi <on|off> β€” configure tx low power idle settings:
# wicked ethtool eth0 --set-eee tx-lpi on
  • tx-timer <N> β€” set interface (in microseconds) delays prior to asserting its tx lpi:
# wicked ethtool eth0 --set-eee tx-timer 100
  • advertise <mode,...> β€” configure speeds for which the device should advertise EEE capabilities:
# wicked ethtool eth0 --set-eee advertise 100baseT-Half,100baseT-Full
  • --set-channels <rx|tx|other|combined> <N> β€” configure rx/tx queue use by the NIC:
# wicked ethtool eth0 --set-channels combined 4
  • --set-ring <rx|tx|rx-jumbo|rx-mini> <N> β€” configure rx/tx queue size use by the NIC:
# wicked ethtool eth0 --set-ring rx 2
  • --set-coalesce <coalesce-name> <on|off|N> β€” configure interrupts rate settings of NIC:
# wicked ethtool eth0 --set-coalesce rx-usecs 10
# wicked ethtool eth0 --set-coalesce  adaptive-rx on
  • --set-wol β€” configure wake-on-lan settings:
    • options <list of options with or without comma-separated >
# wicked ethtool eth1 --set-wol options pumba
# wicked ethtool eth1 --set-wol options p,u,m,b,a
# wicked ethtool eth0 --set-wol options phy,unicast,multicast,broadcast,magic
  • sopass <a colon-separated bytes in hex> β€” set the SecureOnβ„’ password:
# wicked ethtool eth0 --set-wol sopass 02:42:ca:66:ce:a8

Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. πŸ’œ


πŸ› BUGS πŸ›

found a bug? please report bugs as described at <https://bugs.opensuse.org>. don't suffer in silence bestie, tell the maintainers. πŸ™ˆ


πŸ¦‹ AUTHORS πŸ¦‹

Nirmoy Das


🌈 SEE ALSO 🌈

ifcfg(5), routes(5), wicked(8), ifcfg-wireless(5), ifcfg-tunnel(5), ifcfg-vlan(5), ifcfg-bonding(5),


okay that's the whole thing, you ate that fr fr πŸŽ€βœ¨ this was wicked (the manual, section 8), born June 2018 β€” go configure something and slay πŸ’…πŸŒΈ