~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/networking/ethtool-netlink.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 =============================
  2 Netlink interface for ethtool
  3 =============================
  4 
  5 
  6 Basic information
  7 =================
  8 
  9 Netlink 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
 12 header). This family does not use a specific header, all information in
 13 requests and replies is passed using netlink attributes.
 14 
 15 The ethtool netlink interface uses extended ACK for error and warning
 16 reporting, userspace application developers are encouraged to make these
 17 messages available to user in a suitable way.
 18 
 19 Requests can be divided into three categories: "get" (retrieving information),
 20 "set" (setting parameters) and "action" (invoking an action).
 21 
 22 All "set" and "action" type requests require admin privileges
 23 (``CAP_NET_ADMIN`` in the namespace). Most "get" type requests are allowed for
 24 anyone but there are exceptions (where the response contains sensitive
 25 information). In some cases, the request as such is allowed for anyone but
 26 unprivileged users have attributes with sensitive information (e.g.
 27 wake-on-lan password) omitted.
 28 
 29 
 30 Conventions
 31 ===========
 32 
 33 Attributes which represent a boolean value usually use NLA_U8 type so that we
 34 can distinguish three states: "on", "off" and "not present" (meaning the
 35 information is not available in "get" requests or value is not to be changed
 36 in "set" requests). For these attributes, the "true" value should be passed as
 37 number 1 but any non-zero value should be understood as "true" by recipient.
 38 In the tables below, "bool" denotes NLA_U8 attributes interpreted in this way.
 39 
 40 In the message structure descriptions below, if an attribute name is suffixed
 41 with "+", parent nest can contain multiple attributes of the same type. This
 42 implements an array of entries.
 43 
 44 Attributes that need to be filled-in by device drivers and that are dumped to
 45 user space based on whether they are valid or not should not use zero as a
 46 valid value. This avoids the need to explicitly signal the validity of the
 47 attribute in the device driver API.
 48 
 49 
 50 Request header
 51 ==============
 52 
 53 Each request or reply message contains a nested attribute with common header.
 54 Structure 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
 63 device message relates to. One of them is sufficient in requests, if both are
 64 used, they must identify the same device. Some requests, e.g. global string
 65 sets, do not require device identification. Most ``GET`` requests also allow
 66 dump requests without device identification to query the same information for
 67 all 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
 70 types. The interpretation of these flags is the same for all request types but
 71 the 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 
 79 New request flags should follow the general idea that if the flag is not set,
 80 the behaviour is backward compatible, i.e. requests from old clients not aware
 81 of the flag should be interpreted the way the client expects. A client must
 82 not set flags it does not understand.
 83 
 84 
 85 Bit sets
 86 ========
 87 
 88 For short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32``
 89 type is used. For arbitrary length bitmaps, ethtool netlink uses a nested
 90 attribute with contents of one of two forms: compact (two binary bitmaps
 91 representing bit values and mask of affected bits) and bit-by-bit (list of
 92 bits identified by either index or name).
 93 
 94 Verbose (bit-by-bit) bitsets allow sending symbolic names for bits together
 95 with their values which saves a round trip (when the bitset is passed in a
 96 request) or at least a second request (when the bitset is in a reply). This is
 97 useful for one shot applications like traditional ethtool command. On the
 98 other hand, long running applications like ethtool monitor (displaying
 99 notifications) or network management daemons may prefer fetching the names
