iflib(4): Replace admin taskqueue group with per-interface taskqueues
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.
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
meged. Couldn't push for some reason though.
meged. Couldn't push for some reason though.
Thanks a lot!