|
|
1f2507 |
From 5b46ca06c9888c663a74bdd804b0ecb7199cfb62 Mon Sep 17 00:00:00 2001
|
|
|
1f2507 |
From: Ido Schimmel <idosch@nvidia.com>
|
|
|
1f2507 |
Date: Fri, 1 Oct 2021 18:06:21 +0300
|
|
|
1f2507 |
Subject: [PATCH 06/35] cmis: Fix CLEI code parsing
|
|
|
1f2507 |
|
|
|
1f2507 |
In CMIS, unlike SFF-8636, there is no presence indication for the CLEI
|
|
|
1f2507 |
code (Common Language Equipment Identification) field. The field is
|
|
|
1f2507 |
always present, but might not be supported. In which case, "a value of
|
|
|
1f2507 |
all ASCII 20h (spaces) shall be entered".
|
|
|
1f2507 |
|
|
|
1f2507 |
Therefore, remove the erroneous check which seems to be influenced from
|
|
|
1f2507 |
SFF-8636 and only print the string if it is supported and has a non-zero
|
|
|
1f2507 |
length.
|
|
|
1f2507 |
|
|
|
1f2507 |
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
|
|
|
1f2507 |
---
|
|
|
1f2507 |
cmis.c | 8 +++++---
|
|
|
1f2507 |
cmis.h | 4 ++--
|
|
|
1f2507 |
2 files changed, 7 insertions(+), 5 deletions(-)
|
|
|
1f2507 |
|
|
|
1f2507 |
diff --git a/cmis.c b/cmis.c
|
|
|
1f2507 |
index 1a91e798e4b8..499355d0e024 100644
|
|
|
1f2507 |
--- a/cmis.c
|
|
|
1f2507 |
+++ b/cmis.c
|
|
|
1f2507 |
@@ -307,6 +307,8 @@ static void cmis_show_link_len(const __u8 *id)
|
|
|
1f2507 |
*/
|
|
|
1f2507 |
static void cmis_show_vendor_info(const __u8 *id)
|
|
|
1f2507 |
{
|
|
|
1f2507 |
+ const char *clei = (const char *)(id + CMIS_CLEI_START_OFFSET);
|
|
|
1f2507 |
+
|
|
|
1f2507 |
sff_show_ascii(id, CMIS_VENDOR_NAME_START_OFFSET,
|
|
|
1f2507 |
CMIS_VENDOR_NAME_END_OFFSET, "Vendor name");
|
|
|
1f2507 |
cmis_show_oui(id);
|
|
|
1f2507 |
@@ -319,9 +321,9 @@ static void cmis_show_vendor_info(const __u8 *id)
|
|
|
1f2507 |
sff_show_ascii(id, CMIS_DATE_YEAR_OFFSET,
|
|
|
1f2507 |
CMIS_DATE_VENDOR_LOT_OFFSET + 1, "Date code");
|
|
|
1f2507 |
|
|
|
1f2507 |
- if (id[CMIS_CLEI_PRESENT_BYTE] & CMIS_CLEI_PRESENT_MASK)
|
|
|
1f2507 |
- sff_show_ascii(id, CMIS_CLEI_START_OFFSET,
|
|
|
1f2507 |
- CMIS_CLEI_END_OFFSET, "CLEI code");
|
|
|
1f2507 |
+ if (*clei && strncmp(clei, CMIS_CLEI_BLANK, CMIS_CLEI_LEN))
|
|
|
1f2507 |
+ sff_show_ascii(id, CMIS_CLEI_START_OFFSET, CMIS_CLEI_END_OFFSET,
|
|
|
1f2507 |
+ "CLEI code");
|
|
|
1f2507 |
}
|
|
|
1f2507 |
|
|
|
1f2507 |
void qsfp_dd_show_all(const __u8 *id)
|
|
|
1f2507 |
diff --git a/cmis.h b/cmis.h
|
|
|
1f2507 |
index 78ee1495bc33..cfac08f42904 100644
|
|
|
1f2507 |
--- a/cmis.h
|
|
|
1f2507 |
+++ b/cmis.h
|
|
|
1f2507 |
@@ -34,10 +34,10 @@
|
|
|
1f2507 |
#define CMIS_DATE_VENDOR_LOT_OFFSET 0xBC
|
|
|
1f2507 |
|
|
|
1f2507 |
/* CLEI Code (Page 0) */
|
|
|
1f2507 |
-#define CMIS_CLEI_PRESENT_BYTE 0x02
|
|
|
1f2507 |
-#define CMIS_CLEI_PRESENT_MASK 0x20
|
|
|
1f2507 |
#define CMIS_CLEI_START_OFFSET 0xBE
|
|
|
1f2507 |
#define CMIS_CLEI_END_OFFSET 0xC7
|
|
|
1f2507 |
+#define CMIS_CLEI_BLANK " "
|
|
|
1f2507 |
+#define CMIS_CLEI_LEN 0x0A
|
|
|
1f2507 |
|
|
|
1f2507 |
/* Cable assembly length */
|
|
|
1f2507 |
#define CMIS_CBL_ASM_LEN_OFFSET 0xCA
|
|
|
1f2507 |
--
|
|
|
1f2507 |
2.35.1
|
|
|
1f2507 |
|