Skip to content

Commit add299f

Browse files
Only create CdbFwHandler if module support CDB
1 parent 9314538 commit add299f

File tree

7 files changed

+29
-27
lines changed

7 files changed

+29
-27
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, cdb):
59-
super(CCmisApi, self).__init__(xcvr_eeprom, cdb)
58+
def __init__(self, xcvr_eeprom, init_cdb=False):
59+
super(CCmisApi, self).__init__(xcvr_eeprom, init_cdb)
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: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111

1212
import logging
1313
from ...codes.public.cmis import CmisCodes
14+
from ...codes.public.cdb import CdbCodes
1415
from ...codes.public.sff8024 import Sff8024
1516
from ...fields import consts
17+
from ...mem_maps.public.cdb import CdbMemMap
18+
from ...cdb.cdb_fw import CdbFwHandler as CdbFw
1619
from ..xcvr_api import XcvrApi
1720
from .cmisCDB import CmisCdbApi
1821
from .cmisVDM import CmisVdmApi
@@ -135,11 +138,17 @@ def set_cache_enabled(cls, enabled: bool):
135138
"""
136139
cls.cache_enabled = bool(enabled)
137140

138-
def __init__(self, xcvr_eeprom, cdb_fw_hdlr=None):
141+
def __init__(self, xcvr_eeprom, init_cdb=False):
139142
super(CmisApi, self).__init__(xcvr_eeprom)
140143
self.vdm = CmisVdmApi(xcvr_eeprom) if not self.is_flat_memory() else None
141144
self.cdb = CmisCdbApi(xcvr_eeprom) if self.is_cdb_supported() else None
142-
self.cdb_fw_hdlr = cdb_fw_hdlr if self.is_cdb_supported() else None
145+
self.cdb_fw_hdlr = self._create_cdb_fw_handler() if init_cdb else None
146+
147+
def _create_cdb_fw_handler(self):
148+
if not self.is_cdb_supported():
149+
return None
150+
cdb_mem_map = CdbMemMap(CdbCodes)
151+
return CdbFw(self.xcvr_eeprom.reader, self.xcvr_eeprom.writer, cdb_mem_map)
143152

144153
def get_cdb_fw_handler(self):
145154
return self.cdb_fw_hdlr

sonic_platform_base/sonic_xcvr/xcvr_api_factory.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
from .api.public.c_cmis import CCmisApi
1313
from .mem_maps.public.cmis import CmisMemMap
1414
from .mem_maps.public.c_cmis import CCmisMemMap
15-
from .mem_maps.public.cdb import CdbMemMap
16-
from .cdb.cdb_fw import CdbFwHandler as CdbFw
17-
from .codes.public.cdb import CdbCodes
1815

1916
from .codes.credo.aec_800g import CmisAec800gCodes
2017
from .api.credo.aec_800g import CmisAec800gApi
@@ -89,13 +86,11 @@ def _create_cmis_api(self):
8986
('EOPTOLINK' in vendor_name and vendor_pn in EOP_800G_VENDOR_PN_LIST):
9087
api = self._create_api(CmisCodes, CmisMemMap, CmisFr800gApi)
9188
else:
92-
cdb_mem_map = CdbMemMap(CdbCodes)
93-
cdb_fw = CdbFw(self.reader, self.writer, cdb_mem_map)
9489
xcvr_eeprom = XcvrEeprom(self.reader, self.writer, CmisMemMap(CmisCodes))
95-
api = CmisApi(xcvr_eeprom, cdb_fw)
90+
api = CmisApi(xcvr_eeprom, init_cdb=True)
9691
if api.is_coherent_module():
9792
xcvr_eeprom = XcvrEeprom(self.reader, self.writer, CCmisMemMap(CmisCodes))
98-
api = CCmisApi(xcvr_eeprom, cdb_fw)
93+
api = CCmisApi(xcvr_eeprom, init_cdb=True)
9994
return api
10095

10196
def _create_qsfp_api(self):

tests/sonic_xcvr/test_ccmis.py

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,18 @@
33
import pytest
44
from sonic_platform_base.sonic_xcvr.api.public.c_cmis import CCmisApi, C_CMIS_XCVR_INFO_DEFAULT_DICT
55
from sonic_platform_base.sonic_xcvr.mem_maps.public.c_cmis import CCmisMemMap
6-
from sonic_platform_base.sonic_xcvr.mem_maps.public.cdb import CdbMemMap
76
from sonic_platform_base.sonic_xcvr.xcvr_eeprom import XcvrEeprom
87
from sonic_platform_base.sonic_xcvr.codes.public.cmis import CmisCodes
9-
from sonic_platform_base.sonic_xcvr.codes.public.cdb import CdbCodes
10-
from sonic_platform_base.sonic_xcvr.cdb.cdb_fw import CdbFwHandler as CdbFw
118

129

13-
CdbFw.initFwHandler = MagicMock(return_value=True)
14-
1510
class TestCCmis(object):
1611
codes = CmisCodes
1712
mem_map = CCmisMemMap(codes)
1813
reader = MagicMock(return_value=None)
1914
writer = MagicMock()
2015
eeprom = XcvrEeprom(reader, writer, mem_map)
2116

22-
cdb = CdbFw(reader, writer, CdbMemMap(CdbCodes))
23-
api = CCmisApi(eeprom, cdb)
17+
api = CCmisApi(eeprom, init_cdb=False)
2418

2519
@pytest.mark.parametrize("mock_response, expected", [
2620
(8, 150),

tests/sonic_xcvr/test_cdb_fw.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def test_initFwHandler_send_cmd_failure(self):
5959

6060
result = handler.initFwHandler()
6161

62-
assert result == True
62+
assert result == False
6363

6464
def test_initFwHandler_read_reply_none(self):
6565
"""Test initFwHandler when read_reply returns None"""
@@ -75,7 +75,7 @@ def test_initFwHandler_read_reply_none(self):
7575

7676
result = handler.initFwHandler()
7777

78-
assert result == True
78+
assert result == False
7979

8080
def test_initFwHandler_lpl_only(self):
8181
"""Test initFwHandler with LPL only mechanism"""

tests/sonic_xcvr/test_cmis.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2997,3 +2997,11 @@ def test_get_tx_adaptive_eq_fail_flag(self, mock_response, expected):
29972997
self.api.xcvr_eeprom.read.return_value = mock_response[1]
29982998
result = self.api.get_tx_adaptive_eq_fail_flag()
29992999
assert result == expected
3000+
3001+
@patch('sonic_platform_base.sonic_xcvr.cdb.cdb_fw.CdbFwHandler.initFwHandler', MagicMock(return_value=True))
3002+
@patch('sonic_platform_base.sonic_xcvr.api.public.cmis.CmisApi.is_cdb_supported')
3003+
def test_create_cdb_fw_handler(self, mock_cdb_support):
3004+
mock_cdb_support.return_value = False
3005+
assert self.api._create_cdb_fw_handler() is None
3006+
mock_cdb_support.return_value = True
3007+
assert self.api._create_cdb_fw_handler()

tests/sonic_xcvr/test_sfp_optoe_base.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,8 @@
99
from sonic_platform_base.sonic_xcvr.xcvr_eeprom import XcvrEeprom
1010
from sonic_platform_base.sonic_xcvr.codes.public.cmis import CmisCodes
1111
from sonic_platform_base.sonic_xcvr.api.public.sff8472 import Sff8472Api
12-
from sonic_platform_base.sonic_xcvr.mem_maps.public.cdb import CdbMemMap
13-
from sonic_platform_base.sonic_xcvr.codes.public.cdb import CdbCodes
14-
from sonic_platform_base.sonic_xcvr.cdb.cdb_fw import CdbFwHandler as CdbFw
1512

16-
CdbFw.initFwHandler = MagicMock(return_value=True)
13+
1714
class TestSfpOptoeBase(object):
1815

1916
codes = CmisCodes
@@ -22,9 +19,8 @@ class TestSfpOptoeBase(object):
2219
writer = MagicMock()
2320
eeprom = XcvrEeprom(reader, writer, mem_map)
2421
sfp_optoe_api = SfpOptoeBase()
25-
cdb = CdbFw(reader, writer, CdbMemMap(CdbCodes))
26-
ccmis_api = CCmisApi(eeprom, cdb)
27-
cmis_api = CmisApi(eeprom, cdb)
22+
ccmis_api = CCmisApi(eeprom, init_cdb=False)
23+
cmis_api = CmisApi(eeprom, init_cdb=False)
2824
sff8472_api = Sff8472Api(eeprom)
2925

3026
def test_is_transceiver_vdm_supported_non_cmis(self):

0 commit comments

Comments
 (0)