aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Bowling <kbowling@FreeBSD.org>2026-07-28 11:21:14 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2026-08-08 00:42:51 +0000
commit33fb0b470b36e3b7aa0f2b8979f203f0bdee9d10 (patch)
treeb75fcd0084d5192778336b42ca27f8c1bebb885e
parentedf4edbd1ca09ee9b0c255d7506f3b5bc9542557 (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") (cherry picked from commit db2bf4553ce32fdcae00f6e7392a6c2010247dd6)
-rw-r--r--sys/dev/ixgbe/ixgbe_common.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/dev/ixgbe/ixgbe_common.c b/sys/dev/ixgbe/ixgbe_common.c
index 6495bfdecc60..439b861a17e9 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");