[PATCH net-next 0/3] Add support to do threaded napi busy poll
From: Samiullah Khawaja <hidden>
Date: 2025-01-02 19:12:29
Extend the already existing support of threaded napi poll to do continuous busypolling. This is used for doing continuous polling of napi to fetch descriptors from backing RX/TX queues for low latency applications. Allow enabling of threaded busypoll using netlink so this can be enabled on a set of dedicated napis for low latency applications. Currently threaded napi is only enabled at device level using sysfs. Add support to enable/disable threaded mode for a napi individually. This can be done using the netlink interface. Add `set_threaded` op in netlink spec that allows setting the `threaded` attribute of a napi. Extend the threaded attribute in napi struct to add an option to enable continuous busy polling. Extend the netlink and sysfs interface to allow enabled/disabling threaded busypolling at device or individual napi level. Once threaded busypoll on a napi is enabled, depending on the application requirements the polling thread can be moved to dedicated cores. We used this for AF_XDP usecases to fetch packets from RX queues to reduce latency. Samiullah Khawaja (3): Add support to set napi threaded for individual napi net: Create separate gro_flush helper function Extend napi threaded polling to allow kthread based busy polling Documentation/ABI/testing/sysfs-class-net | 3 +- Documentation/netlink/specs/netdev.yaml | 20 +++ .../net/ethernet/atheros/atl1c/atl1c_main.c | 2 +- include/linux/netdevice.h | 29 ++++- include/uapi/linux/netdev.h | 2 + net/core/dev.c | 122 ++++++++++++++---- net/core/net-sysfs.c | 2 +- net/core/netdev-genl-gen.c | 13 ++ net/core/netdev-genl-gen.h | 2 + net/core/netdev-genl.c | 37 ++++++ tools/include/uapi/linux/netdev.h | 2 + 11 files changed, 205 insertions(+), 29 deletions(-) -- 2.47.1.613.gc27f4b7a9f-goog