ethtool: add PAUSE_NTF notification
[linux-block.git] / Documentation / networking / ethtool-netlink.rst
CommitLineData
2b4a8990
MK
1=============================
2Netlink interface for ethtool
3=============================
4
5
6Basic information
7=================
8
9Netlink interface for ethtool uses generic netlink family ``ethtool``
10(userspace application should use macros ``ETHTOOL_GENL_NAME`` and
11``ETHTOOL_GENL_VERSION`` defined in ``<linux/ethtool_netlink.h>`` uapi
12header). This family does not use a specific header, all information in
13requests and replies is passed using netlink attributes.
14
15The ethtool netlink interface uses extended ACK for error and warning
16reporting, userspace application developers are encouraged to make these
17messages available to user in a suitable way.
18
19Requests can be divided into three categories: "get" (retrieving information),
20"set" (setting parameters) and "action" (invoking an action).
21
22All "set" and "action" type requests require admin privileges
23(``CAP_NET_ADMIN`` in the namespace). Most "get" type requests are allowed for
24anyone but there are exceptions (where the response contains sensitive
25information). In some cases, the request as such is allowed for anyone but
26unprivileged users have attributes with sensitive information (e.g.
27wake-on-lan password) omitted.
28
29
30Conventions
31===========
32
33Attributes which represent a boolean value usually use NLA_U8 type so that we
34can distinguish three states: "on", "off" and "not present" (meaning the
35information is not available in "get" requests or value is not to be changed
36in "set" requests). For these attributes, the "true" value should be passed as
37number 1 but any non-zero value should be understood as "true" by recipient.
38In the tables below, "bool" denotes NLA_U8 attributes interpreted in this way.
39
40In the message structure descriptions below, if an attribute name is suffixed
41with "+", parent nest can contain multiple attributes of the same type. This
42implements an array of entries.
43
44
45Request header
46==============
47
48Each request or reply message contains a nested attribute with common header.
49Structure of this header is
50
51 ============================== ====== =============================
52 ``ETHTOOL_A_HEADER_DEV_INDEX`` u32 device ifindex
53 ``ETHTOOL_A_HEADER_DEV_NAME`` string device name
54 ``ETHTOOL_A_HEADER_FLAGS`` u32 flags common for all requests
55 ============================== ====== =============================
56
57``ETHTOOL_A_HEADER_DEV_INDEX`` and ``ETHTOOL_A_HEADER_DEV_NAME`` identify the
58device message relates to. One of them is sufficient in requests, if both are
59used, they must identify the same device. Some requests, e.g. global string
60sets, do not require device identification. Most ``GET`` requests also allow
61dump requests without device identification to query the same information for
62all devices providing it (each device in a separate message).
63
64``ETHTOOL_A_HEADER_FLAGS`` is a bitmap of request flags common for all request
65types. The interpretation of these flags is the same for all request types but
66the flags may not apply to requests. Recognized flags are:
67
68 ================================= ===================================
69 ``ETHTOOL_FLAG_COMPACT_BITSETS`` use compact format bitsets in reply
70 ``ETHTOOL_FLAG_OMIT_REPLY`` omit optional reply (_SET and _ACT)
71 ================================= ===================================
72
73New request flags should follow the general idea that if the flag is not set,
74the behaviour is backward compatible, i.e. requests from old clients not aware
75of the flag should be interpreted the way the client expects. A client must
76not set flags it does not understand.
77
78
10b518d4
MK
79Bit sets
80========
81
82For short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32``
83type is used. For arbitrary length bitmaps, ethtool netlink uses a nested
84attribute with contents of one of two forms: compact (two binary bitmaps
85representing bit values and mask of affected bits) and bit-by-bit (list of
86bits identified by either index or name).
87
88Verbose (bit-by-bit) bitsets allow sending symbolic names for bits together
89with their values which saves a round trip (when the bitset is passed in a
90request) or at least a second request (when the bitset is in a reply). This is
91useful for one shot applications like traditional ethtool command. On the
92other hand, long running applications like ethtool monitor (displaying
93notifications) or network management daemons may prefer fetching the names
94only once and using compact form to save message size. Notifications from
95ethtool netlink interface always use compact form for bitsets.
96
97A bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK``
98not set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests
99modifying a bitmap, the former changes the bit set in mask to values set in
100value and preserves the rest; the latter sets the bits set in the bitmap and
101clears the rest.
102
103Compact form: nested (bitset) atrribute contents:
104
105 ============================ ====== ============================
106 ``ETHTOOL_A_BITSET_NOMASK`` flag no mask, only a list
107 ``ETHTOOL_A_BITSET_SIZE`` u32 number of significant bits
108 ``ETHTOOL_A_BITSET_VALUE`` binary bitmap of bit values
109 ``ETHTOOL_A_BITSET_MASK`` binary bitmap of valid bits
110 ============================ ====== ============================
111
112Value and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits
113rounded up to a multiple of 32 bits. They consist of 32-bit words in host byte
114order, words ordered from least significant to most significant (i.e. the same
115way as bitmaps are passed with ioctl interface).
116
117For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are
118mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if
119``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair);
120if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not
121allowed (bitset represents a single bitmap.
122
123Kernel bit set length may differ from userspace length if older application is
124used on newer kernel or vice versa. If userspace bitmap is longer, an error is
125issued only if the request actually tries to set values of some bits not
126recognized by kernel.
127
128Bit-by-bit form: nested (bitset) attribute contents:
129
130 +------------------------------------+--------+-----------------------------+
131 | ``ETHTOOL_A_BITSET_NOMASK`` | flag | no mask, only a list |
132 +------------------------------------+--------+-----------------------------+
133 | ``ETHTOOL_A_BITSET_SIZE`` | u32 | number of significant bits |
134 +------------------------------------+--------+-----------------------------+
135 | ``ETHTOOL_A_BITSET_BITS`` | nested | array of bits |
136 +-+----------------------------------+--------+-----------------------------+
137 | | ``ETHTOOL_A_BITSET_BITS_BIT+`` | nested | one bit |
138 +-+-+--------------------------------+--------+-----------------------------+
139 | | | ``ETHTOOL_A_BITSET_BIT_INDEX`` | u32 | bit index (0 for LSB) |
140 +-+-+--------------------------------+--------+-----------------------------+
141 | | | ``ETHTOOL_A_BITSET_BIT_NAME`` | string | bit name |
142 +-+-+--------------------------------+--------+-----------------------------+
143 | | | ``ETHTOOL_A_BITSET_BIT_VALUE`` | flag | present if bit is set |
144 +-+-+--------------------------------+--------+-----------------------------+
145
146Bit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can
147only contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an
148arbitrary number of them. A bit may be identified by its index or by its
149name. When used in requests, listed bits are set to 0 or 1 according to
150``ETHTOOL_A_BITSET_BIT_VALUE``, the rest is preserved. A request fails if
151index exceeds kernel bit length or if name is not recognized.
152
153When ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as
154a simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in
155such case. Such bitset represents a bitmap with listed bits set and the rest
156zero.
157
158In requests, application can use either form. Form used by kernel in reply is
159determined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request
160header. Semantics of value and mask depends on the attribute.
161
162
2b4a8990
MK
163List of message types
164=====================
165
166All constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix
167according to message purpose:
168
169 ============== ======================================
170 ``_GET`` userspace request to retrieve data
171 ``_SET`` userspace request to set data
172 ``_ACT`` userspace request to perform an action
173 ``_GET_REPLY`` kernel reply to a ``GET`` request
174 ``_SET_REPLY`` kernel reply to a ``SET`` request
175 ``_ACT_REPLY`` kernel reply to an ``ACT`` request
176 ``_NTF`` kernel notification
177 ============== ======================================
178
71921690
MK
179Userspace to kernel:
180
181 ===================================== ================================
182 ``ETHTOOL_MSG_STRSET_GET`` get string set
459e0b81 183 ``ETHTOOL_MSG_LINKINFO_GET`` get link settings
a53f3d41 184 ``ETHTOOL_MSG_LINKINFO_SET`` set link settings
f625aa9b 185 ``ETHTOOL_MSG_LINKMODES_GET`` get link modes info
bfbcfe20 186 ``ETHTOOL_MSG_LINKMODES_SET`` set link modes info
3d2b847f 187 ``ETHTOOL_MSG_LINKSTATE_GET`` get link state
6a94b8cc 188 ``ETHTOOL_MSG_DEBUG_GET`` get debugging settings
e54d04e3 189 ``ETHTOOL_MSG_DEBUG_SET`` set debugging settings
51ea22b0 190 ``ETHTOOL_MSG_WOL_GET`` get wake-on-lan settings
8d425b19 191 ``ETHTOOL_MSG_WOL_SET`` set wake-on-lan settings
0524399d 192 ``ETHTOOL_MSG_FEATURES_GET`` get device features
0980bfcd 193 ``ETHTOOL_MSG_FEATURES_SET`` set device features
e16c3386 194 ``ETHTOOL_MSG_PRIVFLAGS_GET`` get private flags
f265d799 195 ``ETHTOOL_MSG_PRIVFLAGS_SET`` set private flags
e4a1717b 196 ``ETHTOOL_MSG_RINGS_GET`` get ring sizes
2fc2929e 197 ``ETHTOOL_MSG_RINGS_SET`` set ring sizes
0c84979c 198 ``ETHTOOL_MSG_CHANNELS_GET`` get channel counts
e19c591e 199 ``ETHTOOL_MSG_CHANNELS_SET`` set channel counts
21727545 200 ``ETHTOOL_MSG_COALESCE_GET`` get coalescing parameters
9881418c 201 ``ETHTOOL_MSG_COALESCE_SET`` set coalescing parameters
7f59fb32 202 ``ETHTOOL_MSG_PAUSE_GET`` get pause parameters
3ab87993 203 ``ETHTOOL_MSG_PAUSE_SET`` set pause parameters
71921690
MK
204 ===================================== ================================
205
206Kernel to userspace:
207
67bffa79 208 ===================================== =================================
71921690 209 ``ETHTOOL_MSG_STRSET_GET_REPLY`` string set contents
459e0b81 210 ``ETHTOOL_MSG_LINKINFO_GET_REPLY`` link settings
73286734 211 ``ETHTOOL_MSG_LINKINFO_NTF`` link settings notification
f625aa9b 212 ``ETHTOOL_MSG_LINKMODES_GET_REPLY`` link modes info
1b1b1847 213 ``ETHTOOL_MSG_LINKMODES_NTF`` link modes notification
3d2b847f 214 ``ETHTOOL_MSG_LINKSTATE_GET_REPLY`` link state info
6a94b8cc 215 ``ETHTOOL_MSG_DEBUG_GET_REPLY`` debugging settings
0bda7af3 216 ``ETHTOOL_MSG_DEBUG_NTF`` debugging settings notification
51ea22b0 217 ``ETHTOOL_MSG_WOL_GET_REPLY`` wake-on-lan settings
67bffa79 218 ``ETHTOOL_MSG_WOL_NTF`` wake-on-lan settings notification
0524399d 219 ``ETHTOOL_MSG_FEATURES_GET_REPLY`` device features
0980bfcd 220 ``ETHTOOL_MSG_FEATURES_SET_REPLY`` optional reply to FEATURES_SET
9c6451ef 221 ``ETHTOOL_MSG_FEATURES_NTF`` netdev features notification
e16c3386 222 ``ETHTOOL_MSG_PRIVFLAGS_GET_REPLY`` private flags
f265d799 223 ``ETHTOOL_MSG_PRIVFLAGS_NTF`` private flags
e4a1717b 224 ``ETHTOOL_MSG_RINGS_GET_REPLY`` ring sizes
bc9d1c99 225 ``ETHTOOL_MSG_RINGS_NTF`` ring sizes
0c84979c 226 ``ETHTOOL_MSG_CHANNELS_GET_REPLY`` channel counts
546379b9 227 ``ETHTOOL_MSG_CHANNELS_NTF`` channel counts
21727545 228 ``ETHTOOL_MSG_COALESCE_GET_REPLY`` coalescing parameters
0cf3eac8 229 ``ETHTOOL_MSG_COALESCE_NTF`` coalescing parameters
7f59fb32 230 ``ETHTOOL_MSG_PAUSE_GET_REPLY`` pause parameters
bf37faa3 231 ``ETHTOOL_MSG_PAUSE_NTF`` pause parameters
67bffa79 232 ===================================== =================================
71921690 233
2b4a8990
MK
234``GET`` requests are sent by userspace applications to retrieve device
235information. They usually do not contain any message specific attributes.
236Kernel replies with corresponding "GET_REPLY" message. For most types, ``GET``
237request with ``NLM_F_DUMP`` and no device identification can be used to query
238the information for all devices supporting the request.
239
240If the data can be also modified, corresponding ``SET`` message with the same
241layout as corresponding ``GET_REPLY`` is used to request changes. Only
242attributes where a change is requested are included in such request (also, not
243all attributes may be changed). Replies to most ``SET`` request consist only
244of error code and extack; if kernel provides additional data, it is sent in
245the form of corresponding ``SET_REPLY`` message which can be suppressed by
246setting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header.
247
248Data modification also triggers sending a ``NTF`` message with a notification.
249These usually bear only a subset of attributes which was affected by the
250change. The same notification is issued if the data is modified using other
251means (mostly ioctl ethtool interface). Unlike notifications from ethtool
252netlink code which are only sent if something actually changed, notifications
253triggered by ioctl interface may be sent even if the request did not actually
254change any data.
255
256``ACT`` messages request kernel (driver) to perform a specific action. If some
257information is reported by kernel (which can be suppressed by setting
258``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of
259an ``ACT_REPLY`` message. Performing an action also triggers a notification
260(``NTF`` message).
261
262Later sections describe the format and semantics of these messages.
263
264
71921690
MK
265STRSET_GET
266==========
267
268Requests contents of a string set as provided by ioctl commands
269``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user
270writeable so that the corresponding ``STRSET_SET`` message is only used in
271kernel replies. There are two types of string sets: global (independent of
272a device, e.g. device feature names) and device specific (e.g. device private
273flags).
274
275Request contents:
276
277 +---------------------------------------+--------+------------------------+
278 | ``ETHTOOL_A_STRSET_HEADER`` | nested | request header |
279 +---------------------------------------+--------+------------------------+
280 | ``ETHTOOL_A_STRSET_STRINGSETS`` | nested | string set to request |
281 +-+-------------------------------------+--------+------------------------+
282 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set |
283 +-+-+-----------------------------------+--------+------------------------+
284 | | | ``ETHTOOL_A_STRINGSET_ID`` | u32 | set id |
285 +-+-+-----------------------------------+--------+------------------------+
286
287Kernel response contents:
288
289 +---------------------------------------+--------+-----------------------+
290 | ``ETHTOOL_A_STRSET_HEADER`` | nested | reply header |
291 +---------------------------------------+--------+-----------------------+
292 | ``ETHTOOL_A_STRSET_STRINGSETS`` | nested | array of string sets |
293 +-+-------------------------------------+--------+-----------------------+
294 | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set |
295 +-+-+-----------------------------------+--------+-----------------------+
296 | | | ``ETHTOOL_A_STRINGSET_ID`` | u32 | set id |
297 +-+-+-----------------------------------+--------+-----------------------+
298 | | | ``ETHTOOL_A_STRINGSET_COUNT`` | u32 | number of strings |
299 +-+-+-----------------------------------+--------+-----------------------+
300 | | | ``ETHTOOL_A_STRINGSET_STRINGS`` | nested | array of strings |
301 +-+-+-+---------------------------------+--------+-----------------------+
302 | | | | ``ETHTOOL_A_STRINGS_STRING+`` | nested | one string |
303 +-+-+-+-+-------------------------------+--------+-----------------------+
304 | | | | | ``ETHTOOL_A_STRING_INDEX`` | u32 | string index |
305 +-+-+-+-+-------------------------------+--------+-----------------------+
306 | | | | | ``ETHTOOL_A_STRING_VALUE`` | string | string value |
307 +-+-+-+-+-------------------------------+--------+-----------------------+
308 | ``ETHTOOL_A_STRSET_COUNTS_ONLY`` | flag | return only counts |
309 +---------------------------------------+--------+-----------------------+
310
311Device identification in request header is optional. Depending on its presence
312a and ``NLM_F_DUMP`` flag, there are three type of ``STRSET_GET`` requests:
313
314 - no ``NLM_F_DUMP,`` no device: get "global" stringsets
315 - no ``NLM_F_DUMP``, with device: get string sets related to the device
316 - ``NLM_F_DUMP``, no device: get device related string sets for all devices
317
318If there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of
319requested type are returned, otherwise only those specified in the request.
320Flag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string
321counts of the sets, not the actual strings.
322
323
459e0b81
MK
324LINKINFO_GET
325============
326
327Requests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for
328link modes and autonegotiation related information. The request does not use
329any attributes.
330
331Request contents:
332
333 ==================================== ====== ==========================
334 ``ETHTOOL_A_LINKINFO_HEADER`` nested request header
335 ==================================== ====== ==========================
336
337Kernel response contents:
338
339 ==================================== ====== ==========================
340 ``ETHTOOL_A_LINKINFO_HEADER`` nested reply header
341 ``ETHTOOL_A_LINKINFO_PORT`` u8 physical port
342 ``ETHTOOL_A_LINKINFO_PHYADDR`` u8 phy MDIO address
343 ``ETHTOOL_A_LINKINFO_TP_MDIX`` u8 MDI(-X) status
344 ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL`` u8 MDI(-X) control
345 ``ETHTOOL_A_LINKINFO_TRANSCEIVER`` u8 transceiver
346 ==================================== ====== ==========================
347
348Attributes and their values have the same meaning as matching members of the
349corresponding ioctl structures.
350
351``LINKINFO_GET`` allows dump requests (kernel returns reply message for all
352devices supporting the request).
353
354
a53f3d41
MK
355LINKINFO_SET
356============
357
358``LINKINFO_SET`` request allows setting some of the attributes reported by
359``LINKINFO_GET``.
360
361Request contents:
362
363 ==================================== ====== ==========================
364 ``ETHTOOL_A_LINKINFO_HEADER`` nested request header
365 ``ETHTOOL_A_LINKINFO_PORT`` u8 physical port
366 ``ETHTOOL_A_LINKINFO_PHYADDR`` u8 phy MDIO address
367 ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL`` u8 MDI(-X) control
368 ==================================== ====== ==========================
369
370MDI(-X) status and transceiver cannot be set, request with the corresponding
371attributes is rejected.
372
373
f625aa9b
MK
374LINKMODES_GET
375=============
376
377Requests link modes (supported, advertised and peer advertised) and related
378information (autonegotiation status, link speed and duplex) as provided by
379``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes.
380
381Request contents:
382
383 ==================================== ====== ==========================
384 ``ETHTOOL_A_LINKMODES_HEADER`` nested request header
385 ==================================== ====== ==========================
386
387Kernel response contents:
388
389 ==================================== ====== ==========================
390 ``ETHTOOL_A_LINKMODES_HEADER`` nested reply header
391 ``ETHTOOL_A_LINKMODES_AUTONEG`` u8 autonegotiation status
392 ``ETHTOOL_A_LINKMODES_OURS`` bitset advertised link modes
393 ``ETHTOOL_A_LINKMODES_PEER`` bitset partner link modes
394 ``ETHTOOL_A_LINKMODES_SPEED`` u32 link speed (Mb/s)
395 ``ETHTOOL_A_LINKMODES_DUPLEX`` u8 duplex mode
396 ==================================== ====== ==========================
397
398For ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask
399represents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit
400list.
401
402``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all
403devices supporting the request).
404
405
bfbcfe20
MK
406LINKMODES_SET
407=============
408
409Request contents:
410
411 ==================================== ====== ==========================
412 ``ETHTOOL_A_LINKMODES_HEADER`` nested request header
413 ``ETHTOOL_A_LINKMODES_AUTONEG`` u8 autonegotiation status
414 ``ETHTOOL_A_LINKMODES_OURS`` bitset advertised link modes
415 ``ETHTOOL_A_LINKMODES_PEER`` bitset partner link modes
416 ``ETHTOOL_A_LINKMODES_SPEED`` u32 link speed (Mb/s)
417 ``ETHTOOL_A_LINKMODES_DUPLEX`` u8 duplex mode
418 ==================================== ====== ==========================
419
420``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If
421autonegotiation is on (either set now or kept from before), advertised modes
422are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one
423of speed and duplex is specified, kernel adjusts advertised modes to all
424supported modes matching speed, duplex or both (whatever is specified). This
425autoselection is done on ethtool side with ioctl interface, netlink interface
426is supposed to allow requesting changes without knowing what exactly kernel
427supports.
428
429
3d2b847f
MK
430LINKSTATE_GET
431=============
432
433Requests link state information. At the moment, only link up/down flag (as
434provided by ``ETHTOOL_GLINK`` ioctl command) is provided but some future
435extensions are planned (e.g. link down reason). This request does not have any
436attributes.
437
438Request contents:
439
440 ==================================== ====== ==========================
441 ``ETHTOOL_A_LINKSTATE_HEADER`` nested request header
442 ==================================== ====== ==========================
443
444Kernel response contents:
445
446 ==================================== ====== ==========================
447 ``ETHTOOL_A_LINKSTATE_HEADER`` nested reply header
448 ``ETHTOOL_A_LINKSTATE_LINK`` bool link state (up/down)
449 ==================================== ====== ==========================
450
451For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns
452carrier flag provided by ``netif_carrier_ok()`` but there are drivers which
453define their own handler.
454
455``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all
456devices supporting the request).
457
458
6a94b8cc
MK
459DEBUG_GET
460=========
461
462Requests debugging settings of a device. At the moment, only message mask is
463provided.
464
465Request contents:
466
467 ==================================== ====== ==========================
468 ``ETHTOOL_A_DEBUG_HEADER`` nested request header
469 ==================================== ====== ==========================
470
471Kernel response contents:
472
473 ==================================== ====== ==========================
474 ``ETHTOOL_A_DEBUG_HEADER`` nested reply header
475 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask
476 ==================================== ====== ==========================
477
478The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as
479provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl
480interface. While it is called message level there for historical reasons, most
481drivers and almost all newer drivers use it as a mask of enabled message
482classes (represented by ``NETIF_MSG_*`` constants); therefore netlink
483interface follows its actual use in practice.
484
485``DEBUG_GET`` allows dump requests (kernel returns reply messages for all
486devices supporting the request).
487
488
e54d04e3
MK
489DEBUG_SET
490=========
491
492Set or update debugging settings of a device. At the moment, only message mask
493is supported.
494
495Request contents:
496
497 ==================================== ====== ==========================
498 ``ETHTOOL_A_DEBUG_HEADER`` nested request header
499 ``ETHTOOL_A_DEBUG_MSGMASK`` bitset message mask
500 ==================================== ====== ==========================
501
502``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of
503enabled debugging message types for the device.
504
505
51ea22b0
MK
506WOL_GET
507=======
508
509Query device wake-on-lan settings. Unlike most "GET" type requests,
510``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it
511(potentially) provides SecureOn(tm) password which is confidential.
512
513Request contents:
514
515 ==================================== ====== ==========================
516 ``ETHTOOL_A_WOL_HEADER`` nested request header
517 ==================================== ====== ==========================
518
519Kernel response contents:
520
521 ==================================== ====== ==========================
522 ``ETHTOOL_A_WOL_HEADER`` nested reply header
523 ``ETHTOOL_A_WOL_MODES`` bitset mask of enabled WoL modes
524 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password
525 ==================================== ====== ==========================
526
527In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the
528device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only
529included in reply if ``WAKE_MAGICSECURE`` mode is supported.
530
531
8d425b19
MK
532WOL_SET
533=======
534
535Set or update wake-on-lan settings.
536
537Request contents:
538
539 ==================================== ====== ==========================
540 ``ETHTOOL_A_WOL_HEADER`` nested request header
541 ``ETHTOOL_A_WOL_MODES`` bitset enabled WoL modes
542 ``ETHTOOL_A_WOL_SOPASS`` binary SecureOn(tm) password
543 ==================================== ====== ==========================
544
545``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting
546``WAKE_MAGICSECURE`` mode.
547
548
0524399d
MK
549FEATURES_GET
550============
551
552Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request.
553
554Request contents:
555
556 ==================================== ====== ==========================
557 ``ETHTOOL_A_FEATURES_HEADER`` nested request header
558 ==================================== ====== ==========================
559
560Kernel response contents:
561
562 ==================================== ====== ==========================
563 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header
564 ``ETHTOOL_A_FEATURES_HW`` bitset dev->hw_features
565 ``ETHTOOL_A_FEATURES_WANTED`` bitset dev->wanted_features
566 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset dev->features
567 ``ETHTOOL_A_FEATURES_NOCHANGE`` bitset NETIF_F_NEVER_CHANGE
568 ==================================== ====== ==========================
569
570Bitmaps in kernel response have the same meaning as bitmaps used in ioctl
571interference but attribute names are different (they are based on
572corresponding members of struct net_device). Legacy "flags" are not provided,
573if userspace needs them (most likely only ethtool for backward compatibility),
574it can calculate their values from related feature bits itself.
575ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to
576provide all names when using verbose bitmap format), the other three use no
577mask (simple bit lists).
578
579
0980bfcd
MK
580FEATURES_SET
581============
582
583Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request.
584
585Request contents:
586
587 ==================================== ====== ==========================
588 ``ETHTOOL_A_FEATURES_HEADER`` nested request header
589 ``ETHTOOL_A_FEATURES_WANTED`` bitset requested features
590 ==================================== ====== ==========================
591
592Kernel response contents:
593
594 ==================================== ====== ==========================
595 ``ETHTOOL_A_FEATURES_HEADER`` nested reply header
596 ``ETHTOOL_A_FEATURES_WANTED`` bitset diff wanted vs. result
597 ``ETHTOOL_A_FEATURES_ACTIVE`` bitset diff old vs. new active
598 ==================================== ====== ==========================
599
600Request constains only one bitset which can be either value/mask pair (request
601to change specific feature bits and leave the rest) or only a value (request
602to set all features to specified set).
603
604As request is subject to netdev_change_features() sanity checks, optional
605kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request
606header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED``
607reports the difference between client request and actual result: mask consists
608of bits which differ between requested features and result (dev->features
609after the operation), value consists of values of these bits in the request
610(i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE``
611reports the difference between old and new dev->features: mask consists of
612bits which have changed, values are their values in new dev->features (after
613the operation).
614
9c6451ef
MK
615``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features
616are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl
617request but also each time features are modified with netdev_update_features()
618or netdev_change_features().
619
0980bfcd 620
e16c3386
MK
621PRIVFLAGS_GET
622=============
623
624Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request.
625
626Request contents:
627
628 ==================================== ====== ==========================
629 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header
630 ==================================== ====== ==========================
631
632Kernel response contents:
633
634 ==================================== ====== ==========================
635 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested reply header
636 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags
637 ==================================== ====== ==========================
638
639``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags.
640These flags are defined by driver, their number and names (and also meaning)
641are device dependent. For compact bitset format, names can be retrieved as
642``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested,
643response uses all private flags supported by the device as mask so that client
644gets the full information without having to fetch the string set with names.
645
646
f265d799
MK
647PRIVFLAGS_SET
648=============
649
650Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS``
651ioctl request.
652
653Request contents:
654
655 ==================================== ====== ==========================
656 ``ETHTOOL_A_PRIVFLAGS_HEADER`` nested request header
657 ``ETHTOOL_A_PRIVFLAGS_FLAGS`` bitset private flags
658 ==================================== ====== ==========================
659
660``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or
661modify only values of some of them.
662
663
e4a1717b
MK
664RINGS_GET
665=========
666
667Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request.
668
669Request contents:
670
671 ==================================== ====== ==========================
672 ``ETHTOOL_A_RINGS_HEADER`` nested request header
673 ==================================== ====== ==========================
674
675Kernel response contents:
676
677 ==================================== ====== ==========================
678 ``ETHTOOL_A_RINGS_HEADER`` nested reply header
679 ``ETHTOOL_A_RINGS_RX_MAX`` u32 max size of RX ring
680 ``ETHTOOL_A_RINGS_RX_MINI_MAX`` u32 max size of RX mini ring
681 ``ETHTOOL_A_RINGS_RX_JUMBO_MAX`` u32 max size of RX jumbo ring
682 ``ETHTOOL_A_RINGS_TX_MAX`` u32 max size of TX ring
683 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring
684 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring
685 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring
686 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring
687 ==================================== ====== ==========================
688
689
2fc2929e
MK
690RINGS_SET
691=========
692
693Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request.
694
695Request contents:
696
697 ==================================== ====== ==========================
698 ``ETHTOOL_A_RINGS_HEADER`` nested reply header
699 ``ETHTOOL_A_RINGS_RX`` u32 size of RX ring
700 ``ETHTOOL_A_RINGS_RX_MINI`` u32 size of RX mini ring
701 ``ETHTOOL_A_RINGS_RX_JUMBO`` u32 size of RX jumbo ring
702 ``ETHTOOL_A_RINGS_TX`` u32 size of TX ring
703 ==================================== ====== ==========================
704
705Kernel checks that requested ring sizes do not exceed limits reported by
706driver. Driver may impose additional constraints and may not suspport all
707attributes.
708
709
0c84979c
MK
710CHANNELS_GET
711============
712
713Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request.
714
715Request contents:
716
717 ==================================== ====== ==========================
718 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header
719 ==================================== ====== ==========================
720
721Kernel response contents:
722
723 ===================================== ====== ==========================
724 ``ETHTOOL_A_CHANNELS_HEADER`` nested reply header
725 ``ETHTOOL_A_CHANNELS_RX_MAX`` u32 max receive channels
726 ``ETHTOOL_A_CHANNELS_TX_MAX`` u32 max transmit channels
727 ``ETHTOOL_A_CHANNELS_OTHER_MAX`` u32 max other channels
728 ``ETHTOOL_A_CHANNELS_COMBINED_MAX`` u32 max combined channels
729 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count
730 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count
731 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count
732 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count
733 ===================================== ====== ==========================
734
735
e19c591e
MK
736CHANNELS_SET
737============
738
739Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request.
740
741Request contents:
742
743 ===================================== ====== ==========================
744 ``ETHTOOL_A_CHANNELS_HEADER`` nested request header
745 ``ETHTOOL_A_CHANNELS_RX_COUNT`` u32 receive channel count
746 ``ETHTOOL_A_CHANNELS_TX_COUNT`` u32 transmit channel count
747 ``ETHTOOL_A_CHANNELS_OTHER_COUNT`` u32 other channel count
748 ``ETHTOOL_A_CHANNELS_COMBINED_COUNT`` u32 combined channel count
749 ===================================== ====== ==========================
750
751Kernel checks that requested channel counts do not exceed limits reported by
752driver. Driver may impose additional constraints and may not suspport all
753attributes.
754
755
21727545
MK
756COALESCE_GET
757============
758
759Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request.
760
761Request contents:
762
763 ==================================== ====== ==========================
764 ``ETHTOOL_A_COALESCE_HEADER`` nested request header
765 ==================================== ====== ==========================
766
767Kernel response contents:
768
769 =========================================== ====== =======================
770 ``ETHTOOL_A_COALESCE_HEADER`` nested reply header
771 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx
772 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx
773 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ
774 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ
775 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx
776 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx
777 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ
778 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ
779 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update
780 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce
781 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce
782 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate
783 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx
784 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx
785 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx
786 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx
787 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate
788 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx
789 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx
790 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx
791 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx
792 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval
793 =========================================== ====== =======================
794
795Attributes are only included in reply if their value is not zero or the
796corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e.
797they are declared as supported by driver).
798
799
9881418c
MK
800COALESCE_SET
801============
802
803Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request.
804
805Request contents:
806
807 =========================================== ====== =======================
808 ``ETHTOOL_A_COALESCE_HEADER`` nested request header
809 ``ETHTOOL_A_COALESCE_RX_USECS`` u32 delay (us), normal Rx
810 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES`` u32 max packets, normal Rx
811 ``ETHTOOL_A_COALESCE_RX_USECS_IRQ`` u32 delay (us), Rx in IRQ
812 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ`` u32 max packets, Rx in IRQ
813 ``ETHTOOL_A_COALESCE_TX_USECS`` u32 delay (us), normal Tx
814 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES`` u32 max packets, normal Tx
815 ``ETHTOOL_A_COALESCE_TX_USECS_IRQ`` u32 delay (us), Tx in IRQ
816 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ`` u32 IRQ packets, Tx in IRQ
817 ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS`` u32 delay of stats update
818 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX`` bool adaptive Rx coalesce
819 ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX`` bool adaptive Tx coalesce
820 ``ETHTOOL_A_COALESCE_PKT_RATE_LOW`` u32 threshold for low rate
821 ``ETHTOOL_A_COALESCE_RX_USECS_LOW`` u32 delay (us), low Rx
822 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW`` u32 max packets, low Rx
823 ``ETHTOOL_A_COALESCE_TX_USECS_LOW`` u32 delay (us), low Tx
824 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW`` u32 max packets, low Tx
825 ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH`` u32 threshold for high rate
826 ``ETHTOOL_A_COALESCE_RX_USECS_HIGH`` u32 delay (us), high Rx
827 ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH`` u32 max packets, high Rx
828 ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx
829 ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx
830 ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval
831 =========================================== ====== =======================
832
833Request is rejected if it attributes declared as unsupported by driver (i.e.
834such that the corresponding bit in ``ethtool_ops::supported_coalesce_params``
835is not set), regardless of their values. Driver may impose additional
836constraints on coalescing parameters and their values.
837
838
7f59fb32
MK
839PAUSE_GET
840============
841
842Gets channel counts like ``ETHTOOL_GPAUSE`` ioctl request.
843
844Request contents:
845
846 ===================================== ====== ==========================
847 ``ETHTOOL_A_PAUSE_HEADER`` nested request header
848 ===================================== ====== ==========================
849
850Kernel response contents:
851
852 ===================================== ====== ==========================
853 ``ETHTOOL_A_PAUSE_HEADER`` nested request header
854 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation
855 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames
856 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames
857 ===================================== ====== ==========================
858
859
860PAUSE_SET
861============
862
863Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
864
865Request contents:
866
867 ===================================== ====== ==========================
868 ``ETHTOOL_A_PAUSE_HEADER`` nested request header
869 ``ETHTOOL_A_PAUSE_AUTONEG`` bool pause autonegotiation
870 ``ETHTOOL_A_PAUSE_RX`` bool receive pause frames
871 ``ETHTOOL_A_PAUSE_TX`` bool transmit pause frames
872 ===================================== ====== ==========================
873
874
2b4a8990
MK
875Request translation
876===================
877
878The following table maps ioctl commands to netlink commands providing their
879functionality. Entries with "n/a" in right column are commands which do not
880have their netlink replacement yet.
881
882 =================================== =====================================
883 ioctl command netlink command
884 =================================== =====================================
459e0b81 885 ``ETHTOOL_GSET`` ``ETHTOOL_MSG_LINKINFO_GET``
f625aa9b 886 ``ETHTOOL_MSG_LINKMODES_GET``
a53f3d41 887 ``ETHTOOL_SSET`` ``ETHTOOL_MSG_LINKINFO_SET``
bfbcfe20 888 ``ETHTOOL_MSG_LINKMODES_SET``
2b4a8990
MK
889 ``ETHTOOL_GDRVINFO`` n/a
890 ``ETHTOOL_GREGS`` n/a
51ea22b0 891 ``ETHTOOL_GWOL`` ``ETHTOOL_MSG_WOL_GET``
8d425b19 892 ``ETHTOOL_SWOL`` ``ETHTOOL_MSG_WOL_SET``
6a94b8cc 893 ``ETHTOOL_GMSGLVL`` ``ETHTOOL_MSG_DEBUG_GET``
e54d04e3 894 ``ETHTOOL_SMSGLVL`` ``ETHTOOL_MSG_DEBUG_SET``
2b4a8990 895 ``ETHTOOL_NWAY_RST`` n/a
3d2b847f 896 ``ETHTOOL_GLINK`` ``ETHTOOL_MSG_LINKSTATE_GET``
2b4a8990
MK
897 ``ETHTOOL_GEEPROM`` n/a
898 ``ETHTOOL_SEEPROM`` n/a
21727545 899 ``ETHTOOL_GCOALESCE`` ``ETHTOOL_MSG_COALESCE_GET``
9881418c 900 ``ETHTOOL_SCOALESCE`` ``ETHTOOL_MSG_COALESCE_SET``
e4a1717b 901 ``ETHTOOL_GRINGPARAM`` ``ETHTOOL_MSG_RINGS_GET``
2fc2929e 902 ``ETHTOOL_SRINGPARAM`` ``ETHTOOL_MSG_RINGS_SET``
7f59fb32 903 ``ETHTOOL_GPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_GET``
3ab87993 904 ``ETHTOOL_SPAUSEPARAM`` ``ETHTOOL_MSG_PAUSE_SET``
0524399d 905 ``ETHTOOL_GRXCSUM`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 906 ``ETHTOOL_SRXCSUM`` ``ETHTOOL_MSG_FEATURES_SET``
0524399d 907 ``ETHTOOL_GTXCSUM`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 908 ``ETHTOOL_STXCSUM`` ``ETHTOOL_MSG_FEATURES_SET``
0524399d 909 ``ETHTOOL_GSG`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 910 ``ETHTOOL_SSG`` ``ETHTOOL_MSG_FEATURES_SET``
2b4a8990 911 ``ETHTOOL_TEST`` n/a
71921690 912 ``ETHTOOL_GSTRINGS`` ``ETHTOOL_MSG_STRSET_GET``
2b4a8990
MK
913 ``ETHTOOL_PHYS_ID`` n/a
914 ``ETHTOOL_GSTATS`` n/a
0524399d 915 ``ETHTOOL_GTSO`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 916 ``ETHTOOL_STSO`` ``ETHTOOL_MSG_FEATURES_SET``
2b4a8990 917 ``ETHTOOL_GPERMADDR`` rtnetlink ``RTM_GETLINK``
0524399d 918 ``ETHTOOL_GUFO`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 919 ``ETHTOOL_SUFO`` ``ETHTOOL_MSG_FEATURES_SET``
0524399d 920 ``ETHTOOL_GGSO`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 921 ``ETHTOOL_SGSO`` ``ETHTOOL_MSG_FEATURES_SET``
0524399d 922 ``ETHTOOL_GFLAGS`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 923 ``ETHTOOL_SFLAGS`` ``ETHTOOL_MSG_FEATURES_SET``
e16c3386 924 ``ETHTOOL_GPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_GET``
f265d799 925 ``ETHTOOL_SPFLAGS`` ``ETHTOOL_MSG_PRIVFLAGS_SET``
2b4a8990
MK
926 ``ETHTOOL_GRXFH`` n/a
927 ``ETHTOOL_SRXFH`` n/a
0524399d 928 ``ETHTOOL_GGRO`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 929 ``ETHTOOL_SGRO`` ``ETHTOOL_MSG_FEATURES_SET``
2b4a8990
MK
930 ``ETHTOOL_GRXRINGS`` n/a
931 ``ETHTOOL_GRXCLSRLCNT`` n/a
932 ``ETHTOOL_GRXCLSRULE`` n/a
933 ``ETHTOOL_GRXCLSRLALL`` n/a
934 ``ETHTOOL_SRXCLSRLDEL`` n/a
935 ``ETHTOOL_SRXCLSRLINS`` n/a
936 ``ETHTOOL_FLASHDEV`` n/a
937 ``ETHTOOL_RESET`` n/a
938 ``ETHTOOL_SRXNTUPLE`` n/a
939 ``ETHTOOL_GRXNTUPLE`` n/a
71921690 940 ``ETHTOOL_GSSET_INFO`` ``ETHTOOL_MSG_STRSET_GET``
2b4a8990
MK
941 ``ETHTOOL_GRXFHINDIR`` n/a
942 ``ETHTOOL_SRXFHINDIR`` n/a
0524399d 943 ``ETHTOOL_GFEATURES`` ``ETHTOOL_MSG_FEATURES_GET``
0980bfcd 944 ``ETHTOOL_SFEATURES`` ``ETHTOOL_MSG_FEATURES_SET``
0c84979c 945 ``ETHTOOL_GCHANNELS`` ``ETHTOOL_MSG_CHANNELS_GET``
e19c591e 946 ``ETHTOOL_SCHANNELS`` ``ETHTOOL_MSG_CHANNELS_SET``
2b4a8990
MK
947 ``ETHTOOL_SET_DUMP`` n/a
948 ``ETHTOOL_GET_DUMP_FLAG`` n/a
949 ``ETHTOOL_GET_DUMP_DATA`` n/a
950 ``ETHTOOL_GET_TS_INFO`` n/a
951 ``ETHTOOL_GMODULEINFO`` n/a
952 ``ETHTOOL_GMODULEEEPROM`` n/a
953 ``ETHTOOL_GEEE`` n/a
954 ``ETHTOOL_SEEE`` n/a
955 ``ETHTOOL_GRSSH`` n/a
956 ``ETHTOOL_SRSSH`` n/a
957 ``ETHTOOL_GTUNABLE`` n/a
958 ``ETHTOOL_STUNABLE`` n/a
959 ``ETHTOOL_GPHYSTATS`` n/a
960 ``ETHTOOL_PERQUEUE`` n/a
459e0b81 961 ``ETHTOOL_GLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_GET``
f625aa9b 962 ``ETHTOOL_MSG_LINKMODES_GET``
a53f3d41 963 ``ETHTOOL_SLINKSETTINGS`` ``ETHTOOL_MSG_LINKINFO_SET``
bfbcfe20 964 ``ETHTOOL_MSG_LINKMODES_SET``
2b4a8990
MK
965 ``ETHTOOL_PHY_GTUNABLE`` n/a
966 ``ETHTOOL_PHY_STUNABLE`` n/a
967 ``ETHTOOL_GFECPARAM`` n/a
968 ``ETHTOOL_SFECPARAM`` n/a
969 =================================== =====================================