summaryrefslogtreecommitdiff
path: root/tools/testing
diff options
context:
space:
mode:
authorDavide Caratti <dcaratti@redhat.com>2026-03-19 21:40:56 +0300
committerJakub Kicinski <kuba@kernel.org>2026-03-21 06:13:14 +0300
commit5754a1c9f9b6e298791c4bb34263f37dfe93ee35 (patch)
treee74d085ed304bc7137e0eff4f5f9a4a6c0bc32c6 /tools/testing
parentabdf5133bfa12c45d402f7b73d39bca772f3644a (diff)
downloadlinux-5754a1c9f9b6e298791c4bb34263f37dfe93ee35.tar.xz
tc-testing: add a test case for ETS offload
While reviewing the fix for unintentional u32 overflows in ets offload code, Jamal said: [...] > otherwise a tdc test should cover it fine (when you get to the > netdevsim change perhaps) Extend tdc to allow setting hw-tc-offload via ethtool, and add a test case to reproduce the division by zero fixed in [1]. [1] https://lore.kernel.org/all/CAM0EoMm17wsYZmdFLshH3_-GrZtzd=i0xnoO2yiVB=-N4761mw@mail.gmail.com/ Suggested-by: Jamal Hadi Salim <jhs@mojatatu.com> Reviewed-by: Jamal Hadi Salim <jhs@mojatatu.com> Co-developed-by: Victor Nogueira <victor@mojatatu.com> Signed-off-by: Victor Nogueira <victor@mojatatu.com> Signed-off-by: Davide Caratti <dcaratti@redhat.com> Link: https://patch.msgid.link/39129c374cbd00147b8c5afc04db59db62b50acc.1773945414.git.dcaratti@redhat.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'tools/testing')
-rw-r--r--tools/testing/selftests/tc-testing/tc-tests/qdiscs/ets.json23
-rwxr-xr-xtools/testing/selftests/tc-testing/tdc.py3
-rw-r--r--tools/testing/selftests/tc-testing/tdc_config.py1
3 files changed, 27 insertions, 0 deletions
diff --git a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/ets.json b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/ets.json
index a5d94cdec605..ee09e6d6fdf3 100644
--- a/tools/testing/selftests/tc-testing/tc-tests/qdiscs/ets.json
+++ b/tools/testing/selftests/tc-testing/tc-tests/qdiscs/ets.json
@@ -984,5 +984,28 @@
"matchCount": "1",
"teardown": [
]
+ },
+ {
+ "id": "41f5",
+ "name": "ETS offload where the sum of quanta wraps u32",
+ "category": [
+ "qdisc",
+ "ets"
+ ],
+ "plugins": {
+ "requires": "nsPlugin"
+ },
+ "setup": [
+ "echo \"1 1 4\" > /sys/bus/netdevsim/new_device",
+ "$ETHTOOL -K $ETH hw-tc-offload on"
+ ],
+ "cmdUnderTest": "$TC qdisc add dev $ETH root ets quanta 4294967294 1 1",
+ "expExitCode": "0",
+ "verifyCmd": "$TC qdisc show dev $ETH",
+ "matchPattern": "qdisc ets .*bands 3 quanta 4294967294 1 1",
+ "matchCount": "1",
+ "teardown": [
+ "echo \"1\" > /sys/bus/netdevsim/del_device"
+ ]
}
]
diff --git a/tools/testing/selftests/tc-testing/tdc.py b/tools/testing/selftests/tc-testing/tdc.py
index 4f255cec0c22..81b4ac3f050c 100755
--- a/tools/testing/selftests/tc-testing/tdc.py
+++ b/tools/testing/selftests/tc-testing/tdc.py
@@ -755,6 +755,9 @@ def check_default_settings(args, remaining, pm):
NAMES['DEV2'] = args.device
if 'TIMEOUT' not in NAMES:
NAMES['TIMEOUT'] = None
+ if 'ETHTOOL' in NAMES and not os.path.isfile(NAMES['ETHTOOL']):
+ print(f"The specified ethtool path {NAMES['ETHTOOL']} does not exist.")
+ exit(1)
if not os.path.isfile(NAMES['TC']):
print("The specified tc path " + NAMES['TC'] + " does not exist.")
exit(1)
diff --git a/tools/testing/selftests/tc-testing/tdc_config.py b/tools/testing/selftests/tc-testing/tdc_config.py
index ccb0f06ef9e3..9488b03cbc2c 100644
--- a/tools/testing/selftests/tc-testing/tdc_config.py
+++ b/tools/testing/selftests/tc-testing/tdc_config.py
@@ -17,6 +17,7 @@ NAMES = {
'DEV1': 'v0p1',
'DEV2': '',
'DUMMY': 'dummy1',
+ 'ETHTOOL': '/usr/sbin/ethtool',
'ETH': 'eth0',
'BATCH_FILE': './batch.txt',
'BATCH_DIR': 'tmp',