Lines Matching full:cfg

36 def run_one_stream(cfg, ipver, remote_v4, remote_v6, should_lso):
37 cfg.require_cmd("socat", local=False, remote=True)
42 with bkg(listen_cmd, host=cfg.remote, exit_wait=True) as nc:
43 wait_port_listen(port, host=cfg.remote)
57 qstat_old = cfg.netnl.qstats_get({"ifindex": cfg.ifindex}, dump=True)[0]
61 qstat_new = cfg.netnl.qstats_get({"ifindex": cfg.ifindex}, dump=True)[0]
66 total_lso_wire = len(buf) * 0.90 // cfg.dev["mtu"]
67 total_lso_super = len(buf) * 0.90 // cfg.dev["tso_max_size"]
75 if cfg.have_stat_super_count:
80 if cfg.have_stat_wire_count:
86 if cfg.have_stat_super_count:
90 if cfg.have_stat_wire_count:
96 def build_tunnel(cfg, outer_ipver, tun_info):
102 local_addr = cfg.addr_v[outer_ipver]
103 remote_addr = cfg.remote_addr_v[outer_ipver]
107 ip(f"link add {tun_type}-ksft type {tun_type} {tun_arg} local {local_addr} remote {remote_addr} dev {cfg.ifname}")
113 ip(f"link add {tun_type}-ksft type {tun_type} {tun_arg} local {remote_addr} remote {local_addr} dev {cfg.remote_ifname}",
114 host=cfg.remote)
115 defer(ip, f"link del {tun_type}-ksft", host=cfg.remote)
116 ip(f"link set dev {tun_type}-ksft up", host=cfg.remote)
117 ip(f"addr add {remote_v4}/24 dev {tun_type}-ksft", host=cfg.remote)
118 ip(f"addr add {remote_v6}/64 dev {tun_type}-ksft", host=cfg.remote)
123 def restore_wanted_features(cfg):
125 for feature in cfg.hw_features:
126 setting = "on" if feature in cfg.wanted_features else "off"
129 ethtool(f"-K {cfg.ifname} {features_cmd}")
134 def test_builder(name, cfg, outer_ipver, feature, tun=None, inner_ipver=None):
136 def f(cfg):
137 cfg.require_ipver(outer_ipver)
138 defer(restore_wanted_features, cfg)
140 if not cfg.have_stat_super_count and \
141 not cfg.have_stat_wire_count:
144 if feature not in cfg.hw_features:
149 remote_v4, remote_v6 = build_tunnel(cfg, ipver, tun)
152 remote_v4 = cfg.remote_addr_v["4"]
153 remote_v6 = cfg.remote_addr_v["6"]
156 ethtool(f"-K {cfg.ifname} {feature} off")
157 run_one_stream(cfg, ipver, remote_v4, remote_v6, should_lso=False)
159 ethtool(f"-K {cfg.ifname} tx-gso-partial off")
160 ethtool(f"-K {cfg.ifname} tx-tcp-mangleid-segmentation off")
161 if feature in cfg.partial_features:
162 ethtool(f"-K {cfg.ifname} tx-gso-partial on")
165 ethtool(f"-K {cfg.ifname} tx-tcp-mangleid-segmentation on")
168 ethtool(f"-K {cfg.ifname} {feature} on")
169 run_one_stream(cfg, ipver, remote_v4, remote_v6, should_lso=True)
175 def query_nic_features(cfg) -> None:
177 cfg.have_stat_super_count = False
178 cfg.have_stat_wire_count = False
180 features = cfg.ethnl.features_get({"header": {"dev-index": cfg.ifindex}})
182 cfg.wanted_features = set()
184 cfg.wanted_features.add(f["name"])
186 cfg.hw_features = set()
191 cfg.hw_features.add(feature)
194 ethtool(f"-K {cfg.ifname} {hw_all_features_cmd}")
200 cfg.partial_features = set()
201 if 'tx-gso-partial' in cfg.hw_features:
202 ethtool(f"-K {cfg.ifname} tx-gso-partial off")
205 features = cfg.ethnl.features_get({"header": {"dev-index": cfg.ifindex}})
208 cfg.partial_features = cfg.hw_features - no_partial
209 ethtool(f"-K {cfg.ifname} tx-gso-partial on")
211 restore_wanted_features(cfg)
213 stats = cfg.netnl.qstats_get({"ifindex": cfg.ifindex}, dump=True)
217 cfg.have_stat_super_count = True
220 cfg.have_stat_wire_count = True
224 with NetDrvEpEnv(__file__, nsim_test=False) as cfg:
225 cfg.ethnl = EthtoolFamily()
226 cfg.netnl = NetdevFamily()
228 query_nic_features(cfg)
250 test_builder(info[0], cfg, outer_ipver, info[2], info[3], inner_ipver)
254 cases.append(test_builder(info[0], cfg, outer_ipver, info[2], None, outer_ipver))
256 ksft_run(cases=cases, args=(cfg, ))