From: Jakub Kicinski <kuba@kernel.org>
To: davem@davemloft.net
Cc: netdev@vger.kernel.org, edumazet@google.com, pabeni@redhat.com,
dxu@dxuuu.xyz, ecree.xilinx@gmail.com,
przemyslaw.kitszel@intel.com, donald.hunter@gmail.com,
gal.pressman@linux.dev, tariqt@nvidia.com,
willemdebruijn.kernel@gmail.com, jdamato@fastly.com,
Jakub Kicinski <kuba@kernel.org>
Subject: [PATCH net-next v2 00/12] ethtool: rss: driver tweaks and netlink context dumps
Date: Fri, 2 Aug 2024 21:26:12 -0700 [thread overview]
Message-ID: <20240803042624.970352-1-kuba@kernel.org> (raw)
This series is a semi-related collection of RSS patches.
Main point is supporting dumping RSS contexts via ethtool netlink.
At present additional RSS contexts can be queried one by one, and
assuming user know the right IDs. This series uses the XArray
added by Ed to provide netlink dump support for ETHTOOL_GET_RSS.
Patch 1 is a trivial selftest debug patch.
Patch 2 coverts mvpp2 for no real reason other than that I had
a grand plan of converting all drivers at some stage.
Patch 3 removes a now moot check from mlx5 so that all tests
can pass.
Patch 4 and 5 make a bit used for context support optional,
for easier grepping of drivers which need converting
if nothing else.
Patch 6 OTOH adds a new cap bit; some devices don't support
using a different key per context and currently act
in surprising ways.
Patch 7 and 8 update the RSS netlink code to use XArray.
Patch 9 and 10 add support for dumping contexts.
Patch 11 and 12 are small adjustments to spec and a new test.
I'm getting distracted with other work, so probably won't have
the time soon to complete next steps, but things which are missing
are (and some of these may be bad ideas):
- better discovery
Some sort of API to tell the user who many contexts the device
can create. Upper bound, devices often share contexts between
ports etc. so it's hard to tell exactly and upfront number of
contexts for a netdev. But order of magnitude (4 vs 10s) may
be enough for container management system to know whether to bother.
- create/modify/delete via netlink
The only question here is how to handle all the tricky IOCTL
legacy. "No change" maps trivially to attribute not present.
"reset" (indir_size = 0) probably needs to be a new NLA_FLAG?
- better table size handling
The current API assumes the LUT has fixed size, which isn't
true for modern devices. We should have better APIs for the
drivers to resize the tables, and in user facing API -
the ability to specify pattern and min size rather than
exact table expected (sort of like ethtool CLI already does).
- recounted / socket-bound contexts
Support for contexts which get "cleaned up" when their parent
netlink socket gets closed. The major catch is that ntuple
filters (which we don't currently track) depend on the context,
so we need auto-removal for both.
v2:
- fix bugs and build in mvpp2
v1: https://lore.kernel.org/20240802001801.565176-1-kuba@kernel.org
Jakub Kicinski (12):
selftests: drv-net: rss_ctx: add identifier to traffic comments
eth: mvpp2: implement new RSS context API
eth: mlx5: allow disabling queues when RSS contexts exist
ethtool: make ethtool_ops::cap_rss_ctx_supported optional
eth: remove .cap_rss_ctx_supported from updated drivers
ethtool: rss: don't report key if device doesn't support it
ethtool: rss: move the device op invocation out of rss_prepare_data()
ethtool: rss: report info about additional contexts from XArray
ethtool: rss: support dumping RSS contexts
ethtool: rss: support skipping contexts during dump
netlink: specs: decode indirection table as u32 array
selftests: drv-net: rss_ctx: test dumping RSS contexts
Documentation/netlink/specs/ethtool.yaml | 14 +-
Documentation/networking/ethtool-netlink.rst | 12 +-
.../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 +-
drivers/net/ethernet/intel/ice/ice_ethtool.c | 1 +
.../net/ethernet/marvell/mvpp2/mvpp2_cls.c | 18 +-
.../net/ethernet/marvell/mvpp2/mvpp2_cls.h | 2 +-
.../net/ethernet/marvell/mvpp2/mvpp2_main.c | 103 +++++---
.../ethernet/mellanox/mlx5/core/en_ethtool.c | 13 +-
drivers/net/ethernet/sfc/ef100_ethtool.c | 2 +-
drivers/net/ethernet/sfc/ethtool.c | 2 +-
drivers/net/ethernet/sfc/siena/ethtool.c | 1 +
include/linux/ethtool.h | 6 +-
include/uapi/linux/ethtool_netlink.h | 1 +
net/ethtool/ioctl.c | 31 ++-
net/ethtool/netlink.c | 2 +
net/ethtool/netlink.h | 4 +-
net/ethtool/rss.c | 231 ++++++++++++++++--
.../selftests/drivers/net/hw/rss_ctx.py | 74 +++++-
tools/testing/selftests/net/lib/py/ksft.py | 6 +
19 files changed, 434 insertions(+), 91 deletions(-)
--
2.45.2
next reply other threads:[~2024-08-03 4:26 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-03 4:26 Jakub Kicinski [this message]
2024-08-03 4:26 ` [PATCH net-next v2 01/12] selftests: drv-net: rss_ctx: add identifier to traffic comments Jakub Kicinski
2024-08-04 6:40 ` Gal Pressman
2024-08-05 21:35 ` Jakub Kicinski
2024-08-03 4:26 ` [PATCH net-next v2 02/12] eth: mvpp2: implement new RSS context API Jakub Kicinski
2024-08-05 11:25 ` Edward Cree
2024-08-05 21:29 ` Jakub Kicinski
2024-08-06 13:28 ` Edward Cree
2024-08-06 14:11 ` Jakub Kicinski
2024-08-03 4:26 ` [PATCH net-next v2 03/12] eth: mlx5: allow disabling queues when RSS contexts exist Jakub Kicinski
2024-08-04 6:36 ` Gal Pressman
2024-08-03 4:26 ` [PATCH net-next v2 04/12] ethtool: make ethtool_ops::cap_rss_ctx_supported optional Jakub Kicinski
2024-08-04 6:46 ` Gal Pressman
2024-08-05 11:34 ` Edward Cree
2024-08-03 4:26 ` [PATCH net-next v2 05/12] eth: remove .cap_rss_ctx_supported from updated drivers Jakub Kicinski
2024-08-04 6:47 ` Gal Pressman
2024-08-05 11:34 ` Edward Cree
2024-08-03 4:26 ` [PATCH net-next v2 06/12] ethtool: rss: don't report key if device doesn't support it Jakub Kicinski
2024-08-05 14:36 ` Edward Cree
2024-08-06 14:07 ` Jakub Kicinski
2024-08-03 4:26 ` [PATCH net-next v2 07/12] ethtool: rss: move the device op invocation out of rss_prepare_data() Jakub Kicinski
2024-08-03 4:26 ` [PATCH net-next v2 08/12] ethtool: rss: report info about additional contexts from XArray Jakub Kicinski
2024-08-06 13:55 ` Edward Cree
2024-08-03 4:26 ` [PATCH net-next v2 09/12] ethtool: rss: support dumping RSS contexts Jakub Kicinski
2024-08-03 18:11 ` Joe Damato
2024-08-05 21:59 ` Jakub Kicinski
2024-08-06 10:09 ` Joe Damato
2024-08-06 10:44 ` Przemek Kitszel
2024-08-06 13:58 ` Edward Cree
2024-08-06 14:17 ` Jakub Kicinski
2024-08-06 14:24 ` Edward Cree
2024-08-06 15:23 ` Jakub Kicinski
2024-08-03 4:26 ` [PATCH net-next v2 10/12] ethtool: rss: support skipping contexts during dump Jakub Kicinski
2024-08-03 18:18 ` Joe Damato
2024-08-06 14:27 ` Edward Cree
2024-08-03 4:26 ` [PATCH net-next v2 11/12] netlink: specs: decode indirection table as u32 array Jakub Kicinski
2024-08-03 18:24 ` Joe Damato
2024-08-03 4:26 ` [PATCH net-next v2 12/12] selftests: drv-net: rss_ctx: test dumping RSS contexts Jakub Kicinski
2024-08-03 18:40 ` Joe Damato
2024-08-06 16:48 ` Edward Cree
2024-08-06 18:28 ` Jakub Kicinski
2024-08-04 6:08 ` [PATCH net-next v2 00/12] ethtool: rss: driver tweaks and netlink context dumps Gal Pressman
2024-08-05 22:13 ` Jakub Kicinski
2024-08-06 12:22 ` Gal Pressman
2024-08-06 14:20 ` Jakub Kicinski
2024-08-06 15:14 ` Gal Pressman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240803042624.970352-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=dxu@dxuuu.xyz \
--cc=ecree.xilinx@gmail.com \
--cc=edumazet@google.com \
--cc=gal.pressman@linux.dev \
--cc=jdamato@fastly.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=tariqt@nvidia.com \
--cc=willemdebruijn.kernel@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).