Netdev List
 help / color / mirror / Atom feed
* [PATCH iwl-net v5 0/4] ixgbe: four bug fixes
@ 2026-05-15 19:04 Aleksandr Loktionov
  2026-05-15 19:04 ` [PATCH iwl-net v5 1/4] ixgbe: fix SWFW semaphore timeout for X550 family Aleksandr Loktionov
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Aleksandr Loktionov @ 2026-05-15 19:04 UTC (permalink / raw)
  To: intel-wired-lan, anthony.l.nguyen, aleksandr.loktionov; +Cc: netdev

Four fixes for the ixgbe driver, covering a SWFW semaphore timeout
miscalculation, a false-success return in the cls_u32 nexthdr path,
an adaptive-ITR u8 overflow, and wrong bit positions in the UP-to-TC
register normalisation.

Patch 1 fixes a timeout too short for X550 family FW update operations,
which caused spurious EBUSY failures during module-update and SR-dump
commands.

Patches 2-4 fix correctness bugs with user-visible effects: a cls_u32
nexthdr offload path that silently dropped filter-install errors, an
adaptive-ITR path that corrupted the mode flag via u8 truncation, and
a UP-to-TC validation loop that cleared only UP1 regardless of which
user priority was out of bounds.

Patch 3 reworks the ITR write-back to keep the mode flag
(IXGBE_ITR_ADAPTIVE_LATENCY, bit 7) and the usec delay in separate
operands until the final store, and clamps the delay to
[IXGBE_ITR_ADAPTIVE_MIN_USECS, IXGBE_ITR_ADAPTIVE_MAX_USECS] via
clamp_val().

Patch 4 corrects the Fixes: tag to 8b1c0b24d9af ("ixgbe: configure
minimal packet buffers to support TC") per Simon Horman.

Changes in v5:
 - DROPPED "ixgbe: call ixgbe_setup_fc() before fc_enable() after NVM
   update" (was 2/5 in v4).
   ixgbe_setup_fc_e610() is documented as an init-time-only operation.
   Calling it unconditionally from ixgbe_watchdog_update_link() on
   every link-up event causes it to issue an ACI set_phy_cfg command
   with IXGBE_ACI_PHY_ENA_AUTO_LINK_UPDT on E610 (Linkville) devices.
   That flag instructs the firmware to re-initialise the PHY, which
   immediately drops the link; the resulting link-up triggers another
   watchdog call, which issues another set_phy_cfg, creating a rapid
   reset loop during early init.  The E610 firmware's fault-detection
   logic sets IXGBE_GL_MNG_FWSM_RECOVERY_M in response, causing all
   E610 ports to report "Firmware recovery mode detected. Limiting
   functionality." and enumerate no network interfaces.
   A correct fix must gate the setup_fc() call on an actual NVM-update
   event rather than on every link-up; that rework will be sent as a
   separate series once the interaction with the E610 ACI PHY-config
   path is fully understood.
 - 1/4 (was 1/5), 2/4 (was 3/5), 3/4 (was 4/5), 4/4 (was 5/5):
   renumbered only; no code or commit-message change.

Changes in v4:
 - DROPPED "ixgbe: add bounds check for debugfs register access"
   (was 2/6 in v3).  The WARN_ON_ONCE(reg > IXGBE_HFDR) guard added
   to ixgbe_read_reg() fires on legitimate driver code paths on
   X550EM_a / E610 (LKV): probe reads IXGBE_EEC(hw), which on those
   parts resolves to IXGBE_EEC_X550EM_a == 0x15FF8, exceeding
   IXGBE_HFDR == 0x15FE8.  IXGBE_LINKS_10G_LANE_SYNC (0x17000) is
   another in-driver register beyond IXGBE_HFDR.  The premise of the
   patch -- that IXGBE_HFDR is the highest valid MMIO offset -- is
   incorrect, so the read-side guard cannot be retained as written,
   and the debugfs-side bound suffers from the same wrong ceiling.
   A correct debugfs-only bound (against pci_resource_len(BAR0)) will
   be sent separately if/when needed; that work is outside the scope
   of these -net fixes.  Reported by Larysa Zaremba.
 - 1/5 (was 1/6), 2/5 (was 3/6), 3/5 (was 4/6), 4/5 (was 5/6),
   5/5 (was 6/6): renumbered only; no code or commit-message change.

Changes in v3:
 - cover: removed Patch 1 squash-history description.
 - 1/6: add Reviewed-by: Simon Horman, Reviewed-by: Jacob Keller.
 - 2/6: add Reviewed-by: Simon Horman; no code change.
 - 3/6: add backplane-link guard in ixgbe_watchdog_update_link().
 - 4/6: add Reviewed-by: Simon Horman; no code change.
 - 5/6: rework clamping -- use clamp_val() with mode and delay as
        separate operands; clamp to [IXGBE_ITR_ADAPTIVE_MIN_USECS,
        IXGBE_ITR_ADAPTIVE_MAX_USECS].
 - 6/6: correct Fixes: tag to 8b1c0b24d9af; add Reviewed-by:
        Simon Horman.

Changes in v2:
 - 1/6: Squash two patches; fix commit msg ("200ms" -> "1s"); three
        explicit mac.type == comparisons instead of range check.
 - 2/6: Add Fixes: tag; reroute from iwl-next to iwl-net.
 - 3/6: Add Fixes: tag; reroute to iwl-net; skip fc_enable() when
        setup_fc() fails to avoid committing stale FC state.
 - 4/6: Add Fixes: tag; reroute from iwl-next to iwl-net.
 - 5/6: Add proper [N/M] patch numbering.
 - 6/6: Reroute to iwl-net; swap to (expr >> ..) & MASK operand order.
---

Aleksandr Loktionov (4):
  ixgbe: fix SWFW semaphore timeout for X550 family
  ixgbe: fix cls_u32 nexthdr path returning success when no entry installed
  ixgbe: fix ITR value overflow in adaptive interrupt throttling
  ixgbe: fix integer overflow and wrong bit position in ixgbe_validate_rtr()

 drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 17 +++++++++--------
 drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c |  8 ++++++++
 2 files changed, 17 insertions(+), 8 deletions(-)

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-05-15 19:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-15 19:04 [PATCH iwl-net v5 0/4] ixgbe: four bug fixes Aleksandr Loktionov
2026-05-15 19:04 ` [PATCH iwl-net v5 1/4] ixgbe: fix SWFW semaphore timeout for X550 family Aleksandr Loktionov
2026-05-15 19:04 ` [PATCH iwl-net v5 2/4] ixgbe: fix cls_u32 nexthdr path returning success when no entry installed Aleksandr Loktionov
2026-05-15 19:04 ` [PATCH iwl-net v5 3/4] ixgbe: fix ITR value overflow in adaptive interrupt throttling Aleksandr Loktionov
2026-05-15 19:04 ` [PATCH iwl-net v5 4/4] ixgbe: fix integer overflow and wrong bit position in ixgbe_validate_rtr() Aleksandr Loktionov

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox