[Intel-wired-lan] [PATCH iwl-next v2 0/8] ixgbe: nits and improvements

Aleksandr Loktionov
2026-04-08T13:12:23Z

Eight cleanups and improvements for the ixgbe driver.

Patches 1-4 split the adaptive-ITR algorithm improvements into
independently reviewable pieces as requested by Simon Horman. Each
patch is self-contained and can be reviewed and reverted independently:
1. Lower IXGBE_ITR_ADAPTIVE_MAX_USECS from 126 to 84 to prevent RX
starvation at minimum bulk-mode rates.
2. Add ixgbe_container_is_rx() helper and refine the RX-specific
latency algorithm (thresholds, no-packet handling, mode tracking).
3. Limit ITR decrease in latency mode to at most 2 us per update so
ACK workloads do not overdrive moderation.
4. Add IXGBE_ITR_ADAPTIVE_MASK_USECS constant to replace the
open-coded ~IXGBE_ITR_ADAPTIVE_LATENCY complement in ixgbe_set_itr.

Patch 5 removes ixgbe_ping_all_vfs() from both ixgbe_watchdog_link_is_up()
and ixgbe_watchdog_link_is_down(). The original submission only removed
the call from the link-up path; this version also removes it from the
link-down path, which carries the same race window against VF mailbox
initialization.

Patch 6 replaces ktime_to_ns(ktime_get_real()) with ktime_get_real_ns().

Patch 7 restructures ixgbe_fcoe_ddp_setup() so that dma_pool_alloc()
is called outside the get_cpu()/put_cpu() preemption-disabled section,
enabling GFP_KERNEL instead of GFP_ATOMIC. The prior submission left
the allocation inside the preempt-off block (GFP_KERNEL can sleep under
direct reclaim, which triggers a BUG() with preemption disabled).

Patch 8 fixes six local variables declared as u32 that are used to
store signed kernel error codes. Reviewed by Simon Horman.

Changes in v2:
- 1-4/8: Split monolithic ITR cleanup into four independent patches
as requested by Simon Horman.
- 5/8: Extend fix to also remove ixgbe_ping_all_vfs() from
ixgbe_watchdog_link_is_down() to cover the identical race.
- 6/8: No code change; add [N/M] numbering.
- 7/8: Move dma_pool_alloc() outside get_cpu()/put_cpu() so
GFP_KERNEL is used safely without sleeping under preempt-off.
- 8/8: Add Reviewed-by: Simon Horman; no code change.

---

Alexander Duyck (4):
ixgbe: lower IXGBE_ITR_ADAPTIVE_MAX_USECS to prevent RX starvation
ixgbe: add ixgbe_container_is_rx() helper and refine RX adaptive ITR
ixgbe: limit ITR decrease in latency mode to prevent ACK overdrive
ixgbe: add IXGBE_ITR_ADAPTIVE_MASK_USECS constant

Aleksandr Loktionov (2):
ixgbe: remove ixgbe_ping_all_vfs() from link state change handlers
ixgbe: use GFP_KERNEL in ixgbe_fcoe_ddp_setup()

Jacob Keller (1):
ixgbe: use ktime_get_real_ns() in ixgbe_ptp_reset()

Aleksandr Loktionov (1):
ixgbe: use int instead of u32 for error code variables

drivers/net/ethernet/intel/ixgbe/ixgbe.h | 5 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 50 +++++++----
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 97 ++++++++++++------
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 6 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 12 +--
6 files changed, 113 insertions(+), 59 deletions(-)
--
2.52.0