From: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
To: intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com,
aleksandr.loktionov@intel.com
Cc: netdev@vger.kernel.org
Subject: [PATCH iwl-net v5 0/4] ixgbe: four bug fixes
Date: Fri, 15 May 2026 21:04:13 +0200 [thread overview]
Message-ID: <20260515090000.5112345-1-aleksandr.loktionov@intel.com> (raw)
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(-)
next reply other threads:[~2026-05-15 19:04 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-15 19:04 Aleksandr Loktionov [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260515090000.5112345-1-aleksandr.loktionov@intel.com \
--to=aleksandr.loktionov@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox