From: "Björn Töpel" <bjorn@kernel.org>
To: netdev@vger.kernel.org, Donald Hunter <donald.hunter@gmail.com>,
Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>, Simon Horman <horms@kernel.org>,
Saeed Mahameed <saeedm@nvidia.com>,
Tariq Toukan <tariqt@nvidia.com>,
Leon Romanovsky <leon@kernel.org>,
Andrew Lunn <andrew+netdev@lunn.ch>
Cc: "Björn Töpel" <bjorn@kernel.org>,
"Maxime Chevallier" <maxime.chevallier@bootlin.com>,
"Andrew Lunn" <andrew@lunn.ch>,
"Michael Chan" <michael.chan@broadcom.com>,
"Hariprasad Kelam" <hkelam@marvell.com>,
"Ido Schimmel" <idosch@nvidia.com>,
"Danielle Ratson" <danieller@nvidia.com>,
linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org
Subject: [RFC net-next 1/4] ethtool: module: Define CMIS loopback YAML spec and UAPI
Date: Thu, 19 Feb 2026 14:00:42 +0100 [thread overview]
Message-ID: <20260219130050.2390226-2-bjorn@kernel.org> (raw)
In-Reply-To: <20260219130050.2390226-1-bjorn@kernel.org>
Add the netlink YAML specification for module loopback attributes used
to query and control diagnostic loopback modes on CMIS-compliant
transceiver modules.
Define the module-loopback-types flags enum with four loopback types
from CMIS 5.2 Section 8.4.11 ("Diagnostic Loopback Capabilities"):
- media-side-output (Rx to Tx)
- media-side-input (Tx to Rx)
- host-side-output (Rx to Tx)
- host-side-input (Tx to Rx)
Add two new attributes to the module attribute-set:
- loopback-capabilities: bitmask of supported loopback types
- loopback-enabled: bitmask of currently enabled loopback types
Include both attributes in the module-get reply (and by YAML anchor
reuse, in the module-set request). Regenerate the UAPI header.
Signed-off-by: Björn Töpel <bjorn@kernel.org>
---
Documentation/netlink/specs/ethtool.yaml | 27 +++++++++++++++++++
.../uapi/linux/ethtool_netlink_generated.h | 22 +++++++++++++++
2 files changed, 49 insertions(+)
diff --git a/Documentation/netlink/specs/ethtool.yaml b/Documentation/netlink/specs/ethtool.yaml
index 0a2d2343f79a..88dfd5f05b3c 100644
--- a/Documentation/netlink/specs/ethtool.yaml
+++ b/Documentation/netlink/specs/ethtool.yaml
@@ -11,6 +11,23 @@ c-family-name: ethtool-genl-name
c-version-name: ethtool-genl-version
definitions:
+ -
+ name: module-loopback-types
+ type: flags
+ doc: Defines the loopback types (host/electrical or media/optical side) and the signal's path direction (input/near-end or output/far-end).
+ entries:
+ -
+ name: media-side-output
+ doc: Media Side Output Loopback (Rx to Tx)
+ -
+ name: media-side-input
+ doc: Media Side Input Loopback (Tx to Rx)
+ -
+ name: host-side-output
+ doc: Host Side Output Loopback (Rx to Tx)
+ -
+ name: host-side-input
+ doc: Host Side Input Loopback (Tx to Rx)
-
name: udp-tunnel-type
enum-name:
@@ -1438,6 +1455,14 @@ attribute-sets:
-
name: power-mode
type: u8
+ -
+ name: loopback-capabilities
+ type: uint
+ enum: module-loopback-types
+ -
+ name: loopback-enabled
+ type: uint
+ enum: module-loopback-types
-
name: c33-pse-pw-limit
attr-cnt-name: __ethtool-a-c33-pse-pw-limit-cnt
@@ -2501,6 +2526,8 @@ operations:
- header
- power-mode-policy
- power-mode
+ - loopback-capabilities
+ - loopback-enabled
dump: *module-get-op
-
name: module-set
diff --git a/include/uapi/linux/ethtool_netlink_generated.h b/include/uapi/linux/ethtool_netlink_generated.h
index 556a0c834df5..d94b75b27718 100644
--- a/include/uapi/linux/ethtool_netlink_generated.h
+++ b/include/uapi/linux/ethtool_netlink_generated.h
@@ -10,6 +10,26 @@
#define ETHTOOL_GENL_NAME "ethtool"
#define ETHTOOL_GENL_VERSION 1
+/**
+ * enum ethtool_module_loopback_types - Defines the loopback types
+ * (host/electrical or media/optical side) and the signal's path direction
+ * (input/near-end or output/far-end).
+ * @ETHTOOL_MODULE_LOOPBACK_TYPES_MEDIA_SIDE_OUTPUT: Media Side Output Loopback
+ * (Rx to Tx)
+ * @ETHTOOL_MODULE_LOOPBACK_TYPES_MEDIA_SIDE_INPUT: Media Side Input Loopback
+ * (Tx to Rx)
+ * @ETHTOOL_MODULE_LOOPBACK_TYPES_HOST_SIDE_OUTPUT: Host Side Output Loopback
+ * (Rx to Tx)
+ * @ETHTOOL_MODULE_LOOPBACK_TYPES_HOST_SIDE_INPUT: Host Side Input Loopback (Tx
+ * to Rx)
+ */
+enum ethtool_module_loopback_types {
+ ETHTOOL_MODULE_LOOPBACK_TYPES_MEDIA_SIDE_OUTPUT = 1,
+ ETHTOOL_MODULE_LOOPBACK_TYPES_MEDIA_SIDE_INPUT = 2,
+ ETHTOOL_MODULE_LOOPBACK_TYPES_HOST_SIDE_OUTPUT = 4,
+ ETHTOOL_MODULE_LOOPBACK_TYPES_HOST_SIDE_INPUT = 8,
+};
+
enum {
ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
ETHTOOL_UDP_TUNNEL_TYPE_GENEVE,
@@ -654,6 +674,8 @@ enum {
ETHTOOL_A_MODULE_HEADER,
ETHTOOL_A_MODULE_POWER_MODE_POLICY,
ETHTOOL_A_MODULE_POWER_MODE,
+ ETHTOOL_A_MODULE_LOOPBACK_CAPABILITIES,
+ ETHTOOL_A_MODULE_LOOPBACK_ENABLED,
__ETHTOOL_A_MODULE_CNT,
ETHTOOL_A_MODULE_MAX = (__ETHTOOL_A_MODULE_CNT - 1)
--
2.53.0
next prev parent reply other threads:[~2026-02-19 13:01 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-19 13:00 [RFC net-next 0/4] ethtool: CMIS module diagnostic loopback support Björn Töpel
2026-02-19 13:00 ` Björn Töpel [this message]
2026-02-19 13:00 ` [RFC net-next 2/4] ethtool: module: Add CMIS loopback GET/SET support Björn Töpel
2026-02-19 15:59 ` Andrew Lunn
2026-02-19 13:00 ` [RFC net-next 3/4] ethtool: module: refactor fw flash init to reuse CMIS helpers Björn Töpel
2026-02-19 13:00 ` [RFC net-next 4/4] net/mlx5e: Implement set_module_eeprom_by_page ethtool callback Björn Töpel
2026-02-19 13:16 ` [RFC net-next 0/4] ethtool: CMIS module diagnostic loopback support Björn Töpel
2026-02-19 15:51 ` Andrew Lunn
2026-02-20 0:05 ` Jakub Kicinski
2026-02-20 14:18 ` Andrew Lunn
2026-02-20 21:12 ` Jakub Kicinski
2026-02-22 19:58 ` Björn Töpel
2026-02-23 14:30 ` Andrew Lunn
2026-02-23 14:41 ` Björn Töpel
2026-02-23 23:04 ` Jakub Kicinski
2026-02-24 10:28 ` Björn Töpel
2026-02-25 4:04 ` Andrew Lunn
2026-02-25 8:39 ` Björn Töpel
2026-02-25 13:14 ` Andrew Lunn
2026-03-02 9:00 ` Maxime Chevallier
2026-03-04 15:52 ` Björn Töpel
2026-03-04 16:09 ` Maxime Chevallier
2026-02-25 10:22 ` Maxime Chevallier
2026-02-25 11:20 ` Björn Töpel
2026-02-20 8:11 ` Björn Töpel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260219130050.2390226-2-bjorn@kernel.org \
--to=bjorn@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=andrew@lunn.ch \
--cc=danieller@nvidia.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=hkelam@marvell.com \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=maxime.chevallier@bootlin.com \
--cc=michael.chan@broadcom.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=saeedm@nvidia.com \
--cc=tariqt@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox