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-next v2 0/8] ixgbe: small cleanups and improvements
Date: Tue, 12 May 2026 16:08:56 +0200 [thread overview]
Message-ID: <20260512140904.4105236-1-aleksandr.loktionov@intel.com> (raw)
Eight independent cleanups and improvements for the ixgbe driver,
grouped by theme:
Naming / type hygiene (patches 1-2):
Patch 1 renames ixgbe_q_vector::numa_node to ::node. The field name
shadows the struct device numa_node accessor, causing a sparse warning.
The rename aligns with other Intel drivers (ice, igc).
Patch 2 changes local error-code variables from u32 to int in six
functions across ixgbe_main.c, ixgbe_phy.c and ixgbe_x550.c. Storing
a signed errno in an unsigned type works by accident for truthiness
checks but breaks exact comparisons and proper propagation.
Bug fix (patch 3):
Patch 3 rejects duplicate FDIR perfect-filter rules before programming
hardware. The same 5-tuple with a different sw_idx would silently
consume a second scarce FDIR slot and confuse rule deletion.
Returns -EEXIST to userspace on duplicate rather than -EINVAL.
Performance (patch 4):
Patch 4 replaces the busy-wait udelay(1000) in the SECRX_RDY poll
loop with usleep_range(10, 20) and raises the iteration count from
40 to 4000. Because usleep_range(min, max) is guaranteed to sleep
at least 'min' us, 4000 * 10 us preserves the original 40 ms
minimum-wait-before-timeout; worst-case grows to ~80 ms (acceptable
since SECRX_RDY failing to assert is non-fatal and only logged).
Typical stall on fast hardware drops from up to ~1 ms per iteration
to ~10-20 us.
Code quality (patches 5-8):
Patch 5 replaces ktime_to_ns(ktime_get_real()) with the direct
ktime_get_real_ns() helper.
Patch 6 factors the three-line autoneg-restart sequence duplicated in
ixgbe_setup_phy_link_generic() and ixgbe_setup_phy_link_tnx() into a
static helper ixgbe_restart_auto_neg(). The helper checks the return
value of read_reg() and returns early on error to avoid writing
uninitialized data to the PHY register.
Patches 7-8 improve the adaptive-ITR algorithm in two steps:
7/8: Limit ITR decrease in latency mode to at most
IXGBE_ITR_ADAPTIVE_MIN_INC (2 us) per step so that ACK-driven
workloads do not overdrive interrupt rate. Uses max_t() to
ensure the clamp never drives ITR below the algorithm's own
computation.
8/8: Add IXGBE_ITR_ADAPTIVE_MASK_USECS (= IXGBE_ITR_ADAPTIVE_LATENCY
- 1) to replace the open-coded ~IXGBE_ITR_ADAPTIVE_LATENCY
mask in ixgbe_set_itr() with the cleaner AND form.
---
Changes since v1:
- Collected Reviewed-by: Simon Horman <horms@kernel.org> on
patches 1, 4, 6, 7, 8.
- Patch 4 (SECRX_RDY): tightened commit message wording for the
worst-case bound to reflect that on a loaded system actual
scheduler wakeup latency may exceed the nominal 4000 * 20 us =
~80 ms upper bound; clarified that the timeout is non-fatal (only
a debug message is logged, return is unconditionally 0). No code
change.
- Patch 3 (prevent duplicate FDIR perfect filter rules):
* Dropped the e_warn() in ixgbe_match_ethtool_fdir_entry();
-EEXIST returned to userspace is sufficient.
* Reordered locals in ixgbe_add_ethtool_fdir_entry() for
reverse-Christmas-tree (`int err = -EINVAL;` moved above
`u8 queue;`).
The same-sw_idx skip in ixgbe_match_ethtool_fdir_entry() is
intentional and required: ixgbe_update_ethtool_fdir_entry() (the
caller of the add path) deletes any existing rule at the same
sw_idx and replaces it, implementing the standard ethtool
"set rule at location N" overwrite semantic. Rejecting matching
sw_idx with -EEXIST would break idempotent re-application and the
legitimate replace-at-same-location path.
- Patches 2, 5: no review feedback received; no change.
Aleksandr Loktionov (1):
ixgbe: use int instead of u32 for error code variables
Alexander Duyck (2):
ixgbe: limit ITR decrease in latency mode to prevent ACK overdrive
ixgbe: add IXGBE_ITR_ADAPTIVE_MASK_USECS constant
Jacob Keller (2):
ixgbe: rename numa_node to node in struct ixgbe_q_vector
ixgbe: use ktime_get_real_ns() in ixgbe_ptp_reset()
Jakub Chylkowski (1):
ixgbe: extract ixgbe_restart_auto_neg() to avoid code duplication
Maciej Rabeda (1):
ixgbe: increase SECRX_RDY polling frequency in
ixgbe_disable_rx_buff_generic
Piotr Skajewski (1):
ixgbe: prevent adding duplicate FDIR perfect filter rules
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 3 +-
.../net/ethernet/intel/ixgbe/ixgbe_common.c | 5 +--
.../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 27 +++++++++++-
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 19 ++++++++--
drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c | 42 +++++++++++--------
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c | 12 +++---
8 files changed, 77 insertions(+), 35 deletions(-)
--
2.52.0
next reply other threads:[~2026-05-12 14:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-12 14:08 Aleksandr Loktionov [this message]
2026-05-12 14:08 ` [PATCH iwl-next v2 1/8] ixgbe: rename numa_node to node in struct ixgbe_q_vector Aleksandr Loktionov
2026-05-12 14:08 ` [PATCH iwl-next v2 2/8] ixgbe: use int instead of u32 for error code variables Aleksandr Loktionov
2026-05-12 14:08 ` [PATCH iwl-next v2 3/8] ixgbe: prevent adding duplicate FDIR perfect filter rules Aleksandr Loktionov
2026-05-12 14:09 ` [PATCH iwl-next v2 4/8] ixgbe: increase SECRX_RDY polling frequency in ixgbe_disable_rx_buff_generic Aleksandr Loktionov
2026-05-12 14:09 ` [PATCH iwl-next v2 5/8] ixgbe: use ktime_get_real_ns() in ixgbe_ptp_reset() Aleksandr Loktionov
2026-05-12 14:09 ` [PATCH iwl-next v2 6/8] ixgbe: extract ixgbe_restart_auto_neg() to avoid code duplication Aleksandr Loktionov
2026-05-12 14:09 ` [PATCH iwl-next v2 7/8] ixgbe: limit ITR decrease in latency mode to prevent ACK overdrive Aleksandr Loktionov
2026-05-12 14:09 ` [PATCH iwl-next v2 8/8] ixgbe: add IXGBE_ITR_ADAPTIVE_MASK_USECS constant 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=20260512140904.4105236-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