Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions sonic_platform_base/sonic_xcvr/fields/consts.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,36 @@
RX_AVG_MER_PM = "rxAvgMerPm"
RX_MIN_MER_PM = "rxMinMerPm"
RX_MAX_MER_PM = "rxMaxMerPm"
RX_AVG_CLOCK_REC_PM = "rxAvgClockRecPm"
RX_MIN_CLOCK_REC_PM = "rxMinClockRecPm"
RX_MAX_CLOCK_REC_PM = "rxMaxClockRecPm"
RX_AVG_LG_SOPMD_PM = "rxAvgLGSopmdPm"
RX_MIN_LG_SOPMD_PM = "rxMinLGSopmdPm"
RX_MAX_LG_SOPMD_PM = "rxMaxLGSopmdPm"
RX_AVG_SNR_MARGIN_PM = "rxAvgSNRMarginPm"
RX_MIN_SNR_MARGIN_PM = "rxMinSNRMarginPm"
RX_MAX_SNR_MARGIN_PM = "rxMaxSNRMarginPm"
RX_AVG_QFACTOR_PM = "rxAvgQFactorPm"
RX_MIN_QFACTOR_PM = "rxMinQFactorPm"
RX_MAX_PM_QFACTOR = "rxMaxPmQFactor"
RX_AVG_QMARGIN_PM = "rxAvgQMarginPm"
RX_MIN_QMARGIN_PM = "rxMinQMarginPm"
RX_MAX_QMARGIN_PM = "rxMaxQMarginPm"

## Data Path Host Interface Performance Monitoring
DATA_PATH_HOST_IF_PM = "Data Path Host Interface Performance Monitoring"
TX_BITS_PM = "txBitsPm"
TX_BITS_SUB_INTERVAL_PM = "txBitsSubIntPm"
TX_CORR_BITS_PM = "txCorrBitsPm"
TX_MIN_CORR_BITS_SUB_INTERVAL_PM = "txMinCorrBitsSubIntPm"
TX_MAX_CORR_BITS_SUB_INTERVAL_PM = "txMaxCorrBitsSubIntPm"
TX_FRAMES_PM = "txFramesPm"
TX_FRAMES_SUB_INTERVAL_PM = "txFramesSubIntPm"
TX_FRAMES_UNCORR_ERR_PM = "txFramesUncorrErrPm"
TX_MIN_FRAMES_UNCORR_ERR_SUB_INTERVAL_PM = "txMinFramesUncorrErrSubintPm"
TX_MAX_FRAMES_UNCORR_ERR_SUB_INTERVAL_PM = "txMaxFramesUncorrErrSubintPm"
TX_CORRECTED_FRAMES_PM = "txCorrectedFramesPm"
TX_CORRECTED_FRAMES_SUB_INTERVAL_PM = "txCorrectedFramesSubintPm"

# CDB
TRANS_CDB_FIELD = "TransceiverCdb"
Expand Down
2 changes: 2 additions & 0 deletions sonic_platform_base/sonic_xcvr/mem_maps/public/cmis/c_cmis.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
CCmisModuleConfigSupportPage,
CCmisMediaLaneFecPmPage,
CCmisMediaLaneLinkPmPage,
CCmisDataPathHostIfPmPage,
)


Expand All @@ -21,4 +22,5 @@ def __init__(self, codes, bank=0):
CCmisModuleConfigSupportPage(codes, bank=bank), # 0x04
CCmisMediaLaneFecPmPage(codes, bank=bank), # 0x34
CCmisMediaLaneLinkPmPage(codes, bank=bank), # 0x35
CCmisDataPathHostIfPmPage(codes, bank=bank), # 0x3A
)
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
from .page2f import CmisVdmAdvertisingCtrlPage
from .page34 import CCmisMediaLaneFecPmPage
from .page35 import CCmisMediaLaneLinkPmPage
from .page3a import CCmisDataPathHostIfPmPage
from .page9f import CmisCdbMessagePage
from .page9f_cdb import CdbLplMessagePage

Expand Down Expand Up @@ -60,6 +61,7 @@
'CmisVdmAdvertisingCtrlPage',
'CCmisMediaLaneFecPmPage',
'CCmisMediaLaneLinkPmPage',
'CCmisDataPathHostIfPmPage',
'CmisCdbMessagePage',
'CdbLplMessagePage',
]
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,19 @@ def __init__(self, codes, bank=0, page=0x35):
NumberRegField(consts.RX_AVG_MER_PM, self.getaddr(206), format=">H", size=2, scale=10.0),
NumberRegField(consts.RX_MIN_MER_PM, self.getaddr(208), format=">H", size=2, scale=10.0),
NumberRegField(consts.RX_MAX_MER_PM, self.getaddr(210), format=">H", size=2, scale=10.0),
NumberRegField(consts.RX_AVG_CLOCK_REC_PM, self.getaddr(212), format=">h", size=2, scale=327.67),
NumberRegField(consts.RX_MIN_CLOCK_REC_PM, self.getaddr(214), format=">h", size=2, scale=327.67),
NumberRegField(consts.RX_MAX_CLOCK_REC_PM, self.getaddr(216), format=">h", size=2, scale=327.67),
NumberRegField(consts.RX_AVG_LG_SOPMD_PM, self.getaddr(218), format=">H", size=2),
NumberRegField(consts.RX_MIN_LG_SOPMD_PM, self.getaddr(220), format=">H", size=2),
NumberRegField(consts.RX_MAX_LG_SOPMD_PM, self.getaddr(222), format=">H", size=2),
NumberRegField(consts.RX_AVG_SNR_MARGIN_PM, self.getaddr(224), format=">h", size=2, scale=10.0),
NumberRegField(consts.RX_MIN_SNR_MARGIN_PM, self.getaddr(226), format=">h", size=2, scale=10.0),
NumberRegField(consts.RX_MAX_SNR_MARGIN_PM, self.getaddr(228), format=">h", size=2, scale=10.0),
NumberRegField(consts.RX_AVG_QFACTOR_PM, self.getaddr(230), format=">H", size=2, scale=10.0),
NumberRegField(consts.RX_MIN_QFACTOR_PM, self.getaddr(232), format=">H", size=2, scale=10.0),
NumberRegField(consts.RX_MAX_PM_QFACTOR, self.getaddr(234), format=">H", size=2, scale=10.0),
NumberRegField(consts.RX_AVG_QMARGIN_PM, self.getaddr(236), format=">h", size=2, scale=10.0),
NumberRegField(consts.RX_MIN_QMARGIN_PM, self.getaddr(238), format=">h", size=2, scale=10.0),
NumberRegField(consts.RX_MAX_QMARGIN_PM, self.getaddr(240), format=">h", size=2, scale=10.0),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
"""
page3a.py

C-CMIS Page 3Ah - Data Path Host Interface Performance Monitors.
"""

from .page import CmisPage
from .....fields.xcvr_field import NumberRegField
from .....fields import consts


class CCmisDataPathHostIfPmPage(CmisPage):
"""C-CMIS Page 3Ah: data path host-interface performance-monitor counters."""

def __init__(self, codes, bank=0, page=0x3A):
super().__init__(codes, page=page, bank=bank)

self.fields[consts.DATA_PATH_HOST_IF_PM] = [
NumberRegField(consts.TX_BITS_PM, self.getaddr(128), format=">Q", size=8),
NumberRegField(consts.TX_BITS_SUB_INTERVAL_PM, self.getaddr(136), format=">Q", size=8),
NumberRegField(consts.TX_CORR_BITS_PM, self.getaddr(144), format=">Q", size=8),
NumberRegField(consts.TX_MIN_CORR_BITS_SUB_INTERVAL_PM, self.getaddr(152), format=">Q", size=8),
NumberRegField(consts.TX_MAX_CORR_BITS_SUB_INTERVAL_PM, self.getaddr(160), format=">Q", size=8),
NumberRegField(consts.TX_FRAMES_PM, self.getaddr(168), format=">I", size=4),
NumberRegField(consts.TX_FRAMES_SUB_INTERVAL_PM, self.getaddr(172), format=">I", size=4),
NumberRegField(consts.TX_FRAMES_UNCORR_ERR_PM, self.getaddr(176), format=">I", size=4),
NumberRegField(consts.TX_MIN_FRAMES_UNCORR_ERR_SUB_INTERVAL_PM, self.getaddr(180), format=">I", size=4),
NumberRegField(consts.TX_MAX_FRAMES_UNCORR_ERR_SUB_INTERVAL_PM, self.getaddr(184), format=">I", size=4),
NumberRegField(consts.TX_CORRECTED_FRAMES_PM, self.getaddr(188), format=">I", size=4),
NumberRegField(consts.TX_CORRECTED_FRAMES_SUB_INTERVAL_PM, self.getaddr(192), format=">I", size=4),
]
Loading