Skip to content

Commit

Permalink
selftests: drv-net: rss_ctx: add rss ctx busy testcase
Browse files Browse the repository at this point in the history
It should be invalid to delete an rss context while it is being
referenced from an ntuple filter. ethtool core should prevent this
from happening. This patch adds a testcase to verify this behavior.

Signed-off-by: Daniel Zahka <daniel.zahka@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
  • Loading branch information
Daniel Zahka authored and Paolo Abeni committed Oct 17, 2024
1 parent 42dc431 commit 1ec4349
Showing 1 changed file with 30 additions and 2 deletions.
32 changes: 30 additions & 2 deletions tools/testing/selftests/drivers/net/hw/rss_ctx.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from lib.py import ksft_run, ksft_pr, ksft_exit, ksft_eq, ksft_ne, ksft_ge, ksft_lt
from lib.py import NetDrvEpEnv
from lib.py import EthtoolFamily, NetdevFamily
from lib.py import KsftSkipEx
from lib.py import KsftSkipEx, KsftFailEx
from lib.py import rand_port
from lib.py import ethtool, ip, defer, GenerateTraffic, CmdExitFailure

Expand Down Expand Up @@ -606,6 +606,33 @@ def test_rss_context_overlap2(cfg):
test_rss_context_overlap(cfg, True)


def test_delete_rss_context_busy(cfg):
"""
Test that deletion returns -EBUSY when an rss context is being used
by an ntuple filter.
"""

require_ntuple(cfg)

# create additional rss context
ctx_id = ethtool_create(cfg, "-X", "context new")
ctx_deleter = defer(ethtool, f"-X {cfg.ifname} context {ctx_id} delete")

# utilize context from ntuple filter
port = rand_port()
flow = f"flow-type tcp{cfg.addr_ipver} dst-port {port} context {ctx_id}"
ntuple_id = ethtool_create(cfg, "-N", flow)
defer(ethtool, f"-N {cfg.ifname} delete {ntuple_id}")

# attempt to delete in-use context
try:
ctx_deleter.exec_only()
ctx_deleter.cancel()
raise KsftFailEx(f"deleted context {ctx_id} used by rule {ntuple_id}")
except CmdExitFailure:
pass


def main() -> None:
with NetDrvEpEnv(__file__, nsim_test=False) as cfg:
cfg.ethnl = EthtoolFamily()
Expand All @@ -616,7 +643,8 @@ def main() -> None:
test_rss_context, test_rss_context4, test_rss_context32,
test_rss_context_dump, test_rss_context_queue_reconfigure,
test_rss_context_overlap, test_rss_context_overlap2,
test_rss_context_out_of_order, test_rss_context4_create_with_cfg],
test_rss_context_out_of_order, test_rss_context4_create_with_cfg,
test_delete_rss_context_busy],
args=(cfg, ))
ksft_exit()

Expand Down

0 comments on commit 1ec4349

Please sign in to comment.