Skip to content
Closed
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
9 changes: 7 additions & 2 deletions platform/mellanox/mlnx-platform-api/sonic_platform/sfp.py
Original file line number Diff line number Diff line change
Expand Up @@ -1116,6 +1116,11 @@ def check_media_interface_technology(self, xcvr_api):
media_interface = self.read_eeprom(CMIS_MEDIA_INTERFACE_TECH_OFFSET, 1)
return media_interface[0] != 0x0F if media_interface else False

def is_cmis_rev_supported_for_software_control(self, xcvr_api):
cmis_rev = xcvr_api.get_cmis_rev()
major, minor = map(int, cmis_rev.split('.'))
return (major > 5) or (major == 5 and minor >= 2)

def is_supported_for_software_control(self, xcvr_api):
"""Check if the api object supports software control

Expand All @@ -1126,12 +1131,12 @@ def is_supported_for_software_control(self, xcvr_api):
bool: True if the api object supports software control
"""
if xcvr_api.is_flat_memory():
if self.is_cmis_api(xcvr_api):
if self.is_cmis_api(xcvr_api) and self.is_cmis_rev_supported_for_software_control(xcvr_api):
# For Copper active modules, Nvidia doesn't support SW control
return self.check_media_interface_technology(xcvr_api)
return self.is_sff_api(xcvr_api)

return self.is_cmis_api(xcvr_api)
return self.is_cmis_api(xcvr_api) and self.is_cmis_rev_supported_for_software_control(xcvr_api)

def check_power_capability(self):
"""Check module max power with cage power limit
Expand Down