Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

selftests: drv-net: hds: restore hds settings

The test currently modifies the HDS settings and doesn't restore them.
This may cause subsequent tests to fail (or pass when they should not).
Add defer()ed reset handling.

Link: https://patch.msgid.link/20250825175939.2249165-1-kuba@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

+39
+39
tools/testing/selftests/drivers/net/hds.py
··· 3 3 4 4 import errno 5 5 import os 6 + from typing import Union 6 7 from lib.py import ksft_run, ksft_exit, ksft_eq, ksft_raises, KsftSkipEx 7 8 from lib.py import CmdExitFailure, EthtoolFamily, NlError 8 9 from lib.py import NetDrvEnv ··· 59 58 if 'hds-thresh' not in rings: 60 59 raise KsftSkipEx('hds-thresh not supported by device') 61 60 61 + 62 + def _hds_reset(cfg, netnl, rings) -> None: 63 + cur = netnl.rings_get({'header': {'dev-index': cfg.ifindex}}) 64 + 65 + arg = {'header': {'dev-index': cfg.ifindex}} 66 + if cur.get('tcp-data-split') != rings.get('tcp-data-split'): 67 + # Try to reset to "unknown" first, we don't know if the setting 68 + # was the default or user chose it. Default seems more likely. 69 + arg['tcp-data-split'] = "unknown" 70 + netnl.rings_set(arg) 71 + cur = netnl.rings_get({'header': {'dev-index': cfg.ifindex}}) 72 + if cur['tcp-data-split'] == rings['tcp-data-split']: 73 + del arg['tcp-data-split'] 74 + else: 75 + # Try the explicit setting 76 + arg['tcp-data-split'] = rings['tcp-data-split'] 77 + if cur.get('hds-thresh') != rings.get('hds-thresh'): 78 + arg['hds-thresh'] = rings['hds-thresh'] 79 + if len(arg) > 1: 80 + netnl.rings_set(arg) 81 + 82 + 83 + def _defer_reset_hds(cfg, netnl) -> Union[dict, None]: 84 + try: 85 + rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}}) 86 + if 'hds-thresh' in rings or 'tcp-data-split' in rings: 87 + defer(_hds_reset, cfg, netnl, rings) 88 + except NlError as e: 89 + pass 90 + 91 + 62 92 def set_hds_enable(cfg, netnl) -> None: 93 + _defer_reset_hds(cfg, netnl) 63 94 try: 64 95 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'tcp-data-split': 'enabled'}) 65 96 except NlError as e: ··· 109 76 ksft_eq('enabled', rings['tcp-data-split']) 110 77 111 78 def set_hds_disable(cfg, netnl) -> None: 79 + _defer_reset_hds(cfg, netnl) 112 80 try: 113 81 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'tcp-data-split': 'disabled'}) 114 82 except NlError as e: ··· 127 93 ksft_eq('disabled', rings['tcp-data-split']) 128 94 129 95 def set_hds_thresh_zero(cfg, netnl) -> None: 96 + _defer_reset_hds(cfg, netnl) 130 97 try: 131 98 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': 0}) 132 99 except NlError as e: ··· 145 110 ksft_eq(0, rings['hds-thresh']) 146 111 147 112 def set_hds_thresh_random(cfg, netnl) -> None: 113 + _defer_reset_hds(cfg, netnl) 148 114 try: 149 115 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}}) 150 116 except NlError as e: ··· 176 140 ksft_eq(hds_thresh, rings['hds-thresh']) 177 141 178 142 def set_hds_thresh_max(cfg, netnl) -> None: 143 + _defer_reset_hds(cfg, netnl) 179 144 try: 180 145 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}}) 181 146 except NlError as e: ··· 194 157 ksft_eq(rings['hds-thresh'], rings['hds-thresh-max']) 195 158 196 159 def set_hds_thresh_gt(cfg, netnl) -> None: 160 + _defer_reset_hds(cfg, netnl) 197 161 try: 198 162 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}}) 199 163 except NlError as e: ··· 216 178 """ 217 179 mode = _get_hds_mode(cfg, netnl) 218 180 if mode == 'enabled': 181 + _defer_reset_hds(cfg, netnl) 219 182 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 220 183 'tcp-data-split': 'unknown'}) 221 184