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.
Attributes that need to be filled-in by device drivers and that are dumped touser space based on whether they are valid or not should not use zero as avalid value. This avoids the need to explicitly signal the validity of theattribute in the device driver API.
Request header¶
Each request or reply message contains a nested attribute with common header.Structure of this header is
ETHTOOL_A_HEADER_DEV_INDEXu32
device ifindex
ETHTOOL_A_HEADER_DEV_NAMEstring
device name
ETHTOOL_A_HEADER_FLAGSu32
flags common for all requests
ETHTOOL_A_HEADER_PHY_INDEXu32
phy device index
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)
ETHTOOL_FLAG_STATSinclude optional device statistics
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.
ETHTOOL_A_HEADER_PHY_INDEX identifies the Ethernet PHY the message relates to.As there are numerous commands that are related to PHY configuration, and becausethere may be more than one PHY on the link, the PHY index can be passed in therequest for the commands that needs it. It is, however, not mandatory, and if itis not passed for commands that target a PHY, the net_device.phydev pointeris used.
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) attribute contents:
ETHTOOL_A_BITSET_NOMASKflag
no mask, only a list
ETHTOOL_A_BITSET_SIZEu32
number of significant bits
ETHTOOL_A_BITSET_VALUEbinary
bitmap of bit values
ETHTOOL_A_BITSET_MASKbinary
bitmap 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_NOMASKflag
no mask, only a list
ETHTOOL_A_BITSET_SIZEu32
number of significant bits
ETHTOOL_A_BITSET_BITSnested
array of bits
ETHTOOL_A_BITSET_BITS_BIT+nested
one bit
ETHTOOL_A_BITSET_BIT_INDEXu32
bit index (0 for LSB)
ETHTOOL_A_BITSET_BIT_NAMEstring
bit name
ETHTOOL_A_BITSET_BIT_VALUEflag
present 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 a
GETrequest
_SET_REPLYkernel reply to a
SETrequest
_ACT_REPLYkernel reply to an
ACTrequest
_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
ETHTOOL_MSG_FEC_GETget FEC settings
ETHTOOL_MSG_FEC_SETset FEC settings
ETHTOOL_MSG_MODULE_EEPROM_GETread SFP module EEPROM
ETHTOOL_MSG_STATS_GETget standard statistics
ETHTOOL_MSG_PHC_VCLOCKS_GETget PHC virtual clocks info
ETHTOOL_MSG_MODULE_SETset transceiver module parameters
ETHTOOL_MSG_MODULE_GETget transceiver module parameters
ETHTOOL_MSG_PSE_SETset PSE parameters
ETHTOOL_MSG_PSE_GETget PSE parameters
ETHTOOL_MSG_RSS_GETget RSS settings
ETHTOOL_MSG_PLCA_GET_CFGget PLCA RS parameters
ETHTOOL_MSG_PLCA_SET_CFGset PLCA RS parameters
ETHTOOL_MSG_PLCA_GET_STATUSget PLCA RS status
ETHTOOL_MSG_MM_GETget MAC merge layer state
ETHTOOL_MSG_MM_SETset MAC merge layer parameters
ETHTOOL_MSG_MODULE_FW_FLASH_ACTflash transceiver module firmware
ETHTOOL_MSG_PHY_GETget Ethernet PHY information
ETHTOOL_MSG_TSCONFIG_GETget hw timestamping configuration
ETHTOOL_MSG_TSCONFIG_SETset hw timestamping configuration
ETHTOOL_MSG_RSS_SETset RSS settings
ETHTOOL_MSG_RSS_CREATE_ACTcreate an additional RSS context
ETHTOOL_MSG_RSS_DELETE_ACTdelete an additional RSS context
ETHTOOL_MSG_MSE_GETget MSE diagnostic data
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
ETHTOOL_MSG_FEC_GET_REPLYFEC settings
ETHTOOL_MSG_FEC_NTFFEC settings
ETHTOOL_MSG_MODULE_EEPROM_GET_REPLYread SFP module EEPROM
ETHTOOL_MSG_STATS_GET_REPLYstandard statistics
ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLYPHC virtual clocks info
ETHTOOL_MSG_MODULE_GET_REPLYtransceiver module parameters
ETHTOOL_MSG_PSE_GET_REPLYPSE parameters
ETHTOOL_MSG_RSS_GET_REPLYRSS settings
ETHTOOL_MSG_RSS_NTFRSS settings
ETHTOOL_MSG_PLCA_GET_CFG_REPLYPLCA RS parameters
ETHTOOL_MSG_PLCA_GET_STATUS_REPLYPLCA RS status
ETHTOOL_MSG_PLCA_NTFPLCA RS parameters
ETHTOOL_MSG_MM_GET_REPLYMAC merge layer status
ETHTOOL_MSG_MODULE_FW_FLASH_NTFtransceiver module flash updates
ETHTOOL_MSG_PHY_GET_REPLYEthernet PHY information
ETHTOOL_MSG_PHY_NTFEthernet PHY information change
ETHTOOL_MSG_TSCONFIG_GET_REPLYhw timestamping configuration
ETHTOOL_MSG_TSCONFIG_SET_REPLYnew hw timestamping configuration
ETHTOOL_MSG_PSE_NTFPSE events notification
ETHTOOL_MSG_RSS_NTFRSS settings notification
ETHTOOL_MSG_RSS_CREATE_ACT_REPLYcreate an additional RSS context
ETHTOOL_MSG_RSS_CREATE_NTFadditional RSS context created
ETHTOOL_MSG_RSS_DELETE_NTFadditional RSS context deleted
ETHTOOL_MSG_MSE_GET_REPLYMSE diagnostic data
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_HEADERnested
request header
ETHTOOL_A_STRSET_STRINGSETSnested
string set to request
ETHTOOL_A_STRINGSETS_STRINGSET+nested
one string set
ETHTOOL_A_STRINGSET_IDu32
set id
Kernel response contents:
ETHTOOL_A_STRSET_HEADERnested
reply header
ETHTOOL_A_STRSET_STRINGSETSnested
array of string sets
ETHTOOL_A_STRINGSETS_STRINGSET+nested
one string set
ETHTOOL_A_STRINGSET_IDu32
set id
ETHTOOL_A_STRINGSET_COUNTu32
number of strings
ETHTOOL_A_STRINGSET_STRINGSnested
array of strings
ETHTOOL_A_STRINGS_STRING+nested
one string
ETHTOOL_A_STRING_INDEXu32
string index
ETHTOOL_A_STRING_VALUEstring
string value
ETHTOOL_A_STRSET_COUNTS_ONLYflag
return only counts
Device identification in request header is optional. Depending on its presencea andNLM_F_DUMP flag, there are three type ofSTRSET_GET requests:
no
NLM_F_DUMP,no device: get “global” stringsetsno
NLM_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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_LINKINFO_HEADERnested
reply header
ETHTOOL_A_LINKINFO_PORTu8
physical port
ETHTOOL_A_LINKINFO_PHYADDRu8
phy MDIO address
ETHTOOL_A_LINKINFO_TP_MDIXu8
MDI(-X) status
ETHTOOL_A_LINKINFO_TP_MDIX_CTRLu8
MDI(-X) control
ETHTOOL_A_LINKINFO_TRANSCEIVERu8
transceiver
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_HEADERnested
request header
ETHTOOL_A_LINKINFO_PORTu8
physical port
ETHTOOL_A_LINKINFO_PHYADDRu8
phy MDIO address
ETHTOOL_A_LINKINFO_TP_MDIX_CTRLu8
MDI(-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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_LINKMODES_HEADERnested
reply header
ETHTOOL_A_LINKMODES_AUTONEGu8
autonegotiation status
ETHTOOL_A_LINKMODES_OURSbitset
advertised link modes
ETHTOOL_A_LINKMODES_PEERbitset
partner link modes
ETHTOOL_A_LINKMODES_SPEEDu32
link speed (Mb/s)
ETHTOOL_A_LINKMODES_DUPLEXu8
duplex mode
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFGu8
Master/slave port mode
ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATEu8
Master/slave port state
ETHTOOL_A_LINKMODES_RATE_MATCHINGu8
PHY rate matching
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_HEADERnested
request header
ETHTOOL_A_LINKMODES_AUTONEGu8
autonegotiation status
ETHTOOL_A_LINKMODES_OURSbitset
advertised link modes
ETHTOOL_A_LINKMODES_PEERbitset
partner link modes
ETHTOOL_A_LINKMODES_SPEEDu32
link speed (Mb/s)
ETHTOOL_A_LINKMODES_DUPLEXu8
duplex mode
ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFGu8
Master/slave port mode
ETHTOOL_A_LINKMODES_RATE_MATCHINGu8
PHY rate matching
ETHTOOL_A_LINKMODES_LANESu32
lanes
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, duplex and lanes is specified, kernel adjusts advertised modes to allsupported modes matching speed, duplex, lanes or all (whatever is specified).This autoselection is done on ethtool side with ioctl interface, netlinkinterface is supposed to allow requesting changes without knowing what exactlykernel supports.
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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_LINKSTATE_HEADERnested
reply header
ETHTOOL_A_LINKSTATE_LINKbool
link state (up/down)
ETHTOOL_A_LINKSTATE_SQIu32
Current Signal Quality Index
ETHTOOL_A_LINKSTATE_SQI_MAXu32
Max support SQI value
ETHTOOL_A_LINKSTATE_EXT_STATEu8
link extended state
ETHTOOL_A_LINKSTATE_EXT_SUBSTATEu8
link extended substate
ETHTOOL_A_LINKSTATE_EXT_DOWN_CNTu32
count of link down events
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
ETHTOOL_LINK_EXT_STATE_MODULETransceiver module issue
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
ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOSTThe external clock signal forSerDes is too weak orunavailable.
ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOSThe received signal forSerDes is too weak becauseanalog loss of signal.
Cable issue substates:
ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLEUnsupported cable
ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURECable test failure
Transceiver module issue substates:
ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READYThe CMIS Module State Machine did not reachthe ModuleReady state. For example, if themodule is stuck at ModuleFault state
DEBUG_GET¶
Requests debugging settings of a device. At the moment, only message mask isprovided.
Request contents:
ETHTOOL_A_DEBUG_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_DEBUG_HEADERnested
reply header
ETHTOOL_A_DEBUG_MSGMASKbitset
message 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_HEADERnested
request header
ETHTOOL_A_DEBUG_MSGMASKbitset
message 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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_WOL_HEADERnested
reply header
ETHTOOL_A_WOL_MODESbitset
mask of enabled WoL modes
ETHTOOL_A_WOL_SOPASSbinary
SecureOn(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_HEADERnested
request header
ETHTOOL_A_WOL_MODESbitset
enabled WoL modes
ETHTOOL_A_WOL_SOPASSbinary
SecureOn(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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_FEATURES_HEADERnested
reply header
ETHTOOL_A_FEATURES_HWbitset
dev->hw_features
ETHTOOL_A_FEATURES_WANTEDbitset
dev->wanted_features
ETHTOOL_A_FEATURES_ACTIVEbitset
dev->features
ETHTOOL_A_FEATURES_NOCHANGEbitset
NETIF_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 ofstructnet_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_HEADERnested
request header
ETHTOOL_A_FEATURES_WANTEDbitset
requested features
Kernel response contents:
ETHTOOL_A_FEATURES_HEADERnested
reply header
ETHTOOL_A_FEATURES_WANTEDbitset
diff wanted vs. result
ETHTOOL_A_FEATURES_ACTIVEbitset
diff old vs. new active
Request contains 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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_PRIVFLAGS_HEADERnested
reply header
ETHTOOL_A_PRIVFLAGS_FLAGSbitset
private 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_HEADERnested
request header
ETHTOOL_A_PRIVFLAGS_FLAGSbitset
private 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_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_RINGS_HEADERnested
reply header
ETHTOOL_A_RINGS_RX_MAXu32
max size of RX ring
ETHTOOL_A_RINGS_RX_MINI_MAXu32
max size of RX mini ring
ETHTOOL_A_RINGS_RX_JUMBO_MAXu32
max size of RX jumbo ring
ETHTOOL_A_RINGS_TX_MAXu32
max size of TX ring
ETHTOOL_A_RINGS_RXu32
size of RX ring
ETHTOOL_A_RINGS_RX_MINIu32
size of RX mini ring
ETHTOOL_A_RINGS_RX_JUMBOu32
size of RX jumbo ring
ETHTOOL_A_RINGS_TXu32
size of TX ring
ETHTOOL_A_RINGS_RX_BUF_LENu32
size of buffers on the ring
ETHTOOL_A_RINGS_TCP_DATA_SPLITu8
TCP header / data split
ETHTOOL_A_RINGS_CQE_SIZEu32
Size of TX/RX CQE
ETHTOOL_A_RINGS_TX_PUSHu8
flag of TX Push mode
ETHTOOL_A_RINGS_RX_PUSHu8
flag of RX Push mode
ETHTOOL_A_RINGS_TX_PUSH_BUF_LENu32
size of TX push buffer
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAXu32
max size of TX push buffer
ETHTOOL_A_RINGS_HDS_THRESHu32
threshold ofheader / data split
ETHTOOL_A_RINGS_HDS_THRESH_MAXu32
max threshold ofheader / data split
ETHTOOL_A_RINGS_TCP_DATA_SPLIT indicates whether the device is usable withpage-flipping TCP zero-copy receive (getsockopt(TCP_ZEROCOPY_RECEIVE)).If enabled the device is configured to place frame headers and data intoseparate buffers. The device configuration must make it possible to receivefull memory pages of data, for example because MTU is high enough or throughHW-GRO.
ETHTOOL_A_RINGS_[RX|TX]_PUSH flag is used to enable descriptor fastpath to send or receive packets. In ordinary path, driver fills descriptors in DRAM andnotifies NIC hardware. In fast path, driver pushes descriptors to the devicethrough MMIO writes, thus reducing the latency. However, enabling this featuremay increase the CPU cost. Drivers may enforce additional per-packeteligibility checks (e.g. on packet size).
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN specifies the maximum number of bytes of atransmitted packet a driver can push directly to the underlying device(‘push’ mode). Pushing some of the payload bytes to the device has theadvantages of reducing latency for small packets by avoiding DMA mapping (sameasETHTOOL_A_RINGS_TX_PUSH parameter) as well as allowing the underlyingdevice to process packet headers ahead of fetching its payload.This can help the device to make fast actions based on the packet’s headers.This is similar to the “tx-copybreak” parameter, which copies the packet to apreallocated DMA memory area instead of mapping new memory. However,tx-push-buff parameter copies the packet directly to the device to allow thedevice to take faster actions on the packet.
RINGS_SET¶
Sets ring sizes likeETHTOOL_SRINGPARAM ioctl request.
Request contents:
ETHTOOL_A_RINGS_HEADERnested
reply header
ETHTOOL_A_RINGS_RXu32
size of RX ring
ETHTOOL_A_RINGS_RX_MINIu32
size of RX mini ring
ETHTOOL_A_RINGS_RX_JUMBOu32
size of RX jumbo ring
ETHTOOL_A_RINGS_TXu32
size of TX ring
ETHTOOL_A_RINGS_RX_BUF_LENu32
size of buffers on the ring
ETHTOOL_A_RINGS_TCP_DATA_SPLITu8
TCP header / data split
ETHTOOL_A_RINGS_CQE_SIZEu32
Size of TX/RX CQE
ETHTOOL_A_RINGS_TX_PUSHu8
flag of TX Push mode
ETHTOOL_A_RINGS_RX_PUSHu8
flag of RX Push mode
ETHTOOL_A_RINGS_TX_PUSH_BUF_LENu32
size of TX push buffer
ETHTOOL_A_RINGS_HDS_THRESHu32
threshold of header / data split
Kernel checks that requested ring sizes do not exceed limits reported bydriver. Driver may impose additional constraints and may not support allattributes.
ETHTOOL_A_RINGS_CQE_SIZE specifies the completion queue event size.Completion queue events (CQE) are the events posted by NIC to indicate thecompletion status of a packet when the packet is sent (like send success orerror) or received (like pointers to packet fragments). The CQE size parameterenables to modify the CQE size other than default size if NIC supports it.A bigger CQE can have more receive buffer pointers, and in turn the NIC cantransfer a bigger frame from wire. Based on the NIC hardware, the overallcompletion queue size can be adjusted in the driver if CQE size is modified.
ETHTOOL_A_RINGS_HDS_THRESH specifies the threshold value ofheader / data split feature. If a received packet size is larger than thisthreshold value, header and data will be split.
CHANNELS_GET¶
Gets channel counts likeETHTOOL_GCHANNELS ioctl request.
Request contents:
ETHTOOL_A_CHANNELS_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_CHANNELS_HEADERnested
reply header
ETHTOOL_A_CHANNELS_RX_MAXu32
max receive channels
ETHTOOL_A_CHANNELS_TX_MAXu32
max transmit channels
ETHTOOL_A_CHANNELS_OTHER_MAXu32
max other channels
ETHTOOL_A_CHANNELS_COMBINED_MAXu32
max combined channels
ETHTOOL_A_CHANNELS_RX_COUNTu32
receive channel count
ETHTOOL_A_CHANNELS_TX_COUNTu32
transmit channel count
ETHTOOL_A_CHANNELS_OTHER_COUNTu32
other channel count
ETHTOOL_A_CHANNELS_COMBINED_COUNTu32
combined channel count
CHANNELS_SET¶
Sets channel counts likeETHTOOL_SCHANNELS ioctl request.
Request contents:
ETHTOOL_A_CHANNELS_HEADERnested
request header
ETHTOOL_A_CHANNELS_RX_COUNTu32
receive channel count
ETHTOOL_A_CHANNELS_TX_COUNTu32
transmit channel count
ETHTOOL_A_CHANNELS_OTHER_COUNTu32
other channel count
ETHTOOL_A_CHANNELS_COMBINED_COUNTu32
combined channel count
Kernel checks that requested channel counts do not exceed limits reported bydriver. Driver may impose additional constraints and may not support allattributes.
COALESCE_GET¶
Gets coalescing parameters likeETHTOOL_GCOALESCE ioctl request.
Request contents:
ETHTOOL_A_COALESCE_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_COALESCE_HEADERnested
reply header
ETHTOOL_A_COALESCE_RX_USECSu32
delay (us), normal Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMESu32
max packets, normal Rx
ETHTOOL_A_COALESCE_RX_USECS_IRQu32
delay (us), Rx in IRQ
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQu32
max packets, Rx in IRQ
ETHTOOL_A_COALESCE_TX_USECSu32
delay (us), normal Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMESu32
max packets, normal Tx
ETHTOOL_A_COALESCE_TX_USECS_IRQu32
delay (us), Tx in IRQ
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQu32
IRQ packets, Tx in IRQ
ETHTOOL_A_COALESCE_STATS_BLOCK_USECSu32
delay of stats update
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RXbool
adaptive Rx coalesce
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TXbool
adaptive Tx coalesce
ETHTOOL_A_COALESCE_PKT_RATE_LOWu32
threshold for low rate
ETHTOOL_A_COALESCE_RX_USECS_LOWu32
delay (us), low Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOWu32
max packets, low Rx
ETHTOOL_A_COALESCE_TX_USECS_LOWu32
delay (us), low Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOWu32
max packets, low Tx
ETHTOOL_A_COALESCE_PKT_RATE_HIGHu32
threshold for high rate
ETHTOOL_A_COALESCE_RX_USECS_HIGHu32
delay (us), high Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGHu32
max packets, high Rx
ETHTOOL_A_COALESCE_TX_USECS_HIGHu32
delay (us), high Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGHu32
max packets, high Tx
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVALu32
rate sampling interval
ETHTOOL_A_COALESCE_USE_CQE_TXbool
timer reset mode, Tx
ETHTOOL_A_COALESCE_USE_CQE_RXbool
timer reset mode, Rx
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTESu32
max aggr size, Tx
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMESu32
max aggr packets, Tx
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECSu32
time (us), aggr, Tx
ETHTOOL_A_COALESCE_RX_PROFILEnested
profile of DIM, Rx
ETHTOOL_A_COALESCE_TX_PROFILEnested
profile of DIM, Tx
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).
Timer reset mode (ETHTOOL_A_COALESCE_USE_CQE_TX andETHTOOL_A_COALESCE_USE_CQE_RX) controls the interaction between packetarrival and the various time based delay parameters. By default timers areexpected to limit the max delay between any packet arrival/departure and acorresponding interrupt. In this mode timer should be started by packetarrival (sometimes delivery of previous interrupt) and reset when interruptis delivered.Setting the appropriate attribute to 1 will enableCQE mode, whereeach packet event resets the timer. In this mode timer is used to forcethe interrupt if queue goes idle, while busy queues depend on the packetlimit to trigger interrupts.
Tx aggregation consists of copying frames into a contiguous buffer so that theycan be submitted as a single IO operation.ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTESdescribes the maximum size in bytes for the submitted buffer.ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES describes the maximum number of framesthat can be aggregated into a single buffer.ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS describes the amount of time in usecs,counted since the first packet arrival in an aggregated block, after which theblock should be sent.This feature is mainly of interest for specific USB devices which does not copewell with frequent small-sized URBs transmissions.
ETHTOOL_A_COALESCE_RX_PROFILE andETHTOOL_A_COALESCE_TX_PROFILE referto DIM parameters, seeGeneric Network Dynamic Interrupt Moderation (Net DIM).
COALESCE_SET¶
Sets coalescing parameters likeETHTOOL_SCOALESCE ioctl request.
Request contents:
ETHTOOL_A_COALESCE_HEADERnested
request header
ETHTOOL_A_COALESCE_RX_USECSu32
delay (us), normal Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMESu32
max packets, normal Rx
ETHTOOL_A_COALESCE_RX_USECS_IRQu32
delay (us), Rx in IRQ
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQu32
max packets, Rx in IRQ
ETHTOOL_A_COALESCE_TX_USECSu32
delay (us), normal Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMESu32
max packets, normal Tx
ETHTOOL_A_COALESCE_TX_USECS_IRQu32
delay (us), Tx in IRQ
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQu32
IRQ packets, Tx in IRQ
ETHTOOL_A_COALESCE_STATS_BLOCK_USECSu32
delay of stats update
ETHTOOL_A_COALESCE_USE_ADAPTIVE_RXbool
adaptive Rx coalesce
ETHTOOL_A_COALESCE_USE_ADAPTIVE_TXbool
adaptive Tx coalesce
ETHTOOL_A_COALESCE_PKT_RATE_LOWu32
threshold for low rate
ETHTOOL_A_COALESCE_RX_USECS_LOWu32
delay (us), low Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOWu32
max packets, low Rx
ETHTOOL_A_COALESCE_TX_USECS_LOWu32
delay (us), low Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOWu32
max packets, low Tx
ETHTOOL_A_COALESCE_PKT_RATE_HIGHu32
threshold for high rate
ETHTOOL_A_COALESCE_RX_USECS_HIGHu32
delay (us), high Rx
ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGHu32
max packets, high Rx
ETHTOOL_A_COALESCE_TX_USECS_HIGHu32
delay (us), high Tx
ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGHu32
max packets, high Tx
ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVALu32
rate sampling interval
ETHTOOL_A_COALESCE_USE_CQE_TXbool
timer reset mode, Tx
ETHTOOL_A_COALESCE_USE_CQE_RXbool
timer reset mode, Rx
ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTESu32
max aggr size, Tx
ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMESu32
max aggr packets, Tx
ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECSu32
time (us), aggr, Tx
ETHTOOL_A_COALESCE_RX_PROFILEnested
profile of DIM, Rx
ETHTOOL_A_COALESCE_TX_PROFILEnested
profile of DIM, Tx
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.
Compared to requests issued via theioctl() netlink version of this requestwill try harder to make sure that values specified by the user have been appliedand may call the driver twice.
PAUSE_GET¶
Gets pause frame settings likeETHTOOL_GPAUSEPARAM ioctl request.
Request contents:
ETHTOOL_A_PAUSE_HEADERnested
request header
ETHTOOL_A_PAUSE_STATS_SRCu32
source of statistics
ETHTOOL_A_PAUSE_STATS_SRC is optional. It takes values from:
- enumethtool_mac_stats_src¶
source of ethtool MAC statistics
Constants
ETHTOOL_MAC_STATS_SRC_AGGREGATEif device supports a MAC merge layer, this retrieves the aggregatestatistics of the eMAC and pMAC. Otherwise, it retrieves just thestatistics of the single (express) MAC.
ETHTOOL_MAC_STATS_SRC_EMACif device supports a MM layer, this retrieves the eMAC statistics.Otherwise, it retrieves the statistics of the single (express) MAC.
ETHTOOL_MAC_STATS_SRC_PMACif device supports a MM layer, this retrieves the pMAC statistics.
If absent from the request, stats will be provided withanETHTOOL_A_PAUSE_STATS_SRC attribute in the response equal toETHTOOL_MAC_STATS_SRC_AGGREGATE.
Kernel response contents:
ETHTOOL_A_PAUSE_HEADERnested
request header
ETHTOOL_A_PAUSE_AUTONEGbool
pause autonegotiation
ETHTOOL_A_PAUSE_RXbool
receive pause frames
ETHTOOL_A_PAUSE_TXbool
transmit pause frames
ETHTOOL_A_PAUSE_STATSnested
pause statistics
ETHTOOL_A_PAUSE_STATS are reported ifETHTOOL_FLAG_STATS was setinETHTOOL_A_HEADER_FLAGS.It will be empty if driver did not report any statistics. Drivers fill inthe statistics in the following structure:
- structethtool_pause_stats¶
statistics for IEEE 802.3x pause frames
Definition:
struct ethtool_pause_stats { enum ethtool_mac_stats_src src; u64 tx_pause_frames; u64 rx_pause_frames;};Members
srcinput field denoting whether stats should be queried from the eMAC orpMAC (if the MM layer is supported). To be ignored otherwise.
tx_pause_framestransmitted pause frame count. Reported to user spaceas
ETHTOOL_A_PAUSE_STAT_TX_FRAMES.rx_pause_framesreceived pause frame count. Reported to user spaceas
ETHTOOL_A_PAUSE_STAT_RX_FRAMES. Equivalent to:
Description
Equivalent to30.3.4.2 aPAUSEMACCtrlFramesTransmittedfrom the standard.
Equivalent to30.3.4.3 aPAUSEMACCtrlFramesReceivedfrom the standard.
Each member has a corresponding attribute defined.
PAUSE_SET¶
Sets pause parameters likeETHTOOL_GPAUSEPARAM ioctl request.
Request contents:
ETHTOOL_A_PAUSE_HEADERnested
request header
ETHTOOL_A_PAUSE_AUTONEGbool
pause autonegotiation
ETHTOOL_A_PAUSE_RXbool
receive pause frames
ETHTOOL_A_PAUSE_TXbool
transmit pause frames
EEE_GET¶
Gets Energy Efficient Ethernet settings likeETHTOOL_GEEE ioctl request.
Request contents:
ETHTOOL_A_EEE_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_EEE_HEADERnested
request header
ETHTOOL_A_EEE_MODES_OURSbool
supported/advertised modes
ETHTOOL_A_EEE_MODES_PEERbool
peer advertised link modes
ETHTOOL_A_EEE_ACTIVEbool
EEE is actively used
ETHTOOL_A_EEE_ENABLEDbool
EEE is enabled
ETHTOOL_A_EEE_TX_LPI_ENABLEDbool
Tx lpi enabled
ETHTOOL_A_EEE_TX_LPI_TIMERu32
Tx 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 Energy Efficient Ethernet parameters likeETHTOOL_SEEE ioctl request.
Request contents:
ETHTOOL_A_EEE_HEADERnested
request header
ETHTOOL_A_EEE_MODES_OURSbool
advertised modes
ETHTOOL_A_EEE_ENABLEDbool
EEE is enabled
ETHTOOL_A_EEE_TX_LPI_ENABLEDbool
Tx lpi enabled
ETHTOOL_A_EEE_TX_LPI_TIMERu32
Tx 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_HEADERnested
request header
ETHTOOL_A_TSINFO_HWTSTAMP_PROVIDERnested
PTP hw clock provider
Kernel response contents:
ETHTOOL_A_TSINFO_HEADERnested
request header
ETHTOOL_A_TSINFO_TIMESTAMPINGbitset
SO_TIMESTAMPING flags
ETHTOOL_A_TSINFO_TX_TYPESbitset
supported Tx types
ETHTOOL_A_TSINFO_RX_FILTERSbitset
supported Rx filters
ETHTOOL_A_TSINFO_PHC_INDEXu32
PTP hw clock index
ETHTOOL_A_TSINFO_STATSnested
HW timestamping statistics
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).
Additional hardware timestamping statistics response contents:
ETHTOOL_A_TS_STAT_TX_PKTSuint
Packets with TxHW timestamps
ETHTOOL_A_TS_STAT_TX_LOSTuint
Tx HW timestampnot arrived count
ETHTOOL_A_TS_STAT_TX_ERRuint
HW error requestTx timestamp count
ETHTOOL_A_TS_STAT_TX_ONESTEP_PKTS_UNCONFIRMEDuint
Packets with one-stepHW TX timestamps withunconfirmed delivery
CABLE_TEST¶
Start a cable test.
Request contents:
ETHTOOL_A_CABLE_TEST_HEADERnested
request 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_HEADERnested
reply header
ETHTOOL_A_CABLE_TEST_STATUSu8
completed
ETHTOOL_A_CABLE_TEST_NTF_NESTnested
all the results
ETHTOOL_A_CABLE_NEST_RESULTnested
cable test result
ETHTOOL_A_CABLE_RESULTS_PAIRu8
pair number
ETHTOOL_A_CABLE_RESULTS_CODEu8
result code
ETHTOOL_A_CABLE_NEST_RESULTnested
cable test results
ETHTOOL_A_CABLE_RESULTS_PAIRu8
pair number
ETHTOOL_A_CABLE_RESULTS_CODEu8
result code
ETHTOOL_A_CABLE_RESULT_SRCu32
information source
ETHTOOL_A_CABLE_NEST_FAULT_LENGTHnested
cable length
ETHTOOL_A_CABLE_FAULT_LENGTH_PAIRu8
pair number
ETHTOOL_A_CABLE_FAULT_LENGTH_CMu32
length in cm
ETHTOOL_A_CABLE_FAULT_LENGTH_SRCu32
information source
CABLE_TEST TDR¶
Start a cable test and report raw TDR data
Request contents:
ETHTOOL_A_CABLE_TEST_TDR_HEADERnested
reply header
ETHTOOL_A_CABLE_TEST_TDR_CFGnested
test configuration
ETHTOOL_A_CABLE_STEP_FIRST_DISTANCEu32
first data distance
ETHTOOL_A_CABLE_STEP_LAST_DISTANCEu32
last data distance
ETHTOOL_A_CABLE_STEP_STEP_DISTANCEu32
distance of each step
ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIRu8
pair 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_HEADERnested
reply header
ETHTOOL_A_CABLE_TEST_TDR_STATUSu8
completed
ETHTOOL_A_CABLE_TEST_TDR_NTF_NESTnested
all the results
ETHTOOL_A_CABLE_TDR_NEST_PULSEnested
TX Pulse amplitude
ETHTOOL_A_CABLE_PULSE_mVs16
Pulse amplitude
ETHTOOL_A_CABLE_NEST_STEPnested
TDR step info
ETHTOOL_A_CABLE_STEP_FIRST_DISTANCEu32
First data distance
ETHTOOL_A_CABLE_STEP_LAST_DISTANCEu32
Last data distance
ETHTOOL_A_CABLE_STEP_STEP_DISTANCEu32
distance of each step
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDEnested
Reflection amplitude
ETHTOOL_A_CABLE_RESULTS_PAIRu8
pair number
ETHTOOL_A_CABLE_AMPLITUDE_mVs16
Reflection amplitude
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDEnested
Reflection amplitude
ETHTOOL_A_CABLE_RESULTS_PAIRu8
pair number
ETHTOOL_A_CABLE_AMPLITUDE_mVs16
Reflection amplitude
ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDEnested
Reflection amplitude
ETHTOOL_A_CABLE_RESULTS_PAIRu8
pair number
ETHTOOL_A_CABLE_AMPLITUDE_mVs16
Reflection amplitude
TUNNEL_INFO¶
Gets information about the tunnel state NIC is aware of.
Request contents:
ETHTOOL_A_TUNNEL_INFO_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_TUNNEL_INFO_HEADERnested
reply header
ETHTOOL_A_TUNNEL_INFO_UDP_PORTSnested
all UDP port tables
ETHTOOL_A_TUNNEL_UDP_TABLEnested
one UDP port table
ETHTOOL_A_TUNNEL_UDP_TABLE_SIZEu32
max size of thetable
ETHTOOL_A_TUNNEL_UDP_TABLE_TYPESbitset
tunnel types whichtable can hold
ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRYnested
offloaded UDP port
ETHTOOL_A_TUNNEL_UDP_ENTRY_PORTbe16
UDP port
ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPEu32
tunnel type
For UDP tunnel table emptyETHTOOL_A_TUNNEL_UDP_TABLE_TYPES indicates thatthe table contains static entries, hard-coded by the NIC.
FEC_GET¶
Gets FEC configuration and state likeETHTOOL_GFECPARAM ioctl request.
Request contents:
ETHTOOL_A_FEC_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_FEC_HEADERnested
request header
ETHTOOL_A_FEC_MODESbitset
configured modes
ETHTOOL_A_FEC_AUTObool
FEC mode auto selection
ETHTOOL_A_FEC_ACTIVEu32
index of active FEC mode
ETHTOOL_A_FEC_STATSnested
FEC statistics
ETHTOOL_A_FEC_ACTIVE is the bit index of the FEC link mode currentlyactive on the interface. This attribute may not be present if device doesnot support FEC.
ETHTOOL_A_FEC_MODES andETHTOOL_A_FEC_AUTO are only meaningful whenautonegotiation is disabled. IfETHTOOL_A_FEC_AUTO is non-zero driver willselect the FEC mode automatically based on the parameters of the SFP module.This is equivalent to theETHTOOL_FEC_AUTO bit of the ioctl interface.ETHTOOL_A_FEC_MODES carry the current FEC configuration using link modebits (rather than oldETHTOOL_FEC_* bits).
ETHTOOL_A_FEC_STATS are reported ifETHTOOL_FLAG_STATS was set inETHTOOL_A_HEADER_FLAGS.Each attribute carries an array of 64bit statistics. First entry in the arraycontains the total number of events on the port, while the following entriesare counters corresponding to lanes/PCS instances. The number of entries inthe array will be:
0 | device does not support FEC statistics |
1 | device does not support per-lane break down |
1 + #lanes | device has full support for FEC stats |
Drivers fill in the statistics in the following structure:
- structethtool_fec_stats¶
statistics for IEEE 802.3 FEC
Definition:
struct ethtool_fec_stats { struct ethtool_fec_stat { u64 total; u64 lanes[ETHTOOL_MAX_LANES]; } corrected_blocks, uncorrectable_blocks, corrected_bits;};Members
corrected_blocksnumber of received blocks corrected by FECReported to user space as
ETHTOOL_A_FEC_STAT_CORRECTED.uncorrectable_blocksnumber of received blocks FEC was not able to correctReported to user space as
ETHTOOL_A_FEC_STAT_UNCORR.corrected_bitsnumber of bits corrected by FECSimilar tocorrected_blocks but counts individual bit changes,not entire FEC data blocks. This is a non-standard statistic.Reported to user space as
ETHTOOL_A_FEC_STAT_CORR_BITS.
Description
Equivalent to30.5.1.1.17 aFECCorrectedBlocks from the standard.
Equivalent to30.5.1.1.18 aFECUncorrectableBlocks from the standard.
For each of the above fields, the two substructure members are:
lanes: per-lane/PCS-instance counts as defined by the standard
- total: error counts for the entire port, for drivers incapable of reporting
per-lane stats
Drivers should fill in either only total or per-lane statistics, corewill take care of adding lane values up to produce the total.
Statistics may have FEC bins histogram attributeETHTOOL_A_FEC_STAT_HISTas defined in IEEE 802.3ck-2022 and 802.3df-2024. Nested attributes will havethe range of FEC errors in the bin (inclusive) and the amount of error eventsin the bin.
FEC_SET¶
Sets FEC parameters likeETHTOOL_SFECPARAM ioctl request.
Request contents:
ETHTOOL_A_FEC_HEADERnested
request header
ETHTOOL_A_FEC_MODESbitset
configured modes
ETHTOOL_A_FEC_AUTObool
FEC mode auto selection
FEC_SET is only meaningful when autonegotiation is disabled. OtherwiseFEC mode is selected as part of autonegotiation.
ETHTOOL_A_FEC_MODES selects which FEC mode should be used. It’s recommendedto set only one bit, if multiple bits are set driver may choose between themin an implementation specific way.
ETHTOOL_A_FEC_AUTO requests the driver to choose FEC mode based on SFPmodule parameters. This does not mean autonegotiation.
MODULE_EEPROM_GET¶
Fetch module EEPROM data dump.This interface is designed to allow dumps of at most 1/2 page at once. Thismeans only dumps of 128 (or less) bytes are allowed, without crossing half pageboundary located at offset 128. For pages other than 0 only high 128 bytes areaccessible.
Request contents:
ETHTOOL_A_MODULE_EEPROM_HEADERnested
request header
ETHTOOL_A_MODULE_EEPROM_OFFSETu32
offset within a page
ETHTOOL_A_MODULE_EEPROM_LENGTHu32
amount of bytes to read
ETHTOOL_A_MODULE_EEPROM_PAGEu8
page number
ETHTOOL_A_MODULE_EEPROM_BANKu8
bank number
ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESSu8
page I2C address
IfETHTOOL_A_MODULE_EEPROM_BANK is not specified, bank 0 is assumed.
Kernel response contents:
ETHTOOL_A_MODULE_EEPROM_HEADERnested
reply header
ETHTOOL_A_MODULE_EEPROM_DATAbinary
array of bytes frommodule EEPROM
ETHTOOL_A_MODULE_EEPROM_DATA has an attribute length equal to the amount ofbytes driver actually read.
STATS_GET¶
Get standard statistics for the interface. Note that this is nota re-implementation ofETHTOOL_GSTATS which exposed driver-definedstats.
Request contents:
ETHTOOL_A_STATS_HEADERnested
request header
ETHTOOL_A_STATS_SRCu32
source of statistics
ETHTOOL_A_STATS_GROUPSbitset
requested groups of stats
Kernel response contents:
ETHTOOL_A_STATS_HEADERnested
reply header
ETHTOOL_A_STATS_SRCu32
source of statistics
ETHTOOL_A_STATS_GRPnested
one or more group of stats
ETHTOOL_A_STATS_GRP_IDu32
group ID -
ETHTOOL_STATS_*
ETHTOOL_A_STATS_GRP_SS_IDu32
string set ID for names
ETHTOOL_A_STATS_GRP_STATnested
nest containing a statistic
ETHTOOL_A_STATS_GRP_HIST_RXnested
histogram statistic (Rx)
ETHTOOL_A_STATS_GRP_HIST_TXnested
histogram statistic (Tx)
Users specify which groups of statistics they are requesting viatheETHTOOL_A_STATS_GROUPS bitset. Currently defined values are:
ETHTOOL_STATS_ETH_MAC
eth-mac
Basic IEEE 802.3 MAC statistics (30.3.1.1.*)
ETHTOOL_STATS_ETH_PHY
eth-phy
Basic IEEE 802.3 PHY statistics (30.3.2.1.*)
ETHTOOL_STATS_ETH_CTRL
eth-ctrl
Basic IEEE 802.3 MAC Ctrl statistics (30.3.3.*)
ETHTOOL_STATS_RMON
rmon
RMON (RFC 2819) statistics
ETHTOOL_STATS_PHY
phy
Additional PHY statistics, not defined by IEEE
Each group should have a correspondingETHTOOL_A_STATS_GRP in the reply.ETHTOOL_A_STATS_GRP_ID identifies which group’s statistics nest contains.ETHTOOL_A_STATS_GRP_SS_ID identifies the string set ID for the names ofthe statistics in the group, if available.
Statistics are added to theETHTOOL_A_STATS_GRP nest underETHTOOL_A_STATS_GRP_STAT.ETHTOOL_A_STATS_GRP_STAT should containsingle 8 byte (u64) attribute inside - the type of that attribute isthe statistic ID and the value is the value of the statistic.Each group has its own interpretation of statistic IDs.Attribute IDs correspond to strings from the string set identifiedbyETHTOOL_A_STATS_GRP_SS_ID. Complex statistics (such as RMON histogramentries) are also listed insideETHTOOL_A_STATS_GRP and do not havea string defined in the string set.
RMON “histogram” counters count number of packets within given size range.Because RFC does not specify the ranges beyond the standard 1518 MTU devicesdiffer in definition of buckets. For this reason the definition of packet rangesis left to each driver.
ETHTOOL_A_STATS_GRP_HIST_RX andETHTOOL_A_STATS_GRP_HIST_TX nestscontain the following attributes:
ETHTOOL_A_STATS_RMON_HIST_BKT_LOW
u32
low bound of the packet size bucket
ETHTOOL_A_STATS_RMON_HIST_BKT_HI
u32
high bound of the bucket
ETHTOOL_A_STATS_RMON_HIST_VAL
u64
packet counter
Low and high bounds are inclusive, for example:
RFC statistic
low
high
etherStatsPkts64Octets
0
64
etherStatsPkts512to1023Octets
512
1023
ETHTOOL_A_STATS_SRC is optional. Similar toPAUSE_GET, it takes valuesfromenumethtool_mac_stats_src. If absent from the request, stats will beprovided with anETHTOOL_A_STATS_SRC attribute in the response equal toETHTOOL_MAC_STATS_SRC_AGGREGATE.
PHC_VCLOCKS_GET¶
Query device PHC virtual clocks information.
Request contents:
ETHTOOL_A_PHC_VCLOCKS_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_PHC_VCLOCKS_HEADERnested
reply header
ETHTOOL_A_PHC_VCLOCKS_NUMu32
PHC virtual clocks number
ETHTOOL_A_PHC_VCLOCKS_INDEXs32
PHC index array
MODULE_GET¶
Gets transceiver module parameters.
Request contents:
ETHTOOL_A_MODULE_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_MODULE_HEADERnested
reply header
ETHTOOL_A_MODULE_POWER_MODE_POLICYu8
power mode policy
ETHTOOL_A_MODULE_POWER_MODEu8
operational power mode
The optionalETHTOOL_A_MODULE_POWER_MODE_POLICY attribute encodes thetransceiver module power mode policy enforced by the host. The default policyis driver-dependent, but “auto” is the recommended default and it should beimplemented by new drivers and drivers where conformance to a legacy behavioris not critical.
The optionalETHTHOOL_A_MODULE_POWER_MODE attribute encodes the operationalpower mode policy of the transceiver module. It is only reported when a moduleis plugged-in. Possible values are:
- enumethtool_module_power_mode¶
plug-in module power mode
Constants
ETHTOOL_MODULE_POWER_MODE_LOWModule is in low power mode.
ETHTOOL_MODULE_POWER_MODE_HIGHModule is in high power mode.
MODULE_SET¶
Sets transceiver module parameters.
Request contents:
ETHTOOL_A_MODULE_HEADERnested
request header
ETHTOOL_A_MODULE_POWER_MODE_POLICYu8
power mode policy
When set, the optionalETHTOOL_A_MODULE_POWER_MODE_POLICY attribute is usedto set the transceiver module power policy enforced by the host. Possiblevalues are:
- enumethtool_module_power_mode_policy¶
plug-in module power mode policy
Constants
ETHTOOL_MODULE_POWER_MODE_POLICY_HIGHModule is always in high power mode.
ETHTOOL_MODULE_POWER_MODE_POLICY_AUTOModule is transitioned by the hostto high power mode when the first port using it is put administrativelyup and to low power mode when the last port using it is putadministratively down.
For SFF-8636 modules, low power mode is forced by the host according to table6-10 in revision 2.10a of the specification.
For CMIS modules, low power mode is forced by the host according to table 6-12in revision 5.0 of the specification.
PSE_GET¶
Gets PSE attributes.
Request contents:
ETHTOOL_A_PSE_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_PSE_HEADERnested
reply header
ETHTOOL_A_PODL_PSE_ADMIN_STATEu32
Operational state of the PoDLPSE functions
ETHTOOL_A_PODL_PSE_PW_D_STATUSu32
power detection status of thePoDL PSE.
ETHTOOL_A_C33_PSE_ADMIN_STATEu32
Operational state of the PoEPSE functions.
ETHTOOL_A_C33_PSE_PW_D_STATUSu32
power detection status of thePoE PSE.
ETHTOOL_A_C33_PSE_PW_CLASSu32
power class of the PoE PSE.
ETHTOOL_A_C33_PSE_ACTUAL_PWu32
actual power drawn on thePoE PSE.
ETHTOOL_A_C33_PSE_EXT_STATEu32
power extended state of thePoE PSE.
ETHTOOL_A_C33_PSE_EXT_SUBSTATEu32
power extended substatus ofthe PoE PSE.
ETHTOOL_A_C33_PSE_AVAIL_PW_LIMITu32
currently configured powerlimit of the PoE PSE.
ETHTOOL_A_C33_PSE_PW_LIMIT_RANGESnested
Supported power limitconfiguration ranges.
ETHTOOL_A_PSE_PW_D_IDu32
Index of the PSE power domain
ETHTOOL_A_PSE_PRIO_MAXu32
Priority maximum configurableon the PoE PSE
ETHTOOL_A_PSE_PRIOu32
Priority of the PoE PSEcurrently configured
When set, the optionalETHTOOL_A_PODL_PSE_ADMIN_STATE attribute identifiesthe operational state of the PoDL PSE functions. The operational state of thePSE function can be changed using theETHTOOL_A_PODL_PSE_ADMIN_CONTROLaction. This attribute corresponds toIEEE802.3-2018 30.15.1.1.2aPoDLPSEAdminState. Possible values are:
- enumethtool_podl_pse_admin_state¶
operational state of the PoDL PSE functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
Constants
ETHTOOL_PODL_PSE_ADMIN_STATE_UNKNOWNstate of PoDL PSE functions areunknown
ETHTOOL_PODL_PSE_ADMIN_STATE_DISABLEDPoDL PSE functions are disabled
ETHTOOL_PODL_PSE_ADMIN_STATE_ENABLEDPoDL PSE functions are enabled
The same goes forETHTOOL_A_C33_PSE_ADMIN_STATE implementingIEEE802.3-2022 30.9.1.1.2 aPSEAdminState.
- enumethtool_c33_pse_admin_state¶
operational state of the PoDL PSE functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
Constants
ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWNstate of PSE functions is unknown
ETHTOOL_C33_PSE_ADMIN_STATE_DISABLEDPSE functions are disabled
ETHTOOL_C33_PSE_ADMIN_STATE_ENABLEDPSE functions are enabled
When set, the optionalETHTOOL_A_PODL_PSE_PW_D_STATUS attribute identifiesthe power detection status of the PoDL PSE. The status depend on internal PSEstate machine and automatic PD classification support. This attributecorresponds toIEEE802.3-2018 30.15.1.1.3 aPoDLPSEPowerDetectionStatus.Possible values are:
- enumethtool_podl_pse_pw_d_status¶
power detection status of the PoDL PSE. IEEE 802.3-2018 30.15.1.1.3 aPoDLPSEPowerDetectionStatus:
Constants
ETHTOOL_PODL_PSE_PW_D_STATUS_UNKNOWNPoDL PSE
ETHTOOL_PODL_PSE_PW_D_STATUS_DISABLED“The enumeration “disabled” isasserted true when the PoDL PSE state diagram variable mr_pse_enable isfalse”
ETHTOOL_PODL_PSE_PW_D_STATUS_SEARCHING“The enumeration “searching” isasserted true when either of the PSE state diagram variablespi_detecting or pi_classifying is true.”
ETHTOOL_PODL_PSE_PW_D_STATUS_DELIVERING“The enumeration “deliveringPower”is asserted true when the PoDL PSE state diagram variable pi_powered istrue.”
ETHTOOL_PODL_PSE_PW_D_STATUS_SLEEP“The enumeration “sleep” is assertedtrue when the PoDL PSE state diagram variable pi_sleeping is true.”
ETHTOOL_PODL_PSE_PW_D_STATUS_IDLE“The enumeration “idle” is asserted truewhen the logical combination of the PoDL PSE state diagram variablespi_prebiased*!pi_sleeping is true.”
ETHTOOL_PODL_PSE_PW_D_STATUS_ERROR“The enumeration “error” is assertedtrue when the PoDL PSE state diagram variable overload_held is true.”
The same goes forETHTOOL_A_C33_PSE_ADMIN_PW_D_STATUS implementingIEEE802.3-2022 30.9.1.1.5 aPSEPowerDetectionStatus.
- enumethtool_c33_pse_pw_d_status¶
power detection status of the PSE. IEEE 802.3-2022 30.9.1.1.3 aPoDLPSEPowerDetectionStatus:
Constants
ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWNPSE status is unknown
ETHTOOL_C33_PSE_PW_D_STATUS_DISABLEDThe enumeration “disabled”indicates that the PSE State diagram is in the state DISABLED.
ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHINGThe enumeration “searching”indicates the PSE State diagram is in a state other than thoselisted.
ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERINGThe enumeration“deliveringPower” indicates that the PSE State diagram is in thestate POWER_ON.
ETHTOOL_C33_PSE_PW_D_STATUS_TESTThe enumeration “test” indicates thatthe PSE State diagram is in the state TEST_MODE.
ETHTOOL_C33_PSE_PW_D_STATUS_FAULTThe enumeration “fault” indicates thatthe PSE State diagram is in the state TEST_ERROR.
ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULTThe enumeration “otherFault”indicates that the PSE State diagram is in the state IDLE due tothe variable error_condition = true.
When set, the optionalETHTOOL_A_C33_PSE_PW_CLASS attribute identifiesthe power class of the C33 PSE. It depends on the class negotiated betweenthe PSE and the PD. This attribute corresponds toIEEE802.3-202230.9.1.1.8 aPSEPowerClassification.
When set, the optionalETHTOOL_A_C33_PSE_ACTUAL_PW attribute identifiesthe actual power drawn by the C33 PSE. This attribute corresponds toIEEE802.3-2022 30.9.1.1.23 aPSEActualPower. Actual power is reportedin mW.
When set, the optionalETHTOOL_A_C33_PSE_EXT_STATE attribute identifiesthe extended error state of the C33 PSE. Possible values are:
- enumethtool_c33_pse_ext_state¶
groups of PSE extended states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_STATE_ERROR_CONDITIONGroup of error_condition states
ETHTOOL_C33_PSE_EXT_STATE_MR_MPS_VALIDGroup of mr_mps_valid states
ETHTOOL_C33_PSE_EXT_STATE_MR_PSE_ENABLEGroup of mr_pse_enable states
ETHTOOL_C33_PSE_EXT_STATE_OPTION_DETECT_TEDGroup of option_detect_tedstates
ETHTOOL_C33_PSE_EXT_STATE_OPTION_VPORT_LIMGroup of option_vport_lim states
ETHTOOL_C33_PSE_EXT_STATE_OVLD_DETECTEDGroup of ovld_detected states
ETHTOOL_C33_PSE_EXT_STATE_PD_DLL_POWER_TYPEGroup of pd_dll_power_typestates
ETHTOOL_C33_PSE_EXT_STATE_POWER_NOT_AVAILABLEGroup of power_not_availablestates
ETHTOOL_C33_PSE_EXT_STATE_SHORT_DETECTEDGroup of short_detected states
When set, the optionalETHTOOL_A_C33_PSE_EXT_SUBSTATE attribute identifiesthe extended error state of the C33 PSE. Possible values are:Possible values are:
- enumethtool_c33_pse_ext_substate_error_condition¶
error_condition states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_NON_EXISTING_PORTNon-existingport number
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNDEFINED_PORTUndefined port
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_INTERNAL_HW_FAULTInternalhardware fault
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_COMM_ERROR_AFTER_FORCE_ONCommunication error after force on
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_UNKNOWN_PORT_STATUSUnknownport status
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_TURN_OFFHostcrash turn off
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_HOST_CRASH_FORCE_SHUTDOWNHost crash force shutdown
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_CONFIG_CHANGEConfigurationchange
ETHTOOL_C33_PSE_EXT_SUBSTATE_ERROR_CONDITION_DETECTED_OVER_TEMPOvertemperature detected
Description
error_condition is a variable indicating the status ofimplementation-specific fault conditions or optionally other system faultsthat prevent the PSE from meeting the specifications in Table 33–11 and thatrequire the PSE not to source power. These error conditions are differentfrom those monitored by the state diagrams in Figure 33–10.
- enumethtool_c33_pse_ext_substate_mr_pse_enable¶
mr_pse_enable states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_MR_PSE_ENABLE_DISABLE_PIN_ACTIVEDisablepin active
Description
mr_pse_enable is control variable that selects PSE operation and testfunctions.
- enumethtool_c33_pse_ext_substate_option_detect_ted¶
option_detect_ted states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_DET_IN_PROCESSDetectionin process
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_DETECT_TED_CONNECTION_CHECK_ERRORConnection check error
Description
option_detect_ted is a variable indicating if detection can be performedby the PSE during the ted_timer interval.
- enumethtool_c33_pse_ext_substate_option_vport_lim¶
option_vport_lim states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_HIGH_VOLTAGEMain supplyvoltage is high
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_LOW_VOLTAGEMain supplyvoltage is low
ETHTOOL_C33_PSE_EXT_SUBSTATE_OPTION_VPORT_LIM_VOLTAGE_INJECTIONVoltageinjection into the port
Description
option_vport_lim is an optional variable indicates if VPSE is out of theoperating range during normal operating state.
- enumethtool_c33_pse_ext_substate_ovld_detected¶
ovld_detected states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_OVLD_DETECTED_OVERLOADOverload state
Description
ovld_detected is a variable indicating if the PSE output current has beenin an overload condition (see 33.2.7.6) for at least TCUT of a one-secondsliding time.
- enumethtool_c33_pse_ext_substate_power_not_available¶
power_not_available states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_BUDGET_EXCEEDEDPowerbudget exceeded for the controller
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PORT_PW_LIMIT_EXCEEDS_CONTROLLER_BUDGETConfigured port power limit exceeded controller power budget
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_PD_REQUEST_EXCEEDS_PORT_LIMITPower request from PD exceeds port limit
ETHTOOL_C33_PSE_EXT_SUBSTATE_POWER_NOT_AVAILABLE_HW_PW_LIMITPowerdenied due to Hardware power limit
Description
power_not_available is a variable that is asserted in animplementation-dependent manner when the PSE is no longer capable ofsourcing sufficient power to support the attached PD. Sufficient poweris defined by classification; see 33.2.6.
- enumethtool_c33_pse_ext_substate_short_detected¶
short_detected states functions. IEEE 802.3-2022 33.2.4.4 Variables
Constants
ETHTOOL_C33_PSE_EXT_SUBSTATE_SHORT_DETECTED_SHORT_CONDITIONShortcondition was detected
Description
short_detected is a variable indicating if the PSE output current has beenin a short circuit condition for TLIM within a sliding window (see 33.2.7.7).
When set, the optionalETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT attributeidentifies the C33 PSE power limit in mW.
When set the optionalETHTOOL_A_C33_PSE_PW_LIMIT_RANGES nested attributeidentifies the C33 PSE power limit ranges throughETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MIN andETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MAX.If the controller works with fixed classes, the min and max values will beequal.
TheETHTOOL_A_PSE_PW_D_ID attribute identifies the index of PSE powerdomain.
When set, the optionalETHTOOL_A_PSE_PRIO_MAX attribute identifiesthe PSE maximum priority value.When set, the optionalETHTOOL_A_PSE_PRIO attributes is used toidentifies the currently configured PSE priority.For a description of PSE priority attributes, seePSE_SET.
PSE_SET¶
Sets PSE parameters.
Request contents:
ETHTOOL_A_PSE_HEADERnested
request header
ETHTOOL_A_PODL_PSE_ADMIN_CONTROLu32
Control PoDL PSE Admin state
ETHTOOL_A_C33_PSE_ADMIN_CONTROLu32
Control PSE Admin state
ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMITu32
Control PoE PSE availablepower limit
ETHTOOL_A_PSE_PRIOu32
Control priority of thePoE PSE
When set, the optionalETHTOOL_A_PODL_PSE_ADMIN_CONTROL attribute is usedto control PoDL PSE Admin functions. This option implementsIEEE802.3-2018 30.15.1.2.1 acPoDLPSEAdminControl. SeeETHTOOL_A_PODL_PSE_ADMIN_STATE for supported values.
The same goes forETHTOOL_A_C33_PSE_ADMIN_CONTROL implementingIEEE802.3-2022 30.9.1.2.1 acPSEAdminControl.
When set, the optionalETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT attribute isused to control the available power value limit for C33 PSE in milliwatts.This attribute corresponds to thepse_available_power variable described inIEEE802.3-2022 33.2.4.4 Variables andpse_avail_pwr in 145.2.5.4Variables, which are described in power classes.
It was decided to use milliwatts for this interface to unify it with otherpower monitoring interfaces, which also use milliwatts, and to align withvarious existing products that document power consumption in watts rather thanclasses. If power limit configuration based on classes is needed, theconversion can be done in user space, for example by ethtool.
When set, the optionalETHTOOL_A_PSE_PRIO attributes is used tocontrol the PSE priority. Allowed priority value are between zero andthe value ofETHTOOL_A_PSE_PRIO_MAX attribute.
A lower value indicates a higher priority, meaning that a priority valueof 0 corresponds to the highest port priority.Port priority serves two functions:
Power-up Order: After a reset, ports are powered up in order of theirpriority from highest to lowest. Ports with higher priority(lower values) power up first.
Shutdown Order: When the power budget is exceeded, ports with lowerpriority (higher values) are turned off first.
PSE_NTF¶
Notify PSE events.
Notification contents:
ETHTOOL_A_PSE_HEADERnested
request header
ETHTOOL_A_PSE_EVENTSbitset
PSE events
When set, the optionalETHTOOL_A_PSE_EVENTS attribute identifies thePSE events.
- enumethtool_pse_event¶
PSE event list for the PSE controller
Constants
ETHTOOL_PSE_EVENT_OVER_CURRENTPSE output current is too high
ETHTOOL_PSE_EVENT_OVER_TEMPPSE in over temperature state
ETHTOOL_C33_PSE_EVENT_DETECTIONdetection process occur on the PSE. IEEE802.3-2022 33.2.5 and 145.2.6 PSE detection of PDs. IEEE 802.3-20230.9.1.1.5 aPSEPowerDetectionStatus
ETHTOOL_C33_PSE_EVENT_CLASSIFICATIONclassification process occur on thePSE. IEEE 802.3-2022 33.2.6 and 145.2.8 classification of PDs mutualidentification. IEEE 802.3-2022 30.9.1.1.8 aPSEPowerClassification.
ETHTOOL_C33_PSE_EVENT_DISCONNECTIONPD has been disconnected on the PSE.IEEE 802.3-2022 33.3.8 and 145.3.9 PD Maintain Power Signature. IEEE802.3-2022 33.5.1.2.9 MPS Absent. IEEE 802.3-2022 30.9.1.1.20aPSEMPSAbsentCounter.
ETHTOOL_PSE_EVENT_OVER_BUDGETPSE turned off due to over budget situation
ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERRORPSE faced an error managing thepower control from software
RSS_GET¶
Get indirection table, hash key and hash function info associated with aRSS context of an interface similar toETHTOOL_GRSSH ioctl request.
Request contents:
| nested | request header |
| u32 | context number |
| u32 | start context number (dumps) |
ETHTOOL_A_RSS_CONTEXT specifies which RSS context number to query,if not set context 0 (the main context) is queried. Dumps can be filteredby device (only listing contexts of a given netdev). Filtering singlecontext number is not supported butETHTOOL_A_RSS_START_CONTEXTcan be used to start dumping context from the given number (primarilyused to ignore context 0s and only dump additional contexts).
Kernel response contents:
| nested | reply header |
| u32 | context number |
| u32 | RSS hash func |
| binary | Indir table bytes |
| binary | Hash key bytes |
| u32 | RSS input data transformation |
| nested | Header fields included in hash |
ETHTOOL_A_RSS_HFUNC attribute is bitmap indicating the hash functionbeing used. Current supported options are toeplitz, xor or crc32.ETHTOOL_A_RSS_INDIR attribute returns RSS indirection table where each byteindicates queue number.ETHTOOL_A_RSS_INPUT_XFRM attribute is a bitmap indicating the type oftransformation applied to the input protocol fields before given to the RSShfunc. Current supported options are symmetric-xor and symmetric-or-xor.ETHTOOL_A_RSS_FLOW_HASH carries per-flow type bitmask of which headerfields are included in the hash calculation.
RSS_SET¶
Request contents:
| nested | request header |
| u32 | context number |
| u32 | RSS hash func |
| binary | Indir table bytes |
| binary | Hash key bytes |
| u32 | RSS input data transformation |
| nested | Header fields included in hash |
ETHTOOL_A_RSS_INDIR is the minimal RSS table the user expects. Kernel andthe device driver may replicate the table if its smaller than smallest tablesize supported by the device. For example if user requests[0,1] but thedevice needs at least 8 entries - the real table in use will end up being[0,1,0,1,0,1,0,1]. Most devices require the table size to be powerof 2, so tables which size is not a power of 2 will likely be rejected.Using table of size 0 will reset the indirection table to the default.
RSS_CREATE_ACT¶
Request contents:
| nested | request header |
| u32 | context number |
| u32 | RSS hash func |
| binary | Indir table bytes |
| binary | Hash key bytes |
| u32 | RSS input data transformation |
Kernel response contents:
| nested | request header |
| u32 | context number |
Create an additional RSS context, ifETHTOOL_A_RSS_CONTEXT is notspecified kernel will allocate one automatically.
RSS_DELETE_ACT¶
Request contents:
| nested | request header |
| u32 | context number |
Delete an additional RSS context.
PLCA_GET_CFG¶
Gets the IEEE 802.3cg-2019 Clause 148 Physical Layer Collision Avoidance(PLCA) Reconciliation Sublayer (RS) attributes.
Request contents:
ETHTOOL_A_PLCA_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_PLCA_HEADERnested
reply header
ETHTOOL_A_PLCA_VERSIONu16
Supported PLCA managementinterface standard/version
ETHTOOL_A_PLCA_ENABLEDu8
PLCA Admin State
ETHTOOL_A_PLCA_NODE_IDu32
PLCA unique local node ID
ETHTOOL_A_PLCA_NODE_CNTu32
Number of PLCA nodes on thenetwork, including thecoordinator
ETHTOOL_A_PLCA_TO_TMRu32
Transmit Opportunity Timervalue in bit-times (BT)
ETHTOOL_A_PLCA_BURST_CNTu32
Number of additional packetsthe node is allowed to sendwithin a single TO
ETHTOOL_A_PLCA_BURST_TMRu32
Time to wait for the MAC totransmit a new frame beforeterminating the burst
When set, the optionalETHTOOL_A_PLCA_VERSION attribute indicates whichstandard and version the PLCA management interface complies to. When not set,the interface is vendor-specific and (possibly) supplied by the driver.The OPEN Alliance SIG specifies a standard register map for 10BASE-T1S PHYsembedding the PLCA Reconciliation Sublayer. See “10BASE-T1S PLCA ManagementRegisters” athttps://www.opensig.org/about/specifications/.
When set, the optionalETHTOOL_A_PLCA_ENABLED attribute indicates theadministrative state of the PLCA RS. When not set, the node operates in “plain”CSMA/CD mode. This option is corresponding toIEEE802.3cg-2019 30.16.1.1.1aPLCAAdminState / 30.16.1.2.1 acPLCAAdminControl.
When set, the optionalETHTOOL_A_PLCA_NODE_ID attribute indicates theconfigured local node ID of the PHY. This ID determines which transmitopportunity (TO) is reserved for the node to transmit into. This option iscorresponding toIEEE802.3cg-2019 30.16.1.1.4 aPLCALocalNodeID. The validrange for this attribute is [0 .. 255] where 255 means “not configured”.
When set, the optionalETHTOOL_A_PLCA_NODE_CNT attribute indicates theconfigured maximum number of PLCA nodes on the mixing-segment. This numberdetermines the total number of transmit opportunities generated during aPLCA cycle. This attribute is relevant only for the PLCA coordinator, which isthe node with aPLCALocalNodeID set to 0. Follower nodes ignore this setting.This option is corresponding toIEEE802.3cg-2019 30.16.1.1.3aPLCANodeCount. The valid range for this attribute is [1 .. 255].
When set, the optionalETHTOOL_A_PLCA_TO_TMR attribute indicates theconfigured value of the transmit opportunity timer in bit-times. This valuemust be set equal across all nodes sharing the medium for PLCA to workcorrectly. This option is corresponding toIEEE802.3cg-2019 30.16.1.1.5aPLCATransmitOpportunityTimer. The valid range for this attribute is[0 .. 255].
When set, the optionalETHTOOL_A_PLCA_BURST_CNT attribute indicates theconfigured number of extra packets that the node is allowed to send during asingle transmit opportunity. By default, this attribute is 0, meaning thatthe node can only send a single frame per TO. When greater than 0, the PLCA RSkeeps the TO after any transmission, waiting for the MAC to send a new framefor up to aPLCABurstTimer BTs. This can only happen a number of times per PLCAcycle up to the value of this parameter. After that, the burst is over and thenormal counting of TOs resumes. This option is corresponding toIEEE802.3cg-2019 30.16.1.1.6 aPLCAMaxBurstCount. The valid range for thisattribute is [0 .. 255].
When set, the optionalETHTOOL_A_PLCA_BURST_TMR attribute indicates howmany bit-times the PLCA RS waits for the MAC to initiate a new transmissionwhen aPLCAMaxBurstCount is greater than 0. If the MAC fails to send a newframe 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 optionis corresponding toIEEE802.3cg-2019 30.16.1.1.7 aPLCABurstTimer. Thevalid range for this attribute is [0 .. 255]. Although, the value should beset greater than the Inter-Frame-Gap (IFG) time of the MAC (plus some margin)for PLCA burst mode to work as intended.
PLCA_SET_CFG¶
Sets PLCA RS parameters.
Request contents:
ETHTOOL_A_PLCA_HEADERnested
request header
ETHTOOL_A_PLCA_ENABLEDu8
PLCA Admin State
ETHTOOL_A_PLCA_NODE_IDu8
PLCA unique local node ID
ETHTOOL_A_PLCA_NODE_CNTu8
Number of PLCA nodes on thenetwork, including thecoordinator
ETHTOOL_A_PLCA_TO_TMRu8
Transmit Opportunity Timervalue in bit-times (BT)
ETHTOOL_A_PLCA_BURST_CNTu8
Number of additional packetsthe node is allowed to sendwithin a single TO
ETHTOOL_A_PLCA_BURST_TMRu8
Time to wait for the MAC totransmit a new frame beforeterminating the burst
For a description of each attribute, seePLCA_GET_CFG.
PLCA_GET_STATUS¶
Gets PLCA RS status information.
Request contents:
ETHTOOL_A_PLCA_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_PLCA_HEADERnested
reply header
ETHTOOL_A_PLCA_STATUSu8
PLCA RS operational status
When set, theETHTOOL_A_PLCA_STATUS attribute indicates whether the node isdetecting the presence of the BEACON on the network. This flag iscorresponding toIEEE802.3cg-2019 30.16.1.1.2 aPLCAStatus.
MM_GET¶
Retrieve 802.3 MAC Merge parameters.
Request contents:
ETHTOOL_A_MM_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_MM_HEADERnested
request header
ETHTOOL_A_MM_PMAC_ENABLEDbool
set if RX of preemptible and SMD-Vframes is enabled
ETHTOOL_A_MM_TX_ENABLEDbool
set if TX of preemptible frames isadministratively enabled (might beinactive if verification failed)
ETHTOOL_A_MM_TX_ACTIVEbool
set if TX of preemptible frames isoperationally enabled
ETHTOOL_A_MM_TX_MIN_FRAG_SIZEu32
minimum size of transmittednon-final fragments, in octets
ETHTOOL_A_MM_RX_MIN_FRAG_SIZEu32
minimum size of received non-finalfragments, in octets
ETHTOOL_A_MM_VERIFY_ENABLEDbool
set if TX of SMD-V frames isadministratively enabled
ETHTOOL_A_MM_VERIFY_STATUSu8
state of the verification function
ETHTOOL_A_MM_VERIFY_TIMEu32
delay between verification attempts
ETHTOOL_A_MM_MAX_VERIFY_TIME`u32
maximum verification intervalsupported by device
ETHTOOL_A_MM_STATSnested
IEEE 802.3-2018 subclause 30.14.1oMACMergeEntity statistics counters
The attributes are populated by the device driver through the followingstructure:
- structethtool_mm_state¶
802.3 MAC merge layer state
Definition:
struct ethtool_mm_state { u32 verify_time; u32 max_verify_time; enum ethtool_mm_verify_status verify_status; bool tx_enabled; bool tx_active; bool pmac_enabled; bool verify_enabled; u32 tx_min_frag_size; u32 rx_min_frag_size;};Members
verify_timewait time between verification attempts in ms (according to clause30.14.1.6 aMACMergeVerifyTime)
max_verify_timemaximum accepted value for theverify_time variable in set requests
verify_statusstate of the verification state machine of the MM layer (according toclause 30.14.1.2 aMACMergeStatusVerify)
tx_enabledset if the MM layer is administratively enabled in the TX direction(according to clause 30.14.1.3 aMACMergeEnableTx)
tx_activeset if the MM layer is enabled in the TX direction, which makes FPpossible (according to 30.14.1.5 aMACMergeStatusTx). This should betrue if MM is enabled, and the verification status is either verified,or disabled.
pmac_enabledset if the preemptible MAC is powered on and is able to receivepreemptible packets and respond to verification frames.
verify_enabledset if the Verify function of the MM layer (which sends SMD-Vverification requests) is administratively enabled (regardless ofwhether it is currently in the ETHTOOL_MM_VERIFY_STATUS_DISABLED stateor not), according to clause 30.14.1.4 aMACMergeVerifyDisableTx (butusing positive rather than negative logic). The device should alwaysrespond to received SMD-V requests as long aspmac_enabled is set.
tx_min_frag_sizethe minimum size of non-final mPacket fragments that the link partnersupports receiving, expressed in octets. Compared to the definitionfrom clause 30.14.1.7 aMACMergeAddFragSize which is expressed in therange 0 to 3 (requiring a translation to the size in octets accordingto the formula 64 * (1 + addFragSize) - 4), a value in a continuous andunbounded range can be specified here.
rx_min_frag_sizethe minimum size of non-final mPacket fragments that this devicesupports receiving, expressed in octets.
TheETHTOOL_A_MM_VERIFY_STATUS will report one of the values from
- enumethtool_mm_verify_status¶
status of MAC Merge Verify function
Constants
ETHTOOL_MM_VERIFY_STATUS_UNKNOWNverification status is unknown
ETHTOOL_MM_VERIFY_STATUS_INITIALthe 802.3 Verify State diagram is in the state INIT_VERIFICATION
ETHTOOL_MM_VERIFY_STATUS_VERIFYINGthe Verify State diagram is in the state VERIFICATION_IDLE,SEND_VERIFY or WAIT_FOR_RESPONSE
ETHTOOL_MM_VERIFY_STATUS_SUCCEEDEDindicates that the Verify State diagram is in the state VERIFIED
ETHTOOL_MM_VERIFY_STATUS_FAILEDthe Verify State diagram is in the state VERIFY_FAIL
ETHTOOL_MM_VERIFY_STATUS_DISABLEDverification of preemption operation is disabled
IfETHTOOL_A_MM_VERIFY_ENABLED was passed as false in theMM_SETcommand,ETHTOOL_A_MM_VERIFY_STATUS will report eitherETHTOOL_MM_VERIFY_STATUS_INITIAL orETHTOOL_MM_VERIFY_STATUS_DISABLED,otherwise it should report one of the other states.
It is recommended that drivers start with the pMAC disabled, and enable it uponuser space request. It is also recommended that user space does not depend uponthe default values fromETHTOOL_MSG_MM_GET requests.
ETHTOOL_A_MM_STATS are reported ifETHTOOL_FLAG_STATS was set inETHTOOL_A_HEADER_FLAGS. The attribute will be empty if driver did notreport any statistics. Drivers fill in the statistics in the followingstructure:
- structethtool_mm_stats¶
802.3 MAC merge layer statistics
Definition:
struct ethtool_mm_stats { u64 MACMergeFrameAssErrorCount; u64 MACMergeFrameSmdErrorCount; u64 MACMergeFrameAssOkCount; u64 MACMergeFragCountRx; u64 MACMergeFragCountTx; u64 MACMergeHoldCount;};Members
MACMergeFrameAssErrorCountreceived MAC frames with reassembly errors
MACMergeFrameSmdErrorCountreceived MAC frames/fragments rejected due to unknown or incorrect SMD
MACMergeFrameAssOkCountreceived MAC frames that were successfully reassembled and passed up
MACMergeFragCountRxnumber of additional correct SMD-C mPackets received due to preemption
MACMergeFragCountTxnumber of additional mPackets sent due to preemption
MACMergeHoldCountnumber of times the MM layer entered the HOLD state, which blockstransmission of preemptible traffic
MM_SET¶
Modifies the configuration of the 802.3 MAC Merge layer.
Request contents:
ETHTOOL_A_MM_VERIFY_TIMEu32
see MM_GET description
ETHTOOL_A_MM_VERIFY_ENABLEDbool
see MM_GET description
ETHTOOL_A_MM_TX_ENABLEDbool
see MM_GET description
ETHTOOL_A_MM_PMAC_ENABLEDbool
see MM_GET description
ETHTOOL_A_MM_TX_MIN_FRAG_SIZEu32
see MM_GET description
The attributes are propagated to the driver through the following structure:
- structethtool_mm_cfg¶
802.3 MAC merge layer configuration
Definition:
struct ethtool_mm_cfg { u32 verify_time; bool verify_enabled; bool tx_enabled; bool pmac_enabled; u32 tx_min_frag_size;};Members
verify_timeverify_enabledtx_enabledpmac_enabledtx_min_frag_size
MODULE_FW_FLASH_ACT¶
Flashes transceiver module firmware.
Request contents:
ETHTOOL_A_MODULE_FW_FLASH_HEADERnested
request header
ETHTOOL_A_MODULE_FW_FLASH_FILE_NAMEstring
firmware image file name
ETHTOOL_A_MODULE_FW_FLASH_PASSWORDu32
transceiver module password
The firmware update process consists of three logical steps:
Downloading a firmware image to the transceiver module and validating it.
Running the firmware image.
Committing the firmware image so that it is run upon reset.
When flash command is given, those three steps are taken in that order.
This message merely schedules the update process and returns immediatelywithout blocking. The process then runs asynchronously.Since it can take several minutes to complete, during the update processnotifications are emitted from the kernel to user space updating it aboutthe status and progress.
TheETHTOOL_A_MODULE_FW_FLASH_FILE_NAME attribute encodes the firmwareimage file name. The firmware image is downloaded to the transceiver module,validated, run and committed.
The optionalETHTOOL_A_MODULE_FW_FLASH_PASSWORD attribute encodes a passwordthat might be required as part of the transceiver module firmware updateprocess.
The firmware update process can take several minutes to complete. Therefore,during the update process notifications are emitted from the kernel to userspace updating it about the status and progress.
Notification contents:
ETHTOOL_A_MODULE_FW_FLASH_HEADERnested
reply header
ETHTOOL_A_MODULE_FW_FLASH_STATUSu32
status
ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSGstring
status message
ETHTOOL_A_MODULE_FW_FLASH_DONEuint
progress
ETHTOOL_A_MODULE_FW_FLASH_TOTALuint
total
TheETHTOOL_A_MODULE_FW_FLASH_STATUS attribute encodes the current statusof the firmware update process. Possible values are:
- enumethtool_module_fw_flash_status¶
plug-in module firmware flashing status
Constants
ETHTOOL_MODULE_FW_FLASH_STATUS_STARTEDThe firmware flashing process hasstarted.
ETHTOOL_MODULE_FW_FLASH_STATUS_IN_PROGRESSThe firmware flashing processis in progress.
ETHTOOL_MODULE_FW_FLASH_STATUS_COMPLETEDThe firmware flashing process wascompleted successfully.
ETHTOOL_MODULE_FW_FLASH_STATUS_ERRORThe firmware flashing process wasstopped due to an error.
TheETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG attribute encodes a status messagestring.
TheETHTOOL_A_MODULE_FW_FLASH_DONE andETHTOOL_A_MODULE_FW_FLASH_TOTALattributes encode the completed and total amount of work, respectively.
PHY_GET¶
Retrieve information about a given Ethernet PHY sitting on the link. The DOoperation returns all available information about dev->phydev. User can alsospecify a PHY_INDEX, in which case the DO request returns information about thatspecific PHY.
As there can be more than one PHY, the DUMP operation can be used to list the PHYspresent on a given interface, by passing an interface index or name inthe dump request.
For more information, refer toPHY link topology
Request contents:
ETHTOOL_A_PHY_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_PHY_HEADERnested
request header
ETHTOOL_A_PHY_INDEXu32
the phy’s unique index, that canbe used for phy-specificrequests
ETHTOOL_A_PHY_DRVNAMEstring
the phy driver name
ETHTOOL_A_PHY_NAMEstring
the phy device name
ETHTOOL_A_PHY_UPSTREAM_TYPEu32
the type of device this phy isconnected to
ETHTOOL_A_PHY_UPSTREAM_INDEXu32
the PHY index of the upstreamPHY
ETHTOOL_A_PHY_UPSTREAM_SFP_NAMEstring
if this PHY is connected toits parent PHY through an SFPbus, the name of this sfp bus
ETHTOOL_A_PHY_DOWNSTREAM_SFP_NAMEstring
if the phy controls an sfp bus,the name of the sfp bus
WhenETHTOOL_A_PHY_UPSTREAM_TYPE is PHY_UPSTREAM_PHY, the PHY’s parent isanother PHY.
TSCONFIG_GET¶
Retrieves the information about the current hardware timestamping source andconfiguration.
It is similar to the deprecatedSIOCGHWTSTAMP ioctl request.
Request contents:
ETHTOOL_A_TSCONFIG_HEADERnested
request header
Kernel response contents:
ETHTOOL_A_TSCONFIG_HEADERnested
request header
ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDERnested
PTP hw clock provider
ETHTOOL_A_TSCONFIG_TX_TYPESbitset
hwtstamp Tx type
ETHTOOL_A_TSCONFIG_RX_FILTERSbitset
hwtstamp Rx filter
ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGSu32
hwtstamp flags
When set theETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDER attribute identifies thesource of the hw timestamping provider. It is composed byETHTOOL_A_TS_HWTSTAMP_PROVIDER_INDEX attribute which describe the index ofthe PTP device andETHTOOL_A_TS_HWTSTAMP_PROVIDER_QUALIFIER which describethe qualifier of the timestamp.
When set theETHTOOL_A_TSCONFIG_TX_TYPES,ETHTOOL_A_TSCONFIG_RX_FILTERSand theETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGS attributes identify the Txtype, the Rx filter and the flags configured for the current hw timestampingprovider. The attributes are propagated to the driver through the followingstructure:
- structkernel_hwtstamp_config¶
Kernel copy of
structhwtstamp_config
Definition:
struct kernel_hwtstamp_config { int flags; int tx_type; int rx_filter; struct ifreq *ifr; bool copied_to_user; enum hwtstamp_source source; enum hwtstamp_provider_qualifier qualifier;};Members
flagssee
structhwtstamp_configtx_typesee
structhwtstamp_configrx_filtersee
structhwtstamp_configifrpointer to ifreq structure from the original ioctl request, to pass toa legacy implementation of a lower driver
copied_to_userrequest was passed to a legacy implementation which alreadycopied the ioctl request back to user space
sourceindication whether timestamps should come from the netdev or froman attached phylib PHY
qualifierqualifier of the hwtstamp provider
Description
Prefer using this structure for in-kernel processing of hardwaretimestamping configuration, over the inextensiblestructhwtstamp_configexposed to theSIOCGHWTSTAMP andSIOCSHWTSTAMP ioctl UAPI.
TSCONFIG_SET¶
Set the information about the current hardware timestamping source andconfiguration.
It is similar to the deprecatedSIOCSHWTSTAMP ioctl request.
Request contents:
ETHTOOL_A_TSCONFIG_HEADERnested
request header
ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDERnested
PTP hw clock provider
ETHTOOL_A_TSCONFIG_TX_TYPESbitset
hwtstamp Tx type
ETHTOOL_A_TSCONFIG_RX_FILTERSbitset
hwtstamp Rx filter
ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGSu32
hwtstamp flags
Kernel response contents:
ETHTOOL_A_TSCONFIG_HEADERnested
request header
ETHTOOL_A_TSCONFIG_HWTSTAMP_PROVIDERnested
PTP hw clock provider
ETHTOOL_A_TSCONFIG_TX_TYPESbitset
hwtstamp Tx type
ETHTOOL_A_TSCONFIG_RX_FILTERSbitset
hwtstamp Rx filter
ETHTOOL_A_TSCONFIG_HWTSTAMP_FLAGSu32
hwtstamp flags
For a description of each attribute, seeTSCONFIG_GET.
MSE_GET¶
Retrieves detailed Mean Square Error (MSE) diagnostic information from the PHY.
Request Contents:
ETHTOOL_A_MSE_HEADERnested
request header
Kernel Response Contents:
ETHTOOL_A_MSE_HEADERnested
reply header
ETHTOOL_A_MSE_CAPABILITIESnested
capability/scale info for MSEmeasurements
ETHTOOL_A_MSE_CHANNEL_Anested
snapshot for Channel A
ETHTOOL_A_MSE_CHANNEL_Bnested
snapshot for Channel B
ETHTOOL_A_MSE_CHANNEL_Cnested
snapshot for Channel C
ETHTOOL_A_MSE_CHANNEL_Dnested
snapshot for Channel D
ETHTOOL_A_MSE_WORST_CHANNELnested
snapshot for worst channel
ETHTOOL_A_MSE_LINKnested
snapshot for link-wide aggregate
MSE Capabilities¶
This nested attribute reports the capability / scaling properties used tointerpret snapshot values.
ETHTOOL_A_MSE_CAPABILITIES_MAX_AVERAGE_MSEuint
max avg_mse scale
ETHTOOL_A_MSE_CAPABILITIES_MAX_PEAK_MSEuint
max peak_mse scale
ETHTOOL_A_MSE_CAPABILITIES_REFRESH_RATE_PSuint
sample rate (picoseconds)
ETHTOOL_A_MSE_CAPABILITIES_NUM_SYMBOLSuint
symbols per HW sample
The max-average/peak fields are included only if the corresponding metricis supported by the PHY. Their absence indicates that the metric is notavailable.
Seestructphy_mse_capability kernel documentation ininclude/linux/phy.h.
MSE Snapshot¶
Each per-channel nest contains an atomic snapshot of MSE values for thatselector (channel A/B/C/D, worst channel, or link).
ETHTOOL_A_MSE_SNAPSHOT_AVERAGE_MSEuint
average MSE value
ETHTOOL_A_MSE_SNAPSHOT_PEAK_MSEuint
current peak MSE
ETHTOOL_A_MSE_SNAPSHOT_WORST_PEAK_MSEuint
worst-case peak MSE
Within each channel nest, only the metrics supported by the PHY will be present.
Seestructphy_mse_snapshot kernel documentation ininclude/linux/phy.h.
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 command
netlink command
ETHTOOL_GSET
ETHTOOL_MSG_LINKINFO_GETETHTOOL_MSG_LINKMODES_GET
ETHTOOL_SSET
ETHTOOL_MSG_LINKINFO_SETETHTOOL_MSG_LINKMODES_SET
ETHTOOL_GDRVINFOn/a
ETHTOOL_GREGSn/a
ETHTOOL_GWOL
ETHTOOL_MSG_WOL_GET
ETHTOOL_SWOL
ETHTOOL_MSG_WOL_SET
ETHTOOL_GMSGLVL
ETHTOOL_MSG_DEBUG_GET
ETHTOOL_SMSGLVL
ETHTOOL_MSG_DEBUG_SET
ETHTOOL_NWAY_RSTn/a
ETHTOOL_GLINK
ETHTOOL_MSG_LINKSTATE_GET
ETHTOOL_GEEPROMn/a
ETHTOOL_SEEPROMn/a
ETHTOOL_GCOALESCE
ETHTOOL_MSG_COALESCE_GET
ETHTOOL_SCOALESCE
ETHTOOL_MSG_COALESCE_SET
ETHTOOL_GRINGPARAM
ETHTOOL_MSG_RINGS_GET
ETHTOOL_SRINGPARAM
ETHTOOL_MSG_RINGS_SET
ETHTOOL_GPAUSEPARAM
ETHTOOL_MSG_PAUSE_GET
ETHTOOL_SPAUSEPARAM
ETHTOOL_MSG_PAUSE_SET
ETHTOOL_GRXCSUM
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SRXCSUM
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GTXCSUM
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_STXCSUM
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GSG
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SSG
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_TESTn/a
ETHTOOL_GSTRINGS
ETHTOOL_MSG_STRSET_GET
ETHTOOL_PHYS_IDn/a
ETHTOOL_GSTATSn/a
ETHTOOL_GTSO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_STSO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GPERMADDRrtnetlink
RTM_GETLINK
ETHTOOL_GUFO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SUFO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GGSO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SGSO
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GFLAGS
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SFLAGS
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GPFLAGS
ETHTOOL_MSG_PRIVFLAGS_GET
ETHTOOL_SPFLAGS
ETHTOOL_MSG_PRIVFLAGS_SET
ETHTOOL_GRXFH
ETHTOOL_MSG_RSS_GET
ETHTOOL_SRXFH
ETHTOOL_MSG_RSS_SET
ETHTOOL_GGRO
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SGRO
ETHTOOL_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_INFO
ETHTOOL_MSG_STRSET_GET
ETHTOOL_GRXFHINDIR
ETHTOOL_MSG_RSS_GET
ETHTOOL_SRXFHINDIR
ETHTOOL_MSG_RSS_SET
ETHTOOL_GFEATURES
ETHTOOL_MSG_FEATURES_GET
ETHTOOL_SFEATURES
ETHTOOL_MSG_FEATURES_SET
ETHTOOL_GCHANNELS
ETHTOOL_MSG_CHANNELS_GET
ETHTOOL_SCHANNELS
ETHTOOL_MSG_CHANNELS_SET
ETHTOOL_SET_DUMPn/a
ETHTOOL_GET_DUMP_FLAGn/a
ETHTOOL_GET_DUMP_DATAn/a
ETHTOOL_GET_TS_INFO
ETHTOOL_MSG_TSINFO_GET
ETHTOOL_GMODULEINFO
ETHTOOL_MSG_MODULE_EEPROM_GET
ETHTOOL_GMODULEEEPROM
ETHTOOL_MSG_MODULE_EEPROM_GET
ETHTOOL_GEEE
ETHTOOL_MSG_EEE_GET
ETHTOOL_SEEE
ETHTOOL_MSG_EEE_SET
ETHTOOL_GRSSH
ETHTOOL_MSG_RSS_GET
ETHTOOL_SRSSHn/a
ETHTOOL_GTUNABLEn/a
ETHTOOL_STUNABLEn/a
ETHTOOL_GPHYSTATSn/a
ETHTOOL_PERQUEUEn/a
ETHTOOL_GLINKSETTINGS
ETHTOOL_MSG_LINKINFO_GETETHTOOL_MSG_LINKMODES_GET
ETHTOOL_SLINKSETTINGS
ETHTOOL_MSG_LINKINFO_SETETHTOOL_MSG_LINKMODES_SET
ETHTOOL_PHY_GTUNABLEn/a
ETHTOOL_PHY_STUNABLEn/a
ETHTOOL_GFECPARAM
ETHTOOL_MSG_FEC_GET
ETHTOOL_SFECPARAM
ETHTOOL_MSG_FEC_SETn/a
ETHTOOL_MSG_CABLE_TEST_ACTn/a
ETHTOOL_MSG_CABLE_TEST_TDR_ACTn/a
ETHTOOL_MSG_TUNNEL_INFO_GETn/a
ETHTOOL_MSG_PHC_VCLOCKS_GETn/a
ETHTOOL_MSG_MODULE_GETn/a
ETHTOOL_MSG_MODULE_SETn/a
ETHTOOL_MSG_PLCA_GET_CFGn/a
ETHTOOL_MSG_PLCA_SET_CFGn/a
ETHTOOL_MSG_PLCA_GET_STATUSn/a
ETHTOOL_MSG_MM_GETn/a
ETHTOOL_MSG_MM_SETn/a
ETHTOOL_MSG_MODULE_FW_FLASH_ACTn/a
ETHTOOL_MSG_PHY_GET
SIOCGHWTSTAMP
ETHTOOL_MSG_TSCONFIG_GET
SIOCSHWTSTAMP
ETHTOOL_MSG_TSCONFIG_SET