From 51e92f580fd85d8fe2ddb8304727676284a0a9d7 Mon Sep 17 00:00:00 2001 From: Michael Adler Date: Mon, 17 Jun 2024 12:05:39 -0400 Subject: [PATCH] hssi: increate timeout to 1 second (#3132) Some operations are taking longer than the current timeout, such as putting an HSSI port in loopback. Timeout is a failure, so waiting a little long isn't a problem. Actual completion observed has been over 100ms, so chose 1 second. The current timeout logic could be improved but is not changed in this commit. Time passed is calculated as the sum of sleep times, which assumes MMIO reads are free and sleep is exactly the requested wait. Signed-off-by: Michael Adler --- binaries/hssi/ethernet/hssicommon.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/binaries/hssi/ethernet/hssicommon.py b/binaries/hssi/ethernet/hssicommon.py index c792c084c7b8..6625f624bf28 100644 --- a/binaries/hssi/ethernet/hssicommon.py +++ b/binaries/hssi/ethernet/hssicommon.py @@ -51,10 +51,12 @@ DEFAULT_BDF = 'ssss:bb:dd.f' # mailbox register poll interval 1 microseconds -HSSI_POLL_SLEEP_TIME = 1/1000000 +HSSI_POLL_SLEEP_TIME_SEC = 1/1000000 -# mailbox register poll timeout 500 microseconds -HSSI_POLL_TIMEOUT = 5/10000 +# Mailbox register poll timeout 1 second. Responses are typically much +# faster than one second, but in rare cases can take a while. No reason +# to make this short since timeout is generally a failure. +HSSI_POLL_TIMEOUT_SEC = 1 HSSI_FEATURE_ID = 0x15 @@ -1185,11 +1187,11 @@ def clear_reg_bits(self, idx, width, 0) self.write32(region_index, reg_offset, value) - time.sleep(HSSI_POLL_SLEEP_TIME) - if total_time > HSSI_POLL_TIMEOUT: + time.sleep(HSSI_POLL_SLEEP_TIME_SEC) + if total_time > HSSI_POLL_TIMEOUT_SEC: return False - total_time = HSSI_POLL_SLEEP_TIME + total_time + total_time = HSSI_POLL_SLEEP_TIME_SEC + total_time return False def clear_reg(self, @@ -1209,11 +1211,11 @@ def clear_reg(self, return True self.write32(region_index, reg_offset, 0x0) - time.sleep(HSSI_POLL_SLEEP_TIME) - if total_time > HSSI_POLL_TIMEOUT: + time.sleep(HSSI_POLL_SLEEP_TIME_SEC) + if total_time > HSSI_POLL_TIMEOUT_SEC: return False - total_time = HSSI_POLL_SLEEP_TIME + total_time + total_time = HSSI_POLL_SLEEP_TIME_SEC + total_time return False @@ -1262,10 +1264,10 @@ def read_poll_timeout(self, if ((reg_data >> bit_index) & 1) == 1: return True - time.sleep(HSSI_POLL_SLEEP_TIME) - if total_time > HSSI_POLL_TIMEOUT: + time.sleep(HSSI_POLL_SLEEP_TIME_SEC) + if total_time > HSSI_POLL_TIMEOUT_SEC: return False - total_time = HSSI_POLL_SLEEP_TIME + total_time + total_time = HSSI_POLL_SLEEP_TIME_SEC + total_time return False