mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-14 06:22:34 +02:00
Adding netkit-based devmem tests is a straight-forward copy of devmem test commands plus some args for the nk cases, so this patch breaks out these command builders into helpers used by both. Though we tried to avoid libraries to avoid increasing the barrier of entry/complexity (see selftests/drivers/net/README.md, section "Avoid libraries and frameworks"), factoring out these functions seemed like the lesser of two evils in this case of using the same commands, just with slightly different args per environment. I experimented with just having all of the tests in the same file to avoid having helpers in a library file, but because ksft_run() is limited to a single call per file, and the new tests will require different environments (NetDrvContEnv/NetDrvEpEnv), it would have been necessary to have each test set up its own environment instead of sharing one for the entire ksft_run() run. This came at the cost of ballooning the test time (from under 5s to 30s on my test system), so to strike a balance these tests were placed in separate files so they could keep a shared environment across a single ksft_run() run shared across all tests using the same env type (introduced in subsequent patches). The helpers work transparently with both plain and netkit environments by inspecting cfg for netkit-specific attributes (netns, nk_queue, etc...). Acked-by: Stanislav Fomichev <sdf@fomichev.me> Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com> Link: https://patch.msgid.link/20260514-tcp-dm-netkit-v5-6-408c59b91e66@meta.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
44 lines
965 B
Python
Executable File
44 lines
965 B
Python
Executable File
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
from os import path
|
|
from devmem_lib import setup_test, run_rx, run_tx, run_tx_chunks, run_rx_hds
|
|
from lib.py import ksft_run, ksft_exit, ksft_disruptive
|
|
from lib.py import NetDrvEpEnv
|
|
|
|
|
|
@ksft_disruptive
|
|
def check_rx(cfg) -> None:
|
|
"""Run the devmem RX test."""
|
|
run_rx(cfg)
|
|
|
|
|
|
@ksft_disruptive
|
|
def check_tx(cfg) -> None:
|
|
"""Run the devmem TX test."""
|
|
run_tx(cfg)
|
|
|
|
|
|
@ksft_disruptive
|
|
def check_tx_chunks(cfg) -> None:
|
|
"""Run the devmem TX chunking test."""
|
|
run_tx_chunks(cfg)
|
|
|
|
|
|
def check_rx_hds(cfg) -> None:
|
|
"""Run the HDS test."""
|
|
run_rx_hds(cfg)
|
|
|
|
|
|
def main() -> None:
|
|
"""Run the devmem test cases."""
|
|
with NetDrvEpEnv(__file__) as cfg:
|
|
setup_test(cfg, path.abspath(path.dirname(__file__) + "/ncdevmem"))
|
|
ksft_run([check_rx, check_tx, check_tx_chunks, check_rx_hds],
|
|
args=(cfg,))
|
|
ksft_exit()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|