diff --git a/sonic_platform_base/sonic_xcvr/api/public/cmis.py b/sonic_platform_base/sonic_xcvr/api/public/cmis.py index 564e151..a0be999 100644 --- a/sonic_platform_base/sonic_xcvr/api/public/cmis.py +++ b/sonic_platform_base/sonic_xcvr/api/public/cmis.py @@ -1056,7 +1056,11 @@ def set_lpmode(self, lpmode): # Force module transition to LowPwr under SW control lpmode_val = lpmode_val | (1 << CmisApi.LowPwrRequestSW) self.xcvr_eeprom.write(consts.MODULE_LEVEL_CONTROL, lpmode_val) - time.sleep(0.1) + for retries in range(50): + if self.get_lpmode(): + break + time.sleep(0.1) + return self.get_lpmode() else: # Force transition from LowPwr to HighPower state under SW control. @@ -1066,7 +1070,8 @@ def set_lpmode(self, lpmode): self.xcvr_eeprom.write(consts.MODULE_LEVEL_CONTROL, lpmode_val) time.sleep(1) mstate = self.get_module_state() - return True if mstate == 'ModuleReady' else False + return True if mstate == 'ModuleReady' or mstate=='ModulePwrUp' else False + return False def get_loopback_capability(self): diff --git a/sonic_platform_base/sonic_xcvr/xcvr_api_factory.py b/sonic_platform_base/sonic_xcvr/xcvr_api_factory.py index b4d0af8..9a08721 100644 --- a/sonic_platform_base/sonic_xcvr/xcvr_api_factory.py +++ b/sonic_platform_base/sonic_xcvr/xcvr_api_factory.py @@ -96,8 +96,8 @@ def create_xcvr_api(self): mem_map = Sff8636MemMap(codes) xcvr_eeprom = XcvrEeprom(self.reader, self.writer, mem_map) api = Sff8636Api(xcvr_eeprom) - # QSFP+ - elif id == 0x0D: + # QSFP+ or QSFP + elif id == 0x0D or id == 0x0C: revision_compliance = self._get_revision_compliance() if revision_compliance >= 3: codes = Sff8636Codes