From: Jose Ignacio Tornos Martinez <jtornosm@redhat.com>
To: kuba@kernel.org
Cc: aleksandr.loktionov@intel.com, andrew+netdev@lunn.ch,
anthony.l.nguyen@intel.com, davem@davemloft.net,
edumazet@google.com, horms@kernel.org, jacob.e.keller@intel.com,
jtornosm@redhat.com, netdev@vger.kernel.org, pabeni@redhat.com,
przemyslaw.kitszel@intel.com, rafal.romanowski@intel.com,
sdf@fomichev.me, stable@vger.kernel.org
Subject: Re: [PATCH net 1/4] iavf: return EBUSY if reset in progress or not ready during MAC change
Date: Tue, 15 Sep 2026 10:12:19 +0200 [thread overview]
Message-ID: <20260915081222.13970-1-jtornosm@redhat.com> (raw)
In-Reply-To: <20260824190145.2714480-1-kuba@kernel.org>
All the comments below fall into pre-existing issues, concerns already
addressed in previous versions and comments, out-of-scope items, or extreme
edge cases. No code changes are considered necessary for a new version.
Details for each comment:
> [Severity: Low]
> This paragraph describes a user-visible behaviour change caused by
> ad7c7b2172c3, but there is no Fixes: tag on this commit. Was that
> intentional?
>
> Worth noting that this commit does not actually remove the wait under the
> netdev instance lock: after this patch iavf_set_mac() still calls
>
> ret = wait_event_interruptible_timeout(adapter->vc_waitqueue,
> iavf_is_mac_set_handled(netdev, addr->sa_data),
> msecs_to_jiffies(2500));
>
> so a Fixes: ad7c7b2172c3 here would arguably be misleading. The later
> patch in the same series, "iavf: send MAC change request synchronously",
> does carry Fixes: ad7c7b2172c3 and cc: stable, which looks like the right
> place for the provenance. Is that the intended split?
Yes, that is the intended split. This patch is a preparatory improvement
that adds a best-effort early bail-out, but it does not remove the wait
under the netdev instance lock. Patch 3/4 ("iavf: send MAC change
request synchronously") is the one that actually eliminates the
problematic wait and carries the Fixes: ad7c7b2172c3 tag and cc: stable.
Adding Fixes: here would be misleading since this patch alone does not
fix the problem — it only reduces the likelihood of hitting it.
> [Severity: Low]
> Is this check-then-act sequence racy against the reset scheduling path?
>
> iavf_is_reset_in_progress() does plain reads of adapter->state and
> adapter->flags:
>
> static bool iavf_is_reset_in_progress(struct iavf_adapter *adapter)
> {
> if (adapter->state == __IAVF_RESETTING ||
> adapter->flags & (IAVF_FLAG_RESET_PENDING |
> IAVF_FLAG_RESET_NEEDED))
> return true;
>
> return false;
> }
>
> IAVF_FLAG_RESET_NEEDED can be set from a context that does not hold the
> netdev instance lock:
>
> dev_watchdog()
> netif_freeze_queues(dev);
> dev->netdev_ops->ndo_tx_timeout(dev, i); /* timer context */
> iavf_tx_timeout()
> iavf_schedule_reset(adapter, IAVF_FLAG_RESET_NEEDED)
> adapter->flags |= flags; /* non-atomic RMW */
>
> net/sched/sch_generic.c only freezes the TX queues around ndo_tx_timeout(),
> so there does not appear to be anything serializing that writer against
> iavf_set_mac(). If the TX timeout fires just after the new test, does
> iavf_set_mac() go on to the 2.5 s wait_event_interruptible_timeout() with
> the netdev instance lock held anyway, i.e. exactly the case the check is
> meant to reject?
>
> The window is small and the fallback is the pre-patch behaviour (blocked
> for up to 2.5 s, then -EAGAIN), so this looks like a best-effort guard
> rather than a new failure mode. Is that the intent, or should the state
> and flags reads be done under the same serialization as the reset path
> (and with READ_ONCE(), given the concurrent non-atomic |= on
> adapter->flags)?
Yes, this is a best-effort guard to inform the user as soon as possible
instead of blocking with the netdev instance lock held. If a reset starts
immediately after the check, the behavior falls back to the pre-patch
code path: blocked for up to 2.5s, then -EAGAIN. No new failure mode is
introduced.
The flags/state access patterns (plain reads, non-atomic RMW on
adapter->flags) are pre-existing throughout the iavf driver — the
watchdog, tx_timeout, and adminq paths all use the same style.
Introducing READ_ONCE / proper serialization here alone would be
inconsistent and incomplete. That is a broader driver-wide cleanup,
out of scope for this fix.
next prev parent reply other threads:[~2026-09-15 8:12 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-21 20:45 [PATCH net 0/4][pull request] Fix i40e/ice/iavf VF bonding after netdev lock changes Tony Nguyen
2026-08-21 20:45 ` [PATCH net 1/4] iavf: return EBUSY if reset in progress or not ready during MAC change Tony Nguyen
2026-08-24 19:01 ` Jakub Kicinski
2026-09-15 8:12 ` Jose Ignacio Tornos Martinez [this message]
2026-09-15 16:24 ` Jakub Kicinski
2026-09-16 10:12 ` Jose Ignacio Tornos Martinez
2026-09-25 7:18 ` Jose Ignacio Tornos Martinez
2026-09-25 19:04 ` Jakub Kicinski
2026-08-21 20:45 ` [PATCH net 2/4] i40e: skip unnecessary VF reset when setting trust Tony Nguyen
2026-08-24 19:01 ` Jakub Kicinski
2026-09-15 8:14 ` Jose Ignacio Tornos Martinez
2026-08-21 20:45 ` [PATCH net 3/4] iavf: send MAC change request synchronously Tony Nguyen
2026-08-24 19:01 ` Jakub Kicinski
2026-09-15 8:16 ` Jose Ignacio Tornos Martinez
2026-08-21 20:45 ` [PATCH net 4/4] ice: skip unnecessary VF reset when setting trust Tony Nguyen
2026-08-24 19:01 ` Jakub Kicinski
2026-09-15 8:19 ` Jose Ignacio Tornos Martinez
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=20260915081222.13970-1-jtornosm@redhat.com \
--to=jtornosm@redhat.com \
--cc=aleksandr.loktionov@intel.com \
--cc=andrew+netdev@lunn.ch \
--cc=anthony.l.nguyen@intel.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=jacob.e.keller@intel.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=rafal.romanowski@intel.com \
--cc=sdf@fomichev.me \
--cc=stable@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