.. SPDX-License-Identifier: GPL-2.0
.. NOTE: This document was auto-generated.


========================================
Family ``ethtool`` netlink specification
========================================


.. contents:: :depth: 3


-------
Summary
-------


Partial family for Ethtool Netlink.

----------
Operations
----------


.. _ethtool-operation-strset-get:

strset-get
==========
Get string set from the kernel.

:attribute-set: :ref:`ethtool-attribute-set-strset`
:do:
    **request**
        :attributes: [``header``, ``stringsets``, ``counts-only``]

    **reply**
        :attributes: [``header``, ``stringsets``]

:dump:
    **request**
        :attributes: [``header``, ``stringsets``, ``counts-only``]

    **reply**
        :attributes: [``header``, ``stringsets``]



.. _ethtool-operation-linkinfo-get:

linkinfo-get
============
Get link info.

:attribute-set: :ref:`ethtool-attribute-set-linkinfo`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``port``, ``phyaddr``, ``tp-mdix``, ``tp-mdix-ctrl``, ``transceiver``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``port``, ``phyaddr``, ``tp-mdix``, ``tp-mdix-ctrl``, ``transceiver``]



.. _ethtool-operation-linkinfo-set:

linkinfo-set
============
Set link info.

:attribute-set: :ref:`ethtool-attribute-set-linkinfo`
:do:
    **request**
        :attributes: [``header``, ``port``, ``phyaddr``, ``tp-mdix``, ``tp-mdix-ctrl``, ``transceiver``]



.. _ethtool-operation-linkinfo-ntf:

linkinfo-ntf
============
Notification for change in link info.

:notify: linkinfo-get


.. _ethtool-operation-linkmodes-get:

linkmodes-get
=============
Get link modes.

:attribute-set: :ref:`ethtool-attribute-set-linkmodes`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``autoneg``, ``ours``, ``peer``, ``speed``, ``duplex``, ``master-slave-cfg``, ``master-slave-state``, ``lanes``, ``rate-matching``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``autoneg``, ``ours``, ``peer``, ``speed``, ``duplex``, ``master-slave-cfg``, ``master-slave-state``, ``lanes``, ``rate-matching``]



.. _ethtool-operation-linkmodes-set:

linkmodes-set
=============
Set link modes.

:attribute-set: :ref:`ethtool-attribute-set-linkmodes`
:do:
    **request**
        :attributes: [``header``, ``autoneg``, ``ours``, ``peer``, ``speed``, ``duplex``, ``master-slave-cfg``, ``master-slave-state``, ``lanes``, ``rate-matching``]



.. _ethtool-operation-linkmodes-ntf:

linkmodes-ntf
=============
Notification for change in link modes.

:notify: linkmodes-get


.. _ethtool-operation-linkstate-get:

linkstate-get
=============
Get link state.

:attribute-set: :ref:`ethtool-attribute-set-linkstate`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``link``, ``sqi``, ``sqi-max``, ``ext-state``, ``ext-substate``, ``ext-down-cnt``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``link``, ``sqi``, ``sqi-max``, ``ext-state``, ``ext-substate``, ``ext-down-cnt``]



.. _ethtool-operation-debug-get:

debug-get
=========
Get debug message mask.

:attribute-set: :ref:`ethtool-attribute-set-debug`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``msgmask``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``msgmask``]



.. _ethtool-operation-debug-set:

debug-set
=========
Set debug message mask.

:attribute-set: :ref:`ethtool-attribute-set-debug`
:do:
    **request**
        :attributes: [``header``, ``msgmask``]



.. _ethtool-operation-debug-ntf:

debug-ntf
=========
Notification for change in debug message mask.

:notify: debug-get


.. _ethtool-operation-wol-get:

wol-get
=======
Get WOL params.

:attribute-set: :ref:`ethtool-attribute-set-wol`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``modes``, ``sopass``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``modes``, ``sopass``]



.. _ethtool-operation-wol-set:

wol-set
=======
Set WOL params.

:attribute-set: :ref:`ethtool-attribute-set-wol`
:do:
    **request**
        :attributes: [``header``, ``modes``, ``sopass``]



.. _ethtool-operation-wol-ntf:

wol-ntf
=======
Notification for change in WOL params.

:notify: wol-get


.. _ethtool-operation-features-get:

features-get
============
Get features.

:attribute-set: :ref:`ethtool-attribute-set-features`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``hw``, ``wanted``, ``active``, ``nochange``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``hw``, ``wanted``, ``active``, ``nochange``]



.. _ethtool-operation-features-set:

features-set
============
Set features.

:attribute-set: :ref:`ethtool-attribute-set-features`
:do:
    **request**
        :attributes: [``header``, ``hw``, ``wanted``, ``active``, ``nochange``]

    **reply**
        :attributes: [``header``, ``hw``, ``wanted``, ``active``, ``nochange``]



.. _ethtool-operation-features-ntf:

features-ntf
============
Notification for change in features.

:notify: features-get


.. _ethtool-operation-privflags-get:

privflags-get
=============
Get device private flags.

:attribute-set: :ref:`ethtool-attribute-set-privflags`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``flags``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``flags``]



.. _ethtool-operation-privflags-set:

privflags-set
=============
Set device private flags.

:attribute-set: :ref:`ethtool-attribute-set-privflags`
:do:
    **request**
        :attributes: [``header``, ``flags``]



.. _ethtool-operation-privflags-ntf:

privflags-ntf
=============
Notification for change in device private flags.

:notify: privflags-get


.. _ethtool-operation-rings-get:

