freebsd-src icon indicating copy to clipboard operation
freebsd-src copied to clipboard

iflib(4): Replace admin taskqueue group with per-interface taskqueues

Open kgalazka opened this issue 1 year ago • 1 comments

Using one taskqueue group with single thread to execute all admin tasks may lead to unexpected timeouts when long running task (e.g. handling a reset after FW update) for one interface prevents tasks from other interfaces being executed. Taskqueue group API doesn't let to dynamically add threads, and pre-allocating thread for each CPU as it's done for traffic queues would be a waste of resources on systems with small number of interfaces. Replace global taskqueue group for admin tasks with taskqueue allocated for each interface to allow independent execution.

To enable that refactor iflib_legacy_setup to follow the pattern from iflib_irq_alloc_generic function and use iflib_fast_intr as a handler for RX only interrupts.

kgalazka avatar Jul 22 '24 15:07 kgalazka

Sorry for the tardy feedback. This looks good to me, but I'm not an expert in this area, so I've ask a few other folks to look at this. @bsdjhb

bsdimp avatar Sep 20 '24 15:09 bsdimp

meged. Couldn't push for some reason though.

bsdimp avatar Jan 24 '25 21:01 bsdimp

meged. Couldn't push for some reason though.

Thanks a lot!

kgalazka avatar Jan 30 '25 19:01 kgalazka