diff options
| author | Kevin Bowling <kbowling@FreeBSD.org> | 2026-07-28 11:21:14 +0000 |
|---|---|---|
| committer | Kevin Bowling <kbowling@FreeBSD.org> | 2026-07-31 11:55:39 +0000 |
| commit | db2bf4553ce32fdcae00f6e7392a6c2010247dd6 (patch) | |
| tree | 95234b25ca8a3331d713b88fa5aff03642e127ef | |
| parent | 786c71845f80b8bf733d07f9155de9740a8cbc19 (diff) | |
ixgbe: fix host interface timeout detection
The host-interface polling loop was scaled from milliseconds to
microseconds, but its terminal test was left using the unscaled timeout.
Completion at that intermediate iteration can be reported as a timeout,
while actual expiry is not recognized and can accept stale status.
Test against the scaled loop bound used by the polling loop.
Fixes: f46d75c90f5f ("ixgbe: improve MDIO performance by reducing semaphore/IPC delays")
MFC after: 1 week
| -rw-r--r-- | sys/dev/ixgbe/ixgbe_common.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/ixgbe/ixgbe_common.c b/sys/dev/ixgbe/ixgbe_common.c index 0b6bf728f25e..ab763595f0b5 100644 --- a/sys/dev/ixgbe/ixgbe_common.c +++ b/sys/dev/ixgbe/ixgbe_common.c @@ -4646,7 +4646,7 @@ s32 ixgbe_hic_unlocked(struct ixgbe_hw *hw, u32 *buffer, u32 length, return IXGBE_SUCCESS; /* Check command completion */ - if ((timeout && i == timeout) || + if ((timeout && i == timeout * 1000) || !(IXGBE_READ_REG(hw, IXGBE_HICR) & IXGBE_HICR_SV)) { ERROR_REPORT1(IXGBE_ERROR_CAUTION, "Command has failed with no status valid.\n"); |
