Commit 2fc9956b authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'ethtool-rss-minor-fixes-for-recent-rss-changes'

Jakub Kicinski says:

====================
ethtool: rss: minor fixes for recent RSS changes

Make sure RSS_GET messages are consistent in do and dump.
Fix up a recently added safety check for RSS + queue offset.
Adjust related tests so that they pass on devices which
don't support RSS + queue offset.
====================

Link: https://patch.msgid.link/20250201013040.725123-1-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 0e6dc66b c3da5855
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -993,7 +993,7 @@ static noinline_for_stack int ethtool_set_rxnfc(struct net_device *dev,
		return rc;

	/* Nonzero ring with RSS only makes sense if NIC adds them together */
	if (cmd == ETHTOOL_SRXCLSRLINS && info.flow_type & FLOW_RSS &&
	if (cmd == ETHTOOL_SRXCLSRLINS && info.fs.flow_type & FLOW_RSS &&
	    !ops->cap_rss_rxnfc_adds &&
	    ethtool_get_flow_spec_ring(info.fs.ring_cookie))
		return -EINVAL;
+2 −1
Original line number Diff line number Diff line
@@ -107,6 +107,8 @@ rss_prepare_ctx(const struct rss_req_info *request, struct net_device *dev,
	u32 total_size, indir_bytes;
	u8 *rss_config;

	data->no_key_fields = !dev->ethtool_ops->rxfh_per_ctx_key;

	ctx = xa_load(&dev->ethtool->rss_ctx, request->rss_context);
	if (!ctx)
		return -ENOENT;
@@ -153,7 +155,6 @@ rss_prepare_data(const struct ethnl_req_info *req_base,
		if (!ops->cap_rss_ctx_supported && !ops->create_rxfh_context)
			return -EOPNOTSUPP;

		data->no_key_fields = !ops->rxfh_per_ctx_key;
		return rss_prepare_ctx(request, dev, data, info);
	}

+8 −1
Original line number Diff line number Diff line
@@ -252,6 +252,7 @@ def test_rss_queue_reconfigure(cfg, main_ctx=True):
        try:
            # this targets queue 4, which doesn't exist
            ntuple2 = ethtool_create(cfg, "-N", flow)
            defer(ethtool, f"-N {cfg.ifname} delete {ntuple2}")
        except CmdExitFailure:
            pass
        else:
@@ -259,7 +260,13 @@ def test_rss_queue_reconfigure(cfg, main_ctx=True):
        # change the table to target queues 0 and 2
        ethtool(f"-X {cfg.ifname} {ctx_ref} weight 1 0 1 0")
        # ntuple rule therefore targets queues 1 and 3
        try:
            ntuple2 = ethtool_create(cfg, "-N", flow)
        except CmdExitFailure:
            ksft_pr("Driver does not support rss + queue offset")
            return

        defer(ethtool, f"-N {cfg.ifname} delete {ntuple2}")
        # should replace existing filter
        ksft_eq(ntuple, ntuple2)
        _send_traffic_check(cfg, port, ctx_ref, { 'target': (1, 3),