Skip to content

Commit 95c7670

Browse files
authored
[CMIS] Add power up duration for power up timeout (sonic-net#345)
* [CMIS] Add power up duration for power up timeout Signed-off-by: chiourung_huang <[email protected]> * modify function name after code review --------- Signed-off-by: chiourung_huang <[email protected]>
1 parent d1203ef commit 95c7670

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

sonic-xcvrd/tests/test_xcvrd.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,7 @@ def test_CmisManagerTask_task_worker(self, mock_chassis):
777777
mock_xcvr_api.get_laser_config_freq = MagicMock(return_value=0)
778778
mock_xcvr_api.get_module_type_abbreviation = MagicMock(return_value='QSFP-DD')
779779
mock_xcvr_api.get_datapath_init_duration = MagicMock(return_value=60000.0)
780+
mock_xcvr_api.get_module_pwr_up_duration = MagicMock(return_value=70000.0)
780781
mock_xcvr_api.get_datapath_deinit_duration = MagicMock(return_value=600000.0)
781782
mock_xcvr_api.get_cmis_rev = MagicMock(return_value='5.0')
782783
mock_xcvr_api.get_dpinit_pending = MagicMock(return_value={

sonic-xcvrd/xcvrd/xcvrd.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1088,6 +1088,12 @@ def get_cmis_dp_init_duration_secs(self, api):
10881088
def get_cmis_dp_deinit_duration_secs(self, api):
10891089
return api.get_datapath_deinit_duration()/1000
10901090

1091+
def get_cmis_module_power_up_duration_secs(self, api):
1092+
return api.get_module_pwr_up_duration()/1000
1093+
1094+
def get_cmis_module_power_down_duration_secs(self, api):
1095+
return api.get_module_pwr_down_duration()/1000
1096+
10911097
def get_cmis_host_lanes_mask(self, api, appl, host_lane_count, subport):
10921098
"""
10931099
Retrieves mask of active host lanes based on appl, host lane count and subport
@@ -1559,8 +1565,10 @@ def task_worker(self):
15591565
api.set_lpmode(False)
15601566
self.port_dict[lport]['cmis_state'] = self.CMIS_STATE_AP_CONF
15611567
dpDeinitDuration = self.get_cmis_dp_deinit_duration_secs(api)
1562-
self.log_notice("{}: DpDeinit duration {} secs".format(lport, dpDeinitDuration))
1563-
self.port_dict[lport]['cmis_expired'] = now + datetime.timedelta(seconds=dpDeinitDuration)
1568+
modulePwrUpDuration = self.get_cmis_module_power_up_duration_secs(api)
1569+
self.log_notice("{}: DpDeinit duration {} secs, modulePwrUp duration {} secs".format(lport, dpDeinitDuration, modulePwrUpDuration))
1570+
self.port_dict[lport]['cmis_expired'] = now + datetime.timedelta(seconds = max(modulePwrUpDuration, dpDeinitDuration))
1571+
15641572
elif state == self.CMIS_STATE_AP_CONF:
15651573
# TODO: Use fine grained time when the CMIS memory map is available
15661574
if not self.check_module_state(api, ['ModuleReady']):

0 commit comments

Comments
 (0)