Lines Matching +full:max +full:- +full:cur
2 # SPDX-License-Identifier: GPL-2.0
14 def _get_hds_mode(cfg, netnl) -> str:
16 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
18 raise KsftSkipEx('ring-get not supported by device')
19 if 'tcp-data-split' not in rings:
20 raise KsftSkipEx('tcp-data-split not supported by device')
21 return rings['tcp-data-split']
31 def _ioctl_ringparam_modify(cfg, netnl) -> None:
37 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
39 raise KsftSkipEx('ring-get not supported by device')
45 ethtool(f"--disable-netlink -G {cfg.ifname} tx {rings['tx'] // 2}")
47 ethtool(f"--disable-netlink -G {cfg.ifname} tx {rings['tx'] * 2}")
48 defer(ethtool, f"-G {cfg.ifname} tx {rings['tx']}")
51 def get_hds(cfg, netnl) -> None:
55 def get_hds_thresh(cfg, netnl) -> None:
57 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
59 raise KsftSkipEx('ring-get not supported by device')
60 if 'hds-thresh' not in rings:
61 raise KsftSkipEx('hds-thresh not supported by device')
64 def _hds_reset(cfg, netnl, rings) -> None:
65 cur = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
67 arg = {'header': {'dev-index': cfg.ifindex}}
68 if cur.get('tcp-data-split') != rings.get('tcp-data-split'):
71 arg['tcp-data-split'] = "unknown"
73 cur = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
74 if cur['tcp-data-split'] == rings['tcp-data-split']:
75 del arg['tcp-data-split']
78 arg['tcp-data-split'] = rings['tcp-data-split']
79 if cur.get('hds-thresh') != rings.get('hds-thresh'):
80 arg['hds-thresh'] = rings['hds-thresh']
85 def _defer_reset_hds(cfg, netnl) -> Union[dict, None]:
87 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
88 if 'hds-thresh' in rings or 'tcp-data-split' in rings:
94 def set_hds_enable(cfg, netnl) -> None:
97 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'tcp-data-split': 'enabled'})
102 raise KsftSkipEx("ring-set not supported by the device")
104 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
106 raise KsftSkipEx('ring-get not supported by device')
107 if 'tcp-data-split' not in rings:
108 raise KsftSkipEx('tcp-data-split not supported by device')
110 ksft_eq('enabled', rings['tcp-data-split'])
112 def set_hds_disable(cfg, netnl) -> None:
115 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'tcp-data-split': 'disabled'})
120 raise KsftSkipEx("ring-set not supported by the device")
122 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
124 raise KsftSkipEx('ring-get not supported by device')
125 if 'tcp-data-split' not in rings:
126 raise KsftSkipEx('tcp-data-split not supported by device')
128 ksft_eq('disabled', rings['tcp-data-split'])
130 def set_hds_thresh_zero(cfg, netnl) -> None:
133 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': 0})
136 raise KsftSkipEx("hds-thresh-set not supported by the device")
138 raise KsftSkipEx("ring-set not supported by the device")
140 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
142 raise KsftSkipEx('ring-get not supported by device')
143 if 'hds-thresh' not in rings:
144 raise KsftSkipEx('hds-thresh not supported by device')
146 ksft_eq(0, rings['hds-thresh'])
148 def set_hds_thresh_random(cfg, netnl) -> None:
151 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
153 raise KsftSkipEx('ring-get not supported by device')
154 if 'hds-thresh' not in rings:
155 raise KsftSkipEx('hds-thresh not supported by device')
156 if 'hds-thresh-max' not in rings:
157 raise KsftSkipEx('hds-thresh-max not defined by device')
159 if rings['hds-thresh-max'] < 2:
160 raise KsftSkipEx('hds-thresh-max is too small')
161 elif rings['hds-thresh-max'] == 2:
165 hds_thresh = random.randint(1, rings['hds-thresh-max'] - 1)
166 if hds_thresh != rings['hds-thresh']:
170 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': hds_thresh})
173 raise KsftSkipEx("hds-thresh-set not supported by the device")
175 raise KsftSkipEx("ring-set not supported by the device")
176 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
177 ksft_eq(hds_thresh, rings['hds-thresh'])
179 def set_hds_thresh_max(cfg, netnl) -> None:
182 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
184 raise KsftSkipEx('ring-get not supported by device')
185 if 'hds-thresh' not in rings:
186 raise KsftSkipEx('hds-thresh not supported by device')
188 … netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': rings['hds-thresh-max']})
191 raise KsftSkipEx("hds-thresh-set not supported by the device")
193 raise KsftSkipEx("ring-set not supported by the device")
194 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
195 ksft_eq(rings['hds-thresh'], rings['hds-thresh-max'])
197 def set_hds_thresh_gt(cfg, netnl) -> None:
200 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
202 raise KsftSkipEx('ring-get not supported by device')
203 if 'hds-thresh' not in rings:
204 raise KsftSkipEx('hds-thresh not supported by device')
205 if 'hds-thresh-max' not in rings:
206 raise KsftSkipEx('hds-thresh-max not defined by device')
207 hds_gt = rings['hds-thresh-max'] + 1
209 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': hds_gt})
210 ksft_eq(e.exception.nl_msg.error, -errno.EINVAL)
213 def set_xdp(cfg, netnl) -> None:
215 Enable single-buffer XDP on the device.
221 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
222 'tcp-data-split': 'unknown'})
227 def enabled_set_xdp(cfg, netnl) -> None:
229 Enable single-buffer XDP on the device.
233 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
234 'tcp-data-split': 'enabled'})
236 defer(netnl.rings_set, {'header': {'dev-index': cfg.ifindex},
237 'tcp-data-split': 'unknown'})
243 def set_xdp(cfg, netnl) -> None:
245 Enable single-buffer XDP on the device.
250 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
251 'tcp-data-split': 'unknown'})
256 def enabled_set_xdp(cfg, netnl) -> None:
258 Enable single-buffer XDP on the device.
263 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
264 'tcp-data-split': 'enabled'})
265 defer(netnl.rings_set, {'header': {'dev-index': cfg.ifindex},
266 'tcp-data-split': 'unknown'})
272 def ioctl(cfg, netnl) -> None:
280 def ioctl_set_xdp(cfg, netnl) -> None:
286 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
287 'tcp-data-split': 'unknown'})
294 def ioctl_enabled_set_xdp(cfg, netnl) -> None:
296 Enable single-buffer XDP on the device.
301 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
302 'tcp-data-split': 'enabled'})
303 defer(netnl.rings_set, {'header': {'dev-index': cfg.ifindex},
304 'tcp-data-split': 'unknown'})
310 def main() -> None: