[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250102191227.2084046-1-skhawaja@google.com>
Date: Thu, 2 Jan 2025 19:12:24 +0000
From: Samiullah Khawaja <skhawaja@...gle.com>
To: Jakub Kicinski <kuba@...nel.org>, "David S . Miller " <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>
Cc: netdev@...r.kernel.org, skhawaja@...gle.com
Subject: [PATCH net-next 0/3] Add support to do threaded napi busy poll
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
Powered by blists - more mailing lists