Skip to content

Commit

Permalink
[Mellanox] Credo Y-cable | add more log info, checks, fix exception m…
Browse files Browse the repository at this point in the history
…essage (#10779)

- Why I did it
Script fails when there is an exception while reading

- How I did it
Add more logs and checks. Fix wrong variable naming and messages.

- How to verify it
Provoke exception while read_eeprom() and check that it is handled properly
  • Loading branch information
ayurkiv-nvda authored May 19, 2022
1 parent 910e1c6 commit 70d71f9
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions platform/mellanox/mlnx-platform-api/sonic_platform/sfp.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ def write_mlxreg_eeprom(self, num_bytes, dword, device_address, page):
--set {} -y".format(self.mst_pci_device, self.slot_id, self.sdk_index, device_address, page, num_bytes, dword)
subprocess.check_call(cmd, shell=True, universal_newlines=True, stdout=subprocess.DEVNULL)
except subprocess.CalledProcessError as e:
logger.log_error("Error! Unable to write data for {} port, page {} offset {}, rc = {}, err msg: {}".format(self.sdk_index, page, device_address, e.returncode, e.output))
logger.log_error("Error! Unable to write data dword={} for {} port, page {} offset {}, rc = {}, err msg: {}".format(dword, self.sdk_index, page, device_address, e.returncode, e.output))
return False
return True

Expand All @@ -198,11 +198,14 @@ def read_mlxred_eeprom(self, offset, page, num_bytes):
--get".format(self.mst_pci_device, self.slot_id, self.sdk_index, offset, page, num_bytes)
result = subprocess.check_output(cmd, universal_newlines=True, shell=True)
except subprocess.CalledProcessError as e:
logger.log_error("Error! Unable to write data for {} port, page {} offset {}, rc = {}, err msg: {}".format(self.sdk_index, page, device_address, e.returncode, e.output))
logger.log_error("Error! Unable to read data for {} port, page {} offset {}, rc = {}, err msg: {}".format(self.sdk_index, page, offset, e.returncode, e.output))
return None
return result

def parse_mlxreg_read_output(self, read_output, num_bytes):
if not read_output:
return None

res = ""
dword_num = num_bytes // BYTES_IN_DWORD
used_bytes_in_dword = num_bytes % BYTES_IN_DWORD
Expand Down

0 comments on commit 70d71f9

Please sign in to comment.