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
Details
Details
- Reviewers
kgalazka - Group Reviewers
Intel Networking Restricted Owners Package (Owns No Changed Paths)
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped