This commit adds a framework to support querying CMIS module information category: Feature bugzilla: https://gitee.com/src-openeuler/ethtool/issues/I9VV62
206 lines
14 KiB
Diff
206 lines
14 KiB
Diff
From 176cd20c04800b4455521536f65408a076eb213d Mon Sep 17 00:00:00 2001
|
|
From: Ido Schimmel <idosch@nvidia.com>
|
|
Date: Mon, 30 Oct 2023 09:23:53 +0200
|
|
Subject: [PATCH] ethtool: Add support for more CMIS transceiver modules
|
|
|
|
Add three more SFF-8024 Identifier Values that according to the standard
|
|
support the Common Management Interface Specification (CMIS) memory map
|
|
so that ethtool will be able to dump, parse and print their EEPROM
|
|
contents.
|
|
|
|
commit: 8ad5035
|
|
Reference: https://git.kernel.org/pub/scm/network/ethtool/ethtool.git/commit/?id=8ad503517b45
|
|
change log: change Makefile.in for openEuler CI building.
|
|
|
|
Reported-by: Mark Wang <markwang@nvidia.com>
|
|
Tested-by: Mark Wang <markwang@nvidia.com>
|
|
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
|
|
---
|
|
Makefile.in | 39 +++++++++++++++++++++++++++++++++++----
|
|
netlink/module-eeprom.c | 3 +++
|
|
qsfp.c | 10 +++++++---
|
|
sff-common.c | 9 +++++++++
|
|
sff-common.h | 5 ++++-
|
|
5 files changed, 58 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/Makefile.in b/Makefile.in
|
|
index 0f035a9..f4515b3 100644
|
|
--- a/Makefile.in
|
|
+++ b/Makefile.in
|
|
@@ -109,7 +109,7 @@ sbin_PROGRAMS = ethtool$(EXEEXT)
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/eee.c netlink/tsinfo.c netlink/fec.c \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/stats.c \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/desc-ethtool.c netlink/desc-genlctrl.c \
|
|
-@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/module-eeprom.c \
|
|
+@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/module-eeprom.c netlink/module.c \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/desc-rtnl.c netlink/cable_test.c netlink/tunnels.c \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ uapi/linux/ethtool_netlink.h \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ uapi/linux/netlink.h uapi/linux/genetlink.h \
|
|
@@ -157,7 +157,7 @@ am__ethtool_SOURCES_DIST = ethtool.c uapi/linux/ethtool.h internal.h \
|
|
netlink/rings.c netlink/channels.c netlink/coalesce.c \
|
|
netlink/pause.c netlink/eee.c netlink/tsinfo.c netlink/fec.c \
|
|
netlink/stats.c netlink/desc-ethtool.c netlink/desc-genlctrl.c \
|
|
- netlink/module-eeprom.c netlink/desc-rtnl.c \
|
|
+ netlink/module-eeprom.c netlink/module.c netlink/desc-rtnl.c \
|
|
netlink/cable_test.c netlink/tunnels.c \
|
|
uapi/linux/ethtool_netlink.h uapi/linux/netlink.h \
|
|
uapi/linux/genetlink.h uapi/linux/rtnetlink.h \
|
|
@@ -217,6 +217,7 @@ am__dirstamp = $(am__leading_dot)dirstamp
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/desc-ethtool.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/desc-genlctrl.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/module-eeprom.$(OBJEXT) \
|
|
+@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/module.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/desc-rtnl.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/cable_test.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/tunnels.$(OBJEXT)
|
|
@@ -246,7 +247,7 @@ am__test_cmdline_SOURCES_DIST = test-cmdline.c test-common.c ethtool.c \
|
|
netlink/channels.c netlink/coalesce.c netlink/pause.c \
|
|
netlink/eee.c netlink/tsinfo.c netlink/fec.c netlink/stats.c \
|
|
netlink/desc-ethtool.c netlink/desc-genlctrl.c \
|
|
- netlink/module-eeprom.c netlink/desc-rtnl.c \
|
|
+ netlink/module-eeprom.c netlink/module.c netlink/desc-rtnl.c \
|
|
netlink/cable_test.c netlink/tunnels.c \
|
|
uapi/linux/ethtool_netlink.h uapi/linux/netlink.h \
|
|
uapi/linux/genetlink.h uapi/linux/rtnetlink.h \
|
|
@@ -309,6 +310,7 @@ am__test_cmdline_SOURCES_DIST = test-cmdline.c test-common.c ethtool.c \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-desc-ethtool.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-desc-genlctrl.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-module-eeprom.$(OBJEXT) \
|
|
+@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-module.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-desc-rtnl.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-cable_test.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_cmdline-tunnels.$(OBJEXT)
|
|
@@ -343,7 +345,7 @@ am__test_features_SOURCES_DIST = test-features.c test-common.c \
|
|
netlink/rings.c netlink/channels.c netlink/coalesce.c \
|
|
netlink/pause.c netlink/eee.c netlink/tsinfo.c netlink/fec.c \
|
|
netlink/stats.c netlink/desc-ethtool.c netlink/desc-genlctrl.c \
|
|
- netlink/module-eeprom.c netlink/desc-rtnl.c \
|
|
+ netlink/module-eeprom.c netlink/module.c netlink/desc-rtnl.c \
|
|
netlink/cable_test.c netlink/tunnels.c \
|
|
uapi/linux/ethtool_netlink.h uapi/linux/netlink.h \
|
|
uapi/linux/genetlink.h uapi/linux/rtnetlink.h \
|
|
@@ -406,6 +408,7 @@ am__test_features_SOURCES_DIST = test-features.c test-common.c \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-desc-ethtool.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-desc-genlctrl.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-module-eeprom.$(OBJEXT) \
|
|
+@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-module.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-desc-rtnl.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-cable_test.$(OBJEXT) \
|
|
@ETHTOOL_ENABLE_NETLINK_TRUE@ netlink/test_features-tunnels.$(OBJEXT)
|
|
@@ -2238,6 +2241,20 @@ netlink/test_cmdline-module-eeprom.obj: netlink/module-eeprom.c
|
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmdline_CFLAGS) $(CFLAGS) -c -o netlink/test_cmdline-module-eeprom.obj `if test -f 'netlink/module-eeprom.c'; then $(CYGPATH_W) 'netlink/module-eeprom.c'; else $(CYGPATH_W) '$(srcdir)/netlink/module-eeprom.c'; fi`
|
|
|
|
+netlink/test_cmdline-module.o: netlink/module.c
|
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmdline_CFLAGS) $(CFLAGS) -MT netlink/test_cmdline-module.o -MD -MP -MF netlink/$(DEPDIR)/test_cmdline-module.Tpo -c -o netlink/test_cmdline-module.o `test -f 'netlink/module.c' || echo '$(srcdir)/'`netlink/module.c
|
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) netlink/$(DEPDIR)/test_cmdline-module.Tpo netlink/$(DEPDIR)/test_cmdline-module.Po
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='netlink/module.c' object='netlink/test_cmdline-module.o' libtool=no @AMDEPBACKSLASH@
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmdline_CFLAGS) $(CFLAGS) -c -o netlink/test_cmdline-module.o `test -f 'netlink/module.c' || echo '$(srcdir)/'`netlink/module.c
|
|
+
|
|
+netlink/test_cmdline-module.obj: netlink/module.c
|
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmdline_CFLAGS) $(CFLAGS) -MT netlink/test_cmdline-module.obj -MD -MP -MF netlink/$(DEPDIR)/test_cmdline-module.Tpo -c -o netlink/test_cmdline-module.obj `if test -f 'netlink/module.c'; then $(CYGPATH_W) 'netlink/module.c'; else $(CYGPATH_W) '$(srcdir)/netlink/module.c'; fi`
|
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) netlink/$(DEPDIR)/test_cmdline-module.Tpo netlink/$(DEPDIR)/test_cmdline-module.Po
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='netlink/module.c' object='netlink/test_cmdline-module.obj' libtool=no @AMDEPBACKSLASH@
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmdline_CFLAGS) $(CFLAGS) -c -o netlink/test_cmdline-module.obj `if test -f 'netlink/module.c'; then $(CYGPATH_W) 'netlink/module.c'; else $(CYGPATH_W) '$(srcdir)/netlink/module.c'; fi`
|
|
+
|
|
netlink/test_cmdline-desc-rtnl.o: netlink/desc-rtnl.c
|
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmdline_CFLAGS) $(CFLAGS) -MT netlink/test_cmdline-desc-rtnl.o -MD -MP -MF netlink/$(DEPDIR)/test_cmdline-desc-rtnl.Tpo -c -o netlink/test_cmdline-desc-rtnl.o `test -f 'netlink/desc-rtnl.c' || echo '$(srcdir)/'`netlink/desc-rtnl.c
|
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) netlink/$(DEPDIR)/test_cmdline-desc-rtnl.Tpo netlink/$(DEPDIR)/test_cmdline-desc-rtnl.Po
|
|
@@ -3176,6 +3193,20 @@ netlink/test_features-module-eeprom.obj: netlink/module-eeprom.c
|
|
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_features_CFLAGS) $(CFLAGS) -c -o netlink/test_features-module-eeprom.obj `if test -f 'netlink/module-eeprom.c'; then $(CYGPATH_W) 'netlink/module-eeprom.c'; else $(CYGPATH_W) '$(srcdir)/netlink/module-eeprom.c'; fi`
|
|
|
|
+netlink/test_features-module.o: netlink/module.c
|
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_features_CFLAGS) $(CFLAGS) -MT netlink/test_features-module.o -MD -MP -MF netlink/$(DEPDIR)/test_features-module.Tpo -c -o netlink/test_features-module.o `test -f 'netlink/module.c' || echo '$(srcdir)/'`netlink/module.c
|
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) netlink/$(DEPDIR)/test_features-module.Tpo netlink/$(DEPDIR)/test_features-module.Po
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='netlink/module.c' object='netlink/test_features-module.o' libtool=no @AMDEPBACKSLASH@
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_features_CFLAGS) $(CFLAGS) -c -o netlink/test_features-module.o `test -f 'netlink/module.c' || echo '$(srcdir)/'`netlink/module.c
|
|
+
|
|
+netlink/test_features-module.obj: netlink/module.c
|
|
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_features_CFLAGS) $(CFLAGS) -MT netlink/test_features-module.obj -MD -MP -MF netlink/$(DEPDIR)/test_features-module.Tpo -c -o netlink/test_features-module.obj `if test -f 'netlink/module.c'; then $(CYGPATH_W) 'netlink/module.c'; else $(CYGPATH_W) '$(srcdir)/netlink/module.c'; fi`
|
|
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) netlink/$(DEPDIR)/test_features-module.Tpo netlink/$(DEPDIR)/test_features-module.Po
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='netlink/module.c' object='netlink/test_features-module.obj' libtool=no @AMDEPBACKSLASH@
|
|
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
|
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_features_CFLAGS) $(CFLAGS) -c -o netlink/test_features-module.obj `if test -f 'netlink/module.c'; then $(CYGPATH_W) 'netlink/module.c'; else $(CYGPATH_W) '$(srcdir)/netlink/module.c'; fi`
|
|
+
|
|
netlink/test_features-desc-rtnl.o: netlink/desc-rtnl.c
|
|
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_features_CFLAGS) $(CFLAGS) -MT netlink/test_features-desc-rtnl.o -MD -MP -MF netlink/$(DEPDIR)/test_features-desc-rtnl.Tpo -c -o netlink/test_features-desc-rtnl.o `test -f 'netlink/desc-rtnl.c' || echo '$(srcdir)/'`netlink/desc-rtnl.c
|
|
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) netlink/$(DEPDIR)/test_features-desc-rtnl.Tpo netlink/$(DEPDIR)/test_features-desc-rtnl.Po
|
|
diff --git a/netlink/module-eeprom.c b/netlink/module-eeprom.c
|
|
index 49833a2..09ad580 100644
|
|
--- a/netlink/module-eeprom.c
|
|
+++ b/netlink/module-eeprom.c
|
|
@@ -225,6 +225,9 @@ static int eeprom_parse(struct cmd_context *ctx)
|
|
case SFF8024_ID_QSFP_DD:
|
|
case SFF8024_ID_OSFP:
|
|
case SFF8024_ID_DSFP:
|
|
+ case SFF8024_ID_QSFP_PLUS_CMIS:
|
|
+ case SFF8024_ID_SFP_DD_CMIS:
|
|
+ case SFF8024_ID_SFP_PLUS_CMIS:
|
|
return cmis_show_all_nl(ctx);
|
|
#endif
|
|
default:
|
|
diff --git a/qsfp.c b/qsfp.c
|
|
index 1fe5de1..ae4a581 100644
|
|
--- a/qsfp.c
|
|
+++ b/qsfp.c
|
|
@@ -947,9 +947,13 @@ void sff8636_show_all_ioctl(const __u8 *id, __u32 eeprom_len)
|
|
{
|
|
struct sff8636_memory_map map = {};
|
|
|
|
- if (id[SFF8636_ID_OFFSET] == SFF8024_ID_QSFP_DD ||
|
|
- id[SFF8636_ID_OFFSET] == SFF8024_ID_OSFP ||
|
|
- id[SFF8636_ID_OFFSET] == SFF8024_ID_DSFP) {
|
|
+ switch (id[SFF8636_ID_OFFSET]) {
|
|
+ case SFF8024_ID_QSFP_DD:
|
|
+ case SFF8024_ID_OSFP:
|
|
+ case SFF8024_ID_DSFP:
|
|
+ case SFF8024_ID_QSFP_PLUS_CMIS:
|
|
+ case SFF8024_ID_SFP_DD_CMIS:
|
|
+ case SFF8024_ID_SFP_PLUS_CMIS:
|
|
cmis_show_all_ioctl(id);
|
|
return;
|
|
}
|
|
diff --git a/sff-common.c b/sff-common.c
|
|
index e951cf1..9e4a89b 100644
|
|
--- a/sff-common.c
|
|
+++ b/sff-common.c
|
|
@@ -145,6 +145,15 @@ void sff8024_show_identifier(const __u8 *id, int id_offset)
|
|
case SFF8024_ID_DSFP:
|
|
printf(" (DSFP Dual Small Form Factor Pluggable Transceiver)\n");
|
|
break;
|
|
+ case SFF8024_ID_QSFP_PLUS_CMIS:
|
|
+ printf(" (QSFP+ or later with Common Management Interface Specification (CMIS))\n");
|
|
+ break;
|
|
+ case SFF8024_ID_SFP_DD_CMIS:
|
|
+ printf(" (SFP-DD Double Density 2X Pluggable Transceiver with Common Management Interface Specification (CMIS))\n");
|
|
+ break;
|
|
+ case SFF8024_ID_SFP_PLUS_CMIS:
|
|
+ printf(" (SFP+ and later with Common Management Interface Specification (CMIS))\n");
|
|
+ break;
|
|
default:
|
|
printf(" (reserved or unknown)\n");
|
|
break;
|
|
diff --git a/sff-common.h b/sff-common.h
|
|
index dd12dda..94827cc 100644
|
|
--- a/sff-common.h
|
|
+++ b/sff-common.h
|
|
@@ -64,7 +64,10 @@
|
|
#define SFF8024_ID_QSFP_DD 0x18
|
|
#define SFF8024_ID_OSFP 0x19
|
|
#define SFF8024_ID_DSFP 0x1B
|
|
-#define SFF8024_ID_LAST SFF8024_ID_DSFP
|
|
+#define SFF8024_ID_QSFP_PLUS_CMIS 0x1E
|
|
+#define SFF8024_ID_SFP_DD_CMIS 0x1F
|
|
+#define SFF8024_ID_SFP_PLUS_CMIS 0x20
|
|
+#define SFF8024_ID_LAST SFF8024_ID_SFP_PLUS_CMIS
|
|
#define SFF8024_ID_UNALLOCATED_LAST 0x7F
|
|
#define SFF8024_ID_VENDOR_START 0x80
|
|
#define SFF8024_ID_VENDOR_LAST 0xFF
|
|
--
|
|
2.30.0
|
|
|