.\" -*- nroff -*-
.\" Copyright 1999 by David S. Miller.  All Rights Reserved.
.\" Portions Copyright 2001 Sun Microsystems
.\" Portions Copyright 2007, 2009 Free Software Foundation, Inc.
.\" This file may be copied under the terms of the GNU Public License.
.\" 
.\" There must be no text lines before .TH.  Use '.' for vertical spacing.
.\"
.\"	.An - list of n alternative values as in "flav vanilla|strawberry"
.\"
.de A1
\\fB\\$1\\fP|\\fB\\$2\\fP
..
.de A2
\\fB\\$1\\fP\ \\fB\\$2\\fP|\\fB\\$3\\fP
..
.de A3
\\fB\\$1\\fP\ \\fB\\$2\\fP|\\fB\\$3\\fP|\\fB\\$4\\fP
..
.de A4
\\fB\\$1\\fP\ \\fB\\$2\\fP|\\fB\\$3\\fP|\\fB\\$4\\fP|\\fB\\$5\\fP
..
.\" 
.\"	.Bn - same as above but framed by square brackets
.\"
.de B1
[\\fB\\$1\\fP|\\fB\\$2\\fP]
..
.de B2
[\\fB\\$1\\fP\ \\fB\\$2\\fP|\\fB\\$3\\fP]
..
.de B3
[\\fB\\$1\\fP\ \\fB\\$2\\fP|\\fB\\$3\\fP|\\fB\\$4\\fP]
..
.de B4
[\\fB\\$1\\fP\ \\fB\\$2\\fP|\\fB\\$3\\fP|\\fB\\$4\\fP|\\fB\\$5\\fP]
..
.\"
.\"	.BN - value with a numeric input as in "[value N]"
.\"
.de BN
[\\fB\\$1\\fP\ \\fIN\\fP]
..
.\"
.\"	.BM - same as above but has a mask field for format "[value N [m N]]"
.\"
.de BM
[\\fB\\$1\\fP\ \\fIN\\fP\ [\\fBm\\fP\ \\fIN\\fP]]
..
.\"
.\"	\(*MA - mac address
.\"
.ds MA \fIxx\fP\fB:\fP\fIyy\fP\fB:\fP\fIzz\fP\fB:\fP\fIaa\fP\fB:\fP\fIbb\fP\fB:\fP\fIcc\fP
.\"
.\"	\(*MS - master-slave property
.\"
.ds MS \fBpreferred-master\fP|\fBpreferred-slave\fP|\fBforced-master\fP|\fBforced-slave\fP
.\"
.\"	\(*PA - IP address
.\"
.ds PA \fIip-address\fP
.\"
.\"	\(*WO - wol flags
.\"
.ds WO \fBp\fP|\fBu\fP|\fBm\fP|\fBb\fP|\fBa\fP|\fBg\fP|\fBs\fP|\fBf|\fBd\fP...
.\"
.\"	\(*FL - flow type values
.\"
.ds FL \fBtcp4\fP|\fBudp4\fP|\fBah4\fP|\fBesp4\fP|\fBsctp4\fP|\fBtcp6\fP|\fBudp6\fP|\fBah6\fP|\fBesp6\fP|\fBsctp6\fP
.\"
.\"	\(*HO - hash options
.\"
.ds HO \fBm\fP|\fBv\fP|\fBt\fP|\fBs\fP|\fBd\fP|\fBf\fP|\fBn\fP|\fBr\fP...
.\"
.\"	\(*SD - Self-diag test values
.\"
.ds SD \fBoffline\fP|\fBonline\fP|\fBexternal_lb\fP
.\"
.\"	\(*NC - Network Classifier type values
.\"
.ds NC \fBether\fP|\fBip4\fP|\fBtcp4\fP|\fBudp4\fP|\fBsctp4\fP|\fBah4\fP|\fBesp4\fP|\fBip6\fP|\fBtcp6\fP|\fBudp6\fP|\fBah6\fP|\fBesp6\fP|\fBsctp6\fP
.
.\"
.\" Start URL.
.de UR
.  ds m1 \\$1\"
.  nh
.  if \\n(mH \{\
.    \" Start diversion in a new environment.
.    do ev URL-div
.    do di URL-div
.  \}
..
.\" End URL.
.de UE
.  ie \\n(mH \{\
.    br
.    di
.    ev
.
.    \" Has there been one or more input lines for the link text?
.    ie \\n(dn \{\
.      do HTML-NS "<a href=""\\*(m1"">"
.      \" Yes, strip off final newline of diversion and emit it.
.      do chop URL-div
.      do URL-div
\c
.      do HTML-NS </a>
.    \}
.    el \
.      do HTML-NS "<a href=""\\*(m1"">\\*(m1</a>"
\&\\$*\"
.  \}
.  el \
\\*(la\\*(m1\\*(ra\\$*\"
.
.  hy \\n(HY
..
.
.TH ETHTOOL 8 "October 2024" "Ethtool version @VERSION@"
.SH NAME
ethtool \- query or control network driver and hardware settings
.
.SH SYNOPSIS
.\" Do not adjust lines (i.e. left justification) and do not hyphenate.
.na
.nh
.HP
.B ethtool
.I devname
.HP
.B ethtool \-h|\-\-help
.HP
.B ethtool \-\-version
.HP
.B ethtool
.BN --debug
.I args
.HP
.B ethtool [--disable-netlink]
.I args
.HP
.B ethtool [--json]
.I args
.HP
.B ethtool [-I | --include-statistics]
.I args
.HP
.B ethtool
.BN --phy
.I args
.HP
.B ethtool \-\-monitor
[
.I command
] [
.I devname
]
.HP
.B ethtool \-a|\-\-show\-pause
.I devname
.HP
.B ethtool \-A|\-\-pause
.I devname
.B2 autoneg on off
.B2 rx on off
.B2 tx on off
.HP
.B ethtool \-c|\-\-show\-coalesce
.I devname
.HP
.B ethtool \-C|\-\-coalesce
.I devname
.B2 adaptive\-rx on off
.B2 adaptive\-tx on off
.BN rx\-usecs
.BN rx\-frames
.BN rx\-usecs\-irq
.BN rx\-frames\-irq
.BN tx\-usecs
.BN tx\-frames
.BN tx\-usecs\-irq
.BN tx\-frames\-irq
.BN stats\-block\-usecs
.BN pkt\-rate\-low
.BN rx\-usecs\-low
.BN rx\-frames\-low
.BN tx\-usecs\-low
.BN tx\-frames\-low
.BN pkt\-rate\-high
.BN rx\-usecs\-high
.BN rx\-frames\-high
.BN tx\-usecs\-high
.BN tx\-frames\-high
.BN sample\-interval
.B2 cqe\-mode\-rx on off
.B2 cqe\-mode\-tx on off
.BN tx\-aggr\-max\-bytes
.BN tx\-aggr\-max\-frames
.BN tx\-aggr\-time\-usecs
.HP
.B ethtool \-g|\-\-show\-ring
.I devname
.HP
.B ethtool \-G|\-\-set\-ring
.I devname
.BN rx
.BN rx\-mini
.BN rx\-jumbo
.BN tx
.BN rx\-buf\-len
.B3 tcp\-data\-split auto on off
.BN cqe\-size
.BN tx\-push
.BN rx\-push
.BN tx\-push\-buf\-len
.HP
.B ethtool \-i|\-\-driver
.I devname
.HP
.B ethtool \-d|\-\-register\-dump
.I devname
.B2 raw on off
.B2 hex on off
.RB [ file 
.IR name ]
.HP
.B ethtool \-e|\-\-eeprom\-dump
.I devname
.B2 raw on off
.BN offset
.BN length
.HP
.B ethtool \-E|\-\-change\-eeprom
.I devname
.BN magic
.BN offset
.BN length
.BN value
.HP
.B ethtool \-k|\-\-show\-features|\-\-show\-offload
.I devname
.HP
.B ethtool \-K|\-\-features|\-\-offload
.I devname feature
.A1 on off
.RB ...
.HP
.B ethtool \-p|\-\-identify
.I devname
.RI [ N ]
.HP
.B ethtool \-P|\-\-show\-permaddr
.I devname
.HP
.B ethtool \-r|\-\-negotiate
.I devname
.HP
.B ethtool \-S|\-\-statistics
.I devname
.RB [\fB\-\-all\-groups\fP|\fB\-\-groups
.RB [\fBeth\-phy\fP]
.RB [\fBeth\-mac\fP]
.RB [\fBeth\-ctrl\fP]
.RB [\fBrmon\fP]
.RB ]
.HP
.B ethtool \-\-phy\-statistics
.I devname
.HP
.B ethtool \-t|\-\-test
.I devname
.RI [\*(SD]
.HP
.B ethtool \-s
.I devname
.BN speed
.BN lanes
.B2 duplex half full
.B4 port tp aui bnc mii fibre da
.B3 mdix auto on off
.B2 autoneg on off
.RB [ advertise \ \fIN\fP[\fB/\fP\fIM\fP]
|
.BI advertise \ mode
.A1 on off
.RB ...]
.BN phyad
.B2 xcvr internal external
.RB [ wol \ \fIN\fP[\fB/\fP\fIM\fP]
.RB | \ wol \ \*(WO]
.RB [ sopass \ \*(MA]
.RB [ master-slave \ \*(MS]
.RB [ msglvl
.IR N\fP[/\fIM\fP] \ |
.BI msglvl \ type
.A1 on off
.RB ...]
.HP
.B ethtool \-n|\-u|\-\-show\-nfc|\-\-show\-ntuple
.I devname
.RB [\  rx\-flow\-hash \ \*(FL \ |
.br
.BI rule \ N
.RB ]
.HP
.B ethtool \-N|\-U|\-\-config\-nfc|\-\-config\-ntuple
.I devname
.BR rx\-flow\-hash \ \*(FL \ \: \*(HO \ |
.br
.B flow\-type \*(NC
.RB [ src \ \*(MA\ [ m \ \*(MA]]
.RB [ dst \ \*(MA\ [ m \ \*(MA]]
.BM proto
.RB [ src\-ip \ \*(PA\ [ m \ \*(PA]]
.RB [ dst\-ip \ \*(PA\ [ m \ \*(PA]]
.BM tos
.BM tclass
.BM l4proto
.BM src\-port
.BM dst\-port
.BM spi
.BM l4data
.BM vlan\-etype
.BM vlan
.BM user\-def
.RB [ dst-mac \ \*(MA\ [ m \ \*(MA]]
.BN action
.BN context
.BN loc
.RB |
.br
.BI delete \ N
.HP
.B ethtool \-w|\-\-get\-dump
.I devname
.RB [ data
.IR filename ]
.HP
.B ethtool\ \-W|\-\-set\-dump
.I devname N
.HP
.B ethtool \-T|\-\-show\-time\-stamping
.I devname
.HP
.B ethtool \-x|\-\-show\-rxfh\-indir|\-\-show\-rxfh
.I devname
.HP
.B ethtool \-X|\-\-set\-rxfh\-indir|\-\-rxfh
.I devname
.RB [ hkey \ \*(MA:\...]
.RB [ start
.IR N ]
.RB [\  equal
.IR N \ |
.BI weight\  W0
.IR W1
.RB ...\ | \ default \ ]
.RB [ hfunc
.IR FUNC ]
.B2 xfrm symmetric-xor none
.RB [ context
.I CTX
.RB |\  new ]
.RB [ delete ]
.HP
.B ethtool \-f|\-\-flash
.I devname file
.RI [ N ]
.HP
.B ethtool \-l|\-\-show\-channels
.I devname
.HP
.B ethtool \-L|\-\-set\-channels
.I devname
.BN rx
.BN tx
.BN other
.BN combined
.HP
.B ethtool \-m|\-\-dump\-module\-eeprom|\-\-module\-info
.I devname
.B2 raw on off
.B2 hex on off
.BN offset
.BN length
.BN page
.BN bank
.BN i2c
.HP
.B ethtool \-\-show\-priv\-flags
.I devname
.HP
.B ethtool \-\-set\-priv\-flags
.I devname flag
.A1 on off
.RB ...
.HP
.B ethtool \-\-show\-eee
.I devname
.HP
.B ethtool \-\-set\-eee
.I devname
.B2 eee on off
.B2 tx-lpi on off
.BN tx-timer
.BN advertise
.HP
.B ethtool \-\-set\-phy\-tunable
.I devname
.RB [
.B downshift
.A1 on off
.BN count
.RB ]
.RB [
.B fast\-link\-down
.A1 on off
.BN msecs
.RB ]
.RB [
.B energy\-detect\-power\-down
.A1 on off
.BN msecs
.RB ]
.HP
.B ethtool \-\-get\-phy\-tunable
.I devname
.RB [ downshift ]
.RB [ fast-link-down ]
.RB [ energy-detect-power-down ]
.HP
.B ethtool \-\-get\-tunable
.I devname
.RB [ rx-copybreak ]
.RB [ tx-copybreak ]
.RB [ tx-buf-size ]
.RB [ pfc-prevention-tout ]
.HP
.B ethtool \-\-set\-tunable
.I devname
.BN rx\-copybreak
.BN tx\-copybreak
.BN tx\-buf\-size
.BN pfc\-prevention\-tout
.HP
.B ethtool \-\-reset
.I devname
.BN flags
.RB [ mgmt ]
.RB [ mgmt-shared ]
.RB [ irq ]
.RB [ irq-shared ]
.RB [ dma ]
.RB [ dma-shared ]
.RB [ filter ]
.RB [ filter-shared ]
.RB [ offload ]
.RB [ offload-shared ]
.RB [ mac ]
.RB [ mac-shared ]
.RB [ phy ]
.RB [ phy-shared ]
.RB [ ram ]
.RB [ ram-shared ]
.RB [ ap ]
.RB [ ap-shared ]
.RB [ dedicated ]
.RB [ all ]
.HP
.B ethtool \-\-show\-fec
.I devname
.HP
.B ethtool \-\-set\-fec
.I devname
.B encoding
.BR auto | off | rs | baser | llrs \ [...]
.HP
.B ethtool \-Q|\-\-per\-queue
.I devname
.RB [ queue_mask
.IR %x ]
.I sub_command
.RB ...
.HP
.B ethtool \-\-cable\-test
.I devname
.HP
.B ethtool \-\-cable\-test\-tdr
.I devname
.BN first N
.BN last N
.BN step N
.BN pair N
.HP
.B ethtool \-\-show\-tunnels
.I devname
.HP
.B ethtool \-\-show\-module
.I devname
.HP
.B ethtool \-\-set\-module
.I devname
.RB [ power\-mode\-policy
.BR high | auto ]
.HP
.B ethtool \-\-get\-plca\-cfg
.I devname
.HP
.B ethtool \-\-set\-plca\-cfg
.I devname
.RB [ enable
.BR on | off ]
.BN node\-id N
.BN node\-cnt N
.BN to\-tmr N
.BN burst\-cnt N
.BN burst\-tmr N
.HP
.B ethtool \-\-get\-plca\-status
.I devname
.HP
.B ethtool \-\-show\-mm
.I devname
.HP
.B ethtool \-\-set\-mm
.I devname
.RB [ verify\-enabled
.BR on | off ]
.RB [ verify\-time
.BR N ]
.RB [ tx\-enabled
.BR on | off ]
.RB [ pmac\-enabled
.BR on | off ]
.RB [ tx\-min\-frag\-size
.BR N ]
.HP
.B ethtool \-\-show\-pse
.I devname
.HP
.B ethtool \-\-set\-pse
.I devname
.RB [ podl\-pse\-admin\-control
.BR enable | disable ]
.RB [ c33\-pse\-admin\-control
.BR enable | disable ]
.BN c33\-pse\-avail\-pw\-limit N
.HP
.B ethtool \-\-flash\-module\-firmware
.I devname
.BI file
.IR FILE
.RB [ pass
.IR PASS ]
.HP
.B ethtool \-\-show\-phys
.I devname
.
.\" Adjust lines (i.e. full justification) and hyphenate.
.ad
.hy

.SH DESCRIPTION
.BI ethtool
is used to query and control network device driver and hardware
settings, particularly for wired Ethernet devices.

.I devname
is the name of the network device on which ethtool should operate.

.SH OPTIONS
.B ethtool
with a single argument specifying the device name prints current
settings of the specified device.
.TP
.B \-h \-\-help
Shows a short help message.
.TP
.B \-\-version
Shows the ethtool version number.
.TP
.BI \-\-debug \ N
Turns on debugging messages. Argument is interpreted as a mask:
.TS
nokeep;
lB	l.
0x01  Parser information
0x02  Summary of netlink messages
0x04  Hex dump of sent netlink messages
0x08  Hex dump of received netlink messages
0x10  Structure of netlink messages
.TE
.TP
.BI \-\-disable-netlink
Do not use netlink and fall back to the ioctl interface if possible.
.TP
.BI \-\-json
Output results in JavaScript Object Notation (JSON). Only a subset of
options support this. Those which do not will continue to output
plain text in the presence of this option.
.TP
.B \-I \-\-include\-statistics
Include command-related statistics in the output. This option allows
displaying relevant device statistics for selected get commands.
.TP
.BI \-\-phy \ N
Target a PHY within the interface. The PHY index can be retrieved with
.B \-\-show\-phys. PHY index 0 targets the phy device directly attached to
the ethernet MAC, if any.
The following commands can accept a PHY index:
.TS
nokeep;
lB	l.
\-\-cable\-test
\-\-cable\-test\-tdr
\-\-get\-plca\-cfg
\-\-set\-plca\-cfg
\-\-get\-plca\-status
\-\-show-pse
\-\-set-pse
.TE
.TP
.B \-a \-\-show\-pause
Queries the specified Ethernet device for pause parameter information.
.RS 4
.TP
.A3 \fB\-\-src \fBaggregate\fP \fBemac\fP \fBpmac\fP
If the MAC Merge layer is supported, request a particular source of device
statistics (eMAC or pMAC, or their aggregate). Only valid if ethtool was
invoked with the
.B \-I \-\-include\-statistics
argument.
.RE
.TP
.B \-A \-\-pause
Changes the pause parameters of the specified Ethernet device.
.RS 4
.TP
.A2 autoneg on off
Specifies whether pause autonegotiation should be enabled.
.TP
.A2 rx on off
Specifies whether RX pause should be enabled.
.TP
.A2 tx on off
Specifies whether TX pause should be enabled.
.RE
.TP
.B \-c \-\-show\-coalesce
Queries the specified network device for coalescing information.
.TP
.B \-C \-\-coalesce
Changes the coalescing settings of the specified network device.
.TP
.B \-g \-\-show\-ring
Queries the specified network device for rx/tx ring parameter information.
.TP
.B \-G \-\-set\-ring
Changes the rx/tx ring parameters of the specified network device.
.RS 4
.TP
.BI rx \ N
Changes the number of ring entries for the Rx ring.
.TP
.BI rx\-mini \ N
Changes the number of ring entries for the Rx Mini ring.
.TP
.BI rx\-jumbo \ N
Changes the number of ring entries for the Rx Jumbo ring.
.TP
.BI tx \ N
Changes the number of ring entries for the Tx ring.
.TP
.BI rx\-buf\-len \ N
Changes the size of a buffer in the Rx ring.
.TP
.BI tcp\-data\-split \ auto|on|off
Specifies the state of TCP data split.
.TP
.BI cqe\-size \ N
Changes the size of completion queue event.
.TP
.BI tx\-push \ on|off
Specifies whether TX push should be enabled.
.TP
.BI rx\-push \ on|off
Specifies whether RX push should be enabled.
.TP
.BI tx\-push\-buf\-len \ N
Specifies the maximum number of bytes of a transmitted packet a driver can push
directly to the underlying device
.RE
.TP
.B \-i \-\-driver
Queries the specified network device for associated driver information.
.TP
.B \-d \-\-register\-dump
Retrieves and prints a register dump for the specified network device.
The register format for some devices is known and decoded others
are printed in hex.
When 
.I raw 
is enabled, then ethtool dumps the raw register data to stdout.
If
.I file
is specified, then use contents of previous raw register dump, rather
than reading from the device.
.TP
.B \-e \-\-eeprom\-dump
Retrieves and prints an EEPROM dump for the specified network device.
When raw is enabled, then it dumps the raw EEPROM data to stdout. The
length and offset parameters allow dumping certain portions of the EEPROM.
Default is to dump the entire EEPROM.
.RS 4
.TP
.BI raw \ on|off
.TP
.BI offset \ N
.TP
.BI length \ N
.RE
.TP
.B \-E \-\-change\-eeprom
If value is specified, changes EEPROM byte for the specified network device.
offset and value specify which byte and it's new value. If value is not
specified, stdin is read and written to the EEPROM. The length and offset
parameters allow writing to certain portions of the EEPROM.
Because of the persistent nature of writing to the EEPROM, a device-specific
magic key must be specified to prevent the accidental writing to the EEPROM.
.TP
.B \-k \-\-show\-features \-\-show\-offload
Queries the specified network device for the state of protocol
offload and other features.
.TP
.B \-K \-\-features \-\-offload
Changes the offload parameters and other features of the specified
network device.  The following feature names are built-in and others
may be defined by the kernel.
.RS 4
.TP
.A2 rx on off
Specifies whether RX checksumming should be enabled.
.TP
.A2 tx on off
Specifies whether TX checksumming should be enabled.
.TP
.A2 sg on off
Specifies whether scatter-gather should be enabled.
.TP
.A2 tso on off
Specifies whether TCP segmentation offload should be enabled.
.TP
.A2 ufo on off
Specifies whether UDP fragmentation offload should be enabled 
.TP
.A2 gso on off
Specifies whether generic segmentation offload should be enabled 
.TP
.A2 gro on off
Specifies whether generic receive offload should be enabled
.TP
.A2 lro on off
Specifies whether large receive offload should be enabled
.TP
.A2 rxvlan on off
Specifies whether RX VLAN acceleration should be enabled
.TP
.A2 txvlan on off
Specifies whether TX VLAN acceleration should be enabled
.TP
.A2 ntuple on off
Specifies whether Rx ntuple filters and actions should be enabled
.TP
.A2 rxhash on off
Specifies whether receive hashing offload should be enabled
.RE
.TP
.B \-p \-\-identify
Initiates adapter-specific action intended to enable an operator to
easily identify the adapter by sight.  Typically this involves
blinking one or more LEDs on the specific network port.
.RS 4
.TP
.BN
Length of time to perform phys-id, in seconds.
.RE
.TP
.B \-P \-\-show\-permaddr
Queries the specified network device for permanent hardware address.
.TP
.B \-r \-\-negotiate
Restarts auto-negotiation on the specified Ethernet device, if
auto-negotiation is enabled.
.TP
.B \-S \-\-statistics
Queries the specified network device for standard (IEEE, IETF, etc.), or NIC-
and driver-specific statistics. NIC- and driver-specific statistics are
requested when no group of statistics is specified.

NIC- and driver-specific statistics and standard statistics are independent,
devices may implement either, both or none. There is little commonality between
naming of NIC- and driver-specific statistics across vendors.
.RS 4
.TP
.B \fB\-\-all\-groups
.TP
.B \fB\-\-groups [\fBeth\-phy\fP] [\fBeth\-mac\fP] [\fBeth\-ctrl\fP] [\fBrmon\fP]
Request groups of standard device statistics.
.TP
.A3 \fB\-\-src \fBaggregate\fP \fBemac\fP \fBpmac\fP
If the MAC Merge layer is supported, request a particular source of device
statistics (eMAC or pMAC, or their aggregate).
.RE
.TP
.B \-\-phy\-statistics
Queries the specified network device for PHY specific statistics.
.TP
.B \-t \-\-test
Executes adapter selftest on the specified network device. Possible test modes are:
.RS 4
.TP
.B offline
Perform full set of tests, possibly interrupting normal operation
during the tests,
.TP
.B online
Perform limited set of tests, not interrupting normal operation,
.TP
.B external_lb
Perform full set of tests, as for \fBoffline\fR, and additionally an
external-loopback test.
.RE
.TP
.B \-s \-\-change
Allows changing some or all settings of the specified network device.
All following options only apply if
.B \-s
was specified.
.RS 4
.TP
.BI speed \ N
Set speed in Mb/s.
.B ethtool
with just the device name as an argument will show you the supported device speeds.
.TP
.BI lanes \ N
Set number of lanes.
.TP
.A2 duplex half full
Sets full or half duplex mode.
.TP
.A4 port tp aui bnc mii fibre da
Selects device port.
.TP
.BR master-slave \ \*(MS
Configure MASTER/SLAVE role of the PHY. When the PHY is configured as MASTER,
the PMA Transmit function shall source TX_TCLK from a local clock source. When
configured as SLAVE, the PMA Transmit function shall source TX_TCLK from the
clock recovered from data stream provided by MASTER. Not all devices support this.
.TS
nokeep;
lB	l.
preferred-master	Prefer MASTER role on autonegotiation
preferred-slave	Prefer SLAVE role on autonegotiation
forced-master	Force the PHY in MASTER role. Can be used without autonegotiation
forced-slave	Force the PHY in SLAVE role. Can be used without autonegotiation
.TE
.TP
.A3 mdix auto on off
Selects MDI-X mode for port. May be used to override the automatic
detection feature of most adapters. An argument of \fBauto\fR means
automatic detection of MDI status, \fBon\fR forces MDI-X (crossover)
mode, while \fBoff\fR means MDI (straight through) mode.  The driver
should guarantee that this command takes effect immediately, and if
necessary may reset the link to cause the change to take effect.
.TP
.A2 autoneg on off
Specifies whether autonegotiation should be enabled. Autonegotiation 
is enabled by default, but in some network devices may have trouble
with it, so you can disable it if really necessary. 
.TP
.BI advertise \ N
Sets the speed and duplex advertised by autonegotiation.  The argument is
a hexadecimal value using one or a combination of the following values:
.TS
nokeep;
lB	l	lB.
0x001	10baseT Half
0x002	10baseT Full
0x100000000000000000000000	10baseT1L Full
0x8000000000000000000000000	10baseT1S Full
0x10000000000000000000000000	10baseT1S Half
0x20000000000000000000000000	10baseT1S_P2MP Half
0x40000000000000000000000000	10baseT1BRR Full
0x004	100baseT Half
0x008	100baseT Full
0x80000000000000000	100baseT1 Full
0x40000000000000000000000	100baseFX Half
0x80000000000000000000000	100baseFX Full
0x010	1000baseT Half	(not supported by IEEE standards)
0x020	1000baseT Full
0x20000	1000baseKX Full
0x20000000000	1000baseX Full
0x100000000000000000	1000baseT1 Full
0x8000	2500baseX Full	(not supported by IEEE standards)
0x800000000000	2500baseT Full
0x1000000000000	5000baseT Full
0x1000	10000baseT Full
0x40000	10000baseKX4 Full
0x80000	10000baseKR Full
0x100000	10000baseR_FEC
0x40000000000	10000baseCR Full
0x80000000000	10000baseSR Full
0x100000000000	10000baseLR Full
0x200000000000	10000baseLRM Full
0x400000000000	10000baseER Full
0x200000	20000baseMLD2 Full	(not supported by IEEE standards)
0x400000	20000baseKR2 Full	(not supported by IEEE standards)
0x80000000	25000baseCR Full
0x100000000	25000baseKR Full
0x200000000	25000baseSR Full
0x800000	40000baseKR4 Full
0x1000000	40000baseCR4 Full
0x2000000	40000baseSR4 Full
0x4000000	40000baseLR4 Full
0x400000000	50000baseCR2 Full
0x800000000	50000baseKR2 Full
0x10000000000	50000baseSR2 Full
0x10000000000000	50000baseKR Full
0x20000000000000	50000baseSR Full
0x40000000000000	50000baseCR Full
0x80000000000000	50000baseLR_ER_FR Full
0x100000000000000	50000baseDR Full
0x8000000	56000baseKR4 Full
0x10000000	56000baseCR4 Full
0x20000000	56000baseSR4 Full
0x40000000	56000baseLR4 Full
0x1000000000	100000baseKR4 Full
0x2000000000	100000baseSR4 Full
0x4000000000	100000baseCR4 Full
0x8000000000	100000baseLR4_ER4 Full
0x200000000000000	100000baseKR2 Full
0x400000000000000	100000baseSR2 Full
0x800000000000000	100000baseCR2 Full
0x1000000000000000	100000baseLR2_ER2_FR2 Full
0x2000000000000000	100000baseDR2 Full
0x8000000000000000000	100000baseKR Full
0x10000000000000000000	100000baseSR Full
0x20000000000000000000	100000baseLR_ER_FR Full
0x40000000000000000000	100000baseCR Full
0x80000000000000000000	100000baseDR Full
0x4000000000000000	200000baseKR4 Full
0x8000000000000000	200000baseSR4 Full
0x10000000000000000	200000baseLR4_ER4_FR4 Full
0x20000000000000000	200000baseDR4 Full
0x40000000000000000	200000baseCR4 Full
0x100000000000000000000	200000baseKR2 Full
0x200000000000000000000	200000baseSR2 Full
0x400000000000000000000	200000baseLR2_ER2_FR2 Full
0x800000000000000000000	200000baseDR2 Full
0x1000000000000000000000	200000baseCR2 Full
0x200000000000000000	400000baseKR8 Full
0x400000000000000000	400000baseSR8 Full
0x800000000000000000	400000baseLR8_ER8_FR8 Full
0x1000000000000000000	400000baseDR8 Full
0x2000000000000000000	400000baseCR8 Full
0x2000000000000000000000	400000baseKR4 Full
0x4000000000000000000000	400000baseSR4 Full
0x8000000000000000000000	400000baseLR4_ER4_FR4 Full
0x10000000000000000000000	400000baseDR4 Full
0x20000000000000000000000	400000baseCR4 Full
0x200000000000000000000000	800000baseCR8 Full
0x400000000000000000000000	800000baseKR8 Full
0x800000000000000000000000	800000baseDR8 Full
0x1000000000000000000000000	800000baseDR8_2 Full
0x2000000000000000000000000	800000baseSR8 Full
0x4000000000000000000000000	800000baseVR8 Full
.TE
.TP
.BI phyad \ N
PHY address.
.TP
.A2 xcvr internal external
Selects transceiver type. Currently only internal and external can be
specified, in the future further types might be added.
.TP
.BR wol \ \*(WO
Sets Wake-on-LAN options.  Not all devices support this.  The argument to 
this option is a string of characters specifying which options to enable.
.TS
nokeep;
lB	l.
p	Wake on PHY activity
u	Wake on unicast messages
m	Wake on multicast messages
b	Wake on broadcast messages
a	Wake on ARP
g	Wake on MagicPacket\[tm]
s	Enable SecureOn\[tm] password for MagicPacket\[tm]
f	Wake on filter(s)
d	T{
Disable (wake on nothing).  This option clears all previous options.
T}
.TE
.TP
.B sopass \*(MA
Sets the SecureOn\[tm] password.  The argument to this option must be 6
bytes in Ethernet MAC hex format (\*(MA).
.PP
.BI msglvl \ N
.br
.BI msglvl \ type
.A1 on off
.RB ...
.RS
Sets the driver message type flags by name or number. \fItype\fR
names the type of message to enable or disable; \fIN\fR specifies the
new flags numerically. The defined type names and numbers are:
.TS
nokeep;
lB	l	l.
drv	0x0001  General driver status
probe	0x0002  Hardware probing
link	0x0004  Link state
timer	0x0008  Periodic status check
ifdown	0x0010  Interface being brought down
ifup	0x0020  Interface being brought up
rx_err	0x0040  Receive error
tx_err	0x0080  Transmit error
tx_queued	0x0100  Transmit queueing
intr	0x0200  Interrupt handling
tx_done	0x0400  Transmit completion
rx_status	0x0800  Receive completion
pktdata	0x1000  Packet contents
hw	0x2000  Hardware status
wol	0x4000  Wake-on-LAN status
.TE
.PP
The precise meanings of these type flags differ between drivers.
.RE
.PD
.RE
.TP
.B \-n \-u \-\-show\-nfc \-\-show\-ntuple
Retrieves receive network flow classification options or rules.
.RS 4
.TP
.BR rx\-flow\-hash \ \*(FL
Retrieves the hash options for the specified flow type.
.TS
nokeep;
lB	l.
tcp4	TCP over IPv4
udp4	UDP over IPv4
ah4	IPSEC AH over IPv4
esp4	IPSEC ESP over IPv4
sctp4	SCTP over IPv4
tcp6	TCP over IPv6
udp6	UDP over IPv6
ah6	IPSEC AH over IPv6
esp6	IPSEC ESP over IPv6
sctp6	SCTP over IPv6
.TE
.TP
.BI rule \ N
Retrieves the RX classification rule with the given ID.
.RE
.PD
.RE
.TP
.B \-N \-U \-\-config\-nfc \-\-config\-ntuple
Configures receive network flow classification options or rules.
.RS 4
.TP
.BR rx\-flow\-hash \ \*(FL \: \*(HO
Configures the hash options for the specified flow type.
.TS
nokeep;
lB	l.
m	Hash on the Layer 2 destination address of the rx packet.
v	Hash on the VLAN tag of the rx packet.
t	Hash on the Layer 3 protocol field of the rx packet.
s	Hash on the IP source address of the rx packet.
d	Hash on the IP destination address of the rx packet.
f	Hash on bytes 0 and 1 of the Layer 4 header of the rx packet.
n	Hash on bytes 2 and 3 of the Layer 4 header of the rx packet.
r	T{
Discard all packets of this flow type. When this option is set, all
other options are ignored.
T}
.TE
.TP
.B flow\-type \*(NC
Inserts or updates a classification rule for the specified flow type.
.TS
nokeep;
lB	l.
ether	Ethernet
ip4	Raw IPv4
tcp4	TCP over IPv4
udp4	UDP over IPv4
sctp4	SCTP over IPv4
ah4	IPSEC AH over IPv4
esp4	IPSEC ESP over IPv4
ip6	Raw IPv6
tcp6	TCP over IPv6
udp6	UDP over IPv6
sctp6	SCTP over IPv6
ah6	IPSEC AH over IPv6
esp6	IPSEC ESP over IPv6
.TE
.PP
For all fields that allow both a value and a mask to be specified, the
mask may be specified immediately after the value using the \fBm\fR
keyword, or separately using the field name keyword with \fB-mask\fR
appended, e.g. \fBsrc-mask\fR.
.PD
.TP
.BR src \ \*(MA\ [ m \ \*(MA]
Includes the source MAC address, specified as 6 bytes in hexadecimal
separated by colons, along with an optional mask.  Valid only for
flow-type ether.
.TP
.BR dst \ \*(MA\ [ m \ \*(MA]
Includes the destination MAC address, specified as 6 bytes in hexadecimal
separated by colons, along with an optional mask.  Valid only for
flow-type ether.
.TP
.BI proto \ N \\fR\ [\\fPm \ N \\fR]\\fP
Includes the Ethernet protocol number (ethertype) and an optional mask.
Valid only for flow-type ether.
.TP
.BR src\-ip \ \*(PA\ [ m \ \*(PA]
Specify the source IP address of the incoming packet to match along with
an optional mask.  Valid for all IP based flow-types.
.TP
.BR dst\-ip \ \*(PA\ [ m \ \*(PA]
Specify the destination IP address of the incoming packet to match along
with an optional mask.  Valid for all IP based flow-types.
.TP
.BI tos \ N \\fR\ [\\fPm \ N \\fR]\\fP
Specify the value of the Type of Service field in the incoming packet to
match along with an optional mask.  Applies to all IPv4 based flow-types.
.TP
.BI tclass \ N \\fR\ [\\fPm \ N \\fR]\\fP
Specify the value of the Traffic Class field in the incoming packet to
match along with an optional mask.  Applies to all IPv6 based flow-types.
.TP
.BI l4proto \ N \\fR\ [\\fPm \ N \\fR]\\fP
Includes the layer 4 protocol number and optional mask.  Valid only for
flow-types ip4 and ip6.
.TP
.BI src\-port \ N \\fR\ [\\fPm \ N \\fR]\\fP
Specify the value of the source port field (applicable to TCP/UDP packets)
in the incoming packet to match along with an optional mask.  Valid for
flow-types ip4, tcp4, udp4, and sctp4 and their IPv6 equivalents.
.TP
.BI dst\-port \ N \\fR\ [\\fPm \ N \\fR]\\fP
Specify the value of the destination port field (applicable to TCP/UDP
packets)in the incoming packet to match along with an optional mask.
Valid for flow-types ip4, tcp4, udp4, and sctp4 and their IPv6 equivalents.
.TP
.BI spi \ N \\fR\ [\\fPm \ N \\fR]\\fP
Specify the value of the security parameter index field (applicable to
AH/ESP packets)in the incoming packet to match along with an optional
mask.  Valid for flow-types ip4, ah4, and esp4 and their IPv6 equivalents.
.TP
.BI l4data \ N \\fR\ [\\fPm \ N \\fR]\\fP
Specify the value of the first 4 Bytes of Layer 4 in the incoming packet to
match along with an optional mask.  Valid for ip4 and ip6 flow-types.
.TP
.BI vlan\-etype \ N \\fR\ [\\fPm \ N \\fR]\\fP
Includes the VLAN tag Ethertype and an optional mask.
.TP
.BI vlan \ N \\fR\ [\\fPm \ N \\fR]\\fP
Includes the VLAN tag and an optional mask.
.TP
.BI user\-def \ N \\fR\ [\\fPm \ N \\fR]\\fP
Includes 64-bits of user-specific data and an optional mask.
.TP
.BR dst-mac \ \*(MA\ [ m \ \*(MA]
Includes the destination MAC address, specified as 6 bytes in hexadecimal
separated by colons, along with an optional mask.
Valid for all IP based flow-types.
.TP
.BI action \ N
Specifies the Rx queue to send packets to, or some other action.
.TS
nokeep;
lB	l.
-1	Drop the matched flow
-2	Use the matched flow as a Wake-on-LAN filter
0 or higher	Rx queue to route the flow
.TE
.TP
.BI context \ N
Specifies the RSS context to spread packets over multiple queues; either
.B 0
for the default RSS context, or a value returned by
.BI ethtool\ -X\  ... \ context
.BR new .
If combined with
.BR action \ or\  queue ,
the Rx queue specified will be added to the value read from the RSS indirection
table to produce the actual Rx queue to deliver to.
.TP
.BI vf \ N
Specifies the Virtual Function the filter applies to. Not compatible with action.
.TP
.BI queue \ N
Specifies the Rx queue to send packets to. Not compatible with action.
.TP
.BI loc \ N
Specify the location/ID to insert the rule. This will overwrite
any rule present in that location and will not go through any
of the rule ordering process.
.TP
.BI delete \ N
Deletes the RX classification rule with the given ID.
.RE
.TP
.B \-w \-\-get\-dump
Retrieves and prints firmware dump for the specified network device.
By default, it prints out the dump flag, version and length of the dump data.
When
.I data
is indicated, then ethtool fetches the dump data and directs it to a
.I file.
.TP
.B \-W \-\-set\-dump
Sets the dump flag for the device.
.TP
.B \-T \-\-show\-time\-stamping
Show the device's time stamping capabilities and associated PTP
hardware clock.
.TP
.B \-x \-\-show\-rxfh\-indir \-\-show\-rxfh
Retrieves the receive flow hash indirection table and/or RSS hash key.
.TP
.B \-X \-\-set\-rxfh\-indir \-\-rxfh
Configures the receive flow hash indirection table and/or RSS hash key.
.RS 4
.TP
.BI hkey
Sets RSS hash key of the specified network device. RSS hash key should be of device supported length.
Hash key format must be in xx:yy:zz:aa:bb:cc format meaning both the nibbles of a byte should be mentioned
even if a nibble is zero.
.TP
.BI hfunc
Sets RSS hash function of the specified network device.
List of RSS hash functions which kernel supports is shown as a part of the --show-rxfh command output.
.TP
.BI xfrm
Sets the RSS input transformation. Currently, only the
.B symmetric-xor
transformation is supported where the NIC XORs the L3 and/or L4 source and
destination fields (as selected by
.B --config-nfc rx-flow-hash
) before passing them to the hash algorithm. The RSS hash function will
then yield the same hash for the other flow direction where the source and
destination fields are swapped (i.e. Symmetric RSS). Note that XORing the
input parameters reduces the entropy of the input set and the hash algorithm
could potentially be exploited. Switch off (default) by
.B xfrm none.
.TP
.BI start\  N
For the \fBequal\fR and \fBweight\fR options, sets the starting receive queue
for spreading flows to \fIN\fR.
.TP
.BI equal\  N
Sets the receive flow hash indirection table to spread flows evenly
between the first \fIN\fR receive queues.
.TP
\fBweight\fR \fIW0 W1\fR ...
Sets the receive flow hash indirection table to spread flows between
receive queues according to the given weights.  The sum of the weights
must be non-zero and must not exceed the size of the indirection table.
.TP
.BI default
Sets the receive flow hash indirection table to its default value.
.TP
\fBcontext \fICTX\fR | \fBnew\fR
Specifies an RSS context to act on; either
.B new
to allocate a new RSS context, or
.IR CTX ,
a value returned by a previous
.IB ... \ context
.BR new .
.TP
.B delete
Delete the specified RSS context.  May only be used in conjunction with
.B context
and a non-zero
.I CTX
value.
.RE
.TP
.B \-f \-\-flash
Write a firmware image to flash or other non-volatile memory on the
device.
.RS 4
.TP
.I file
Specifies the filename of the firmware image.  The firmware must first
be installed in one of the directories where the kernel firmware
loader or firmware agent will look, such as /lib/firmware.
.TP
.I N
If the device stores multiple firmware images in separate regions of
non-volatile memory, this parameter may be used to specify which
region is to be written.  The default is 0, requesting that all
regions are written.  All other values are driver-dependent.
.RE
.PD
.TP
.B \-l \-\-show\-channels
Queries the specified network device for the numbers of channels it has.
A channel is an IRQ and the set of queues that can trigger that IRQ.
.TP
.B \-L \-\-set\-channels
Changes the numbers of channels of the specified network device.
.RS 4
.TP
.BI rx \ N
Changes the number of channels with only receive queues.
.TP
.BI tx \ N
Changes the number of channels with only transmit queues.
.TP
.BI other \ N
Changes the number of channels used only for other purposes e.g. link interrupts or SR-IOV co-ordination.
.TP
.BI combined \ N
Changes the number of multi-purpose channels.
.RE
.TP
.B \-m \-\-dump\-module\-eeprom \-\-module\-info
Retrieves and if possible decodes the EEPROM from plugin modules, e.g SFP+, QSFP.
If the driver and module support it, the optical diagnostic information is also
read and decoded.
When either one of
.I page,
.I bank
or
.I i2c
parameters is specified, dumps only of a single page or its portion is
allowed. In such a case
.I offset
and
.I length
parameters are treated relatively to EEPROM page boundaries.
.TP
.B \-\-show\-priv\-flags
Queries the specified network device for its private flags.  The
names and meanings of private flags (if any) are defined by each
network device driver.
.TP
.B \-\-set\-priv\-flags
Sets the device's private flags as specified.
.RS 4
.PP
.I flag
.A1 on off
Sets the state of the named private flag.
.RE
.TP
.B \-\-show\-eee
Queries the specified network device for its support of Energy-Efficient
Ethernet (according to the IEEE 802.3az specifications)
.TP
.B \-\-set\-eee
Sets the device EEE behaviour.
.RS 4
.TP
.A2 eee on off
Enables/disables the device support of EEE.
.TP
.A2 tx-lpi on off
Determines whether the device should assert its Tx LPI.
.TP
.BI advertise \ N
Sets the speeds for which the device should advertise EEE capabilities.
Values are as for
.B \-\-change advertise
.TP
.BI tx-timer \ N
Sets the amount of time the device should stay in idle mode prior to asserting
its Tx LPI (in microseconds). This has meaning only when Tx LPI is enabled.
.RE
.TP
.B \-\-set\-phy\-tunable
Sets the PHY tunable parameters.
.RS 4
.TP
.A2 downshift on off
Specifies whether downshift should be enabled.
.TS
nokeep;
lB	l.
.BI count \ N
	Sets the PHY downshift re-tries count.
.TE
.TP
.A2 fast-link-down on off
Specifies whether Fast Link Down should be enabled and time until link down (if supported).
.TS
nokeep;
lB	l.
.BI msecs \ N
	Sets the period after which the link is reported as down. Note that the PHY may choose
	the closest supported value. Only on reading back the tunable do you get the actual value.
.TE
.TP
.A2 energy-detect-power-down on off
Specifies whether Energy Detect Power Down (EDPD) should be enabled (if supported).
This will put the RX and TX circuit blocks into a low power mode, and the PHY will
wake up periodically to send link pulses to avoid any lock-up situation with a peer
PHY that may also have EDPD enabled. By default, this setting will also enable the
periodic transmission of TX pulses.
.TS
nokeep;
lB	l.
.BI msecs \ N
	Some PHYs support configuration of the wake-up interval to send TX pulses.
	This setting allows the control of this interval, and 0 disables TX pulses
	if the PHY supports this. Disabling TX pulses can create a lock-up situation
	where neither of the PHYs wakes the other one. If unspecified the default
	value (in milliseconds) will be used by the PHY.
.TE
.TP
.PD
.RE
.TP
.B \-\-get\-phy\-tunable
Gets the PHY tunable parameters.
.RS 4
.TP
.B downshift
For operation in cabling environments that are incompatible with 1000BASE-T,
PHY device provides an automatic link speed downshift operation.
Link speed downshift after N failed 1000BASE-T auto-negotiation attempts.
Downshift is useful where cable does not have the 4 pairs instance.

Gets the PHY downshift count/status.
.TP
.B fast\-link\-down
Depending on the mode it may take 0.5s - 1s until a broken link is reported as down.
In certain use cases a link-down event needs to be reported as soon as possible.
Some PHYs support a Fast Link Down Feature and may allow configuration of the delay
before a broken link is reported as being down.

Gets the PHY Fast Link Down status / period.
.TP
.B energy\-detect\-power\-down
Gets the current configured setting for Energy Detect Power Down (if supported).

.RE
.TP
.B \-\-get\-tunable
Get the tunable parameters.
.RS 4
.TP
.B rx\-copybreak
Get the current rx copybreak value in bytes.
.TP
.B tx\-copybreak
Get the current tx copybreak value in bytes.
.TP
.B tx\-buf\-size
Get the current tx copybreak buffer size in bytes.
.TP
.B pfc\-prevention\-tout
Get the current pfc prevention timeout value in msecs.
.RE
.TP
.B \-\-set\-tunable
Set driver's tunable parameters.
.RS 4
.TP
.BI rx\-copybreak \ N
Set the rx copybreak value in bytes.
.TP
.BI tx\-copybreak \ N
Set the tx copybreak value in bytes.
.TP
.BI tx\-buf\-size \ N
Set the tx copybreak buffer size in bytes.
.TP
.BI pfc\-prevention\-tout \ N
Set pfc prevention timeout in msecs. Value of 0 means disable and 65535 means auto.
.RE
.TP
.B \-\-reset
Reset hardware components specified by flags and components listed below
.RS 4
.TP
.BI flags \ N
Resets the components based on direct flags mask
.TP
.B mgmt
Management processor
.TP
.B irq
Interrupt requester
.TP
.B dma
DMA engine
.TP
.B filter
Filtering/flow direction
.TP
.B offload
Protocol offload
.TP
.B mac
Media access controller
.TP
.B phy
Transceiver/PHY
.TP
.B ram
RAM shared between multiple components
.B ap
Application Processor
.TP
.B dedicated
All components dedicated to this interface
.TP
.B all
All components used by this interface, even if shared
.RE
.TP
.B \-\-show\-fec
Queries the specified network device for its support of Forward Error Correction.
.TP
.B \-\-set\-fec
Configures Forward Error Correction for the specified network device.

Forward Error Correction modes selected by a user are expected to be persisted
after any hotplug events. If a module is swapped that does not support the
current FEC mode, the driver or firmware must take the link down
administratively and report the problem in the system logs for users to correct.
.RS 4
.TP
.BR encoding\ auto | off | rs | baser | llrs \ [...]

Sets the FEC encoding for the device.  Combinations of options are specified as
e.g.
.B encoding auto rs
; the semantics of such combinations vary between drivers.
.TS
nokeep;
lB	l.
auto	Use the driver's default encoding
off	Turn off FEC
RS	Force RS-FEC encoding
BaseR	Force BaseR encoding
LLRS	Force LLRS-FEC encoding
.TE
.RE
.TP
.B \-Q|\-\-per\-queue
Applies provided sub command to specific queues.
.RS 4
.TP
.B queue_mask %x
Sets the specific queues which the sub command is applied to.
If queue_mask is not set, the sub command will be applied to all queues.
.TP
.B sub_command
Sub command to apply. The supported sub commands include --show-coalesce and
--coalesce.
.RE
.TP
.B \-\-cable\-test
Perform a cable test and report the results. What results are returned depends
on the capabilities of the network interface. Typically open pairs and shorted
pairs can be reported, along with pairs being O.K. When a fault is detected
the approximate distance to the fault may be reported.
.TP
.B \-\-cable\-test\-tdr
Perform a cable test and report the raw Time Domain Reflectometer
data.  A pulse is sent down a cable pair and the amplitude of the
reflection, for a given distance, is reported. A break in the cable
returns a big reflection. Minor damage to the cable returns a small
reflection. If the cable is shorted, the amplitude of the reflection
can be negative. By default, data is returned for lengths between 0
and 150m at 1m steps, for all pairs. However parameters can be passed
to restrict the collection of data. It should be noted, that the
interface will round the distances to whatever granularity is actually
implemented. This is often 0.8 of a meter. The results should include
the actual rounded first and last distance and step size.
.RS 4
.TP
.B first \ N
Distance along the cable, in meters, where the first measurement
should be made.
.TP
.B last \ N
Distance along the cable, in meters, where the last measurement should
be made.
.TP
.B step \ N
Distance, in meters, between each measurement.
.TP
.B pair \ N
Which pair should be measured. Typically a cable has 4 pairs. 0 = Pair A, 1 = Pair B, ...
.RE
.TP
.B \-\-monitor
Listens to netlink notification and displays them.
.RS 4
.TP
.I command
If argument matching a command is used, ethtool only shows notifications of
this type. Without such argument or with --all, all notification types are
shown.
.TP
.I devname
If a device name is used as argument, only notification for this device are
shown. Default is to show notifications for all devices.
.RE
.TP
.B \-\-show\-tunnels
Show tunnel-related device capabilities and state.
List UDP ports kernel has programmed the device to parse as VxLAN,
or GENEVE tunnels.
.RE
.TP
.B \-\-show\-module
Show the transceiver module's parameters.
.RE
.TP
.B \-\-set\-module
Set the transceiver module's parameters.
.RS 4
.TP
.A2 power-mode-policy high auto
Set the power mode policy for the module. When set to \fBhigh\fR, the module
always operates at high power mode. When set to \fBauto\fR, the module is
transitioned by the host to high power mode when the first port using it is put
administratively up and to low power mode when the last port using it is put
administratively down. The power mode policy can be set before a module is
plugged-in.
.RE
.TP
.B \-\-get\-plca\-cfg
Show the current PLCA parameters for the given interface.
.RE
.TP
.B \-\-set\-plca\-cfg
Change the PLCA settings for the given interface.
.RS 4
.TP
.A2 enable on off
Enables or disables the PLCA function. When the PLCA RS is disabled (default),
the PHY operates in plain CSMA/CD mode. To enable PLCA, the PHY must be assigned
a unique \fBplca\-id\fR other than 255. This one can be configured concurrently
with the enable parameter. The \fBenable\fR parameter maps to IEEE 802.3cg-2019
clause 30.16.1.1.1 (aPLCAAdminState) and clause 30.16.1.2.1 (acPLCAAdminControl).
.TP
.BI node\-id \ N
The unique node identifier in the range [0 .. 255]. Node ID 0 is reserved for
the coordinator node, the one generating the BEACON signal. There must be
exactly one coordinator on a PLCA network. Setting the node ID to 255 (default)
disables the node. This parameter maps to IEEE 802.3cg-2019 clause 30.16.1.1.4
(aPLCALocalNodeID).
.TP
.BI node\-cnt \ N
The node-cnt [1 .. 255] should be set after the maximum number of nodes that
can be plugged to the multi-drop network. This parameter regulates the minimum
length of the PLCA cycle. Therefore, it is only meaningful for the coordinator
node (\fBnod-id\fR = 0). Setting this parameter on a follower node has no
effect. The \fBnode\-cnt\fR parameter maps to IEEE 802.3cg-2019 clause
30.16.1.1.3 (aPLCANodeCount).
.TP
.BI to\-tmr \ N
The TO timer parameter sets the value of the transmit opportunity timer in
bit-times, and shall be set equal across all the nodes sharing the same
medium for PLCA to work. The default value of 32 is enough to cover a link of
roughly 50 mt. This parameter maps to  IEEE 802.3cg-2019 clause 30.16.1.1.5
(aPLCATransmitOpportunityTimer).
.TP
.BI burst\-cnt \ N
The \fBburst\-cnt\fR parameter [0 .. 255] indicates the extra number of packets
that the node is allowed to send during a single transmit opportunity.
By default, this attribute is 0, meaning that the node can send a sigle frame
per TO. When greater than 0, the PLCA RS keeps the TO after any transmission,
waiting for the MAC to send a new frame for up to \fBburst\-tmr\fR BTs. This can
only happen a number of times per PLCA cycle up to the value of this parameter.
After that, the burst is over and the normal counting of TOs resumes.
This parameter maps to IEEE 802.3cg-2019 clause 30.16.1.1.6 (aPLCAMaxBurstCount).
.TP
.BI burst\-tmr \ N
The \fBburst\-tmr\fR parameter [0 .. 255] sets how many bit-times the PLCA RS
waits for the MAC to initiate a new transmission when \fBburst\-cnt\fR is
greater than 0. If the MAC fails to send a new frame within this time, the burst
ends and the counting of TOs resumes. Otherwise, the new frame is sent as part
of the current burst. This parameter maps to IEEE 802.3cg-2019 clause
30.16.1.1.7 (aPLCABurstTimer). The value of \fBburst\-tmr\fR should be set
greater than the Inter-Frame-Gap (IFG) time of the MAC (plus some margin)
for PLCA burst mode to work as intended.
.RE
.TP
.B \-\-get\-plca\-status
Show the current PLCA status for the given interface. If \fBon\fR, the PHY is
successfully receiving or generating the BEACON signal. If \fBoff\fR, the PLCA
function is temporarily disabled and the PHY is operating in plain CSMA/CD mode.
.RE
.TP
.B \-\-show\-mm
Show the MAC Merge layer state. The ethtool argument
.B \-I \-\-include\-statistics
can be used with this command, and MAC Merge layer statistics counters will
also be retrieved.
.RS 4
.TP
.B pmac-enabled
Shows whether the pMAC is enabled and capable of receiving traffic and SMD-V
frames (and responding to them with SMD-R replies).
.TP
.B tx-enabled
Shows whether transmission on the pMAC is administratively enabled.
.TP
.B tx-active
Shows whether transmission on the pMAC is active (verification is either
successful, or was disabled).
.TP
.B tx-min-frag-size
Shows the minimum size (in octets) of transmitted non-final fragments which
can be received by the link partner. Corresponds to the standard addFragSize
variable using the formula:

tx-min-frag-size = 64 * (1 + addFragSize) - 4
.TP
.B rx-min-frag-size
Shows the minimum size (in octets) of non-final fragments which the local
device supports receiving.
.TP
.B verify-enabled
Shows whether the verification state machine is enabled. This process, if
successful, ensures that preemptible frames transmitted by the local device
will not be dropped as error frames by the link partner.
.TP
.B verify-time
Shows the interval in ms between verification attempts, represented as an
integer between 1 and 128 ms. The standard defines a fixed number of
verification attempts (verifyLimit) before failing the verification process.
.TP
.B max-verify-time
Shows the maximum value for verify-time accepted by the local device, which
may be less than 128 ms.
.TP
.B verify-status
Shows the current state of the verification state machine of the local device.
Values can be
.B INITIAL,
.B VERIFYING,
.B SUCCEEDED,
.B FAILED
or
.B DISABLED.

.RE
.TP
.B \-\-set\-mm
Set the MAC Merge layer parameters.
.RS 4
.TP
.A2 pmac-enabled \ on off
Enable reception for the pMAC.
.TP
.A2 tx-enabled \ on off
Administatively enable transmission for the pMAC.
.TP
.B tx-min-frag-size \ N
Set the minimum size (in octets) of transmitted non-final fragments which can
be received by the link partner.
.TP
.A2 verify-enabled \ on off
Enable or disable the verification state machine.
.TP
.B verify-time \ N
Set the interval in ms between verification attempts.

.RE
.TP
.B \-\-show\-pse
Show the current Power Sourcing Equipment (PSE) status for the given interface.
.RS 4
.TP
.B podl-pse-admin-state
This attribute indicates the operational status of PoDL PSE functions, which
can be modified using the
.B podl-pse-admin-control
parameter. It corresponds to IEEE 802.3-2018 30.15.1.1.2 (aPoDLPSEAdminState),
with potential values being
.B enabled, disabled
.TP
.B podl-pse-power-detection-status
This attribute indicates the power detection status of the PoDL PSE. The
status depend on internal PSE state machine and automatic PD classification
support. It corresponds to IEEE 802.3-2018 30.15.1.1.3
(aPoDLPSEPowerDetectionStatus) with potential values being
.B disabled, searching, delivering power, sleep, idle, error
.TP
.B c33-pse-admin-state
This attribute indicates the operational status of c33 PSE functions, which
can be modified using the
.B c33-pse-admin-control
parameter. It corresponds to IEEE 802.3-2022 30.9.1.1.2 (aPSEAdminState),
with potential values being
.B enabled, disabled
.TP
.B c33-pse-power-detection-status
This attribute indicates the power detection status of the c33 PSE. The
status depend on internal PSE state machine and automatic PD classification
support. It corresponds to IEEE 802.3-2022 30.9.1.1.5
(aPSEPowerDetectionStatus) with potential values being
.B disabled, searching, delivering power, test, fault, other fault
.TP
.B c33-pse-extended-state
This attribute indicates the Extended state of the c33 PSE. The extended
state correlated with the c33 PSE Extended Substate allows to have more
detail on the c33 PSE current error state.
It corresponds to IEEE 802.3-2022 33.2.4.4 Variables.
.TP
.B c33-pse-extended-substate
This attribute indicates the Extended substate of the c33 PSE. Correlated
with the c33 PSE Extended state value, it allows to have more detail on the
c33 PSE current error state.
.TP
.B c33-pse-power-class
This attribute identifies the power class of the c33 PSE. It depends on
the class negotiated between the PSE and the PD. It corresponds to
IEEE 802.3-2022 30.9.1.1.8 (aPSEPowerClassification).
.TP
.B c33-pse-actual-power
This attribute identifies the actual power drawn by the c33 PSE. It
corresponds to ``IEEE 802.3-2022`` 30.9.1.1.23 (aPSEActualPower). Actual
power is reported in mW.
.TP
.B c33-pse-available-power-limit
This attribute identifies the configured c33 PSE power limit in mW.
.TP
.B c33-pse-power-limit-ranges
This attribute specifies the allowed power limit ranges in mW for
configuring the c33-pse-avail-pw-limit parameter. It defines the valid
power levels that can be assigned to the c33 PSE in compliance with the
c33 standard.

.RE
.TP
.B \-\-set\-pse
Set Power Sourcing Equipment (PSE) parameters.
.RS 4
.TP
.A2 podl-pse-admin-control \ enable disable
This parameter manages PoDL PSE Admin operations in accordance with the IEEE
802.3-2018 30.15.1.2.1 (acPoDLPSEAdminControl) specification.
.TP
.A2 c33-pse-admin-control \ enable disable
This parameter manages c33 PSE Admin operations in accordance with the IEEE
802.3-2022 30.9.1.2.1 (acPSEAdminControl) specification.
.TP
.B c33-pse-avail-pw-limit \ N
This parameter manages c33 PSE Available Power Limit in mW, in accordance
with the IEEE 802.3-2022 33.2.4.4 Variables (pse_available_power)
specification.

.RE
.TP
.B \-\-flash\-module\-firmware
Flash the transceiver module's firmware. The firmware update process is
composed from three logical steps. Downloading a firmware image to the
transceiver module, running the image and committing the image so that it is
run upon reset. When flash command is given, the firmware update process is
performed in its entirety in that order.
.RS 4
.TP
.BI file \ FILE
Specifies the filename of the transceiver module firmware image. The firmware
must first be installed in one of the directories where the kernel firmware
loader or firmware agent will look, such as /lib/firmware. The firmware image
is downloaded to the transceiver module, validated, run and committed.
.RE
.RS 4
.TP
.BI pass \ PASS
Optional transceiver module password that might be required as part of the
transceiver module firmware update process.

.RE
.TP
.B \-\-show\-phys
Show the PHY devices attached to an interface, and the way they link together.
.RS 4
.TP
.B phy_index
The PHY's index, that identifies it within the network interface. If the
interface has multiple PHYs, they will each have a unique index on that
interface. This index can then be used for commands that targets PHYs.
.TP
.B drvname
The name of the driver bound to this PHY device.
.TP
.B name
The PHY's device name, matching the name found in sysfs.
.TP
.B downstream_sfp_name
If the PHY drives an SFP cage, this field contains the name of the associated
SFP bus.
.TP
.B upstream_type \ mac | phy
Indicates the nature of the device the PHY is attached to.
.TP
.B upstream_index
If the PHY's upstream_type is
.B phy
, this field indicates the phy_index of the upstream phy.
.TP
.B upstream_sfp_name
If the PHY is withing an SFP/SFF module, this field contains the name of the
upstream SFP bus.

.SH BUGS
Not supported (in part or whole) on all network drivers.
.SH AUTHOR
.B ethtool
was written by David Miller.

Modifications by 
Jeff Garzik, 
Tim Hockin,
Jakub Jelinek,
Andre Majorel,
Eli Kupermann,
Scott Feldman,
Andi Kleen,
Alexander Duyck,
Sucheta Chakraborty,
Jesse Brandeburg,
Ben Hutchings,
Scott Branden.
.SH AVAILABILITY
.B ethtool
is available from
.UR http://www.kernel.org/pub/software/network/ethtool/
.UE
