|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