From 0c5162f5dca2f3e26be6646c90725a903ceb752b Mon Sep 17 00:00:00 2001 From: chiourung_huang Date: Tue, 8 Oct 2024 07:47:39 +0000 Subject: [PATCH] Fix cmis eeprom validate CMIS_5.0 starts to support the checksum of page 04h --- .../as9716-32d/sonic_platform/sfp.py | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/sfp.py b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/sfp.py index 018a9aea7..cbad06735 100644 --- a/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/sfp.py +++ b/platform/broadcom/sonic-platform-modules-accton/as9716-32d/sonic_platform/sfp.py @@ -167,16 +167,19 @@ def __validate_eeprom_cmis(self): if checksum_test != eeprom_raw[127]: return False - checksum_test = 0 - eeprom_raw = self.read_eeprom(640, 128) - if eeprom_raw is None: - return None - - for i in range(0, 127): - checksum_test = (checksum_test + eeprom_raw[i]) & 0xFF - else: - if checksum_test != eeprom_raw[127]: - return False + # CMIS_5.0 starts to support the checksum of page 04h + cmis_rev = float(api.get_cmis_rev()) + if cmis_rev >= 5.0: + checksum_test = 0 + eeprom_raw = self.read_eeprom(640, 128) + if eeprom_raw is None: + return None + + for i in range(0, 127): + checksum_test = (checksum_test + eeprom_raw[i]) & 0xFF + else: + if checksum_test != eeprom_raw[127]: + return False return True