Re: [PATCH net-next v1 0/2] Reuse threaded NAPI kthread across napi_del()/napi_add().
From: Shuhao Tan <hidden>
Date: 2026-06-30 00:47:16
Also in:
linux-kselftest, lkml
On Mon, Jun 29, 2026 at 4:26 PM Jakub Kicinski [off-list ref] wrote:
On Mon, 29 Jun 2026 12:20:25 -0700 Shuhao Tan wrote:quoted
These drivers destroy and recreate queues during configuration changes. If a NAPI was threaded before destruction, during the creation, a new kthread will be spawned for the NAPI. Some drivers do not have this problem, e.g. netdevsim. But these drivers and the drivers mentioned above will still lose kthread during link flap (ndo_stop/ndo_open). Because the kthreads before and after these configuration changes are different, all the attributes associated with the kthread are lost. These include CPU mask, priority, scheduler policy, etc.. If the threaded state is preserved for a NAPI, it makes sense to want to preserve the attributes of the thread as well.Send a netdev Netlink notification when NAPI is re-created and let the userspace re-apply the settings?
It feels surprising that the userspace needs to reconfigure thread properties when changing NIC configurations unrelated to threading. Another downside is that when userspace configures NIC configurations in quick succession, re-application becomes messy because a previous re-application might still be in progress when the thread is gone.
Keeping a few u32s around is one thing but keeping a thread running and visible in /procfs for the lifetime of a machine feels a little bit much. IDK.
The thread will be parked, so at least it will not eat CPU cycles. Regarding visibility, the only case that I am aware of where a thread can be unwantedly visible requires first setting the device/queue to be threaded and then reducing the number of queues. If certain configurations are applied before the reduction, it makes sense to want to restore those stuff when the queues get added back (like irq_affinity today). Moreover, the user can stop the stale thread and completely remove it by disabling threaded NAPI on the device. So the thread is not completely tied to the machine's lifetime, and there is a way to get rid of it.