[PATCH v2 0/7] net/iavf: harden reset recovery and data path on link flap
Anurag Mandal
anurag.mandal at intel.com
Thu Aug 13 12:45:28 CEST 2026
V2-changes:
- Addressed Ciara Loftus's review comments.
- Split Watchdog and flow flush from other patches.
- Shortened multiple comments and commit msg
- Prevented iavf_resume_pending_start() looping
During PF-initiated reset or a remote/ToR switch link-flap, the VF
might miss the reset event, race on the no_poll gate, leak in-flight
Tx descriptors, and stay down if dev_start ran before the PF VSI was
ready.
This patch series build on the earlier reset-recovery fixes with the
following:
- Reset detection: complement the ARQLEN1 check with VFGEN_RSTAT
(VIRTCHNL_VFR_INPROGRESS) and poll at a 5 ms interval, matching the
kernel iavf driver, so fast ARQ flips are not missed. When the VFR
is still not observed, recover anyway instead of bailing out,
keeping PF and VF state in sync.
- no_poll: make the flag atomic (RTE_ATOMIC) with release/acquire
ordering so the data-plane lcores observe gate changes reliably.
- Tx drain: add iavf_dev_tx_drain() to flush in-flight Tx descriptors
on link-down and impending-reset events before teardown, preventing
MDD events and descriptor leaks.
- Deferred start: when dev_start fails during recovery (PF VSI inactive),
defer it via start_pending and resume on the next link-up event so the
VF comes back without manual intervention.
- AdminQ: discard zeroed (opcode 0) descriptors seen during PF-initiated
resets to avoid the "Request 0 is not supported" log flood.
- Watchdog: keep watchdog armed for the whole reset window
- Flow flush: skip flow flush during PF-initiated reset
Anurag Mandal (7):
net/iavf: discard empty AdminQ descriptors on reset
net/iavf: defer device start when PF VSI not ready
net/iavf: drain in-flight Tx before reset
net/iavf: change no_poll flag to atomic
net/iavf: improve VF reset detection on fast ARQ flip
net/iavf: keep watchdog armed for the whole reset window
net/iavf: skip flow flush during PF-initiated reset
drivers/net/intel/iavf/iavf.h | 5 +-
drivers/net/intel/iavf/iavf_ethdev.c | 108 +++++++++++++++++++++++----
drivers/net/intel/iavf/iavf_rxtx.c | 108 ++++++++++++++++++++++++++-
drivers/net/intel/iavf/iavf_rxtx.h | 6 ++
drivers/net/intel/iavf/iavf_vchnl.c | 21 +++++-
5 files changed, 228 insertions(+), 20 deletions(-)
--
2.34.1
More information about the dev
mailing list