Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    1) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    2) Netlink interface for ethtool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    3) =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    5) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    6) Basic information
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    7) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300    9) Netlink interface for ethtool uses generic netlink family ``ethtool``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   10) (userspace application should use macros ``ETHTOOL_GENL_NAME`` and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   11) ``ETHTOOL_GENL_VERSION`` defined in ``<linux/ethtool_netlink.h>`` uapi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   12) header). This family does not use a specific header, all information in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   13) requests and replies is passed using netlink attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   15) The ethtool netlink interface uses extended ACK for error and warning
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   16) reporting, userspace application developers are encouraged to make these
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   17) messages available to user in a suitable way.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   19) Requests can be divided into three categories: "get" (retrieving information),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   20) "set" (setting parameters) and "action" (invoking an action).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   21) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   22) All "set" and "action" type requests require admin privileges
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   23) (``CAP_NET_ADMIN`` in the namespace). Most "get" type requests are allowed for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   24) anyone but there are exceptions (where the response contains sensitive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   25) information). In some cases, the request as such is allowed for anyone but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   26) unprivileged users have attributes with sensitive information (e.g.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   27) wake-on-lan password) omitted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   29) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   30) Conventions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   31) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   32) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   33) Attributes which represent a boolean value usually use NLA_U8 type so that we
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   34) can distinguish three states: "on", "off" and "not present" (meaning the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   35) information is not available in "get" requests or value is not to be changed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   36) in "set" requests). For these attributes, the "true" value should be passed as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   37) number 1 but any non-zero value should be understood as "true" by recipient.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   38) In the tables below, "bool" denotes NLA_U8 attributes interpreted in this way.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   39) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   40) In the message structure descriptions below, if an attribute name is suffixed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   41) with "+", parent nest can contain multiple attributes of the same type. This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   42) implements an array of entries.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   44) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   45) Request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   46) ==============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   48) Each request or reply message contains a nested attribute with common header.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   49) Structure of this header is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   51)   ==============================  ======  =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   52)   ``ETHTOOL_A_HEADER_DEV_INDEX``  u32     device ifindex
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   53)   ``ETHTOOL_A_HEADER_DEV_NAME``   string  device name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   54)   ``ETHTOOL_A_HEADER_FLAGS``      u32     flags common for all requests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   55)   ==============================  ======  =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   57) ``ETHTOOL_A_HEADER_DEV_INDEX`` and ``ETHTOOL_A_HEADER_DEV_NAME`` identify the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   58) device message relates to. One of them is sufficient in requests, if both are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   59) used, they must identify the same device. Some requests, e.g. global string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   60) sets, do not require device identification. Most ``GET`` requests also allow
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   61) dump requests without device identification to query the same information for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   62) all devices providing it (each device in a separate message).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   64) ``ETHTOOL_A_HEADER_FLAGS`` is a bitmap of request flags common for all request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   65) types. The interpretation of these flags is the same for all request types but
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   66) the flags may not apply to requests. Recognized flags are:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   67) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   68)   =================================  ===================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   69)   ``ETHTOOL_FLAG_COMPACT_BITSETS``   use compact format bitsets in reply
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   70)   ``ETHTOOL_FLAG_OMIT_REPLY``        omit optional reply (_SET and _ACT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   71)   ``ETHTOOL_FLAG_STATS``             include optional device statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   72)   =================================  ===================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   74) New request flags should follow the general idea that if the flag is not set,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   75) the behaviour is backward compatible, i.e. requests from old clients not aware
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   76) of the flag should be interpreted the way the client expects. A client must
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   77) not set flags it does not understand.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   80) Bit sets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   81) ========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   83) For short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   84) type is used. For arbitrary length bitmaps, ethtool netlink uses a nested
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   85) attribute with contents of one of two forms: compact (two binary bitmaps
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   86) representing bit values and mask of affected bits) and bit-by-bit (list of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   87) bits identified by either index or name).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   88) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   89) Verbose (bit-by-bit) bitsets allow sending symbolic names for bits together
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   90) with their values which saves a round trip (when the bitset is passed in a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   91) request) or at least a second request (when the bitset is in a reply). This is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   92) useful for one shot applications like traditional ethtool command. On the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   93) other hand, long running applications like ethtool monitor (displaying
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   94) notifications) or network management daemons may prefer fetching the names
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   95) only once and using compact form to save message size. Notifications from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   96) ethtool netlink interface always use compact form for bitsets.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   97) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   98) A bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   99) not set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  100) modifying a bitmap, the former changes the bit set in mask to values set in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  101) value and preserves the rest; the latter sets the bits set in the bitmap and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  102) clears the rest.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  103) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  104) Compact form: nested (bitset) atrribute contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  106)   ============================  ======  ============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  107)   ``ETHTOOL_A_BITSET_NOMASK``   flag    no mask, only a list
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  108)   ``ETHTOOL_A_BITSET_SIZE``     u32     number of significant bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  109)   ``ETHTOOL_A_BITSET_VALUE``    binary  bitmap of bit values
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  110)   ``ETHTOOL_A_BITSET_MASK``     binary  bitmap of valid bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  111)   ============================  ======  ============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  113) Value and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  114) rounded up to a multiple of 32 bits. They consist of 32-bit words in host byte
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  115) order, words ordered from least significant to most significant (i.e. the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  116) way as bitmaps are passed with ioctl interface).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  118) For compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  119) mandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  120) ``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  121) if ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  122) allowed (bitset represents a single bitmap.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  123) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  124) Kernel bit set length may differ from userspace length if older application is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  125) used on newer kernel or vice versa. If userspace bitmap is longer, an error is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  126) issued only if the request actually tries to set values of some bits not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  127) recognized by kernel.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  128) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  129) Bit-by-bit form: nested (bitset) attribute contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  130) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  131)  +------------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  132)  | ``ETHTOOL_A_BITSET_NOMASK``        | flag   | no mask, only a list        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  133)  +------------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  134)  | ``ETHTOOL_A_BITSET_SIZE``          | u32    | number of significant bits  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  135)  +------------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  136)  | ``ETHTOOL_A_BITSET_BITS``          | nested | array of bits               |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  137)  +-+----------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  138)  | | ``ETHTOOL_A_BITSET_BITS_BIT+``   | nested | one bit                     |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  139)  +-+-+--------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  140)  | | | ``ETHTOOL_A_BITSET_BIT_INDEX`` | u32    | bit index (0 for LSB)       |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  141)  +-+-+--------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  142)  | | | ``ETHTOOL_A_BITSET_BIT_NAME``  | string | bit name                    |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  143)  +-+-+--------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  144)  | | | ``ETHTOOL_A_BITSET_BIT_VALUE`` | flag   | present if bit is set       |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  145)  +-+-+--------------------------------+--------+-----------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  146) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  147) Bit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  148) only contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  149) arbitrary number of them.  A bit may be identified by its index or by its
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  150) name. When used in requests, listed bits are set to 0 or 1 according to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  151) ``ETHTOOL_A_BITSET_BIT_VALUE``, the rest is preserved. A request fails if
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  152) index exceeds kernel bit length or if name is not recognized.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  153) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  154) When ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  155) a simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  156) such case. Such bitset represents a bitmap with listed bits set and the rest
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  157) zero.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  159) In requests, application can use either form. Form used by kernel in reply is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  160) determined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  161) header. Semantics of value and mask depends on the attribute.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  162) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  163) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  164) List of message types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  165) =====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  166) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  167) All constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  168) according to message purpose:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  169) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  170)   ==============    ======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  171)   ``_GET``          userspace request to retrieve data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  172)   ``_SET``          userspace request to set data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  173)   ``_ACT``          userspace request to perform an action
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  174)   ``_GET_REPLY``    kernel reply to a ``GET`` request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  175)   ``_SET_REPLY``    kernel reply to a ``SET`` request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  176)   ``_ACT_REPLY``    kernel reply to an ``ACT`` request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  177)   ``_NTF``          kernel notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  178)   ==============    ======================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  179) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  180) Userspace to kernel:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  181) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  182)   ===================================== ================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  183)   ``ETHTOOL_MSG_STRSET_GET``            get string set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  184)   ``ETHTOOL_MSG_LINKINFO_GET``          get link settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  185)   ``ETHTOOL_MSG_LINKINFO_SET``          set link settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  186)   ``ETHTOOL_MSG_LINKMODES_GET``         get link modes info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  187)   ``ETHTOOL_MSG_LINKMODES_SET``         set link modes info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  188)   ``ETHTOOL_MSG_LINKSTATE_GET``         get link state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  189)   ``ETHTOOL_MSG_DEBUG_GET``             get debugging settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  190)   ``ETHTOOL_MSG_DEBUG_SET``             set debugging settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  191)   ``ETHTOOL_MSG_WOL_GET``               get wake-on-lan settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  192)   ``ETHTOOL_MSG_WOL_SET``               set wake-on-lan settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  193)   ``ETHTOOL_MSG_FEATURES_GET``          get device features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  194)   ``ETHTOOL_MSG_FEATURES_SET``          set device features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  195)   ``ETHTOOL_MSG_PRIVFLAGS_GET``         get private flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  196)   ``ETHTOOL_MSG_PRIVFLAGS_SET``         set private flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  197)   ``ETHTOOL_MSG_RINGS_GET``             get ring sizes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  198)   ``ETHTOOL_MSG_RINGS_SET``             set ring sizes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  199)   ``ETHTOOL_MSG_CHANNELS_GET``          get channel counts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  200)   ``ETHTOOL_MSG_CHANNELS_SET``          set channel counts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  201)   ``ETHTOOL_MSG_COALESCE_GET``          get coalescing parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  202)   ``ETHTOOL_MSG_COALESCE_SET``          set coalescing parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  203)   ``ETHTOOL_MSG_PAUSE_GET``             get pause parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  204)   ``ETHTOOL_MSG_PAUSE_SET``             set pause parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  205)   ``ETHTOOL_MSG_EEE_GET``               get EEE settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  206)   ``ETHTOOL_MSG_EEE_SET``               set EEE settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  207)   ``ETHTOOL_MSG_TSINFO_GET``		get timestamping info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  208)   ``ETHTOOL_MSG_CABLE_TEST_ACT``        action start cable test
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  209)   ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT``    action start raw TDR cable test
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  210)   ``ETHTOOL_MSG_TUNNEL_INFO_GET``       get tunnel offload info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  211)   ===================================== ================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  212) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  213) Kernel to userspace:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  214) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  215)   ===================================== =================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  216)   ``ETHTOOL_MSG_STRSET_GET_REPLY``      string set contents
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  217)   ``ETHTOOL_MSG_LINKINFO_GET_REPLY``    link settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  218)   ``ETHTOOL_MSG_LINKINFO_NTF``          link settings notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  219)   ``ETHTOOL_MSG_LINKMODES_GET_REPLY``   link modes info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  220)   ``ETHTOOL_MSG_LINKMODES_NTF``         link modes notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  221)   ``ETHTOOL_MSG_LINKSTATE_GET_REPLY``   link state info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  222)   ``ETHTOOL_MSG_DEBUG_GET_REPLY``       debugging settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  223)   ``ETHTOOL_MSG_DEBUG_NTF``             debugging settings notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  224)   ``ETHTOOL_MSG_WOL_GET_REPLY``         wake-on-lan settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  225)   ``ETHTOOL_MSG_WOL_NTF``               wake-on-lan settings notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  226)   ``ETHTOOL_MSG_FEATURES_GET_REPLY``    device features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  227)   ``ETHTOOL_MSG_FEATURES_SET_REPLY``    optional reply to FEATURES_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  228)   ``ETHTOOL_MSG_FEATURES_NTF``          netdev features notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  229)   ``ETHTOOL_MSG_PRIVFLAGS_GET_REPLY``   private flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  230)   ``ETHTOOL_MSG_PRIVFLAGS_NTF``         private flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  231)   ``ETHTOOL_MSG_RINGS_GET_REPLY``       ring sizes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  232)   ``ETHTOOL_MSG_RINGS_NTF``             ring sizes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  233)   ``ETHTOOL_MSG_CHANNELS_GET_REPLY``    channel counts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  234)   ``ETHTOOL_MSG_CHANNELS_NTF``          channel counts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  235)   ``ETHTOOL_MSG_COALESCE_GET_REPLY``    coalescing parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  236)   ``ETHTOOL_MSG_COALESCE_NTF``          coalescing parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  237)   ``ETHTOOL_MSG_PAUSE_GET_REPLY``       pause parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  238)   ``ETHTOOL_MSG_PAUSE_NTF``             pause parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  239)   ``ETHTOOL_MSG_EEE_GET_REPLY``         EEE settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  240)   ``ETHTOOL_MSG_EEE_NTF``               EEE settings
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  241)   ``ETHTOOL_MSG_TSINFO_GET_REPLY``	timestamping info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  242)   ``ETHTOOL_MSG_CABLE_TEST_NTF``        Cable test results
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  243)   ``ETHTOOL_MSG_CABLE_TEST_TDR_NTF``    Cable test TDR results
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  244)   ``ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY`` tunnel offload info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  245)   ===================================== =================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  246) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  247) ``GET`` requests are sent by userspace applications to retrieve device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  248) information. They usually do not contain any message specific attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  249) Kernel replies with corresponding "GET_REPLY" message. For most types, ``GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  250) request with ``NLM_F_DUMP`` and no device identification can be used to query
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  251) the information for all devices supporting the request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  253) If the data can be also modified, corresponding ``SET`` message with the same
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  254) layout as corresponding ``GET_REPLY`` is used to request changes. Only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  255) attributes where a change is requested are included in such request (also, not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  256) all attributes may be changed). Replies to most ``SET`` request consist only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  257) of error code and extack; if kernel provides additional data, it is sent in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  258) the form of corresponding ``SET_REPLY`` message which can be suppressed by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  259) setting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  260) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  261) Data modification also triggers sending a ``NTF`` message with a notification.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  262) These usually bear only a subset of attributes which was affected by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  263) change. The same notification is issued if the data is modified using other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  264) means (mostly ioctl ethtool interface). Unlike notifications from ethtool
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  265) netlink code which are only sent if something actually changed, notifications
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  266) triggered by ioctl interface may be sent even if the request did not actually
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  267) change any data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  268) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  269) ``ACT`` messages request kernel (driver) to perform a specific action. If some
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  270) information is reported by kernel (which can be suppressed by setting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  271) ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  272) an ``ACT_REPLY`` message. Performing an action also triggers a notification
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  273) (``NTF`` message).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  274) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  275) Later sections describe the format and semantics of these messages.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  276) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  277) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  278) STRSET_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  279) ==========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  280) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  281) Requests contents of a string set as provided by ioctl commands
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  282) ``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  283) writeable so that the corresponding ``STRSET_SET`` message is only used in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  284) kernel replies. There are two types of string sets: global (independent of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  285) a device, e.g. device feature names) and device specific (e.g. device private
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  286) flags).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  287) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  288) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  290)  +---------------------------------------+--------+------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  291)  | ``ETHTOOL_A_STRSET_HEADER``           | nested | request header         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  292)  +---------------------------------------+--------+------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  293)  | ``ETHTOOL_A_STRSET_STRINGSETS``       | nested | string set to request  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  294)  +-+-------------------------------------+--------+------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  295)  | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  296)  +-+-+-----------------------------------+--------+------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  297)  | | | ``ETHTOOL_A_STRINGSET_ID``        | u32    | set id                 |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  298)  +-+-+-----------------------------------+--------+------------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  299) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  300) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  301) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  302)  +---------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  303)  | ``ETHTOOL_A_STRSET_HEADER``           | nested | reply header          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  304)  +---------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  305)  | ``ETHTOOL_A_STRSET_STRINGSETS``       | nested | array of string sets  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  306)  +-+-------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  307)  | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  308)  +-+-+-----------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  309)  | | | ``ETHTOOL_A_STRINGSET_ID``        | u32    | set id                |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  310)  +-+-+-----------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  311)  | | | ``ETHTOOL_A_STRINGSET_COUNT``     | u32    | number of strings     |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  312)  +-+-+-----------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  313)  | | | ``ETHTOOL_A_STRINGSET_STRINGS``   | nested | array of strings      |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  314)  +-+-+-+---------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  315)  | | | | ``ETHTOOL_A_STRINGS_STRING+``   | nested | one string            |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  316)  +-+-+-+-+-------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  317)  | | | | | ``ETHTOOL_A_STRING_INDEX``    | u32    | string index          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  318)  +-+-+-+-+-------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  319)  | | | | | ``ETHTOOL_A_STRING_VALUE``    | string | string value          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  320)  +-+-+-+-+-------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  321)  | ``ETHTOOL_A_STRSET_COUNTS_ONLY``      | flag   | return only counts    |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  322)  +---------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  323) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  324) Device identification in request header is optional. Depending on its presence
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  325) a and ``NLM_F_DUMP`` flag, there are three type of ``STRSET_GET`` requests:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  326) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  327)  - no ``NLM_F_DUMP,`` no device: get "global" stringsets
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  328)  - no ``NLM_F_DUMP``, with device: get string sets related to the device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  329)  - ``NLM_F_DUMP``, no device: get device related string sets for all devices
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  330) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  331) If there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  332) requested type are returned, otherwise only those specified in the request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  333) Flag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  334) counts of the sets, not the actual strings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  335) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  336) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  337) LINKINFO_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  338) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  339) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  340) Requests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  341) link modes and autonegotiation related information. The request does not use
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  342) any attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  343) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  344) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  345) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  346)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  347)   ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  348)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  349) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  350) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  351) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  352)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  353)   ``ETHTOOL_A_LINKINFO_HEADER``         nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  354)   ``ETHTOOL_A_LINKINFO_PORT``           u8      physical port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  355)   ``ETHTOOL_A_LINKINFO_PHYADDR``        u8      phy MDIO address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  356)   ``ETHTOOL_A_LINKINFO_TP_MDIX``        u8      MDI(-X) status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  357)   ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL``   u8      MDI(-X) control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  358)   ``ETHTOOL_A_LINKINFO_TRANSCEIVER``    u8      transceiver
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  359)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  360) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  361) Attributes and their values have the same meaning as matching members of the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  362) corresponding ioctl structures.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  363) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  364) ``LINKINFO_GET`` allows dump requests (kernel returns reply message for all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  365) devices supporting the request).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  366) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  367) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  368) LINKINFO_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  369) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  370) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  371) ``LINKINFO_SET`` request allows setting some of the attributes reported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  372) ``LINKINFO_GET``.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  373) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  374) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  375) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  376)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  377)   ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  378)   ``ETHTOOL_A_LINKINFO_PORT``           u8      physical port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  379)   ``ETHTOOL_A_LINKINFO_PHYADDR``        u8      phy MDIO address
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  380)   ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL``   u8      MDI(-X) control
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  381)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  382) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  383) MDI(-X) status and transceiver cannot be set, request with the corresponding
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  384) attributes is rejected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  385) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  386) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  387) LINKMODES_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  388) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  389) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  390) Requests link modes (supported, advertised and peer advertised) and related
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  391) information (autonegotiation status, link speed and duplex) as provided by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  392) ``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  393) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  394) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  395) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  396)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  397)   ``ETHTOOL_A_LINKMODES_HEADER``        nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  398)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  399) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  400) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  401) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  402)   ==========================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  403)   ``ETHTOOL_A_LINKMODES_HEADER``              nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  404)   ``ETHTOOL_A_LINKMODES_AUTONEG``             u8      autonegotiation status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  405)   ``ETHTOOL_A_LINKMODES_OURS``                bitset  advertised link modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  406)   ``ETHTOOL_A_LINKMODES_PEER``                bitset  partner link modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  407)   ``ETHTOOL_A_LINKMODES_SPEED``               u32     link speed (Mb/s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  408)   ``ETHTOOL_A_LINKMODES_DUPLEX``              u8      duplex mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  409)   ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG``    u8      Master/slave port mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  410)   ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE``  u8      Master/slave port state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  411)   ==========================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  412) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  413) For ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  414) represents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  415) list.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  416) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  417) ``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  418) devices supporting the request).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  419) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  420) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  421) LINKMODES_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  422) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  423) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  424) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  425) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  426)   ==========================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  427)   ``ETHTOOL_A_LINKMODES_HEADER``              nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  428)   ``ETHTOOL_A_LINKMODES_AUTONEG``             u8      autonegotiation status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  429)   ``ETHTOOL_A_LINKMODES_OURS``                bitset  advertised link modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  430)   ``ETHTOOL_A_LINKMODES_PEER``                bitset  partner link modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  431)   ``ETHTOOL_A_LINKMODES_SPEED``               u32     link speed (Mb/s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  432)   ``ETHTOOL_A_LINKMODES_DUPLEX``              u8      duplex mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  433)   ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG``    u8      Master/slave port mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  434)   ==========================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  435) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  436) ``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  437) autonegotiation is on (either set now or kept from before), advertised modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  438) are not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  439) of speed and duplex is specified, kernel adjusts advertised modes to all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  440) supported modes matching speed, duplex or both (whatever is specified). This
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  441) autoselection is done on ethtool side with ioctl interface, netlink interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  442) is supposed to allow requesting changes without knowing what exactly kernel
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  443) supports.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  444) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  445) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  446) LINKSTATE_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  447) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  448) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  449) Requests link state information. Link up/down flag (as provided by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  450) ``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  451) be provided as well. In general, extended state describes reasons for why a port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  452) is down, or why it operates in some non-obvious mode. This request does not have
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  453) any attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  454) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  455) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  456) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  457)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  458)   ``ETHTOOL_A_LINKSTATE_HEADER``        nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  459)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  460) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  461) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  462) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  463)   ====================================  ======  ============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  464)   ``ETHTOOL_A_LINKSTATE_HEADER``        nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  465)   ``ETHTOOL_A_LINKSTATE_LINK``          bool    link state (up/down)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  466)   ``ETHTOOL_A_LINKSTATE_SQI``           u32     Current Signal Quality Index
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  467)   ``ETHTOOL_A_LINKSTATE_SQI_MAX``       u32     Max support SQI value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  468)   ``ETHTOOL_A_LINKSTATE_EXT_STATE``     u8      link extended state
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  469)   ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``  u8      link extended substate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  470)   ====================================  ======  ============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  471) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  472) For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  473) carrier flag provided by ``netif_carrier_ok()`` but there are drivers which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  474) define their own handler.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  475) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  476) ``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  477) optional values. ethtool core can provide either both
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  478) ``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  479) or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  480) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  481) ``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  482) devices supporting the request).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  483) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  484) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  485) Link extended states:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  486) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  487)   ================================================      ============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  488)   ``ETHTOOL_LINK_EXT_STATE_AUTONEG``                    States relating to the autonegotiation or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  489)                                                         issues therein
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  490) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  491)   ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE``      Failure during link training
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  492) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  493)   ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH``      Logical mismatch in physical coding sublayer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  494)                                                         or forward error correction sublayer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  495) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  496)   ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY``       Signal integrity issues
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  497) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  498)   ``ETHTOOL_LINK_EXT_STATE_NO_CABLE``                   No cable connected
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  499) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  500)   ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE``                Failure is related to cable,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  501)                                                         e.g., unsupported cable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  502) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  503)   ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE``               Failure is related to EEPROM, e.g., failure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  504)                                                         during reading or parsing the data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  505) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  506)   ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE``        Failure during calibration algorithm
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  507) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  508)   ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED``      The hardware is not able to provide the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  509)                                                         power required from cable or module
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  510) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  511)   ``ETHTOOL_LINK_EXT_STATE_OVERHEAT``                   The module is overheated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  512)   ================================================      ============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  513) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  514) Link extended substates:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  515) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  516)   Autoneg substates:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  517) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  518)   ===============================================================   ================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  519)   ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED``              Peer side is down
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  520) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  521)   ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED``                 Ack not received from peer side
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  522) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  523)   ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED``        Next page exchange failed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  524) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  525)   ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE``   Peer side is down during force
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  526)                                                                     mode or there is no agreement of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  527)                                                                     speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  528) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  529)   ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE``     Forward error correction modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  530)                                                                     in both sides are mismatched
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  531) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  532)   ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD``                           No Highest Common Denominator
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  533)   ===============================================================   ================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  534) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  535)   Link training substates:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  536) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  537)   ===========================================================================   ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  538)   ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED``                    Frames were not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  539)                                                                                  recognized, the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  540)                                                                                  lock failed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  541) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  542)   ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT``                       The lock did not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  543)                                                                                  occur before
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  544)                                                                                  timeout
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  545) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  546)   ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY``    Peer side did not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  547)                                                                                  send ready signal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  548)                                                                                  after training
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  549)                                                                                  process
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  550) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  551)   ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT``                                  Remote side is not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  552)                                                                                  ready yet
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  553)   ===========================================================================   ====================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  554) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  555)   Link logical mismatch substates:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  556) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  557)   ================================================================   ===============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  558)   ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK``   Physical coding sublayer was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  559)                                                                      not locked in first phase -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  560)                                                                      block lock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  561) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  562)   ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK``      Physical coding sublayer was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  563)                                                                      not locked in second phase -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  564)                                                                      alignment markers lock
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  565) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  566)   ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS``     Physical coding sublayer did
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  567)                                                                      not get align status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  568) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  569)   ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED``             FC forward error correction is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  570)                                                                      not locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  571) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  572)   ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED``             RS forward error correction is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  573)                                                                      not locked
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  574)   ================================================================   ===============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  575) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  576)   Bad signal integrity substates:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  577) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  578)   =================================================================    =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  579)   ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS``    Large number of physical
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  580)                                                                        errors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  581) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  582)   ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE``                   The system attempted to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  583)                                                                        operate the cable at a rate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  584)                                                                        that is not formally
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  585)                                                                        supported, which led to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  586)                                                                        signal integrity issues
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  587)   =================================================================    =============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  588) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  589)   Cable issue substates:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  590) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  591)   ===================================================   ============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  592)   ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE``    Unsupported cable
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  593) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  594)   ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE``   Cable test failure
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  595)   ===================================================   ============================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  596) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  597) DEBUG_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  598) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  599) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  600) Requests debugging settings of a device. At the moment, only message mask is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  601) provided.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  602) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  603) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  604) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  605)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  606)   ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  607)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  608) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  609) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  610) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  611)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  612)   ``ETHTOOL_A_DEBUG_HEADER``            nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  613)   ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  614)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  615) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  616) The message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  617) provided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  618) interface. While it is called message level there for historical reasons, most
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  619) drivers and almost all newer drivers use it as a mask of enabled message
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  620) classes (represented by ``NETIF_MSG_*`` constants); therefore netlink
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  621) interface follows its actual use in practice.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  622) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  623) ``DEBUG_GET`` allows dump requests (kernel returns reply messages for all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  624) devices supporting the request).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  625) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  626) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  627) DEBUG_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  628) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  629) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  630) Set or update debugging settings of a device. At the moment, only message mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  631) is supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  632) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  633) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  634) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  635)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  636)   ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  637)   ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  638)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  639) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  640) ``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  641) enabled debugging message types for the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  642) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  643) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  644) WOL_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  645) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  646) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  647) Query device wake-on-lan settings. Unlike most "GET" type requests,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  648) ``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  649) (potentially) provides SecureOn(tm) password which is confidential.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  650) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  651) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  652) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  653)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  654)   ``ETHTOOL_A_WOL_HEADER``              nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  655)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  656) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  657) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  658) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  659)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  660)   ``ETHTOOL_A_WOL_HEADER``              nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  661)   ``ETHTOOL_A_WOL_MODES``               bitset  mask of enabled WoL modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  662)   ``ETHTOOL_A_WOL_SOPASS``              binary  SecureOn(tm) password
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  663)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  664) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  665) In reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  666) device, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  667) included in reply if ``WAKE_MAGICSECURE`` mode is supported.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  668) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  669) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  670) WOL_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  671) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  672) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  673) Set or update wake-on-lan settings.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  674) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  675) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  676) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  677)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  678)   ``ETHTOOL_A_WOL_HEADER``              nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  679)   ``ETHTOOL_A_WOL_MODES``               bitset  enabled WoL modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  680)   ``ETHTOOL_A_WOL_SOPASS``              binary  SecureOn(tm) password
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  681)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  682) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  683) ``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  684) ``WAKE_MAGICSECURE`` mode.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  685) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  686) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  687) FEATURES_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  688) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  689) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  690) Gets netdev features like ``ETHTOOL_GFEATURES`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  691) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  692) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  693) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  694)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  695)   ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  696)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  697) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  698) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  699) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  700)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  701)   ``ETHTOOL_A_FEATURES_HEADER``         nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  702)   ``ETHTOOL_A_FEATURES_HW``             bitset  dev->hw_features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  703)   ``ETHTOOL_A_FEATURES_WANTED``         bitset  dev->wanted_features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  704)   ``ETHTOOL_A_FEATURES_ACTIVE``         bitset  dev->features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  705)   ``ETHTOOL_A_FEATURES_NOCHANGE``       bitset  NETIF_F_NEVER_CHANGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  706)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  707) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  708) Bitmaps in kernel response have the same meaning as bitmaps used in ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  709) interference but attribute names are different (they are based on
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  710) corresponding members of struct net_device). Legacy "flags" are not provided,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  711) if userspace needs them (most likely only ethtool for backward compatibility),
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  712) it can calculate their values from related feature bits itself.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  713) ETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  714) provide all names when using verbose bitmap format), the other three use no
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  715) mask (simple bit lists).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  716) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  717) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  718) FEATURES_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  719) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  720) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  721) Request to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  722) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  723) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  724) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  725)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  726)   ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  727)   ``ETHTOOL_A_FEATURES_WANTED``         bitset  requested features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  728)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  729) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  730) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  731) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  732)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  733)   ``ETHTOOL_A_FEATURES_HEADER``         nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  734)   ``ETHTOOL_A_FEATURES_WANTED``         bitset  diff wanted vs. result
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  735)   ``ETHTOOL_A_FEATURES_ACTIVE``         bitset  diff old vs. new active
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  736)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  737) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  738) Request constains only one bitset which can be either value/mask pair (request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  739) to change specific feature bits and leave the rest) or only a value (request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  740) to set all features to specified set).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  741) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  742) As request is subject to netdev_change_features() sanity checks, optional
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  743) kernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  744) header) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  745) reports the difference between client request and actual result: mask consists
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  746) of bits which differ between requested features and result (dev->features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  747) after the operation), value consists of values of these bits in the request
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  748) (i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  749) reports the difference between old and new dev->features: mask consists of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  750) bits which have changed, values are their values in new dev->features (after
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  751) the operation).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  752) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  753) ``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  754) are modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  755) request but also each time features are modified with netdev_update_features()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  756) or netdev_change_features().
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  757) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  758) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  759) PRIVFLAGS_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  760) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  761) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  762) Gets private flags like ``ETHTOOL_GPFLAGS`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  763) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  764) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  765) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  766)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  767)   ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  768)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  769) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  770) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  771) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  772)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  773)   ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  774)   ``ETHTOOL_A_PRIVFLAGS_FLAGS``         bitset  private flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  775)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  776) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  777) ``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  778) These flags are defined by driver, their number and names (and also meaning)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  779) are device dependent. For compact bitset format, names can be retrieved as
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  780) ``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  781) response uses all private flags supported by the device as mask so that client
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  782) gets the full information without having to fetch the string set with names.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  783) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  784) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  785) PRIVFLAGS_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  786) =============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  787) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  788) Sets or modifies values of device private flags like ``ETHTOOL_SPFLAGS``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  789) ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  790) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  791) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  792) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  793)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  794)   ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  795)   ``ETHTOOL_A_PRIVFLAGS_FLAGS``         bitset  private flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  796)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  797) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  798) ``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  799) modify only values of some of them.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  800) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  801) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  802) RINGS_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  803) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  804) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  805) Gets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  806) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  807) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  808) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  809)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  810)   ``ETHTOOL_A_RINGS_HEADER``            nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  811)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  812) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  813) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  814) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  815)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  816)   ``ETHTOOL_A_RINGS_HEADER``            nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  817)   ``ETHTOOL_A_RINGS_RX_MAX``            u32     max size of RX ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  818)   ``ETHTOOL_A_RINGS_RX_MINI_MAX``       u32     max size of RX mini ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  819)   ``ETHTOOL_A_RINGS_RX_JUMBO_MAX``      u32     max size of RX jumbo ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  820)   ``ETHTOOL_A_RINGS_TX_MAX``            u32     max size of TX ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  821)   ``ETHTOOL_A_RINGS_RX``                u32     size of RX ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  822)   ``ETHTOOL_A_RINGS_RX_MINI``           u32     size of RX mini ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  823)   ``ETHTOOL_A_RINGS_RX_JUMBO``          u32     size of RX jumbo ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  824)   ``ETHTOOL_A_RINGS_TX``                u32     size of TX ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  825)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  826) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  827) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  828) RINGS_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  829) =========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  830) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  831) Sets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  832) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  833) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  834) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  835)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  836)   ``ETHTOOL_A_RINGS_HEADER``            nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  837)   ``ETHTOOL_A_RINGS_RX``                u32     size of RX ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  838)   ``ETHTOOL_A_RINGS_RX_MINI``           u32     size of RX mini ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  839)   ``ETHTOOL_A_RINGS_RX_JUMBO``          u32     size of RX jumbo ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  840)   ``ETHTOOL_A_RINGS_TX``                u32     size of TX ring
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  841)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  842) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  843) Kernel checks that requested ring sizes do not exceed limits reported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  844) driver. Driver may impose additional constraints and may not suspport all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  845) attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  846) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  847) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  848) CHANNELS_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  849) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  850) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  851) Gets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  852) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  853) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  854) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  855)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  856)   ``ETHTOOL_A_CHANNELS_HEADER``         nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  857)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  858) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  859) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  860) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  861)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  862)   ``ETHTOOL_A_CHANNELS_HEADER``          nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  863)   ``ETHTOOL_A_CHANNELS_RX_MAX``          u32     max receive channels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  864)   ``ETHTOOL_A_CHANNELS_TX_MAX``          u32     max transmit channels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  865)   ``ETHTOOL_A_CHANNELS_OTHER_MAX``       u32     max other channels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  866)   ``ETHTOOL_A_CHANNELS_COMBINED_MAX``    u32     max combined channels
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  867)   ``ETHTOOL_A_CHANNELS_RX_COUNT``        u32     receive channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  868)   ``ETHTOOL_A_CHANNELS_TX_COUNT``        u32     transmit channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  869)   ``ETHTOOL_A_CHANNELS_OTHER_COUNT``     u32     other channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  870)   ``ETHTOOL_A_CHANNELS_COMBINED_COUNT``  u32     combined channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  871)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  872) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  873) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  874) CHANNELS_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  875) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  876) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  877) Sets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  878) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  879) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  880) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  881)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  882)   ``ETHTOOL_A_CHANNELS_HEADER``          nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  883)   ``ETHTOOL_A_CHANNELS_RX_COUNT``        u32     receive channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  884)   ``ETHTOOL_A_CHANNELS_TX_COUNT``        u32     transmit channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  885)   ``ETHTOOL_A_CHANNELS_OTHER_COUNT``     u32     other channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  886)   ``ETHTOOL_A_CHANNELS_COMBINED_COUNT``  u32     combined channel count
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  887)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  888) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  889) Kernel checks that requested channel counts do not exceed limits reported by
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  890) driver. Driver may impose additional constraints and may not suspport all
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  891) attributes.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  892) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  893) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  894) COALESCE_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  895) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  896) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  897) Gets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  898) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  899) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  900) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  901)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  902)   ``ETHTOOL_A_COALESCE_HEADER``         nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  903)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  904) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  905) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  906) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  907)   ===========================================  ======  =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  908)   ``ETHTOOL_A_COALESCE_HEADER``                nested  reply header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  909)   ``ETHTOOL_A_COALESCE_RX_USECS``              u32     delay (us), normal Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  910)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES``         u32     max packets, normal Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  911)   ``ETHTOOL_A_COALESCE_RX_USECS_IRQ``          u32     delay (us), Rx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  912)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ``     u32     max packets, Rx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  913)   ``ETHTOOL_A_COALESCE_TX_USECS``              u32     delay (us), normal Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  914)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES``         u32     max packets, normal Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  915)   ``ETHTOOL_A_COALESCE_TX_USECS_IRQ``          u32     delay (us), Tx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  916)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ``     u32     IRQ packets, Tx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  917)   ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS``     u32     delay of stats update
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  918)   ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX``       bool    adaptive Rx coalesce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  919)   ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX``       bool    adaptive Tx coalesce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  920)   ``ETHTOOL_A_COALESCE_PKT_RATE_LOW``          u32     threshold for low rate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  921)   ``ETHTOOL_A_COALESCE_RX_USECS_LOW``          u32     delay (us), low Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  922)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW``     u32     max packets, low Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  923)   ``ETHTOOL_A_COALESCE_TX_USECS_LOW``          u32     delay (us), low Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  924)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW``     u32     max packets, low Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  925)   ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH``         u32     threshold for high rate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  926)   ``ETHTOOL_A_COALESCE_RX_USECS_HIGH``         u32     delay (us), high Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  927)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH``    u32     max packets, high Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  928)   ``ETHTOOL_A_COALESCE_TX_USECS_HIGH``         u32     delay (us), high Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  929)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH``    u32     max packets, high Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  930)   ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL``  u32     rate sampling interval
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  931)   ===========================================  ======  =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  932) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  933) Attributes are only included in reply if their value is not zero or the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  934) corresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  935) they are declared as supported by driver).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  936) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  937) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  938) COALESCE_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  939) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  940) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  941) Sets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  942) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  943) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  944) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  945)   ===========================================  ======  =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  946)   ``ETHTOOL_A_COALESCE_HEADER``                nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  947)   ``ETHTOOL_A_COALESCE_RX_USECS``              u32     delay (us), normal Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  948)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES``         u32     max packets, normal Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  949)   ``ETHTOOL_A_COALESCE_RX_USECS_IRQ``          u32     delay (us), Rx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  950)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ``     u32     max packets, Rx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  951)   ``ETHTOOL_A_COALESCE_TX_USECS``              u32     delay (us), normal Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  952)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES``         u32     max packets, normal Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  953)   ``ETHTOOL_A_COALESCE_TX_USECS_IRQ``          u32     delay (us), Tx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  954)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ``     u32     IRQ packets, Tx in IRQ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  955)   ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS``     u32     delay of stats update
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  956)   ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX``       bool    adaptive Rx coalesce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  957)   ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX``       bool    adaptive Tx coalesce
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  958)   ``ETHTOOL_A_COALESCE_PKT_RATE_LOW``          u32     threshold for low rate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  959)   ``ETHTOOL_A_COALESCE_RX_USECS_LOW``          u32     delay (us), low Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  960)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW``     u32     max packets, low Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  961)   ``ETHTOOL_A_COALESCE_TX_USECS_LOW``          u32     delay (us), low Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  962)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW``     u32     max packets, low Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  963)   ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH``         u32     threshold for high rate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  964)   ``ETHTOOL_A_COALESCE_RX_USECS_HIGH``         u32     delay (us), high Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  965)   ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH``    u32     max packets, high Rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  966)   ``ETHTOOL_A_COALESCE_TX_USECS_HIGH``         u32     delay (us), high Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  967)   ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH``    u32     max packets, high Tx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  968)   ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL``  u32     rate sampling interval
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  969)   ===========================================  ======  =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  970) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  971) Request is rejected if it attributes declared as unsupported by driver (i.e.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  972) such that the corresponding bit in ``ethtool_ops::supported_coalesce_params``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  973) is not set), regardless of their values. Driver may impose additional
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  974) constraints on coalescing parameters and their values.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  975) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  976) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  977) PAUSE_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  978) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  979) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  980) Gets channel counts like ``ETHTOOL_GPAUSE`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  981) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  982) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  983) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  984)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  985)   ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  986)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  987) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  988) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  989) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  990)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  991)   ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  992)   ``ETHTOOL_A_PAUSE_AUTONEG``            bool    pause autonegotiation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  993)   ``ETHTOOL_A_PAUSE_RX``                 bool    receive pause frames
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  994)   ``ETHTOOL_A_PAUSE_TX``                 bool    transmit pause frames
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  995)   ``ETHTOOL_A_PAUSE_STATS``              nested  pause statistics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  996)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  997) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  998) ``ETHTOOL_A_PAUSE_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  999) in ``ETHTOOL_A_HEADER_FLAGS``.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1000) It will be empty if driver did not report any statistics. Drivers fill in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1001) the statistics in the following structure:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1002) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1003) .. kernel-doc:: include/linux/ethtool.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1004)     :identifiers: ethtool_pause_stats
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1005) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1006) Each member has a corresponding attribute defined.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1007) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1008) PAUSE_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1009) ============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1010) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1011) Sets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1012) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1013) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1014) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1015)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1016)   ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1017)   ``ETHTOOL_A_PAUSE_AUTONEG``            bool    pause autonegotiation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1018)   ``ETHTOOL_A_PAUSE_RX``                 bool    receive pause frames
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1019)   ``ETHTOOL_A_PAUSE_TX``                 bool    transmit pause frames
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1020)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1021) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1022) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1023) EEE_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1024) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1025) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1026) Gets channel counts like ``ETHTOOL_GEEE`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1027) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1028) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1029) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1030)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1031)   ``ETHTOOL_A_EEE_HEADER``               nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1032)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1033) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1034) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1035) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1036)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1037)   ``ETHTOOL_A_EEE_HEADER``               nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1038)   ``ETHTOOL_A_EEE_MODES_OURS``           bool    supported/advertised modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1039)   ``ETHTOOL_A_EEE_MODES_PEER``           bool    peer advertised link modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1040)   ``ETHTOOL_A_EEE_ACTIVE``               bool    EEE is actively used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1041)   ``ETHTOOL_A_EEE_ENABLED``              bool    EEE is enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1042)   ``ETHTOOL_A_EEE_TX_LPI_ENABLED``       bool    Tx lpi enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1043)   ``ETHTOOL_A_EEE_TX_LPI_TIMER``         u32     Tx lpi timeout (in us)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1044)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1045) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1046) In ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1047) enabled, value of link modes for which EEE is advertised. Link modes for which
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1048) peer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1049) netlink interface allows reporting EEE status for all link modes but only
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1050) first 32 are provided by the ``ethtool_ops`` callback.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1051) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1052) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1053) EEE_SET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1054) =======
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1055) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1056) Sets pause parameters like ``ETHTOOL_GEEEPARAM`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1057) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1058) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1059) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1060)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1061)   ``ETHTOOL_A_EEE_HEADER``               nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1062)   ``ETHTOOL_A_EEE_MODES_OURS``           bool    advertised modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1063)   ``ETHTOOL_A_EEE_ENABLED``              bool    EEE is enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1064)   ``ETHTOOL_A_EEE_TX_LPI_ENABLED``       bool    Tx lpi enabled
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1065)   ``ETHTOOL_A_EEE_TX_LPI_TIMER``         u32     Tx lpi timeout (in us)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1066)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1067) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1068) ``ETHTOOL_A_EEE_MODES_OURS`` is used to either list link modes to advertise
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1069) EEE for (if there is no mask) or specify changes to the list (if there is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1070) a mask). The netlink interface allows reporting EEE status for all link modes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1071) but only first 32 can be set at the moment as that is what the ``ethtool_ops``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1072) callback supports.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1073) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1074) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1075) TSINFO_GET
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1076) ==========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1077) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1078) Gets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1079) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1080) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1081) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1082)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1083)   ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1084)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1085) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1086) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1087) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1088)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1089)   ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1090)   ``ETHTOOL_A_TSINFO_TIMESTAMPING``      bitset  SO_TIMESTAMPING flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1091)   ``ETHTOOL_A_TSINFO_TX_TYPES``          bitset  supported Tx types
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1092)   ``ETHTOOL_A_TSINFO_RX_FILTERS``        bitset  supported Rx filters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1093)   ``ETHTOOL_A_TSINFO_PHC_INDEX``         u32     PTP hw clock index
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1094)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1095) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1096) ``ETHTOOL_A_TSINFO_PHC_INDEX`` is absent if there is no associated PHC (there
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1097) is no special value for this case). The bitset attributes are omitted if they
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1098) would be empty (no bit set).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1099) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1100) CABLE_TEST
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1101) ==========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1103) Start a cable test.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1104) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1105) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1106) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1107)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1108)   ``ETHTOOL_A_CABLE_TEST_HEADER``       nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1109)   ====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1110) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1111) Notification contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1112) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1113) An Ethernet cable typically contains 1, 2 or 4 pairs. The length of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1114) the pair can only be measured when there is a fault in the pair and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1115) hence a reflection. Information about the fault may not be available,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1116) depending on the specific hardware. Hence the contents of the notify
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1117) message are mostly optional. The attributes can be repeated an
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1118) arbitrary number of times, in an arbitrary order, for an arbitrary
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1119) number of pairs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1120) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1121) The example shows the notification sent when the test is completed for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1122) a T2 cable, i.e. two pairs. One pair is OK and hence has no length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1123) information. The second pair has a fault and does have length
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1124) information.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1126)  +---------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1127)  | ``ETHTOOL_A_CABLE_TEST_HEADER``             | nested | reply header        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1128)  +---------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1129)  | ``ETHTOOL_A_CABLE_TEST_STATUS``             | u8     | completed           |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1130)  +---------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1131)  | ``ETHTOOL_A_CABLE_TEST_NTF_NEST``           | nested | all the results     |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1132)  +-+-------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1133)  | | ``ETHTOOL_A_CABLE_NEST_RESULT``           | nested | cable test result   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1134)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1135)  | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1136)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1137)  | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1138)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1139)  | | ``ETHTOOL_A_CABLE_NEST_RESULT``           | nested | cable test results  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1140)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1141)  | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1142)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1143)  | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1144)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1145)  | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH``     | nested | cable length        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1146)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1147)  | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR``   | u8     | pair number         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1148)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1149)  | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM``     | u32    | length in cm        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1150)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1152) CABLE_TEST TDR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1153) ==============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1154) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1155) Start a cable test and report raw TDR data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1156) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1157) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1158) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1159)  +--------------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1160)  | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER``        | nested | reply header          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1161)  +--------------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1162)  | ``ETHTOOL_A_CABLE_TEST_TDR_CFG``           | nested | test configuration    |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1163)  +-+------------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1164)  | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE``  | u32    | first data distance   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1165)  +-+-+----------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1166)  | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE``   | u32    | last data distance    |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1167)  +-+-+----------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1168)  | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE``   | u32    | distance of each step |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1169)  +-+-+----------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1170)  | | ``ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR``    | u8     | pair to test          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1171)  +-+-+----------------------------------------+--------+-----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1172) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1173) The ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1174) of the nest. All distances are expressed in centimeters. The PHY takes
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1175) the distances as a guide, and rounds to the nearest distance it
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1176) actually supports. If a pair is passed, only that one pair will be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1177) tested. Otherwise all pairs are tested.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1178) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1179) Notification contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1180) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1181) Raw TDR data is gathered by sending a pulse down the cable and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1182) recording the amplitude of the reflected pulse for a given distance.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1183) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1184) It can take a number of seconds to collect TDR data, especial if the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1185) full 100 meters is probed at 1 meter intervals. When the test is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1186) started a notification will be sent containing just
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1187) ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1188) ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1189) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1190) When the test has completed a second notification will be sent
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1191) containing ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1192) ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1193) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1194) The message may optionally contain the amplitude of the pulse send
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1195) down the cable. This is measured in mV. A reflection should not be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1196) bigger than transmitted pulse.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1198) Before the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1199) nest containing information about the distance along the cable for the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1200) first reading, the last reading, and the step between each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1201) reading. Distances are measured in centimeters. These should be the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1202) exact values the PHY used. These may be different to what the user
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1203) requested, if the native measurement resolution is greater than 1 cm.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1204) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1205) For each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1206) used to report the amplitude of the reflection for a given pair.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1207) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1208)  +---------------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1209)  | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER``         | nested | reply header         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1210)  +---------------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1211)  | ``ETHTOOL_A_CABLE_TEST_TDR_STATUS``         | u8     | completed            |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1212)  +---------------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1213)  | ``ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST``       | nested | all the results      |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1214)  +-+-------------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1215)  | | ``ETHTOOL_A_CABLE_TDR_NEST_PULSE``        | nested | TX Pulse amplitude   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1216)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1217)  | | | ``ETHTOOL_A_CABLE_PULSE_mV``            | s16    | Pulse amplitude      |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1218)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1219)  | | ``ETHTOOL_A_CABLE_NEST_STEP``             | nested | TDR step info        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1220)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1221)  | | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32    | First data distance  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1222)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1223)  | | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE``  | u32    | Last data distance   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1224)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1225)  | | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE``  | u32    | distance of each step|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1226)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1227)  | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1228)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1229)  | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1230)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1231)  | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1232)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1233)  | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1234)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1235)  | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1236)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1237)  | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1238)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1239)  | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1240)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1241)  | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1242)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1243)  | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1244)  +-+-+-----------------------------------------+--------+----------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1245) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1246) TUNNEL_INFO
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1247) ===========
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1248) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1249) Gets information about the tunnel state NIC is aware of.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1250) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1251) Request contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1252) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1253)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1254)   ``ETHTOOL_A_TUNNEL_INFO_HEADER``       nested  request header
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1255)   =====================================  ======  ==========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1256) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1257) Kernel response contents:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1258) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1259)  +---------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1260)  | ``ETHTOOL_A_TUNNEL_INFO_HEADER``            | nested | reply header        |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1261)  +---------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1262)  | ``ETHTOOL_A_TUNNEL_INFO_UDP_PORTS``         | nested | all UDP port tables |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1263)  +-+-------------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1264)  | | ``ETHTOOL_A_TUNNEL_UDP_TABLE``            | nested | one UDP port table  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1265)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1266)  | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE``     | u32    | max size of the     |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1267)  | | |                                         |        | table               |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1268)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1269)  | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES``    | bitset | tunnel types which  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1270)  | | |                                         |        | table can hold      |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1271)  +-+-+-----------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1272)  | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY``    | nested | offloaded UDP port  |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1273)  +-+-+-+---------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1274)  | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT``   | be16   | UDP port            |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1275)  +-+-+-+---------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1276)  | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE``   | u32    | tunnel type         |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1277)  +-+-+-+---------------------------------------+--------+---------------------+
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1278) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1279) For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1280) the table contains static entries, hard-coded by the NIC.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1281) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1282) Request translation
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1283) ===================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1284) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1285) The following table maps ioctl commands to netlink commands providing their
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1286) functionality. Entries with "n/a" in right column are commands which do not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1287) have their netlink replacement yet. Entries which "n/a" in the left column
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1288) are netlink only.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1289) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1290)   =================================== =====================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1291)   ioctl command                       netlink command
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1292)   =================================== =====================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1293)   ``ETHTOOL_GSET``                    ``ETHTOOL_MSG_LINKINFO_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1294)                                       ``ETHTOOL_MSG_LINKMODES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1295)   ``ETHTOOL_SSET``                    ``ETHTOOL_MSG_LINKINFO_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1296)                                       ``ETHTOOL_MSG_LINKMODES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1297)   ``ETHTOOL_GDRVINFO``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1298)   ``ETHTOOL_GREGS``                   n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1299)   ``ETHTOOL_GWOL``                    ``ETHTOOL_MSG_WOL_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1300)   ``ETHTOOL_SWOL``                    ``ETHTOOL_MSG_WOL_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1301)   ``ETHTOOL_GMSGLVL``                 ``ETHTOOL_MSG_DEBUG_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1302)   ``ETHTOOL_SMSGLVL``                 ``ETHTOOL_MSG_DEBUG_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1303)   ``ETHTOOL_NWAY_RST``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1304)   ``ETHTOOL_GLINK``                   ``ETHTOOL_MSG_LINKSTATE_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1305)   ``ETHTOOL_GEEPROM``                 n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1306)   ``ETHTOOL_SEEPROM``                 n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1307)   ``ETHTOOL_GCOALESCE``               ``ETHTOOL_MSG_COALESCE_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1308)   ``ETHTOOL_SCOALESCE``               ``ETHTOOL_MSG_COALESCE_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1309)   ``ETHTOOL_GRINGPARAM``              ``ETHTOOL_MSG_RINGS_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1310)   ``ETHTOOL_SRINGPARAM``              ``ETHTOOL_MSG_RINGS_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1311)   ``ETHTOOL_GPAUSEPARAM``             ``ETHTOOL_MSG_PAUSE_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1312)   ``ETHTOOL_SPAUSEPARAM``             ``ETHTOOL_MSG_PAUSE_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1313)   ``ETHTOOL_GRXCSUM``                 ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1314)   ``ETHTOOL_SRXCSUM``                 ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1315)   ``ETHTOOL_GTXCSUM``                 ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1316)   ``ETHTOOL_STXCSUM``                 ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1317)   ``ETHTOOL_GSG``                     ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1318)   ``ETHTOOL_SSG``                     ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1319)   ``ETHTOOL_TEST``                    n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1320)   ``ETHTOOL_GSTRINGS``                ``ETHTOOL_MSG_STRSET_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1321)   ``ETHTOOL_PHYS_ID``                 n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1322)   ``ETHTOOL_GSTATS``                  n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1323)   ``ETHTOOL_GTSO``                    ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1324)   ``ETHTOOL_STSO``                    ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1325)   ``ETHTOOL_GPERMADDR``               rtnetlink ``RTM_GETLINK``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1326)   ``ETHTOOL_GUFO``                    ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1327)   ``ETHTOOL_SUFO``                    ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1328)   ``ETHTOOL_GGSO``                    ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1329)   ``ETHTOOL_SGSO``                    ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1330)   ``ETHTOOL_GFLAGS``                  ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1331)   ``ETHTOOL_SFLAGS``                  ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1332)   ``ETHTOOL_GPFLAGS``                 ``ETHTOOL_MSG_PRIVFLAGS_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1333)   ``ETHTOOL_SPFLAGS``                 ``ETHTOOL_MSG_PRIVFLAGS_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1334)   ``ETHTOOL_GRXFH``                   n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1335)   ``ETHTOOL_SRXFH``                   n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1336)   ``ETHTOOL_GGRO``                    ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1337)   ``ETHTOOL_SGRO``                    ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1338)   ``ETHTOOL_GRXRINGS``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1339)   ``ETHTOOL_GRXCLSRLCNT``             n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1340)   ``ETHTOOL_GRXCLSRULE``              n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1341)   ``ETHTOOL_GRXCLSRLALL``             n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1342)   ``ETHTOOL_SRXCLSRLDEL``             n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1343)   ``ETHTOOL_SRXCLSRLINS``             n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1344)   ``ETHTOOL_FLASHDEV``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1345)   ``ETHTOOL_RESET``                   n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1346)   ``ETHTOOL_SRXNTUPLE``               n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1347)   ``ETHTOOL_GRXNTUPLE``               n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1348)   ``ETHTOOL_GSSET_INFO``              ``ETHTOOL_MSG_STRSET_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1349)   ``ETHTOOL_GRXFHINDIR``              n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1350)   ``ETHTOOL_SRXFHINDIR``              n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1351)   ``ETHTOOL_GFEATURES``               ``ETHTOOL_MSG_FEATURES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1352)   ``ETHTOOL_SFEATURES``               ``ETHTOOL_MSG_FEATURES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1353)   ``ETHTOOL_GCHANNELS``               ``ETHTOOL_MSG_CHANNELS_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1354)   ``ETHTOOL_SCHANNELS``               ``ETHTOOL_MSG_CHANNELS_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1355)   ``ETHTOOL_SET_DUMP``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1356)   ``ETHTOOL_GET_DUMP_FLAG``           n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1357)   ``ETHTOOL_GET_DUMP_DATA``           n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1358)   ``ETHTOOL_GET_TS_INFO``             ``ETHTOOL_MSG_TSINFO_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1359)   ``ETHTOOL_GMODULEINFO``             n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1360)   ``ETHTOOL_GMODULEEEPROM``           n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1361)   ``ETHTOOL_GEEE``                    ``ETHTOOL_MSG_EEE_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1362)   ``ETHTOOL_SEEE``                    ``ETHTOOL_MSG_EEE_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1363)   ``ETHTOOL_GRSSH``                   n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1364)   ``ETHTOOL_SRSSH``                   n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1365)   ``ETHTOOL_GTUNABLE``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1366)   ``ETHTOOL_STUNABLE``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1367)   ``ETHTOOL_GPHYSTATS``               n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1368)   ``ETHTOOL_PERQUEUE``                n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1369)   ``ETHTOOL_GLINKSETTINGS``           ``ETHTOOL_MSG_LINKINFO_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1370)                                       ``ETHTOOL_MSG_LINKMODES_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1371)   ``ETHTOOL_SLINKSETTINGS``           ``ETHTOOL_MSG_LINKINFO_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1372)                                       ``ETHTOOL_MSG_LINKMODES_SET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1373)   ``ETHTOOL_PHY_GTUNABLE``            n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1374)   ``ETHTOOL_PHY_STUNABLE``            n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1375)   ``ETHTOOL_GFECPARAM``               n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1376)   ``ETHTOOL_SFECPARAM``               n/a
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1377)   n/a                                 ''ETHTOOL_MSG_CABLE_TEST_ACT''
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1378)   n/a                                 ''ETHTOOL_MSG_CABLE_TEST_TDR_ACT''
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1379)   n/a                                 ``ETHTOOL_MSG_TUNNEL_INFO_GET``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1380)   =================================== =====================================