162306a36Sopenharmony_ci=============================
262306a36Sopenharmony_ciNetlink interface for ethtool
362306a36Sopenharmony_ci=============================
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci
662306a36Sopenharmony_ciBasic information
762306a36Sopenharmony_ci=================
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciNetlink interface for ethtool uses generic netlink family ``ethtool``
1062306a36Sopenharmony_ci(userspace application should use macros ``ETHTOOL_GENL_NAME`` and
1162306a36Sopenharmony_ci``ETHTOOL_GENL_VERSION`` defined in ``<linux/ethtool_netlink.h>`` uapi
1262306a36Sopenharmony_ciheader). This family does not use a specific header, all information in
1362306a36Sopenharmony_cirequests and replies is passed using netlink attributes.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciThe ethtool netlink interface uses extended ACK for error and warning
1662306a36Sopenharmony_cireporting, userspace application developers are encouraged to make these
1762306a36Sopenharmony_cimessages available to user in a suitable way.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciRequests can be divided into three categories: "get" (retrieving information),
2062306a36Sopenharmony_ci"set" (setting parameters) and "action" (invoking an action).
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciAll "set" and "action" type requests require admin privileges
2362306a36Sopenharmony_ci(``CAP_NET_ADMIN`` in the namespace). Most "get" type requests are allowed for
2462306a36Sopenharmony_cianyone but there are exceptions (where the response contains sensitive
2562306a36Sopenharmony_ciinformation). In some cases, the request as such is allowed for anyone but
2662306a36Sopenharmony_ciunprivileged users have attributes with sensitive information (e.g.
2762306a36Sopenharmony_ciwake-on-lan password) omitted.
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciConventions
3162306a36Sopenharmony_ci===========
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciAttributes which represent a boolean value usually use NLA_U8 type so that we
3462306a36Sopenharmony_cican distinguish three states: "on", "off" and "not present" (meaning the
3562306a36Sopenharmony_ciinformation is not available in "get" requests or value is not to be changed
3662306a36Sopenharmony_ciin "set" requests). For these attributes, the "true" value should be passed as
3762306a36Sopenharmony_cinumber 1 but any non-zero value should be understood as "true" by recipient.
3862306a36Sopenharmony_ciIn the tables below, "bool" denotes NLA_U8 attributes interpreted in this way.
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciIn the message structure descriptions below, if an attribute name is suffixed
4162306a36Sopenharmony_ciwith "+", parent nest can contain multiple attributes of the same type. This
4262306a36Sopenharmony_ciimplements an array of entries.
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciAttributes that need to be filled-in by device drivers and that are dumped to
4562306a36Sopenharmony_ciuser space based on whether they are valid or not should not use zero as a
4662306a36Sopenharmony_civalid value. This avoids the need to explicitly signal the validity of the
4762306a36Sopenharmony_ciattribute in the device driver API.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciRequest header
5162306a36Sopenharmony_ci==============
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciEach request or reply message contains a nested attribute with common header.
5462306a36Sopenharmony_ciStructure of this header is
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  ==============================  ======  =============================
5762306a36Sopenharmony_ci  ``ETHTOOL_A_HEADER_DEV_INDEX``  u32     device ifindex
5862306a36Sopenharmony_ci  ``ETHTOOL_A_HEADER_DEV_NAME``   string  device name
5962306a36Sopenharmony_ci  ``ETHTOOL_A_HEADER_FLAGS``      u32     flags common for all requests
6062306a36Sopenharmony_ci  ==============================  ======  =============================
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci``ETHTOOL_A_HEADER_DEV_INDEX`` and ``ETHTOOL_A_HEADER_DEV_NAME`` identify the
6362306a36Sopenharmony_cidevice message relates to. One of them is sufficient in requests, if both are
6462306a36Sopenharmony_ciused, they must identify the same device. Some requests, e.g. global string
6562306a36Sopenharmony_cisets, do not require device identification. Most ``GET`` requests also allow
6662306a36Sopenharmony_cidump requests without device identification to query the same information for
6762306a36Sopenharmony_ciall devices providing it (each device in a separate message).
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci``ETHTOOL_A_HEADER_FLAGS`` is a bitmap of request flags common for all request
7062306a36Sopenharmony_citypes. The interpretation of these flags is the same for all request types but
7162306a36Sopenharmony_cithe flags may not apply to requests. Recognized flags are:
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  =================================  ===================================
7462306a36Sopenharmony_ci  ``ETHTOOL_FLAG_COMPACT_BITSETS``   use compact format bitsets in reply
7562306a36Sopenharmony_ci  ``ETHTOOL_FLAG_OMIT_REPLY``        omit optional reply (_SET and _ACT)
7662306a36Sopenharmony_ci  ``ETHTOOL_FLAG_STATS``             include optional device statistics
7762306a36Sopenharmony_ci  =================================  ===================================
7862306a36Sopenharmony_ci
7962306a36Sopenharmony_ciNew request flags should follow the general idea that if the flag is not set,
8062306a36Sopenharmony_cithe behaviour is backward compatible, i.e. requests from old clients not aware
8162306a36Sopenharmony_ciof the flag should be interpreted the way the client expects. A client must
8262306a36Sopenharmony_cinot set flags it does not understand.
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ciBit sets
8662306a36Sopenharmony_ci========
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ciFor short bitmaps of (reasonably) fixed length, standard ``NLA_BITFIELD32``
8962306a36Sopenharmony_citype is used. For arbitrary length bitmaps, ethtool netlink uses a nested
9062306a36Sopenharmony_ciattribute with contents of one of two forms: compact (two binary bitmaps
9162306a36Sopenharmony_cirepresenting bit values and mask of affected bits) and bit-by-bit (list of
9262306a36Sopenharmony_cibits identified by either index or name).
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ciVerbose (bit-by-bit) bitsets allow sending symbolic names for bits together
9562306a36Sopenharmony_ciwith their values which saves a round trip (when the bitset is passed in a
9662306a36Sopenharmony_cirequest) or at least a second request (when the bitset is in a reply). This is
9762306a36Sopenharmony_ciuseful for one shot applications like traditional ethtool command. On the
9862306a36Sopenharmony_ciother hand, long running applications like ethtool monitor (displaying
9962306a36Sopenharmony_cinotifications) or network management daemons may prefer fetching the names
10062306a36Sopenharmony_cionly once and using compact form to save message size. Notifications from
10162306a36Sopenharmony_ciethtool netlink interface always use compact form for bitsets.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciA bitset can represent either a value/mask pair (``ETHTOOL_A_BITSET_NOMASK``
10462306a36Sopenharmony_cinot set) or a single bitmap (``ETHTOOL_A_BITSET_NOMASK`` set). In requests
10562306a36Sopenharmony_cimodifying a bitmap, the former changes the bit set in mask to values set in
10662306a36Sopenharmony_civalue and preserves the rest; the latter sets the bits set in the bitmap and
10762306a36Sopenharmony_ciclears the rest.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciCompact form: nested (bitset) attribute contents:
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci  ============================  ======  ============================
11262306a36Sopenharmony_ci  ``ETHTOOL_A_BITSET_NOMASK``   flag    no mask, only a list
11362306a36Sopenharmony_ci  ``ETHTOOL_A_BITSET_SIZE``     u32     number of significant bits
11462306a36Sopenharmony_ci  ``ETHTOOL_A_BITSET_VALUE``    binary  bitmap of bit values
11562306a36Sopenharmony_ci  ``ETHTOOL_A_BITSET_MASK``     binary  bitmap of valid bits
11662306a36Sopenharmony_ci  ============================  ======  ============================
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ciValue and mask must have length at least ``ETHTOOL_A_BITSET_SIZE`` bits
11962306a36Sopenharmony_cirounded up to a multiple of 32 bits. They consist of 32-bit words in host byte
12062306a36Sopenharmony_ciorder, words ordered from least significant to most significant (i.e. the same
12162306a36Sopenharmony_ciway as bitmaps are passed with ioctl interface).
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ciFor compact form, ``ETHTOOL_A_BITSET_SIZE`` and ``ETHTOOL_A_BITSET_VALUE`` are
12462306a36Sopenharmony_cimandatory. ``ETHTOOL_A_BITSET_MASK`` attribute is mandatory if
12562306a36Sopenharmony_ci``ETHTOOL_A_BITSET_NOMASK`` is not set (bitset represents a value/mask pair);
12662306a36Sopenharmony_ciif ``ETHTOOL_A_BITSET_NOMASK`` is not set, ``ETHTOOL_A_BITSET_MASK`` is not
12762306a36Sopenharmony_ciallowed (bitset represents a single bitmap.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciKernel bit set length may differ from userspace length if older application is
13062306a36Sopenharmony_ciused on newer kernel or vice versa. If userspace bitmap is longer, an error is
13162306a36Sopenharmony_ciissued only if the request actually tries to set values of some bits not
13262306a36Sopenharmony_cirecognized by kernel.
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciBit-by-bit form: nested (bitset) attribute contents:
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci +------------------------------------+--------+-----------------------------+
13762306a36Sopenharmony_ci | ``ETHTOOL_A_BITSET_NOMASK``        | flag   | no mask, only a list        |
13862306a36Sopenharmony_ci +------------------------------------+--------+-----------------------------+
13962306a36Sopenharmony_ci | ``ETHTOOL_A_BITSET_SIZE``          | u32    | number of significant bits  |
14062306a36Sopenharmony_ci +------------------------------------+--------+-----------------------------+
14162306a36Sopenharmony_ci | ``ETHTOOL_A_BITSET_BITS``          | nested | array of bits               |
14262306a36Sopenharmony_ci +-+----------------------------------+--------+-----------------------------+
14362306a36Sopenharmony_ci | | ``ETHTOOL_A_BITSET_BITS_BIT+``   | nested | one bit                     |
14462306a36Sopenharmony_ci +-+-+--------------------------------+--------+-----------------------------+
14562306a36Sopenharmony_ci | | | ``ETHTOOL_A_BITSET_BIT_INDEX`` | u32    | bit index (0 for LSB)       |
14662306a36Sopenharmony_ci +-+-+--------------------------------+--------+-----------------------------+
14762306a36Sopenharmony_ci | | | ``ETHTOOL_A_BITSET_BIT_NAME``  | string | bit name                    |
14862306a36Sopenharmony_ci +-+-+--------------------------------+--------+-----------------------------+
14962306a36Sopenharmony_ci | | | ``ETHTOOL_A_BITSET_BIT_VALUE`` | flag   | present if bit is set       |
15062306a36Sopenharmony_ci +-+-+--------------------------------+--------+-----------------------------+
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ciBit size is optional for bit-by-bit form. ``ETHTOOL_A_BITSET_BITS`` nest can
15362306a36Sopenharmony_cionly contain ``ETHTOOL_A_BITSET_BITS_BIT`` attributes but there can be an
15462306a36Sopenharmony_ciarbitrary number of them.  A bit may be identified by its index or by its
15562306a36Sopenharmony_ciname. When used in requests, listed bits are set to 0 or 1 according to
15662306a36Sopenharmony_ci``ETHTOOL_A_BITSET_BIT_VALUE``, the rest is preserved. A request fails if
15762306a36Sopenharmony_ciindex exceeds kernel bit length or if name is not recognized.
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ciWhen ``ETHTOOL_A_BITSET_NOMASK`` flag is present, bitset is interpreted as
16062306a36Sopenharmony_cia simple bitmap. ``ETHTOOL_A_BITSET_BIT_VALUE`` attributes are not used in
16162306a36Sopenharmony_cisuch case. Such bitset represents a bitmap with listed bits set and the rest
16262306a36Sopenharmony_cizero.
16362306a36Sopenharmony_ci
16462306a36Sopenharmony_ciIn requests, application can use either form. Form used by kernel in reply is
16562306a36Sopenharmony_cidetermined by ``ETHTOOL_FLAG_COMPACT_BITSETS`` flag in flags field of request
16662306a36Sopenharmony_ciheader. Semantics of value and mask depends on the attribute.
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ciList of message types
17062306a36Sopenharmony_ci=====================
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ciAll constants identifying message types use ``ETHTOOL_CMD_`` prefix and suffix
17362306a36Sopenharmony_ciaccording to message purpose:
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ci  ==============    ======================================
17662306a36Sopenharmony_ci  ``_GET``          userspace request to retrieve data
17762306a36Sopenharmony_ci  ``_SET``          userspace request to set data
17862306a36Sopenharmony_ci  ``_ACT``          userspace request to perform an action
17962306a36Sopenharmony_ci  ``_GET_REPLY``    kernel reply to a ``GET`` request
18062306a36Sopenharmony_ci  ``_SET_REPLY``    kernel reply to a ``SET`` request
18162306a36Sopenharmony_ci  ``_ACT_REPLY``    kernel reply to an ``ACT`` request
18262306a36Sopenharmony_ci  ``_NTF``          kernel notification
18362306a36Sopenharmony_ci  ==============    ======================================
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ciUserspace to kernel:
18662306a36Sopenharmony_ci
18762306a36Sopenharmony_ci  ===================================== =================================
18862306a36Sopenharmony_ci  ``ETHTOOL_MSG_STRSET_GET``            get string set
18962306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKINFO_GET``          get link settings
19062306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKINFO_SET``          set link settings
19162306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKMODES_GET``         get link modes info
19262306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKMODES_SET``         set link modes info
19362306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKSTATE_GET``         get link state
19462306a36Sopenharmony_ci  ``ETHTOOL_MSG_DEBUG_GET``             get debugging settings
19562306a36Sopenharmony_ci  ``ETHTOOL_MSG_DEBUG_SET``             set debugging settings
19662306a36Sopenharmony_ci  ``ETHTOOL_MSG_WOL_GET``               get wake-on-lan settings
19762306a36Sopenharmony_ci  ``ETHTOOL_MSG_WOL_SET``               set wake-on-lan settings
19862306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEATURES_GET``          get device features
19962306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEATURES_SET``          set device features
20062306a36Sopenharmony_ci  ``ETHTOOL_MSG_PRIVFLAGS_GET``         get private flags
20162306a36Sopenharmony_ci  ``ETHTOOL_MSG_PRIVFLAGS_SET``         set private flags
20262306a36Sopenharmony_ci  ``ETHTOOL_MSG_RINGS_GET``             get ring sizes
20362306a36Sopenharmony_ci  ``ETHTOOL_MSG_RINGS_SET``             set ring sizes
20462306a36Sopenharmony_ci  ``ETHTOOL_MSG_CHANNELS_GET``          get channel counts
20562306a36Sopenharmony_ci  ``ETHTOOL_MSG_CHANNELS_SET``          set channel counts
20662306a36Sopenharmony_ci  ``ETHTOOL_MSG_COALESCE_GET``          get coalescing parameters
20762306a36Sopenharmony_ci  ``ETHTOOL_MSG_COALESCE_SET``          set coalescing parameters
20862306a36Sopenharmony_ci  ``ETHTOOL_MSG_PAUSE_GET``             get pause parameters
20962306a36Sopenharmony_ci  ``ETHTOOL_MSG_PAUSE_SET``             set pause parameters
21062306a36Sopenharmony_ci  ``ETHTOOL_MSG_EEE_GET``               get EEE settings
21162306a36Sopenharmony_ci  ``ETHTOOL_MSG_EEE_SET``               set EEE settings
21262306a36Sopenharmony_ci  ``ETHTOOL_MSG_TSINFO_GET``		get timestamping info
21362306a36Sopenharmony_ci  ``ETHTOOL_MSG_CABLE_TEST_ACT``        action start cable test
21462306a36Sopenharmony_ci  ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT``    action start raw TDR cable test
21562306a36Sopenharmony_ci  ``ETHTOOL_MSG_TUNNEL_INFO_GET``       get tunnel offload info
21662306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEC_GET``               get FEC settings
21762306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEC_SET``               set FEC settings
21862306a36Sopenharmony_ci  ``ETHTOOL_MSG_MODULE_EEPROM_GET``     read SFP module EEPROM
21962306a36Sopenharmony_ci  ``ETHTOOL_MSG_STATS_GET``             get standard statistics
22062306a36Sopenharmony_ci  ``ETHTOOL_MSG_PHC_VCLOCKS_GET``       get PHC virtual clocks info
22162306a36Sopenharmony_ci  ``ETHTOOL_MSG_MODULE_SET``            set transceiver module parameters
22262306a36Sopenharmony_ci  ``ETHTOOL_MSG_MODULE_GET``            get transceiver module parameters
22362306a36Sopenharmony_ci  ``ETHTOOL_MSG_PSE_SET``               set PSE parameters
22462306a36Sopenharmony_ci  ``ETHTOOL_MSG_PSE_GET``               get PSE parameters
22562306a36Sopenharmony_ci  ``ETHTOOL_MSG_RSS_GET``               get RSS settings
22662306a36Sopenharmony_ci  ``ETHTOOL_MSG_MM_GET``                get MAC merge layer state
22762306a36Sopenharmony_ci  ``ETHTOOL_MSG_MM_SET``                set MAC merge layer parameters
22862306a36Sopenharmony_ci  ===================================== =================================
22962306a36Sopenharmony_ci
23062306a36Sopenharmony_ciKernel to userspace:
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci  ======================================== =================================
23362306a36Sopenharmony_ci  ``ETHTOOL_MSG_STRSET_GET_REPLY``         string set contents
23462306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKINFO_GET_REPLY``       link settings
23562306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKINFO_NTF``             link settings notification
23662306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKMODES_GET_REPLY``      link modes info
23762306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKMODES_NTF``            link modes notification
23862306a36Sopenharmony_ci  ``ETHTOOL_MSG_LINKSTATE_GET_REPLY``      link state info
23962306a36Sopenharmony_ci  ``ETHTOOL_MSG_DEBUG_GET_REPLY``          debugging settings
24062306a36Sopenharmony_ci  ``ETHTOOL_MSG_DEBUG_NTF``                debugging settings notification
24162306a36Sopenharmony_ci  ``ETHTOOL_MSG_WOL_GET_REPLY``            wake-on-lan settings
24262306a36Sopenharmony_ci  ``ETHTOOL_MSG_WOL_NTF``                  wake-on-lan settings notification
24362306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEATURES_GET_REPLY``       device features
24462306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEATURES_SET_REPLY``       optional reply to FEATURES_SET
24562306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEATURES_NTF``             netdev features notification
24662306a36Sopenharmony_ci  ``ETHTOOL_MSG_PRIVFLAGS_GET_REPLY``      private flags
24762306a36Sopenharmony_ci  ``ETHTOOL_MSG_PRIVFLAGS_NTF``            private flags
24862306a36Sopenharmony_ci  ``ETHTOOL_MSG_RINGS_GET_REPLY``          ring sizes
24962306a36Sopenharmony_ci  ``ETHTOOL_MSG_RINGS_NTF``                ring sizes
25062306a36Sopenharmony_ci  ``ETHTOOL_MSG_CHANNELS_GET_REPLY``       channel counts
25162306a36Sopenharmony_ci  ``ETHTOOL_MSG_CHANNELS_NTF``             channel counts
25262306a36Sopenharmony_ci  ``ETHTOOL_MSG_COALESCE_GET_REPLY``       coalescing parameters
25362306a36Sopenharmony_ci  ``ETHTOOL_MSG_COALESCE_NTF``             coalescing parameters
25462306a36Sopenharmony_ci  ``ETHTOOL_MSG_PAUSE_GET_REPLY``          pause parameters
25562306a36Sopenharmony_ci  ``ETHTOOL_MSG_PAUSE_NTF``                pause parameters
25662306a36Sopenharmony_ci  ``ETHTOOL_MSG_EEE_GET_REPLY``            EEE settings
25762306a36Sopenharmony_ci  ``ETHTOOL_MSG_EEE_NTF``                  EEE settings
25862306a36Sopenharmony_ci  ``ETHTOOL_MSG_TSINFO_GET_REPLY``         timestamping info
25962306a36Sopenharmony_ci  ``ETHTOOL_MSG_CABLE_TEST_NTF``           Cable test results
26062306a36Sopenharmony_ci  ``ETHTOOL_MSG_CABLE_TEST_TDR_NTF``       Cable test TDR results
26162306a36Sopenharmony_ci  ``ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY``    tunnel offload info
26262306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEC_GET_REPLY``            FEC settings
26362306a36Sopenharmony_ci  ``ETHTOOL_MSG_FEC_NTF``                  FEC settings
26462306a36Sopenharmony_ci  ``ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY``  read SFP module EEPROM
26562306a36Sopenharmony_ci  ``ETHTOOL_MSG_STATS_GET_REPLY``          standard statistics
26662306a36Sopenharmony_ci  ``ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY``    PHC virtual clocks info
26762306a36Sopenharmony_ci  ``ETHTOOL_MSG_MODULE_GET_REPLY``         transceiver module parameters
26862306a36Sopenharmony_ci  ``ETHTOOL_MSG_PSE_GET_REPLY``            PSE parameters
26962306a36Sopenharmony_ci  ``ETHTOOL_MSG_RSS_GET_REPLY``            RSS settings
27062306a36Sopenharmony_ci  ``ETHTOOL_MSG_MM_GET_REPLY``             MAC merge layer status
27162306a36Sopenharmony_ci  ======================================== =================================
27262306a36Sopenharmony_ci
27362306a36Sopenharmony_ci``GET`` requests are sent by userspace applications to retrieve device
27462306a36Sopenharmony_ciinformation. They usually do not contain any message specific attributes.
27562306a36Sopenharmony_ciKernel replies with corresponding "GET_REPLY" message. For most types, ``GET``
27662306a36Sopenharmony_cirequest with ``NLM_F_DUMP`` and no device identification can be used to query
27762306a36Sopenharmony_cithe information for all devices supporting the request.
27862306a36Sopenharmony_ci
27962306a36Sopenharmony_ciIf the data can be also modified, corresponding ``SET`` message with the same
28062306a36Sopenharmony_cilayout as corresponding ``GET_REPLY`` is used to request changes. Only
28162306a36Sopenharmony_ciattributes where a change is requested are included in such request (also, not
28262306a36Sopenharmony_ciall attributes may be changed). Replies to most ``SET`` request consist only
28362306a36Sopenharmony_ciof error code and extack; if kernel provides additional data, it is sent in
28462306a36Sopenharmony_cithe form of corresponding ``SET_REPLY`` message which can be suppressed by
28562306a36Sopenharmony_cisetting ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header.
28662306a36Sopenharmony_ci
28762306a36Sopenharmony_ciData modification also triggers sending a ``NTF`` message with a notification.
28862306a36Sopenharmony_ciThese usually bear only a subset of attributes which was affected by the
28962306a36Sopenharmony_cichange. The same notification is issued if the data is modified using other
29062306a36Sopenharmony_cimeans (mostly ioctl ethtool interface). Unlike notifications from ethtool
29162306a36Sopenharmony_cinetlink code which are only sent if something actually changed, notifications
29262306a36Sopenharmony_citriggered by ioctl interface may be sent even if the request did not actually
29362306a36Sopenharmony_cichange any data.
29462306a36Sopenharmony_ci
29562306a36Sopenharmony_ci``ACT`` messages request kernel (driver) to perform a specific action. If some
29662306a36Sopenharmony_ciinformation is reported by kernel (which can be suppressed by setting
29762306a36Sopenharmony_ci``ETHTOOL_FLAG_OMIT_REPLY`` flag in request header), the reply takes form of
29862306a36Sopenharmony_cian ``ACT_REPLY`` message. Performing an action also triggers a notification
29962306a36Sopenharmony_ci(``NTF`` message).
30062306a36Sopenharmony_ci
30162306a36Sopenharmony_ciLater sections describe the format and semantics of these messages.
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci
30462306a36Sopenharmony_ciSTRSET_GET
30562306a36Sopenharmony_ci==========
30662306a36Sopenharmony_ci
30762306a36Sopenharmony_ciRequests contents of a string set as provided by ioctl commands
30862306a36Sopenharmony_ci``ETHTOOL_GSSET_INFO`` and ``ETHTOOL_GSTRINGS.`` String sets are not user
30962306a36Sopenharmony_ciwriteable so that the corresponding ``STRSET_SET`` message is only used in
31062306a36Sopenharmony_cikernel replies. There are two types of string sets: global (independent of
31162306a36Sopenharmony_cia device, e.g. device feature names) and device specific (e.g. device private
31262306a36Sopenharmony_ciflags).
31362306a36Sopenharmony_ci
31462306a36Sopenharmony_ciRequest contents:
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ci +---------------------------------------+--------+------------------------+
31762306a36Sopenharmony_ci | ``ETHTOOL_A_STRSET_HEADER``           | nested | request header         |
31862306a36Sopenharmony_ci +---------------------------------------+--------+------------------------+
31962306a36Sopenharmony_ci | ``ETHTOOL_A_STRSET_STRINGSETS``       | nested | string set to request  |
32062306a36Sopenharmony_ci +-+-------------------------------------+--------+------------------------+
32162306a36Sopenharmony_ci | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set         |
32262306a36Sopenharmony_ci +-+-+-----------------------------------+--------+------------------------+
32362306a36Sopenharmony_ci | | | ``ETHTOOL_A_STRINGSET_ID``        | u32    | set id                 |
32462306a36Sopenharmony_ci +-+-+-----------------------------------+--------+------------------------+
32562306a36Sopenharmony_ci
32662306a36Sopenharmony_ciKernel response contents:
32762306a36Sopenharmony_ci
32862306a36Sopenharmony_ci +---------------------------------------+--------+-----------------------+
32962306a36Sopenharmony_ci | ``ETHTOOL_A_STRSET_HEADER``           | nested | reply header          |
33062306a36Sopenharmony_ci +---------------------------------------+--------+-----------------------+
33162306a36Sopenharmony_ci | ``ETHTOOL_A_STRSET_STRINGSETS``       | nested | array of string sets  |
33262306a36Sopenharmony_ci +-+-------------------------------------+--------+-----------------------+
33362306a36Sopenharmony_ci | | ``ETHTOOL_A_STRINGSETS_STRINGSET+`` | nested | one string set        |
33462306a36Sopenharmony_ci +-+-+-----------------------------------+--------+-----------------------+
33562306a36Sopenharmony_ci | | | ``ETHTOOL_A_STRINGSET_ID``        | u32    | set id                |
33662306a36Sopenharmony_ci +-+-+-----------------------------------+--------+-----------------------+
33762306a36Sopenharmony_ci | | | ``ETHTOOL_A_STRINGSET_COUNT``     | u32    | number of strings     |
33862306a36Sopenharmony_ci +-+-+-----------------------------------+--------+-----------------------+
33962306a36Sopenharmony_ci | | | ``ETHTOOL_A_STRINGSET_STRINGS``   | nested | array of strings      |
34062306a36Sopenharmony_ci +-+-+-+---------------------------------+--------+-----------------------+
34162306a36Sopenharmony_ci | | | | ``ETHTOOL_A_STRINGS_STRING+``   | nested | one string            |
34262306a36Sopenharmony_ci +-+-+-+-+-------------------------------+--------+-----------------------+
34362306a36Sopenharmony_ci | | | | | ``ETHTOOL_A_STRING_INDEX``    | u32    | string index          |
34462306a36Sopenharmony_ci +-+-+-+-+-------------------------------+--------+-----------------------+
34562306a36Sopenharmony_ci | | | | | ``ETHTOOL_A_STRING_VALUE``    | string | string value          |
34662306a36Sopenharmony_ci +-+-+-+-+-------------------------------+--------+-----------------------+
34762306a36Sopenharmony_ci | ``ETHTOOL_A_STRSET_COUNTS_ONLY``      | flag   | return only counts    |
34862306a36Sopenharmony_ci +---------------------------------------+--------+-----------------------+
34962306a36Sopenharmony_ci
35062306a36Sopenharmony_ciDevice identification in request header is optional. Depending on its presence
35162306a36Sopenharmony_cia and ``NLM_F_DUMP`` flag, there are three type of ``STRSET_GET`` requests:
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci - no ``NLM_F_DUMP,`` no device: get "global" stringsets
35462306a36Sopenharmony_ci - no ``NLM_F_DUMP``, with device: get string sets related to the device
35562306a36Sopenharmony_ci - ``NLM_F_DUMP``, no device: get device related string sets for all devices
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ciIf there is no ``ETHTOOL_A_STRSET_STRINGSETS`` array, all string sets of
35862306a36Sopenharmony_cirequested type are returned, otherwise only those specified in the request.
35962306a36Sopenharmony_ciFlag ``ETHTOOL_A_STRSET_COUNTS_ONLY`` tells kernel to only return string
36062306a36Sopenharmony_cicounts of the sets, not the actual strings.
36162306a36Sopenharmony_ci
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ciLINKINFO_GET
36462306a36Sopenharmony_ci============
36562306a36Sopenharmony_ci
36662306a36Sopenharmony_ciRequests link settings as provided by ``ETHTOOL_GLINKSETTINGS`` except for
36762306a36Sopenharmony_cilink modes and autonegotiation related information. The request does not use
36862306a36Sopenharmony_ciany attributes.
36962306a36Sopenharmony_ci
37062306a36Sopenharmony_ciRequest contents:
37162306a36Sopenharmony_ci
37262306a36Sopenharmony_ci  ====================================  ======  ==========================
37362306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
37462306a36Sopenharmony_ci  ====================================  ======  ==========================
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ciKernel response contents:
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci  ====================================  ======  ==========================
37962306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_HEADER``         nested  reply header
38062306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_PORT``           u8      physical port
38162306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_PHYADDR``        u8      phy MDIO address
38262306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_TP_MDIX``        u8      MDI(-X) status
38362306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL``   u8      MDI(-X) control
38462306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_TRANSCEIVER``    u8      transceiver
38562306a36Sopenharmony_ci  ====================================  ======  ==========================
38662306a36Sopenharmony_ci
38762306a36Sopenharmony_ciAttributes and their values have the same meaning as matching members of the
38862306a36Sopenharmony_cicorresponding ioctl structures.
38962306a36Sopenharmony_ci
39062306a36Sopenharmony_ci``LINKINFO_GET`` allows dump requests (kernel returns reply message for all
39162306a36Sopenharmony_cidevices supporting the request).
39262306a36Sopenharmony_ci
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ciLINKINFO_SET
39562306a36Sopenharmony_ci============
39662306a36Sopenharmony_ci
39762306a36Sopenharmony_ci``LINKINFO_SET`` request allows setting some of the attributes reported by
39862306a36Sopenharmony_ci``LINKINFO_GET``.
39962306a36Sopenharmony_ci
40062306a36Sopenharmony_ciRequest contents:
40162306a36Sopenharmony_ci
40262306a36Sopenharmony_ci  ====================================  ======  ==========================
40362306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_HEADER``         nested  request header
40462306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_PORT``           u8      physical port
40562306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_PHYADDR``        u8      phy MDIO address
40662306a36Sopenharmony_ci  ``ETHTOOL_A_LINKINFO_TP_MDIX_CTRL``   u8      MDI(-X) control
40762306a36Sopenharmony_ci  ====================================  ======  ==========================
40862306a36Sopenharmony_ci
40962306a36Sopenharmony_ciMDI(-X) status and transceiver cannot be set, request with the corresponding
41062306a36Sopenharmony_ciattributes is rejected.
41162306a36Sopenharmony_ci
41262306a36Sopenharmony_ci
41362306a36Sopenharmony_ciLINKMODES_GET
41462306a36Sopenharmony_ci=============
41562306a36Sopenharmony_ci
41662306a36Sopenharmony_ciRequests link modes (supported, advertised and peer advertised) and related
41762306a36Sopenharmony_ciinformation (autonegotiation status, link speed and duplex) as provided by
41862306a36Sopenharmony_ci``ETHTOOL_GLINKSETTINGS``. The request does not use any attributes.
41962306a36Sopenharmony_ci
42062306a36Sopenharmony_ciRequest contents:
42162306a36Sopenharmony_ci
42262306a36Sopenharmony_ci  ====================================  ======  ==========================
42362306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_HEADER``        nested  request header
42462306a36Sopenharmony_ci  ====================================  ======  ==========================
42562306a36Sopenharmony_ci
42662306a36Sopenharmony_ciKernel response contents:
42762306a36Sopenharmony_ci
42862306a36Sopenharmony_ci  ==========================================  ======  ==========================
42962306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_HEADER``              nested  reply header
43062306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_AUTONEG``             u8      autonegotiation status
43162306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_OURS``                bitset  advertised link modes
43262306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_PEER``                bitset  partner link modes
43362306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_SPEED``               u32     link speed (Mb/s)
43462306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_DUPLEX``              u8      duplex mode
43562306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG``    u8      Master/slave port mode
43662306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE``  u8      Master/slave port state
43762306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_RATE_MATCHING``       u8      PHY rate matching
43862306a36Sopenharmony_ci  ==========================================  ======  ==========================
43962306a36Sopenharmony_ci
44062306a36Sopenharmony_ciFor ``ETHTOOL_A_LINKMODES_OURS``, value represents advertised modes and mask
44162306a36Sopenharmony_cirepresents supported modes. ``ETHTOOL_A_LINKMODES_PEER`` in the reply is a bit
44262306a36Sopenharmony_cilist.
44362306a36Sopenharmony_ci
44462306a36Sopenharmony_ci``LINKMODES_GET`` allows dump requests (kernel returns reply messages for all
44562306a36Sopenharmony_cidevices supporting the request).
44662306a36Sopenharmony_ci
44762306a36Sopenharmony_ci
44862306a36Sopenharmony_ciLINKMODES_SET
44962306a36Sopenharmony_ci=============
45062306a36Sopenharmony_ci
45162306a36Sopenharmony_ciRequest contents:
45262306a36Sopenharmony_ci
45362306a36Sopenharmony_ci  ==========================================  ======  ==========================
45462306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_HEADER``              nested  request header
45562306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_AUTONEG``             u8      autonegotiation status
45662306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_OURS``                bitset  advertised link modes
45762306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_PEER``                bitset  partner link modes
45862306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_SPEED``               u32     link speed (Mb/s)
45962306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_DUPLEX``              u8      duplex mode
46062306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG``    u8      Master/slave port mode
46162306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_RATE_MATCHING``       u8      PHY rate matching
46262306a36Sopenharmony_ci  ``ETHTOOL_A_LINKMODES_LANES``               u32     lanes
46362306a36Sopenharmony_ci  ==========================================  ======  ==========================
46462306a36Sopenharmony_ci
46562306a36Sopenharmony_ci``ETHTOOL_A_LINKMODES_OURS`` bit set allows setting advertised link modes. If
46662306a36Sopenharmony_ciautonegotiation is on (either set now or kept from before), advertised modes
46762306a36Sopenharmony_ciare not changed (no ``ETHTOOL_A_LINKMODES_OURS`` attribute) and at least one
46862306a36Sopenharmony_ciof speed, duplex and lanes is specified, kernel adjusts advertised modes to all
46962306a36Sopenharmony_cisupported modes matching speed, duplex, lanes or all (whatever is specified).
47062306a36Sopenharmony_ciThis autoselection is done on ethtool side with ioctl interface, netlink
47162306a36Sopenharmony_ciinterface is supposed to allow requesting changes without knowing what exactly
47262306a36Sopenharmony_cikernel supports.
47362306a36Sopenharmony_ci
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ciLINKSTATE_GET
47662306a36Sopenharmony_ci=============
47762306a36Sopenharmony_ci
47862306a36Sopenharmony_ciRequests link state information. Link up/down flag (as provided by
47962306a36Sopenharmony_ci``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might
48062306a36Sopenharmony_cibe provided as well. In general, extended state describes reasons for why a port
48162306a36Sopenharmony_ciis down, or why it operates in some non-obvious mode. This request does not have
48262306a36Sopenharmony_ciany attributes.
48362306a36Sopenharmony_ci
48462306a36Sopenharmony_ciRequest contents:
48562306a36Sopenharmony_ci
48662306a36Sopenharmony_ci  ====================================  ======  ==========================
48762306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_HEADER``        nested  request header
48862306a36Sopenharmony_ci  ====================================  ======  ==========================
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_ciKernel response contents:
49162306a36Sopenharmony_ci
49262306a36Sopenharmony_ci  ====================================  ======  ============================
49362306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_HEADER``        nested  reply header
49462306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_LINK``          bool    link state (up/down)
49562306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_SQI``           u32     Current Signal Quality Index
49662306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_SQI_MAX``       u32     Max support SQI value
49762306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_EXT_STATE``     u8      link extended state
49862306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``  u8      link extended substate
49962306a36Sopenharmony_ci  ``ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT``  u32     count of link down events
50062306a36Sopenharmony_ci  ====================================  ======  ============================
50162306a36Sopenharmony_ci
50262306a36Sopenharmony_ciFor most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns
50362306a36Sopenharmony_cicarrier flag provided by ``netif_carrier_ok()`` but there are drivers which
50462306a36Sopenharmony_cidefine their own handler.
50562306a36Sopenharmony_ci
50662306a36Sopenharmony_ci``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are
50762306a36Sopenharmony_cioptional values. ethtool core can provide either both
50862306a36Sopenharmony_ci``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``,
50962306a36Sopenharmony_cior only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them.
51062306a36Sopenharmony_ci
51162306a36Sopenharmony_ci``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all
51262306a36Sopenharmony_cidevices supporting the request).
51362306a36Sopenharmony_ci
51462306a36Sopenharmony_ci
51562306a36Sopenharmony_ciLink extended states:
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_ci  ================================================      ============================================
51862306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_AUTONEG``                    States relating to the autonegotiation or
51962306a36Sopenharmony_ci                                                        issues therein
52062306a36Sopenharmony_ci
52162306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE``      Failure during link training
52262306a36Sopenharmony_ci
52362306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH``      Logical mismatch in physical coding sublayer
52462306a36Sopenharmony_ci                                                        or forward error correction sublayer
52562306a36Sopenharmony_ci
52662306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY``       Signal integrity issues
52762306a36Sopenharmony_ci
52862306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_NO_CABLE``                   No cable connected
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE``                Failure is related to cable,
53162306a36Sopenharmony_ci                                                        e.g., unsupported cable
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE``               Failure is related to EEPROM, e.g., failure
53462306a36Sopenharmony_ci                                                        during reading or parsing the data
53562306a36Sopenharmony_ci
53662306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE``        Failure during calibration algorithm
53762306a36Sopenharmony_ci
53862306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED``      The hardware is not able to provide the
53962306a36Sopenharmony_ci                                                        power required from cable or module
54062306a36Sopenharmony_ci
54162306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_OVERHEAT``                   The module is overheated
54262306a36Sopenharmony_ci
54362306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_STATE_MODULE``                     Transceiver module issue
54462306a36Sopenharmony_ci  ================================================      ============================================
54562306a36Sopenharmony_ci
54662306a36Sopenharmony_ciLink extended substates:
54762306a36Sopenharmony_ci
54862306a36Sopenharmony_ci  Autoneg substates:
54962306a36Sopenharmony_ci
55062306a36Sopenharmony_ci  ===============================================================   ================================
55162306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED``              Peer side is down
55262306a36Sopenharmony_ci
55362306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED``                 Ack not received from peer side
55462306a36Sopenharmony_ci
55562306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED``        Next page exchange failed
55662306a36Sopenharmony_ci
55762306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE``   Peer side is down during force
55862306a36Sopenharmony_ci                                                                    mode or there is no agreement of
55962306a36Sopenharmony_ci                                                                    speed
56062306a36Sopenharmony_ci
56162306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE``     Forward error correction modes
56262306a36Sopenharmony_ci                                                                    in both sides are mismatched
56362306a36Sopenharmony_ci
56462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD``                           No Highest Common Denominator
56562306a36Sopenharmony_ci  ===============================================================   ================================
56662306a36Sopenharmony_ci
56762306a36Sopenharmony_ci  Link training substates:
56862306a36Sopenharmony_ci
56962306a36Sopenharmony_ci  ===========================================================================   ====================
57062306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED``                    Frames were not
57162306a36Sopenharmony_ci                                                                                 recognized, the
57262306a36Sopenharmony_ci                                                                                 lock failed
57362306a36Sopenharmony_ci
57462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT``                       The lock did not
57562306a36Sopenharmony_ci                                                                                 occur before
57662306a36Sopenharmony_ci                                                                                 timeout
57762306a36Sopenharmony_ci
57862306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY``    Peer side did not
57962306a36Sopenharmony_ci                                                                                 send ready signal
58062306a36Sopenharmony_ci                                                                                 after training
58162306a36Sopenharmony_ci                                                                                 process
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT``                                  Remote side is not
58462306a36Sopenharmony_ci                                                                                 ready yet
58562306a36Sopenharmony_ci  ===========================================================================   ====================
58662306a36Sopenharmony_ci
58762306a36Sopenharmony_ci  Link logical mismatch substates:
58862306a36Sopenharmony_ci
58962306a36Sopenharmony_ci  ================================================================   ===============================
59062306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK``   Physical coding sublayer was
59162306a36Sopenharmony_ci                                                                     not locked in first phase -
59262306a36Sopenharmony_ci                                                                     block lock
59362306a36Sopenharmony_ci
59462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK``      Physical coding sublayer was
59562306a36Sopenharmony_ci                                                                     not locked in second phase -
59662306a36Sopenharmony_ci                                                                     alignment markers lock
59762306a36Sopenharmony_ci
59862306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS``     Physical coding sublayer did
59962306a36Sopenharmony_ci                                                                     not get align status
60062306a36Sopenharmony_ci
60162306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED``             FC forward error correction is
60262306a36Sopenharmony_ci                                                                     not locked
60362306a36Sopenharmony_ci
60462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED``             RS forward error correction is
60562306a36Sopenharmony_ci                                                                     not locked
60662306a36Sopenharmony_ci  ================================================================   ===============================
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ci  Bad signal integrity substates:
60962306a36Sopenharmony_ci
61062306a36Sopenharmony_ci  =================================================================    =============================
61162306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS``    Large number of physical
61262306a36Sopenharmony_ci                                                                       errors
61362306a36Sopenharmony_ci
61462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE``                   The system attempted to
61562306a36Sopenharmony_ci                                                                       operate the cable at a rate
61662306a36Sopenharmony_ci                                                                       that is not formally
61762306a36Sopenharmony_ci                                                                       supported, which led to
61862306a36Sopenharmony_ci                                                                       signal integrity issues
61962306a36Sopenharmony_ci
62062306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_REFERENCE_CLOCK_LOST``        The external clock signal for
62162306a36Sopenharmony_ci                                                                       SerDes is too weak or
62262306a36Sopenharmony_ci                                                                       unavailable.
62362306a36Sopenharmony_ci
62462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_SERDES_ALOS``                        The received signal for
62562306a36Sopenharmony_ci                                                                       SerDes is too weak because
62662306a36Sopenharmony_ci                                                                       analog loss of signal.
62762306a36Sopenharmony_ci  =================================================================    =============================
62862306a36Sopenharmony_ci
62962306a36Sopenharmony_ci  Cable issue substates:
63062306a36Sopenharmony_ci
63162306a36Sopenharmony_ci  ===================================================   ============================================
63262306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE``    Unsupported cable
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE``   Cable test failure
63562306a36Sopenharmony_ci  ===================================================   ============================================
63662306a36Sopenharmony_ci
63762306a36Sopenharmony_ci  Transceiver module issue substates:
63862306a36Sopenharmony_ci
63962306a36Sopenharmony_ci  ===================================================   ============================================
64062306a36Sopenharmony_ci  ``ETHTOOL_LINK_EXT_SUBSTATE_MODULE_CMIS_NOT_READY``   The CMIS Module State Machine did not reach
64162306a36Sopenharmony_ci                                                        the ModuleReady state. For example, if the
64262306a36Sopenharmony_ci                                                        module is stuck at ModuleFault state
64362306a36Sopenharmony_ci  ===================================================   ============================================
64462306a36Sopenharmony_ci
64562306a36Sopenharmony_ciDEBUG_GET
64662306a36Sopenharmony_ci=========
64762306a36Sopenharmony_ci
64862306a36Sopenharmony_ciRequests debugging settings of a device. At the moment, only message mask is
64962306a36Sopenharmony_ciprovided.
65062306a36Sopenharmony_ci
65162306a36Sopenharmony_ciRequest contents:
65262306a36Sopenharmony_ci
65362306a36Sopenharmony_ci  ====================================  ======  ==========================
65462306a36Sopenharmony_ci  ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
65562306a36Sopenharmony_ci  ====================================  ======  ==========================
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ciKernel response contents:
65862306a36Sopenharmony_ci
65962306a36Sopenharmony_ci  ====================================  ======  ==========================
66062306a36Sopenharmony_ci  ``ETHTOOL_A_DEBUG_HEADER``            nested  reply header
66162306a36Sopenharmony_ci  ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
66262306a36Sopenharmony_ci  ====================================  ======  ==========================
66362306a36Sopenharmony_ci
66462306a36Sopenharmony_ciThe message mask (``ETHTOOL_A_DEBUG_MSGMASK``) is equal to message level as
66562306a36Sopenharmony_ciprovided by ``ETHTOOL_GMSGLVL`` and set by ``ETHTOOL_SMSGLVL`` in ioctl
66662306a36Sopenharmony_ciinterface. While it is called message level there for historical reasons, most
66762306a36Sopenharmony_cidrivers and almost all newer drivers use it as a mask of enabled message
66862306a36Sopenharmony_ciclasses (represented by ``NETIF_MSG_*`` constants); therefore netlink
66962306a36Sopenharmony_ciinterface follows its actual use in practice.
67062306a36Sopenharmony_ci
67162306a36Sopenharmony_ci``DEBUG_GET`` allows dump requests (kernel returns reply messages for all
67262306a36Sopenharmony_cidevices supporting the request).
67362306a36Sopenharmony_ci
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_ciDEBUG_SET
67662306a36Sopenharmony_ci=========
67762306a36Sopenharmony_ci
67862306a36Sopenharmony_ciSet or update debugging settings of a device. At the moment, only message mask
67962306a36Sopenharmony_ciis supported.
68062306a36Sopenharmony_ci
68162306a36Sopenharmony_ciRequest contents:
68262306a36Sopenharmony_ci
68362306a36Sopenharmony_ci  ====================================  ======  ==========================
68462306a36Sopenharmony_ci  ``ETHTOOL_A_DEBUG_HEADER``            nested  request header
68562306a36Sopenharmony_ci  ``ETHTOOL_A_DEBUG_MSGMASK``           bitset  message mask
68662306a36Sopenharmony_ci  ====================================  ======  ==========================
68762306a36Sopenharmony_ci
68862306a36Sopenharmony_ci``ETHTOOL_A_DEBUG_MSGMASK`` bit set allows setting or modifying mask of
68962306a36Sopenharmony_cienabled debugging message types for the device.
69062306a36Sopenharmony_ci
69162306a36Sopenharmony_ci
69262306a36Sopenharmony_ciWOL_GET
69362306a36Sopenharmony_ci=======
69462306a36Sopenharmony_ci
69562306a36Sopenharmony_ciQuery device wake-on-lan settings. Unlike most "GET" type requests,
69662306a36Sopenharmony_ci``ETHTOOL_MSG_WOL_GET`` requires (netns) ``CAP_NET_ADMIN`` privileges as it
69762306a36Sopenharmony_ci(potentially) provides SecureOn(tm) password which is confidential.
69862306a36Sopenharmony_ci
69962306a36Sopenharmony_ciRequest contents:
70062306a36Sopenharmony_ci
70162306a36Sopenharmony_ci  ====================================  ======  ==========================
70262306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_HEADER``              nested  request header
70362306a36Sopenharmony_ci  ====================================  ======  ==========================
70462306a36Sopenharmony_ci
70562306a36Sopenharmony_ciKernel response contents:
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_ci  ====================================  ======  ==========================
70862306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_HEADER``              nested  reply header
70962306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_MODES``               bitset  mask of enabled WoL modes
71062306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_SOPASS``              binary  SecureOn(tm) password
71162306a36Sopenharmony_ci  ====================================  ======  ==========================
71262306a36Sopenharmony_ci
71362306a36Sopenharmony_ciIn reply, ``ETHTOOL_A_WOL_MODES`` mask consists of modes supported by the
71462306a36Sopenharmony_cidevice, value of modes which are enabled. ``ETHTOOL_A_WOL_SOPASS`` is only
71562306a36Sopenharmony_ciincluded in reply if ``WAKE_MAGICSECURE`` mode is supported.
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_ci
71862306a36Sopenharmony_ciWOL_SET
71962306a36Sopenharmony_ci=======
72062306a36Sopenharmony_ci
72162306a36Sopenharmony_ciSet or update wake-on-lan settings.
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_ciRequest contents:
72462306a36Sopenharmony_ci
72562306a36Sopenharmony_ci  ====================================  ======  ==========================
72662306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_HEADER``              nested  request header
72762306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_MODES``               bitset  enabled WoL modes
72862306a36Sopenharmony_ci  ``ETHTOOL_A_WOL_SOPASS``              binary  SecureOn(tm) password
72962306a36Sopenharmony_ci  ====================================  ======  ==========================
73062306a36Sopenharmony_ci
73162306a36Sopenharmony_ci``ETHTOOL_A_WOL_SOPASS`` is only allowed for devices supporting
73262306a36Sopenharmony_ci``WAKE_MAGICSECURE`` mode.
73362306a36Sopenharmony_ci
73462306a36Sopenharmony_ci
73562306a36Sopenharmony_ciFEATURES_GET
73662306a36Sopenharmony_ci============
73762306a36Sopenharmony_ci
73862306a36Sopenharmony_ciGets netdev features like ``ETHTOOL_GFEATURES`` ioctl request.
73962306a36Sopenharmony_ci
74062306a36Sopenharmony_ciRequest contents:
74162306a36Sopenharmony_ci
74262306a36Sopenharmony_ci  ====================================  ======  ==========================
74362306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
74462306a36Sopenharmony_ci  ====================================  ======  ==========================
74562306a36Sopenharmony_ci
74662306a36Sopenharmony_ciKernel response contents:
74762306a36Sopenharmony_ci
74862306a36Sopenharmony_ci  ====================================  ======  ==========================
74962306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_HEADER``         nested  reply header
75062306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_HW``             bitset  dev->hw_features
75162306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_WANTED``         bitset  dev->wanted_features
75262306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_ACTIVE``         bitset  dev->features
75362306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_NOCHANGE``       bitset  NETIF_F_NEVER_CHANGE
75462306a36Sopenharmony_ci  ====================================  ======  ==========================
75562306a36Sopenharmony_ci
75662306a36Sopenharmony_ciBitmaps in kernel response have the same meaning as bitmaps used in ioctl
75762306a36Sopenharmony_ciinterference but attribute names are different (they are based on
75862306a36Sopenharmony_cicorresponding members of struct net_device). Legacy "flags" are not provided,
75962306a36Sopenharmony_ciif userspace needs them (most likely only ethtool for backward compatibility),
76062306a36Sopenharmony_ciit can calculate their values from related feature bits itself.
76162306a36Sopenharmony_ciETHA_FEATURES_HW uses mask consisting of all features recognized by kernel (to
76262306a36Sopenharmony_ciprovide all names when using verbose bitmap format), the other three use no
76362306a36Sopenharmony_cimask (simple bit lists).
76462306a36Sopenharmony_ci
76562306a36Sopenharmony_ci
76662306a36Sopenharmony_ciFEATURES_SET
76762306a36Sopenharmony_ci============
76862306a36Sopenharmony_ci
76962306a36Sopenharmony_ciRequest to set netdev features like ``ETHTOOL_SFEATURES`` ioctl request.
77062306a36Sopenharmony_ci
77162306a36Sopenharmony_ciRequest contents:
77262306a36Sopenharmony_ci
77362306a36Sopenharmony_ci  ====================================  ======  ==========================
77462306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_HEADER``         nested  request header
77562306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_WANTED``         bitset  requested features
77662306a36Sopenharmony_ci  ====================================  ======  ==========================
77762306a36Sopenharmony_ci
77862306a36Sopenharmony_ciKernel response contents:
77962306a36Sopenharmony_ci
78062306a36Sopenharmony_ci  ====================================  ======  ==========================
78162306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_HEADER``         nested  reply header
78262306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_WANTED``         bitset  diff wanted vs. result
78362306a36Sopenharmony_ci  ``ETHTOOL_A_FEATURES_ACTIVE``         bitset  diff old vs. new active
78462306a36Sopenharmony_ci  ====================================  ======  ==========================
78562306a36Sopenharmony_ci
78662306a36Sopenharmony_ciRequest contains only one bitset which can be either value/mask pair (request
78762306a36Sopenharmony_cito change specific feature bits and leave the rest) or only a value (request
78862306a36Sopenharmony_cito set all features to specified set).
78962306a36Sopenharmony_ci
79062306a36Sopenharmony_ciAs request is subject to netdev_change_features() sanity checks, optional
79162306a36Sopenharmony_cikernel reply (can be suppressed by ``ETHTOOL_FLAG_OMIT_REPLY`` flag in request
79262306a36Sopenharmony_ciheader) informs client about the actual result. ``ETHTOOL_A_FEATURES_WANTED``
79362306a36Sopenharmony_cireports the difference between client request and actual result: mask consists
79462306a36Sopenharmony_ciof bits which differ between requested features and result (dev->features
79562306a36Sopenharmony_ciafter the operation), value consists of values of these bits in the request
79662306a36Sopenharmony_ci(i.e. negated values from resulting features). ``ETHTOOL_A_FEATURES_ACTIVE``
79762306a36Sopenharmony_cireports the difference between old and new dev->features: mask consists of
79862306a36Sopenharmony_cibits which have changed, values are their values in new dev->features (after
79962306a36Sopenharmony_cithe operation).
80062306a36Sopenharmony_ci
80162306a36Sopenharmony_ci``ETHTOOL_MSG_FEATURES_NTF`` notification is sent not only if device features
80262306a36Sopenharmony_ciare modified using ``ETHTOOL_MSG_FEATURES_SET`` request or on of ethtool ioctl
80362306a36Sopenharmony_cirequest but also each time features are modified with netdev_update_features()
80462306a36Sopenharmony_cior netdev_change_features().
80562306a36Sopenharmony_ci
80662306a36Sopenharmony_ci
80762306a36Sopenharmony_ciPRIVFLAGS_GET
80862306a36Sopenharmony_ci=============
80962306a36Sopenharmony_ci
81062306a36Sopenharmony_ciGets private flags like ``ETHTOOL_GPFLAGS`` ioctl request.
81162306a36Sopenharmony_ci
81262306a36Sopenharmony_ciRequest contents:
81362306a36Sopenharmony_ci
81462306a36Sopenharmony_ci  ====================================  ======  ==========================
81562306a36Sopenharmony_ci  ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
81662306a36Sopenharmony_ci  ====================================  ======  ==========================
81762306a36Sopenharmony_ci
81862306a36Sopenharmony_ciKernel response contents:
81962306a36Sopenharmony_ci
82062306a36Sopenharmony_ci  ====================================  ======  ==========================
82162306a36Sopenharmony_ci  ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  reply header
82262306a36Sopenharmony_ci  ``ETHTOOL_A_PRIVFLAGS_FLAGS``         bitset  private flags
82362306a36Sopenharmony_ci  ====================================  ======  ==========================
82462306a36Sopenharmony_ci
82562306a36Sopenharmony_ci``ETHTOOL_A_PRIVFLAGS_FLAGS`` is a bitset with values of device private flags.
82662306a36Sopenharmony_ciThese flags are defined by driver, their number and names (and also meaning)
82762306a36Sopenharmony_ciare device dependent. For compact bitset format, names can be retrieved as
82862306a36Sopenharmony_ci``ETH_SS_PRIV_FLAGS`` string set. If verbose bitset format is requested,
82962306a36Sopenharmony_ciresponse uses all private flags supported by the device as mask so that client
83062306a36Sopenharmony_cigets the full information without having to fetch the string set with names.
83162306a36Sopenharmony_ci
83262306a36Sopenharmony_ci
83362306a36Sopenharmony_ciPRIVFLAGS_SET
83462306a36Sopenharmony_ci=============
83562306a36Sopenharmony_ci
83662306a36Sopenharmony_ciSets or modifies values of device private flags like ``ETHTOOL_SPFLAGS``
83762306a36Sopenharmony_ciioctl request.
83862306a36Sopenharmony_ci
83962306a36Sopenharmony_ciRequest contents:
84062306a36Sopenharmony_ci
84162306a36Sopenharmony_ci  ====================================  ======  ==========================
84262306a36Sopenharmony_ci  ``ETHTOOL_A_PRIVFLAGS_HEADER``        nested  request header
84362306a36Sopenharmony_ci  ``ETHTOOL_A_PRIVFLAGS_FLAGS``         bitset  private flags
84462306a36Sopenharmony_ci  ====================================  ======  ==========================
84562306a36Sopenharmony_ci
84662306a36Sopenharmony_ci``ETHTOOL_A_PRIVFLAGS_FLAGS`` can either set the whole set of private flags or
84762306a36Sopenharmony_cimodify only values of some of them.
84862306a36Sopenharmony_ci
84962306a36Sopenharmony_ci
85062306a36Sopenharmony_ciRINGS_GET
85162306a36Sopenharmony_ci=========
85262306a36Sopenharmony_ci
85362306a36Sopenharmony_ciGets ring sizes like ``ETHTOOL_GRINGPARAM`` ioctl request.
85462306a36Sopenharmony_ci
85562306a36Sopenharmony_ciRequest contents:
85662306a36Sopenharmony_ci
85762306a36Sopenharmony_ci  ====================================  ======  ==========================
85862306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_HEADER``            nested  request header
85962306a36Sopenharmony_ci  ====================================  ======  ==========================
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_ciKernel response contents:
86262306a36Sopenharmony_ci
86362306a36Sopenharmony_ci  =======================================   ======  ===========================
86462306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_HEADER``                nested  reply header
86562306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_MAX``                u32     max size of RX ring
86662306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_MINI_MAX``           u32     max size of RX mini ring
86762306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_JUMBO_MAX``          u32     max size of RX jumbo ring
86862306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX_MAX``                u32     max size of TX ring
86962306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX``                    u32     size of RX ring
87062306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_MINI``               u32     size of RX mini ring
87162306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_JUMBO``              u32     size of RX jumbo ring
87262306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX``                    u32     size of TX ring
87362306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_BUF_LEN``            u32     size of buffers on the ring
87462306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TCP_DATA_SPLIT``        u8      TCP header / data split
87562306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_CQE_SIZE``              u32     Size of TX/RX CQE
87662306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX_PUSH``               u8      flag of TX Push mode
87762306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_PUSH``               u8      flag of RX Push mode
87862306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN``       u32     size of TX push buffer
87962306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX``   u32     max size of TX push buffer
88062306a36Sopenharmony_ci  =======================================   ======  ===========================
88162306a36Sopenharmony_ci
88262306a36Sopenharmony_ci``ETHTOOL_A_RINGS_TCP_DATA_SPLIT`` indicates whether the device is usable with
88362306a36Sopenharmony_cipage-flipping TCP zero-copy receive (``getsockopt(TCP_ZEROCOPY_RECEIVE)``).
88462306a36Sopenharmony_ciIf enabled the device is configured to place frame headers and data into
88562306a36Sopenharmony_ciseparate buffers. The device configuration must make it possible to receive
88662306a36Sopenharmony_cifull memory pages of data, for example because MTU is high enough or through
88762306a36Sopenharmony_ciHW-GRO.
88862306a36Sopenharmony_ci
88962306a36Sopenharmony_ci``ETHTOOL_A_RINGS_[RX|TX]_PUSH`` flag is used to enable descriptor fast
89062306a36Sopenharmony_cipath to send or receive packets. In ordinary path, driver fills descriptors in DRAM and
89162306a36Sopenharmony_cinotifies NIC hardware. In fast path, driver pushes descriptors to the device
89262306a36Sopenharmony_cithrough MMIO writes, thus reducing the latency. However, enabling this feature
89362306a36Sopenharmony_cimay increase the CPU cost. Drivers may enforce additional per-packet
89462306a36Sopenharmony_cieligibility checks (e.g. on packet size).
89562306a36Sopenharmony_ci
89662306a36Sopenharmony_ci``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN`` specifies the maximum number of bytes of a
89762306a36Sopenharmony_citransmitted packet a driver can push directly to the underlying device
89862306a36Sopenharmony_ci('push' mode). Pushing some of the payload bytes to the device has the
89962306a36Sopenharmony_ciadvantages of reducing latency for small packets by avoiding DMA mapping (same
90062306a36Sopenharmony_cias ``ETHTOOL_A_RINGS_TX_PUSH`` parameter) as well as allowing the underlying
90162306a36Sopenharmony_cidevice to process packet headers ahead of fetching its payload.
90262306a36Sopenharmony_ciThis can help the device to make fast actions based on the packet's headers.
90362306a36Sopenharmony_ciThis is similar to the "tx-copybreak" parameter, which copies the packet to a
90462306a36Sopenharmony_cipreallocated DMA memory area instead of mapping new memory. However,
90562306a36Sopenharmony_citx-push-buff parameter copies the packet directly to the device to allow the
90662306a36Sopenharmony_cidevice to take faster actions on the packet.
90762306a36Sopenharmony_ci
90862306a36Sopenharmony_ciRINGS_SET
90962306a36Sopenharmony_ci=========
91062306a36Sopenharmony_ci
91162306a36Sopenharmony_ciSets ring sizes like ``ETHTOOL_SRINGPARAM`` ioctl request.
91262306a36Sopenharmony_ci
91362306a36Sopenharmony_ciRequest contents:
91462306a36Sopenharmony_ci
91562306a36Sopenharmony_ci  ====================================  ======  ===========================
91662306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_HEADER``            nested  reply header
91762306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX``                u32     size of RX ring
91862306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_MINI``           u32     size of RX mini ring
91962306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_JUMBO``          u32     size of RX jumbo ring
92062306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX``                u32     size of TX ring
92162306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_BUF_LEN``        u32     size of buffers on the ring
92262306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_CQE_SIZE``          u32     Size of TX/RX CQE
92362306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX_PUSH``           u8      flag of TX Push mode
92462306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_RX_PUSH``           u8      flag of RX Push mode
92562306a36Sopenharmony_ci  ``ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN``   u32     size of TX push buffer
92662306a36Sopenharmony_ci  ====================================  ======  ===========================
92762306a36Sopenharmony_ci
92862306a36Sopenharmony_ciKernel checks that requested ring sizes do not exceed limits reported by
92962306a36Sopenharmony_cidriver. Driver may impose additional constraints and may not suspport all
93062306a36Sopenharmony_ciattributes.
93162306a36Sopenharmony_ci
93262306a36Sopenharmony_ci
93362306a36Sopenharmony_ci``ETHTOOL_A_RINGS_CQE_SIZE`` specifies the completion queue event size.
93462306a36Sopenharmony_ciCompletion queue events(CQE) are the events posted by NIC to indicate the
93562306a36Sopenharmony_cicompletion status of a packet when the packet is sent(like send success or
93662306a36Sopenharmony_cierror) or received(like pointers to packet fragments). The CQE size parameter
93762306a36Sopenharmony_cienables to modify the CQE size other than default size if NIC supports it.
93862306a36Sopenharmony_ciA bigger CQE can have more receive buffer pointers inturn NIC can transfer
93962306a36Sopenharmony_cia bigger frame from wire. Based on the NIC hardware, the overall completion
94062306a36Sopenharmony_ciqueue size can be adjusted in the driver if CQE size is modified.
94162306a36Sopenharmony_ci
94262306a36Sopenharmony_ciCHANNELS_GET
94362306a36Sopenharmony_ci============
94462306a36Sopenharmony_ci
94562306a36Sopenharmony_ciGets channel counts like ``ETHTOOL_GCHANNELS`` ioctl request.
94662306a36Sopenharmony_ci
94762306a36Sopenharmony_ciRequest contents:
94862306a36Sopenharmony_ci
94962306a36Sopenharmony_ci  ====================================  ======  ==========================
95062306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_HEADER``         nested  request header
95162306a36Sopenharmony_ci  ====================================  ======  ==========================
95262306a36Sopenharmony_ci
95362306a36Sopenharmony_ciKernel response contents:
95462306a36Sopenharmony_ci
95562306a36Sopenharmony_ci  =====================================  ======  ==========================
95662306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_HEADER``          nested  reply header
95762306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_RX_MAX``          u32     max receive channels
95862306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_TX_MAX``          u32     max transmit channels
95962306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_OTHER_MAX``       u32     max other channels
96062306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_COMBINED_MAX``    u32     max combined channels
96162306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_RX_COUNT``        u32     receive channel count
96262306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_TX_COUNT``        u32     transmit channel count
96362306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_OTHER_COUNT``     u32     other channel count
96462306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_COMBINED_COUNT``  u32     combined channel count
96562306a36Sopenharmony_ci  =====================================  ======  ==========================
96662306a36Sopenharmony_ci
96762306a36Sopenharmony_ci
96862306a36Sopenharmony_ciCHANNELS_SET
96962306a36Sopenharmony_ci============
97062306a36Sopenharmony_ci
97162306a36Sopenharmony_ciSets channel counts like ``ETHTOOL_SCHANNELS`` ioctl request.
97262306a36Sopenharmony_ci
97362306a36Sopenharmony_ciRequest contents:
97462306a36Sopenharmony_ci
97562306a36Sopenharmony_ci  =====================================  ======  ==========================
97662306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_HEADER``          nested  request header
97762306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_RX_COUNT``        u32     receive channel count
97862306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_TX_COUNT``        u32     transmit channel count
97962306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_OTHER_COUNT``     u32     other channel count
98062306a36Sopenharmony_ci  ``ETHTOOL_A_CHANNELS_COMBINED_COUNT``  u32     combined channel count
98162306a36Sopenharmony_ci  =====================================  ======  ==========================
98262306a36Sopenharmony_ci
98362306a36Sopenharmony_ciKernel checks that requested channel counts do not exceed limits reported by
98462306a36Sopenharmony_cidriver. Driver may impose additional constraints and may not suspport all
98562306a36Sopenharmony_ciattributes.
98662306a36Sopenharmony_ci
98762306a36Sopenharmony_ci
98862306a36Sopenharmony_ciCOALESCE_GET
98962306a36Sopenharmony_ci============
99062306a36Sopenharmony_ci
99162306a36Sopenharmony_ciGets coalescing parameters like ``ETHTOOL_GCOALESCE`` ioctl request.
99262306a36Sopenharmony_ci
99362306a36Sopenharmony_ciRequest contents:
99462306a36Sopenharmony_ci
99562306a36Sopenharmony_ci  ====================================  ======  ==========================
99662306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_HEADER``         nested  request header
99762306a36Sopenharmony_ci  ====================================  ======  ==========================
99862306a36Sopenharmony_ci
99962306a36Sopenharmony_ciKernel response contents:
100062306a36Sopenharmony_ci
100162306a36Sopenharmony_ci  ===========================================  ======  =======================
100262306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_HEADER``                nested  reply header
100362306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS``              u32     delay (us), normal Rx
100462306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES``         u32     max packets, normal Rx
100562306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS_IRQ``          u32     delay (us), Rx in IRQ
100662306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ``     u32     max packets, Rx in IRQ
100762306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS``              u32     delay (us), normal Tx
100862306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES``         u32     max packets, normal Tx
100962306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS_IRQ``          u32     delay (us), Tx in IRQ
101062306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ``     u32     IRQ packets, Tx in IRQ
101162306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS``     u32     delay of stats update
101262306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX``       bool    adaptive Rx coalesce
101362306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX``       bool    adaptive Tx coalesce
101462306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_PKT_RATE_LOW``          u32     threshold for low rate
101562306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS_LOW``          u32     delay (us), low Rx
101662306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW``     u32     max packets, low Rx
101762306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS_LOW``          u32     delay (us), low Tx
101862306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW``     u32     max packets, low Tx
101962306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH``         u32     threshold for high rate
102062306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS_HIGH``         u32     delay (us), high Rx
102162306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH``    u32     max packets, high Rx
102262306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS_HIGH``         u32     delay (us), high Tx
102362306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH``    u32     max packets, high Tx
102462306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL``  u32     rate sampling interval
102562306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_CQE_TX``            bool    timer reset mode, Tx
102662306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_CQE_RX``            bool    timer reset mode, Rx
102762306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``     u32     max aggr size, Tx
102862306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES``    u32     max aggr packets, Tx
102962306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS``    u32     time (us), aggr, Tx
103062306a36Sopenharmony_ci  ===========================================  ======  =======================
103162306a36Sopenharmony_ci
103262306a36Sopenharmony_ciAttributes are only included in reply if their value is not zero or the
103362306a36Sopenharmony_cicorresponding bit in ``ethtool_ops::supported_coalesce_params`` is set (i.e.
103462306a36Sopenharmony_cithey are declared as supported by driver).
103562306a36Sopenharmony_ci
103662306a36Sopenharmony_ciTimer reset mode (``ETHTOOL_A_COALESCE_USE_CQE_TX`` and
103762306a36Sopenharmony_ci``ETHTOOL_A_COALESCE_USE_CQE_RX``) controls the interaction between packet
103862306a36Sopenharmony_ciarrival and the various time based delay parameters. By default timers are
103962306a36Sopenharmony_ciexpected to limit the max delay between any packet arrival/departure and a
104062306a36Sopenharmony_cicorresponding interrupt. In this mode timer should be started by packet
104162306a36Sopenharmony_ciarrival (sometimes delivery of previous interrupt) and reset when interrupt
104262306a36Sopenharmony_ciis delivered.
104362306a36Sopenharmony_ciSetting the appropriate attribute to 1 will enable ``CQE`` mode, where
104462306a36Sopenharmony_cieach packet event resets the timer. In this mode timer is used to force
104562306a36Sopenharmony_cithe interrupt if queue goes idle, while busy queues depend on the packet
104662306a36Sopenharmony_cilimit to trigger interrupts.
104762306a36Sopenharmony_ci
104862306a36Sopenharmony_ciTx aggregation consists of copying frames into a contiguous buffer so that they
104962306a36Sopenharmony_cican be submitted as a single IO operation. ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``
105062306a36Sopenharmony_cidescribes the maximum size in bytes for the submitted buffer.
105162306a36Sopenharmony_ci``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES`` describes the maximum number of frames
105262306a36Sopenharmony_cithat can be aggregated into a single buffer.
105362306a36Sopenharmony_ci``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS`` describes the amount of time in usecs,
105462306a36Sopenharmony_cicounted since the first packet arrival in an aggregated block, after which the
105562306a36Sopenharmony_ciblock should be sent.
105662306a36Sopenharmony_ciThis feature is mainly of interest for specific USB devices which does not cope
105762306a36Sopenharmony_ciwell with frequent small-sized URBs transmissions.
105862306a36Sopenharmony_ci
105962306a36Sopenharmony_ciCOALESCE_SET
106062306a36Sopenharmony_ci============
106162306a36Sopenharmony_ci
106262306a36Sopenharmony_ciSets coalescing parameters like ``ETHTOOL_SCOALESCE`` ioctl request.
106362306a36Sopenharmony_ci
106462306a36Sopenharmony_ciRequest contents:
106562306a36Sopenharmony_ci
106662306a36Sopenharmony_ci  ===========================================  ======  =======================
106762306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_HEADER``                nested  request header
106862306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS``              u32     delay (us), normal Rx
106962306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES``         u32     max packets, normal Rx
107062306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS_IRQ``          u32     delay (us), Rx in IRQ
107162306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ``     u32     max packets, Rx in IRQ
107262306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS``              u32     delay (us), normal Tx
107362306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES``         u32     max packets, normal Tx
107462306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS_IRQ``          u32     delay (us), Tx in IRQ
107562306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ``     u32     IRQ packets, Tx in IRQ
107662306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_STATS_BLOCK_USECS``     u32     delay of stats update
107762306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX``       bool    adaptive Rx coalesce
107862306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX``       bool    adaptive Tx coalesce
107962306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_PKT_RATE_LOW``          u32     threshold for low rate
108062306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS_LOW``          u32     delay (us), low Rx
108162306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW``     u32     max packets, low Rx
108262306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS_LOW``          u32     delay (us), low Tx
108362306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW``     u32     max packets, low Tx
108462306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_PKT_RATE_HIGH``         u32     threshold for high rate
108562306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_USECS_HIGH``         u32     delay (us), high Rx
108662306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH``    u32     max packets, high Rx
108762306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_USECS_HIGH``         u32     delay (us), high Tx
108862306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH``    u32     max packets, high Tx
108962306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL``  u32     rate sampling interval
109062306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_CQE_TX``            bool    timer reset mode, Tx
109162306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_USE_CQE_RX``            bool    timer reset mode, Rx
109262306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_BYTES``     u32     max aggr size, Tx
109362306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_AGGR_MAX_FRAMES``    u32     max aggr packets, Tx
109462306a36Sopenharmony_ci  ``ETHTOOL_A_COALESCE_TX_AGGR_TIME_USECS``    u32     time (us), aggr, Tx
109562306a36Sopenharmony_ci  ===========================================  ======  =======================
109662306a36Sopenharmony_ci
109762306a36Sopenharmony_ciRequest is rejected if it attributes declared as unsupported by driver (i.e.
109862306a36Sopenharmony_cisuch that the corresponding bit in ``ethtool_ops::supported_coalesce_params``
109962306a36Sopenharmony_ciis not set), regardless of their values. Driver may impose additional
110062306a36Sopenharmony_ciconstraints on coalescing parameters and their values.
110162306a36Sopenharmony_ci
110262306a36Sopenharmony_ciCompared to requests issued via the ``ioctl()`` netlink version of this request
110362306a36Sopenharmony_ciwill try harder to make sure that values specified by the user have been applied
110462306a36Sopenharmony_ciand may call the driver twice.
110562306a36Sopenharmony_ci
110662306a36Sopenharmony_ci
110762306a36Sopenharmony_ciPAUSE_GET
110862306a36Sopenharmony_ci=========
110962306a36Sopenharmony_ci
111062306a36Sopenharmony_ciGets pause frame settings like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
111162306a36Sopenharmony_ci
111262306a36Sopenharmony_ciRequest contents:
111362306a36Sopenharmony_ci
111462306a36Sopenharmony_ci  =====================================  ======  ==========================
111562306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
111662306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_STATS_SRC``          u32     source of statistics
111762306a36Sopenharmony_ci  =====================================  ======  ==========================
111862306a36Sopenharmony_ci
111962306a36Sopenharmony_ci``ETHTOOL_A_PAUSE_STATS_SRC`` is optional. It takes values from:
112062306a36Sopenharmony_ci
112162306a36Sopenharmony_ci.. kernel-doc:: include/uapi/linux/ethtool.h
112262306a36Sopenharmony_ci    :identifiers: ethtool_mac_stats_src
112362306a36Sopenharmony_ci
112462306a36Sopenharmony_ciIf absent from the request, stats will be provided with
112562306a36Sopenharmony_cian ``ETHTOOL_A_PAUSE_STATS_SRC`` attribute in the response equal to
112662306a36Sopenharmony_ci``ETHTOOL_MAC_STATS_SRC_AGGREGATE``.
112762306a36Sopenharmony_ci
112862306a36Sopenharmony_ciKernel response contents:
112962306a36Sopenharmony_ci
113062306a36Sopenharmony_ci  =====================================  ======  ==========================
113162306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
113262306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_AUTONEG``            bool    pause autonegotiation
113362306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_RX``                 bool    receive pause frames
113462306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_TX``                 bool    transmit pause frames
113562306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_STATS``              nested  pause statistics
113662306a36Sopenharmony_ci  =====================================  ======  ==========================
113762306a36Sopenharmony_ci
113862306a36Sopenharmony_ci``ETHTOOL_A_PAUSE_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set
113962306a36Sopenharmony_ciin ``ETHTOOL_A_HEADER_FLAGS``.
114062306a36Sopenharmony_ciIt will be empty if driver did not report any statistics. Drivers fill in
114162306a36Sopenharmony_cithe statistics in the following structure:
114262306a36Sopenharmony_ci
114362306a36Sopenharmony_ci.. kernel-doc:: include/linux/ethtool.h
114462306a36Sopenharmony_ci    :identifiers: ethtool_pause_stats
114562306a36Sopenharmony_ci
114662306a36Sopenharmony_ciEach member has a corresponding attribute defined.
114762306a36Sopenharmony_ci
114862306a36Sopenharmony_ciPAUSE_SET
114962306a36Sopenharmony_ci=========
115062306a36Sopenharmony_ci
115162306a36Sopenharmony_ciSets pause parameters like ``ETHTOOL_GPAUSEPARAM`` ioctl request.
115262306a36Sopenharmony_ci
115362306a36Sopenharmony_ciRequest contents:
115462306a36Sopenharmony_ci
115562306a36Sopenharmony_ci  =====================================  ======  ==========================
115662306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_HEADER``             nested  request header
115762306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_AUTONEG``            bool    pause autonegotiation
115862306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_RX``                 bool    receive pause frames
115962306a36Sopenharmony_ci  ``ETHTOOL_A_PAUSE_TX``                 bool    transmit pause frames
116062306a36Sopenharmony_ci  =====================================  ======  ==========================
116162306a36Sopenharmony_ci
116262306a36Sopenharmony_ci
116362306a36Sopenharmony_ciEEE_GET
116462306a36Sopenharmony_ci=======
116562306a36Sopenharmony_ci
116662306a36Sopenharmony_ciGets Energy Efficient Ethernet settings like ``ETHTOOL_GEEE`` ioctl request.
116762306a36Sopenharmony_ci
116862306a36Sopenharmony_ciRequest contents:
116962306a36Sopenharmony_ci
117062306a36Sopenharmony_ci  =====================================  ======  ==========================
117162306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_HEADER``               nested  request header
117262306a36Sopenharmony_ci  =====================================  ======  ==========================
117362306a36Sopenharmony_ci
117462306a36Sopenharmony_ciKernel response contents:
117562306a36Sopenharmony_ci
117662306a36Sopenharmony_ci  =====================================  ======  ==========================
117762306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_HEADER``               nested  request header
117862306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_MODES_OURS``           bool    supported/advertised modes
117962306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_MODES_PEER``           bool    peer advertised link modes
118062306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_ACTIVE``               bool    EEE is actively used
118162306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_ENABLED``              bool    EEE is enabled
118262306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_TX_LPI_ENABLED``       bool    Tx lpi enabled
118362306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_TX_LPI_TIMER``         u32     Tx lpi timeout (in us)
118462306a36Sopenharmony_ci  =====================================  ======  ==========================
118562306a36Sopenharmony_ci
118662306a36Sopenharmony_ciIn ``ETHTOOL_A_EEE_MODES_OURS``, mask consists of link modes for which EEE is
118762306a36Sopenharmony_cienabled, value of link modes for which EEE is advertised. Link modes for which
118862306a36Sopenharmony_cipeer advertises EEE are listed in ``ETHTOOL_A_EEE_MODES_PEER`` (no mask). The
118962306a36Sopenharmony_cinetlink interface allows reporting EEE status for all link modes but only
119062306a36Sopenharmony_cifirst 32 are provided by the ``ethtool_ops`` callback.
119162306a36Sopenharmony_ci
119262306a36Sopenharmony_ci
119362306a36Sopenharmony_ciEEE_SET
119462306a36Sopenharmony_ci=======
119562306a36Sopenharmony_ci
119662306a36Sopenharmony_ciSets Energy Efficient Ethernet parameters like ``ETHTOOL_SEEE`` ioctl request.
119762306a36Sopenharmony_ci
119862306a36Sopenharmony_ciRequest contents:
119962306a36Sopenharmony_ci
120062306a36Sopenharmony_ci  =====================================  ======  ==========================
120162306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_HEADER``               nested  request header
120262306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_MODES_OURS``           bool    advertised modes
120362306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_ENABLED``              bool    EEE is enabled
120462306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_TX_LPI_ENABLED``       bool    Tx lpi enabled
120562306a36Sopenharmony_ci  ``ETHTOOL_A_EEE_TX_LPI_TIMER``         u32     Tx lpi timeout (in us)
120662306a36Sopenharmony_ci  =====================================  ======  ==========================
120762306a36Sopenharmony_ci
120862306a36Sopenharmony_ci``ETHTOOL_A_EEE_MODES_OURS`` is used to either list link modes to advertise
120962306a36Sopenharmony_ciEEE for (if there is no mask) or specify changes to the list (if there is
121062306a36Sopenharmony_cia mask). The netlink interface allows reporting EEE status for all link modes
121162306a36Sopenharmony_cibut only first 32 can be set at the moment as that is what the ``ethtool_ops``
121262306a36Sopenharmony_cicallback supports.
121362306a36Sopenharmony_ci
121462306a36Sopenharmony_ci
121562306a36Sopenharmony_ciTSINFO_GET
121662306a36Sopenharmony_ci==========
121762306a36Sopenharmony_ci
121862306a36Sopenharmony_ciGets timestamping information like ``ETHTOOL_GET_TS_INFO`` ioctl request.
121962306a36Sopenharmony_ci
122062306a36Sopenharmony_ciRequest contents:
122162306a36Sopenharmony_ci
122262306a36Sopenharmony_ci  =====================================  ======  ==========================
122362306a36Sopenharmony_ci  ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
122462306a36Sopenharmony_ci  =====================================  ======  ==========================
122562306a36Sopenharmony_ci
122662306a36Sopenharmony_ciKernel response contents:
122762306a36Sopenharmony_ci
122862306a36Sopenharmony_ci  =====================================  ======  ==========================
122962306a36Sopenharmony_ci  ``ETHTOOL_A_TSINFO_HEADER``            nested  request header
123062306a36Sopenharmony_ci  ``ETHTOOL_A_TSINFO_TIMESTAMPING``      bitset  SO_TIMESTAMPING flags
123162306a36Sopenharmony_ci  ``ETHTOOL_A_TSINFO_TX_TYPES``          bitset  supported Tx types
123262306a36Sopenharmony_ci  ``ETHTOOL_A_TSINFO_RX_FILTERS``        bitset  supported Rx filters
123362306a36Sopenharmony_ci  ``ETHTOOL_A_TSINFO_PHC_INDEX``         u32     PTP hw clock index
123462306a36Sopenharmony_ci  =====================================  ======  ==========================
123562306a36Sopenharmony_ci
123662306a36Sopenharmony_ci``ETHTOOL_A_TSINFO_PHC_INDEX`` is absent if there is no associated PHC (there
123762306a36Sopenharmony_ciis no special value for this case). The bitset attributes are omitted if they
123862306a36Sopenharmony_ciwould be empty (no bit set).
123962306a36Sopenharmony_ci
124062306a36Sopenharmony_ciCABLE_TEST
124162306a36Sopenharmony_ci==========
124262306a36Sopenharmony_ci
124362306a36Sopenharmony_ciStart a cable test.
124462306a36Sopenharmony_ci
124562306a36Sopenharmony_ciRequest contents:
124662306a36Sopenharmony_ci
124762306a36Sopenharmony_ci  ====================================  ======  ==========================
124862306a36Sopenharmony_ci  ``ETHTOOL_A_CABLE_TEST_HEADER``       nested  request header
124962306a36Sopenharmony_ci  ====================================  ======  ==========================
125062306a36Sopenharmony_ci
125162306a36Sopenharmony_ciNotification contents:
125262306a36Sopenharmony_ci
125362306a36Sopenharmony_ciAn Ethernet cable typically contains 1, 2 or 4 pairs. The length of
125462306a36Sopenharmony_cithe pair can only be measured when there is a fault in the pair and
125562306a36Sopenharmony_cihence a reflection. Information about the fault may not be available,
125662306a36Sopenharmony_cidepending on the specific hardware. Hence the contents of the notify
125762306a36Sopenharmony_cimessage are mostly optional. The attributes can be repeated an
125862306a36Sopenharmony_ciarbitrary number of times, in an arbitrary order, for an arbitrary
125962306a36Sopenharmony_cinumber of pairs.
126062306a36Sopenharmony_ci
126162306a36Sopenharmony_ciThe example shows the notification sent when the test is completed for
126262306a36Sopenharmony_cia T2 cable, i.e. two pairs. One pair is OK and hence has no length
126362306a36Sopenharmony_ciinformation. The second pair has a fault and does have length
126462306a36Sopenharmony_ciinformation.
126562306a36Sopenharmony_ci
126662306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
126762306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_HEADER``             | nested | reply header        |
126862306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
126962306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_STATUS``             | u8     | completed           |
127062306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
127162306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_NTF_NEST``           | nested | all the results     |
127262306a36Sopenharmony_ci +-+-------------------------------------------+--------+---------------------+
127362306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_NEST_RESULT``           | nested | cable test result   |
127462306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
127562306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number         |
127662306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
127762306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
127862306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
127962306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_NEST_RESULT``           | nested | cable test results  |
128062306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
128162306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number         |
128262306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
128362306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
128462306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
128562306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH``     | nested | cable length        |
128662306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
128762306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR``   | u8     | pair number         |
128862306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
128962306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM``     | u32    | length in cm        |
129062306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
129162306a36Sopenharmony_ci
129262306a36Sopenharmony_ciCABLE_TEST TDR
129362306a36Sopenharmony_ci==============
129462306a36Sopenharmony_ci
129562306a36Sopenharmony_ciStart a cable test and report raw TDR data
129662306a36Sopenharmony_ci
129762306a36Sopenharmony_ciRequest contents:
129862306a36Sopenharmony_ci
129962306a36Sopenharmony_ci +--------------------------------------------+--------+-----------------------+
130062306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER``        | nested | reply header          |
130162306a36Sopenharmony_ci +--------------------------------------------+--------+-----------------------+
130262306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_TDR_CFG``           | nested | test configuration    |
130362306a36Sopenharmony_ci +-+------------------------------------------+--------+-----------------------+
130462306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE``  | u32    | first data distance   |
130562306a36Sopenharmony_ci +-+-+----------------------------------------+--------+-----------------------+
130662306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE``   | u32    | last data distance    |
130762306a36Sopenharmony_ci +-+-+----------------------------------------+--------+-----------------------+
130862306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE``   | u32    | distance of each step |
130962306a36Sopenharmony_ci +-+-+----------------------------------------+--------+-----------------------+
131062306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR``    | u8     | pair to test          |
131162306a36Sopenharmony_ci +-+-+----------------------------------------+--------+-----------------------+
131262306a36Sopenharmony_ci
131362306a36Sopenharmony_ciThe ETHTOOL_A_CABLE_TEST_TDR_CFG is optional, as well as all members
131462306a36Sopenharmony_ciof the nest. All distances are expressed in centimeters. The PHY takes
131562306a36Sopenharmony_cithe distances as a guide, and rounds to the nearest distance it
131662306a36Sopenharmony_ciactually supports. If a pair is passed, only that one pair will be
131762306a36Sopenharmony_citested. Otherwise all pairs are tested.
131862306a36Sopenharmony_ci
131962306a36Sopenharmony_ciNotification contents:
132062306a36Sopenharmony_ci
132162306a36Sopenharmony_ciRaw TDR data is gathered by sending a pulse down the cable and
132262306a36Sopenharmony_cirecording the amplitude of the reflected pulse for a given distance.
132362306a36Sopenharmony_ci
132462306a36Sopenharmony_ciIt can take a number of seconds to collect TDR data, especial if the
132562306a36Sopenharmony_cifull 100 meters is probed at 1 meter intervals. When the test is
132662306a36Sopenharmony_cistarted a notification will be sent containing just
132762306a36Sopenharmony_ciETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
132862306a36Sopenharmony_ciETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED.
132962306a36Sopenharmony_ci
133062306a36Sopenharmony_ciWhen the test has completed a second notification will be sent
133162306a36Sopenharmony_cicontaining ETHTOOL_A_CABLE_TEST_TDR_STATUS with the value
133262306a36Sopenharmony_ciETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED and the TDR data.
133362306a36Sopenharmony_ci
133462306a36Sopenharmony_ciThe message may optionally contain the amplitude of the pulse send
133562306a36Sopenharmony_cidown the cable. This is measured in mV. A reflection should not be
133662306a36Sopenharmony_cibigger than transmitted pulse.
133762306a36Sopenharmony_ci
133862306a36Sopenharmony_ciBefore the raw TDR data should be an ETHTOOL_A_CABLE_TDR_NEST_STEP
133962306a36Sopenharmony_cinest containing information about the distance along the cable for the
134062306a36Sopenharmony_cifirst reading, the last reading, and the step between each
134162306a36Sopenharmony_cireading. Distances are measured in centimeters. These should be the
134262306a36Sopenharmony_ciexact values the PHY used. These may be different to what the user
134362306a36Sopenharmony_cirequested, if the native measurement resolution is greater than 1 cm.
134462306a36Sopenharmony_ci
134562306a36Sopenharmony_ciFor each step along the cable, a ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE is
134662306a36Sopenharmony_ciused to report the amplitude of the reflection for a given pair.
134762306a36Sopenharmony_ci
134862306a36Sopenharmony_ci +---------------------------------------------+--------+----------------------+
134962306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_TDR_HEADER``         | nested | reply header         |
135062306a36Sopenharmony_ci +---------------------------------------------+--------+----------------------+
135162306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_TDR_STATUS``         | u8     | completed            |
135262306a36Sopenharmony_ci +---------------------------------------------+--------+----------------------+
135362306a36Sopenharmony_ci | ``ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST``       | nested | all the results      |
135462306a36Sopenharmony_ci +-+-------------------------------------------+--------+----------------------+
135562306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_TDR_NEST_PULSE``        | nested | TX Pulse amplitude   |
135662306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
135762306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_PULSE_mV``            | s16    | Pulse amplitude      |
135862306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
135962306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_NEST_STEP``             | nested | TDR step info        |
136062306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
136162306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE`` | u32    | First data distance  |
136262306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
136362306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_STEP_LAST_DISTANCE``  | u32    | Last data distance   |
136462306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
136562306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_STEP_STEP_DISTANCE``  | u32    | distance of each step|
136662306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
136762306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
136862306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
136962306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
137062306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
137162306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
137262306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
137362306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
137462306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
137562306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
137662306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
137762306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
137862306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
137962306a36Sopenharmony_ci | | ``ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE``    | nested | Reflection amplitude |
138062306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
138162306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_RESULTS_PAIR``        | u8     | pair number          |
138262306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
138362306a36Sopenharmony_ci | | | ``ETHTOOL_A_CABLE_AMPLITUDE_mV``        | s16    | Reflection amplitude |
138462306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+----------------------+
138562306a36Sopenharmony_ci
138662306a36Sopenharmony_ciTUNNEL_INFO
138762306a36Sopenharmony_ci===========
138862306a36Sopenharmony_ci
138962306a36Sopenharmony_ciGets information about the tunnel state NIC is aware of.
139062306a36Sopenharmony_ci
139162306a36Sopenharmony_ciRequest contents:
139262306a36Sopenharmony_ci
139362306a36Sopenharmony_ci  =====================================  ======  ==========================
139462306a36Sopenharmony_ci  ``ETHTOOL_A_TUNNEL_INFO_HEADER``       nested  request header
139562306a36Sopenharmony_ci  =====================================  ======  ==========================
139662306a36Sopenharmony_ci
139762306a36Sopenharmony_ciKernel response contents:
139862306a36Sopenharmony_ci
139962306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
140062306a36Sopenharmony_ci | ``ETHTOOL_A_TUNNEL_INFO_HEADER``            | nested | reply header        |
140162306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
140262306a36Sopenharmony_ci | ``ETHTOOL_A_TUNNEL_INFO_UDP_PORTS``         | nested | all UDP port tables |
140362306a36Sopenharmony_ci +-+-------------------------------------------+--------+---------------------+
140462306a36Sopenharmony_ci | | ``ETHTOOL_A_TUNNEL_UDP_TABLE``            | nested | one UDP port table  |
140562306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
140662306a36Sopenharmony_ci | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE``     | u32    | max size of the     |
140762306a36Sopenharmony_ci | | |                                         |        | table               |
140862306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
140962306a36Sopenharmony_ci | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES``    | bitset | tunnel types which  |
141062306a36Sopenharmony_ci | | |                                         |        | table can hold      |
141162306a36Sopenharmony_ci +-+-+-----------------------------------------+--------+---------------------+
141262306a36Sopenharmony_ci | | | ``ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY``    | nested | offloaded UDP port  |
141362306a36Sopenharmony_ci +-+-+-+---------------------------------------+--------+---------------------+
141462306a36Sopenharmony_ci | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT``   | be16   | UDP port            |
141562306a36Sopenharmony_ci +-+-+-+---------------------------------------+--------+---------------------+
141662306a36Sopenharmony_ci | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE``   | u32    | tunnel type         |
141762306a36Sopenharmony_ci +-+-+-+---------------------------------------+--------+---------------------+
141862306a36Sopenharmony_ci
141962306a36Sopenharmony_ciFor UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that
142062306a36Sopenharmony_cithe table contains static entries, hard-coded by the NIC.
142162306a36Sopenharmony_ci
142262306a36Sopenharmony_ciFEC_GET
142362306a36Sopenharmony_ci=======
142462306a36Sopenharmony_ci
142562306a36Sopenharmony_ciGets FEC configuration and state like ``ETHTOOL_GFECPARAM`` ioctl request.
142662306a36Sopenharmony_ci
142762306a36Sopenharmony_ciRequest contents:
142862306a36Sopenharmony_ci
142962306a36Sopenharmony_ci  =====================================  ======  ==========================
143062306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_HEADER``               nested  request header
143162306a36Sopenharmony_ci  =====================================  ======  ==========================
143262306a36Sopenharmony_ci
143362306a36Sopenharmony_ciKernel response contents:
143462306a36Sopenharmony_ci
143562306a36Sopenharmony_ci  =====================================  ======  ==========================
143662306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_HEADER``               nested  request header
143762306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_MODES``                bitset  configured modes
143862306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_AUTO``                 bool    FEC mode auto selection
143962306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_ACTIVE``               u32     index of active FEC mode
144062306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_STATS``                nested  FEC statistics
144162306a36Sopenharmony_ci  =====================================  ======  ==========================
144262306a36Sopenharmony_ci
144362306a36Sopenharmony_ci``ETHTOOL_A_FEC_ACTIVE`` is the bit index of the FEC link mode currently
144462306a36Sopenharmony_ciactive on the interface. This attribute may not be present if device does
144562306a36Sopenharmony_cinot support FEC.
144662306a36Sopenharmony_ci
144762306a36Sopenharmony_ci``ETHTOOL_A_FEC_MODES`` and ``ETHTOOL_A_FEC_AUTO`` are only meaningful when
144862306a36Sopenharmony_ciautonegotiation is disabled. If ``ETHTOOL_A_FEC_AUTO`` is non-zero driver will
144962306a36Sopenharmony_ciselect the FEC mode automatically based on the parameters of the SFP module.
145062306a36Sopenharmony_ciThis is equivalent to the ``ETHTOOL_FEC_AUTO`` bit of the ioctl interface.
145162306a36Sopenharmony_ci``ETHTOOL_A_FEC_MODES`` carry the current FEC configuration using link mode
145262306a36Sopenharmony_cibits (rather than old ``ETHTOOL_FEC_*`` bits).
145362306a36Sopenharmony_ci
145462306a36Sopenharmony_ci``ETHTOOL_A_FEC_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set in
145562306a36Sopenharmony_ci``ETHTOOL_A_HEADER_FLAGS``.
145662306a36Sopenharmony_ciEach attribute carries an array of 64bit statistics. First entry in the array
145762306a36Sopenharmony_cicontains the total number of events on the port, while the following entries
145862306a36Sopenharmony_ciare counters corresponding to lanes/PCS instances. The number of entries in
145962306a36Sopenharmony_cithe array will be:
146062306a36Sopenharmony_ci
146162306a36Sopenharmony_ci+--------------+---------------------------------------------+
146262306a36Sopenharmony_ci| `0`          | device does not support FEC statistics      |
146362306a36Sopenharmony_ci+--------------+---------------------------------------------+
146462306a36Sopenharmony_ci| `1`          | device does not support per-lane break down |
146562306a36Sopenharmony_ci+--------------+---------------------------------------------+
146662306a36Sopenharmony_ci| `1 + #lanes` | device has full support for FEC stats       |
146762306a36Sopenharmony_ci+--------------+---------------------------------------------+
146862306a36Sopenharmony_ci
146962306a36Sopenharmony_ciDrivers fill in the statistics in the following structure:
147062306a36Sopenharmony_ci
147162306a36Sopenharmony_ci.. kernel-doc:: include/linux/ethtool.h
147262306a36Sopenharmony_ci    :identifiers: ethtool_fec_stats
147362306a36Sopenharmony_ci
147462306a36Sopenharmony_ciFEC_SET
147562306a36Sopenharmony_ci=======
147662306a36Sopenharmony_ci
147762306a36Sopenharmony_ciSets FEC parameters like ``ETHTOOL_SFECPARAM`` ioctl request.
147862306a36Sopenharmony_ci
147962306a36Sopenharmony_ciRequest contents:
148062306a36Sopenharmony_ci
148162306a36Sopenharmony_ci  =====================================  ======  ==========================
148262306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_HEADER``               nested  request header
148362306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_MODES``                bitset  configured modes
148462306a36Sopenharmony_ci  ``ETHTOOL_A_FEC_AUTO``                 bool    FEC mode auto selection
148562306a36Sopenharmony_ci  =====================================  ======  ==========================
148662306a36Sopenharmony_ci
148762306a36Sopenharmony_ci``FEC_SET`` is only meaningful when autonegotiation is disabled. Otherwise
148862306a36Sopenharmony_ciFEC mode is selected as part of autonegotiation.
148962306a36Sopenharmony_ci
149062306a36Sopenharmony_ci``ETHTOOL_A_FEC_MODES`` selects which FEC mode should be used. It's recommended
149162306a36Sopenharmony_cito set only one bit, if multiple bits are set driver may choose between them
149262306a36Sopenharmony_ciin an implementation specific way.
149362306a36Sopenharmony_ci
149462306a36Sopenharmony_ci``ETHTOOL_A_FEC_AUTO`` requests the driver to choose FEC mode based on SFP
149562306a36Sopenharmony_cimodule parameters. This does not mean autonegotiation.
149662306a36Sopenharmony_ci
149762306a36Sopenharmony_ciMODULE_EEPROM_GET
149862306a36Sopenharmony_ci=================
149962306a36Sopenharmony_ci
150062306a36Sopenharmony_ciFetch module EEPROM data dump.
150162306a36Sopenharmony_ciThis interface is designed to allow dumps of at most 1/2 page at once. This
150262306a36Sopenharmony_cimeans only dumps of 128 (or less) bytes are allowed, without crossing half page
150362306a36Sopenharmony_ciboundary located at offset 128. For pages other than 0 only high 128 bytes are
150462306a36Sopenharmony_ciaccessible.
150562306a36Sopenharmony_ci
150662306a36Sopenharmony_ciRequest contents:
150762306a36Sopenharmony_ci
150862306a36Sopenharmony_ci  =======================================  ======  ==========================
150962306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_EEPROM_HEADER``       nested  request header
151062306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_EEPROM_OFFSET``       u32     offset within a page
151162306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_EEPROM_LENGTH``       u32     amount of bytes to read
151262306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_EEPROM_PAGE``         u8      page number
151362306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_EEPROM_BANK``         u8      bank number
151462306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_EEPROM_I2C_ADDRESS``  u8      page I2C address
151562306a36Sopenharmony_ci  =======================================  ======  ==========================
151662306a36Sopenharmony_ci
151762306a36Sopenharmony_ciIf ``ETHTOOL_A_MODULE_EEPROM_BANK`` is not specified, bank 0 is assumed.
151862306a36Sopenharmony_ci
151962306a36Sopenharmony_ciKernel response contents:
152062306a36Sopenharmony_ci
152162306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
152262306a36Sopenharmony_ci | ``ETHTOOL_A_MODULE_EEPROM_HEADER``          | nested | reply header        |
152362306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
152462306a36Sopenharmony_ci | ``ETHTOOL_A_MODULE_EEPROM_DATA``            | binary | array of bytes from |
152562306a36Sopenharmony_ci |                                             |        | module EEPROM       |
152662306a36Sopenharmony_ci +---------------------------------------------+--------+---------------------+
152762306a36Sopenharmony_ci
152862306a36Sopenharmony_ci``ETHTOOL_A_MODULE_EEPROM_DATA`` has an attribute length equal to the amount of
152962306a36Sopenharmony_cibytes driver actually read.
153062306a36Sopenharmony_ci
153162306a36Sopenharmony_ciSTATS_GET
153262306a36Sopenharmony_ci=========
153362306a36Sopenharmony_ci
153462306a36Sopenharmony_ciGet standard statistics for the interface. Note that this is not
153562306a36Sopenharmony_cia re-implementation of ``ETHTOOL_GSTATS`` which exposed driver-defined
153662306a36Sopenharmony_cistats.
153762306a36Sopenharmony_ci
153862306a36Sopenharmony_ciRequest contents:
153962306a36Sopenharmony_ci
154062306a36Sopenharmony_ci  =======================================  ======  ==========================
154162306a36Sopenharmony_ci  ``ETHTOOL_A_STATS_HEADER``               nested  request header
154262306a36Sopenharmony_ci  ``ETHTOOL_A_STATS_SRC``                  u32     source of statistics
154362306a36Sopenharmony_ci  ``ETHTOOL_A_STATS_GROUPS``               bitset  requested groups of stats
154462306a36Sopenharmony_ci  =======================================  ======  ==========================
154562306a36Sopenharmony_ci
154662306a36Sopenharmony_ciKernel response contents:
154762306a36Sopenharmony_ci
154862306a36Sopenharmony_ci +-----------------------------------+--------+--------------------------------+
154962306a36Sopenharmony_ci | ``ETHTOOL_A_STATS_HEADER``        | nested | reply header                   |
155062306a36Sopenharmony_ci +-----------------------------------+--------+--------------------------------+
155162306a36Sopenharmony_ci | ``ETHTOOL_A_STATS_SRC``           | u32    | source of statistics           |
155262306a36Sopenharmony_ci +-----------------------------------+--------+--------------------------------+
155362306a36Sopenharmony_ci | ``ETHTOOL_A_STATS_GRP``           | nested | one or more group of stats     |
155462306a36Sopenharmony_ci +-+---------------------------------+--------+--------------------------------+
155562306a36Sopenharmony_ci | | ``ETHTOOL_A_STATS_GRP_ID``      | u32    | group ID - ``ETHTOOL_STATS_*`` |
155662306a36Sopenharmony_ci +-+---------------------------------+--------+--------------------------------+
155762306a36Sopenharmony_ci | | ``ETHTOOL_A_STATS_GRP_SS_ID``   | u32    | string set ID for names        |
155862306a36Sopenharmony_ci +-+---------------------------------+--------+--------------------------------+
155962306a36Sopenharmony_ci | | ``ETHTOOL_A_STATS_GRP_STAT``    | nested | nest containing a statistic    |
156062306a36Sopenharmony_ci +-+---------------------------------+--------+--------------------------------+
156162306a36Sopenharmony_ci | | ``ETHTOOL_A_STATS_GRP_HIST_RX`` | nested | histogram statistic (Rx)       |
156262306a36Sopenharmony_ci +-+---------------------------------+--------+--------------------------------+
156362306a36Sopenharmony_ci | | ``ETHTOOL_A_STATS_GRP_HIST_TX`` | nested | histogram statistic (Tx)       |
156462306a36Sopenharmony_ci +-+---------------------------------+--------+--------------------------------+
156562306a36Sopenharmony_ci
156662306a36Sopenharmony_ciUsers specify which groups of statistics they are requesting via
156762306a36Sopenharmony_cithe ``ETHTOOL_A_STATS_GROUPS`` bitset. Currently defined values are:
156862306a36Sopenharmony_ci
156962306a36Sopenharmony_ci ====================== ======== ===============================================
157062306a36Sopenharmony_ci ETHTOOL_STATS_ETH_MAC  eth-mac  Basic IEEE 802.3 MAC statistics (30.3.1.1.*)
157162306a36Sopenharmony_ci ETHTOOL_STATS_ETH_PHY  eth-phy  Basic IEEE 802.3 PHY statistics (30.3.2.1.*)
157262306a36Sopenharmony_ci ETHTOOL_STATS_ETH_CTRL eth-ctrl Basic IEEE 802.3 MAC Ctrl statistics (30.3.3.*)
157362306a36Sopenharmony_ci ETHTOOL_STATS_RMON     rmon     RMON (RFC 2819) statistics
157462306a36Sopenharmony_ci ====================== ======== ===============================================
157562306a36Sopenharmony_ci
157662306a36Sopenharmony_ciEach group should have a corresponding ``ETHTOOL_A_STATS_GRP`` in the reply.
157762306a36Sopenharmony_ci``ETHTOOL_A_STATS_GRP_ID`` identifies which group's statistics nest contains.
157862306a36Sopenharmony_ci``ETHTOOL_A_STATS_GRP_SS_ID`` identifies the string set ID for the names of
157962306a36Sopenharmony_cithe statistics in the group, if available.
158062306a36Sopenharmony_ci
158162306a36Sopenharmony_ciStatistics are added to the ``ETHTOOL_A_STATS_GRP`` nest under
158262306a36Sopenharmony_ci``ETHTOOL_A_STATS_GRP_STAT``. ``ETHTOOL_A_STATS_GRP_STAT`` should contain
158362306a36Sopenharmony_cisingle 8 byte (u64) attribute inside - the type of that attribute is
158462306a36Sopenharmony_cithe statistic ID and the value is the value of the statistic.
158562306a36Sopenharmony_ciEach group has its own interpretation of statistic IDs.
158662306a36Sopenharmony_ciAttribute IDs correspond to strings from the string set identified
158762306a36Sopenharmony_ciby ``ETHTOOL_A_STATS_GRP_SS_ID``. Complex statistics (such as RMON histogram
158862306a36Sopenharmony_cientries) are also listed inside ``ETHTOOL_A_STATS_GRP`` and do not have
158962306a36Sopenharmony_cia string defined in the string set.
159062306a36Sopenharmony_ci
159162306a36Sopenharmony_ciRMON "histogram" counters count number of packets within given size range.
159262306a36Sopenharmony_ciBecause RFC does not specify the ranges beyond the standard 1518 MTU devices
159362306a36Sopenharmony_cidiffer in definition of buckets. For this reason the definition of packet ranges
159462306a36Sopenharmony_ciis left to each driver.
159562306a36Sopenharmony_ci
159662306a36Sopenharmony_ci``ETHTOOL_A_STATS_GRP_HIST_RX`` and ``ETHTOOL_A_STATS_GRP_HIST_TX`` nests
159762306a36Sopenharmony_cicontain the following attributes:
159862306a36Sopenharmony_ci
159962306a36Sopenharmony_ci ================================= ====== ===================================
160062306a36Sopenharmony_ci ETHTOOL_A_STATS_RMON_HIST_BKT_LOW u32    low bound of the packet size bucket
160162306a36Sopenharmony_ci ETHTOOL_A_STATS_RMON_HIST_BKT_HI  u32    high bound of the bucket
160262306a36Sopenharmony_ci ETHTOOL_A_STATS_RMON_HIST_VAL     u64    packet counter
160362306a36Sopenharmony_ci ================================= ====== ===================================
160462306a36Sopenharmony_ci
160562306a36Sopenharmony_ciLow and high bounds are inclusive, for example:
160662306a36Sopenharmony_ci
160762306a36Sopenharmony_ci ============================= ==== ====
160862306a36Sopenharmony_ci RFC statistic                 low  high
160962306a36Sopenharmony_ci ============================= ==== ====
161062306a36Sopenharmony_ci etherStatsPkts64Octets          0    64
161162306a36Sopenharmony_ci etherStatsPkts512to1023Octets 512  1023
161262306a36Sopenharmony_ci ============================= ==== ====
161362306a36Sopenharmony_ci
161462306a36Sopenharmony_ci``ETHTOOL_A_STATS_SRC`` is optional. Similar to ``PAUSE_GET``, it takes values
161562306a36Sopenharmony_cifrom ``enum ethtool_mac_stats_src``. If absent from the request, stats will be
161662306a36Sopenharmony_ciprovided with an ``ETHTOOL_A_STATS_SRC`` attribute in the response equal to
161762306a36Sopenharmony_ci``ETHTOOL_MAC_STATS_SRC_AGGREGATE``.
161862306a36Sopenharmony_ci
161962306a36Sopenharmony_ciPHC_VCLOCKS_GET
162062306a36Sopenharmony_ci===============
162162306a36Sopenharmony_ci
162262306a36Sopenharmony_ciQuery device PHC virtual clocks information.
162362306a36Sopenharmony_ci
162462306a36Sopenharmony_ciRequest contents:
162562306a36Sopenharmony_ci
162662306a36Sopenharmony_ci  ====================================  ======  ==========================
162762306a36Sopenharmony_ci  ``ETHTOOL_A_PHC_VCLOCKS_HEADER``      nested  request header
162862306a36Sopenharmony_ci  ====================================  ======  ==========================
162962306a36Sopenharmony_ci
163062306a36Sopenharmony_ciKernel response contents:
163162306a36Sopenharmony_ci
163262306a36Sopenharmony_ci  ====================================  ======  ==========================
163362306a36Sopenharmony_ci  ``ETHTOOL_A_PHC_VCLOCKS_HEADER``      nested  reply header
163462306a36Sopenharmony_ci  ``ETHTOOL_A_PHC_VCLOCKS_NUM``         u32     PHC virtual clocks number
163562306a36Sopenharmony_ci  ``ETHTOOL_A_PHC_VCLOCKS_INDEX``       s32     PHC index array
163662306a36Sopenharmony_ci  ====================================  ======  ==========================
163762306a36Sopenharmony_ci
163862306a36Sopenharmony_ciMODULE_GET
163962306a36Sopenharmony_ci==========
164062306a36Sopenharmony_ci
164162306a36Sopenharmony_ciGets transceiver module parameters.
164262306a36Sopenharmony_ci
164362306a36Sopenharmony_ciRequest contents:
164462306a36Sopenharmony_ci
164562306a36Sopenharmony_ci  =====================================  ======  ==========================
164662306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_HEADER``            nested  request header
164762306a36Sopenharmony_ci  =====================================  ======  ==========================
164862306a36Sopenharmony_ci
164962306a36Sopenharmony_ciKernel response contents:
165062306a36Sopenharmony_ci
165162306a36Sopenharmony_ci  ======================================  ======  ==========================
165262306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_HEADER``             nested  reply header
165362306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_POWER_MODE_POLICY``  u8      power mode policy
165462306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_POWER_MODE``         u8      operational power mode
165562306a36Sopenharmony_ci  ======================================  ======  ==========================
165662306a36Sopenharmony_ci
165762306a36Sopenharmony_ciThe optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute encodes the
165862306a36Sopenharmony_citransceiver module power mode policy enforced by the host. The default policy
165962306a36Sopenharmony_ciis driver-dependent, but "auto" is the recommended default and it should be
166062306a36Sopenharmony_ciimplemented by new drivers and drivers where conformance to a legacy behavior
166162306a36Sopenharmony_ciis not critical.
166262306a36Sopenharmony_ci
166362306a36Sopenharmony_ciThe optional ``ETHTHOOL_A_MODULE_POWER_MODE`` attribute encodes the operational
166462306a36Sopenharmony_cipower mode policy of the transceiver module. It is only reported when a module
166562306a36Sopenharmony_ciis plugged-in. Possible values are:
166662306a36Sopenharmony_ci
166762306a36Sopenharmony_ci.. kernel-doc:: include/uapi/linux/ethtool.h
166862306a36Sopenharmony_ci    :identifiers: ethtool_module_power_mode
166962306a36Sopenharmony_ci
167062306a36Sopenharmony_ciMODULE_SET
167162306a36Sopenharmony_ci==========
167262306a36Sopenharmony_ci
167362306a36Sopenharmony_ciSets transceiver module parameters.
167462306a36Sopenharmony_ci
167562306a36Sopenharmony_ciRequest contents:
167662306a36Sopenharmony_ci
167762306a36Sopenharmony_ci  ======================================  ======  ==========================
167862306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_HEADER``             nested  request header
167962306a36Sopenharmony_ci  ``ETHTOOL_A_MODULE_POWER_MODE_POLICY``  u8      power mode policy
168062306a36Sopenharmony_ci  ======================================  ======  ==========================
168162306a36Sopenharmony_ci
168262306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_MODULE_POWER_MODE_POLICY`` attribute is used
168362306a36Sopenharmony_cito set the transceiver module power policy enforced by the host. Possible
168462306a36Sopenharmony_civalues are:
168562306a36Sopenharmony_ci
168662306a36Sopenharmony_ci.. kernel-doc:: include/uapi/linux/ethtool.h
168762306a36Sopenharmony_ci    :identifiers: ethtool_module_power_mode_policy
168862306a36Sopenharmony_ci
168962306a36Sopenharmony_ciFor SFF-8636 modules, low power mode is forced by the host according to table
169062306a36Sopenharmony_ci6-10 in revision 2.10a of the specification.
169162306a36Sopenharmony_ci
169262306a36Sopenharmony_ciFor CMIS modules, low power mode is forced by the host according to table 6-12
169362306a36Sopenharmony_ciin revision 5.0 of the specification.
169462306a36Sopenharmony_ci
169562306a36Sopenharmony_ciPSE_GET
169662306a36Sopenharmony_ci=======
169762306a36Sopenharmony_ci
169862306a36Sopenharmony_ciGets PSE attributes.
169962306a36Sopenharmony_ci
170062306a36Sopenharmony_ciRequest contents:
170162306a36Sopenharmony_ci
170262306a36Sopenharmony_ci  =====================================  ======  ==========================
170362306a36Sopenharmony_ci  ``ETHTOOL_A_PSE_HEADER``               nested  request header
170462306a36Sopenharmony_ci  =====================================  ======  ==========================
170562306a36Sopenharmony_ci
170662306a36Sopenharmony_ciKernel response contents:
170762306a36Sopenharmony_ci
170862306a36Sopenharmony_ci  ======================================  ======  =============================
170962306a36Sopenharmony_ci  ``ETHTOOL_A_PSE_HEADER``                nested  reply header
171062306a36Sopenharmony_ci  ``ETHTOOL_A_PODL_PSE_ADMIN_STATE``         u32  Operational state of the PoDL
171162306a36Sopenharmony_ci                                                  PSE functions
171262306a36Sopenharmony_ci  ``ETHTOOL_A_PODL_PSE_PW_D_STATUS``         u32  power detection status of the
171362306a36Sopenharmony_ci                                                  PoDL PSE.
171462306a36Sopenharmony_ci  ======================================  ======  =============================
171562306a36Sopenharmony_ci
171662306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` attribute identifies
171762306a36Sopenharmony_cithe operational state of the PoDL PSE functions.  The operational state of the
171862306a36Sopenharmony_ciPSE function can be changed using the ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL``
171962306a36Sopenharmony_ciaction. This option is corresponding to ``IEEE 802.3-2018`` 30.15.1.1.2
172062306a36Sopenharmony_ciaPoDLPSEAdminState. Possible values are:
172162306a36Sopenharmony_ci
172262306a36Sopenharmony_ci.. kernel-doc:: include/uapi/linux/ethtool.h
172362306a36Sopenharmony_ci    :identifiers: ethtool_podl_pse_admin_state
172462306a36Sopenharmony_ci
172562306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PODL_PSE_PW_D_STATUS`` attribute identifies
172662306a36Sopenharmony_cithe power detection status of the PoDL PSE.  The status depend on internal PSE
172762306a36Sopenharmony_cistate machine and automatic PD classification support. This option is
172862306a36Sopenharmony_cicorresponding to ``IEEE 802.3-2018`` 30.15.1.1.3 aPoDLPSEPowerDetectionStatus.
172962306a36Sopenharmony_ciPossible values are:
173062306a36Sopenharmony_ci
173162306a36Sopenharmony_ci.. kernel-doc:: include/uapi/linux/ethtool.h
173262306a36Sopenharmony_ci    :identifiers: ethtool_podl_pse_pw_d_status
173362306a36Sopenharmony_ci
173462306a36Sopenharmony_ciPSE_SET
173562306a36Sopenharmony_ci=======
173662306a36Sopenharmony_ci
173762306a36Sopenharmony_ciSets PSE parameters.
173862306a36Sopenharmony_ci
173962306a36Sopenharmony_ciRequest contents:
174062306a36Sopenharmony_ci
174162306a36Sopenharmony_ci  ======================================  ======  =============================
174262306a36Sopenharmony_ci  ``ETHTOOL_A_PSE_HEADER``                nested  request header
174362306a36Sopenharmony_ci  ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL``       u32  Control PoDL PSE Admin state
174462306a36Sopenharmony_ci  ======================================  ======  =============================
174562306a36Sopenharmony_ci
174662306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PODL_PSE_ADMIN_CONTROL`` attribute is used
174762306a36Sopenharmony_cito control PoDL PSE Admin functions. This option is implementing
174862306a36Sopenharmony_ci``IEEE 802.3-2018`` 30.15.1.2.1 acPoDLPSEAdminControl. See
174962306a36Sopenharmony_ci``ETHTOOL_A_PODL_PSE_ADMIN_STATE`` for supported values.
175062306a36Sopenharmony_ci
175162306a36Sopenharmony_ciRSS_GET
175262306a36Sopenharmony_ci=======
175362306a36Sopenharmony_ci
175462306a36Sopenharmony_ciGet indirection table, hash key and hash function info associated with a
175562306a36Sopenharmony_ciRSS context of an interface similar to ``ETHTOOL_GRSSH`` ioctl request.
175662306a36Sopenharmony_ci
175762306a36Sopenharmony_ciRequest contents:
175862306a36Sopenharmony_ci
175962306a36Sopenharmony_ci=====================================  ======  ==========================
176062306a36Sopenharmony_ci  ``ETHTOOL_A_RSS_HEADER``             nested  request header
176162306a36Sopenharmony_ci  ``ETHTOOL_A_RSS_CONTEXT``            u32     context number
176262306a36Sopenharmony_ci=====================================  ======  ==========================
176362306a36Sopenharmony_ci
176462306a36Sopenharmony_ciKernel response contents:
176562306a36Sopenharmony_ci
176662306a36Sopenharmony_ci=====================================  ======  ==========================
176762306a36Sopenharmony_ci  ``ETHTOOL_A_RSS_HEADER``             nested  reply header
176862306a36Sopenharmony_ci  ``ETHTOOL_A_RSS_HFUNC``              u32     RSS hash func
176962306a36Sopenharmony_ci  ``ETHTOOL_A_RSS_INDIR``              binary  Indir table bytes
177062306a36Sopenharmony_ci  ``ETHTOOL_A_RSS_HKEY``               binary  Hash key bytes
177162306a36Sopenharmony_ci=====================================  ======  ==========================
177262306a36Sopenharmony_ci
177362306a36Sopenharmony_ciETHTOOL_A_RSS_HFUNC attribute is bitmap indicating the hash function
177462306a36Sopenharmony_cibeing used. Current supported options are toeplitz, xor or crc32.
177562306a36Sopenharmony_ciETHTOOL_A_RSS_INDIR attribute returns RSS indrection table where each byte
177662306a36Sopenharmony_ciindicates queue number.
177762306a36Sopenharmony_ci
177862306a36Sopenharmony_ciPLCA_GET_CFG
177962306a36Sopenharmony_ci============
178062306a36Sopenharmony_ci
178162306a36Sopenharmony_ciGets the IEEE 802.3cg-2019 Clause 148 Physical Layer Collision Avoidance
178262306a36Sopenharmony_ci(PLCA) Reconciliation Sublayer (RS) attributes.
178362306a36Sopenharmony_ci
178462306a36Sopenharmony_ciRequest contents:
178562306a36Sopenharmony_ci
178662306a36Sopenharmony_ci  =====================================  ======  ==========================
178762306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_HEADER``              nested  request header
178862306a36Sopenharmony_ci  =====================================  ======  ==========================
178962306a36Sopenharmony_ci
179062306a36Sopenharmony_ciKernel response contents:
179162306a36Sopenharmony_ci
179262306a36Sopenharmony_ci  ======================================  ======  =============================
179362306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_HEADER``               nested  reply header
179462306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_VERSION``              u16     Supported PLCA management
179562306a36Sopenharmony_ci                                                  interface standard/version
179662306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_ENABLED``              u8      PLCA Admin State
179762306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_NODE_ID``              u32     PLCA unique local node ID
179862306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_NODE_CNT``             u32     Number of PLCA nodes on the
179962306a36Sopenharmony_ci                                                  network, including the
180062306a36Sopenharmony_ci                                                  coordinator
180162306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_TO_TMR``               u32     Transmit Opportunity Timer
180262306a36Sopenharmony_ci                                                  value in bit-times (BT)
180362306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_BURST_CNT``            u32     Number of additional packets
180462306a36Sopenharmony_ci                                                  the node is allowed to send
180562306a36Sopenharmony_ci                                                  within a single TO
180662306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_BURST_TMR``            u32     Time to wait for the MAC to
180762306a36Sopenharmony_ci                                                  transmit a new frame before
180862306a36Sopenharmony_ci                                                  terminating the burst
180962306a36Sopenharmony_ci  ======================================  ======  =============================
181062306a36Sopenharmony_ci
181162306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_VERSION`` attribute indicates which
181262306a36Sopenharmony_cistandard and version the PLCA management interface complies to. When not set,
181362306a36Sopenharmony_cithe interface is vendor-specific and (possibly) supplied by the driver.
181462306a36Sopenharmony_ciThe OPEN Alliance SIG specifies a standard register map for 10BASE-T1S PHYs
181562306a36Sopenharmony_ciembedding the PLCA Reconcialiation Sublayer. See "10BASE-T1S PLCA Management
181662306a36Sopenharmony_ciRegisters" at https://www.opensig.org/about/specifications/.
181762306a36Sopenharmony_ci
181862306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_ENABLED`` attribute indicates the
181962306a36Sopenharmony_ciadministrative state of the PLCA RS. When not set, the node operates in "plain"
182062306a36Sopenharmony_ciCSMA/CD mode. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.1
182162306a36Sopenharmony_ciaPLCAAdminState / 30.16.1.2.1 acPLCAAdminControl.
182262306a36Sopenharmony_ci
182362306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_NODE_ID`` attribute indicates the
182462306a36Sopenharmony_ciconfigured local node ID of the PHY. This ID determines which transmit
182562306a36Sopenharmony_ciopportunity (TO) is reserved for the node to transmit into. This option is
182662306a36Sopenharmony_cicorresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.4 aPLCALocalNodeID. The valid
182762306a36Sopenharmony_cirange for this attribute is [0 .. 255] where 255 means "not configured".
182862306a36Sopenharmony_ci
182962306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_NODE_CNT`` attribute indicates the
183062306a36Sopenharmony_ciconfigured maximum number of PLCA nodes on the mixing-segment. This number
183162306a36Sopenharmony_cidetermines the total number of transmit opportunities generated during a
183262306a36Sopenharmony_ciPLCA cycle. This attribute is relevant only for the PLCA coordinator, which is
183362306a36Sopenharmony_cithe node with aPLCALocalNodeID set to 0. Follower nodes ignore this setting.
183462306a36Sopenharmony_ciThis option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.3
183562306a36Sopenharmony_ciaPLCANodeCount. The valid range for this attribute is [1 .. 255].
183662306a36Sopenharmony_ci
183762306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_TO_TMR`` attribute indicates the
183862306a36Sopenharmony_ciconfigured value of the transmit opportunity timer in bit-times. This value
183962306a36Sopenharmony_cimust be set equal across all nodes sharing the medium for PLCA to work
184062306a36Sopenharmony_cicorrectly. This option is corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.5
184162306a36Sopenharmony_ciaPLCATransmitOpportunityTimer. The valid range for this attribute is
184262306a36Sopenharmony_ci[0 .. 255].
184362306a36Sopenharmony_ci
184462306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_BURST_CNT`` attribute indicates the
184562306a36Sopenharmony_ciconfigured number of extra packets that the node is allowed to send during a
184662306a36Sopenharmony_cisingle transmit opportunity. By default, this attribute is 0, meaning that
184762306a36Sopenharmony_cithe node can only send a single frame per TO. When greater than 0, the PLCA RS
184862306a36Sopenharmony_cikeeps the TO after any transmission, waiting for the MAC to send a new frame
184962306a36Sopenharmony_cifor up to aPLCABurstTimer BTs. This can only happen a number of times per PLCA
185062306a36Sopenharmony_cicycle up to the value of this parameter. After that, the burst is over and the
185162306a36Sopenharmony_cinormal counting of TOs resumes. This option is corresponding to
185262306a36Sopenharmony_ci``IEEE 802.3cg-2019`` 30.16.1.1.6 aPLCAMaxBurstCount. The valid range for this
185362306a36Sopenharmony_ciattribute is [0 .. 255].
185462306a36Sopenharmony_ci
185562306a36Sopenharmony_ciWhen set, the optional ``ETHTOOL_A_PLCA_BURST_TMR`` attribute indicates how
185662306a36Sopenharmony_cimany bit-times the PLCA RS waits for the MAC to initiate a new transmission
185762306a36Sopenharmony_ciwhen aPLCAMaxBurstCount is greater than 0. If the MAC fails to send a new
185862306a36Sopenharmony_ciframe within this time, the burst ends and the counting of TOs resumes.
185962306a36Sopenharmony_ciOtherwise, the new frame is sent as part of the current burst. This option
186062306a36Sopenharmony_ciis corresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.7 aPLCABurstTimer. The
186162306a36Sopenharmony_civalid range for this attribute is [0 .. 255]. Although, the value should be
186262306a36Sopenharmony_ciset greater than the Inter-Frame-Gap (IFG) time of the MAC (plus some margin)
186362306a36Sopenharmony_cifor PLCA burst mode to work as intended.
186462306a36Sopenharmony_ci
186562306a36Sopenharmony_ciPLCA_SET_CFG
186662306a36Sopenharmony_ci============
186762306a36Sopenharmony_ci
186862306a36Sopenharmony_ciSets PLCA RS parameters.
186962306a36Sopenharmony_ci
187062306a36Sopenharmony_ciRequest contents:
187162306a36Sopenharmony_ci
187262306a36Sopenharmony_ci  ======================================  ======  =============================
187362306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_HEADER``               nested  request header
187462306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_ENABLED``              u8      PLCA Admin State
187562306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_NODE_ID``              u8      PLCA unique local node ID
187662306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_NODE_CNT``             u8      Number of PLCA nodes on the
187762306a36Sopenharmony_ci                                                  netkork, including the
187862306a36Sopenharmony_ci                                                  coordinator
187962306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_TO_TMR``               u8      Transmit Opportunity Timer
188062306a36Sopenharmony_ci                                                  value in bit-times (BT)
188162306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_BURST_CNT``            u8      Number of additional packets
188262306a36Sopenharmony_ci                                                  the node is allowed to send
188362306a36Sopenharmony_ci                                                  within a single TO
188462306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_BURST_TMR``            u8      Time to wait for the MAC to
188562306a36Sopenharmony_ci                                                  transmit a new frame before
188662306a36Sopenharmony_ci                                                  terminating the burst
188762306a36Sopenharmony_ci  ======================================  ======  =============================
188862306a36Sopenharmony_ci
188962306a36Sopenharmony_ciFor a description of each attribute, see ``PLCA_GET_CFG``.
189062306a36Sopenharmony_ci
189162306a36Sopenharmony_ciPLCA_GET_STATUS
189262306a36Sopenharmony_ci===============
189362306a36Sopenharmony_ci
189462306a36Sopenharmony_ciGets PLCA RS status information.
189562306a36Sopenharmony_ci
189662306a36Sopenharmony_ciRequest contents:
189762306a36Sopenharmony_ci
189862306a36Sopenharmony_ci  =====================================  ======  ==========================
189962306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_HEADER``              nested  request header
190062306a36Sopenharmony_ci  =====================================  ======  ==========================
190162306a36Sopenharmony_ci
190262306a36Sopenharmony_ciKernel response contents:
190362306a36Sopenharmony_ci
190462306a36Sopenharmony_ci  ======================================  ======  =============================
190562306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_HEADER``               nested  reply header
190662306a36Sopenharmony_ci  ``ETHTOOL_A_PLCA_STATUS``               u8      PLCA RS operational status
190762306a36Sopenharmony_ci  ======================================  ======  =============================
190862306a36Sopenharmony_ci
190962306a36Sopenharmony_ciWhen set, the ``ETHTOOL_A_PLCA_STATUS`` attribute indicates whether the node is
191062306a36Sopenharmony_cidetecting the presence of the BEACON on the network. This flag is
191162306a36Sopenharmony_cicorresponding to ``IEEE 802.3cg-2019`` 30.16.1.1.2 aPLCAStatus.
191262306a36Sopenharmony_ci
191362306a36Sopenharmony_ciMM_GET
191462306a36Sopenharmony_ci======
191562306a36Sopenharmony_ci
191662306a36Sopenharmony_ciRetrieve 802.3 MAC Merge parameters.
191762306a36Sopenharmony_ci
191862306a36Sopenharmony_ciRequest contents:
191962306a36Sopenharmony_ci
192062306a36Sopenharmony_ci  ====================================  ======  ==========================
192162306a36Sopenharmony_ci  ``ETHTOOL_A_MM_HEADER``               nested  request header
192262306a36Sopenharmony_ci  ====================================  ======  ==========================
192362306a36Sopenharmony_ci
192462306a36Sopenharmony_ciKernel response contents:
192562306a36Sopenharmony_ci
192662306a36Sopenharmony_ci  =================================  ======  ===================================
192762306a36Sopenharmony_ci  ``ETHTOOL_A_MM_HEADER``            nested  request header
192862306a36Sopenharmony_ci  ``ETHTOOL_A_MM_PMAC_ENABLED``      bool    set if RX of preemptible and SMD-V
192962306a36Sopenharmony_ci                                             frames is enabled
193062306a36Sopenharmony_ci  ``ETHTOOL_A_MM_TX_ENABLED``        bool    set if TX of preemptible frames is
193162306a36Sopenharmony_ci                                             administratively enabled (might be
193262306a36Sopenharmony_ci                                             inactive if verification failed)
193362306a36Sopenharmony_ci  ``ETHTOOL_A_MM_TX_ACTIVE``         bool    set if TX of preemptible frames is
193462306a36Sopenharmony_ci                                             operationally enabled
193562306a36Sopenharmony_ci  ``ETHTOOL_A_MM_TX_MIN_FRAG_SIZE``  u32     minimum size of transmitted
193662306a36Sopenharmony_ci                                             non-final fragments, in octets
193762306a36Sopenharmony_ci  ``ETHTOOL_A_MM_RX_MIN_FRAG_SIZE``  u32     minimum size of received non-final
193862306a36Sopenharmony_ci                                             fragments, in octets
193962306a36Sopenharmony_ci  ``ETHTOOL_A_MM_VERIFY_ENABLED``    bool    set if TX of SMD-V frames is
194062306a36Sopenharmony_ci                                             administratively enabled
194162306a36Sopenharmony_ci  ``ETHTOOL_A_MM_VERIFY_STATUS``     u8      state of the verification function
194262306a36Sopenharmony_ci  ``ETHTOOL_A_MM_VERIFY_TIME``       u32     delay between verification attempts
194362306a36Sopenharmony_ci  ``ETHTOOL_A_MM_MAX_VERIFY_TIME```  u32     maximum verification interval
194462306a36Sopenharmony_ci                                             supported by device
194562306a36Sopenharmony_ci  ``ETHTOOL_A_MM_STATS``             nested  IEEE 802.3-2018 subclause 30.14.1
194662306a36Sopenharmony_ci                                             oMACMergeEntity statistics counters
194762306a36Sopenharmony_ci  =================================  ======  ===================================
194862306a36Sopenharmony_ci
194962306a36Sopenharmony_ciThe attributes are populated by the device driver through the following
195062306a36Sopenharmony_cistructure:
195162306a36Sopenharmony_ci
195262306a36Sopenharmony_ci.. kernel-doc:: include/linux/ethtool.h
195362306a36Sopenharmony_ci    :identifiers: ethtool_mm_state
195462306a36Sopenharmony_ci
195562306a36Sopenharmony_ciThe ``ETHTOOL_A_MM_VERIFY_STATUS`` will report one of the values from
195662306a36Sopenharmony_ci
195762306a36Sopenharmony_ci.. kernel-doc:: include/uapi/linux/ethtool.h
195862306a36Sopenharmony_ci    :identifiers: ethtool_mm_verify_status
195962306a36Sopenharmony_ci
196062306a36Sopenharmony_ciIf ``ETHTOOL_A_MM_VERIFY_ENABLED`` was passed as false in the ``MM_SET``
196162306a36Sopenharmony_cicommand, ``ETHTOOL_A_MM_VERIFY_STATUS`` will report either
196262306a36Sopenharmony_ci``ETHTOOL_MM_VERIFY_STATUS_INITIAL`` or ``ETHTOOL_MM_VERIFY_STATUS_DISABLED``,
196362306a36Sopenharmony_ciotherwise it should report one of the other states.
196462306a36Sopenharmony_ci
196562306a36Sopenharmony_ciIt is recommended that drivers start with the pMAC disabled, and enable it upon
196662306a36Sopenharmony_ciuser space request. It is also recommended that user space does not depend upon
196762306a36Sopenharmony_cithe default values from ``ETHTOOL_MSG_MM_GET`` requests.
196862306a36Sopenharmony_ci
196962306a36Sopenharmony_ci``ETHTOOL_A_MM_STATS`` are reported if ``ETHTOOL_FLAG_STATS`` was set in
197062306a36Sopenharmony_ci``ETHTOOL_A_HEADER_FLAGS``. The attribute will be empty if driver did not
197162306a36Sopenharmony_cireport any statistics. Drivers fill in the statistics in the following
197262306a36Sopenharmony_cistructure:
197362306a36Sopenharmony_ci
197462306a36Sopenharmony_ci.. kernel-doc:: include/linux/ethtool.h
197562306a36Sopenharmony_ci    :identifiers: ethtool_mm_stats
197662306a36Sopenharmony_ci
197762306a36Sopenharmony_ciMM_SET
197862306a36Sopenharmony_ci======
197962306a36Sopenharmony_ci
198062306a36Sopenharmony_ciModifies the configuration of the 802.3 MAC Merge layer.
198162306a36Sopenharmony_ci
198262306a36Sopenharmony_ciRequest contents:
198362306a36Sopenharmony_ci
198462306a36Sopenharmony_ci  =================================  ======  ==========================
198562306a36Sopenharmony_ci  ``ETHTOOL_A_MM_VERIFY_TIME``       u32     see MM_GET description
198662306a36Sopenharmony_ci  ``ETHTOOL_A_MM_VERIFY_ENABLED``    bool    see MM_GET description
198762306a36Sopenharmony_ci  ``ETHTOOL_A_MM_TX_ENABLED``        bool    see MM_GET description
198862306a36Sopenharmony_ci  ``ETHTOOL_A_MM_PMAC_ENABLED``      bool    see MM_GET description
198962306a36Sopenharmony_ci  ``ETHTOOL_A_MM_TX_MIN_FRAG_SIZE``  u32     see MM_GET description
199062306a36Sopenharmony_ci  =================================  ======  ==========================
199162306a36Sopenharmony_ci
199262306a36Sopenharmony_ciThe attributes are propagated to the driver through the following structure:
199362306a36Sopenharmony_ci
199462306a36Sopenharmony_ci.. kernel-doc:: include/linux/ethtool.h
199562306a36Sopenharmony_ci    :identifiers: ethtool_mm_cfg
199662306a36Sopenharmony_ci
199762306a36Sopenharmony_ciRequest translation
199862306a36Sopenharmony_ci===================
199962306a36Sopenharmony_ci
200062306a36Sopenharmony_ciThe following table maps ioctl commands to netlink commands providing their
200162306a36Sopenharmony_cifunctionality. Entries with "n/a" in right column are commands which do not
200262306a36Sopenharmony_cihave their netlink replacement yet. Entries which "n/a" in the left column
200362306a36Sopenharmony_ciare netlink only.
200462306a36Sopenharmony_ci
200562306a36Sopenharmony_ci  =================================== =====================================
200662306a36Sopenharmony_ci  ioctl command                       netlink command
200762306a36Sopenharmony_ci  =================================== =====================================
200862306a36Sopenharmony_ci  ``ETHTOOL_GSET``                    ``ETHTOOL_MSG_LINKINFO_GET``
200962306a36Sopenharmony_ci                                      ``ETHTOOL_MSG_LINKMODES_GET``
201062306a36Sopenharmony_ci  ``ETHTOOL_SSET``                    ``ETHTOOL_MSG_LINKINFO_SET``
201162306a36Sopenharmony_ci                                      ``ETHTOOL_MSG_LINKMODES_SET``
201262306a36Sopenharmony_ci  ``ETHTOOL_GDRVINFO``                n/a
201362306a36Sopenharmony_ci  ``ETHTOOL_GREGS``                   n/a
201462306a36Sopenharmony_ci  ``ETHTOOL_GWOL``                    ``ETHTOOL_MSG_WOL_GET``
201562306a36Sopenharmony_ci  ``ETHTOOL_SWOL``                    ``ETHTOOL_MSG_WOL_SET``
201662306a36Sopenharmony_ci  ``ETHTOOL_GMSGLVL``                 ``ETHTOOL_MSG_DEBUG_GET``
201762306a36Sopenharmony_ci  ``ETHTOOL_SMSGLVL``                 ``ETHTOOL_MSG_DEBUG_SET``
201862306a36Sopenharmony_ci  ``ETHTOOL_NWAY_RST``                n/a
201962306a36Sopenharmony_ci  ``ETHTOOL_GLINK``                   ``ETHTOOL_MSG_LINKSTATE_GET``
202062306a36Sopenharmony_ci  ``ETHTOOL_GEEPROM``                 n/a
202162306a36Sopenharmony_ci  ``ETHTOOL_SEEPROM``                 n/a
202262306a36Sopenharmony_ci  ``ETHTOOL_GCOALESCE``               ``ETHTOOL_MSG_COALESCE_GET``
202362306a36Sopenharmony_ci  ``ETHTOOL_SCOALESCE``               ``ETHTOOL_MSG_COALESCE_SET``
202462306a36Sopenharmony_ci  ``ETHTOOL_GRINGPARAM``              ``ETHTOOL_MSG_RINGS_GET``
202562306a36Sopenharmony_ci  ``ETHTOOL_SRINGPARAM``              ``ETHTOOL_MSG_RINGS_SET``
202662306a36Sopenharmony_ci  ``ETHTOOL_GPAUSEPARAM``             ``ETHTOOL_MSG_PAUSE_GET``
202762306a36Sopenharmony_ci  ``ETHTOOL_SPAUSEPARAM``             ``ETHTOOL_MSG_PAUSE_SET``
202862306a36Sopenharmony_ci  ``ETHTOOL_GRXCSUM``                 ``ETHTOOL_MSG_FEATURES_GET``
202962306a36Sopenharmony_ci  ``ETHTOOL_SRXCSUM``                 ``ETHTOOL_MSG_FEATURES_SET``
203062306a36Sopenharmony_ci  ``ETHTOOL_GTXCSUM``                 ``ETHTOOL_MSG_FEATURES_GET``
203162306a36Sopenharmony_ci  ``ETHTOOL_STXCSUM``                 ``ETHTOOL_MSG_FEATURES_SET``
203262306a36Sopenharmony_ci  ``ETHTOOL_GSG``                     ``ETHTOOL_MSG_FEATURES_GET``
203362306a36Sopenharmony_ci  ``ETHTOOL_SSG``                     ``ETHTOOL_MSG_FEATURES_SET``
203462306a36Sopenharmony_ci  ``ETHTOOL_TEST``                    n/a
203562306a36Sopenharmony_ci  ``ETHTOOL_GSTRINGS``                ``ETHTOOL_MSG_STRSET_GET``
203662306a36Sopenharmony_ci  ``ETHTOOL_PHYS_ID``                 n/a
203762306a36Sopenharmony_ci  ``ETHTOOL_GSTATS``                  n/a
203862306a36Sopenharmony_ci  ``ETHTOOL_GTSO``                    ``ETHTOOL_MSG_FEATURES_GET``
203962306a36Sopenharmony_ci  ``ETHTOOL_STSO``                    ``ETHTOOL_MSG_FEATURES_SET``
204062306a36Sopenharmony_ci  ``ETHTOOL_GPERMADDR``               rtnetlink ``RTM_GETLINK``
204162306a36Sopenharmony_ci  ``ETHTOOL_GUFO``                    ``ETHTOOL_MSG_FEATURES_GET``
204262306a36Sopenharmony_ci  ``ETHTOOL_SUFO``                    ``ETHTOOL_MSG_FEATURES_SET``
204362306a36Sopenharmony_ci  ``ETHTOOL_GGSO``                    ``ETHTOOL_MSG_FEATURES_GET``
204462306a36Sopenharmony_ci  ``ETHTOOL_SGSO``                    ``ETHTOOL_MSG_FEATURES_SET``
204562306a36Sopenharmony_ci  ``ETHTOOL_GFLAGS``                  ``ETHTOOL_MSG_FEATURES_GET``
204662306a36Sopenharmony_ci  ``ETHTOOL_SFLAGS``                  ``ETHTOOL_MSG_FEATURES_SET``
204762306a36Sopenharmony_ci  ``ETHTOOL_GPFLAGS``                 ``ETHTOOL_MSG_PRIVFLAGS_GET``
204862306a36Sopenharmony_ci  ``ETHTOOL_SPFLAGS``                 ``ETHTOOL_MSG_PRIVFLAGS_SET``
204962306a36Sopenharmony_ci  ``ETHTOOL_GRXFH``                   n/a
205062306a36Sopenharmony_ci  ``ETHTOOL_SRXFH``                   n/a
205162306a36Sopenharmony_ci  ``ETHTOOL_GGRO``                    ``ETHTOOL_MSG_FEATURES_GET``
205262306a36Sopenharmony_ci  ``ETHTOOL_SGRO``                    ``ETHTOOL_MSG_FEATURES_SET``
205362306a36Sopenharmony_ci  ``ETHTOOL_GRXRINGS``                n/a
205462306a36Sopenharmony_ci  ``ETHTOOL_GRXCLSRLCNT``             n/a
205562306a36Sopenharmony_ci  ``ETHTOOL_GRXCLSRULE``              n/a
205662306a36Sopenharmony_ci  ``ETHTOOL_GRXCLSRLALL``             n/a
205762306a36Sopenharmony_ci  ``ETHTOOL_SRXCLSRLDEL``             n/a
205862306a36Sopenharmony_ci  ``ETHTOOL_SRXCLSRLINS``             n/a
205962306a36Sopenharmony_ci  ``ETHTOOL_FLASHDEV``                n/a
206062306a36Sopenharmony_ci  ``ETHTOOL_RESET``                   n/a
206162306a36Sopenharmony_ci  ``ETHTOOL_SRXNTUPLE``               n/a
206262306a36Sopenharmony_ci  ``ETHTOOL_GRXNTUPLE``               n/a
206362306a36Sopenharmony_ci  ``ETHTOOL_GSSET_INFO``              ``ETHTOOL_MSG_STRSET_GET``
206462306a36Sopenharmony_ci  ``ETHTOOL_GRXFHINDIR``              n/a
206562306a36Sopenharmony_ci  ``ETHTOOL_SRXFHINDIR``              n/a
206662306a36Sopenharmony_ci  ``ETHTOOL_GFEATURES``               ``ETHTOOL_MSG_FEATURES_GET``
206762306a36Sopenharmony_ci  ``ETHTOOL_SFEATURES``               ``ETHTOOL_MSG_FEATURES_SET``
206862306a36Sopenharmony_ci  ``ETHTOOL_GCHANNELS``               ``ETHTOOL_MSG_CHANNELS_GET``
206962306a36Sopenharmony_ci  ``ETHTOOL_SCHANNELS``               ``ETHTOOL_MSG_CHANNELS_SET``
207062306a36Sopenharmony_ci  ``ETHTOOL_SET_DUMP``                n/a
207162306a36Sopenharmony_ci  ``ETHTOOL_GET_DUMP_FLAG``           n/a
207262306a36Sopenharmony_ci  ``ETHTOOL_GET_DUMP_DATA``           n/a
207362306a36Sopenharmony_ci  ``ETHTOOL_GET_TS_INFO``             ``ETHTOOL_MSG_TSINFO_GET``
207462306a36Sopenharmony_ci  ``ETHTOOL_GMODULEINFO``             ``ETHTOOL_MSG_MODULE_EEPROM_GET``
207562306a36Sopenharmony_ci  ``ETHTOOL_GMODULEEEPROM``           ``ETHTOOL_MSG_MODULE_EEPROM_GET``
207662306a36Sopenharmony_ci  ``ETHTOOL_GEEE``                    ``ETHTOOL_MSG_EEE_GET``
207762306a36Sopenharmony_ci  ``ETHTOOL_SEEE``                    ``ETHTOOL_MSG_EEE_SET``
207862306a36Sopenharmony_ci  ``ETHTOOL_GRSSH``                   ``ETHTOOL_MSG_RSS_GET``
207962306a36Sopenharmony_ci  ``ETHTOOL_SRSSH``                   n/a
208062306a36Sopenharmony_ci  ``ETHTOOL_GTUNABLE``                n/a
208162306a36Sopenharmony_ci  ``ETHTOOL_STUNABLE``                n/a
208262306a36Sopenharmony_ci  ``ETHTOOL_GPHYSTATS``               n/a
208362306a36Sopenharmony_ci  ``ETHTOOL_PERQUEUE``                n/a
208462306a36Sopenharmony_ci  ``ETHTOOL_GLINKSETTINGS``           ``ETHTOOL_MSG_LINKINFO_GET``
208562306a36Sopenharmony_ci                                      ``ETHTOOL_MSG_LINKMODES_GET``
208662306a36Sopenharmony_ci  ``ETHTOOL_SLINKSETTINGS``           ``ETHTOOL_MSG_LINKINFO_SET``
208762306a36Sopenharmony_ci                                      ``ETHTOOL_MSG_LINKMODES_SET``
208862306a36Sopenharmony_ci  ``ETHTOOL_PHY_GTUNABLE``            n/a
208962306a36Sopenharmony_ci  ``ETHTOOL_PHY_STUNABLE``            n/a
209062306a36Sopenharmony_ci  ``ETHTOOL_GFECPARAM``               ``ETHTOOL_MSG_FEC_GET``
209162306a36Sopenharmony_ci  ``ETHTOOL_SFECPARAM``               ``ETHTOOL_MSG_FEC_SET``
209262306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_CABLE_TEST_ACT``
209362306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_CABLE_TEST_TDR_ACT``
209462306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_TUNNEL_INFO_GET``
209562306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_PHC_VCLOCKS_GET``
209662306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_MODULE_GET``
209762306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_MODULE_SET``
209862306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_PLCA_GET_CFG``
209962306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_PLCA_SET_CFG``
210062306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_PLCA_GET_STATUS``
210162306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_MM_GET``
210262306a36Sopenharmony_ci  n/a                                 ``ETHTOOL_MSG_MM_SET``
210362306a36Sopenharmony_ci  =================================== =====================================
2104