rings-get
=========
Get ring params.

:attribute-set: :ref:`ethtool-attribute-set-rings`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``rx-max``, ``rx-mini-max``, ``rx-jumbo-max``, ``tx-max``, ``rx``, ``rx-mini``, ``rx-jumbo``, ``tx``, ``rx-buf-len``, ``tcp-data-split``, ``cqe-size``, ``tx-push``, ``rx-push``, ``tx-push-buf-len``, ``tx-push-buf-len-max``, ``hds-thresh``, ``hds-thresh-max``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``rx-max``, ``rx-mini-max``, ``rx-jumbo-max``, ``tx-max``, ``rx``, ``rx-mini``, ``rx-jumbo``, ``tx``, ``rx-buf-len``, ``tcp-data-split``, ``cqe-size``, ``tx-push``, ``rx-push``, ``tx-push-buf-len``, ``tx-push-buf-len-max``, ``hds-thresh``, ``hds-thresh-max``]



.. _ethtool-operation-rings-set:

rings-set
=========
Set ring params.

:attribute-set: :ref:`ethtool-attribute-set-rings`
:do:
    **request**
        :attributes: [``header``, ``rx-max``, ``rx-mini-max``, ``rx-jumbo-max``, ``tx-max``, ``rx``, ``rx-mini``, ``rx-jumbo``, ``tx``, ``rx-buf-len``, ``tcp-data-split``, ``cqe-size``, ``tx-push``, ``rx-push``, ``tx-push-buf-len``, ``tx-push-buf-len-max``, ``hds-thresh``, ``hds-thresh-max``]



.. _ethtool-operation-rings-ntf:

rings-ntf
=========
Notification for change in ring params.

:notify: rings-get


.. _ethtool-operation-channels-get:

channels-get
============
Get channel params.

:attribute-set: :ref:`ethtool-attribute-set-channels`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``rx-max``, ``tx-max``, ``other-max``, ``combined-max``, ``rx-count``, ``tx-count``, ``other-count``, ``combined-count``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``rx-max``, ``tx-max``, ``other-max``, ``combined-max``, ``rx-count``, ``tx-count``, ``other-count``, ``combined-count``]



.. _ethtool-operation-channels-set:

channels-set
============
Set channel params.

:attribute-set: :ref:`ethtool-attribute-set-channels`
:do:
    **request**
        :attributes: [``header``, ``rx-max``, ``tx-max``, ``other-max``, ``combined-max``, ``rx-count``, ``tx-count``, ``other-count``, ``combined-count``]



.. _ethtool-operation-channels-ntf:

channels-ntf
============
Notification for change in channel params.

:notify: channels-get


.. _ethtool-operation-coalesce-get:

coalesce-get
============
Get coalesce params.

:attribute-set: :ref:`ethtool-attribute-set-coalesce`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``rx-usecs``, ``rx-max-frames``, ``rx-usecs-irq``, ``rx-max-frames-irq``, ``tx-usecs``, ``tx-max-frames``, ``tx-usecs-irq``, ``tx-max-frames-irq``, ``stats-block-usecs``, ``use-adaptive-rx``, ``use-adaptive-tx``, ``pkt-rate-low``, ``rx-usecs-low``, ``rx-max-frames-low``, ``tx-usecs-low``, ``tx-max-frames-low``, ``pkt-rate-high``, ``rx-usecs-high``, ``rx-max-frames-high``, ``tx-usecs-high``, ``tx-max-frames-high``, ``rate-sample-interval``, ``use-cqe-mode-tx``, ``use-cqe-mode-rx``, ``tx-aggr-max-bytes``, ``tx-aggr-max-frames``, ``tx-aggr-time-usecs``, ``rx-profile``, ``tx-profile``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``rx-usecs``, ``rx-max-frames``, ``rx-usecs-irq``, ``rx-max-frames-irq``, ``tx-usecs``, ``tx-max-frames``, ``tx-usecs-irq``, ``tx-max-frames-irq``, ``stats-block-usecs``, ``use-adaptive-rx``, ``use-adaptive-tx``, ``pkt-rate-low``, ``rx-usecs-low``, ``rx-max-frames-low``, ``tx-usecs-low``, ``tx-max-frames-low``, ``pkt-rate-high``, ``rx-usecs-high``, ``rx-max-frames-high``, ``tx-usecs-high``, ``tx-max-frames-high``, ``rate-sample-interval``, ``use-cqe-mode-tx``, ``use-cqe-mode-rx``, ``tx-aggr-max-bytes``, ``tx-aggr-max-frames``, ``tx-aggr-time-usecs``, ``rx-profile``, ``tx-profile``]



.. _ethtool-operation-coalesce-set:

coalesce-set
============
Set coalesce params.

:attribute-set: :ref:`ethtool-attribute-set-coalesce`
:do:
    **request**
        :attributes: [``header``, ``rx-usecs``, ``rx-max-frames``, ``rx-usecs-irq``, ``rx-max-frames-irq``, ``tx-usecs``, ``tx-max-frames``, ``tx-usecs-irq``, ``tx-max-frames-irq``, ``stats-block-usecs``, ``use-adaptive-rx``, ``use-adaptive-tx``, ``pkt-rate-low``, ``rx-usecs-low``, ``rx-max-frames-low``, ``tx-usecs-low``, ``tx-max-frames-low``, ``pkt-rate-high``, ``rx-usecs-high``, ``rx-max-frames-high``, ``tx-usecs-high``, ``tx-max-frames-high``, ``rate-sample-interval``, ``use-cqe-mode-tx``, ``use-cqe-mode-rx``, ``tx-aggr-max-bytes``, ``tx-aggr-max-frames``, ``tx-aggr-time-usecs``, ``rx-profile``, ``tx-profile``]



