[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1755499375.git.asml.silence@gmail.com>
Date: Mon, 18 Aug 2025 14:57:16 +0100
From: Pavel Begunkov <asml.silence@...il.com>
To: Jakub Kicinski <kuba@...nel.org>,
netdev@...r.kernel.org
Cc: asml.silence@...il.com,
Eric Dumazet <edumazet@...gle.com>,
Willem de Bruijn <willemb@...gle.com>,
Paolo Abeni <pabeni@...hat.com>,
andrew+netdev@...n.ch,
horms@...nel.org,
davem@...emloft.net,
sdf@...ichev.me,
almasrymina@...gle.com,
dw@...idwei.uk,
michael.chan@...adcom.com,
dtatulea@...dia.com,
ap420073@...il.com,
linux-kernel@...r.kernel.org,
io-uring@...r.kernel.org
Subject: [PATCH net-next v3 00/23][pull request] Queue configs and large buffer providers
Pull request with netdev only patches that add support for per queue
configuration and large rx buffers for memory providers. The zcrx
patch using it is separately and can be found at [2].
Large buffers yielded significant benefits during testing, e.g.
a setup with 32KB buffers was using 30% less CPU than with 4K,
see [3] for more details.
Per queue configuration series:
[1] https://lore.kernel.org/all/20250421222827.283737-1-kuba@kernel.org/
Branch with the zcrx patch
[2] https://github.com/isilence/linux.git zcrx/large-buffers-v3
v2 of the series
[3] https://lore.kernel.org/all/cover.1754657711.git.asml.silence@gmail.com/
---
v3: - rebased, excluded zcrx specific patches
- set agg_size_fac to 1 on warning
v2: - Add MAX_PAGE_ORDER check on pp init (Patch 1)
- Applied comments rewording (Patch 2)
- Adjust pp.max_len based on order (Patch 8)
- Patch up mlx5 queue callbacks after rebase (Patch 12)
- Minor ->queue_mgmt_ops refactoring (Patch 15)
- Rebased to account for both fill level and agg_size_fac (Patch 17)
- Pass providers buf length in struct pp_memory_provider_params and
apply it in __netdev_queue_confi(). (Patch 22)
- Use ->supported_ring_params to validate drivers support of set
qcfg parameters. (Patch 23)
The following changes since commit c17b750b3ad9f45f2b6f7e6f7f4679844244f0b9:
Linux 6.17-rc2 (2025-08-17 15:22:10 -0700)
are available in the Git repository at:
https://github.com/isilence/linux.git tags/net-for-6.18-queue-rx-buf-len
for you to fetch changes up to 417cf28f3bf129d1a0d1b231220aa045abac3263:
net: validate driver supports passed qcfg params (2025-08-18 07:39:50 +0100)
Jakub Kicinski (20):
docs: ethtool: document that rx_buf_len must control payload lengths
net: ethtool: report max value for rx-buf-len
net: use zero value to restore rx_buf_len to default
net: clarify the meaning of netdev_config members
net: add rx_buf_len to netdev config
eth: bnxt: read the page size from the adapter struct
eth: bnxt: set page pool page order based on rx_page_size
eth: bnxt: support setting size of agg buffers via ethtool
net: move netdev_config manipulation to dedicated helpers
net: reduce indent of struct netdev_queue_mgmt_ops members
net: allocate per-queue config structs and pass them thru the queue API
net: pass extack to netdev_rx_queue_restart()
net: add queue config validation callback
eth: bnxt: always set the queue mgmt ops
eth: bnxt: store the rx buf size per queue
eth: bnxt: adjust the fill level of agg queues with larger buffers
netdev: add support for setting rx-buf-len per queue
net: wipe the setting of deactived queues
eth: bnxt: use queue op config validate
eth: bnxt: support per queue configuration of rx-buf-len
Pavel Begunkov (3):
net: page_pool: sanitise allocation order
net: let pp memory provider to specify rx buf len
net: validate driver supports passed qcfg params
Documentation/netlink/specs/ethtool.yaml | 4 +
Documentation/netlink/specs/netdev.yaml | 15 ++
Documentation/networking/ethtool-netlink.rst | 7 +-
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 143 ++++++++++++----
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 9 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 6 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h | 2 +-
drivers/net/ethernet/google/gve/gve_main.c | 9 +-
.../ethernet/marvell/octeontx2/nic/otx2_ethtool.c | 6 +-
drivers/net/ethernet/mellanox/mlx5/core/en_main.c | 9 +-
drivers/net/netdevsim/netdev.c | 8 +-
include/linux/ethtool.h | 3 +
include/net/netdev_queues.h | 84 ++++++++--
include/net/netdev_rx_queue.h | 3 +-
include/net/netlink.h | 19 +++
include/net/page_pool/types.h | 1 +
include/uapi/linux/ethtool_netlink_generated.h | 1 +
include/uapi/linux/netdev.h | 2 +
net/core/Makefile | 2 +-
net/core/dev.c | 12 +-
net/core/dev.h | 15 ++
net/core/netdev-genl-gen.c | 15 ++
net/core/netdev-genl-gen.h | 1 +
net/core/netdev-genl.c | 92 +++++++++++
net/core/netdev_config.c | 183 +++++++++++++++++++++
net/core/netdev_rx_queue.c | 22 ++-
net/core/page_pool.c | 3 +
net/ethtool/common.c | 4 +-
net/ethtool/netlink.c | 14 +-
net/ethtool/rings.c | 14 +-
tools/include/uapi/linux/netdev.h | 2 +
32 files changed, 631 insertions(+), 84 deletions(-)
create mode 100644 net/core/netdev_config.c
Jakub Kicinski (20):
docs: ethtool: document that rx_buf_len must control payload lengths
net: ethtool: report max value for rx-buf-len
net: use zero value to restore rx_buf_len to default
net: clarify the meaning of netdev_config members
net: add rx_buf_len to netdev config
eth: bnxt: read the page size from the adapter struct
eth: bnxt: set page pool page order based on rx_page_size
eth: bnxt: support setting size of agg buffers via ethtool
net: move netdev_config manipulation to dedicated helpers
net: reduce indent of struct netdev_queue_mgmt_ops members
net: allocate per-queue config structs and pass them thru the queue
API
net: pass extack to netdev_rx_queue_restart()
net: add queue config validation callback
eth: bnxt: always set the queue mgmt ops
eth: bnxt: store the rx buf size per queue
eth: bnxt: adjust the fill level of agg queues with larger buffers
netdev: add support for setting rx-buf-len per queue
net: wipe the setting of deactived queues
eth: bnxt: use queue op config validate
eth: bnxt: support per queue configuration of rx-buf-len
Pavel Begunkov (3):
net: page_pool: sanitise allocation order
net: let pp memory provider to specify rx buf len
net: validate driver supports passed qcfg params
Documentation/netlink/specs/ethtool.yaml | 4 +
Documentation/netlink/specs/netdev.yaml | 15 ++
Documentation/networking/ethtool-netlink.rst | 7 +-
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 143 +++++++++++---
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 +-
.../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 9 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 6 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.h | 2 +-
drivers/net/ethernet/google/gve/gve_main.c | 9 +-
.../marvell/octeontx2/nic/otx2_ethtool.c | 6 +-
.../net/ethernet/mellanox/mlx5/core/en_main.c | 9 +-
drivers/net/netdevsim/netdev.c | 8 +-
include/linux/ethtool.h | 3 +
include/net/netdev_queues.h | 84 ++++++--
include/net/netdev_rx_queue.h | 3 +-
include/net/netlink.h | 19 ++
include/net/page_pool/types.h | 1 +
.../uapi/linux/ethtool_netlink_generated.h | 1 +
include/uapi/linux/netdev.h | 2 +
net/core/Makefile | 2 +-
net/core/dev.c | 12 +-
net/core/dev.h | 15 ++
net/core/netdev-genl-gen.c | 15 ++
net/core/netdev-genl-gen.h | 1 +
net/core/netdev-genl.c | 92 +++++++++
net/core/netdev_config.c | 183 ++++++++++++++++++
net/core/netdev_rx_queue.c | 22 ++-
net/core/page_pool.c | 3 +
net/ethtool/common.c | 4 +-
net/ethtool/netlink.c | 14 +-
net/ethtool/rings.c | 14 +-
tools/include/uapi/linux/netdev.h | 2 +
32 files changed, 631 insertions(+), 84 deletions(-)
create mode 100644 net/core/netdev_config.c
--
2.49.0
Powered by blists - more mailing lists