Lines Matching +full:- +full:cfg
2 # SPDX-License-Identifier: GPL-2.0
12 def _get_hds_mode(cfg, netnl) -> str: argument
14 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
16 raise KsftSkipEx('ring-get not supported by device')
17 if 'tcp-data-split' not in rings:
18 raise KsftSkipEx('tcp-data-split not supported by device')
19 return rings['tcp-data-split']
22 def _xdp_onoff(cfg): argument
26 (cfg.ifname, prog))
27 ip("link set dev %s xdp off" % cfg.ifname)
30 def _ioctl_ringparam_modify(cfg, netnl) -> None: argument
36 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
38 raise KsftSkipEx('ring-get not supported by device')
44 ethtool(f"--disable-netlink -G {cfg.ifname} tx {rings['tx'] // 2}")
46 ethtool(f"--disable-netlink -G {cfg.ifname} tx {rings['tx'] * 2}")
47 defer(ethtool, f"-G {cfg.ifname} tx {rings['tx']}")
50 def get_hds(cfg, netnl) -> None: argument
51 _get_hds_mode(cfg, netnl)
54 def get_hds_thresh(cfg, netnl) -> None: argument
56 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
58 raise KsftSkipEx('ring-get not supported by device')
59 if 'hds-thresh' not in rings:
60 raise KsftSkipEx('hds-thresh not supported by device')
62 def set_hds_enable(cfg, netnl) -> None: argument
64 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'tcp-data-split': 'enabled'})
69 raise KsftSkipEx("ring-set not supported by the device")
71 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
73 raise KsftSkipEx('ring-get not supported by device')
74 if 'tcp-data-split' not in rings:
75 raise KsftSkipEx('tcp-data-split not supported by device')
77 ksft_eq('enabled', rings['tcp-data-split'])
79 def set_hds_disable(cfg, netnl) -> None: argument
81 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'tcp-data-split': 'disabled'})
86 raise KsftSkipEx("ring-set not supported by the device")
88 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
90 raise KsftSkipEx('ring-get not supported by device')
91 if 'tcp-data-split' not in rings:
92 raise KsftSkipEx('tcp-data-split not supported by device')
94 ksft_eq('disabled', rings['tcp-data-split'])
96 def set_hds_thresh_zero(cfg, netnl) -> None: argument
98 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': 0})
101 raise KsftSkipEx("hds-thresh-set not supported by the device")
103 raise KsftSkipEx("ring-set not supported by the device")
105 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
107 raise KsftSkipEx('ring-get not supported by device')
108 if 'hds-thresh' not in rings:
109 raise KsftSkipEx('hds-thresh not supported by device')
111 ksft_eq(0, rings['hds-thresh'])
113 def set_hds_thresh_max(cfg, netnl) -> None: argument
115 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
117 raise KsftSkipEx('ring-get not supported by device')
118 if 'hds-thresh' not in rings:
119 raise KsftSkipEx('hds-thresh not supported by device')
121 … netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': rings['hds-thresh-max']})
124 raise KsftSkipEx("hds-thresh-set not supported by the device")
126 raise KsftSkipEx("ring-set not supported by the device")
127 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
128 ksft_eq(rings['hds-thresh'], rings['hds-thresh-max'])
130 def set_hds_thresh_gt(cfg, netnl) -> None: argument
132 rings = netnl.rings_get({'header': {'dev-index': cfg.ifindex}})
134 raise KsftSkipEx('ring-get not supported by device')
135 if 'hds-thresh' not in rings:
136 raise KsftSkipEx('hds-thresh not supported by device')
137 if 'hds-thresh-max' not in rings:
138 raise KsftSkipEx('hds-thresh-max not defined by device')
139 hds_gt = rings['hds-thresh-max'] + 1
141 netnl.rings_set({'header': {'dev-index': cfg.ifindex}, 'hds-thresh': hds_gt})
142 ksft_eq(e.exception.nl_msg.error, -errno.EINVAL)
145 def set_xdp(cfg, netnl) -> None: argument
147 Enable single-buffer XDP on the device.
150 mode = _get_hds_mode(cfg, netnl)
152 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
153 'tcp-data-split': 'unknown'})
155 _xdp_onoff(cfg)
158 def enabled_set_xdp(cfg, netnl) -> None: argument
160 Enable single-buffer XDP on the device.
163 _get_hds_mode(cfg, netnl)
164 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
165 'tcp-data-split': 'enabled'})
167 defer(netnl.rings_set, {'header': {'dev-index': cfg.ifindex},
168 'tcp-data-split': 'unknown'})
171 _xdp_onoff(cfg)
174 def set_xdp(cfg, netnl) -> None: argument
176 Enable single-buffer XDP on the device.
179 mode = _get_hds_mode(cfg, netnl)
181 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
182 'tcp-data-split': 'unknown'})
184 _xdp_onoff(cfg)
187 def enabled_set_xdp(cfg, netnl) -> None: argument
189 Enable single-buffer XDP on the device.
192 _get_hds_mode(cfg, netnl) # Trigger skip if not supported
194 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
195 'tcp-data-split': 'enabled'})
196 defer(netnl.rings_set, {'header': {'dev-index': cfg.ifindex},
197 'tcp-data-split': 'unknown'})
200 _xdp_onoff(cfg)
203 def ioctl(cfg, netnl) -> None: argument
204 mode1 = _get_hds_mode(cfg, netnl)
205 _ioctl_ringparam_modify(cfg, netnl)
206 mode2 = _get_hds_mode(cfg, netnl)
211 def ioctl_set_xdp(cfg, netnl) -> None: argument
215 mode = _get_hds_mode(cfg, netnl)
217 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
218 'tcp-data-split': 'unknown'})
220 _ioctl_ringparam_modify(cfg, netnl)
222 _xdp_onoff(cfg)
225 def ioctl_enabled_set_xdp(cfg, netnl) -> None: argument
227 Enable single-buffer XDP on the device.
230 _get_hds_mode(cfg, netnl) # Trigger skip if not supported
232 netnl.rings_set({'header': {'dev-index': cfg.ifindex},
233 'tcp-data-split': 'enabled'})
234 defer(netnl.rings_set, {'header': {'dev-index': cfg.ifindex},
235 'tcp-data-split': 'unknown'})
238 _xdp_onoff(cfg)
241 def main() -> None:
242 with NetDrvEnv(__file__, queue_count=3) as cfg:
255 args=(cfg, EthtoolFamily()))