.. _ethtool-operation-coalesce-ntf:

coalesce-ntf
============
Notification for change in coalesce params.

:notify: coalesce-get


.. _ethtool-operation-pause-get:

pause-get
=========
Get pause params.

:attribute-set: :ref:`ethtool-attribute-set-pause`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``autoneg``, ``rx``, ``tx``, ``stats``, ``stats-src``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``autoneg``, ``rx``, ``tx``, ``stats``, ``stats-src``]



.. _ethtool-operation-pause-set:

pause-set
=========
Set pause params.

:attribute-set: :ref:`ethtool-attribute-set-pause`
:do:
    **request**
        :attributes: [``header``, ``autoneg``, ``rx``, ``tx``, ``stats``, ``stats-src``]



.. _ethtool-operation-pause-ntf:

pause-ntf
=========
Notification for change in pause params.

:notify: pause-get


.. _ethtool-operation-eee-get:

eee-get
=======
Get eee params.

:attribute-set: :ref:`ethtool-attribute-set-eee`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``modes-ours``, ``modes-peer``, ``active``, ``enabled``, ``tx-lpi-enabled``, ``tx-lpi-timer``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``modes-ours``, ``modes-peer``, ``active``, ``enabled``, ``tx-lpi-enabled``, ``tx-lpi-timer``]



.. _ethtool-operation-eee-set:

eee-set
=======
Set eee params.

:attribute-set: :ref:`ethtool-attribute-set-eee`
:do:
    **request**
        :attributes: [``header``, ``modes-ours``, ``modes-peer``, ``active``, ``enabled``, ``tx-lpi-enabled``, ``tx-lpi-timer``]



.. _ethtool-operation-eee-ntf:

eee-ntf
=======
Notification for change in eee params.

:notify: eee-get


.. _ethtool-operation-tsinfo-get:

tsinfo-get
==========
Get tsinfo params.

:attribute-set: :ref:`ethtool-attribute-set-tsinfo`
:do:
    **request**
        :attributes: [``header``, ``hwtstamp-provider``]

    **reply**
        :attributes: [``header``, ``timestamping``, ``tx-types``, ``rx-filters``, ``phc-index``, ``stats``, ``hwtstamp-provider``]

:dump:
    **request**
        :attributes: [``header``, ``hwtstamp-provider``]

    **reply**
        :attributes: [``header``, ``timestamping``, ``tx-types``, ``rx-filters``, ``phc-index``, ``stats``, ``hwtstamp-provider``]



.. _ethtool-operation-cable-test-act:

cable-test-act
==============
Cable test.

:attribute-set: :ref:`ethtool-attribute-set-cable-test`
:do:
    **request**
        :attributes: [``header``]



.. _ethtool-operation-cable-test-ntf:

cable-test-ntf
==============
Cable test notification.

:attribute-set: :ref:`ethtool-attribute-set-cable-test-ntf`
:event: {'attributes': ['header', 'status']}


.. _ethtool-operation-cable-test-tdr-act:

cable-test-tdr-act
==================
Cable test TDR.

:attribute-set: :ref:`ethtool-attribute-set-cable-test-tdr`
:do:
    **request**
        :attributes: [``header``]



.. _ethtool-operation-cable-test-tdr-ntf:

cable-test-tdr-ntf
==================
Cable test TDR notification.

:attribute-set: :ref:`ethtool-attribute-set-cable-test-tdr-ntf`
:event: {'attributes': ['header', 'status', 'nest']}


.. _ethtool-operation-tunnel-info-get:

tunnel-info-get
===============
Get tsinfo params.

:attribute-set: :ref:`ethtool-attribute-set-tunnel-info`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``udp-ports``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``udp-ports``]



.. _ethtool-operation-fec-get:

fec-get
=======
Get FEC params.

:attribute-set: :ref:`ethtool-attribute-set-fec`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``modes``, ``auto``, ``active``, ``stats``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``modes``, ``auto``, ``active``, ``stats``]



.. _ethtool-operation-fec-set:

fec-set
=======
Set FEC params.

:attribute-set: :ref:`ethtool-attribute-set-fec`
:do:
    **request**
        :attributes: [``header``, ``modes``, ``auto``, ``active``, ``stats``]



.. _ethtool-operation-fec-ntf:

fec-ntf
=======
Notification for change in FEC params.

:notify: fec-get


.. _ethtool-operation-module-eeprom-get:

module-eeprom-get
=================
Get module EEPROM params.

:attribute-set: :ref:`ethtool-attribute-set-module-eeprom`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``offset``, ``length``, ``page``, ``bank``, ``i2c-address``, ``data``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``offset``, ``length``, ``page``, ``bank``, ``i2c-address``, ``data``]



.. _ethtool-operation-stats-get:

stats-get
=========
Get statistics.

:attribute-set: :ref:`ethtool-attribute-set-stats`
:do:
    **request**
        :attributes: [``header``, ``groups``]

    **reply**
        :attributes: [``header``, ``groups``, ``grp``, ``src``]

:dump:
    **request**
        :attributes: [``header``, ``groups``]

    **reply**
        :attributes: [``header``, ``groups``, ``grp``, ``src``]



.. _ethtool-operation-phc-vclocks-get:

phc-vclocks-get
===============
Get PHC VCLOCKs.

