Commit e120c801 authored by Amit Cohen's avatar Amit Cohen Committed by David S. Miller
Browse files

Documentation: networking: ethtool-netlink: Add link extended state



Add link extended state attributes.

Signed-off-by: default avatarAmit Cohen <amitc@mellanox.com>
Reviewed-by: default avatarJiri Pirko <jiri@mellanox.com>
Reviewed-by: default avatarJacob Keller <jacob.e.keller@intel.com>
Reviewed-by: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2be5c8a9
Loading
Loading
Loading
Loading
+124 −4
Original line number Diff line number Diff line
@@ -443,10 +443,11 @@ supports.
LINKSTATE_GET
=============

Requests link state information. At the moment, only link up/down flag (as
provided by ``ETHTOOL_GLINK`` ioctl command) is provided but some future
extensions are planned (e.g. link down reason). This request does not have any
attributes.
Requests link state information. Link up/down flag (as provided by
``ETHTOOL_GLINK`` ioctl command) is provided. Optionally, extended state might
be provided as well. In general, extended state describes reasons for why a port
is down, or why it operates in some non-obvious mode. This request does not have
any attributes.

Request contents:

@@ -461,16 +462,135 @@ Kernel response contents:
  ``ETHTOOL_A_LINKSTATE_LINK``          bool    link state (up/down)
  ``ETHTOOL_A_LINKSTATE_SQI``           u32     Current Signal Quality Index
  ``ETHTOOL_A_LINKSTATE_SQI_MAX``       u32     Max support SQI value
  ``ETHTOOL_A_LINKSTATE_EXT_STATE``     u8      link extended state
  ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``  u8      link extended substate
  ====================================  ======  ============================

For most NIC drivers, the value of ``ETHTOOL_A_LINKSTATE_LINK`` returns
carrier flag provided by ``netif_carrier_ok()`` but there are drivers which
define their own handler.

``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE`` are
optional values. ethtool core can provide either both
``ETHTOOL_A_LINKSTATE_EXT_STATE`` and ``ETHTOOL_A_LINKSTATE_EXT_SUBSTATE``,
or only ``ETHTOOL_A_LINKSTATE_EXT_STATE``, or none of them.

``LINKSTATE_GET`` allows dump requests (kernel returns reply messages for all
devices supporting the request).


Link extended states:

  ================================================      ============================================
  ``ETHTOOL_LINK_EXT_STATE_AUTONEG``                    States relating to the autonegotiation or
                                                        issues therein

  ``ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE``      Failure during link training

  ``ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH``      Logical mismatch in physical coding sublayer
                                                        or forward error correction sublayer

  ``ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY``       Signal integrity issues

  ``ETHTOOL_LINK_EXT_STATE_NO_CABLE``                   No cable connected

  ``ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE``                Failure is related to cable,
                                                        e.g., unsupported cable

  ``ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE``               Failure is related to EEPROM, e.g., failure
                                                        during reading or parsing the data

  ``ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE``        Failure during calibration algorithm

  ``ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED``      The hardware is not able to provide the
                                                        power required from cable or module

  ``ETHTOOL_LINK_EXT_STATE_OVERHEAT``                   The module is overheated
  =================================================     ============================================

Link extended substates:

  Autoneg substates:

  ==============================================================    ================================
  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED``              Peer side is down

  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED``                 Ack not received from peer side

  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED``        Next page exchange failed

  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE``   Peer side is down during force
                                                                    mode or there is no agreement of
                                                                    speed

  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE``     Forward error correction modes
                                                                    in both sides are mismatched

  ``ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD``                           No Highest Common Denominator
  ==============================================================    ================================

  Link training substates:

  ==========================================================================    ====================
  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED``                    Frames were not
                                                                                 recognized, the
                                                                                 lock failed

  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT``                       The lock did not
                                                                                 occur before
                                                                                 timeout

  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY``    Peer side did not
                                                                                 send ready signal
                                                                                 after training
                                                                                 process

  ``ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT``                                  Remote side is not
                                                                                 ready yet
  ==========================================================================    ====================

  Link logical mismatch substates:

  ===============================================================    ===============================
  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK``   Physical coding sublayer was
                                                                     not locked in first phase -
                                                                     block lock

  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK``      Physical coding sublayer was
                                                                     not locked in second phase -
                                                                     alignment markers lock

  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS``     Physical coding sublayer did
                                                                     not get align status

  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED``             FC forward error correction is
                                                                     not locked

  ``ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED``             RS forward error correction is
                                                                     not locked
  ===============================================================    ===============================

  Bad signal integrity substates:

  =================================================================    =============================
  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS``    Large number of physical
                                                                       errors

  ``ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE``                   The system attempted to
                                                                       operate the cable at a rate
                                                                       that is not formally
                                                                       supported, which led to
                                                                       signal integrity issues
  =================================================================    =============================

  Cable issue substates:

  ==================================================    ============================================
  ``ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE``    Unsupported cable

  ``ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE``   Cable test failure
  ==================================================    ============================================

DEBUG_GET
=========