Skip to content

Commit 7f07fa6

Browse files
authored
Parse all VDM advertised fields during DOM monitoring (#486)
Signed-off-by: Mihir Patel <[email protected]>
1 parent 30895d1 commit 7f07fa6

File tree

2 files changed

+42
-10
lines changed

2 files changed

+42
-10
lines changed

sonic_platform_base/sonic_xcvr/api/public/cmis.py

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,29 @@
2121
logger = logging.getLogger(__name__)
2222
logger.addHandler(logging.NullHandler())
2323

24+
CMIS_VDM_KEY_TO_DB_PREFIX_KEY_MAP = {
25+
"eSNR Media Input [dB]" : "esnr_media_input",
26+
"PAM4 Level Transition Parameter Media Input [dB]" : "pam4_level_transition_media_input",
27+
"Pre-FEC BER Minimum Media Input" : "prefec_ber_min_media_input",
28+
"Pre-FEC BER Maximum Media Input" : "prefec_ber_max_media_input",
29+
"Pre-FEC BER Average Media Input" : "prefec_ber_avg_media_input",
30+
"Pre-FEC BER Current Value Media Input" : "prefec_ber_curr_media_input",
31+
"Errored Frames Minimum Media Input" : "errored_frames_min_media_input",
32+
"Errored Frames Maximum Media Input" : "errored_frames_max_media_input",
33+
"Errored Frames Average Media Input" : "errored_frames_avg_media_input",
34+
"Errored Frames Current Value Media Input" : "errored_frames_curr_media_input",
35+
"eSNR Host Input [dB]" : "esnr_host_input",
36+
"PAM4 Level Transition Parameter Host Input [dB]" : "pam4_level_transition_host_input",
37+
"Pre-FEC BER Minimum Host Input" : "prefec_ber_min_host_input",
38+
"Pre-FEC BER Maximum Host Input" : "prefec_ber_max_host_input",
39+
"Pre-FEC BER Average Host Input" : "prefec_ber_avg_host_input",
40+
"Pre-FEC BER Current Value Host Input" : "prefec_ber_curr_host_input",
41+
"Errored Frames Minimum Host Input" : "errored_frames_min_host_input",
42+
"Errored Frames Maximum Host Input" : "errored_frames_max_host_input",
43+
"Errored Frames Average Host Input" : "errored_frames_avg_host_input",
44+
"Errored Frames Current Value Host Input" : "errored_frames_curr_host_input"
45+
}
46+
2447
class CmisApi(XcvrApi):
2548
NUM_CHANNELS = 8
2649
LowPwrRequestSW = 4
@@ -233,13 +256,17 @@ def get_transceiver_bulk_status(self):
233256
self.vdm_dict = self.get_vdm(self.vdm.VDM_REAL_VALUE)
234257
try:
235258
bulk_status['laser_temperature'] = laser_temp_dict['monitor value']
236-
bulk_status['prefec_ber'] = self.vdm_dict['Pre-FEC BER Average Media Input'][1][0]
237-
bulk_status['postfec_ber_min'] = self.vdm_dict['Errored Frames Minimum Media Input'][1][0]
238-
bulk_status['postfec_ber_max'] = self.vdm_dict['Errored Frames Maximum Media Input'][1][0]
239-
bulk_status['postfec_ber_avg'] = self.vdm_dict['Errored Frames Average Media Input'][1][0]
240-
bulk_status['postfec_curr_val'] = self.vdm_dict['Errored Frames Current Value Media Input'][1][0]
241259
except (KeyError, TypeError):
242260
pass
261+
262+
for vdm_key, db_key in CMIS_VDM_KEY_TO_DB_PREFIX_KEY_MAP.items():
263+
for lane in range(1, self.NUM_CHANNELS + 1):
264+
try:
265+
bulk_status_key = "%s%d" % (db_key, lane)
266+
bulk_status[bulk_status_key] = self.vdm_dict[vdm_key][lane][0]
267+
except (KeyError, TypeError):
268+
pass
269+
243270
return bulk_status
244271

245272
def get_transceiver_threshold_info(self):

tests/sonic_xcvr/test_cmis.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1375,6 +1375,7 @@ def test_get_transceiver_info(self, mock_response, expected):
13751375
'Errored Frames Maximum Media Input':{1:[0, 1, 0, 1, 0, False, False, False, False]},
13761376
'Errored Frames Average Media Input':{1:[0, 1, 0, 1, 0, False, False, False, False]},
13771377
'Errored Frames Current Value Media Input':{1:[0, 1, 0, 1, 0, False, False, False, False]},
1378+
'Pre-FEC BER Current Value Host Input':{1: [2.66e-09, 1e-05, 0.0, 1e-06, 0.0, False, False, False, False], 2: [1.0, 1e-05, 0.0, 1e-06, 0.0, False, False, False, False], 3: [1.0, 1e-05, 0.0, 1e-06, 0.0, False, False, False, False], 4: [1.0, 1e-05, 0.0, 1e-06, 0.0, False, False, False, False]},
13781379
}
13791380
],
13801381
{
@@ -1387,11 +1388,15 @@ def test_get_transceiver_info(self, mock_response, expected):
13871388
'tx1bias': 70, 'tx2bias': 70, 'tx3bias': 70, 'tx4bias': 70,
13881389
'tx5bias': 70, 'tx6bias': 70, 'tx7bias': 70, 'tx8bias': 70,
13891390
'laser_temperature': 40,
1390-
'prefec_ber': 0.001,
1391-
'postfec_ber_min': 0,
1392-
'postfec_ber_max': 0,
1393-
'postfec_ber_avg': 0,
1394-
'postfec_curr_val': 0,
1391+
'prefec_ber_avg_media_input1': 0.001,
1392+
'errored_frames_min_media_input1': 0,
1393+
'errored_frames_max_media_input1': 0,
1394+
'errored_frames_avg_media_input1': 0,
1395+
'errored_frames_curr_media_input1': 0,
1396+
'prefec_ber_curr_host_input1': 2.66e-09,
1397+
'prefec_ber_curr_host_input2': 1.0,
1398+
'prefec_ber_curr_host_input3': 1.0,
1399+
'prefec_ber_curr_host_input4': 1.0
13951400
}
13961401
),
13971402
(

0 commit comments

Comments
 (0)