100 only once and using compact form to save message size. Notifications from
101 ethtool netlink interface always use compact form for bitsets.
102 
103 A bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK``
104 not set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests
105 modifying a bitmap, the former changes the bit set in mask to values set in
106 value and preserves the rest; the latter sets the bits set in the bitmap and
107 clears the rest.
108 
109 Compact 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 
118 Value and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits
119 rounded up to a multiple of 32 bits. They consist of 32-bit words in host byte
120 order, words ordered from least significant to most significant (i.e. the same
121 way as bitmaps are passed with ioctl interface).
122 
123 For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are
124 mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if
125 ``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair);
126 if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not
127 allowed (bitset represents a single bitmap.
128 
129 Kernel bit set length may differ from userspace length if older application is
130 used on newer kernel or vice versa. If userspace bitmap is longer, an error is
131 issued only if the request actually tries to set values of some bits not
132 recognized by kernel.
133 
134 Bit-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 
152 Bit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can
153 only contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an
154 arbitrary number of them.  A bit may be identified by its index or by its
155 name. 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
157 index exceeds kernel bit length or if name is not recognized.
158 
159 When ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as
160 a simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in
161 such case. Such bitset represents a bitmap with listed bits set and the rest
162 zero.
163 
164 In requests, application can use either form. Form used by kernel in reply is
165 determined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request
166 header. Semantics of value and mask depends on the attribute.
167 
168 
169 List of message types
170 =====================
171 
172 All constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix
173 according 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 
185 Userspace 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 
234 Kernel 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
282 information. They usually do not contain any message specific attributes.
283 Kernel replies with corresponding "GET_REPLY" message. For most types, ``GET``
284 request with ``NLM_F_DUMP`` and no device identification can be used to query
285 the information for all devices supporting the request.
286 
287 If the data can be also modified, corresponding ``SET`` message with the same
288 layout as corresponding ``GET_REPLY`` is used to request changes. Only
289 attributes where a change is requested are included in such request (also, not
290 all attributes may be changed). Replies to most ``SET`` request consist only
291 of error code and extack; if kernel provides additional data, it is sent in
292 the form of corresponding ``SET_REPLY`` message which can be suppressed by
293 setting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header.
294 
295 Data modification also triggers sending a ``NTF`` message with a notification.
296 These usually bear only a subset of attributes which was affected by the
297 change. The same notification is issued if the data is modified using other
298 means (mostly ioctl ethtool interface). Unlike notifications from ethtool
299 netlink code which are only sent if something actually changed, notifications
300 triggered by ioctl interface may be sent even if the request did not actually
301 change any data.
302 
303 ``ACT`` messages request kernel (driver) to perform a specific action. If some
304 information is reported by kernel (which can be suppressed by setting
305 ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of
306 an ``ACT_REPLY`` message. Performing an action also triggers a notification
307 (``NTF`` message).
308 
309 Later sections describe the format and semantics of these messages.
310 
311 
312 STRSET_GET
313 ==========
314 
315 Requests contents of a string set as provided by ioctl commands
316 ``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user
317 writeable so that the corresponding ``STRSET_SET`` message is only used in
318 kernel replies. There are two types of string sets: global (independent of
319 a device, e.g. device feature names) and device specific (e.g. device private
320 flags).
321 
322 Request 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 
334 Kernel 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 
358 Device identification in request header is optional. Depending on its presence
359 a 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 
365 If there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of
366 requested type are returned, otherwise only those specified in the request.
367 Flag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string
368 counts of the sets, not the actual strings.
369 
370 
371 LINKINFO_GET
372 ============
373 
374 Requests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for
375 link modes and autonegotiation related information. The request does not use
376 any attributes.
377 
378 Request contents:
379 
380   ====================================  ======  ==========================
381   ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
382   ====================================  ======  ==========================
383 
384 Kernel 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 
395 Attributes and their values have the same meaning as matching members of the
396 corresponding ioctl structures.
397 
398 ``LINKINFO_GET`` allows dump requests (kernel returns reply message for all
399 devices supporting the request).
400 
401 
402 LINKINFO_SET
403 ============
404 
405 ``LINKINFO_SET`` request allows setting some of the attributes reported by
406 ``LINKINFO_GET``.
407 
408 Request 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 
417 MDI(-X) status and transceiver cannot be set, request with the corresponding
418 attributes is rejected.
419 
420 
421 LINKMODES_GET
422 =============
423 
424 Requests link modes (supported, advertised and peer advertised) and related
425 information (autonegotiation status, link speed and duplex) as provided by
426 ``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes.
427 
428 Request contents:
429 
430   ====================================  ======  ==========================
431   ``ETHTOOL_A_LINKMODES_HEADER``        nested  request header
432   ====================================  ======  ==========================
433 
434 Kernel 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 
448 For ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask
449 represents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit
450 list.
451 
452 ``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all
453 devices supporting the request).
454 
455 
456 LINKMODES_SET
457 =============
458 
459 Request 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
474 autonegotiation is on (either set now or kept from before), advertised modes
475 are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one
476 of speed, duplex and lanes is specified, kernel adjusts advertised modes to all
477 supported modes matching speed, duplex, lanes or all (whatever is specified).
478 This autoselection is done on ethtool side with ioctl interface, netlink
479 interface is supposed to allow requesting changes without knowing what exactly
480 kernel supports.
481 
482 
483 LINKSTATE_GET
484 =============
485 
486 Requests link state information. Link up/down flag (as provided by
487 ``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might
488 be provided as well. In general, extended state describes reasons for why a port
489 is down, or why it operates in some non-obvious mode. This request does not have
490 any attributes.
491 
492 Request contents:
493 
494   ====================================  ======  ==========================
495   ``ETHTOOL_A_LINKSTATE_HEADER``        nested  request header
496   ====================================  ======  ==========================
497 
498 Kernel 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 
510 For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns
511 carrier flag provided by ``netif_carrier_ok()`` but there are drivers which
512 define their own handler.
513 
514 ``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are
515 optional values. ethtool core can provide either both
516 ``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``,
517 or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them.
518 
519 ``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all
520 devices supporting the request).
521 
522 
523 Link 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 
554 Link 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 
653 DEBUG_GET
654 =========
655 
656 Requests debugging settings of a device. At the moment, only message mask is
657 provided.
658 
659 Request contents:
660 
661   ====================================  ======  ==========================
662   ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
663   ====================================  ======  ==========================
664 
665 Kernel response contents:
666 
667   ====================================  ======  ==========================
668   ``ETHTOOL_A_DEBUG_HEADER``            nested  reply header
669   ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
670   ====================================  ======  ==========================
671 
672 The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as
673 provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl
674 interface. While it is called message level there for historical reasons, most
675 drivers and almost all newer drivers use it as a mask of enabled message
676 classes (represented by ``NETIF_MSG_*`` constants); therefore netlink
677 interface follows its actual use in practice.
678 
679 ``DEBUG_GET`` allows dump requests (kernel returns reply messages for all
680 devices supporting the request).
681 
682 
683 DEBUG_SET
684 =========
685 
686 Set or update debugging settings of a device. At the moment, only message mask
687 is supported.
688 
689 Request 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
697 enabled debugging message types for the device.
698 
699 
700 WOL_GET
701 =======
702 
703 Query 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 
707 Request contents:
708 
709   ====================================  ======  ==========================
710   ``ETHTOOL_A_WOL_HEADER``              nested  request header
711   ====================================  ======  ==========================
712 
713 Kernel 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 
721 In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the
722 device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only
723 included in reply if ``WAKE_MAGICSECURE`` mode is supported.
724 
725 
726 WOL_SET
727 =======
728 
729 Set or update wake-on-lan settings.
730 
731 Request 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 
743 FEATURES_GET
744 ============
745 
746 Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request.
747 
748 Request contents:
749 
750   ====================================  ======  ==========================
751   ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
752   ====================================  ======  ==========================
753 
754 Kernel 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 
764 Bitmaps in kernel response have the same meaning as bitmaps used in ioctl
765 interference but attribute names are different (they are based on
766 corresponding members of struct net_device). Legacy "flags" are not provided,
767 if userspace needs them (most likely only ethtool for backward compatibility),
768 it can calculate their values from related feature bits itself.
769 ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to
770 provide all names when using verbose bitmap format), the other three use no
771 mask (simple bit lists).
772 
773 
774 FEATURES_SET
775 ============
776 
777 Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request.
778 
779 Request contents:
780 
781   ====================================  ======  ==========================
782   ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
783   ``ETHTOOL_A_FEATURES_WANTED``         bitset  requested features
784   ====================================  ======  ==========================
785 
786 Kernel 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 
794 Request contains only one bitset which can be either value/mask pair (request
795 to change specific feature bits and leave the rest) or only a value (request
796 to set all features to specified set).
797 
798 As request is subject to netdev_change_features() sanity checks, optional
799 kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request
800 header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED``
801 reports the difference between client request and actual result: mask consists
802 of bits which differ between requested features and result (dev->features
803 after the operation), value consists of values of these bits in the request
804 (i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE``
805 reports the difference between old and new dev->features: mask consists of
806 bits which have changed, values are their values in new dev->features (after
807 the operation).
808 
809 ``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features
810 are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl
811 request but also each time features are modified with netdev_update_features()
812 or netdev_change_features().
813 
814 
815 PRIVFLAGS_GET
816 =============
817 
818 Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request.
819 
820 Request contents:
821 
822   ====================================  ======  ==========================
823   ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
824   ====================================  ======  ==========================
825 
826 Kernel 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.
834 These flags are defined by driver, their number and names (and also meaning)
835 are device dependent. For compact bitset format, names can be retrieved as
836 ``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested,
837 response uses all private flags supported by the device as mask so that client
838 gets the full information without having to fetch the string set with names.
839 
840 
841 PRIVFLAGS_SET
842 =============
843 
844 Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS``
845 ioctl request.
846 
847 Request 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
855 modify only values of some of them.
856 
857 
858 RINGS_GET
859 =========
860 
861 Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request.
862 
863 Request contents:
864 
865   ====================================  ======  ==========================
866   ``ETHTOOL_A_RINGS_HEADER``            nested  request header
867   ====================================  ======  ==========================
868 
869 Kernel 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
891 page-flipping TCP zero-copy receive (``getsockopt(TCP_ZEROCOPY_RECEIVE)``).
892 If enabled the device is configured to place frame headers and data into
893 separate buffers. The device configuration must make it possible to receive
894 full memory pages of data, for example because MTU is high enough or through
895 HW-GRO.
896 
897 ``ETHTOOL_A_RINGS_[RX|TX]_PUSH`` flag is used to enable descriptor fast
898 path to send or receive packets. In ordinary path, driver fills descriptors in DRAM and
899 notifies NIC hardware. In fast path, driver pushes descriptors to the device
900 through MMIO writes, thus reducing the latency. However, enabling this feature
901 may increase the CPU cost. Drivers may enforce additional per-packet
902 eligibility checks (e.g. on packet size).
903 
904 ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN`` specifies the maximum number of bytes of a
905 transmitted packet a driver can push directly to the underlying device
906 ('push' mode). Pushing some of the payload bytes to the device has the
907 advantages of reducing latency for small packets by avoiding DMA mapping (same
908 as ``ETHTOOL_A_RINGS_TX_PUSH`` parameter) as well as allowing the underlying
909 device to process packet headers ahead of fetching its payload.
910 This can help the device to make fast actions based on the packet's headers.
911 This is similar to the "tx-copybreak" parameter, which copies the packet to a
912 preallocated DMA memory area instead of mapping new memory. However,
913 tx-push-buff parameter copies the packet directly to the device to allow the
914 device to take faster actions on the packet.
915 
916 RINGS_SET
917 =========
918 
919 Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request.
920 
921 Request 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 
936 Kernel checks that requested ring sizes do not exceed limits reported by
937 driver. Driver may impose additional constraints and may not suspport all
938 attributes.
939 
940 
941 ``ETHTOOL_A_RINGS_CQE_SIZE`` specifies the completion queue event size.
942 Completion queue events(CQE) are the events posted by NIC to indicate the
943 completion status of a packet when the packet is sent(like send success or
944 error) or received(like pointers to packet fragments). The CQE size parameter
945 enables to modify the CQE size other than default size if NIC supports it.
946 A bigger CQE can have more receive buffer pointers inturn NIC can transfer
947 a bigger frame from wire. Based on the NIC hardware, the overall completion
948 queue size can be adjusted in the driver if CQE size is modified.
949 
950 CHANNELS_GET
951 ============
952 
953 Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request.
954 
955 Request contents:
956 
957   ====================================  ======  ==========================
958   ``ETHTOOL_A_CHANNELS_HEADER``         nested  request header
959   ====================================  ======  ==========================
960 
961 Kernel 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 
976 CHANNELS_SET
977 ============
978 
979 Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request.
980 
981 Request 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 
991 Kernel checks that requested channel counts do not exceed limits reported by
992 driver. Driver may impose additional constraints and may not suspport all
993 attributes.
994 
995 
996 COALESCE_GET
997 ============
998 
999 Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request.
1000 
1001 Request contents:
1002 
1003   ====================================  ======  ==========================
1004   ``ETHTOOL_A_COALESCE_HEADER``         nested  request header
1005   ====================================  ======  ==========================
1006 
1007 Kernel 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 
1042 Attributes are only included in reply if their value is not zero or the
1043 corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e.
1044 they are declared as supported by driver).
1045 
1046 Timer reset mode (``ETHTOOL_A_COALESCE_USE_CQE_TX`` and
1047 ``ETHTOOL_A_COALESCE_USE_CQE_RX``) controls the interaction between packet
1048 arrival and the various time based delay parameters. By default timers are
1049 expected to limit the max delay between any packet arrival/departure and a
1050 corresponding interrupt. In this mode timer should be started by packet
1051 arrival (sometimes delivery of previous interrupt) and reset when interrupt
1052 is delivered.
1053 Setting the appropriate attribute to 1 will enable ``CQE`` mode, where
1054 each packet event resets the timer. In this mode timer is used to force
1055 the interrupt if queue goes idle, while busy queues depend on the packet
1056 limit to trigger interrupts.
1057 
1058 Tx aggregation consists of copying frames into a contiguous buffer so that they
1059 can be submitted as a single IO operation. ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``
1060 describes the maximum size in bytes for the submitted buffer.
1061 ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES`` describes the maximum number of frames
1062 that can be aggregated into a single buffer.
1063 ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS`` describes the amount of time in usecs,
1064 counted since the first packet arrival in an aggregated block, after which the
1065 block should be sent.
1066 This feature is mainly of interest for specific USB devices which does not cope
1067 well with frequent small-sized URBs transmissions.
1068 
1069 ``ETHTOOL_A_COALESCE_RX_PROFILE`` and ``ETHTOOL_A_COALESCE_TX_PROFILE`` refer
1070 to DIM parameters, see `Generic Network Dynamic Interrupt Moderation (Net DIM)
1071 <https://www.kernel.org/doc/Documentation/networking/net_dim.rst>`_.
1072 
1073 COALESCE_SET
1074 ============
1075 
1076 Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request.
1077 
1078 Request 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 
1113 Request is rejected if it attributes declared as unsupported by driver (i.e.
1114 such that the corresponding bit in ``ethtool_ops::supported_coalesce_params``
1115 is not set), regardless of their values. Driver may impose additional
1116 constraints on coalescing parameters and their values.
1117 
1118 Compared to requests issued via the ``ioctl()`` netlink version of this request
1119 will try harder to make sure that values specified by the user have been applied
1120 and may call the driver twice.
1121 
1122 
1123 PAUSE_GET
1124 =========
1125 
1126 Gets pause frame settings like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
1127 
1128 Request 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 
1140 If absent from the request, stats will be provided with
1141 an ``ETHTOOL_A_PAUSE_STATS_SRC`` attribute in the response equal to
1142 ``ETHTOOL_MAC_STATS_SRC_AGGREGATE``.
1143 
1144 Kernel 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
1155 in ``ETHTOOL_A_HEADER_FLAGS``.
1156 It will be empty if driver did not report any statistics. Drivers fill in
1157 the statistics in the following structure:
1158 
1159 .. kernel-doc:: include/linux/ethtool.h
1160     :identifiers: ethtool_pause_stats
1161 
1162 Each member has a corresponding attribute defined.
1163 
1164 PAUSE_SET
1165 =========
1166 
1167 Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
1168 
1169 Request 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 
1179 EEE_GET
1180 =======
1181 
1182 Gets Energy Efficient Ethernet settings like ``ETHTOOL_GEEE`` ioctl request.
1183 
1184 Request contents:
1185 
1186   =====================================  ======  ==========================
1187   ``ETHTOOL_A_EEE_HEADER``               nested  request header
1188   =====================================  ======  ==========================
1189 
1190 Kernel 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 
1202 In ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is
1203 enabled, value of link modes for which EEE is advertised. Link modes for which
1204 peer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The
1205 netlink interface allows reporting EEE status for all link modes but only
1206 first 32 are provided by the ``ethtool_ops`` callback.
1207 
1208 
1209 EEE_SET
1210 =======
1211 
1212 Sets Energy Efficient Ethernet parameters like ``ETHTOOL_SEEE`` ioctl request.
1213 
1214 Request 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
1225 EEE for (if there is no mask) or specify changes to the list (if there is
1226 a mask). The netlink interface allows reporting EEE status for all link modes
1227 but only first 32 can be set at the moment as that is what the ``ethtool_ops``
1228 callback supports.
1229 
1230 
1231 TSINFO_GET
1232 ==========
1233 
1234 Gets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request.
1235 
1236 Request contents:
1237 
1238   =====================================  ======  ==========================
1239   ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
1240   =====================================  ======  ==========================
1241 
1242 Kernel 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
1254 is no special value for this case). The bitset attributes are omitted if they
1255 would be empty (no bit set).
1256 
1257 Additional 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 
1265 CABLE_TEST
1266 ==========
1267 
1268 Start a cable test.
1269 
1270 Request contents:
1271 
1272   ====================================  ======  ==========================
1273   ``ETHTOOL_A_CABLE_TEST_HEADER``       nested  request header
1274   ====================================  ======  ==========================
1275 
1276 Notification contents:
1277 
1278 An Ethernet cable typically contains 1, 2 or 4 pairs. The length of
1279 the pair can only be measured when there is a fault in the pair and
1280 hence a reflection. Information about the fault may not be available,
1281 depending on the specific hardware. Hence the contents of the notify
1282 message are mostly optional. The attributes can be repeated an
1283 arbitrary number of times, in an arbitrary order, for an arbitrary
1284 number of pairs.
1285 
1286 The example shows the notification sent when the test is completed for
1287 a T2 cable, i.e. two pairs. One pair is OK and hence has no length
1288 information. The second pair has a fault and does have length
1289 information.
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 
1317 CABLE_TEST TDR
1318 ==============
1319 
1320 Start a cable test and report raw TDR data
1321 
1322 Request 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 
1338 The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members
1339 of the nest. All distances are expressed in centimeters. The PHY takes
1340 the distances as a guide, and rounds to the nearest distance it
1341 actually supports. If a pair is passed, only that one pair will be
1342 tested. Otherwise all pairs are tested.
1343 
1344 Notification contents:
1345 
1346 Raw TDR data is gathered by sending a pulse down the cable and
1347 recording the amplitude of the reflected pulse for a given distance.
1348 
1349 It can take a number of seconds to collect TDR data, especial if the
1350 full 100 meters is probed at 1 meter intervals. When the test is
1351 started a notification will be sent containing just
1352 ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
1353 ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED.
1354 
1355 When the test has completed a second notification will be sent
1356 containing ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
1357 ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data.
1358 
1359 The message may optionally contain the amplitude of the pulse send
1360 down the cable. This is measured in mV. A reflection should not be
1361 bigger than transmitted pulse.
1362 
1363 Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP
1364 nest containing information about the distance along the cable for the
1365 first reading, the last reading, and the step between each
1366 reading. Distances are measured in centimeters. These should be the
1367 exact values the PHY used. These may be different to what the user
1368 requested, if the native measurement resolution is greater than 1 cm.
1369 
1370 For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is
1371 used 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 
1411 TUNNEL_INFO
1412 ===========
1413 
1414 Gets information about the tunnel state NIC is aware of.
1415 
1416 Request contents:
1417 
1418   =====================================  ======  ==========================
1419   ``ETHTOOL_A_TUNNEL_INFO_HEADER``       nested  request header
1420   =====================================  ======  ==========================
1421 
1422 Kernel 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 
1444 For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that
1445 the table contains static entries, hard-coded by the NIC.
1446 
1447 FEC_GET
1448 =======
1449 
1450 Gets FEC configuration and state like ``ETHTOOL_GFECPARAM`` ioctl request.
1451 
1452 Request contents:
1453 
1454   =====================================  ======  ==========================
1455   ``ETHTOOL_A_FEC_HEADER``               nested  request header
1456   =====================================  ======  ==========================
1457 
1458 Kernel 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
1469 active on the interface. This attribute may not be present if device does
1470 not support FEC.
1471 
1472 ``ETHTOOL_A_FEC_MODES`` and ``ETHTOOL_A_FEC_AUTO`` are only meaningful when
1473 autonegotiation is disabled. If ``ETHTOOL_A_FEC_AUTO`` is non-zero driver will
1474 select the FEC mode automatically based on the parameters of the SFP module.
1475 This 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
1477 bits (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``.
1481 Each attribute carries an array of 64bit statistics. First entry in the array
1482 contains the total number of events on the port, while the following entries
1483 are counters corresponding to lanes/PCS instances. The number of entries in
1484 the 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 
1494 Drivers fill in the statistics in the following structure:
1495 
1496 .. kernel-doc:: include/linux/ethtool.h
1497     :identifiers: ethtool_fec_stats
1498 
1499 FEC_SET
1500 =======
1501 
1502 Sets FEC parameters like ``ETHTOOL_SFECPARAM`` ioctl request.
1503 
1504 Request 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
1513 FEC mode is selected as part of autonegotiation.
1514 
1515 ``ETHTOOL_A_FEC_MODES`` selects which FEC mode should be used. It's recommended
1516 to set only one bit, if multiple bits are set driver may choose between them
1517 in an implementation specific way.
1518 
1519 ``ETHTOOL_A_FEC_AUTO`` requests the driver to choose FEC mode based on SFP
1520 module parameters. This does not mean autonegotiation.
1521 
1522 MODULE_EEPROM_GET
1523 =================
1524 
1525 Fetch module EEPROM data dump.
1526 This interface is designed to allow dumps of at most 1/2 page at once. This
1527 means only dumps of 128 (or less) bytes are allowed, without crossing half page
1528 boundary located at offset 128. For pages other than 0 only high 128 bytes are
1529 accessible.
1530 
1531 Request 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 
1542 If ``ETHTOOL_A_MODULE_EEPROM_BANK`` is not specified, bank 0 is assumed.
1543 
1544 Kernel 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
1554 bytes driver actually read.
1555 
1556 STATS_GET
1557 =========
1558 
1559 Get standard statistics for the interface. Note that this is not
1560 a re-implementation of ``ETHTOOL_GSTATS`` which exposed driver-defined
1561 stats.
1562 
1563 Request 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 
1571 Kernel 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 
1591 Users specify which groups of statistics they are requesting via
1592 the ``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 
1601 Each 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
1604 the statistics in the group, if available.
1605 
1606 Statistics are added to the ``ETHTOOL_A_STATS_GRP`` nest under
1607 ``ETHTOOL_A_STATS_GRP_STAT``. ``ETHTOOL_A_STATS_GRP_STAT`` should contain
1608 single 8 byte (u64) attribute inside - the type of that attribute is
1609 the statistic ID and the value is the value of the statistic.
1610 Each group has its own interpretation of statistic IDs.
1611 Attribute IDs correspond to strings from the string set identified
1612 by ``ETHTOOL_A_STATS_GRP_SS_ID``. Complex statistics (such as RMON histogram
1613 entries) are also listed inside ``ETHTOOL_A_STATS_GRP`` and do not have
1614 a string defined in the string set.
1615 
1616 RMON "histogram" counters count number of packets within given size range.
1617 Because RFC does not specify the ranges beyond the standard 1518 MTU devices
1618 differ in definition of buckets. For this reason the definition of packet ranges
1619 is left to each driver.
1620 
1621 ``ETHTOOL_A_STATS_GRP_HIST_RX`` and ``ETHTOOL_A_STATS_GRP_HIST_TX`` nests
1622 contain 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 
1630 Low 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
1640 from ``enum ethtool_mac_stats_src``. If absent from the request, stats will be
1641 provided with an ``ETHTOOL_A_STATS_SRC`` attribute in the response equal to
1642 ``ETHTOOL_MAC_STATS_SRC_AGGREGATE``.
1643 
1644 PHC_VCLOCKS_GET
1645 ===============
1646 
1647 Query device PHC virtual clocks information.
1648 
1649 Request contents:
1650 
1651   ====================================  ======  ==========================
1652   ``ETHTOOL_A_PHC_VCLOCKS_HEADER``      nested  request header
1653   ====================================  ======  ==========================
1654 
1655 Kernel 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 
1663 MODULE_GET
1664 ==========
1665 
1666 Gets transceiver module parameters.
1667 
1668 Request contents:
1669 
1670   =====================================  ======  ==========================
1671   ``ETHTOOL_A_MODULE_HEADER``            nested  request header
1672   =====================================  ======  ==========================
1673 
1674 Kernel 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 
1682 The optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute encodes the
1683 transceiver module power mode policy enforced by the host. The default policy
1684 is driver-dependent, but "auto" is the recommended default and it should be
1685 implemented by new drivers and drivers where conformance to a legacy behavior
1686 is not critical.
1687 
1688 The optional ``ETHTHOOL_A_MODULE_POWER_MODE`` attribute encodes the operational
1689 power mode policy of the transceiver module. It is only reported when a module
1690 is plugged-in. Possible values are:
1691 
1692 .. kernel-doc:: include/uapi/linux/ethtool.h
1693     :identifiers: ethtool_module_power_mode
1694 
1695 MODULE_SET
1696 ==========
1697 
1698 Sets transceiver module parameters.
1699 
1700 Request contents:
1701 
1702   ======================================  ======  ==========================
1703   ``ETHTOOL_A_MODULE_HEADER``             nested  request header
1704   ``ETHTOOL_A_MODULE_POWER_MODE_POLICY``  u8      power mode policy
1705   ======================================  ======  ==========================
1706 
1707 When set, the optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute is used
1708 to set the transceiver module power policy enforced by the host. Possible
1709 values are:
1710 
1711 .. kernel-doc:: include/uapi/linux/ethtool.h
1712     :identifiers: ethtool_module_power_mode_policy
1713 
1714 For SFF-8636 modules, low power mode is forced by the host according to table
1715 6-10 in revision 2.10a of the specification.
1716 
1717 For CMIS modules, low power mode is forced by the host according to table 6-12
1718 in revision 5.0 of the specification.
1719 
1720 PSE_GET
1721 =======
1722 
1723 Gets PSE attributes.
1724 
1725 Request contents:
1726 
1727   =====================================  ======  ==========================
1728   ``ETHTOOL_A_PSE_HEADER``               nested  request header
1729   =====================================  ======  ==========================
1730 
1731 Kernel 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 
1756 When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` attribute identifies
1757 the operational state of the PoDL PSE functions.  The operational state of the
1758 PSE function can be changed using the ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL``
1759 action. This option is corresponding to ``IEEE 802.3-2018`` 30.15.1.1.2
1760 aPoDLPSEAdminState. Possible values are:
1761 
1762 .. kernel-doc:: include/uapi/linux/ethtool.h
1763     :identifiers: ethtool_podl_pse_admin_state
1764 
1765 The 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 
1771 When set, the optional ``ETHTOOL_A_PODL_PSE_PW_D_STATUS`` attribute identifies
1772 the power detection status of the PoDL PSE.  The status depend on internal PSE
1773 state machine and automatic PD classification support. This option is
1774 corresponding to ``IEEE 802.3-2018`` 30.15.1.1.3 aPoDLPSEPowerDetectionStatus.
1775 Possible values are:
1776 
1777 .. kernel-doc:: include/uapi/linux/ethtool.h
1778     :identifiers: ethtool_podl_pse_pw_d_status
1779 
1780 The 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 
1786 When set, the optional ``ETHTOOL_A_C33_PSE_PW_CLASS`` attribute identifies
1787 the power class of the C33 PSE. It depends on the class negotiated between
1788 the PSE and the PD. This option is corresponding to ``IEEE 802.3-2022``
1789 30.9.1.1.8 aPSEPowerClassification.
1790 
1791 When set, the optional ``ETHTOOL_A_C33_PSE_ACTUAL_PW`` attribute identifies
1792 This option is corresponding to ``IEEE 802.3-2022`` 30.9.1.1.23 aPSEActualPower.
1793 Actual power is reported in mW.
1794 
1795 When set, the optional ``ETHTOOL_A_C33_PSE_EXT_STATE`` attribute identifies
1796 the 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 
1801 When set, the optional ``ETHTOOL_A_C33_PSE_EXT_SUBSTATE`` attribute identifies
1802 the extended error state of the C33 PSE. Possible values are:
1803 Possible 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 
1816 When set, the optional ``ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT`` attribute
1817 identifies the C33 PSE power limit in mW.
1818 
1819 When set the optional ``ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES`` nested attribute
1820 identifies 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``.
1823 If the controller works with fixed classes, the min and max values will be
1824 equal.
1825 
1826 PSE_SET
1827 =======
1828 
1829 Sets PSE parameters.
1830 
1831 Request 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 
1841 When set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL`` attribute is used
1842 to 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 
1846 The same goes for ``ETHTOOL_A_C33_PSE_ADMIN_CONTROL`` implementing
1847 ``IEEE 802.3-2022`` 30.9.1.2.1 acPSEAdminControl.
1848 
1849 When set, the optional ``ETHTOOL_A_C33_PSE_AVAIL_PWR_LIMIT`` attribute is
1850 used to control the available power value limit for C33 PSE in milliwatts.
1851 This 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
1853 Variables, which are described in power classes.
1854 
1855 It was decided to use milliwatts for this interface to unify it with other
1856 power monitoring interfaces, which also use milliwatts, and to align with
1857 various existing products that document power consumption in watts rather than
1858 classes. If power limit configuration based on classes is needed, the
1859 conversion can be done in user space, for example by ethtool.
1860 
1861 RSS_GET
1862 =======
1863 
1864 Get indirection table, hash key and hash function info associated with a
1865 RSS context of an interface similar to ``ETHTOOL_GRSSH`` ioctl request.
1866 
1867 Request contents:
1868 
1869 =====================================  ======  ==========================
1870   ``ETHTOOL_A_RSS_HEADER``             nested  request header
1871   ``ETHTOOL_A_RSS_CONTEXT``            u32     context number
1872 =====================================  ======  ==========================
1873 
1874 Kernel 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 
1885 ETHTOOL_A_RSS_HFUNC attribute is bitmap indicating the hash function
1886 being used. Current supported options are toeplitz, xor or crc32.
1887 ETHTOOL_A_RSS_INDIR attribute returns RSS indirection table where each byte
1888 indicates queue number.
1889 ETHTOOL_A_RSS_INPUT_XFRM attribute is a bitmap indicating the type of
1890 transformation applied to the input protocol fields before given to the RSS
1891 hfunc. Current supported option is symmetric-xor.
1892 
1893 PLCA_GET_CFG
1894 ============
1895 
1896 Gets the IEEE 802.3cg-2019 Clause 148 Physical Layer Collision Avoidance
1897 (PLCA) Reconciliation Sublayer (RS) attributes.
1898 
1899 Request contents:
1900 
1901   =====================================  ======  ==========================
1902   ``ETHTOOL_A_PLCA_HEADER``              nested  request header
1903   =====================================  ======  ==========================
1904 
1905 Kernel 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 
1926 When set, the optional ``ETHTOOL_A_PLCA_VERSION`` attribute indicates which
1927 standard and version the PLCA management interface complies to. When not set,
1928 the interface is vendor-specific and (possibly) supplied by the driver.
1929 The OPEN Alliance SIG specifies a standard register map for 10BASE-T1S PHYs
1930 embedding the PLCA Reconcialiation Sublayer. See "10BASE-T1S PLCA Management
1931 Registers" at https://www.opensig.org/about/specifications/.
1932 
1933 When set, the optional ``ETHTOOL_A_PLCA_ENABLED`` attribute indicates the
1934 administrative state of the PLCA RS. When not set, the node operates in "plain"
1935 CSMA/CD mode. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.1
1936 aPLCAAdminState / 30.16.1.2.1 acPLCAAdminControl.
1937 
1938 When set, the optional ``ETHTOOL_A_PLCA_NODE_ID`` attribute indicates the
1939 configured local node ID of the PHY. This ID determines which transmit
1940 opportunity (TO) is reserved for the node to transmit into. This option is
1941 corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.4 aPLCALocalNodeID. The valid
1942 range for this attribute is [0 .. 255] where 255 means "not configured".
1943 
1944 When set, the optional ``ETHTOOL_A_PLCA_NODE_CNT`` attribute indicates the
1945 configured maximum number of PLCA nodes on the mixing-segment. This number
1946 determines the total number of transmit opportunities generated during a
1947 PLCA cycle. This attribute is relevant only for the PLCA coordinator, which is
1948 the node with aPLCALocalNodeID set to 0. Follower nodes ignore this setting.
1949 This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.3
1950 aPLCANodeCount. The valid range for this attribute is [1 .. 255].
1951 
1952 When set, the optional ``ETHTOOL_A_PLCA_TO_TMR`` attribute indicates the
1953 configured value of the transmit opportunity timer in bit-times. This value
1954 must be set equal across all nodes sharing the medium for PLCA to work
1955 correctly. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.5
1956 aPLCATransmitOpportunityTimer. The valid range for this attribute is
1957 [0 .. 255].
1958 
1959 When set, the optional ``ETHTOOL_A_PLCA_BURST_CNT`` attribute indicates the
1960 configured number of extra packets that the node is allowed to send during a
1961 single transmit opportunity. By default, this attribute is 0, meaning that
1962 the node can only send a single frame per TO. When greater than 0, the PLCA RS
1963 keeps the TO after any transmission, waiting for the MAC to send a new frame
1964 for up to aPLCABurstTimer BTs. This can only happen a number of times per PLCA
1965 cycle up to the value of this parameter. After that, the burst is over and the
1966 normal 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
1968 attribute is [0 .. 255].
1969 
1970 When set, the optional ``ETHTOOL_A_PLCA_BURST_TMR`` attribute indicates how
1971 many bit-times the PLCA RS waits for the MAC to initiate a new transmission
1972 when aPLCAMaxBurstCount is greater than 0. If the MAC fails to send a new
1973 frame within this time, the burst ends and the counting of TOs resumes.
1974 Otherwise, the new frame is sent as part of the current burst. This option
1975 is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.7 aPLCABurstTimer. The
1976 valid range for this attribute is [0 .. 255]. Although, the value should be
1977 set greater than the Inter-Frame-Gap (IFG) time of the MAC (plus some margin)
1978 for PLCA burst mode to work as intended.
1979 
1980 PLCA_SET_CFG
1981 ============
1982 
1983 Sets PLCA RS parameters.
1984 
1985 Request 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 
2004 For a description of each attribute, see ``PLCA_GET_CFG``.
2005 
2006 PLCA_GET_STATUS
2007 ===============
2008 
2009 Gets PLCA RS status information.
2010 
2011 Request contents:
2012 
2013   =====================================  ======  ==========================
2014   ``ETHTOOL_A_PLCA_HEADER``              nested  request header
2015   =====================================  ======  ==========================
2016 
2017 Kernel response contents:
2018 
2019   ======================================  ======  =============================
2020   ``ETHTOOL_A_PLCA_HEADER``               nested  reply header
2021   ``ETHTOOL_A_PLCA_STATUS``               u8      PLCA RS operational status
2022   ======================================  ======  =============================
2023 
2024 When set, the ``ETHTOOL_A_PLCA_STATUS`` attribute indicates whether the node is
2025 detecting the presence of the BEACON on the network. This flag is
2026 corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.2 aPLCAStatus.
2027 
2028 MM_GET
2029 ======
2030 
2031 Retrieve 802.3 MAC Merge parameters.
2032 
2033 Request contents:
2034 
2035   ====================================  ======  ==========================
2036   ``ETHTOOL_A_MM_HEADER``               nested  request header
2037   ====================================  ======  ==========================
2038 
2039 Kernel 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 
2064 The attributes are populated by the device driver through the following
2065 structure:
2066 
2067 .. kernel-doc:: include/linux/ethtool.h
2068     :identifiers: ethtool_mm_state
2069 
2070 The ``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 
2075 If ``ETHTOOL_A_MM_VERIFY_ENABLED`` was passed as false in the ``MM_SET``
2076 command, ``ETHTOOL_A_MM_VERIFY_STATUS`` will report either
2077 ``ETHTOOL_MM_VERIFY_STATUS_INITIAL`` or ``ETHTOOL_MM_VERIFY_STATUS_DISABLED``,
2078 otherwise it should report one of the other states.
2079 
2080 It is recommended that drivers start with the pMAC disabled, and enable it upon
2081 user space request. It is also recommended that user space does not depend upon
2082 the 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
2086 report any statistics. Drivers fill in the statistics in the following
2087 structure:
2088 
2089 .. kernel-doc:: include/linux/ethtool.h
2090     :identifiers: ethtool_mm_stats
2091 
2092 MM_SET
2093 ======
2094 
2095 Modifies the configuration of the 802.3 MAC Merge layer.
2096 
2097 Request 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 
2107 The attributes are propagated to the driver through the following structure:
2108 
2109 .. kernel-doc:: include/linux/ethtool.h
2110     :identifiers: ethtool_mm_cfg
2111 
2112 MODULE_FW_FLASH_ACT
2113 ===================
2114 
2115 Flashes transceiver module firmware.
2116 
2117 Request 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 
2125 The firmware update process consists of three logical steps:
2126 
2127 1. Downloading a firmware image to the transceiver module and validating it.
2128 2. Running the firmware image.
2129 3. Committing the firmware image so that it is run upon reset.
2130 
2131 When flash command is given, those three steps are taken in that order.
2132 
2133 This message merely schedules the update process and returns immediately
2134 without blocking. The process then runs asynchronously.
2135 Since it can take several minutes to complete, during the update process
2136 notifications are emitted from the kernel to user space updating it about
2137 the status and progress.
2138 
2139 The ``ETHTOOL_A_MODULE_FW_FLASH_FILE_NAME`` attribute encodes the firmware
2140 image file name. The firmware image is downloaded to the transceiver module,
2141 validated, run and committed.
2142 
2143 The optional ``ETHTOOL_A_MODULE_FW_FLASH_PASSWORD`` attribute encodes a password
2144 that might be required as part of the transceiver module firmware update
2145 process.
2146 
2147 The firmware update process can take several minutes to complete. Therefore,
2148 during the update process notifications are emitted from the kernel to user
2149 space updating it about the status and progress.
2150 
2151 
2152 
2153 Notification 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 
2167 The ``ETHTOOL_A_MODULE_FW_FLASH_STATUS`` attribute encodes the current status
2168 of the firmware update process. Possible values are:
2169 
2170 .. kernel-doc:: include/uapi/linux/ethtool.h
2171     :identifiers: ethtool_module_fw_flash_status
2172 
2173 The ``ETHTOOL_A_MODULE_FW_FLASH_STATUS_MSG`` attribute encodes a status message
2174 string.
2175 
2176 The ``ETHTOOL_A_MODULE_FW_FLASH_DONE`` and ``ETHTOOL_A_MODULE_FW_FLASH_TOTAL``
2177 attributes encode the completed and total amount of work, respectively.
2178 
2179 Request translation
2180 ===================
2181 
2182 The following table maps ioctl commands to netlink commands providing their
2183 functionality. Entries with "n/a" in right column are commands which do not
2184 have their netlink replacement yet. Entries which "n/a" in the left column
2185 are 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   =================================== =====================================

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php