:attribute-set: :ref:`ethtool-attribute-set-phc-vclocks`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``num``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``num``]



.. _ethtool-operation-module-get:

module-get
==========
Get module params.

:attribute-set: :ref:`ethtool-attribute-set-module`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``power-mode-policy``, ``power-mode``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``power-mode-policy``, ``power-mode``]



.. _ethtool-operation-module-set:

module-set
==========
Set module params.

:attribute-set: :ref:`ethtool-attribute-set-module`
:do:
    **request**
        :attributes: [``header``, ``power-mode-policy``, ``power-mode``]



.. _ethtool-operation-module-ntf:

module-ntf
==========
Notification for change in module params.

:notify: module-get


.. _ethtool-operation-pse-get:

pse-get
=======
Get Power Sourcing Equipment params.

:attribute-set: :ref:`ethtool-attribute-set-pse`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``podl-pse-admin-state``, ``podl-pse-admin-control``, ``podl-pse-pw-d-status``, ``c33-pse-admin-state``, ``c33-pse-admin-control``, ``c33-pse-pw-d-status``, ``c33-pse-pw-class``, ``c33-pse-actual-pw``, ``c33-pse-ext-state``, ``c33-pse-ext-substate``, ``c33-pse-avail-pw-limit``, ``c33-pse-pw-limit-ranges``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``podl-pse-admin-state``, ``podl-pse-admin-control``, ``podl-pse-pw-d-status``, ``c33-pse-admin-state``, ``c33-pse-admin-control``, ``c33-pse-pw-d-status``, ``c33-pse-pw-class``, ``c33-pse-actual-pw``, ``c33-pse-ext-state``, ``c33-pse-ext-substate``, ``c33-pse-avail-pw-limit``, ``c33-pse-pw-limit-ranges``]



.. _ethtool-operation-pse-set:

pse-set
=======
Set Power Sourcing Equipment params.

:attribute-set: :ref:`ethtool-attribute-set-pse`
:do:
    **request**
        :attributes: [``header``, ``podl-pse-admin-control``, ``c33-pse-admin-control``, ``c33-pse-avail-pw-limit``]



.. _ethtool-operation-rss-get:

rss-get
=======
Get RSS params.

:attribute-set: :ref:`ethtool-attribute-set-rss`
:do:
    **request**
        :attributes: [``header``, ``context``]

    **reply**
        :attributes: [``header``, ``context``, ``hfunc``, ``indir``, ``hkey``, ``input_xfrm``]

:dump:
    **request**
        :attributes: [``header``, ``start-context``]

    **reply**
        :attributes: [``header``, ``context``, ``hfunc``, ``indir``, ``hkey``, ``input_xfrm``]



.. _ethtool-operation-plca-get-cfg:

plca-get-cfg
============
Get PLCA params.

:attribute-set: :ref:`ethtool-attribute-set-plca`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``version``, ``enabled``, ``status``, ``node-cnt``, ``node-id``, ``to-tmr``, ``burst-cnt``, ``burst-tmr``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``version``, ``enabled``, ``status``, ``node-cnt``, ``node-id``, ``to-tmr``, ``burst-cnt``, ``burst-tmr``]



.. _ethtool-operation-plca-set-cfg:

plca-set-cfg
============
Set PLCA params.

:attribute-set: :ref:`ethtool-attribute-set-plca`
:do:
    **request**
        :attributes: [``header``, ``version``, ``enabled``, ``status``, ``node-cnt``, ``node-id``, ``to-tmr``, ``burst-cnt``, ``burst-tmr``]



.. _ethtool-operation-plca-get-status:

plca-get-status
===============
Get PLCA status params.

:attribute-set: :ref:`ethtool-attribute-set-plca`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``version``, ``enabled``, ``status``, ``node-cnt``, ``node-id``, ``to-tmr``, ``burst-cnt``, ``burst-tmr``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``version``, ``enabled``, ``status``, ``node-cnt``, ``node-id``, ``to-tmr``, ``burst-cnt``, ``burst-tmr``]



.. _ethtool-operation-plca-ntf:

plca-ntf
========
Notification for change in PLCA params.

:notify: plca-get-cfg


.. _ethtool-operation-mm-get:

mm-get
======
Get MAC Merge configuration and state

:attribute-set: :ref:`ethtool-attribute-set-mm`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``pmac-enabled``, ``tx-enabled``, ``tx-active``, ``tx-min-frag-size``, ``rx-min-frag-size``, ``verify-enabled``, ``verify-time``, ``max-verify-time``, ``stats``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``pmac-enabled``, ``tx-enabled``, ``tx-active``, ``tx-min-frag-size``, ``rx-min-frag-size``, ``verify-enabled``, ``verify-time``, ``max-verify-time``, ``stats``]



.. _ethtool-operation-mm-set:

mm-set
======
Set MAC Merge configuration

:attribute-set: :ref:`ethtool-attribute-set-mm`
:do:
    **request**
        :attributes: [``header``, ``verify-enabled``, ``verify-time``, ``tx-enabled``, ``pmac-enabled``, ``tx-min-frag-size``]



.. _ethtool-operation-mm-ntf:

mm-ntf
======
Notification for change in MAC Merge configuration.

:notify: mm-get


.. _ethtool-operation-module-fw-flash-act:

module-fw-flash-act
===================
Flash transceiver module firmware.

:attribute-set: :ref:`ethtool-attribute-set-module-fw-flash`
:do:
    **request**
        :attributes: [``header``, ``file-name``, ``password``]



.. _ethtool-operation-module-fw-flash-ntf:

