|SUCCESS|dpdk-next-net-intel|ad518cf8ac| Intel-Testing
sys_stv at intel.com
sys_stv at intel.com
Fri Jun 5 17:18:17 CEST 2026
Test-Label: intel-Testing
Test-Status: SUCCESS
_Testing PASS_
DPDK git repo: dpdk-next-net-intel
commit 93227d67daba893d4ec9fb60756c0a768df00c14
Author: Talluri Chaitanyababu <chaitanyababux.talluri at intel.com>
Date: Fri Jun 5 12:36:46 2026 +0000
net/iavf: fix VF reset race and stale ARQ message handling
During VF reset, multiple issues can lead to initialization
instability.
The first issue is a race condition in the VF-initiated reset path,
where VFR state VFACTIVE is treated as both "reset not started" and
"reset completed" in iavf_check_vf_reset_done(). When a VF initiates
a reset, the PF may not have begun processing it by the time
iavf_check_vf_reset_done() is called. Since VFACTIVE satisfies the
completion check, the VF proceeds before the PF has acknowledged the
reset, resulting in inconsistent initialization and virtchnl command
failures (e.g., OP_VERSION timeout).
The second issue is the presence of stale messages in the Admin
Receive Queue (ARQ) after VF reset. After the admin queue is
re-initialized during reset recovery, the PF may post responses to
pre-reset commands or unsolicited events. These may include opcode 0
(VIRTCHNL_OP_UNKNOWN) or responses to commands issued before reset,
which can interfere with API negotiation and cause command mismatch
errors.
Additionally, opcode 0 messages generate excessive warning logs,
causing unnecessary noise during initialization.
The solution involves:
1. Introducing a wait-for-reset-start helper that polls RSTAT until
it leaves VFACTIVE. This helper is used in VF-initiated reset paths
to ensure that the PF has started processing the reset before VF
reinitialization proceeds. It is invoked from iavf_handle_hw_reset()
for event-driven resets and from iavf_queues_req_reset() for
queue-change-triggered resets. It is intentionally not used in
iavf_dev_reset() to avoid redundant wait and unnecessary delay
when reset completion is already confirmed.
2. Draining stale ARQ messages after admin queue initialization
during reset recovery only (vf->in_reset_recovery == true).
During initial device probe, the admin queue is freshly allocated
and does not contain stale entries.
3. Downgrading opcode 0 (VIRTCHNL_OP_UNKNOWN) message logging to
DEBUG level while preserving mismatch detection for other
opcodes, allowing polling to continue until a valid response
is received.
4. Refactoring reset-start detection and ARQ drain logic into helper
functions (iavf_wait_for_reset_start() and iavf_drain_arq()) to
improve readability and maintainability.
5. Introducing a short delay after triggering VF reset in
iavf_dev_reset() to mitigate timing issues between VF
reinitialization and PF reset processing. This helps avoid
virtchnl command failures when PF reset completion is not yet
fully synchronized.
This fix primarily targets VF-initiated reset handling, while ARQ
drain and opcode handling improvements also benefit PF-initiated
reset recovery scenarios.
Fixes: 1428895ad417 ("net/iavf: fix disabling of promiscuous modes on close")
Cc: stable at dpdk.org
Signed-off-by: Talluri Chaitanyababu <chaitanyababux.talluri at intel.com>
Testing Summary : 18 Case Done, 18 Successful, 0 Failures
TestPlan:
pf_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/pf_smoke_test_plan.rst
vf_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/vf_smoke_test_plan.rst
virtio_smoke: http://git.dpdk.org/tools/dts/tree/test_plans/virtio_smoke_test_plan.rst
TestSuite:
pf_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_pf_smoke.py
vf_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_vf_smoke.py
virtio_smoke: http://git.dpdk.org/tools/dts/tree/tests/TestSuite_virtio_smoke.py
OS : Ubuntu 24.04.4 LTS
Kernel : 6.8.0-71-generic
GCC : 13.3.0-6ubuntu2~24.04.1
NIC : Ethernet Controller XL710 for 40GbE QSFP+
Target : x86_64-native-linuxapp-gcc
Test result details:
+-------------+---------------------------+-------+
| suite | case | status|
+-------------+---------------------------+-------+
| asan_smoke | test_rxtx_with_ASan_enable| passed|
| pf_smoke | test_pf_jumbo_frames | passed|
| pf_smoke | test_pf_rss | passed|
| pf_smoke | test_pf_tx_rx_queue | passed|
| vf_smoke | test_vf_rss | passed|
| vf_smoke | test_vf_tx_rx_queue | passed|
| vf_smoke | test_vf_jumbo_frames | n/a |
| virtio_smoke| test_virtio_loopback | passed|
| virtio_smoke| test_virtio_pvp | passed|
+-------------+---------------------------+-------+
OS : Ubuntu 24.04.4 LTS
Kernel : 6.8.0-87-generic
GCC : 13.3.0-6ubuntu2~24.04.1
NIC : Ethernet Controller E810-C for SFP
Target : x86_64-native-linuxapp-gcc
Test result details:
+-------------+---------------------------+-------+
| suite | case | status|
+-------------+---------------------------+-------+
| asan_smoke | test_rxtx_with_ASan_enable| passed|
| pf_smoke | test_pf_jumbo_frames | passed|
| pf_smoke | test_pf_rss | passed|
| pf_smoke | test_pf_tx_rx_queue | passed|
| vf_smoke | test_vf_jumbo_frames | passed|
| vf_smoke | test_vf_rss | passed|
| vf_smoke | test_vf_tx_rx_queue | passed|
| virtio_smoke| test_virtio_loopback | passed|
| virtio_smoke| test_virtio_pvp | passed|
+-------------+---------------------------+-------+
DPDK STV team
More information about the test-report
mailing list