Page MenuHomeFreeBSD

ice: Make VF queue transitions idempotent
AbandonedPublic

Authored by kbowling on Aug 18 2026, 10:39 AM.
Tags
None
Referenced Files
Unknown Object (File)
Wed, Sep 9, 5:16 AM
Unknown Object (File)
Sun, Sep 6, 11:42 AM
Unknown Object (File)
Sun, Sep 6, 12:05 AM
Unknown Object (File)
Thu, Sep 3, 9:30 AM
Unknown Object (File)
Tue, Sep 1, 10:34 PM
Unknown Object (File)
Mon, Aug 31, 6:21 PM
Unknown Object (File)
Mon, Aug 31, 12:18 AM
Unknown Object (File)
Sun, Aug 30, 12:45 AM
Subscribers

Details

Reviewers
kgalazka
Group Reviewers
Intel Networking
Restricted Owners Package(Owns No Changed Paths)
Summary
The VF mailbox handler unconditionally submitted queue-disable
commands, including when a VF repeated a request or negotiated after a
PF reset had already destroyed its queues.  Firmware can reject stale
Tx queue metadata, causing a NACK and unnecessary VF recovery.

Track queue configuration and enable state across virtchnl operations,
and clear it at VF and PF reset.  Apply only hardware transitions that
are not already complete while preserving progress after a partial
failure.  Validate queue configurations before mutating hardware so the
state maps remain trustworthy.

FreeBSD configures Tx hardware in CONFIG_VSI_QUEUES rather than
ENABLE_QUEUES, so track Tx configuration separately from Rx
configuration and enable state.  Linux ice similarly tracks per-VF Tx
and Rx queue state and skips redundant transitions.

On an E810-XXV, the prior code emitted AQ_RC_EINVAL while configuring a
fresh four-queue VF because it disabled never-configured Tx queues.
With this change, two VFs completed 20 stop/start cycles each, sustained
traffic in each direction, and recovered across PF and CORE resets
with no watchdog, MDD, or AQ errors.

MFC after:      2 weeks

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped