xref: /linux/Documentation/networking/ethtool-netlink.rst (revision d53b8e36925256097a08d7cb749198d85cbf9b2b)
1=============================
2Netlink interface for ethtool
3=============================
4
5
6Basic information
7=================
8
9Netlink interface for ethtool uses generic netlink family ``ethtool``
10(userspace application should use macros ``ETHTOOL_GENL_NAME`` and
11``ETHTOOL_GENL_VERSION`` defined in ``<linux/ethtool_netlink.h>`` uapi
12header). This family does not use a specific header, all information in
13requests and replies is passed using netlink attributes.
14
15The ethtool netlink interface uses extended ACK for error and warning
16reporting, userspace application developers are encouraged to make these
17messages available to user in a suitable way.
18
19Requests can be divided into three categories: "get" (retrieving information),
20"set" (setting parameters) and "action" (invoking an action).
21
22All "set" and "action" type requests require admin privileges
23(``CAP_NET_ADMIN`` in the namespace). Most "get" type requests are allowed for
24anyone but there are exceptions (where the response contains sensitive
25information). In some cases, the request as such is allowed for anyone but
26unprivileged users have attributes with sensitive information (e.g.
27wake-on-lan password) omitted.
28
29
30Conventions
31===========
32
33Attributes which represent a boolean value usually use NLA_U8 type so that we
34can distinguish three states: "on", "off" and "not present" (meaning the
35information is not available in "get" requests or value is not to be changed
36in "set" requests). For these attributes, the "true" value should be passed as
37number 1 but any non-zero value should be understood as "true" by recipient.
38In the tables below, "bool" denotes NLA_U8 attributes interpreted in this way.
39
40In the message structure descriptions below, if an attribute name is suffixed
41with "+", parent nest can contain multiple attributes of the same type. This
42implements an array of entries.
43
44Attributes that need to be filled-in by device drivers and that are dumped to
45user space based on whether they are valid or not should not use zero as a
46valid value. This avoids the need to explicitly signal the validity of the
47attribute in the device driver API.
48
49
50Request header
51==============
52
53Each request or reply message contains a nested attribute with common header.
54Structure of this header is
55
56  ==============================  ======  =============================
57  ``ETHTOOL_A_HEADER_DEV_INDEX``  u32     device ifindex
58  ``ETHTOOL_A_HEADER_DEV_NAME``   string  device name
59  ``ETHTOOL_A_HEADER_FLAGS``      u32     flags common for all requests
60  ==============================  ======  =============================
61
62``ETHTOOL_A_HEADER_DEV_INDEX`` and ``ETHTOOL_A_HEADER_DEV_NAME`` identify the
63device message relates to. One of them is sufficient in requests, if both are
64used, they must identify the same device. Some requests, e.g. global string
65sets, do not require device identification. Most ``GET`` requests also allow
66dump requests without device identification to query the same information for
67all devices providing it (each device in a separate message).
68
69``ETHTOOL_A_HEADER_FLAGS`` is a bitmap of request flags common for all request
70types. The interpretation of these flags is the same for all request types but
71the flags may not apply to requests. Recognized flags are:
72
73  =================================  ===================================
74  ``ETHTOOL_FLAG_COMPACT_BITSETS``   use compact format bitsets in reply
75  ``ETHTOOL_FLAG_OMIT_REPLY``        omit optional reply (_SET and _ACT)
76  ``ETHTOOL_FLAG_STATS``             include optional device statistics
77  =================================  ===================================
78
79New request flags should follow the general idea that if the flag is not set,
80the behaviour is backward compatible, i.e. requests from old clients not aware
81of the flag should be interpreted the way the client expects. A client must
82not set flags it does not understand.
83
84
85Bit sets
86========
87
88For short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32``
89type is used. For arbitrary length bitmaps, ethtool netlink uses a nested
90attribute with contents of one of two forms: compact (two binary bitmaps
91representing bit values and mask of affected bits) and bit-by-bit (list of
92bits identified by either index or name).
93
94Verbose (bit-by-bit) bitsets allow sending symbolic names for bits together
95with their values which saves a round trip (when the bitset is passed in a
96request) or at least a second request (when the bitset is in a reply). This is
97useful for one shot applications like traditional ethtool command. On the
98other hand, long running applications like ethtool monitor (displaying
99notifications) or network management daemons may prefer fetching the names
100only once and using compact form to save message size. Notifications from
101ethtool netlink interface always use compact form for bitsets.
102
103A bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK``
104not set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests
105modifying a bitmap, the former changes the bit set in mask to values set in
106value and preserves the rest; the latter sets the bits set in the bitmap and
107clears the rest.
108
109Compact form: nested (bitset) attribute contents:
110
111  ============================  ======  ============================
112  ``ETHTOOL_A_BITSET_NOMASK``   flag    no mask, only a list
113  ``ETHTOOL_A_BITSET_SIZE``     u32     number of significant bits
114  ``ETHTOOL_A_BITSET_VALUE``    binary  bitmap of bit values
115  ``ETHTOOL_A_BITSET_MASK``     binary  bitmap of valid bits
116  ============================  ======  ============================
117
118Value and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits
119rounded up to a multiple of 32 bits. They consist of 32-bit words in host byte
120order, words ordered from least significant to most significant (i.e. the same
121way as bitmaps are passed with ioctl interface).
122
123For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are
124mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if
125``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair);
126if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not
127allowed (bitset represents a single bitmap.
128
129Kernel bit set length may differ from userspace length if older application is
130used on newer kernel or vice versa. If userspace bitmap is longer, an error is
131issued only if the request actually tries to set values of some bits not
132recognized by kernel.
133
134Bit-by-bit form: nested (bitset) attribute contents:
135
136 +------------------------------------+--------+-----------------------------+
137 | ``ETHTOOL_A_BITSET_NOMASK``        | flag   | no mask, only a list        |
138 +------------------------------------+--------+-----------------------------+
139 | ``ETHTOOL_A_BITSET_SIZE``          | u32    | number of significant bits  |
140 +------------------------------------+--------+-----------------------------+
141 | ``ETHTOOL_A_BITSET_BITS``          | nested | array of bits               |
142 +-+----------------------------------+--------+-----------------------------+
143 | | ``ETHTOOL_A_BITSET_BITS_BIT+``   | nested | one bit                     |
144 +-+-+--------------------------------+--------+-----------------------------+
145 | | | ``ETHTOOL_A_BITSET_BIT_INDEX`` | u32    | bit index (0 for LSB)       |
146 +-+-+--------------------------------+--------+-----------------------------+
147 | | | ``ETHTOOL_A_BITSET_BIT_NAME``  | string | bit name                    |
148 +-+-+--------------------------------+--------+-----------------------------+
149 | | | ``ETHTOOL_A_BITSET_BIT_VALUE`` | flag   | present if bit is set       |
150 +-+-+--------------------------------+--------+-----------------------------+
151
152Bit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can
153only contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an
154arbitrary number of them.  A bit may be identified by its index or by its
155name. When used in requests, listed bits are set to 0 or 1 according to
156``ETHTOOL_A_BITSET_BIT_VALUE``, the rest is preserved. A request fails if
157index exceeds kernel bit length or if name is not recognized.
158
159When ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as
160a simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in
161such case. Such bitset represents a bitmap with listed bits set and the rest
162zero.
163
164In requests, application can use either form. Form used by kernel in reply is
165determined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request
166header. Semantics of value and mask depends on the attribute.
167
168
169List of message types
170=====================
171
172All constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix
173according to message purpose:
174
175  ==============    ======================================
176  ``_GET``          userspace request to retrieve data
177  ``_SET``          userspace request to set data
178  ``_ACT``          userspace request to perform an action
179  ``_GET_REPLY``    kernel reply to a ``GET`` request
180  ``_SET_REPLY``    kernel reply to a ``SET`` request
181  ``_ACT_REPLY``    kernel reply to an ``ACT`` request
182  ``_NTF``          kernel notification
183  ==============    ======================================
184
185Userspace to kernel:
186
187  ===================================== =================================
188  ``ETHTOOL_MSG_STRSET_GET``            get string set
189  ``ETHTOOL_MSG_LINKINFO_GET``          get link settings
190  ``ETHTOOL_MSG_LINKINFO_SET``          set link settings
191  ``ETHTOOL_MSG_LINKMODES_GET``         get link modes info
192  ``ETHTOOL_MSG_LINKMODES_SET``         set link modes info
193  ``ETHTOOL_MSG_LINKSTATE_GET``         get link state
194  ``ETHTOOL_MSG_DEBUG_GET``             get debugging settings
195  ``ETHTOOL_MSG_DEBUG_SET``             set debugging settings
196  ``ETHTOOL_MSG_WOL_GET``               get wake-on-lan settings
197  ``ETHTOOL_MSG_WOL_SET``               set wake-on-lan settings
198  ``ETHTOOL_MSG_FEATURES_GET``          get device features
199  ``ETHTOOL_MSG_FEATURES_SET``          set device features
200  ``ETHTOOL_MSG_PRIVFLAGS_GET``         get private flags
201  ``ETHTOOL_MSG_PRIVFLAGS_SET``         set private flags
202  ``ETHTOOL_MSG_RINGS_GET``             get ring sizes
203  ``ETHTOOL_MSG_RINGS_SET``             set ring sizes
204  ``ETHTOOL_MSG_CHANNELS_GET``          get channel counts
205  ``ETHTOOL_MSG_CHANNELS_SET``          set channel counts
206  ``ETHTOOL_MSG_COALESCE_GET``          get coalescing parameters
207  ``ETHTOOL_MSG_COALESCE_SET``          set coalescing parameters
208  ``ETHTOOL_MSG_PAUSE_GET``             get pause parameters
209  ``ETHTOOL_MSG_PAUSE_SET``             set pause parameters
210  ``ETHTOOL_MSG_EEE_GET``               get EEE settings
211  ``ETHTOOL_MSG_EEE_SET``               set EEE settings
212  ``ETHTOOL_MSG_TSINFO_GET``		get timestamping info
213  ``ETHTOOL_MSG_CABLE_TEST_ACT``        action start cable test
214  ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT``    action start raw TDR cable test
215  ``ETHTOOL_MSG_TUNNEL_INFO_GET``       get tunnel offload info
216  ``ETHTOOL_MSG_FEC_GET``               get FEC settings
217  ``ETHTOOL_MSG_FEC_SET``               set FEC settings
218  ``ETHTOOL_MSG_MODULE_EEPROM_GET``     read SFP module EEPROM
219  ``ETHTOOL_MSG_STATS_GET``             get standard statistics
220  ``ETHTOOL_MSG_PHC_VCLOCKS_GET``       get PHC virtual clocks info
221  ``ETHTOOL_MSG_MODULE_SET``            set transceiver module parameters
222  ``ETHTOOL_MSG_MODULE_GET``            get transceiver module parameters
223  ``ETHTOOL_MSG_PSE_SET``               set PSE parameters
224  ``ETHTOOL_MSG_PSE_GET``               get PSE parameters
225  ``ETHTOOL_MSG_RSS_GET``               get RSS settings
226  ``ETHTOOL_MSG_PLCA_GET_CFG``          get PLCA RS parameters
227  ``ETHTOOL_MSG_PLCA_SET_CFG``          set PLCA RS parameters
228  ``ETHTOOL_MSG_PLCA_GET_STATUS``       get PLCA RS status
229  ``ETHTOOL_MSG_MM_GET``                get MAC merge layer state
230  ``ETHTOOL_MSG_MM_SET``                set MAC merge layer parameters
231  ``ETHTOOL_MSG_MODULE_FW_FLASH_ACT``   flash transceiver module firmware
232  ===================================== =================================
233
234Kernel to userspace:
235
236  ======================================== =================================
237  ``ETHTOOL_MSG_STRSET_GET_REPLY``         string set contents
238  ``ETHTOOL_MSG_LINKINFO_GET_REPLY``       link settings
239  ``ETHTOOL_MSG_LINKINFO_NTF``             link settings notification
240  ``ETHTOOL_MSG_LINKMODES_GET_REPLY``      link modes info
241  ``ETHTOOL_MSG_LINKMODES_NTF``            link modes notification
242  ``ETHTOOL_MSG_LINKSTATE_GET_REPLY``      link state info
243  ``ETHTOOL_MSG_DEBUG_GET_REPLY``          debugging settings
244  ``ETHTOOL_MSG_DEBUG_NTF``                debugging settings notification
245  ``ETHTOOL_MSG_WOL_GET_REPLY``            wake-on-lan settings
246  ``ETHTOOL_MSG_WOL_NTF``                  wake-on-lan settings notification
247  ``ETHTOOL_MSG_FEATURES_GET_REPLY``       device features
248  ``ETHTOOL_MSG_FEATURES_SET_REPLY``       optional reply to FEATURES_SET
249  ``ETHTOOL_MSG_FEATURES_NTF``             netdev features notification
250  ``ETHTOOL_MSG_PRIVFLAGS_GET_REPLY``      private flags
251  ``ETHTOOL_MSG_PRIVFLAGS_NTF``            private flags
252  ``ETHTOOL_MSG_RINGS_GET_REPLY``          ring sizes
253  ``ETHTOOL_MSG_RINGS_NTF``                ring sizes
254  ``ETHTOOL_MSG_CHANNELS_GET_REPLY``       channel counts
255  ``ETHTOOL_MSG_CHANNELS_NTF``             channel counts
256  ``ETHTOOL_MSG_COALESCE_GET_REPLY``       coalescing parameters
257  ``ETHTOOL_MSG_COALESCE_NTF``             coalescing parameters
258  ``ETHTOOL_MSG_PAUSE_GET_REPLY``          pause parameters
259  ``ETHTOOL_MSG_PAUSE_NTF``                pause parameters
260  ``ETHTOOL_MSG_EEE_GET_REPLY``            EEE settings
261  ``ETHTOOL_MSG_EEE_NTF``                  EEE settings
262  ``ETHTOOL_MSG_TSINFO_GET_REPLY``         timestamping info
263  ``ETHTOOL_MSG_CABLE_TEST_NTF``           Cable test results
264  ``ETHTOOL_MSG_CABLE_TEST_TDR_NTF``       Cable test TDR results
265  ``ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY``    tunnel offload info
266  ``ETHTOOL_MSG_FEC_GET_REPLY``            FEC settings
267  ``ETHTOOL_MSG_FEC_NTF``                  FEC settings
268  ``ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY``  read SFP module EEPROM
269  ``ETHTOOL_MSG_STATS_GET_REPLY``          standard statistics
270  ``ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY``    PHC virtual clocks info
271  ``ETHTOOL_MSG_MODULE_GET_REPLY``         transceiver module parameters
272  ``ETHTOOL_MSG_PSE_GET_REPLY``            PSE parameters
273  ``ETHTOOL_MSG_RSS_GET_REPLY``            RSS settings
274  ``ETHTOOL_MSG_PLCA_GET_CFG_REPLY``       PLCA RS parameters
275  ``ETHTOOL_MSG_PLCA_GET_STATUS_REPLY``    PLCA RS status
276  ``ETHTOOL_MSG_PLCA_NTF``                 PLCA RS parameters
277  ``ETHTOOL_MSG_MM_GET_REPLY``             MAC merge layer status
278  ``ETHTOOL_MSG_MODULE_FW_FLASH_NTF``      transceiver module flash updates
279  ======================================== =================================
280
281``GET`` requests are sent by userspace applications to retrieve device
282information. They usually do not contain any message specific attributes.
283Kernel replies with corresponding "GET_REPLY" message. For most types, ``GET``
284request with ``NLM_F_DUMP`` and no device identification can be used to query
285the information for all devices supporting the request.
286
287If the data can be also modified, corresponding ``SET`` message with the same
288layout as corresponding ``GET_REPLY`` is used to request changes. Only
289attributes where a change is requested are included in such request (also, not
290all attributes may be changed). Replies to most ``SET`` request consist only
291of error code and extack; if kernel provides additional data, it is sent in
292the form of corresponding ``SET_REPLY`` message which can be suppressed by
293setting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header.
294
295Data modification also triggers sending a ``NTF`` message with a notification.
296These usually bear only a subset of attributes which was affected by the
297change. The same notification is issued if the data is modified using other
298means (mostly ioctl ethtool interface). Unlike notifications from ethtool
299netlink code which are only sent if something actually changed, notifications
300triggered by ioctl interface may be sent even if the request did not actually
301change any data.
302
303``ACT`` messages request kernel (driver) to perform a specific action. If some
304information is reported by kernel (which can be suppressed by setting
305``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of
306an ``ACT_REPLY`` message. Performing an action also triggers a notification
307(``NTF`` message).
308
309Later sections describe the format and semantics of these messages.
310
311
312STRSET_GET
313==========
314
315Requests contents of a string set as provided by ioctl commands
316``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user
317writeable so that the corresponding ``STRSET_SET`` message is only used in
318kernel replies. There are two types of string sets: global (independent of
319a device, e.g. device feature names) and device specific (e.g. device private
320flags).
321
322Request contents:
323
324 +---------------------------------------+--------+------------------------+
325 | ``ETHTOOL_A_STRSET_HEADER``           | nested | request header         |
326 +---------------------------------------+--------+------------------------+
327 | ``ETHTOOL_A_STRSET_STRINGSETS``       | nested | string set to request  |
328 +-+-------------------------------------+--------+------------------------+
329 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set         |
330 +-+-+-----------------------------------+--------+------------------------+
331 | | | ``ETHTOOL_A_STRINGSET_ID``        | u32    | set id                 |
332 +-+-+-----------------------------------+--------+------------------------+
333
334Kernel response contents:
335
336 +---------------------------------------+--------+-----------------------+
337 | ``ETHTOOL_A_STRSET_HEADER``           | nested | reply header          |
338 +---------------------------------------+--------+-----------------------+
339 | ``ETHTOOL_A_STRSET_STRINGSETS``       | nested | array of string sets  |
340 +-+-------------------------------------+--------+-----------------------+
341 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set        |
342 +-+-+-----------------------------------+--------+-----------------------+
343 | | | ``ETHTOOL_A_STRINGSET_ID``        | u32    | set id                |
344 +-+-+-----------------------------------+--------+-----------------------+
345 | | | ``ETHTOOL_A_STRINGSET_COUNT``     | u32    | number of strings     |
346 +-+-+-----------------------------------+--------+-----------------------+
347 | | | ``ETHTOOL_A_STRINGSET_STRINGS``   | nested | array of strings      |
348 +-+-+-+---------------------------------+--------+-----------------------+
349 | | | | ``ETHTOOL_A_STRINGS_STRING+``   | nested | one string            |
350 +-+-+-+-+-------------------------------+--------+-----------------------+
351 | | | | | ``ETHTOOL_A_STRING_INDEX``    | u32    | string index          |
352 +-+-+-+-+-------------------------------+--------+-----------------------+
353 | | | | | ``ETHTOOL_A_STRING_VALUE``    | string | string value          |
354 +-+-+-+-+-------------------------------+--------+-----------------------+
355 | ``ETHTOOL_A_STRSET_COUNTS_ONLY``      | flag   | return only counts    |
356 +---------------------------------------+--------+-----------------------+
357
358Device identification in request header is optional. Depending on its presence
359a and ``NLM_F_DUMP`` flag, there are three type of ``STRSET_GET`` requests:
360
361 - no ``NLM_F_DUMP,`` no device: get "global" stringsets
362 - no ``NLM_F_DUMP``, with device: get string sets related to the device
363 - ``NLM_F_DUMP``, no device: get device related string sets for all devices
364
365If there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of
366requested type are returned, otherwise only those specified in the request.
367Flag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string
368counts of the sets, not the actual strings.
369
370
371LINKINFO_GET
372============
373
374Requests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for
375link modes and autonegotiation related information. The request does not use
376any attributes.
377
378Request contents:
379
380  ====================================  ======  ==========================
381  ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
382  ====================================  ======  ==========================
383
384Kernel response contents:
385
386  ====================================  ======  ==========================
387  ``ETHTOOL_A_LINKINFO_HEADER``         nested  reply header
388  ``ETHTOOL_A_LINKINFO_PORT``           u8      physical port
389  ``ETHTOOL_A_LINKINFO_PHYADDR``        u8      phy MDIO address
390  ``ETHTOOL_A_LINKINFO_TP_MDIX``        u8      MDI(-X) status
391  ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL``   u8      MDI(-X) control
392  ``ETHTOOL_A_LINKINFO_TRANSCEIVER``    u8      transceiver
393  ====================================  ======  ==========================
394
395Attributes and their values have the same meaning as matching members of the
396corresponding ioctl structures.
397
398``LINKINFO_GET`` allows dump requests (kernel returns reply message for all
399devices supporting the request).
400
401
402LINKINFO_SET
403============
404
405``LINKINFO_SET`` request allows setting some of the attributes reported by
406``LINKINFO_GET``.
407
408Request contents:
409
410  ====================================  ======  ==========================
411  ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
412  ``ETHTOOL_A_LINKINFO_PORT``           u8      physical port
413  ``ETHTOOL_A_LINKINFO_PHYADDR``        u8      phy MDIO address
414  ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL``   u8      MDI(-X) control
415  ====================================  ======  ==========================
416
417MDI(-X) status and transceiver cannot be set, request with the corresponding
418attributes is rejected.
419
420
421LINKMODES_GET
422=============
423
424Requests link modes (supported, advertised and peer advertised) and related
425information (autonegotiation status, link speed and duplex) as provided by
426``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes.
427
428Request contents:
429
430  ====================================  ======  ==========================
431  ``ETHTOOL_A_LINKMODES_HEADER``        nested  request header
432  ====================================  ======  ==========================
433
434Kernel response contents:
435
436  ==========================================  ======  ==========================
437  ``ETHTOOL_A_LINKMODES_HEADER``              nested  reply header
438  ``ETHTOOL_A_LINKMODES_AUTONEG``             u8      autonegotiation status
439  ``ETHTOOL_A_LINKMODES_OURS``                bitset  advertised link modes
440  ``ETHTOOL_A_LINKMODES_PEER``                bitset  partner link modes
441  ``ETHTOOL_A_LINKMODES_SPEED``               u32     link speed (Mb/s)
442  ``ETHTOOL_A_LINKMODES_DUPLEX``              u8      duplex mode
443  ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG``    u8      Master/slave port mode
444  ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE``  u8      Master/slave port state
445  ``ETHTOOL_A_LINKMODES_RATE_MATCHING``       u8      PHY rate matching
446  ==========================================  ======  ==========================
447
448For ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask
449represents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit
450list.
451
452``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all
453devices supporting the request).
454
455
456LINKMODES_SET
457=============
458
459Request contents:
460
461  ==========================================  ======  ==========================
462  ``ETHTOOL_A_LINKMODES_HEADER``              nested  request header
463  ``ETHTOOL_A_LINKMODES_AUTONEG``             u8      autonegotiation status
464  ``ETHTOOL_A_LINKMODES_OURS``                bitset  advertised link modes
465  ``ETHTOOL_A_LINKMODES_PEER``                bitset  partner link modes
466  ``ETHTOOL_A_LINKMODES_SPEED``               u32     link speed (Mb/s)
467  ``ETHTOOL_A_LINKMODES_DUPLEX``              u8      duplex mode
468  ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG``    u8      Master/slave port mode
469  ``ETHTOOL_A_LINKMODES_RATE_MATCHING``       u8      PHY rate matching
470  ``ETHTOOL_A_LINKMODES_LANES``               u32     lanes
471  ==========================================  ======  ==========================
472
473``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If
474autonegotiation is on (either set now or kept from before), advertised modes
475are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one
476of speed, duplex and lanes is specified, kernel adjusts advertised modes to all
477supported modes matching speed, duplex, lanes or all (whatever is specified).
478This autoselection is done on ethtool side with ioctl interface, netlink
479interface is supposed to allow requesting changes without knowing what exactly
480kernel supports.
481
482
483LINKSTATE_GET
484=============
485
486Requests link state information. Link up/down flag (as provided by
487``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might
488be provided as well. In general, extended state describes reasons for why a port
489is down, or why it operates in some non-obvious mode. This request does not have
490any attributes.
491
492Request contents:
493
494  ====================================  ======  ==========================
495  ``ETHTOOL_A_LINKSTATE_HEADER``        nested  request header
496  ====================================  ======  ==========================
497
498Kernel response contents:
499
500  ====================================  ======  ============================
501  ``ETHTOOL_A_LINKSTATE_HEADER``        nested  reply header
502  ``ETHTOOL_A_LINKSTATE_LINK``          bool    link state (up/down)
503  ``ETHTOOL_A_LINKSTATE_SQI``           u32     Current Signal Quality Index
504  ``ETHTOOL_A_LINKSTATE_SQI_MAX``       u32     Max support SQI value
505  ``ETHTOOL_A_LINKSTATE_EXT_STATE``     u8      link extended state
506  ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``  u8      link extended substate
507  ``ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT``  u32     count of link down events
508  ====================================  ======  ============================
509
510For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns
511carrier flag provided by ``netif_carrier_ok()`` but there are drivers which
512define their own handler.
513
514``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are
515optional values. ethtool core can provide either both
516``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``,
517or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them.
518
519``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all
520devices supporting the request).
521
522
523Link extended states:
524
525  ================================================      ============================================
526  ``ETHTOOL_LINK_EXT_STATE_AUTONEG``                    States relating to the autonegotiation or
527                                                        issues therein
528
529  ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE``      Failure during link training
530
531  ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH``      Logical mismatch in physical coding sublayer
532                                                        or forward error correction sublayer
533
534  ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY``       Signal integrity issues
535
536  ``ETHTOOL_LINK_EXT_STATE_NO_CABLE``                   No cable connected
537
538  ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE``                Failure is related to cable,
539                                                        e.g., unsupported cable
540
541  ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE``               Failure is related to EEPROM, e.g., failure
542                                                        during reading or parsing the data
543
544  ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE``        Failure during calibration algorithm
545
546  ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED``      The hardware is not able to provide the
547                                                        power required from cable or module
548
549  ``ETHTOOL_LINK_EXT_STATE_OVERHEAT``                   The module is overheated
550
551  ``ETHTOOL_LINK_EXT_STATE_MODULE``                     Transceiver module issue
552  ================================================      ============================================
553
554Link extended substates:
555
556  Autoneg substates:
557
558  ===============================================================   ================================
559  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED``              Peer side is down
560
561  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED``                 Ack not received from peer side
562
563  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED``        Next page exchange failed
564
565  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE``   Peer side is down during force
566                                                                    mode or there is no agreement of
567                                                                    speed
568
569  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE``     Forward error correction modes
570                                                                    in both sides are mismatched
571
572  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD``                           No Highest Common Denominator
573  ===============================================================   ================================
574
575  Link training substates:
576
577  ===========================================================================   ====================
578  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED``                    Frames were not
579                                                                                 recognized, the
580                                                                                 lock failed
581
582  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT``                       The lock did not
583                                                                                 occur before
584                                                                                 timeout
585
586  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY``    Peer side did not
587                                                                                 send ready signal
588                                                                                 after training
589                                                                                 process
590
591  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT``                                  Remote side is not
592                                                                                 ready yet
593  ===========================================================================   ====================
594
595  Link logical mismatch substates:
596
597  ================================================================   ===============================
598  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK``   Physical coding sublayer was
599                                                                     not locked in first phase -
600                                                                     block lock
601
602  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK``      Physical coding sublayer was
603                                                                     not locked in second phase -
604                                                                     alignment markers lock
605
606  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS``     Physical coding sublayer did
607                                                                     not get align status
608
609  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED``             FC forward error correction is
610                                                                     not locked
611
612  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED``             RS forward error correction is
613                                                                     not locked
614  ================================================================   ===============================
615
616  Bad signal integrity substates:
617
618  =================================================================    =============================
619  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS``    Large number of physical
620                                                                       errors
621
622  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE``                   The system attempted to
623                                                                       operate the cable at a rate
624                                                                       that is not formally
625                                                                       supported, which led to
626                                                                       signal integrity issues
627
628  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST``        The external clock signal for
629                                                                       SerDes is too weak or
630                                                                       unavailable.
631
632  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS``                        The received signal for
633                                                                       SerDes is too weak because
634                                                                       analog loss of signal.
635  =================================================================    =============================
636
637  Cable issue substates:
638
639  ===================================================   ============================================
640  ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE``    Unsupported cable
641
642  ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE``   Cable test failure
643  ===================================================   ============================================
644
645  Transceiver module issue substates:
646
647  ===================================================   ============================================
648  ``ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY``   The CMIS Module State Machine did not reach
649                                                        the ModuleReady state. For example, if the
650                                                        module is stuck at ModuleFault state
651  ===================================================   ============================================
652
653DEBUG_GET
654=========
655
656Requests debugging settings of a device. At the moment, only message mask is
657provided.
658
659Request contents:
660
661  ====================================  ======  ==========================
662  ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
663  ====================================  ======  ==========================
664
665Kernel response contents:
666
667  ====================================  ======  ==========================
668  ``ETHTOOL_A_DEBUG_HEADER``            nested  reply header
669  ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
670  ====================================  ======  ==========================
671
672The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as
673provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl
674interface. While it is called message level there for historical reasons, most
675drivers and almost all newer drivers use it as a mask of enabled message
676classes (represented by ``NETIF_MSG_*`` constants); therefore netlink
677interface follows its actual use in practice.
678
679``DEBUG_GET`` allows dump requests (kernel returns reply messages for all
680devices supporting the request).
681
682
683DEBUG_SET
684=========
685
686Set or update debugging settings of a device. At the moment, only message mask
687is supported.
688
689Request contents:
690
691  ====================================  ======  ==========================
692  ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
693  ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
694  ====================================  ======  ==========================
695
696``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of
697enabled debugging message types for the device.
698
699
700WOL_GET
701=======
702
703Query device wake-on-lan settings. Unlike most "GET" type requests,
704``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it
705(potentially) provides SecureOn(tm) password which is confidential.
706
707Request contents:
708
709  ====================================  ======  ==========================
710  ``ETHTOOL_A_WOL_HEADER``              nested  request header
711  ====================================  ======  ==========================
712
713Kernel response contents:
714
715  ====================================  ======  ==========================
716  ``ETHTOOL_A_WOL_HEADER``              nested  reply header
717  ``ETHTOOL_A_WOL_MODES``               bitset  mask of enabled WoL modes
718  ``ETHTOOL_A_WOL_SOPASS``              binary  SecureOn(tm) password
719  ====================================  ======  ==========================
720
721In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the
722device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only
723included in reply if ``WAKE_MAGICSECURE`` mode is supported.
724
725
726WOL_SET
727=======
728
729Set or update wake-on-lan settings.
730
731Request contents:
732
733  ====================================  ======  ==========================
734  ``ETHTOOL_A_WOL_HEADER``              nested  request header
735  ``ETHTOOL_A_WOL_MODES``               bitset  enabled WoL modes
736  ``ETHTOOL_A_WOL_SOPASS``              binary  SecureOn(tm) password
737  ====================================  ======  ==========================
738
739``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting
740``WAKE_MAGICSECURE`` mode.
741
742
743FEATURES_GET
744============
745
746Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request.
747
748Request contents:
749
750  ====================================  ======  ==========================
751  ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
752  ====================================  ======  ==========================
753
754Kernel response contents:
755
756  ====================================  ======  ==========================
757  ``ETHTOOL_A_FEATURES_HEADER``         nested  reply header
758  ``ETHTOOL_A_FEATURES_HW``             bitset  dev->hw_features
759  ``ETHTOOL_A_FEATURES_WANTED``         bitset  dev->wanted_features
760  ``ETHTOOL_A_FEATURES_ACTIVE``         bitset  dev->features
761  ``ETHTOOL_A_FEATURES_NOCHANGE``       bitset  NETIF_F_NEVER_CHANGE
762  ====================================  ======  ==========================
763
764Bitmaps in kernel response have the same meaning as bitmaps used in ioctl
765interference but attribute names are different (they are based on
766corresponding members of struct net_device). Legacy "flags" are not provided,
767if userspace needs them (most likely only ethtool for backward compatibility),
768it can calculate their values from related feature bits itself.
769ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to
770provide all names when using verbose bitmap format), the other three use no
771mask (simple bit lists).
772
773
774FEATURES_SET
775============
776
777Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request.
778
779Request contents:
780
781  ====================================  ======  ==========================
782  ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
783  ``ETHTOOL_A_FEATURES_WANTED``         bitset  requested features
784  ====================================  ======  ==========================
785
786Kernel response contents:
787
788  ====================================  ======  ==========================
789  ``ETHTOOL_A_FEATURES_HEADER``         nested  reply header
790  ``ETHTOOL_A_FEATURES_WANTED``         bitset  diff wanted vs. result
791  ``ETHTOOL_A_FEATURES_ACTIVE``         bitset  diff old vs. new active
792  ====================================  ======  ==========================
793
794Request contains only one bitset which can be either value/mask pair (request
795to change specific feature bits and leave the rest) or only a value (request
796to set all features to specified set).
797
798As request is subject to netdev_change_features() sanity checks, optional
799kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request
800header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED``
801reports the difference between client request and actual result: mask consists
802of bits which differ between requested features and result (dev->features
803after the operation), value consists of values of these bits in the request
804(i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE``
805reports the difference between old and new dev->features: mask consists of
806bits which have changed, values are their values in new dev->features (after
807the operation).
808
809``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features
810are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl
811request but also each time features are modified with netdev_update_features()
812or netdev_change_features().
813
814
815PRIVFLAGS_GET
816=============
817
818Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request.
819
820Request contents:
821
822  ====================================  ======  ==========================
823  ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
824  ====================================  ======  ==========================
825
826Kernel response contents:
827
828  ====================================  ======  ==========================
829  ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  reply header
830  ``ETHTOOL_A_PRIVFLAGS_FLAGS``         bitset  private flags
831  ====================================  ======  ==========================
832
833``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags.
834These flags are defined by driver, their number and names (and also meaning)
835are device dependent. For compact bitset format, names can be retrieved as
836``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested,
837response uses all private flags supported by the device as mask so that client
838gets the full information without having to fetch the string set with names.
839
840
841PRIVFLAGS_SET
842=============
843
844Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS``
845ioctl request.
846
847Request contents:
848
849  ====================================  ======  ==========================
850  ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
851  ``ETHTOOL_A_PRIVFLAGS_FLAGS``         bitset  private flags
852  ====================================  ======  ==========================
853
854``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or
855modify only values of some of them.
856
857
858RINGS_GET
859=========
860
861Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request.
862
863Request contents:
864
865  ====================================  ======  ==========================
866  ``ETHTOOL_A_RINGS_HEADER``            nested  request header
867  ====================================  ======  ==========================
868
869Kernel response contents:
870
871  =======================================   ======  ===========================
872  ``ETHTOOL_A_RINGS_HEADER``                nested  reply header
873  ``ETHTOOL_A_RINGS_RX_MAX``                u32     max size of RX ring
874  ``ETHTOOL_A_RINGS_RX_MINI_MAX``           u32     max size of RX mini ring
875  ``ETHTOOL_A_RINGS_RX_JUMBO_MAX``          u32     max size of RX jumbo ring
876  ``ETHTOOL_A_RINGS_TX_MAX``                u32     max size of TX ring
877  ``ETHTOOL_A_RINGS_RX``                    u32     size of RX ring
878  ``ETHTOOL_A_RINGS_RX_MINI``               u32     size of RX mini ring
879  ``ETHTOOL_A_RINGS_RX_JUMBO``              u32     size of RX jumbo ring
880  ``ETHTOOL_A_RINGS_TX``                    u32     size of TX ring
881  ``ETHTOOL_A_RINGS_RX_BUF_LEN``            u32     size of buffers on the ring
882  ``ETHTOOL_A_RINGS_TCP_DATA_SPLIT``        u8      TCP header / data split
883  ``ETHTOOL_A_RINGS_CQE_SIZE``              u32     Size of TX/RX CQE
884  ``ETHTOOL_A_RINGS_TX_PUSH``               u8      flag of TX Push mode
885  ``ETHTOOL_A_RINGS_RX_PUSH``               u8      flag of RX Push mode
886  ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN``       u32     size of TX push buffer
887  ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX``   u32     max size of TX push buffer
888  =======================================   ======  ===========================
889
890``ETHTOOL_A_RINGS_TCP_DATA_SPLIT`` indicates whether the device is usable with
891page-flipping TCP zero-copy receive (``getsockopt(TCP_ZEROCOPY_RECEIVE)``).
892If enabled the device is configured to place frame headers and data into
893separate buffers. The device configuration must make it possible to receive
894full memory pages of data, for example because MTU is high enough or through
895HW-GRO.
896
897``ETHTOOL_A_RINGS_[RX|TX]_PUSH`` flag is used to enable descriptor fast
898path to send or receive packets. In ordinary path, driver fills descriptors in DRAM and
899notifies NIC hardware. In fast path, driver pushes descriptors to the device
900through MMIO writes, thus reducing the latency. However, enabling this feature
901may increase the CPU cost. Drivers may enforce additional per-packet
902eligibility checks (e.g. on packet size).
903
904``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN`` specifies the maximum number of bytes of a
905transmitted packet a driver can push directly to the underlying device
906('push' mode). Pushing some of the payload bytes to the device has the
907advantages of reducing latency for small packets by avoiding DMA mapping (same
908as ``ETHTOOL_A_RINGS_TX_PUSH`` parameter) as well as allowing the underlying
909device to process packet headers ahead of fetching its payload.
910This can help the device to make fast actions based on the packet's headers.
911This is similar to the "tx-copybreak" parameter, which copies the packet to a
912preallocated DMA memory area instead of mapping new memory. However,
913tx-push-buff parameter copies the packet directly to the device to allow the
914device to take faster actions on the packet.
915
916RINGS_SET
917=========
918
919Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request.
920
921Request contents:
922
923  ====================================  ======  ===========================
924  ``ETHTOOL_A_RINGS_HEADER``            nested  reply header
925  ``ETHTOOL_A_RINGS_RX``                u32     size of RX ring
926  ``ETHTOOL_A_RINGS_RX_MINI``           u32     size of RX mini ring
927  ``ETHTOOL_A_RINGS_RX_JUMBO``          u32     size of RX jumbo ring
928  ``ETHTOOL_A_RINGS_TX``                u32     size of TX ring
929  ``ETHTOOL_A_RINGS_RX_BUF_LEN``        u32     size of buffers on the ring
930  ``ETHTOOL_A_RINGS_CQE_SIZE``          u32     Size of TX/RX CQE
931  ``ETHTOOL_A_RINGS_TX_PUSH``           u8      flag of TX Push mode
932  ``ETHTOOL_A_RINGS_RX_PUSH``           u8      flag of RX Push mode
933  ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN``   u32     size of TX push buffer
934  ====================================  ======  ===========================
935
936Kernel checks that requested ring sizes do not exceed limits reported by
937driver. Driver may impose additional constraints and may not suspport all
938attributes.
939
940
941``ETHTOOL_A_RINGS_CQE_SIZE`` specifies the completion queue event size.
942Completion queue events(CQE) are the events posted by NIC to indicate the
943completion status of a packet when the packet is sent(like send success or
944error) or received(like pointers to packet fragments). The CQE size parameter
945enables to modify the CQE size other than default size if NIC supports it.
946A bigger CQE can have more receive buffer pointers inturn NIC can transfer
947a bigger frame from wire. Based on the NIC hardware, the overall completion
948queue size can be adjusted in the driver if CQE size is modified.
949
950CHANNELS_GET
951============
952
953Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request.
954
955Request contents:
956
957  ====================================  ======  ==========================
958  ``ETHTOOL_A_CHANNELS_HEADER``         nested  request header
959  ====================================  ======  ==========================
960
961Kernel response contents:
962
963  =====================================  ======  ==========================
964  ``ETHTOOL_A_CHANNELS_HEADER``          nested  reply header
965  ``ETHTOOL_A_CHANNELS_RX_MAX``          u32     max receive channels
966  ``ETHTOOL_A_CHANNELS_TX_MAX``          u32     max transmit channels
967  ``ETHTOOL_A_CHANNELS_OTHER_MAX``       u32     max other channels
968  ``ETHTOOL_A_CHANNELS_COMBINED_MAX``    u32     max combined channels
969  ``ETHTOOL_A_CHANNELS_RX_COUNT``        u32     receive channel count
970  ``ETHTOOL_A_CHANNELS_TX_COUNT``        u32     transmit channel count
971  ``ETHTOOL_A_CHANNELS_OTHER_COUNT``     u32     other channel count
972  ``ETHTOOL_A_CHANNELS_COMBINED_COUNT``  u32     combined channel count
973  =====================================  ======  ==========================
974
975
976CHANNELS_SET
977============
978
979Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request.
980
981Request contents:
982
983  =====================================  ======  ==========================
984  ``ETHTOOL_A_CHANNELS_HEADER``          nested  request header
985  ``ETHTOOL_A_CHANNELS_RX_COUNT``        u32     receive channel count
986  ``ETHTOOL_A_CHANNELS_TX_COUNT``        u32     transmit channel count
987  ``ETHTOOL_A_CHANNELS_OTHER_COUNT``     u32     other channel count
988  ``ETHTOOL_A_CHANNELS_COMBINED_COUNT``  u32     combined channel count
989  =====================================  ======  ==========================
990
991Kernel checks that requested channel counts do not exceed limits reported by
992driver. Driver may impose additional constraints and may not suspport all
993attributes.
994
995
996COALESCE_GET
997============
998
999Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request.
1000
1001Request contents:
1002
1003  ====================================  ======  ==========================
1004  ``ETHTOOL_A_COALESCE_HEADER``         nested  request header
1005  ====================================  ======  ==========================
1006
1007Kernel response contents:
1008
1009  ===========================================  ======  =======================
1010  ``ETHTOOL_A_COALESCE_HEADER``                nested  reply header
1011  ``ETHTOOL_A_COALESCE_RX_USECS``              u32     delay (us), normal Rx
1012  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES``         u32     max packets, normal Rx
1013  ``ETHTOOL_A_COALESCE_RX_USECS_IRQ``          u32     delay (us), Rx in IRQ
1014  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ``     u32     max packets, Rx in IRQ
1015  ``ETHTOOL_A_COALESCE_TX_USECS``              u32     delay (us), normal Tx
1016  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES``         u32     max packets, normal Tx
1017  ``ETHTOOL_A_COALESCE_TX_USECS_IRQ``          u32     delay (us), Tx in IRQ
1018  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ``     u32     IRQ packets, Tx in IRQ
1019  ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS``     u32     delay of stats update
1020  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX``       bool    adaptive Rx coalesce
1021  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX``       bool    adaptive Tx coalesce
1022  ``ETHTOOL_A_COALESCE_PKT_RATE_LOW``          u32     threshold for low rate
1023  ``ETHTOOL_A_COALESCE_RX_USECS_LOW``          u32     delay (us), low Rx
1024  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW``     u32     max packets, low Rx
1025  ``ETHTOOL_A_COALESCE_TX_USECS_LOW``          u32     delay (us), low Tx
1026  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW``     u32     max packets, low Tx
1027  ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH``         u32     threshold for high rate
1028  ``ETHTOOL_A_COALESCE_RX_USECS_HIGH``         u32     delay (us), high Rx
1029  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH``    u32     max packets, high Rx
1030  ``ETHTOOL_A_COALESCE_TX_USECS_HIGH``         u32     delay (us), high Tx
1031  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH``    u32     max packets, high Tx
1032  ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL``  u32     rate sampling interval
1033  ``ETHTOOL_A_COALESCE_USE_CQE_TX``            bool    timer reset mode, Tx
1034  ``ETHTOOL_A_COALESCE_USE_CQE_RX``            bool    timer reset mode, Rx
1035  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``     u32     max aggr size, Tx
1036  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES``    u32     max aggr packets, Tx
1037  ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS``    u32     time (us), aggr, Tx
1038  ``ETHTOOL_A_COALESCE_RX_PROFILE``            nested  profile of DIM, Rx
1039  ``ETHTOOL_A_COALESCE_TX_PROFILE``            nested  profile of DIM, Tx
1040  ===========================================  ======  =======================
1041
1042Attributes are only included in reply if their value is not zero or the
1043corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e.
1044they are declared as supported by driver).
1045
1046Timer reset mode (``ETHTOOL_A_COALESCE_USE_CQE_TX`` and
1047``ETHTOOL_A_COALESCE_USE_CQE_RX``) controls the interaction between packet
1048arrival and the various time based delay parameters. By default timers are
1049expected to limit the max delay between any packet arrival/departure and a
1050corresponding interrupt. In this mode timer should be started by packet
1051arrival (sometimes delivery of previous interrupt) and reset when interrupt
1052is delivered.
1053Setting the appropriate attribute to 1 will enable ``CQE`` mode, where
1054each packet event resets the timer. In this mode timer is used to force
1055the interrupt if queue goes idle, while busy queues depend on the packet
1056limit to trigger interrupts.
1057
1058Tx aggregation consists of copying frames into a contiguous buffer so that they
1059can be submitted as a single IO operation. ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``
1060describes the maximum size in bytes for the submitted buffer.
1061``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES`` describes the maximum number of frames
1062that can be aggregated into a single buffer.
1063``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS`` describes the amount of time in usecs,
1064counted since the first packet arrival in an aggregated block, after which the
1065block should be sent.
1066This feature is mainly of interest for specific USB devices which does not cope
1067well with frequent small-sized URBs transmissions.
1068
1069``ETHTOOL_A_COALESCE_RX_PROFILE`` and ``ETHTOOL_A_COALESCE_TX_PROFILE`` refer
1070to DIM parameters, see `Generic Network Dynamic Interrupt Moderation (Net DIM)
1071<https://www.kernel.org/doc/Documentation/networking/net_dim.rst>`_.
1072
1073COALESCE_SET
1074============
1075
1076Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request.
1077
1078Request contents:
1079
1080  ===========================================  ======  =======================
1081  ``ETHTOOL_A_COALESCE_HEADER``                nested  request header
1082  ``ETHTOOL_A_COALESCE_RX_USECS``              u32     delay (us), normal Rx
1083  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES``         u32     max packets, normal Rx
1084  ``ETHTOOL_A_COALESCE_RX_USECS_IRQ``          u32     delay (us), Rx in IRQ
1085  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ``     u32     max packets, Rx in IRQ
1086  ``ETHTOOL_A_COALESCE_TX_USECS``              u32     delay (us), normal Tx
1087  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES``         u32     max packets, normal Tx
1088  ``ETHTOOL_A_COALESCE_TX_USECS_IRQ``          u32     delay (us), Tx in IRQ
1089  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ``     u32     IRQ packets, Tx in IRQ
1090  ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS``     u32     delay of stats update
1091  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX``       bool    adaptive Rx coalesce
1092  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX``       bool    adaptive Tx coalesce
1093  ``ETHTOOL_A_COALESCE_PKT_RATE_LOW``          u32     threshold for low rate
1094  ``ETHTOOL_A_COALESCE_RX_USECS_LOW``          u32     delay (us), low Rx
1095  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW``     u32     max packets, low Rx
1096  ``ETHTOOL_A_COALESCE_TX_USECS_LOW``          u32     delay (us), low Tx
1097  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW``     u32     max packets, low Tx
1098  ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH``         u32     threshold for high rate
1099  ``ETHTOOL_A_COALESCE_RX_USECS_HIGH``         u32     delay (us), high Rx
1100  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH``    u32     max packets, high Rx
1101  ``ETHTOOL_A_COALESCE_TX_USECS_HIGH``         u32     delay (us), high Tx
1102  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH``    u32     max packets, high Tx
1103  ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL``  u32     rate sampling interval
1104  ``ETHTOOL_A_COALESCE_USE_CQE_TX``            bool    timer reset mode, Tx
1105  ``ETHTOOL_A_COALESCE_USE_CQE_RX``            bool    timer reset mode, Rx
1106  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``     u32     max aggr size, Tx
1107  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES``    u32     max aggr packets, Tx
1108  ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS``    u32     time (us), aggr, Tx
1109  ``ETHTOOL_A_COALESCE_RX_PROFILE``            nested  profile of DIM, Rx
1110  ``ETHTOOL_A_COALESCE_TX_PROFILE``            nested  profile of DIM, Tx
1111  ===========================================  ======  =======================
1112
1113Request is rejected if it attributes declared as unsupported by driver (i.e.
1114such that the corresponding bit in ``ethtool_ops::supported_coalesce_params``
1115is not set), regardless of their values. Driver may impose additional
1116constraints on coalescing parameters and their values.
1117
1118Compared to requests issued via the ``ioctl()`` netlink version of this request
1119will try harder to make sure that values specified by the user have been applied
1120and may call the driver twice.
1121
1122
1123PAUSE_GET
1124=========
1125
1126Gets pause frame settings like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
1127
1128Request contents:
1129
1130  =====================================  ======  ==========================
1131  ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
1132  ``ETHTOOL_A_PAUSE_STATS_SRC``          u32     source of statistics
1133  =====================================  ======  ==========================
1134
1135``ETHTOOL_A_PAUSE_STATS_SRC`` is optional. It takes values from:
1136
1137.. kernel-doc:: include/uapi/linux/ethtool.h
1138    :identifiers: ethtool_mac_stats_src
1139
1140If absent from the request, stats will be provided with
1141an ``ETHTOOL_A_PAUSE_STATS_SRC`` attribute in the response equal to
1142``ETHTOOL_MAC_STATS_SRC_AGGREGATE``.
1143
1144Kernel response contents:
1145
1146  =====================================  ======  ==========================
1147  ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
1148  ``ETHTOOL_A_PAUSE_AUTONEG``            bool    pause autonegotiation
1149  ``ETHTOOL_A_PAUSE_RX``                 bool    receive pause frames
1150  ``ETHTOOL_A_PAUSE_TX``                 bool    transmit pause frames
1151  ``ETHTOOL_A_PAUSE_STATS``              nested  pause statistics
1152  =====================================  ======  ==========================
1153
1154``ETHTOOL_A_PAUSE_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set
1155in ``ETHTOOL_A_HEADER_FLAGS``.
1156It will be empty if driver did not report any statistics. Drivers fill in
1157the statistics in the following structure:
1158
1159.. kernel-doc:: include/linux/ethtool.h
1160    :identifiers: ethtool_pause_stats
1161
1162Each member has a corresponding attribute defined.
1163
1164PAUSE_SET
1165=========
1166
1167Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
1168
1169Request contents:
1170
1171  =====================================  ======  ==========================
1172  ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
1173  ``ETHTOOL_A_PAUSE_AUTONEG``            bool    pause autonegotiation
1174  ``ETHTOOL_A_PAUSE_RX``                 bool    receive pause frames
1175  ``ETHTOOL_A_PAUSE_TX``                 bool    transmit pause frames
1176  =====================================  ======  ==========================
1177
1178
1179EEE_GET
1180=======
1181
1182Gets Energy Efficient Ethernet settings like ``ETHTOOL_GEEE`` ioctl request.
1183
1184Request contents:
1185
1186  =====================================  ======  ==========================
1187  ``ETHTOOL_A_EEE_HEADER``               nested  request header
1188  =====================================  ======  ==========================
1189
1190Kernel response contents:
1191
1192  =====================================  ======  ==========================
1193  ``ETHTOOL_A_EEE_HEADER``               nested  request header
1194  ``ETHTOOL_A_EEE_MODES_OURS``           bool    supported/advertised modes
1195  ``ETHTOOL_A_EEE_MODES_PEER``           bool    peer advertised link modes
1196  ``ETHTOOL_A_EEE_ACTIVE``               bool    EEE is actively used
1197  ``ETHTOOL_A_EEE_ENABLED``              bool    EEE is enabled
1198  ``ETHTOOL_A_EEE_TX_LPI_ENABLED``       bool    Tx lpi enabled
1199  ``ETHTOOL_A_EEE_TX_LPI_TIMER``         u32     Tx lpi timeout (in us)
1200  =====================================  ======  ==========================
1201
1202In ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is
1203enabled, value of link modes for which EEE is advertised. Link modes for which
1204peer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The
1205netlink interface allows reporting EEE status for all link modes but only
1206first 32 are provided by the ``ethtool_ops`` callback.
1207
1208
1209EEE_SET
1210=======
1211
1212Sets Energy Efficient Ethernet parameters like ``ETHTOOL_SEEE`` ioctl request.
1213
1214Request contents:
1215
1216  =====================================  ======  ==========================
1217  ``ETHTOOL_A_EEE_HEADER``               nested  request header
1218  ``ETHTOOL_A_EEE_MODES_OURS``           bool    advertised modes
1219  ``ETHTOOL_A_EEE_ENABLED``              bool    EEE is enabled
1220  ``ETHTOOL_A_EEE_TX_LPI_ENABLED``       bool    Tx lpi enabled
1221  ``ETHTOOL_A_EEE_TX_LPI_TIMER``         u32     Tx lpi timeout (in us)
1222  =====================================  ======  ==========================
1223
1224``ETHTOOL_A_EEE_MODES_OURS`` is used to either list link modes to advertise
1225EEE for (if there is no mask) or specify changes to the list (if there is
1226a mask). The netlink interface allows reporting EEE status for all link modes
1227but only first 32 can be set at the moment as that is what the ``ethtool_ops``
1228callback supports.
1229
1230
1231TSINFO_GET
1232==========
1233
1234Gets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request.
1235
1236Request contents:
1237
1238  =====================================  ======  ==========================
1239  ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
1240  =====================================  ======  ==========================
1241
1242Kernel response contents:
1243
1244  =====================================  ======  ==========================
1245  ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
1246  ``ETHTOOL_A_TSINFO_TIMESTAMPING``      bitset  SO_TIMESTAMPING flags
1247  ``ETHTOOL_A_TSINFO_TX_TYPES``          bitset  supported Tx types
1248  ``ETHTOOL_A_TSINFO_RX_FILTERS``        bitset  supported Rx filters
1249  ``ETHTOOL_A_TSINFO_PHC_INDEX``         u32     PTP hw clock index
1250  ``ETHTOOL_A_TSINFO_STATS``             nested  HW timestamping statistics
1251  =====================================  ======  ==========================
1252
1253``ETHTOOL_A_TSINFO_PHC_INDEX`` is absent if there is no associated PHC (there
1254is no special value for this case). The bitset attributes are omitted if they
1255would be empty (no bit set).
1256
1257Additional hardware timestamping statistics response contents:
1258
1259  =====================================  ======  ===================================
1260  ``ETHTOOL_A_TS_STAT_TX_PKTS``          uint    Packets with Tx HW timestamps
1261  ``ETHTOOL_A_TS_STAT_TX_LOST``          uint    Tx HW timestamp not arrived count
1262  ``ETHTOOL_A_TS_STAT_TX_ERR``           uint    HW error request Tx timestamp count
1263  =====================================  ======  ===================================
1264
1265CABLE_TEST
1266==========
1267
1268Start a cable test.
1269
1270Request contents:
1271
1272  ====================================  ======  ==========================
1273  ``ETHTOOL_A_CABLE_TEST_HEADER``       nested  request header
1274  ====================================  ======  ==========================
1275
1276Notification contents:
1277
1278An Ethernet cable typically contains 1, 2 or 4 pairs. The length of
1279the pair can only be measured when there is a fault in the pair and
1280hence a reflection. Information about the fault may not be available,
1281depending on the specific hardware. Hence the contents of the notify
1282message are mostly optional. The attributes can be repeated an
1283arbitrary number of times, in an arbitrary order, for an arbitrary
1284number of pairs.
1285
1286The example shows the notification sent when the test is completed for
1287a T2 cable, i.e. two pairs. One pair is OK and hence has no length
1288information. The second pair has a fault and does have length
1289information.
1290
1291 +---------------------------------------------+--------+---------------------+
1292 | ``ETHTOOL_A_CABLE_TEST_HEADER``             | nested | reply header        |
1293 +---------------------------------------------+--------+---------------------+
1294 | ``ETHTOOL_A_CABLE_TEST_STATUS``             | u8     | completed           |
1295 +---------------------------------------------+--------+---------------------+
1296 | ``ETHTOOL_A_CABLE_TEST_NTF_NEST``           | nested | all the results     |
1297 +-+-------------------------------------------+--------+---------------------+
1298 | | ``ETHTOOL_A_CABLE_NEST_RESULT``           | nested | cable test result   |
1299 +-+-+-----------------------------------------+--------+---------------------+
1300 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number         |
1301 +-+-+-----------------------------------------+--------+---------------------+
1302 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
1303 +-+-+-----------------------------------------+--------+---------------------+
1304 | | ``ETHTOOL_A_CABLE_NEST_RESULT``           | nested | cable test results  |
1305 +-+-+-----------------------------------------+--------+---------------------+
1306 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number         |
1307 +-+-+-----------------------------------------+--------+---------------------+
1308 | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
1309 +-+-+-----------------------------------------+--------+---------------------+
1310 | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH``     | nested | cable length        |
1311 +-+-+-----------------------------------------+--------+---------------------+
1312 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR``   | u8     | pair number         |
1313 +-+-+-----------------------------------------+--------+---------------------+
1314 | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM``     | u32    | length in cm        |
1315 +-+-+-----------------------------------------+--------+---------------------+
1316
1317CABLE_TEST TDR
1318==============
1319
1320Start a cable test and report raw TDR data
1321
1322Request contents:
1323
1324 +--------------------------------------------+--------+-----------------------+
1325 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER``        | nested | reply header          |
1326 +--------------------------------------------+--------+-----------------------+
1327 | ``ETHTOOL_A_CABLE_TEST_TDR_CFG``           | nested | test configuration    |
1328 +-+------------------------------------------+--------+-----------------------+
1329 | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE``  | u32    | first data distance   |
1330 +-+-+----------------------------------------+--------+-----------------------+
1331 | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE``   | u32    | last data distance    |
1332 +-+-+----------------------------------------+--------+-----------------------+
1333 | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE``   | u32    | distance of each step |
1334 +-+-+----------------------------------------+--------+-----------------------+
1335 | | ``ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR``    | u8     | pair to test          |
1336 +-+-+----------------------------------------+--------+-----------------------+
1337
1338The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members
1339of the nest. All distances are expressed in centimeters. The PHY takes
1340the distances as a guide, and rounds to the nearest distance it
1341actually supports. If a pair is passed, only that one pair will be
1342tested. Otherwise all pairs are tested.
1343
1344Notification contents:
1345
1346Raw TDR data is gathered by sending a pulse down the cable and
1347recording the amplitude of the reflected pulse for a given distance.
1348
1349It can take a number of seconds to collect TDR data, especial if the
1350full 100 meters is probed at 1 meter intervals. When the test is
1351started a notification will be sent containing just
1352ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
1353ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED.
1354
1355When the test has completed a second notification will be sent
1356containing ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
1357ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data.
1358
1359The message may optionally contain the amplitude of the pulse send
1360down the cable. This is measured in mV. A reflection should not be
1361bigger than transmitted pulse.
1362
1363Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP
1364nest containing information about the distance along the cable for the
1365first reading, the last reading, and the step between each
1366reading. Distances are measured in centimeters. These should be the
1367exact values the PHY used. These may be different to what the user
1368requested, if the native measurement resolution is greater than 1 cm.
1369
1370For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is
1371used to report the amplitude of the reflection for a given pair.
1372
1373 +---------------------------------------------+--------+----------------------+
1374 | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER``         | nested | reply header         |
1375 +---------------------------------------------+--------+----------------------+
1376 | ``ETHTOOL_A_CABLE_TEST_TDR_STATUS``         | u8     | completed            |
1377 +---------------------------------------------+--------+----------------------+
1378 | ``ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST``       | nested | all the results      |
1379 +-+-------------------------------------------+--------+----------------------+
1380 | | ``ETHTOOL_A_CABLE_TDR_NEST_PULSE``        | nested | TX Pulse amplitude   |
1381 +-+-+-----------------------------------------+--------+----------------------+
1382 | | | ``ETHTOOL_A_CABLE_PULSE_mV``            | s16    | Pulse amplitude      |
1383 +-+-+-----------------------------------------+--------+----------------------+
1384 | | ``ETHTOOL_A_CABLE_NEST_STEP``             | nested | TDR step info        |
1385 +-+-+-----------------------------------------+--------+----------------------+
1386 | | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32    | First data distance  |
1387 +-+-+-----------------------------------------+--------+----------------------+
1388 | | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE``  | u32    | Last data distance   |
1389 +-+-+-----------------------------------------+--------+----------------------+
1390 | | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE``  | u32    | distance of each step|
1391 +-+-+-----------------------------------------+--------+----------------------+
1392 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
1393 +-+-+-----------------------------------------+--------+----------------------+
1394 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
1395 +-+-+-----------------------------------------+--------+----------------------+
1396 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
1397 +-+-+-----------------------------------------+--------+----------------------+
1398 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
1399 +-+-+-----------------------------------------+--------+----------------------+
1400 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
1401 +-+-+-----------------------------------------+--------+----------------------+
1402 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
1403 +-+-+-----------------------------------------+--------+----------------------+
1404 | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
1405 +-+-+-----------------------------------------+--------+----------------------+
1406 | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
1407 +-+-+-----------------------------------------+--------+----------------------+
1408 | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
1409 +-+-+-----------------------------------------+--------+----------------------+
1410
1411TUNNEL_INFO
1412===========
1413
1414Gets information about the tunnel state NIC is aware of.
1415
1416Request contents:
1417
1418  =====================================  ======  ==========================
1419  ``ETHTOOL_A_TUNNEL_INFO_HEADER``       nested  request header
1420  =====================================  ======  ==========================
1421
1422Kernel response contents:
1423
1424 +---------------------------------------------+--------+---------------------+
1425 | ``ETHTOOL_A_TUNNEL_INFO_HEADER``            | nested | reply header        |
1426 +---------------------------------------------+--------+---------------------+
1427 | ``ETHTOOL_A_TUNNEL_INFO_UDP_PORTS``         | nested | all UDP port tables |
1428 +-+-------------------------------------------+--------+---------------------+
1429 | | ``ETHTOOL_A_TUNNEL_UDP_TABLE``            | nested | one UDP port table  |
1430 +-+-+-----------------------------------------+--------+---------------------+
1431 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE``     | u32    | max size of the     |
1432 | | |                                         |        | table               |
1433 +-+-+-----------------------------------------+--------+---------------------+
1434 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES``    | bitset | tunnel types which  |
1435 | | |                                         |        | table can hold      |
1436 +-+-+-----------------------------------------+--------+---------------------+
1437 | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY``    | nested | offloaded UDP port  |
1438 +-+-+-+---------------------------------------+--------+---------------------+
1439 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT``   | be16   | UDP port            |
1440 +-+-+-+---------------------------------------+--------+---------------------+
1441 | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE``   | u32    | tunnel type         |
1442 +-+-+-+---------------------------------------+--------+---------------------+
1443
1444For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that
1445the table contains static entries, hard-coded by the NIC.
1446
1447FEC_GET
1448=======
1449
1450Gets FEC configuration and state like ``ETHTOOL_GFECPARAM`` ioctl request.
1451
1452Request contents:
1453
1454  =====================================  ======  ==========================
1455  ``ETHTOOL_A_FEC_HEADER``               nested  request header
1456  =====================================  ======  ==========================
1457
1458Kernel response contents:
1459
1460  =====================================  ======  ==========================
1461  ``ETHTOOL_A_FEC_HEADER``               nested  request header
1462  ``ETHTOOL_A_FEC_MODES``                bitset  configured modes
1463  ``ETHTOOL_A_FEC_AUTO``                 bool    FEC mode auto selection
1464  ``ETHTOOL_A_FEC_ACTIVE``               u32     index of active FEC mode
1465  ``ETHTOOL_A_FEC_STATS``                nested  FEC statistics
1466  =====================================  ======  ==========================
1467
1468``ETHTOOL_A_FEC_ACTIVE`` is the bit index of the FEC link mode currently
1469active on the interface. This attribute may not be present if device does
1470not support FEC.
1471
1472``ETHTOOL_A_FEC_MODES`` and ``ETHTOOL_A_FEC_AUTO`` are only meaningful when
1473autonegotiation is disabled. If ``ETHTOOL_A_FEC_AUTO`` is non-zero driver will
1474select the FEC mode automatically based on the parameters of the SFP module.
1475This is equivalent to the ``ETHTOOL_FEC_AUTO`` bit of the ioctl interface.
1476``ETHTOOL_A_FEC_MODES`` carry the current FEC configuration using link mode
1477bits (rather than old ``ETHTOOL_FEC_*`` bits).
1478
1479``ETHTOOL_A_FEC_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set in
1480``ETHTOOL_A_HEADER_FLAGS``.
1481Each attribute carries an array of 64bit statistics. First entry in the array
1482contains the total number of events on the port, while the following entries
1483are counters corresponding to lanes/PCS instances. The number of entries in
1484the array will be:
1485
1486+--------------+---------------------------------------------+
1487| `0`          | device does not support FEC statistics      |
1488+--------------+---------------------------------------------+
1489| `1`          | device does not support per-lane break down |
1490+--------------+---------------------------------------------+
1491| `1 + #lanes` | device has full support for FEC stats       |
1492+--------------+---------------------------------------------+
1493
1494Drivers fill in the statistics in the following structure:
1495
1496.. kernel-doc:: include/linux/ethtool.h
1497    :identifiers: ethtool_fec_stats
1498
1499FEC_SET
1500=======
1501
1502Sets FEC parameters like ``ETHTOOL_SFECPARAM`` ioctl request.
1503
1504Request contents:
1505
1506  =====================================  ======  ==========================
1507  ``ETHTOOL_A_FEC_HEADER``               nested  request header
1508  ``ETHTOOL_A_FEC_MODES``                bitset  configured modes
1509  ``ETHTOOL_A_FEC_AUTO``                 bool    FEC mode auto selection
1510  =====================================  ======  ==========================
1511
1512``FEC_SET`` is only meaningful when autonegotiation is disabled. Otherwise
1513FEC mode is selected as part of autonegotiation.
1514
1515``ETHTOOL_A_FEC_MODES`` selects which FEC mode should be used. It's recommended
1516to set only one bit, if multiple bits are set driver may choose between them
1517in an implementation specific way.
1518
1519``ETHTOOL_A_FEC_AUTO`` requests the driver to choose FEC mode based on SFP
1520module parameters. This does not mean autonegotiation.
1521
1522MODULE_EEPROM_GET
1523=================
1524
1525Fetch module EEPROM data dump.
1526This interface is designed to allow dumps of at most 1/2 page at once. This
1527means only dumps of 128 (or less) bytes are allowed, without crossing half page
1528boundary located at offset 128. For pages other than 0 only high 128 bytes are
1529accessible.
1530
1531Request contents:
1532
1533  =======================================  ======  ==========================
1534  ``ETHTOOL_A_MODULE_EEPROM_HEADER``       nested  request header
1535  ``ETHTOOL_A_MODULE_EEPROM_OFFSET``       u32     offset within a page
1536  ``ETHTOOL_A_MODULE_EEPROM_LENGTH``       u32     amount of bytes to read
1537  ``ETHTOOL_A_MODULE_EEPROM_PAGE``         u8      page number
1538  ``ETHTOOL_A_MODULE_EEPROM_BANK``         u8      bank number
1539  ``ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS``  u8      page I2C address
1540  =======================================  ======  ==========================
1541
1542If ``ETHTOOL_A_MODULE_EEPROM_BANK`` is not specified, bank 0 is assumed.
1543
1544Kernel response contents:
1545
1546 +---------------------------------------------+--------+---------------------+
1547 | ``ETHTOOL_A_MODULE_EEPROM_HEADER``          | nested | reply header        |
1548 +---------------------------------------------+--------+---------------------+
1549 | ``ETHTOOL_A_MODULE_EEPROM_DATA``            | binary | array of bytes from |
1550 |                                             |        | module EEPROM       |
1551 +---------------------------------------------+--------+---------------------+
1552
1553``ETHTOOL_A_MODULE_EEPROM_DATA`` has an attribute length equal to the amount of
1554bytes driver actually read.
1555
1556STATS_GET
1557=========
1558
1559Get standard statistics for the interface. Note that this is not
1560a re-implementation of ``ETHTOOL_GSTATS`` which exposed driver-defined
1561stats.
1562
1563Request contents:
1564
1565  =======================================  ======  ==========================
1566  ``ETHTOOL_A_STATS_HEADER``               nested  request header
1567  ``ETHTOOL_A_STATS_SRC``                  u32     source of statistics
1568  ``ETHTOOL_A_STATS_GROUPS``               bitset  requested groups of stats
1569  =======================================  ======  ==========================
1570
1571Kernel response contents:
1572
1573 +-----------------------------------+--------+--------------------------------+
1574 | ``ETHTOOL_A_STATS_HEADER``        | nested | reply header                   |
1575 +-----------------------------------+--------+--------------------------------+
1576 | ``ETHTOOL_A_STATS_SRC``           | u32    | source of statistics           |
1577 +-----------------------------------+--------+--------------------------------+
1578 | ``ETHTOOL_A_STATS_GRP``           | nested | one or more group of stats     |
1579 +-+---------------------------------+--------+--------------------------------+
1580 | | ``ETHTOOL_A_STATS_GRP_ID``      | u32    | group ID - ``ETHTOOL_STATS_*`` |
1581 +-+---------------------------------+--------+--------------------------------+
1582 | | ``ETHTOOL_A_STATS_GRP_SS_ID``   | u32    | string set ID for names        |
1583 +-+---------------------------------+--------+--------------------------------+
1584 | | ``ETHTOOL_A_STATS_GRP_STAT``    | nested | nest containing a statistic    |
1585 +-+---------------------------------+--------+--------------------------------+
1586 | | ``ETHTOOL_A_STATS_GRP_HIST_RX`` | nested | histogram statistic (Rx)       |
1587 +-+---------------------------------+--------+--------------------------------+
1588 | | ``ETHTOOL_A_STATS_GRP_HIST_TX`` | nested | histogram statistic (Tx)       |
1589 +-+---------------------------------+--------+--------------------------------+
1590
1591Users specify which groups of statistics they are requesting via
1592the ``ETHTOOL_A_STATS_GROUPS`` bitset. Currently defined values are:
1593
1594 ====================== ======== ===============================================
1595 ETHTOOL_STATS_ETH_MAC  eth-mac  Basic IEEE 802.3 MAC statistics (30.3.1.1.*)
1596 ETHTOOL_STATS_ETH_PHY  eth-phy  Basic IEEE 802.3 PHY statistics (30.3.2.1.*)
1597 ETHTOOL_STATS_ETH_CTRL eth-ctrl Basic IEEE 802.3 MAC Ctrl statistics (30.3.3.*)
1598 ETHTOOL_STATS_RMON     rmon     RMON (RFC 2819) statistics
1599 ====================== ======== ===============================================
1600
1601Each group should have a corresponding ``ETHTOOL_A_STATS_GRP`` in the reply.
1602``ETHTOOL_A_STATS_GRP_ID`` identifies which group's statistics nest contains.
1603``ETHTOOL_A_STATS_GRP_SS_ID`` identifies the string set ID for the names of
1604the statistics in the group, if available.
1605
1606Statistics are added to the ``ETHTOOL_A_STATS_GRP`` nest under
1607``ETHTOOL_A_STATS_GRP_STAT``. ``ETHTOOL_A_STATS_GRP_STAT`` should contain
1608single 8 byte (u64) attribute inside - the type of that attribute is
1609the statistic ID and the value is the value of the statistic.
1610Each group has its own interpretation of statistic IDs.
1611Attribute IDs correspond to strings from the string set identified
1612by ``ETHTOOL_A_STATS_GRP_SS_ID``. Complex statistics (such as RMON histogram
1613entries) are also listed inside ``ETHTOOL_A_STATS_GRP`` and do not have
1614a string defined in the string set.
1615
1616RMON "histogram" counters count number of packets within given size range.
1617Because RFC does not specify the ranges beyond the standard 1518 MTU devices
1618differ in definition of buckets. For this reason the definition of packet ranges
1619is left to each driver.
1620
1621``ETHTOOL_A_STATS_GRP_HIST_RX`` and ``ETHTOOL_A_STATS_GRP_HIST_TX`` nests
1622contain the following attributes:
1623
1624 ================================= ====== ===================================
1625 ETHTOOL_A_STATS_RMON_HIST_BKT_LOW u32    low bound of the packet size bucket
1626 ETHTOOL_A_STATS_RMON_HIST_BKT_HI  u32    high bound of the bucket
1627 ETHTOOL_A_STATS_RMON_HIST_VAL     u64    packet counter
1628 ================================= ====== ===================================
1629
1630Low and high bounds are inclusive, for example:
1631
1632 ============================= ==== ====
1633 RFC statistic                 low  high
1634 ============================= ==== ====
1635 etherStatsPkts64Octets          0    64
1636 etherStatsPkts512to1023Octets 512  1023
1637 ============================= ==== ====
1638
1639``ETHTOOL_A_STATS_SRC`` is optional. Similar to ``PAUSE_GET``, it takes values
1640from ``enum ethtool_mac_stats_src``. If absent from the request, stats will be
1641provided with an ``ETHTOOL_A_STATS_SRC`` attribute in the response equal to
1642``ETHTOOL_MAC_STATS_SRC_AGGREGATE``.
1643
1644PHC_VCLOCKS_GET
1645===============
1646
1647Query device PHC virtual clocks information.
1648
1649Request contents:
1650
1651  ====================================  ======  ==========================
1652  ``ETHTOOL_A_PHC_VCLOCKS_HEADER``      nested  request header
1653  ====================================  ======  ==========================
1654
1655Kernel response contents:
1656
1657  ====================================  ======  ==========================
1658  ``ETHTOOL_A_PHC_VCLOCKS_HEADER``      nested  reply header
1659  ``ETHTOOL_A_PHC_VCLOCKS_NUM``         u32     PHC virtual clocks number
1660  ``ETHTOOL_A_PHC_VCLOCKS_INDEX``       s32     PHC index array
1661  ====================================  ======  ==========================
1662
1663MODULE_GET
1664==========
1665
1666Gets transceiver module parameters.
1667
1668Request contents:
1669
1670  =====================================  ======  ==========================
1671  ``ETHTOOL_A_MODULE_HEADER``            nested  request header
1672  =====================================  ======  ==========================
1673
1674Kernel response contents:
1675
1676  ======================================  ======  ==========================
1677  ``ETHTOOL_A_MODULE_HEADER``             nested  reply header
1678  ``ETHTOOL_A_MODULE_POWER_MODE_POLICY``  u8      power mode policy
1679  ``ETHTOOL_A_MODULE_POWER_MODE``         u8      operational power mode
1680  ======================================  ======  ==========================
1681
1682The optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute encodes the
1683transceiver module power mode policy enforced by the host. The default policy
1684is driver-dependent, but "auto" is the recommended default and it should be
1685implemented by new drivers and drivers where conformance to a legacy behavior
1686is not critical.
1687
1688The optional ``ETHTHOOL_A_MODULE_POWER_MODE`` attribute encodes the operational
1689power mode policy of the transceiver module. It is only reported when a module
1690is plugged-in. Possible values are:
1691
1692.. kernel-doc:: include/uapi/linux/ethtool.h
1693    :identifiers: ethtool_module_power_mode
1694
1695MODULE_SET
1696==========
1697
1698Sets transceiver module parameters.
1699
1700Request contents:
1701
1702  ======================================  ======  ==========================
1703  ``ETHTOOL_A_MODULE_HEADER``             nested  request header
1704  ``ETHTOOL_A_MODULE_POWER_MODE_POLICY``  u8      power mode policy
1705  ======================================  ======  ==========================
1706
1707When set, the optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute is used
1708to set the transceiver module power policy enforced by the host. Possible
1709values are:
1710
1711.. kernel-doc:: include/uapi/linux/ethtool.h
1712    :identifiers: ethtool_module_power_mode_policy
1713
1714For SFF-8636 modules, low power mode is forced by the host according to table
17156-10 in revision 2.10a of the specification.
1716
1717For CMIS modules, low power mode is forced by the host according to table 6-12
1718in revision 5.0 of the specification.
1719
1720PSE_GET
1721=======
1722
1723Gets PSE attributes.
1724
1725Request contents:
1726
1727  =====================================  ======  ==========================
1728  ``ETHTOOL_A_PSE_HEADER``               nested  request header
1729  =====================================  ======  ==========================
1730
1731Kernel response contents:
1732
1733  ==========================================  ======  =============================
1734  ``ETHTOOL_A_PSE_HEADER``                    nested  reply header
1735  ``ETHTOOL_A_PODL_PSE_ADMIN_STATE``             u32  Operational state of the PoDL
1736                                                      PSE functions
1737  ``ETHTOOL_A_PODL_PSE_PW_D_STATUS``             u32  power detection status of the
1738                                                      PoDL PSE.
1739  ``ETHTOOL_A_C33_PSE_ADMIN_STATE``              u32  Operational state of the PoE
1740                                                      PSE functions.
1741  ``ETHTOOL_A_C33_PSE_PW_D_STATUS``              u32  power detection status of the
1742                                                      PoE PSE.
1743  ``ETHTOOL_A_C33_PSE_PW_CLASS``                 u32  power class of the PoE PSE.
1744  ``ETHTOOL_A_C33_PSE_ACTUAL_PW``                u32  actual power drawn on the
1745                                                      PoE PSE.
1746  ``ETHTOOL_A_C33_PSE_EXT_STATE``                u32  power extended state of the
1747                                                      PoE PSE.
1748  ``ETHTOOL_A_C33_PSE_EXT_SUBSTATE``             u32  power extended substatus of
1749                                                      the PoE PSE.
1750  ``ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT``           u32  currently configured power
1751                                                      limit of the PoE PSE.
1752  ``ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES``       nested  Supported power limit
1753                                                      configuration ranges.
1754  ==========================================  ======  =============================
1755
1756When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` attribute identifies
1757the operational state of the PoDL PSE functions.  The operational state of the
1758PSE function can be changed using the ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL``
1759action. This option is corresponding to ``IEEE 802.3-2018`` 30.15.1.1.2
1760aPoDLPSEAdminState. Possible values are:
1761
1762.. kernel-doc:: include/uapi/linux/ethtool.h
1763    :identifiers: ethtool_podl_pse_admin_state
1764
1765The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_STATE`` implementing
1766``IEEE 802.3-2022`` 30.9.1.1.2 aPSEAdminState.
1767
1768.. kernel-doc:: include/uapi/linux/ethtool.h
1769    :identifiers: ethtool_c33_pse_admin_state
1770
1771When set, the optional ``ETHTOOL_A_PODL_PSE_PW_D_STATUS`` attribute identifies
1772the power detection status of the PoDL PSE.  The status depend on internal PSE
1773state machine and automatic PD classification support. This option is
1774corresponding to ``IEEE 802.3-2018`` 30.15.1.1.3 aPoDLPSEPowerDetectionStatus.
1775Possible values are:
1776
1777.. kernel-doc:: include/uapi/linux/ethtool.h
1778    :identifiers: ethtool_podl_pse_pw_d_status
1779
1780The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_PW_D_STATUS`` implementing
1781``IEEE 802.3-2022`` 30.9.1.1.5 aPSEPowerDetectionStatus.
1782
1783.. kernel-doc:: include/uapi/linux/ethtool.h
1784    :identifiers: ethtool_c33_pse_pw_d_status
1785
1786When set, the optional ``ETHTOOL_A_C33_PSE_PW_CLASS`` attribute identifies
1787the power class of the C33 PSE. It depends on the class negotiated between
1788the PSE and the PD. This option is corresponding to ``IEEE 802.3-2022``
178930.9.1.1.8 aPSEPowerClassification.
1790
1791When set, the optional ``ETHTOOL_A_C33_PSE_ACTUAL_PW`` attribute identifies
1792This option is corresponding to ``IEEE 802.3-2022`` 30.9.1.1.23 aPSEActualPower.
1793Actual power is reported in mW.
1794
1795When set, the optional ``ETHTOOL_A_C33_PSE_EXT_STATE`` attribute identifies
1796the extended error state of the C33 PSE. Possible values are:
1797
1798.. kernel-doc:: include/uapi/linux/ethtool.h
1799    :identifiers: ethtool_c33_pse_ext_state
1800
1801When set, the optional ``ETHTOOL_A_C33_PSE_EXT_SUBSTATE`` attribute identifies
1802the extended error state of the C33 PSE. Possible values are:
1803Possible values are:
1804
1805.. kernel-doc:: include/uapi/linux/ethtool.h
1806    :identifiers: ethtool_c33_pse_ext_substate_class_num_events
1807		  ethtool_c33_pse_ext_substate_error_condition
1808		  ethtool_c33_pse_ext_substate_mr_pse_enable
1809		  ethtool_c33_pse_ext_substate_option_detect_ted
1810		  ethtool_c33_pse_ext_substate_option_vport_lim
1811		  ethtool_c33_pse_ext_substate_ovld_detected
1812		  ethtool_c33_pse_ext_substate_pd_dll_power_type
1813		  ethtool_c33_pse_ext_substate_power_not_available
1814		  ethtool_c33_pse_ext_substate_short_detected
1815
1816When set, the optional ``ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT`` attribute
1817identifies the C33 PSE power limit in mW.
1818
1819When set the optional ``ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES`` nested attribute
1820identifies the C33 PSE power limit ranges through
1821``ETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MIN`` and
1822``ETHTOOL_A_C33_PSE_PWR_VAL_LIMIT_RANGE_MAX``.
1823If the controller works with fixed classes, the min and max values will be
1824equal.
1825
1826PSE_SET
1827=======
1828
1829Sets PSE parameters.
1830
1831Request contents:
1832
1833  ======================================  ======  =============================
1834  ``ETHTOOL_A_PSE_HEADER``                nested  request header
1835  ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL``       u32  Control PoDL PSE Admin state
1836  ``ETHTOOL_A_C33_PSE_ADMIN_CONTROL``        u32  Control PSE Admin state
1837  ``ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT``      u32  Control PoE PSE available
1838                                                  power limit
1839  ======================================  ======  =============================
1840
1841When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL`` attribute is used
1842to control PoDL PSE Admin functions. This option is implementing
1843``IEEE 802.3-2018`` 30.15.1.2.1 acPoDLPSEAdminControl. See
1844``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` for supported values.
1845
1846The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_CONTROL`` implementing
1847``IEEE 802.3-2022`` 30.9.1.2.1 acPSEAdminControl.
1848
1849When set, the optional ``ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT`` attribute is
1850used to control the available power value limit for C33 PSE in milliwatts.
1851This attribute corresponds  to the `pse_available_power` variable described in
1852``IEEE 802.3-2022`` 33.2.4.4 Variables  and `pse_avail_pwr` in 145.2.5.4
1853Variables, which are described in power classes.
1854
1855It was decided to use milliwatts for this interface to unify it with other
1856power monitoring interfaces, which also use milliwatts, and to align with
1857various existing products that document power consumption in watts rather than
1858classes. If power limit configuration based on classes is needed, the
1859conversion can be done in user space, for example by ethtool.
1860
1861RSS_GET
1862=======
1863
1864Get indirection table, hash key and hash function info associated with a
1865RSS context of an interface similar to ``ETHTOOL_GRSSH`` ioctl request.
1866
1867Request contents:
1868
1869=====================================  ======  ==========================
1870  ``ETHTOOL_A_RSS_HEADER``             nested  request header
1871  ``ETHTOOL_A_RSS_CONTEXT``            u32     context number
1872=====================================  ======  ==========================
1873
1874Kernel response contents:
1875
1876=====================================  ======  ==========================
1877  ``ETHTOOL_A_RSS_HEADER``             nested  reply header
1878  ``ETHTOOL_A_RSS_CONTEXT``            u32     context number
1879  ``ETHTOOL_A_RSS_HFUNC``              u32     RSS hash func
1880  ``ETHTOOL_A_RSS_INDIR``              binary  Indir table bytes
1881  ``ETHTOOL_A_RSS_HKEY``               binary  Hash key bytes
1882  ``ETHTOOL_A_RSS_INPUT_XFRM``         u32     RSS input data transformation
1883=====================================  ======  ==========================
1884
1885ETHTOOL_A_RSS_HFUNC attribute is bitmap indicating the hash function
1886being used. Current supported options are toeplitz, xor or crc32.
1887ETHTOOL_A_RSS_INDIR attribute returns RSS indirection table where each byte
1888indicates queue number.
1889ETHTOOL_A_RSS_INPUT_XFRM attribute is a bitmap indicating the type of
1890transformation applied to the input protocol fields before given to the RSS
1891hfunc. Current supported option is symmetric-xor.
1892
1893PLCA_GET_CFG
1894============
1895
1896Gets the IEEE 802.3cg-2019 Clause 148 Physical Layer Collision Avoidance
1897(PLCA) Reconciliation Sublayer (RS) attributes.
1898
1899Request contents:
1900
1901  =====================================  ======  ==========================
1902  ``ETHTOOL_A_PLCA_HEADER``              nested  request header
1903  =====================================  ======  ==========================
1904
1905Kernel response contents:
1906
1907  ======================================  ======  =============================
1908  ``ETHTOOL_A_PLCA_HEADER``               nested  reply header
1909  ``ETHTOOL_A_PLCA_VERSION``              u16     Supported PLCA management
1910                                                  interface standard/version
1911  ``ETHTOOL_A_PLCA_ENABLED``              u8      PLCA Admin State
1912  ``ETHTOOL_A_PLCA_NODE_ID``              u32     PLCA unique local node ID
1913  ``ETHTOOL_A_PLCA_NODE_CNT``             u32     Number of PLCA nodes on the
1914                                                  network, including the
1915                                                  coordinator
1916  ``ETHTOOL_A_PLCA_TO_TMR``               u32     Transmit Opportunity Timer
1917                                                  value in bit-times (BT)
1918  ``ETHTOOL_A_PLCA_BURST_CNT``            u32     Number of additional packets
1919                                                  the node is allowed to send
1920                                                  within a single TO
1921  ``ETHTOOL_A_PLCA_BURST_TMR``            u32     Time to wait for the MAC to
1922                                                  transmit a new frame before
1923                                                  terminating the burst
1924  ======================================  ======  =============================
1925
1926When set, the optional ``ETHTOOL_A_PLCA_VERSION`` attribute indicates which
1927standard and version the PLCA management interface complies to. When not set,
1928the interface is vendor-specific and (possibly) supplied by the driver.
1929The OPEN Alliance SIG specifies a standard register map for 10BASE-T1S PHYs
1930embedding the PLCA Reconcialiation Sublayer. See "10BASE-T1S PLCA Management
1931Registers" at https://www.opensig.org/about/specifications/.
1932
1933When set, the optional ``ETHTOOL_A_PLCA_ENABLED`` attribute indicates the
1934administrative state of the PLCA RS. When not set, the node operates in "plain"
1935CSMA/CD mode. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.1
1936aPLCAAdminState / 30.16.1.2.1 acPLCAAdminControl.
1937
1938When set, the optional ``ETHTOOL_A_PLCA_NODE_ID`` attribute indicates the
1939configured local node ID of the PHY. This ID determines which transmit
1940opportunity (TO) is reserved for the node to transmit into. This option is
1941corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.4 aPLCALocalNodeID. The valid
1942range for this attribute is [0 .. 255] where 255 means "not configured".
1943
1944When set, the optional ``ETHTOOL_A_PLCA_NODE_CNT`` attribute indicates the
1945configured maximum number of PLCA nodes on the mixing-segment. This number
1946determines the total number of transmit opportunities generated during a
1947PLCA cycle. This attribute is relevant only for the PLCA coordinator, which is
1948the node with aPLCALocalNodeID set to 0. Follower nodes ignore this setting.
1949This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.3
1950aPLCANodeCount. The valid range for this attribute is [1 .. 255].
1951
1952When set, the optional ``ETHTOOL_A_PLCA_TO_TMR`` attribute indicates the
1953configured value of the transmit opportunity timer in bit-times. This value
1954must be set equal across all nodes sharing the medium for PLCA to work
1955correctly. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.5
1956aPLCATransmitOpportunityTimer. The valid range for this attribute is
1957[0 .. 255].
1958
1959When set, the optional ``ETHTOOL_A_PLCA_BURST_CNT`` attribute indicates the
1960configured number of extra packets that the node is allowed to send during a
1961single transmit opportunity. By default, this attribute is 0, meaning that
1962the node can only send a single frame per TO. When greater than 0, the PLCA RS
1963keeps the TO after any transmission, waiting for the MAC to send a new frame
1964for up to aPLCABurstTimer BTs. This can only happen a number of times per PLCA
1965cycle up to the value of this parameter. After that, the burst is over and the
1966normal counting of TOs resumes. This option is corresponding to
1967``IEEE 802.3cg-2019`` 30.16.1.1.6 aPLCAMaxBurstCount. The valid range for this
1968attribute is [0 .. 255].
1969
1970When set, the optional ``ETHTOOL_A_PLCA_BURST_TMR`` attribute indicates how
1971many bit-times the PLCA RS waits for the MAC to initiate a new transmission
1972when aPLCAMaxBurstCount is greater than 0. If the MAC fails to send a new
1973frame within this time, the burst ends and the counting of TOs resumes.
1974Otherwise, the new frame is sent as part of the current burst. This option
1975is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.7 aPLCABurstTimer. The
1976valid range for this attribute is [0 .. 255]. Although, the value should be
1977set greater than the Inter-Frame-Gap (IFG) time of the MAC (plus some margin)
1978for PLCA burst mode to work as intended.
1979
1980PLCA_SET_CFG
1981============
1982
1983Sets PLCA RS parameters.
1984
1985Request contents:
1986
1987  ======================================  ======  =============================
1988  ``ETHTOOL_A_PLCA_HEADER``               nested  request header
1989  ``ETHTOOL_A_PLCA_ENABLED``              u8      PLCA Admin State
1990  ``ETHTOOL_A_PLCA_NODE_ID``              u8      PLCA unique local node ID
1991  ``ETHTOOL_A_PLCA_NODE_CNT``             u8      Number of PLCA nodes on the
1992                                                  netkork, including the
1993                                                  coordinator
1994  ``ETHTOOL_A_PLCA_TO_TMR``               u8      Transmit Opportunity Timer
1995                                                  value in bit-times (BT)
1996  ``ETHTOOL_A_PLCA_BURST_CNT``            u8      Number of additional packets
1997                                                  the node is allowed to send
1998                                                  within a single TO
1999  ``ETHTOOL_A_PLCA_BURST_TMR``            u8      Time to wait for the MAC to
2000                                                  transmit a new frame before
2001                                                  terminating the burst
2002  ======================================  ======  =============================
2003
2004For a description of each attribute, see ``PLCA_GET_CFG``.
2005
2006PLCA_GET_STATUS
2007===============
2008
2009Gets PLCA RS status information.
2010
2011Request contents:
2012
2013  =====================================  ======  ==========================
2014  ``ETHTOOL_A_PLCA_HEADER``              nested  request header
2015  =====================================  ======  ==========================
2016
2017Kernel response contents:
2018
2019  ======================================  ======  =============================
2020  ``ETHTOOL_A_PLCA_HEADER``               nested  reply header
2021  ``ETHTOOL_A_PLCA_STATUS``               u8      PLCA RS operational status
2022  ======================================  ======  =============================
2023
2024When set, the ``ETHTOOL_A_PLCA_STATUS`` attribute indicates whether the node is
2025detecting the presence of the BEACON on the network. This flag is
2026corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.2 aPLCAStatus.
2027
2028MM_GET
2029======
2030
2031Retrieve 802.3 MAC Merge parameters.
2032
2033Request contents:
2034
2035  ====================================  ======  ==========================
2036  ``ETHTOOL_A_MM_HEADER``               nested  request header
2037  ====================================  ======  ==========================
2038
2039Kernel response contents:
2040
2041  =================================  ======  ===================================
2042  ``ETHTOOL_A_MM_HEADER``            nested  request header
2043  ``ETHTOOL_A_MM_PMAC_ENABLED``      bool    set if RX of preemptible and SMD-V
2044                                             frames is enabled
2045  ``ETHTOOL_A_MM_TX_ENABLED``        bool    set if TX of preemptible frames is
2046                                             administratively enabled (might be
2047                                             inactive if verification failed)
2048  ``ETHTOOL_A_MM_TX_ACTIVE``         bool    set if TX of preemptible frames is
2049                                             operationally enabled
2050  ``ETHTOOL_A_MM_TX_MIN_FRAG_SIZE``  u32     minimum size of transmitted
2051                                             non-final fragments, in octets
2052  ``ETHTOOL_A_MM_RX_MIN_FRAG_SIZE``  u32     minimum size of received non-final
2053                                             fragments, in octets
2054  ``ETHTOOL_A_MM_VERIFY_ENABLED``    bool    set if TX of SMD-V frames is
2055                                             administratively enabled
2056  ``ETHTOOL_A_MM_VERIFY_STATUS``     u8      state of the verification function
2057  ``ETHTOOL_A_MM_VERIFY_TIME``       u32     delay between verification attempts
2058  ``ETHTOOL_A_MM_MAX_VERIFY_TIME```  u32     maximum verification interval
2059                                             supported by device
2060  ``ETHTOOL_A_MM_STATS``             nested  IEEE 802.3-2018 subclause 30.14.1
2061                                             oMACMergeEntity statistics counters
2062  =================================  ======  ===================================
2063
2064The attributes are populated by the device driver through the following
2065structure:
2066
2067.. kernel-doc:: include/linux/ethtool.h
2068    :identifiers: ethtool_mm_state
2069
2070The ``ETHTOOL_A_MM_VERIFY_STATUS`` will report one of the values from
2071
2072.. kernel-doc:: include/uapi/linux/ethtool.h
2073    :identifiers: ethtool_mm_verify_status
2074
2075If ``ETHTOOL_A_MM_VERIFY_ENABLED`` was passed as false in the ``MM_SET``
2076command, ``ETHTOOL_A_MM_VERIFY_STATUS`` will report either
2077``ETHTOOL_MM_VERIFY_STATUS_INITIAL`` or ``ETHTOOL_MM_VERIFY_STATUS_DISABLED``,
2078otherwise it should report one of the other states.
2079
2080It is recommended that drivers start with the pMAC disabled, and enable it upon
2081user space request. It is also recommended that user space does not depend upon
2082the default values from ``ETHTOOL_MSG_MM_GET`` requests.
2083
2084``ETHTOOL_A_MM_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set in
2085``ETHTOOL_A_HEADER_FLAGS``. The attribute will be empty if driver did not
2086report any statistics. Drivers fill in the statistics in the following
2087structure:
2088
2089.. kernel-doc:: include/linux/ethtool.h
2090    :identifiers: ethtool_mm_stats
2091
2092MM_SET
2093======
2094
2095Modifies the configuration of the 802.3 MAC Merge layer.
2096
2097Request contents:
2098
2099  =================================  ======  ==========================
2100  ``ETHTOOL_A_MM_VERIFY_TIME``       u32     see MM_GET description
2101  ``ETHTOOL_A_MM_VERIFY_ENABLED``    bool    see MM_GET description
2102  ``ETHTOOL_A_MM_TX_ENABLED``        bool    see MM_GET description
2103  ``ETHTOOL_A_MM_PMAC_ENABLED``      bool    see MM_GET description
2104  ``ETHTOOL_A_MM_TX_MIN_FRAG_SIZE``  u32     see MM_GET description
2105  =================================  ======  ==========================
2106
2107The attributes are propagated to the driver through the following structure:
2108
2109.. kernel-doc:: include/linux/ethtool.h
2110    :identifiers: ethtool_mm_cfg
2111
2112MODULE_FW_FLASH_ACT
2113===================
2114
2115Flashes transceiver module firmware.
2116
2117Request contents:
2118
2119  =======================================  ======  ===========================
2120  ``ETHTOOL_A_MODULE_FW_FLASH_HEADER``     nested  request header
2121  ``ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME``  string  firmware image file name
2122  ``ETHTOOL_A_MODULE_FW_FLASH_PASSWORD``   u32     transceiver module password
2123  =======================================  ======  ===========================
2124
2125The firmware update process consists of three logical steps:
2126
21271. Downloading a firmware image to the transceiver module and validating it.
21282. Running the firmware image.
21293. Committing the firmware image so that it is run upon reset.
2130
2131When flash command is given, those three steps are taken in that order.
2132
2133This message merely schedules the update process and returns immediately
2134without blocking. The process then runs asynchronously.
2135Since it can take several minutes to complete, during the update process
2136notifications are emitted from the kernel to user space updating it about
2137the status and progress.
2138
2139The ``ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME`` attribute encodes the firmware
2140image file name. The firmware image is downloaded to the transceiver module,
2141validated, run and committed.
2142
2143The optional ``ETHTOOL_A_MODULE_FW_FLASH_PASSWORD`` attribute encodes a password
2144that might be required as part of the transceiver module firmware update
2145process.
2146
2147The firmware update process can take several minutes to complete. Therefore,
2148during the update process notifications are emitted from the kernel to user
2149space updating it about the status and progress.
2150
2151
2152
2153Notification contents:
2154
2155 +---------------------------------------------------+--------+----------------+
2156 | ``ETHTOOL_A_MODULE_FW_FLASH_HEADER``              | nested | reply header   |
2157 +---------------------------------------------------+--------+----------------+
2158 | ``ETHTOOL_A_MODULE_FW_FLASH_STATUS``              | u32    | status         |
2159 +---------------------------------------------------+--------+----------------+
2160 | ``ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG``          | string | status message |
2161 +---------------------------------------------------+--------+----------------+
2162 | ``ETHTOOL_A_MODULE_FW_FLASH_DONE``                | uint   | progress       |
2163 +---------------------------------------------------+--------+----------------+
2164 | ``ETHTOOL_A_MODULE_FW_FLASH_TOTAL``               | uint   | total          |
2165 +---------------------------------------------------+--------+----------------+
2166
2167The ``ETHTOOL_A_MODULE_FW_FLASH_STATUS`` attribute encodes the current status
2168of the firmware update process. Possible values are:
2169
2170.. kernel-doc:: include/uapi/linux/ethtool.h
2171    :identifiers: ethtool_module_fw_flash_status
2172
2173The ``ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG`` attribute encodes a status message
2174string.
2175
2176The ``ETHTOOL_A_MODULE_FW_FLASH_DONE`` and ``ETHTOOL_A_MODULE_FW_FLASH_TOTAL``
2177attributes encode the completed and total amount of work, respectively.
2178
2179Request translation
2180===================
2181
2182The following table maps ioctl commands to netlink commands providing their
2183functionality. Entries with "n/a" in right column are commands which do not
2184have their netlink replacement yet. Entries which "n/a" in the left column
2185are netlink only.
2186
2187  =================================== =====================================
2188  ioctl command                       netlink command
2189  =================================== =====================================
2190  ``ETHTOOL_GSET``                    ``ETHTOOL_MSG_LINKINFO_GET``
2191                                      ``ETHTOOL_MSG_LINKMODES_GET``
2192  ``ETHTOOL_SSET``                    ``ETHTOOL_MSG_LINKINFO_SET``
2193                                      ``ETHTOOL_MSG_LINKMODES_SET``
2194  ``ETHTOOL_GDRVINFO``                n/a
2195  ``ETHTOOL_GREGS``                   n/a
2196  ``ETHTOOL_GWOL``                    ``ETHTOOL_MSG_WOL_GET``
2197  ``ETHTOOL_SWOL``                    ``ETHTOOL_MSG_WOL_SET``
2198  ``ETHTOOL_GMSGLVL``                 ``ETHTOOL_MSG_DEBUG_GET``
2199  ``ETHTOOL_SMSGLVL``                 ``ETHTOOL_MSG_DEBUG_SET``
2200  ``ETHTOOL_NWAY_RST``                n/a
2201  ``ETHTOOL_GLINK``                   ``ETHTOOL_MSG_LINKSTATE_GET``
2202  ``ETHTOOL_GEEPROM``                 n/a
2203  ``ETHTOOL_SEEPROM``                 n/a
2204  ``ETHTOOL_GCOALESCE``               ``ETHTOOL_MSG_COALESCE_GET``
2205  ``ETHTOOL_SCOALESCE``               ``ETHTOOL_MSG_COALESCE_SET``
2206  ``ETHTOOL_GRINGPARAM``              ``ETHTOOL_MSG_RINGS_GET``
2207  ``ETHTOOL_SRINGPARAM``              ``ETHTOOL_MSG_RINGS_SET``
2208  ``ETHTOOL_GPAUSEPARAM``             ``ETHTOOL_MSG_PAUSE_GET``
2209  ``ETHTOOL_SPAUSEPARAM``             ``ETHTOOL_MSG_PAUSE_SET``
2210  ``ETHTOOL_GRXCSUM``                 ``ETHTOOL_MSG_FEATURES_GET``
2211  ``ETHTOOL_SRXCSUM``                 ``ETHTOOL_MSG_FEATURES_SET``
2212  ``ETHTOOL_GTXCSUM``                 ``ETHTOOL_MSG_FEATURES_GET``
2213  ``ETHTOOL_STXCSUM``                 ``ETHTOOL_MSG_FEATURES_SET``
2214  ``ETHTOOL_GSG``                     ``ETHTOOL_MSG_FEATURES_GET``
2215  ``ETHTOOL_SSG``                     ``ETHTOOL_MSG_FEATURES_SET``
2216  ``ETHTOOL_TEST``                    n/a
2217  ``ETHTOOL_GSTRINGS``                ``ETHTOOL_MSG_STRSET_GET``
2218  ``ETHTOOL_PHYS_ID``                 n/a
2219  ``ETHTOOL_GSTATS``                  n/a
2220  ``ETHTOOL_GTSO``                    ``ETHTOOL_MSG_FEATURES_GET``
2221  ``ETHTOOL_STSO``                    ``ETHTOOL_MSG_FEATURES_SET``
2222  ``ETHTOOL_GPERMADDR``               rtnetlink ``RTM_GETLINK``
2223  ``ETHTOOL_GUFO``                    ``ETHTOOL_MSG_FEATURES_GET``
2224  ``ETHTOOL_SUFO``                    ``ETHTOOL_MSG_FEATURES_SET``
2225  ``ETHTOOL_GGSO``                    ``ETHTOOL_MSG_FEATURES_GET``
2226  ``ETHTOOL_SGSO``                    ``ETHTOOL_MSG_FEATURES_SET``
2227  ``ETHTOOL_GFLAGS``                  ``ETHTOOL_MSG_FEATURES_GET``
2228  ``ETHTOOL_SFLAGS``                  ``ETHTOOL_MSG_FEATURES_SET``
2229  ``ETHTOOL_GPFLAGS``                 ``ETHTOOL_MSG_PRIVFLAGS_GET``
2230  ``ETHTOOL_SPFLAGS``                 ``ETHTOOL_MSG_PRIVFLAGS_SET``
2231  ``ETHTOOL_GRXFH``                   n/a
2232  ``ETHTOOL_SRXFH``                   n/a
2233  ``ETHTOOL_GGRO``                    ``ETHTOOL_MSG_FEATURES_GET``
2234  ``ETHTOOL_SGRO``                    ``ETHTOOL_MSG_FEATURES_SET``
2235  ``ETHTOOL_GRXRINGS``                n/a
2236  ``ETHTOOL_GRXCLSRLCNT``             n/a
2237  ``ETHTOOL_GRXCLSRULE``              n/a
2238  ``ETHTOOL_GRXCLSRLALL``             n/a
2239  ``ETHTOOL_SRXCLSRLDEL``             n/a
2240  ``ETHTOOL_SRXCLSRLINS``             n/a
2241  ``ETHTOOL_FLASHDEV``                n/a
2242  ``ETHTOOL_RESET``                   n/a
2243  ``ETHTOOL_SRXNTUPLE``               n/a
2244  ``ETHTOOL_GRXNTUPLE``               n/a
2245  ``ETHTOOL_GSSET_INFO``              ``ETHTOOL_MSG_STRSET_GET``
2246  ``ETHTOOL_GRXFHINDIR``              n/a
2247  ``ETHTOOL_SRXFHINDIR``              n/a
2248  ``ETHTOOL_GFEATURES``               ``ETHTOOL_MSG_FEATURES_GET``
2249  ``ETHTOOL_SFEATURES``               ``ETHTOOL_MSG_FEATURES_SET``
2250  ``ETHTOOL_GCHANNELS``               ``ETHTOOL_MSG_CHANNELS_GET``
2251  ``ETHTOOL_SCHANNELS``               ``ETHTOOL_MSG_CHANNELS_SET``
2252  ``ETHTOOL_SET_DUMP``                n/a
2253  ``ETHTOOL_GET_DUMP_FLAG``           n/a
2254  ``ETHTOOL_GET_DUMP_DATA``           n/a
2255  ``ETHTOOL_GET_TS_INFO``             ``ETHTOOL_MSG_TSINFO_GET``
2256  ``ETHTOOL_GMODULEINFO``             ``ETHTOOL_MSG_MODULE_EEPROM_GET``
2257  ``ETHTOOL_GMODULEEEPROM``           ``ETHTOOL_MSG_MODULE_EEPROM_GET``
2258  ``ETHTOOL_GEEE``                    ``ETHTOOL_MSG_EEE_GET``
2259  ``ETHTOOL_SEEE``                    ``ETHTOOL_MSG_EEE_SET``
2260  ``ETHTOOL_GRSSH``                   ``ETHTOOL_MSG_RSS_GET``
2261  ``ETHTOOL_SRSSH``                   n/a
2262  ``ETHTOOL_GTUNABLE``                n/a
2263  ``ETHTOOL_STUNABLE``                n/a
2264  ``ETHTOOL_GPHYSTATS``               n/a
2265  ``ETHTOOL_PERQUEUE``                n/a
2266  ``ETHTOOL_GLINKSETTINGS``           ``ETHTOOL_MSG_LINKINFO_GET``
2267                                      ``ETHTOOL_MSG_LINKMODES_GET``
2268  ``ETHTOOL_SLINKSETTINGS``           ``ETHTOOL_MSG_LINKINFO_SET``
2269                                      ``ETHTOOL_MSG_LINKMODES_SET``
2270  ``ETHTOOL_PHY_GTUNABLE``            n/a
2271  ``ETHTOOL_PHY_STUNABLE``            n/a
2272  ``ETHTOOL_GFECPARAM``               ``ETHTOOL_MSG_FEC_GET``
2273  ``ETHTOOL_SFECPARAM``               ``ETHTOOL_MSG_FEC_SET``
2274  n/a                                 ``ETHTOOL_MSG_CABLE_TEST_ACT``
2275  n/a                                 ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT``
2276  n/a                                 ``ETHTOOL_MSG_TUNNEL_INFO_GET``
2277  n/a                                 ``ETHTOOL_MSG_PHC_VCLOCKS_GET``
2278  n/a                                 ``ETHTOOL_MSG_MODULE_GET``
2279  n/a                                 ``ETHTOOL_MSG_MODULE_SET``
2280  n/a                                 ``ETHTOOL_MSG_PLCA_GET_CFG``
2281  n/a                                 ``ETHTOOL_MSG_PLCA_SET_CFG``
2282  n/a                                 ``ETHTOOL_MSG_PLCA_GET_STATUS``
2283  n/a                                 ``ETHTOOL_MSG_MM_GET``
2284  n/a                                 ``ETHTOOL_MSG_MM_SET``
2285  n/a                                 ``ETHTOOL_MSG_MODULE_FW_FLASH_ACT``
2286  =================================== =====================================
2287