Skip to content

Commit edb3a9b

Browse files
Lazy load CDB FW handler
1 parent add299f commit edb3a9b

File tree

5 files changed

+20
-9
lines changed

5 files changed

+20
-9
lines changed

sonic_platform_base/sonic_xcvr/api/public/c_cmis.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@
5555
})
5656

5757
class CCmisApi(CmisApi):
58-
def __init__(self, xcvr_eeprom, init_cdb=False):
59-
super(CCmisApi, self).__init__(xcvr_eeprom, init_cdb)
58+
def __init__(self, xcvr_eeprom, init_cdb_fw_handler=False):
59+
super(CCmisApi, self).__init__(xcvr_eeprom, init_cdb_fw_handler)
6060

6161
def _get_vdm_key_to_db_prefix_map(self):
6262
combined_map = {**CMIS_VDM_KEY_TO_DB_PREFIX_KEY_MAP, **C_CMIS_DELTA_VDM_KEY_TO_DB_PREFIX_KEY_MAP}

sonic_platform_base/sonic_xcvr/api/public/cmis.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,25 @@ def set_cache_enabled(cls, enabled: bool):
138138
"""
139139
cls.cache_enabled = bool(enabled)
140140

141-
def __init__(self, xcvr_eeprom, init_cdb=False):
141+
def __init__(self, xcvr_eeprom, init_cdb_fw_handler=False):
142142
super(CmisApi, self).__init__(xcvr_eeprom)
143143
self.vdm = CmisVdmApi(xcvr_eeprom) if not self.is_flat_memory() else None
144144
self.cdb = CmisCdbApi(xcvr_eeprom) if self.is_cdb_supported() else None
145-
self.cdb_fw_hdlr = self._create_cdb_fw_handler() if init_cdb else None
145+
self._init_cdb_fw_handler = init_cdb_fw_handler
146+
self._cdb_fw_hdlr = None
147+
148+
@property
149+
def cdb_fw_hdlr(self):
150+
if not self._init_cdb_fw_handler:
151+
return None
152+
153+
if self._cdb_fw_hdlr is None:
154+
self._cdb_fw_hdlr = self._create_cdb_fw_handler()
155+
return self._cdb_fw_hdlr
146156

147157
def _create_cdb_fw_handler(self):
148158
if not self.is_cdb_supported():
159+
self._init_cdb_fw_handler = False
149160
return None
150161
cdb_mem_map = CdbMemMap(CdbCodes)
151162
return CdbFw(self.xcvr_eeprom.reader, self.xcvr_eeprom.writer, cdb_mem_map)

sonic_platform_base/sonic_xcvr/xcvr_api_factory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,10 @@ def _create_cmis_api(self):
8787
api = self._create_api(CmisCodes, CmisMemMap, CmisFr800gApi)
8888
else:
8989
xcvr_eeprom = XcvrEeprom(self.reader, self.writer, CmisMemMap(CmisCodes))
90-
api = CmisApi(xcvr_eeprom, init_cdb=True)
90+
api = CmisApi(xcvr_eeprom, init_cdb_fw_handler=True)
9191
if api.is_coherent_module():
9292
xcvr_eeprom = XcvrEeprom(self.reader, self.writer, CCmisMemMap(CmisCodes))
93-
api = CCmisApi(xcvr_eeprom, init_cdb=True)
93+
api = CCmisApi(xcvr_eeprom, init_cdb_fw_handler=True)
9494
return api
9595

9696
def _create_qsfp_api(self):

tests/sonic_xcvr/test_ccmis.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class TestCCmis(object):
1414
writer = MagicMock()
1515
eeprom = XcvrEeprom(reader, writer, mem_map)
1616

17-
api = CCmisApi(eeprom, init_cdb=False)
17+
api = CCmisApi(eeprom, init_cdb_fw_handler=False)
1818

1919
@pytest.mark.parametrize("mock_response, expected", [
2020
(8, 150),

tests/sonic_xcvr/test_sfp_optoe_base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ class TestSfpOptoeBase(object):
1919
writer = MagicMock()
2020
eeprom = XcvrEeprom(reader, writer, mem_map)
2121
sfp_optoe_api = SfpOptoeBase()
22-
ccmis_api = CCmisApi(eeprom, init_cdb=False)
23-
cmis_api = CmisApi(eeprom, init_cdb=False)
22+
ccmis_api = CCmisApi(eeprom, init_cdb_fw_handler=False)
23+
cmis_api = CmisApi(eeprom, init_cdb_fw_handler=False)
2424
sff8472_api = Sff8472Api(eeprom)
2525

2626
def test_is_transceiver_vdm_supported_non_cmis(self):

0 commit comments

Comments
 (0)