Commit 84812c84 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'bnxt-fix-failure-to-report-rss-context-in-ntuple-rule'

Daniel Xu says:

====================
bnxt: Fix failure to report RSS context in ntuple rule

This patchset fixes a bug where bnxt driver was failing to report that
an ntuple rule is redirecting to an RSS context. First commit is the
fix, then second commit extends selftests to detect if other/new drivers
are compliant with ntuple/rss_ctx API.
====================

Link: https://patch.msgid.link/cover.1732748253.git.dxu@dxuuu.xyz


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents b9653d19 7078d43b
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1187,10 +1187,14 @@ static int bnxt_grxclsrule(struct bnxt *bp, struct ethtool_rxnfc *cmd)
		}
	}

	if (fltr->base.flags & BNXT_ACT_DROP)
	if (fltr->base.flags & BNXT_ACT_DROP) {
		fs->ring_cookie = RX_CLS_FLOW_DISC;
	else
	} else if (fltr->base.flags & BNXT_ACT_RSS_CTX) {
		fs->flow_type |= FLOW_RSS;
		cmd->rss_context = fltr->base.fw_vnic_id;
	} else {
		fs->ring_cookie = fltr->base.rxq;
	}
	rc = 0;

fltr_err:
+11 −1
Original line number Diff line number Diff line
@@ -3,7 +3,8 @@

import datetime
import random
from lib.py import ksft_run, ksft_pr, ksft_exit, ksft_eq, ksft_ne, ksft_ge, ksft_lt
import re
from lib.py import ksft_run, ksft_pr, ksft_exit, ksft_eq, ksft_ne, ksft_ge, ksft_lt, ksft_true
from lib.py import NetDrvEpEnv
from lib.py import EthtoolFamily, NetdevFamily
from lib.py import KsftSkipEx, KsftFailEx
@@ -96,6 +97,13 @@ def _send_traffic_check(cfg, port, name, params):
                f"traffic on inactive queues ({name}): " + str(cnts))


def _ntuple_rule_check(cfg, rule_id, ctx_id):
    """Check that ntuple rule references RSS context ID"""
    text = ethtool(f"-n {cfg.ifname} rule {rule_id}").stdout
    pattern = f"RSS Context (ID: )?{ctx_id}"
    ksft_true(re.search(pattern, text), "RSS context not referenced in ntuple rule")


def test_rss_key_indir(cfg):
    """Test basics like updating the main RSS key and indirection table."""

@@ -459,6 +467,8 @@ def test_rss_context(cfg, ctx_cnt=1, create_with_cfg=None):
        ntuple = ethtool_create(cfg, "-N", flow)
        defer(ethtool, f"-N {cfg.ifname} delete {ntuple}")

        _ntuple_rule_check(cfg, ntuple, ctx_id)

    for i in range(ctx_cnt):
        _send_traffic_check(cfg, ports[i], f"context {i}",
                            { 'target': (2+i*2, 3+i*2),