HomeFreeBSD

ice: Quiesce queues after partial initialization

Description

ice: Quiesce queues after partial initialization

ice_if_init marks DRIVER_INITIALIZED only after all queue and filter
operations succeed, so ice_if_stop intentionally does nothing after an
initialization failure. Each failure path must therefore unwind any
hardware queues it may have configured before iflib releases their DMA
mappings.

Tx setup enables firmware scheduler queues one at a time, and Rx enable
similarly processes queues incrementally. Route failures from both
operations through cleanup paths for both the PF and mirror VSIs. The
cleanup helpers tolerate queues which were not configured, so they also
cover failures on the first queue.

This leaves failed initialization stopped as required by the
iflib_init_failed contract.

MFC after: 2 weeks
Sponsored by: BBOX.io
Differential Revision: https://reviews.freebsd.org/D59331

Details

Provenance
Kevin Bowling <kbowling@FreeBSD.org>Authored on Sep 3 2026, 6:05 AM
Differential Revision
D59331: ice: Quiesce queues after partial initialization
Parents
rG9a1756f831a7: enetc: Correct transmit queue timeout detection
Branches
Unknown
Tags
Unknown