Netlink interface for ethtool

Basic information

Netlink interface for ethtool uses generic netlink familyethtool(userspace application should use macrosETHTOOL_GENL_NAME andETHTOOL_GENL_VERSION defined in<linux/ethtool_netlink.h> uapiheader). This family does not use a specific header, all information inrequests and replies is passed using netlink attributes.

The ethtool netlink interface uses extended ACK for error and warningreporting, userspace application developers are encouraged to make thesemessages available to user in a suitable way.

Requests can be divided into three categories: “get” (retrieving information),“set” (setting parameters) and “action” (invoking an action).

All “set” and “action” type requests require admin privileges(CAP_NET_ADMIN in the namespace). Most “get” type requests are allowed foranyone but there are exceptions (where the response contains sensitiveinformation). In some cases, the request as such is allowed for anyone butunprivileged users have attributes with sensitive information (e.g.wake-on-lan password) omitted.

Conventions

Attributes which represent a boolean value usually use NLA_U8 type so that wecan distinguish three states: “on”, “off” and “not present” (meaning theinformation is not available in “get” requests or value is not to be changedin “set” requests). For these attributes, the “true” value should be passed asnumber 1 but any non-zero value should be understood as “true” by recipient.In the tables below, “bool” denotes NLA_U8 attributes interpreted in this way.

In the message structure descriptions below, if an attribute name is suffixedwith “+”, parent nest can contain multiple attributes of the same type. Thisimplements an array of entries.

Request header

Each request or reply message contains a nested attribute with common header.Structure of this header is

ETHTOOL_A_HEADER_DEV_INDEXu32device ifindex
ETHTOOL_A_HEADER_DEV_NAMEstringdevice name
ETHTOOL_A_HEADER_FLAGSu32flags common for all requests

ETHTOOL_A_HEADER_DEV_INDEX andETHTOOL_A_HEADER_DEV_NAME identify thedevice message relates to. One of them is sufficient in requests, if both areused, they must identify the same device. Some requests, e.g. global stringsets, do not require device identification. MostGET requests also allowdump requests without device identification to query the same information forall devices providing it (each device in a separate message).

ETHTOOL_A_HEADER_FLAGS is a bitmap of request flags common for all requesttypes. The interpretation of these flags is the same for all request types butthe flags may not apply to requests. Recognized flags are:

ETHTOOL_FLAG_COMPACT_BITSETSuse compact format bitsets in reply
ETHTOOL_FLAG_OMIT_REPLYomit optional reply (_SET and _ACT)

New request flags should follow the general idea that if the flag is not set,the behaviour is backward compatible, i.e. requests from old clients not awareof the flag should be interpreted the way the client expects. A client mustnot set flags it does not understand.

Bit sets

For short bitmaps of (reasonably) fixed length, standardNLA_BITFIELD32type is used. For arbitrary length bitmaps, ethtool netlink uses a nestedattribute with contents of one of two forms: compact (two binary bitmapsrepresenting bit values and mask of affected bits) and bit-by-bit (list ofbits identified by either index or name).

Verbose (bit-by-bit) bitsets allow sending symbolic names for bits togetherwith their values which saves a round trip (when the bitset is passed in arequest) or at least a second request (when the bitset is in a reply). This isuseful for one shot applications like traditional ethtool command. On theother hand, long running applications like ethtool monitor (displayingnotifications) or network management daemons may prefer fetching the namesonly once and using compact form to save message size. Notifications fromethtool netlink interface always use compact form for bitsets.

A bitset can represent either a value/mask pair (ETHTOOL_A_BITSET_NOMASKnot set) or a single bitmap (ETHTOOL_A_BITSET_NOMASK set). In requestsmodifying a bitmap, the former changes the bit set in mask to values set invalue and preserves the rest; the latter sets the bits set in the bitmap andclears the rest.

Compact form: nested (bitset) atrribute contents:

ETHTOOL_A_BITSET_NOMASKflagno mask, only a list
ETHTOOL_A_BITSET_SIZEu32number of significant bits
ETHTOOL_A_BITSET_VALUEbinarybitmap of bit values
ETHTOOL_A_BITSET_MASKbinarybitmap of valid bits

Value and mask must have length at leastETHTOOL_A_BITSET_SIZE bitsrounded up to a multiple of 32 bits. They consist of 32-bit words in host byteorder, words ordered from least significant to most significant (i.e. the sameway as bitmaps are passed with ioctl interface).

For compact form,ETHTOOL_A_BITSET_SIZE andETHTOOL_A_BITSET_VALUE aremandatory.ETHTOOL_A_BITSET_MASK attribute is mandatory ifETHTOOL_A_BITSET_NOMASK is not set (bitset represents a value/mask pair);ifETHTOOL_A_BITSET_NOMASK is not set,ETHTOOL_A_BITSET_MASK is notallowed (bitset represents a single bitmap.

Kernel bit set length may differ from userspace length if older application isused on newer kernel or vice versa. If userspace bitmap is longer, an error isissued only if the request actually tries to set values of some bits notrecognized by kernel.

Bit-by-bit form: nested (bitset) attribute contents:

ETHTOOL_A_BITSET_NOMASKflagno mask, only a list
ETHTOOL_A_BITSET_SIZEu32number of significant bits
ETHTOOL_A_BITSET_BITSnestedarray of bits
 ETHTOOL_A_BITSET_BITS_BIT+nestedone bit
  ETHTOOL_A_BITSET_BIT_INDEXu32bit index (0 for LSB)
  ETHTOOL_A_BITSET_BIT_NAMEstringbit name
  ETHTOOL_A_BITSET_BIT_VALUEflagpresent if bit is set

Bit size is optional for bit-by-bit form.ETHTOOL_A_BITSET_BITS nest canonly containETHTOOL_A_BITSET_BITS_BIT attributes but there can be anarbitrary number of them. A bit may be identified by its index or by itsname. When used in requests, listed bits are set to 0 or 1 according toETHTOOL_A_BITSET_BIT_VALUE, the rest is preserved. A request fails ifindex exceeds kernel bit length or if name is not recognized.

WhenETHTOOL_A_BITSET_NOMASK flag is present, bitset is interpreted asa simple bitmap.ETHTOOL_A_BITSET_BIT_VALUE attributes are not used insuch case. Such bitset represents a bitmap with listed bits set and the restzero.

In requests, application can use either form. Form used by kernel in reply isdetermined byETHTOOL_FLAG_COMPACT_BITSETS flag in flags field of requestheader. Semantics of value and mask depends on the attribute.

List of message types

All constants identifying message types useETHTOOL_CMD_ prefix and suffixaccording to message purpose:

_GETuserspace request to retrieve data
_SETuserspace request to set data
_ACTuserspace request to perform an action
_GET_REPLYkernel reply to aGET request
_SET_REPLYkernel reply to aSET request
_ACT_REPLYkernel reply to anACT request
_NTFkernel notification

Userspace to kernel:

ETHTOOL_MSG_STRSET_GETget string set
ETHTOOL_MSG_LINKINFO_GETget link settings
ETHTOOL_MSG_LINKINFO_SETset link settings
ETHTOOL_MSG_LINKMODES_GETget link modes info
ETHTOOL_MSG_LINKMODES_SETset link modes info
ETHTOOL_MSG_LINKSTATE_GETget link state
ETHTOOL_MSG_DEBUG_GETget debugging settings
ETHTOOL_MSG_DEBUG_SETset debugging settings
ETHTOOL_MSG_WOL_GETget wake-on-lan settings
ETHTOOL_MSG_WOL_SETset wake-on-lan settings
ETHTOOL_MSG_FEATURES_GETget device features
ETHTOOL_MSG_FEATURES_SETset device features
ETHTOOL_MSG_PRIVFLAGS_GETget private flags
ETHTOOL_MSG_PRIVFLAGS_SETset private flags
ETHTOOL_MSG_RINGS_GETget ring sizes
ETHTOOL_MSG_RINGS_SETset ring sizes
ETHTOOL_MSG_CHANNELS_GETget channel counts
ETHTOOL_MSG_CHANNELS_SETset channel counts
ETHTOOL_MSG_COALESCE_GETget coalescing parameters
ETHTOOL_MSG_COALESCE_SETset coalescing parameters
ETHTOOL_MSG_PAUSE_GETget pause parameters
ETHTOOL_MSG_PAUSE_SETset pause parameters
ETHTOOL_MSG_EEE_GETget EEE settings
ETHTOOL_MSG_EEE_SETset EEE settings
ETHTOOL_MSG_TSINFO_GETget timestamping info
ETHTOOL_MSG_CABLE_TEST_ACTaction start cable test
ETHTOOL_MSG_CABLE_TEST_TDR_ACTaction start raw TDR cable test
ETHTOOL_MSG_TUNNEL_INFO_GETget tunnel offload info

Kernel to userspace:

ETHTOOL_MSG_STRSET_GET_REPLYstring set contents
ETHTOOL_MSG_LINKINFO_GET_REPLYlink settings
ETHTOOL_MSG_LINKINFO_NTFlink settings notification
ETHTOOL_MSG_LINKMODES_GET_REPLYlink modes info
ETHTOOL_MSG_LINKMODES_NTFlink modes notification
ETHTOOL_MSG_LINKSTATE_GET_REPLYlink state info
ETHTOOL_MSG_DEBUG_GET_REPLYdebugging settings
ETHTOOL_MSG_DEBUG_NTFdebugging settings notification
ETHTOOL_MSG_WOL_GET_REPLYwake-on-lan settings
ETHTOOL_MSG_WOL_NTFwake-on-lan settings notification
ETHTOOL_MSG_FEATURES_GET_REPLYdevice features
ETHTOOL_MSG_FEATURES_SET_REPLYoptional reply to FEATURES_SET
ETHTOOL_MSG_FEATURES_NTFnetdev features notification
ETHTOOL_MSG_PRIVFLAGS_GET_REPLYprivate flags
ETHTOOL_MSG_PRIVFLAGS_NTFprivate flags
ETHTOOL_MSG_RINGS_GET_REPLYring sizes
ETHTOOL_MSG_RINGS_NTFring sizes
ETHTOOL_MSG_CHANNELS_GET_REPLYchannel counts
ETHTOOL_MSG_CHANNELS_NTFchannel counts
ETHTOOL_MSG_COALESCE_GET_REPLYcoalescing parameters
ETHTOOL_MSG_COALESCE_NTFcoalescing parameters
ETHTOOL_MSG_PAUSE_GET_REPLYpause parameters
ETHTOOL_MSG_PAUSE_NTFpause parameters
ETHTOOL_MSG_EEE_GET_REPLYEEE settings
ETHTOOL_MSG_EEE_NTFEEE settings
ETHTOOL_MSG_TSINFO_GET_REPLYtimestamping info
ETHTOOL_MSG_CABLE_TEST_NTFCable test results
ETHTOOL_MSG_CABLE_TEST_TDR_NTFCable test TDR results
ETHTOOL_MSG_TUNNEL_INFO_GET_REPLYtunnel offload info

GET requests are sent by userspace applications to retrieve deviceinformation. They usually do not contain any message specific attributes.Kernel replies with corresponding “GET_REPLY” message. For most types,GETrequest withNLM_F_DUMP and no device identification can be used to querythe information for all devices supporting the request.

If the data can be also modified, correspondingSET message with the samelayout as correspondingGET_REPLY is used to request changes. Onlyattributes where a change is requested are included in such request (also, notall attributes may be changed). Replies to mostSET request consist onlyof error code and extack; if kernel provides additional data, it is sent inthe form of correspondingSET_REPLY message which can be suppressed bysettingETHTOOL_FLAG_OMIT_REPLY flag in request header.

Data modification also triggers sending aNTF message with a notification.These usually bear only a subset of attributes which was affected by thechange. The same notification is issued if the data is modified using othermeans (mostly ioctl ethtool interface). Unlike notifications from ethtoolnetlink code which are only sent if something actually changed, notificationstriggered by ioctl interface may be sent even if the request did not actuallychange any data.

ACT messages request kernel (driver) to perform a specific action. If someinformation is reported by kernel (which can be suppressed by settingETHTOOL_FLAG_OMIT_REPLY flag in request header), the reply takes form ofanACT_REPLY message. Performing an action also triggers a notification(NTF message).

Later sections describe the format and semantics of these messages.

STRSET_GET

Requests contents of a string set as provided by ioctl commandsETHTOOL_GSSET_INFO andETHTOOL_GSTRINGS. String sets are not userwriteable so that the correspondingSTRSET_SET message is only used inkernel replies. There are two types of string sets: global (independent ofa device, e.g. device feature names) and device specific (e.g. device privateflags).

Request contents:

ETHTOOL_A_STRSET_HEADERnestedrequest header
ETHTOOL_A_STRSET_STRINGSETSnestedstring set to request
 ETHTOOL_A_STRINGSETS_STRINGSET+nestedone string set
  ETHTOOL_A_STRINGSET_IDu32set id

Kernel response contents:

ETHTOOL_A_STRSET_HEADERnestedreply header
ETHTOOL_A_STRSET_STRINGSETSnestedarray of string sets
 ETHTOOL_A_STRINGSETS_STRINGSET+nestedone string set
  ETHTOOL_A_STRINGSET_IDu32set id
  ETHTOOL_A_STRINGSET_COUNTu32number of strings
  ETHTOOL_A_STRINGSET_STRINGSnestedarray of strings
   ETHTOOL_A_STRINGS_STRING+nestedone string
    ETHTOOL_A_STRING_INDEXu32string index
    ETHTOOL_A_STRING_VALUEstringstring value
ETHTOOL_A_STRSET_COUNTS_ONLYflagreturn only counts

Device identification in request header is optional. Depending on its presencea andNLM_F_DUMP flag, there are three type ofSTRSET_GET requests:

  • noNLM_F_DUMP, no device: get “global” stringsets
  • noNLM_F_DUMP, with device: get string sets related to the device
  • NLM_F_DUMP, no device: get device related string sets for all devices

If there is noETHTOOL_A_STRSET_STRINGSETS array, all string sets ofrequested type are returned, otherwise only those specified in the request.FlagETHTOOL_A_STRSET_COUNTS_ONLY tells kernel to only return stringcounts of the sets, not the actual strings.

LINKINFO_GET

Requests link settings as provided byETHTOOL_GLINKSETTINGS except forlink modes and autonegotiation related information. The request does not useany attributes.

Request contents:

ETHTOOL_A_LINKINFO_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_LINKINFO_HEADERnestedreply header
ETHTOOL_A_LINKINFO_PORTu8physical port
ETHTOOL_A_LINKINFO_PHYADDRu8phy MDIO address
ETHTOOL_A_LINKINFO_TP_MDIXu8MDI(-X) status
ETHTOOL_A_LINKINFO_TP_MDIX_CTRLu8MDI(-X) control
ETHTOOL_A_LINKINFO_TRANSCEIVERu8transceiver

Attributes and their values have the same meaning as matching members of thecorresponding ioctl structures.

LINKINFO_GET allows dump requests (kernel returns reply message for alldevices supporting the request).

LINKINFO_SET

LINKINFO_SET request allows setting some of the attributes reported byLINKINFO_GET.

Request contents:

ETHTOOL_A_LINKINFO_HEADERnestedrequest header
ETHTOOL_A_LINKINFO_PORTu8physical port
ETHTOOL_A_LINKINFO_PHYADDRu8phy MDIO address
ETHTOOL_A_LINKINFO_TP_MDIX_CTRLu8MDI(-X) control

MDI(-X) status and transceiver cannot be set, request with the correspondingattributes is rejected.

LINKMODES_GET

Requests link modes (supported, advertised and peer advertised) and relatedinformation (autonegotiation status, link speed and duplex) as provided byETHTOOL_GLINKSETTINGS. The request does not use any attributes.

Request contents:

ETHTOOL_A_LINKMODES_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_LINKMODES_HEADERnestedreply header
ETHTOOL_A_LINKMODES_AUTONEGu8autonegotiation status
ETHTOOL_A_LINKMODES_OURSbitsetadvertised link modes
ETHTOOL_A_LINKMODES_PEERbitsetpartner link modes
ETHTOOL_A_LINKMODES_SPEEDu32link speed (Mb/s)
ETHTOOL_A_LINKMODES_DUPLEXu8duplex mode
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFGu8Master/slave port mode
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATEu8Master/slave port state

ForETHTOOL_A_LINKMODES_OURS, value represents advertised modes and maskrepresents supported modes.ETHTOOL_A_LINKMODES_PEER in the reply is a bitlist.

LINKMODES_GET allows dump requests (kernel returns reply messages for alldevices supporting the request).

LINKMODES_SET

Request contents:

ETHTOOL_A_LINKMODES_HEADERnestedrequest header
ETHTOOL_A_LINKMODES_AUTONEGu8autonegotiation status
ETHTOOL_A_LINKMODES_OURSbitsetadvertised link modes
ETHTOOL_A_LINKMODES_PEERbitsetpartner link modes
ETHTOOL_A_LINKMODES_SPEEDu32link speed (Mb/s)
ETHTOOL_A_LINKMODES_DUPLEXu8duplex mode
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFGu8Master/slave port mode

ETHTOOL_A_LINKMODES_OURS bit set allows setting advertised link modes. Ifautonegotiation is on (either set now or kept from before), advertised modesare not changed (noETHTOOL_A_LINKMODES_OURS attribute) and at least oneof speed and duplex is specified, kernel adjusts advertised modes to allsupported modes matching speed, duplex or both (whatever is specified). Thisautoselection is done on ethtool side with ioctl interface, netlink interfaceis supposed to allow requesting changes without knowing what exactly kernelsupports.

LINKSTATE_GET

Requests link state information. Link up/down flag (as provided byETHTOOL_GLINK ioctl command) is provided. Optionally, extended state mightbe provided as well. In general, extended state describes reasons for why a portis down, or why it operates in some non-obvious mode. This request does not haveany attributes.

Request contents:

ETHTOOL_A_LINKSTATE_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_LINKSTATE_HEADERnestedreply header
ETHTOOL_A_LINKSTATE_LINKboollink state (up/down)
ETHTOOL_A_LINKSTATE_SQIu32Current Signal Quality Index
ETHTOOL_A_LINKSTATE_SQI_MAXu32Max support SQI value
ETHTOOL_A_LINKSTATE_EXT_STATEu8link extended state
ETHTOOL_A_LINKSTATE_EXT_SUBSTATEu8link extended substate

For most NIC drivers, the value ofETHTOOL_A_LINKSTATE_LINK returnscarrier flag provided bynetif_carrier_ok() but there are drivers whichdefine their own handler.

ETHTOOL_A_LINKSTATE_EXT_STATE andETHTOOL_A_LINKSTATE_EXT_SUBSTATE areoptional values. ethtool core can provide either bothETHTOOL_A_LINKSTATE_EXT_STATE andETHTOOL_A_LINKSTATE_EXT_SUBSTATE,or onlyETHTOOL_A_LINKSTATE_EXT_STATE, or none of them.

LINKSTATE_GET allows dump requests (kernel returns reply messages for alldevices supporting the request).

Link extended states:

ETHTOOL_LINK_EXT_STATE_AUTONEGStates relating to the autonegotiation orissues therein
ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILUREFailure during link training
ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCHLogical mismatch in physical coding sublayeror forward error correction sublayer
ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITYSignal integrity issues
ETHTOOL_LINK_EXT_STATE_NO_CABLENo cable connected
ETHTOOL_LINK_EXT_STATE_CABLE_ISSUEFailure is related to cable,e.g., unsupported cable
ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUEFailure is related to EEPROM, e.g., failureduring reading or parsing the data
ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILUREFailure during calibration algorithm
ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDEDThe hardware is not able to provide thepower required from cable or module
ETHTOOL_LINK_EXT_STATE_OVERHEATThe module is overheated

Link extended substates:

Autoneg substates:

ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTEDPeer side is down
ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVEDAck not received from peer side
ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILEDNext page exchange failed
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODEPeer side is down during forcemode or there is no agreement ofspeed
ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDEForward error correction modesin both sides are mismatched
ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCDNo Highest Common Denominator

Link training substates:

ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIREDFrames were notrecognized, thelock failed
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUTThe lock did notoccur beforetimeout
ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READYPeer side did notsend ready signalafter trainingprocess
ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULTRemote side is notready yet

Link logical mismatch substates:

ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCKPhysical coding sublayer wasnot locked in first phase -block lock
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCKPhysical coding sublayer wasnot locked in second phase -alignment markers lock
ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUSPhysical coding sublayer didnot get align status
ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKEDFC forward error correction isnot locked
ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKEDRS forward error correction isnot locked

Bad signal integrity substates:

ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORSLarge number of physicalerrors
ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATEThe system attempted tooperate the cable at a ratethat is not formallysupported, which led tosignal integrity issues

Cable issue substates:

ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLEUnsupported cable
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURECable test failure

DEBUG_GET

Requests debugging settings of a device. At the moment, only message mask isprovided.

Request contents:

ETHTOOL_A_DEBUG_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_DEBUG_HEADERnestedreply header
ETHTOOL_A_DEBUG_MSGMASKbitsetmessage mask

The message mask (ETHTOOL_A_DEBUG_MSGMASK) is equal to message level asprovided byETHTOOL_GMSGLVL and set byETHTOOL_SMSGLVL in ioctlinterface. While it is called message level there for historical reasons, mostdrivers and almost all newer drivers use it as a mask of enabled messageclasses (represented byNETIF_MSG_* constants); therefore netlinkinterface follows its actual use in practice.

DEBUG_GET allows dump requests (kernel returns reply messages for alldevices supporting the request).

DEBUG_SET

Set or update debugging settings of a device. At the moment, only message maskis supported.

Request contents:

ETHTOOL_A_DEBUG_HEADERnestedrequest header
ETHTOOL_A_DEBUG_MSGMASKbitsetmessage mask

ETHTOOL_A_DEBUG_MSGMASK bit set allows setting or modifying mask ofenabled debugging message types for the device.

WOL_GET

Query device wake-on-lan settings. Unlike most “GET” type requests,ETHTOOL_MSG_WOL_GET requires (netns)CAP_NET_ADMIN privileges as it(potentially) provides SecureOn(tm) password which is confidential.

Request contents:

ETHTOOL_A_WOL_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_WOL_HEADERnestedreply header
ETHTOOL_A_WOL_MODESbitsetmask of enabled WoL modes
ETHTOOL_A_WOL_SOPASSbinarySecureOn(tm) password

In reply,ETHTOOL_A_WOL_MODES mask consists of modes supported by thedevice, value of modes which are enabled.ETHTOOL_A_WOL_SOPASS is onlyincluded in reply ifWAKE_MAGICSECURE mode is supported.

WOL_SET

Set or update wake-on-lan settings.

Request contents:

ETHTOOL_A_WOL_HEADERnestedrequest header
ETHTOOL_A_WOL_MODESbitsetenabled WoL modes
ETHTOOL_A_WOL_SOPASSbinarySecureOn(tm) password

ETHTOOL_A_WOL_SOPASS is only allowed for devices supportingWAKE_MAGICSECURE mode.

FEATURES_GET

Gets netdev features likeETHTOOL_GFEATURES ioctl request.

Request contents:

ETHTOOL_A_FEATURES_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_FEATURES_HEADERnestedreply header
ETHTOOL_A_FEATURES_HWbitsetdev->hw_features
ETHTOOL_A_FEATURES_WANTEDbitsetdev->wanted_features
ETHTOOL_A_FEATURES_ACTIVEbitsetdev->features
ETHTOOL_A_FEATURES_NOCHANGEbitsetNETIF_F_NEVER_CHANGE

Bitmaps in kernel response have the same meaning as bitmaps used in ioctlinterference but attribute names are different (they are based oncorresponding members of struct net_device). Legacy “flags” are not provided,if userspace needs them (most likely only ethtool for backward compatibility),it can calculate their values from related feature bits itself.ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (toprovide all names when using verbose bitmap format), the other three use nomask (simple bit lists).

FEATURES_SET

Request to set netdev features likeETHTOOL_SFEATURES ioctl request.

Request contents:

ETHTOOL_A_FEATURES_HEADERnestedrequest header
ETHTOOL_A_FEATURES_WANTEDbitsetrequested features

Kernel response contents:

ETHTOOL_A_FEATURES_HEADERnestedreply header
ETHTOOL_A_FEATURES_WANTEDbitsetdiff wanted vs. result
ETHTOOL_A_FEATURES_ACTIVEbitsetdiff old vs. new active

Request constains only one bitset which can be either value/mask pair (requestto change specific feature bits and leave the rest) or only a value (requestto set all features to specified set).

As request is subject tonetdev_change_features() sanity checks, optionalkernel reply (can be suppressed byETHTOOL_FLAG_OMIT_REPLY flag in requestheader) informs client about the actual result.ETHTOOL_A_FEATURES_WANTEDreports the difference between client request and actual result: mask consistsof bits which differ between requested features and result (dev->featuresafter the operation), value consists of values of these bits in the request(i.e. negated values from resulting features).ETHTOOL_A_FEATURES_ACTIVEreports the difference between old and new dev->features: mask consists ofbits which have changed, values are their values in new dev->features (afterthe operation).

ETHTOOL_MSG_FEATURES_NTF notification is sent not only if device featuresare modified usingETHTOOL_MSG_FEATURES_SET request or on of ethtool ioctlrequest but also each time features are modified withnetdev_update_features()ornetdev_change_features().

PRIVFLAGS_GET

Gets private flags likeETHTOOL_GPFLAGS ioctl request.

Request contents:

ETHTOOL_A_PRIVFLAGS_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_PRIVFLAGS_HEADERnestedreply header
ETHTOOL_A_PRIVFLAGS_FLAGSbitsetprivate flags

ETHTOOL_A_PRIVFLAGS_FLAGS is a bitset with values of device private flags.These flags are defined by driver, their number and names (and also meaning)are device dependent. For compact bitset format, names can be retrieved asETH_SS_PRIV_FLAGS string set. If verbose bitset format is requested,response uses all private flags supported by the device as mask so that clientgets the full information without having to fetch the string set with names.

PRIVFLAGS_SET

Sets or modifies values of device private flags likeETHTOOL_SPFLAGSioctl request.

Request contents:

ETHTOOL_A_PRIVFLAGS_HEADERnestedrequest header
ETHTOOL_A_PRIVFLAGS_FLAGSbitsetprivate flags

ETHTOOL_A_PRIVFLAGS_FLAGS can either set the whole set of private flags ormodify only values of some of them.

RINGS_GET

Gets ring sizes likeETHTOOL_GRINGPARAM ioctl request.

Request contents:

ETHTOOL_A_RINGS_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_RINGS_HEADERnestedreply header
ETHTOOL_A_RINGS_RX_MAXu32max size of RX ring
ETHTOOL_A_RINGS_RX_MINI_MAXu32max size of RX mini ring
ETHTOOL_A_RINGS_RX_JUMBO_MAXu32max size of RX jumbo ring
ETHTOOL_A_RINGS_TX_MAXu32max size of TX ring
ETHTOOL_A_RINGS_RXu32size of RX ring
ETHTOOL_A_RINGS_RX_MINIu32size of RX mini ring
ETHTOOL_A_RINGS_RX_JUMBOu32size of RX jumbo ring
ETHTOOL_A_RINGS_TXu32size of TX ring

RINGS_SET

Sets ring sizes likeETHTOOL_SRINGPARAM ioctl request.

Request contents:

ETHTOOL_A_RINGS_HEADERnestedreply header
ETHTOOL_A_RINGS_RXu32size of RX ring
ETHTOOL_A_RINGS_RX_MINIu32size of RX mini ring
ETHTOOL_A_RINGS_RX_JUMBOu32size of RX jumbo ring
ETHTOOL_A_RINGS_TXu32size of TX ring

Kernel checks that requested ring sizes do not exceed limits reported bydriver. Driver may impose additional constraints and may not suspport allattributes.

CHANNELS_GET

Gets channel counts likeETHTOOL_GCHANNELS ioctl request.

Request contents:

ETHTOOL_A_CHANNELS_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_CHANNELS_HEADERnestedreply header
ETHTOOL_A_CHANNELS_RX_MAXu32max receive channels
ETHTOOL_A_CHANNELS_TX_MAXu32max transmit channels
ETHTOOL_A_CHANNELS_OTHER_MAXu32max other channels
ETHTOOL_A_CHANNELS_COMBINED_MAXu32max combined channels
ETHTOOL_A_CHANNELS_RX_COUNTu32receive channel count
ETHTOOL_A_CHANNELS_TX_COUNTu32transmit channel count
ETHTOOL_A_CHANNELS_OTHER_COUNTu32other channel count
ETHTOOL_A_CHANNELS_COMBINED_COUNTu32combined channel count

CHANNELS_SET

Sets channel counts likeETHTOOL_SCHANNELS ioctl request.

Request contents:

ETHTOOL_A_CHANNELS_HEADERnestedrequest header
ETHTOOL_A_CHANNELS_RX_COUNTu32receive channel count
ETHTOOL_A_CHANNELS_TX_COUNTu32transmit channel count
ETHTOOL_A_CHANNELS_OTHER_COUNTu32other channel count
ETHTOOL_A_CHANNELS_COMBINED_COUNTu32combined channel count

Kernel checks that requested channel counts do not exceed limits reported bydriver. Driver may impose additional constraints and may not suspport allattributes.

COALESCE_GET

Gets coalescing parameters likeETHTOOL_GCOALESCE ioctl request.

Request contents:

ETHTOOL_A_COALESCE_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_COALESCE_HEADERnestedreply header
ETHTOOL_A_COALESCE_RX_USECSu32delay (us), normal Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMESu32max packets, normal Rx
ETHTOOL_A_COALESCE_RX_USECS_IRQu32delay (us), Rx in IRQ
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQu32max packets, Rx in IRQ
ETHTOOL_A_COALESCE_TX_USECSu32delay (us), normal Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMESu32max packets, normal Tx
ETHTOOL_A_COALESCE_TX_USECS_IRQu32delay (us), Tx in IRQ
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQu32IRQ packets, Tx in IRQ
ETHTOOL_A_COALESCE_STATS_BLOCK_USECSu32delay of stats update
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RXbooladaptive Rx coalesce
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TXbooladaptive Tx coalesce
ETHTOOL_A_COALESCE_PKT_RATE_LOWu32threshold for low rate
ETHTOOL_A_COALESCE_RX_USECS_LOWu32delay (us), low Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOWu32max packets, low Rx
ETHTOOL_A_COALESCE_TX_USECS_LOWu32delay (us), low Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOWu32max packets, low Tx
ETHTOOL_A_COALESCE_PKT_RATE_HIGHu32threshold for high rate
ETHTOOL_A_COALESCE_RX_USECS_HIGHu32delay (us), high Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGHu32max packets, high Rx
ETHTOOL_A_COALESCE_TX_USECS_HIGHu32delay (us), high Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGHu32max packets, high Tx
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVALu32rate sampling interval

Attributes are only included in reply if their value is not zero or thecorresponding bit inethtool_ops::supported_coalesce_params is set (i.e.they are declared as supported by driver).

COALESCE_SET

Sets coalescing parameters likeETHTOOL_SCOALESCE ioctl request.

Request contents:

ETHTOOL_A_COALESCE_HEADERnestedrequest header
ETHTOOL_A_COALESCE_RX_USECSu32delay (us), normal Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMESu32max packets, normal Rx
ETHTOOL_A_COALESCE_RX_USECS_IRQu32delay (us), Rx in IRQ
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQu32max packets, Rx in IRQ
ETHTOOL_A_COALESCE_TX_USECSu32delay (us), normal Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMESu32max packets, normal Tx
ETHTOOL_A_COALESCE_TX_USECS_IRQu32delay (us), Tx in IRQ
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQu32IRQ packets, Tx in IRQ
ETHTOOL_A_COALESCE_STATS_BLOCK_USECSu32delay of stats update
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RXbooladaptive Rx coalesce
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TXbooladaptive Tx coalesce
ETHTOOL_A_COALESCE_PKT_RATE_LOWu32threshold for low rate
ETHTOOL_A_COALESCE_RX_USECS_LOWu32delay (us), low Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOWu32max packets, low Rx
ETHTOOL_A_COALESCE_TX_USECS_LOWu32delay (us), low Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOWu32max packets, low Tx
ETHTOOL_A_COALESCE_PKT_RATE_HIGHu32threshold for high rate
ETHTOOL_A_COALESCE_RX_USECS_HIGHu32delay (us), high Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGHu32max packets, high Rx
ETHTOOL_A_COALESCE_TX_USECS_HIGHu32delay (us), high Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGHu32max packets, high Tx
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVALu32rate sampling interval

Request is rejected if it attributes declared as unsupported by driver (i.e.such that the corresponding bit inethtool_ops::supported_coalesce_paramsis not set), regardless of their values. Driver may impose additionalconstraints on coalescing parameters and their values.

PAUSE_GET

Gets channel counts likeETHTOOL_GPAUSE ioctl request.

Request contents:

ETHTOOL_A_PAUSE_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_PAUSE_HEADERnestedrequest header
ETHTOOL_A_PAUSE_AUTONEGboolpause autonegotiation
ETHTOOL_A_PAUSE_RXboolreceive pause frames
ETHTOOL_A_PAUSE_TXbooltransmit pause frames

PAUSE_SET

Sets pause parameters likeETHTOOL_GPAUSEPARAM ioctl request.

Request contents:

ETHTOOL_A_PAUSE_HEADERnestedrequest header
ETHTOOL_A_PAUSE_AUTONEGboolpause autonegotiation
ETHTOOL_A_PAUSE_RXboolreceive pause frames
ETHTOOL_A_PAUSE_TXbooltransmit pause frames

EEE_GET

Gets channel counts likeETHTOOL_GEEE ioctl request.

Request contents:

ETHTOOL_A_EEE_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_EEE_HEADERnestedrequest header
ETHTOOL_A_EEE_MODES_OURSboolsupported/advertised modes
ETHTOOL_A_EEE_MODES_PEERboolpeer advertised link modes
ETHTOOL_A_EEE_ACTIVEboolEEE is actively used
ETHTOOL_A_EEE_ENABLEDboolEEE is enabled
ETHTOOL_A_EEE_TX_LPI_ENABLEDboolTx lpi enabled
ETHTOOL_A_EEE_TX_LPI_TIMERu32Tx lpi timeout (in us)

InETHTOOL_A_EEE_MODES_OURS, mask consists of link modes for which EEE isenabled, value of link modes for which EEE is advertised. Link modes for whichpeer advertises EEE are listed inETHTOOL_A_EEE_MODES_PEER (no mask). Thenetlink interface allows reporting EEE status for all link modes but onlyfirst 32 are provided by theethtool_ops callback.

EEE_SET

Sets pause parameters likeETHTOOL_GEEEPARAM ioctl request.

Request contents:

ETHTOOL_A_EEE_HEADERnestedrequest header
ETHTOOL_A_EEE_MODES_OURSbooladvertised modes
ETHTOOL_A_EEE_ENABLEDboolEEE is enabled
ETHTOOL_A_EEE_TX_LPI_ENABLEDboolTx lpi enabled
ETHTOOL_A_EEE_TX_LPI_TIMERu32Tx lpi timeout (in us)

ETHTOOL_A_EEE_MODES_OURS is used to either list link modes to advertiseEEE for (if there is no mask) or specify changes to the list (if there isa mask). The netlink interface allows reporting EEE status for all link modesbut only first 32 can be set at the moment as that is what theethtool_opscallback supports.

TSINFO_GET

Gets timestamping information likeETHTOOL_GET_TS_INFO ioctl request.

Request contents:

ETHTOOL_A_TSINFO_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_TSINFO_HEADERnestedrequest header
ETHTOOL_A_TSINFO_TIMESTAMPINGbitsetSO_TIMESTAMPING flags
ETHTOOL_A_TSINFO_TX_TYPESbitsetsupported Tx types
ETHTOOL_A_TSINFO_RX_FILTERSbitsetsupported Rx filters
ETHTOOL_A_TSINFO_PHC_INDEXu32PTP hw clock index

ETHTOOL_A_TSINFO_PHC_INDEX is absent if there is no associated PHC (thereis no special value for this case). The bitset attributes are omitted if theywould be empty (no bit set).

CABLE_TEST

Start a cable test.

Request contents:

ETHTOOL_A_CABLE_TEST_HEADERnestedrequest header

Notification contents:

An Ethernet cable typically contains 1, 2 or 4 pairs. The length ofthe pair can only be measured when there is a fault in the pair andhence a reflection. Information about the fault may not be available,depending on the specific hardware. Hence the contents of the notifymessage are mostly optional. The attributes can be repeated anarbitrary number of times, in an arbitrary order, for an arbitrarynumber of pairs.

The example shows the notification sent when the test is completed fora T2 cable, i.e. two pairs. One pair is OK and hence has no lengthinformation. The second pair has a fault and does have lengthinformation.

ETHTOOL_A_CABLE_TEST_HEADERnestedreply header
ETHTOOL_A_CABLE_TEST_STATUSu8completed
ETHTOOL_A_CABLE_TEST_NTF_NESTnestedall the results
 ETHTOOL_A_CABLE_NEST_RESULTnestedcable test result
  ETHTOOL_A_CABLE_RESULTS_PAIRu8pair number
  ETHTOOL_A_CABLE_RESULTS_CODEu8result code
 ETHTOOL_A_CABLE_NEST_RESULTnestedcable test results
  ETHTOOL_A_CABLE_RESULTS_PAIRu8pair number
  ETHTOOL_A_CABLE_RESULTS_CODEu8result code
 ETHTOOL_A_CABLE_NEST_FAULT_LENGTHnestedcable length
  ETHTOOL_A_CABLE_FAULT_LENGTH_PAIRu8pair number
  ETHTOOL_A_CABLE_FAULT_LENGTH_CMu32length in cm

CABLE_TEST TDR

Start a cable test and report raw TDR data

Request contents:

ETHTOOL_A_CABLE_TEST_TDR_HEADERnestedreply header
ETHTOOL_A_CABLE_TEST_TDR_CFGnestedtest configuration
 ETHTOOL_A_CABLE_STEP_FIRST_DISTANCEu32first data distance
 ETHTOOL_A_CABLE_STEP_LAST_DISTANCEu32last data distance
 ETHTOOL_A_CABLE_STEP_STEP_DISTANCEu32distance of each step
 ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIRu8pair to test

The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all membersof the nest. All distances are expressed in centimeters. The PHY takesthe distances as a guide, and rounds to the nearest distance itactually supports. If a pair is passed, only that one pair will betested. Otherwise all pairs are tested.

Notification contents:

Raw TDR data is gathered by sending a pulse down the cable andrecording the amplitude of the reflected pulse for a given distance.

It can take a number of seconds to collect TDR data, especial if thefull 100 meters is probed at 1 meter intervals. When the test isstarted a notification will be sent containing justETHTOOL_A_CABLE_TEST_TDR_STATUS with the valueETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED.

When the test has completed a second notification will be sentcontaining ETHTOOL_A_CABLE_TEST_TDR_STATUS with the valueETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data.

The message may optionally contain the amplitude of the pulse senddown the cable. This is measured in mV. A reflection should not bebigger than transmitted pulse.

Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEPnest containing information about the distance along the cable for thefirst reading, the last reading, and the step between eachreading. Distances are measured in centimeters. These should be theexact values the PHY used. These may be different to what the userrequested, if the native measurement resolution is greater than 1 cm.

For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE isused to report the amplitude of the reflection for a given pair.

ETHTOOL_A_CABLE_TEST_TDR_HEADERnestedreply header
ETHTOOL_A_CABLE_TEST_TDR_STATUSu8completed
ETHTOOL_A_CABLE_TEST_TDR_NTF_NESTnestedall the results
 ETHTOOL_A_CABLE_TDR_NEST_PULSEnestedTX Pulse amplitude
  ETHTOOL_A_CABLE_PULSE_mVs16Pulse amplitude
 ETHTOOL_A_CABLE_NEST_STEPnestedTDR step info
  ETHTOOL_A_CABLE_STEP_FIRST_DISTANCEu32First data distance
  ETHTOOL_A_CABLE_STEP_LAST_DISTANCEu32Last data distance
  ETHTOOL_A_CABLE_STEP_STEP_DISTANCEu32distance of each step
 ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDEnestedReflection amplitude
  ETHTOOL_A_CABLE_RESULTS_PAIRu8pair number
  ETHTOOL_A_CABLE_AMPLITUDE_mVs16Reflection amplitude
 ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDEnestedReflection amplitude
  ETHTOOL_A_CABLE_RESULTS_PAIRu8pair number
  ETHTOOL_A_CABLE_AMPLITUDE_mVs16Reflection amplitude
 ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDEnestedReflection amplitude
  ETHTOOL_A_CABLE_RESULTS_PAIRu8pair number
  ETHTOOL_A_CABLE_AMPLITUDE_mVs16Reflection amplitude

TUNNEL_INFO

Gets information about the tunnel state NIC is aware of.

Request contents:

ETHTOOL_A_TUNNEL_INFO_HEADERnestedrequest header

Kernel response contents:

ETHTOOL_A_TUNNEL_INFO_HEADERnestedreply header
ETHTOOL_A_TUNNEL_INFO_UDP_PORTSnestedall UDP port tables
 ETHTOOL_A_TUNNEL_UDP_TABLEnestedone UDP port table
  ETHTOOL_A_TUNNEL_UDP_TABLE_SIZEu32max size of thetable
  ETHTOOL_A_TUNNEL_UDP_TABLE_TYPESbitsettunnel types whichtable can hold
  ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRYnestedoffloaded UDP port
   ETHTOOL_A_TUNNEL_UDP_ENTRY_PORTbe16UDP port
   ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPEu32tunnel type

For UDP tunnel table emptyETHTOOL_A_TUNNEL_UDP_TABLE_TYPES indicates thatthe table contains static entries, hard-coded by the NIC.

Request translation

The following table maps ioctl commands to netlink commands providing theirfunctionality. Entries with “n/a” in right column are commands which do nothave their netlink replacement yet. Entries which “n/a” in the left columnare netlink only.

ioctl commandnetlink command
ETHTOOL_GSETETHTOOL_MSG_LINKINFO_GETETHTOOL_MSG_LINKMODES_GET
ETHTOOL_SSETETHTOOL_MSG_LINKINFO_SETETHTOOL_MSG_LINKMODES_SET
ETHTOOL_GDRVINFOn/a
ETHTOOL_GREGSn/a
ETHTOOL_GWOLETHTOOL_MSG_WOL_GET
ETHTOOL_SWOLETHTOOL_MSG_WOL_SET
ETHTOOL_GMSGLVLETHTOOL_MSG_DEBUG_GET
ETHTOOL_SMSGLVLETHTOOL_MSG_DEBUG_SET
ETHTOOL_NWAY_RSTn/a
ETHTOOL_GLINKETHTOOL_MSG_LINKSTATE_GET
ETHTOOL_GEEPROMn/a
ETHTOOL_SEEPROMn/a
ETHTOOL_GCOALESCEETHTOOL_MSG_COALESCE_GET
ETHTOOL_SCOALESCEETHTOOL_MSG_COALESCE_SET
ETHTOOL_GRINGPARAMETHTOOL_MSG_RINGS_GET
ETHTOOL_SRINGPARAMETHTOOL_MSG_RINGS_SET
ETHTOOL_GPAUSEPARAMETHTOOL_MSG_PAUSE_GET
ETHTOOL_SPAUSEPARAMETHTOOL_MSG_PAUSE_SET
ETHTOOL_GRXCSUMETHTOOL_MSG_FEATURES_GET
ETHTOOL_SRXCSUMETHTOOL_MSG_FEATURES_SET
ETHTOOL_GTXCSUMETHTOOL_MSG_FEATURES_GET
ETHTOOL_STXCSUMETHTOOL_MSG_FEATURES_SET
ETHTOOL_GSGETHTOOL_MSG_FEATURES_GET
ETHTOOL_SSGETHTOOL_MSG_FEATURES_SET
ETHTOOL_TESTn/a
ETHTOOL_GSTRINGSETHTOOL_MSG_STRSET_GET
ETHTOOL_PHYS_IDn/a
ETHTOOL_GSTATSn/a
ETHTOOL_GTSOETHTOOL_MSG_FEATURES_GET
ETHTOOL_STSOETHTOOL_MSG_FEATURES_SET
ETHTOOL_GPERMADDRrtnetlinkRTM_GETLINK
ETHTOOL_GUFOETHTOOL_MSG_FEATURES_GET
ETHTOOL_SUFOETHTOOL_MSG_FEATURES_SET
ETHTOOL_GGSOETHTOOL_MSG_FEATURES_GET
ETHTOOL_SGSOETHTOOL_MSG_FEATURES_SET
ETHTOOL_GFLAGSETHTOOL_MSG_FEATURES_GET
ETHTOOL_SFLAGSETHTOOL_MSG_FEATURES_SET
ETHTOOL_GPFLAGSETHTOOL_MSG_PRIVFLAGS_GET
ETHTOOL_SPFLAGSETHTOOL_MSG_PRIVFLAGS_SET
ETHTOOL_GRXFHn/a
ETHTOOL_SRXFHn/a
ETHTOOL_GGROETHTOOL_MSG_FEATURES_GET
ETHTOOL_SGROETHTOOL_MSG_FEATURES_SET
ETHTOOL_GRXRINGSn/a
ETHTOOL_GRXCLSRLCNTn/a
ETHTOOL_GRXCLSRULEn/a
ETHTOOL_GRXCLSRLALLn/a
ETHTOOL_SRXCLSRLDELn/a
ETHTOOL_SRXCLSRLINSn/a
ETHTOOL_FLASHDEVn/a
ETHTOOL_RESETn/a
ETHTOOL_SRXNTUPLEn/a
ETHTOOL_GRXNTUPLEn/a
ETHTOOL_GSSET_INFOETHTOOL_MSG_STRSET_GET
ETHTOOL_GRXFHINDIRn/a
ETHTOOL_SRXFHINDIRn/a
ETHTOOL_GFEATURESETHTOOL_MSG_FEATURES_GET
ETHTOOL_SFEATURESETHTOOL_MSG_FEATURES_SET
ETHTOOL_GCHANNELSETHTOOL_MSG_CHANNELS_GET
ETHTOOL_SCHANNELSETHTOOL_MSG_CHANNELS_SET
ETHTOOL_SET_DUMPn/a
ETHTOOL_GET_DUMP_FLAGn/a
ETHTOOL_GET_DUMP_DATAn/a
ETHTOOL_GET_TS_INFOETHTOOL_MSG_TSINFO_GET
ETHTOOL_GMODULEINFOn/a
ETHTOOL_GMODULEEEPROMn/a
ETHTOOL_GEEEETHTOOL_MSG_EEE_GET
ETHTOOL_SEEEETHTOOL_MSG_EEE_SET
ETHTOOL_GRSSHn/a
ETHTOOL_SRSSHn/a
ETHTOOL_GTUNABLEn/a
ETHTOOL_STUNABLEn/a
ETHTOOL_GPHYSTATSn/a
ETHTOOL_PERQUEUEn/a
ETHTOOL_GLINKSETTINGSETHTOOL_MSG_LINKINFO_GETETHTOOL_MSG_LINKMODES_GET
ETHTOOL_SLINKSETTINGSETHTOOL_MSG_LINKINFO_SETETHTOOL_MSG_LINKMODES_SET
ETHTOOL_PHY_GTUNABLEn/a
ETHTOOL_PHY_STUNABLEn/a
ETHTOOL_GFECPARAMn/a
ETHTOOL_SFECPARAMn/a
n/a‘’ETHTOOL_MSG_CABLE_TEST_ACT’‘
n/a‘’ETHTOOL_MSG_CABLE_TEST_TDR_ACT’‘
n/aETHTOOL_MSG_TUNNEL_INFO_GET