git: 9f8a26691256 - stable/14 - ixgbe: Apply the 82599 D3 link workaround only for D3
Kevin Bowling <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.cvs.src |
|---|---|
| Message-ID | <6a879f89.24940.6a21fff1__14625.8152833738$1787273254$gmane$org@gitrepo.freebsd.org> |
The branch stable/14 has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=9f8a2669125695334d5d6eee998d9e5dea86f906 commit 9f8a2669125695334d5d6eee998d9e5dea86f906 Author: Kevin Bowling <[email protected]> AuthorDate: 2026-08-05 14:33:32 +0000 Commit: Kevin Bowling <[email protected]> CommitDate: 2026-08-21 00:43:46 +0000 ixgbe: Apply the 82599 D3 link workaround only for D3 ixgbe_stop_mac_link_on_d3_82599() implements the workaround for 82599 erratum 33. It forces incompatible auto-negotiation settings before the device enters D3, and reset clears them when returning to D0. ixgbe_if_stop() is also used for ordinary interface reconfiguration and recovery. Those paths do not enter D3 and should not program this power-management workaround. They continue to stop the adapter and disable the transmit laser. Move the call to ixgbe_setup_low_power_mode(), after ixgbe_if_stop(). This preserves the required ordering for detach, shutdown, and suspend while avoiding the D3 settings during ordinary restarts. (cherry picked from commit d025b84268ec18d55c2d3088729cf4ad7673ecac) --- sys/dev/ixgbe/if_ix.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c index 2b023ce67eed..7588cb369a10 100644 --- a/sys/dev/ixgbe/if_ix.c +++ b/sys/dev/ixgbe/if_ix.c @@ -3777,6 +3777,10 @@ ixgbe_setup_low_power_mode(if_ctx_t ctx) ixgbe_if_stop(ctx); } + /* Disable the 82599 link only when actually entering D3. */ + if (hw->mac.type == ixgbe_mac_82599EB) + ixgbe_stop_mac_link_on_d3_82599(hw); + return error; } /* ixgbe_setup_low_power_mode */ @@ -4747,8 +4751,6 @@ ixgbe_if_stop(if_ctx_t ctx) ixgbe_reset_hw(hw); hw->adapter_stopped = false; ixgbe_stop_adapter(hw); - if (hw->mac.type == ixgbe_mac_82599EB) - ixgbe_stop_mac_link_on_d3_82599(hw); /* Turn off the laser - noop with no optics */ ixgbe_disable_tx_laser(hw);