module-fw-flash-ntf
===================
Notification for firmware flashing progress and status.

:attribute-set: :ref:`ethtool-attribute-set-module-fw-flash`
:event: {'attributes': ['header', 'status', 'status-msg', 'done', 'total']}


.. _ethtool-operation-phy-get:

phy-get
=======
Get PHY devices attached to an interface

:attribute-set: :ref:`ethtool-attribute-set-phy`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``index``, ``drvname``, ``name``, ``upstream-type``, ``upstream-index``, ``upstream-sfp-name``, ``downstream-sfp-name``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``index``, ``drvname``, ``name``, ``upstream-type``, ``upstream-index``, ``upstream-sfp-name``, ``downstream-sfp-name``]



.. _ethtool-operation-phy-ntf:

phy-ntf
=======
Notification for change in PHY devices.

:notify: phy-get


.. _ethtool-operation-tsconfig-get:

tsconfig-get
============
Get hwtstamp config.

:attribute-set: :ref:`ethtool-attribute-set-tsconfig`
:do:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``hwtstamp-provider``, ``tx-types``, ``rx-filters``, ``hwtstamp-flags``]

:dump:
    **request**
        :attributes: [``header``]

    **reply**
        :attributes: [``header``, ``hwtstamp-provider``, ``tx-types``, ``rx-filters``, ``hwtstamp-flags``]



.. _ethtool-operation-tsconfig-set:

tsconfig-set
============
Set hwtstamp config.

:attribute-set: :ref:`ethtool-attribute-set-tsconfig`
:do:
    **request**
        :attributes: [``header``, ``hwtstamp-provider``, ``tx-types``, ``rx-filters``, ``hwtstamp-flags``]

    **reply**
        :attributes: [``header``, ``hwtstamp-provider``, ``tx-types``, ``rx-filters``, ``hwtstamp-flags``]




-----------
Definitions
-----------


.. _ethtool-definition-udp-tunnel-type:

udp-tunnel-type
===============
:enum-name: None
:type: enum
:enum-cnt-name: __ethtool-udp-tunnel-type-cnt


:entries:
    - ``vxlan``
    - ``geneve``
    - ``vxlan-gpe``


.. _ethtool-definition-stringset:

stringset
=========
:type: enum
:header: linux/ethtool.h


:entries:


.. _ethtool-definition-header-flags:

header-flags
============
:type: flags
:name-prefix: ethtool-flag-
:doc: common ethtool header flags


:entries:
    :compact-bitsets: use compact bitsets in reply
    :omit-reply: provide optional reply for SET or ACT requests
    :stats: request statistics, if supported by the driver


.. _ethtool-definition-module-fw-flash-status:

module-fw-flash-status
======================
:type: enum
:doc: plug-in module firmware flashing status
:header: linux/ethtool.h


:entries:
    :started: The firmware flashing process has started.
    :in_progress: The firmware flashing process is in progress.
    :completed: The firmware flashing process was completed successfully.
    :error: The firmware flashing process was stopped due to an error.


.. _ethtool-definition-c33-pse-ext-state:

c33-pse-ext-state
=================
:doc: groups of PSE extended states functions. IEEE 802.3-2022 33.2.4.4 Variables
:type: enum
:name-prefix: ethtool-c33-pse-ext-state-
:header: linux/ethtool.h


:entries:
    :none: none
    :error-condition: Group of error_condition states
    :mr-mps-valid: Group of mr_mps_valid states
    :mr-pse-enable: Group of mr_pse_enable states
    :option-detect-ted: Group of option_detect_ted states
    :option-vport-lim: Group of option_vport_lim states
    :ovld-detected: Group of ovld_detected states
    :power-not-available: Group of power_not_available states
    :short-detected: Group of short_detected states


.. _ethtool-definition-phy-upstream-type:

phy-upstream-type
=================
:enum-name: None
:type: enum


:entries:
    - ``mac``
    - ``phy``


.. _ethtool-definition-tcp-data-split:

tcp-data-split
==============
:type: enum


:entries:
    - ``unknown``
    - ``disabled``
    - ``enabled``



--------------
Attribute sets
--------------


.. _ethtool-attribute-set-header:

header
======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


dev-index (``u32``)
~~~~~~~~~~~~~~~~~~~


dev-name (``string``)
~~~~~~~~~~~~~~~~~~~~~


flags (``u32``)
~~~~~~~~~~~~~~~
:enum: :ref:`ethtool-definition-header-flags`


phy-index (``u32``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-bitset-bit:

bitset-bit
==========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


index (``u32``)
~~~~~~~~~~~~~~~


name (``string``)
~~~~~~~~~~~~~~~~~


value (``flag``)
~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-bitset-bits:

bitset-bits
===========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


bit (``nest``)
~~~~~~~~~~~~~~
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-bitset-bit`


.. _ethtool-attribute-set-bitset:

bitset
======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


nomask (``flag``)
~~~~~~~~~~~~~~~~~


size (``u32``)
~~~~~~~~~~~~~~


bits (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset-bits`


value (``binary``)
~~~~~~~~~~~~~~~~~~


mask (``binary``)
~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-string:

string
======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


index (``u32``)
~~~~~~~~~~~~~~~


value (``string``)
~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-strings:

strings
=======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


string (``nest``)
~~~~~~~~~~~~~~~~~
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-string`


.. _ethtool-attribute-set-stringset:

stringset
=========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


id (``u32``)
~~~~~~~~~~~~


count (``u32``)
~~~~~~~~~~~~~~~


strings (``nest``)
~~~~~~~~~~~~~~~~~~
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-strings`


.. _ethtool-attribute-set-stringsets:

stringsets
==========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


stringset (``nest``)
~~~~~~~~~~~~~~~~~~~~
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-stringset`


.. _ethtool-attribute-set-strset:

strset
======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


stringsets (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-stringsets`


counts-only (``flag``)
~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-privflags:

privflags
=========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


flags (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


.. _ethtool-attribute-set-rings:

rings
=====
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


rx-max (``u32``)
~~~~~~~~~~~~~~~~


rx-mini-max (``u32``)
~~~~~~~~~~~~~~~~~~~~~


rx-jumbo-max (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


tx-max (``u32``)
~~~~~~~~~~~~~~~~


rx (``u32``)
~~~~~~~~~~~~


rx-mini (``u32``)
~~~~~~~~~~~~~~~~~


rx-jumbo (``u32``)
~~~~~~~~~~~~~~~~~~


tx (``u32``)
~~~~~~~~~~~~


rx-buf-len (``u32``)
~~~~~~~~~~~~~~~~~~~~


tcp-data-split (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~
:enum: :ref:`ethtool-definition-tcp-data-split`


cqe-size (``u32``)
~~~~~~~~~~~~~~~~~~


tx-push (``u8``)
~~~~~~~~~~~~~~~~


rx-push (``u8``)
~~~~~~~~~~~~~~~~


tx-push-buf-len (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


tx-push-buf-len-max (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


hds-thresh (``u32``)
~~~~~~~~~~~~~~~~~~~~


hds-thresh-max (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-mm-stat:

mm-stat
=======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pad (``pad``)
~~~~~~~~~~~~~


reassembly-errors (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:doc: aMACMergeFrameAssErrorCount


smd-errors (``u64``)
~~~~~~~~~~~~~~~~~~~~
:doc: aMACMergeFrameSmdErrorCount


reassembly-ok (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~
:doc: aMACMergeFrameAssOkCount


rx-frag-count (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~
:doc: aMACMergeFragCountRx


tx-frag-count (``u64``)
~~~~~~~~~~~~~~~~~~~~~~~
:doc: aMACMergeFragCountTx


hold-count (``u64``)
~~~~~~~~~~~~~~~~~~~~
:doc: aMACMergeHoldCount


.. _ethtool-attribute-set-mm:

mm
==
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


pmac-enabled (``u8``)
~~~~~~~~~~~~~~~~~~~~~


tx-enabled (``u8``)
~~~~~~~~~~~~~~~~~~~


tx-active (``u8``)
~~~~~~~~~~~~~~~~~~


tx-min-frag-size (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


rx-min-frag-size (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


verify-enabled (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~


verify-status (``u8``)
~~~~~~~~~~~~~~~~~~~~~~


verify-time (``u32``)
~~~~~~~~~~~~~~~~~~~~~


max-verify-time (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~


stats (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-mm-stat`


.. _ethtool-attribute-set-linkinfo:

linkinfo
========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


port (``u8``)
~~~~~~~~~~~~~


phyaddr (``u8``)
~~~~~~~~~~~~~~~~


tp-mdix (``u8``)
~~~~~~~~~~~~~~~~


tp-mdix-ctrl (``u8``)
~~~~~~~~~~~~~~~~~~~~~


transceiver (``u8``)
~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-linkmodes:

linkmodes
=========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


autoneg (``u8``)
~~~~~~~~~~~~~~~~


ours (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


peer (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


speed (``u32``)
~~~~~~~~~~~~~~~


duplex (``u8``)
~~~~~~~~~~~~~~~


master-slave-cfg (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~


master-slave-state (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


lanes (``u32``)
~~~~~~~~~~~~~~~


rate-matching (``u8``)
~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-linkstate:

linkstate
=========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


link (``u8``)
~~~~~~~~~~~~~


sqi (``u32``)
~~~~~~~~~~~~~


sqi-max (``u32``)
~~~~~~~~~~~~~~~~~


ext-state (``u8``)
~~~~~~~~~~~~~~~~~~


ext-substate (``u8``)
~~~~~~~~~~~~~~~~~~~~~


ext-down-cnt (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-debug:

debug
=====
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


msgmask (``nest``)
~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


.. _ethtool-attribute-set-wol:

wol
===
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


modes (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


sopass (``binary``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-features:

features
========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


hw (``nest``)
~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


wanted (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


active (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


nochange (``nest``)
~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


.. _ethtool-attribute-set-channels:

channels
========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


rx-max (``u32``)
~~~~~~~~~~~~~~~~


tx-max (``u32``)
~~~~~~~~~~~~~~~~


other-max (``u32``)
~~~~~~~~~~~~~~~~~~~


combined-max (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


rx-count (``u32``)
~~~~~~~~~~~~~~~~~~


tx-count (``u32``)
~~~~~~~~~~~~~~~~~~


other-count (``u32``)
~~~~~~~~~~~~~~~~~~~~~


combined-count (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-irq-moderation:

irq-moderation
==============
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


usec (``u32``)
~~~~~~~~~~~~~~


pkts (``u32``)
~~~~~~~~~~~~~~


comps (``u32``)
~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-profile:

profile
=======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


irq-moderation (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-irq-moderation`


.. _ethtool-attribute-set-coalesce:

coalesce
========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


rx-usecs (``u32``)
~~~~~~~~~~~~~~~~~~


rx-max-frames (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


rx-usecs-irq (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


rx-max-frames-irq (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


tx-usecs (``u32``)
~~~~~~~~~~~~~~~~~~


tx-max-frames (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


tx-usecs-irq (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


tx-max-frames-irq (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


stats-block-usecs (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


use-adaptive-rx (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


use-adaptive-tx (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


pkt-rate-low (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


rx-usecs-low (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


rx-max-frames-low (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


tx-usecs-low (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


tx-max-frames-low (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


pkt-rate-high (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


rx-usecs-high (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


rx-max-frames-high (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


tx-usecs-high (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


tx-max-frames-high (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


rate-sample-interval (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


use-cqe-mode-tx (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


use-cqe-mode-rx (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~


tx-aggr-max-bytes (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~


tx-aggr-max-frames (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


tx-aggr-time-usecs (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~


rx-profile (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-profile`


tx-profile (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-profile`


.. _ethtool-attribute-set-pause-stat:

pause-stat
==========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pad (``pad``)
~~~~~~~~~~~~~


tx-frames (``u64``)
~~~~~~~~~~~~~~~~~~~


rx-frames (``u64``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-pause:

pause
=====
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


autoneg (``u8``)
~~~~~~~~~~~~~~~~


rx (``u8``)
~~~~~~~~~~~


tx (``u8``)
~~~~~~~~~~~


stats (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-pause-stat`


stats-src (``u32``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-eee:

eee
===
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


modes-ours (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


modes-peer (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


active (``u8``)
~~~~~~~~~~~~~~~


enabled (``u8``)
~~~~~~~~~~~~~~~~


tx-lpi-enabled (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~


tx-lpi-timer (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-ts-stat:

ts-stat
=======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


tx-pkts (``uint``)
~~~~~~~~~~~~~~~~~~


tx-lost (``uint``)
~~~~~~~~~~~~~~~~~~


tx-err (``uint``)
~~~~~~~~~~~~~~~~~


tx-onestep-pkts-unconfirmed (``uint``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-ts-hwtstamp-provider:

ts-hwtstamp-provider
====================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


index (``u32``)
~~~~~~~~~~~~~~~


qualifier (``u32``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-tsinfo:

tsinfo
======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


timestamping (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


tx-types (``nest``)
~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


rx-filters (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


phc-index (``u32``)
~~~~~~~~~~~~~~~~~~~


stats (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-ts-stat`


hwtstamp-provider (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-ts-hwtstamp-provider`


.. _ethtool-attribute-set-cable-result:

cable-result
============
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pair (``u8``)
~~~~~~~~~~~~~
:doc: ETHTOOL_A_CABLE_PAIR


code (``u8``)
~~~~~~~~~~~~~
:doc: ETHTOOL_A_CABLE_RESULT_CODE


src (``u32``)
~~~~~~~~~~~~~
:doc: ETHTOOL_A_CABLE_INF_SRC


.. _ethtool-attribute-set-cable-fault-length:

cable-fault-length
==================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pair (``u8``)
~~~~~~~~~~~~~


cm (``u32``)
~~~~~~~~~~~~


src (``u32``)
~~~~~~~~~~~~~


.. _ethtool-attribute-set-cable-nest:

cable-nest
==========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


result (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-cable-result`


fault-length (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-cable-fault-length`


.. _ethtool-attribute-set-cable-test:

cable-test
==========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


.. _ethtool-attribute-set-cable-test-ntf:

cable-test-ntf
==============
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


status (``u8``)
~~~~~~~~~~~~~~~
:doc: _STARTED/_COMPLETE


nest (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-cable-nest`


.. _ethtool-attribute-set-cable-test-tdr-cfg:

cable-test-tdr-cfg
==================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


first (``u32``)
~~~~~~~~~~~~~~~


last (``u32``)
~~~~~~~~~~~~~~


step (``u32``)
~~~~~~~~~~~~~~


pair (``u8``)
~~~~~~~~~~~~~


.. _ethtool-attribute-set-cable-test-tdr-ntf:

cable-test-tdr-ntf
==================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


status (``u8``)
~~~~~~~~~~~~~~~


nest (``nest``)
~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-cable-nest`


.. _ethtool-attribute-set-cable-test-tdr:

cable-test-tdr
==============
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


cfg (``nest``)
~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-cable-test-tdr-cfg`


.. _ethtool-attribute-set-tunnel-udp-entry:

tunnel-udp-entry
================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


port (``u16``)
~~~~~~~~~~~~~~
:byte-order: big-endian


type (``u32``)
~~~~~~~~~~~~~~
:enum: :ref:`ethtool-definition-udp-tunnel-type`


.. _ethtool-attribute-set-tunnel-udp-table:

tunnel-udp-table
================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


size (``u32``)
~~~~~~~~~~~~~~


types (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


entry (``nest``)
~~~~~~~~~~~~~~~~
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-tunnel-udp-entry`


.. _ethtool-attribute-set-tunnel-udp:

tunnel-udp
==========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


table (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-tunnel-udp-table`


.. _ethtool-attribute-set-tunnel-info:

tunnel-info
===========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


udp-ports (``nest``)
~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-tunnel-udp`


.. _ethtool-attribute-set-fec-stat:

fec-stat
========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pad (``pad``)
~~~~~~~~~~~~~


corrected (``binary``)
~~~~~~~~~~~~~~~~~~~~~~
:sub-type: u64


uncorr (``binary``)
~~~~~~~~~~~~~~~~~~~
:sub-type: u64


corr-bits (``binary``)
~~~~~~~~~~~~~~~~~~~~~~
:sub-type: u64


.. _ethtool-attribute-set-fec:

fec
===
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


modes (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


auto (``u8``)
~~~~~~~~~~~~~


active (``u32``)
~~~~~~~~~~~~~~~~


stats (``nest``)
~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-fec-stat`


.. _ethtool-attribute-set-module-eeprom:

module-eeprom
=============
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


offset (``u32``)
~~~~~~~~~~~~~~~~


length (``u32``)
~~~~~~~~~~~~~~~~


page (``u8``)
~~~~~~~~~~~~~


bank (``u8``)
~~~~~~~~~~~~~


i2c-address (``u8``)
~~~~~~~~~~~~~~~~~~~~


data (``binary``)
~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-stats-grp:

stats-grp
=========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pad (``pad``)
~~~~~~~~~~~~~


id (``u32``)
~~~~~~~~~~~~


ss-id (``u32``)
~~~~~~~~~~~~~~~


stat (``u64``)
~~~~~~~~~~~~~~
:type-value: ['id']


hist-rx (``nest``)
~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-stats-grp-hist`


hist-tx (``nest``)
~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-stats-grp-hist`


hist-bkt-low (``u32``)
~~~~~~~~~~~~~~~~~~~~~~


hist-bkt-hi (``u32``)
~~~~~~~~~~~~~~~~~~~~~


hist-val (``u64``)
~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-stats-grp-hist:

stats-grp-hist
==============
hist-bkt-low
~~~~~~~~~~~~


hist-bkt-hi
~~~~~~~~~~~


hist-val
~~~~~~~~


.. _ethtool-attribute-set-stats:

stats
=====
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


pad (``pad``)
~~~~~~~~~~~~~


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


groups (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


grp (``nest``)
~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-stats-grp`


src (``u32``)
~~~~~~~~~~~~~


.. _ethtool-attribute-set-phc-vclocks:

phc-vclocks
===========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


num (``u32``)
~~~~~~~~~~~~~


index (``binary``)
~~~~~~~~~~~~~~~~~~
:sub-type: s32


.. _ethtool-attribute-set-module:

module
======
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


power-mode-policy (``u8``)
~~~~~~~~~~~~~~~~~~~~~~~~~~


power-mode (``u8``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-c33-pse-pw-limit:

c33-pse-pw-limit
================
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


min (``u32``)
~~~~~~~~~~~~~


max (``u32``)
~~~~~~~~~~~~~


.. _ethtool-attribute-set-pse:

pse
===
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


podl-pse-admin-state (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


podl-pse-admin-control (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


podl-pse-pw-d-status (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-admin-state (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-admin-control (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-pw-d-status (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-pw-class (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-actual-pw (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-ext-state (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-
:enum: :ref:`ethtool-definition-c33-pse-ext-state`


c33-pse-ext-substate (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-avail-pw-limit (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-


c33-pse-pw-limit-ranges (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:name-prefix: ethtool-a-
:multi-attr: True
:nested-attributes: :ref:`ethtool-attribute-set-c33-pse-pw-limit`


.. _ethtool-attribute-set-rss:

rss
===
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


context (``u32``)
~~~~~~~~~~~~~~~~~


hfunc (``u32``)
~~~~~~~~~~~~~~~


indir (``binary``)
~~~~~~~~~~~~~~~~~~
:sub-type: u32


hkey (``binary``)
~~~~~~~~~~~~~~~~~


input_xfrm (``u32``)
~~~~~~~~~~~~~~~~~~~~


start-context (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-plca:

plca
====
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


version (``u16``)
~~~~~~~~~~~~~~~~~


enabled (``u8``)
~~~~~~~~~~~~~~~~


status (``u8``)
~~~~~~~~~~~~~~~


node-cnt (``u32``)
~~~~~~~~~~~~~~~~~~


node-id (``u32``)
~~~~~~~~~~~~~~~~~


to-tmr (``u32``)
~~~~~~~~~~~~~~~~


burst-cnt (``u32``)
~~~~~~~~~~~~~~~~~~~


burst-tmr (``u32``)
~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-module-fw-flash:

module-fw-flash
===============
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


file-name (``string``)
~~~~~~~~~~~~~~~~~~~~~~


password (``u32``)
~~~~~~~~~~~~~~~~~~


status (``u32``)
~~~~~~~~~~~~~~~~
:enum: :ref:`ethtool-definition-module-fw-flash-status`


status-msg (``string``)
~~~~~~~~~~~~~~~~~~~~~~~


done (``uint``)
~~~~~~~~~~~~~~~


total (``uint``)
~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-phy:

phy
===
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


index (``u32``)
~~~~~~~~~~~~~~~


drvname (``string``)
~~~~~~~~~~~~~~~~~~~~


name (``string``)
~~~~~~~~~~~~~~~~~


upstream-type (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~
:enum: :ref:`ethtool-definition-phy-upstream-type`


upstream-index (``u32``)
~~~~~~~~~~~~~~~~~~~~~~~~


upstream-sfp-name (``string``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


downstream-sfp-name (``string``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


.. _ethtool-attribute-set-tsconfig:

tsconfig
========
unspec (``unused``)
~~~~~~~~~~~~~~~~~~~
:value: 0


header (``nest``)
~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-header`


hwtstamp-provider (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-ts-hwtstamp-provider`


tx-types (``nest``)
~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


rx-filters (``nest``)
~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`


hwtstamp-flags (``nest``)
~~~~~~~~~~~~~~~~~~~~~~~~~
:nested-attributes: :ref:`ethtool-attribute-set-bitset`

