Lines Matching full:cfg

36 def run_one_stream(cfg, ipver, remote_v4, remote_v6, should_lso):  argument
37 cfg.require_cmd("socat", 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]
71 total_lso_wire = len(buf) * 0.90 // cfg.dev["mtu"]
72 total_lso_super = len(buf) * 0.90 // cfg.dev["tso_max_size"]
74 if cfg.have_stat_super_count:
79 if cfg.have_stat_wire_count:
85 if cfg.have_stat_super_count:
89 if cfg.have_stat_wire_count:
95 def build_tunnel(cfg, outer_ipver, tun_info): argument
101 local_addr = cfg.addr_v[outer_ipver]
102 remote_addr = cfg.remote_addr_v[outer_ipver]
106 …tun_type}-ksft type {tun_type} {tun_arg} local {local_addr} remote {remote_addr} dev {cfg.ifname}")
112 …e}-ksft type {tun_type} {tun_arg} local {remote_addr} remote {local_addr} dev {cfg.remote_ifname}",
113 host=cfg.remote)
114 defer(ip, f"link del {tun_type}-ksft", host=cfg.remote)
115 ip(f"link set dev {tun_type}-ksft up", host=cfg.remote)
116 ip(f"addr add {remote_v4}/24 dev {tun_type}-ksft", host=cfg.remote)
117 ip(f"addr add {remote_v6}/64 dev {tun_type}-ksft", host=cfg.remote)
122 def test_builder(name, cfg, outer_ipver, feature, tun=None, inner_ipver=None): argument
124 def f(cfg): argument
125 cfg.require_ipver(outer_ipver)
127 if not cfg.have_stat_super_count and \
128 not cfg.have_stat_wire_count:
133 remote_v4, remote_v6 = build_tunnel(cfg, ipver, tun)
136 remote_v4 = cfg.remote_addr_v["4"]
137 remote_v6 = cfg.remote_addr_v["6"]
141 has_gso_partial = tun and 'tx-gso-partial' in cfg.features
144 if ipver == "4" and feature in cfg.partial_features:
146 if 'tx-tcp-mangleid-segmentation' not in cfg.features:
147 ethtool(f"-K {cfg.ifname} tx-tcp-mangleid-segmentation on")
148 defer(ethtool, f"-K {cfg.ifname} tx-tcp-mangleid-segmentation off")
151 ethtool(f"-K {cfg.ifname} {feature} off")
153 ethtool(f"-K {cfg.ifname} tx-gso-partial off")
154 run_one_stream(cfg, ipver, remote_v4, remote_v6, should_lso=False)
159 ethtool(f"-K {cfg.ifname} tx-gso-partial on")
160 run_one_stream(cfg, ipver, remote_v4, remote_v6,
164 if feature in cfg.features:
165 ethtool(f"-K {cfg.ifname} {feature} on")
166 run_one_stream(cfg, ipver, remote_v4, remote_v6, should_lso=True)
174 def query_nic_features(cfg) -> None: argument
176 cfg.have_stat_super_count = False
177 cfg.have_stat_wire_count = False
179 cfg.features = set()
180 features = cfg.ethnl.features_get({"header": {"dev-index": cfg.ifindex}})
182 cfg.features.add(f["name"])
185 cfg.partial_features = set()
186 if 'tx-gso-partial' in cfg.features:
187 ethtool(f"-K {cfg.ifname} tx-gso-partial off")
190 features = cfg.ethnl.features_get({"header": {"dev-index": cfg.ifindex}})
193 cfg.partial_features = cfg.features - no_partial
194 ethtool(f"-K {cfg.ifname} tx-gso-partial on")
196 stats = cfg.netnl.qstats_get({"ifindex": cfg.ifindex}, dump=True)
200 cfg.have_stat_super_count = True
203 cfg.have_stat_wire_count = True
207 with NetDrvEpEnv(__file__, nsim_test=False) as cfg:
208 cfg.ethnl = EthtoolFamily()
209 cfg.netnl = NetdevFamily()
211 query_nic_features(cfg)
230 cases.append(test_builder(info[0], cfg, outer_ipver, info[2],
233 cases.append(test_builder(info[0], cfg, outer_ipver, info[2],
236 ksft_run(cases=cases, args=(cfg, ))