ethtool: Extend cable testing interface with result source information
authorOleksij Rempel <o.rempel@pengutronix.de>
Thu, 22 Aug 2024 12:07:01 +0000 (14:07 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 26 Aug 2024 16:33:58 +0000 (09:33 -0700)
Extend the ethtool netlink cable testing interface by adding support for
specifying the source of cable testing results. This allows users to
differentiate between results obtained through different diagnostic
methods.

For example, some TI 10BaseT1L PHYs provide two variants of cable
diagnostics: Time Domain Reflectometry (TDR) and Active Link Cable
Diagnostic (ALCD). By introducing `ETHTOOL_A_CABLE_RESULT_SRC` and
`ETHTOOL_A_CABLE_FAULT_LENGTH_SRC` attributes, this update enables
drivers to indicate whether the result was derived from TDR or ALCD,
improving the clarity and utility of diagnostic information.

Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20240822120703.1393130-2-o.rempel@pengutronix.de
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/netlink/specs/ethtool.yaml
Documentation/networking/ethtool-netlink.rst
include/uapi/linux/ethtool_netlink.h

index 37211b1e861fed9d3eb96efbb295961e4a11d469..6a050d755b9cb41f0a9ff395721dd71d6a850f8c 100644 (file)
@@ -667,6 +667,9 @@ attribute-sets:
       -
         name: code
         type: u8
+      -
+        name: src
+        type: u32
   -
     name: cable-fault-length
     attributes:
@@ -676,6 +679,9 @@ attribute-sets:
       -
         name: cm
         type: u32
+      -
+        name: src
+        type: u32
   -
     name: cable-nest
     attributes:
index 44cb9e29f325ae1dce5add929561a5e80f246d7b..ba90457b8b2dbb71ea1e1a828454eeab77e4c7f3 100644 (file)
@@ -1314,12 +1314,17 @@ information.
  +-+-+-----------------------------------------+--------+---------------------+
  | | | ``ETHTOOL_A_CABLE_RESULTS_CODE``        | u8     | result code         |
  +-+-+-----------------------------------------+--------+---------------------+
+ | | | ``ETHTOOL_A_CABLE_RESULT_SRC``          | u32    | information source  |
+ +-+-+-----------------------------------------+--------+---------------------+
  | | ``ETHTOOL_A_CABLE_NEST_FAULT_LENGTH``     | nested | cable length        |
  +-+-+-----------------------------------------+--------+---------------------+
  | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR``   | u8     | pair number         |
  +-+-+-----------------------------------------+--------+---------------------+
  | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_CM``     | u32    | length in cm        |
  +-+-+-----------------------------------------+--------+---------------------+
+ | | | ``ETHTOOL_A_CABLE_FAULT_LENGTH_SRC``    | u32    | information source  |
+ +-+-+-----------------------------------------+--------+---------------------+
+
 
 CABLE_TEST TDR
 ==============
index 45d8bcdea056ed98a8e0cfd2025289bbaed47c6c..283305f6b06353bf3d25c43cfb5a6cefc83f6aad 100644 (file)
@@ -573,10 +573,20 @@ enum {
        ETHTOOL_A_CABLE_PAIR_D,
 };
 
+/* Information source for specific results. */
+enum {
+       ETHTOOL_A_CABLE_INF_SRC_UNSPEC,
+       /* Results provided by the Time Domain Reflectometry (TDR) */
+       ETHTOOL_A_CABLE_INF_SRC_TDR,
+       /* Results provided by the Active Link Cable Diagnostic (ALCD) */
+       ETHTOOL_A_CABLE_INF_SRC_ALCD,
+};
+
 enum {
        ETHTOOL_A_CABLE_RESULT_UNSPEC,
        ETHTOOL_A_CABLE_RESULT_PAIR,            /* u8 ETHTOOL_A_CABLE_PAIR_ */
        ETHTOOL_A_CABLE_RESULT_CODE,            /* u8 ETHTOOL_A_CABLE_RESULT_CODE_ */
+       ETHTOOL_A_CABLE_RESULT_SRC,             /* u32 ETHTOOL_A_CABLE_INF_SRC_ */
 
        __ETHTOOL_A_CABLE_RESULT_CNT,
        ETHTOOL_A_CABLE_RESULT_MAX = (__ETHTOOL_A_CABLE_RESULT_CNT - 1)
@@ -586,6 +596,7 @@ enum {
        ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC,
        ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR,      /* u8 ETHTOOL_A_CABLE_PAIR_ */
        ETHTOOL_A_CABLE_FAULT_LENGTH_CM,        /* u32 */
+       ETHTOOL_A_CABLE_FAULT_LENGTH_SRC,       /* u32 ETHTOOL_A_CABLE_INF_SRC_ */
 
        __ETHTOOL_A_CABLE_FAULT_LENGTH_CNT,
        ETHTOOL_A_CABLE_FAULT_LENGTH_MAX = (__ETHTOOL_A_CABLE_FAULT_LENGTH_CNT - 1)