This change adds support for newer compliance codes defined in SFF-8636. Standards for SFF-8636 a) SFF_8636 Rev 2.12 dated Apr 29, 2026 Signed-off-by: Aleksander Jan Bajkowski --- qsfp.c | 6 ++++++ qsfp.h | 2 ++ 2 files changed, 8 insertions(+) diff --git a/qsfp.c b/qsfp.c index 09d9ace..55cd1fb 100644 --- a/qsfp.c +++ b/qsfp.c @@ -451,6 +451,10 @@ static void sff8636_show_transceiver(const struct sff8636_memory_map *map) sprintf(value, "%s", "SONET: OC-48, short reach"); /* SAS/SATA Compliance Codes */ + if (map->page_00h[SFF8636_SAS_COMP_OFFSET] & (SFF8636_SAS_24G)) + sprintf(value, "%s", "SAS 24.0G"); + if (map->page_00h[SFF8636_SAS_COMP_OFFSET] & (SFF8636_SAS_12G)) + sprintf(value, "%s", "SAS 12.0G"); if (map->page_00h[SFF8636_SAS_COMP_OFFSET] & (SFF8636_SAS_6G)) sprintf(value, "%s", "SAS 6.0G"); if (map->page_00h[SFF8636_SAS_COMP_OFFSET] & (SFF8636_SAS_3G)) @@ -528,6 +532,8 @@ static void sff8636_show_transceiver(const struct sff8636_memory_map *map) sprintf(value, "%s", "FC: 1600 MBytes/sec"); if (map->page_00h[SFF8636_FC_SPEED_OFFSET] & SFF8636_FC_SPEED_400_MBPS) sprintf(value, "%s", "FC: 400 MBytes/sec"); + if (map->page_00h[SFF8636_FC_SPEED_OFFSET] & SFF8636_FC_SPEED_3200_MBPS) + sprintf(value, "%s", "FC: 3200 MBytes/sec"); if (map->page_00h[SFF8636_FC_SPEED_OFFSET] & SFF8636_FC_SPEED_200_MBPS) sprintf(value, "%s", "FC: 200 MBytes/sec"); if (map->page_00h[SFF8636_FC_SPEED_OFFSET] & SFF8636_FC_SPEED_100_MBPS) diff --git a/qsfp.h b/qsfp.h index b899d4a..8d6bb97 100644 --- a/qsfp.h +++ b/qsfp.h @@ -217,6 +217,7 @@ /* SAS/SATA Complaince Codes - 133 */ #define SFF8636_SAS_COMP_OFFSET 0x85 +#define SFF8636_SAS_24G (1 << 7) #define SFF8636_SAS_12G (1 << 6) #define SFF8636_SAS_6G (1 << 5) #define SFF8636_SAS_3G (1 << 4) @@ -269,6 +270,7 @@ #define SFF8636_FC_SPEED_800_MBPS (1 << 6) #define SFF8636_FC_SPEED_1600_MBPS (1 << 5) #define SFF8636_FC_SPEED_400_MBPS (1 << 4) +#define SFF8636_FC_SPEED_3200_MBPS (1 << 3) #define SFF8636_FC_SPEED_200_MBPS (1 << 2) #define SFF8636_FC_SPEED_100_MBPS (1 << 0) -- 2.53.0