The idea here is hopefully self-explanatory, when doing certain types of hardware gyrations we want to block the framework from any work with ctx lock. The inverse is also true, certain states such as PM shall block such requests.
Provide iflib_quiesce() for driver-managed resets which must stop the framework datapath before dismantling device resources. Require the context lock, preserve administrative flags, and reject detach, power transitions, and recursive lifecycle calls without requesting a restart. Make the stop path wait for queue tasks, callouts, and inline hardware users before invoking IFDI_STOP and releasing packet mappings. Mask interrupts again after draining task tails which may have reenabled them. Drain mp_ring through its existing consumer ownership instead of swapping callbacks around a nonblocking drainage attempt. Publish closed admission through the ring state so late consumers discard packets without touching hardware. Keep completion polling inside consumer ownership. Simple TX uses its existing producer count, mutex, and deferred-free slot. No new locks or ring states are needed. The interface and framework queue objects must remain allocated. Drivers retain responsibility for DMA shutdown, VFs, firmware resources, interrupt filters, and queue-selection callback lifetimes. Document these limits and the separate restart request.