DORMANTno replies REVIEWED: 1 (0M)

1 review trailer.

[PATCH ethtool-next] ethtool: Add support for more CMIS transceiver modules

From: Ido Schimmel <idosch@nvidia.com>
Date: 2023-10-30 07:25:14
Subsystem: the rest · Maintainer: Linus Torvalds

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.

Reported-by: Mark Wang <redacted>
Tested-by: Mark Wang <redacted>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
---
 netlink/module-eeprom.c |  3 +++
 qsfp.c                  | 10 +++++++---
 sff-common.c            |  9 +++++++++
 sff-common.h            |  5 ++++-
 4 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/netlink/module-eeprom.c b/netlink/module-eeprom.c
index 49833a2a6a38..09ad58011d2a 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 5a535c5c092b..eedf6883f7a3 100644
--- a/qsfp.c
+++ b/qsfp.c
@@ -977,9 +977,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 a5c1510302a6..a412a6ec0a4e 100644
--- a/sff-common.c
+++ b/sff-common.c
@@ -162,6 +162,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 57bcc4a415fe..899dc5be15b1 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.40.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help